{"version":3,"file":"js/react.js","mappings":"6BAAAA,4DCeO,MAAMC,EAAkBC,EAAAC,GAAOC,GAAuB;;;;;;;;;8BAS9BC,GAAWA,EAAMC,KAAO,KAAO;MACvDD,GAAWA,EAAMC,KAAO,KAAO;EAWzBC,GARWL,EAAAC,GAAOC,GAAG;;EAQLF,EAAAC,GAAOC,GAAuB;;;;;;;;;sBASpCC,GAAWA,EAAMC,KAAO,QAAU;GAG5CE,EAAcN,EAAAC,GAAOM,KAAK;;;;;;;;;;EAWjCC,EAAWR,EAAAC,GAAOC,GAAuB;;;;;;;;;;YAUlCC,GAAWA,EAAMC,KAAO,EAAI;;;YAG5BD,GACTA,EAAMC,KAAsC,IAA3BD,EAAMM,cAAgB,GAA1B,KAAwC;;;;;;;;;;;;EAanDC,EAASV,EAAAC,GAAOC,GAAG;;EAkLzB,IAAAS,EA/KwBR,IACtB,MAAMS,QACJA,EAAU,GAAEC,SACZA,EAAQC,YACRA,EAAWC,YACXA,EAAWC,MACXA,EAAQ,GAAEC,eACVA,GAAiB,EAAIC,cACrBA,GAAgB,GACdf,GACGgB,EAAiBC,IAAsB,EAAAC,EAAAC,UAAgB,KAC9D,EAAAD,EAAAE,WAAU,KACRH,EAAmB,IAAIR,KACtB,CAACA,IACJ,MAAOY,EAAaC,IAAkB,EAAAJ,EAAAC,UAAS,KAC/C,EAAAD,EAAAE,WAAU,KACRH,EACER,EAAQc,OAAQC,GACdA,EAAKC,KAAKC,cAAcC,WAAWN,EAAYK,kBAGlD,CAACL,IACJ,MAAOpB,EAAM2B,IAAW,EAAAV,EAAAC,WAAS,IAC1BU,EAASC,IAAc,EAAAZ,EAAAC,WAAS,GACjCY,EAAcP,IACdV,EAEEJ,EAASsB,SAASR,GACpBb,EAAYD,EAASa,OAAQU,GAAQA,EAAIC,KAAOV,EAAKU,KAErDvB,EAAY,IAAID,EAAUc,IAG5Bb,EAAY,CAACa,KAGjB,IAAIW,EAAmBzB,EAAS0B,IAAKZ,GAASA,EAAKC,MAAMY,KAAK,MAC1DF,EAAiBG,OAAS,KAC5BH,EAAmBA,EAAiBI,UAAU,EAAG,IAAM,OAEzD,MAAMC,GAAW,EAAAtB,EAAAuB,QAAO,MAYxB,OAXA,EAAAvB,EAAAE,WAAU,KACJoB,GACF,CAAC,QAAS,cAAcE,QAASC,IAC/BC,SAASC,iBAAiBF,EAAOG,KAE3BN,aAAQ,EAARA,EAAUO,QAAQC,SAASF,EAAIG,UACnCrB,GAAQ,SAMdV,EAAAgC,cAAA,OAAKC,IAAKX,GACRtB,EAAAgC,cAACtD,EAAe,CACdwD,WACEnD,EAAO,2BAA6B,IAD3B,qDAEyC,gBACrCA,EACfA,KAAMA,EAAI,gBACI,WACdK,cAAeG,EAAQ6B,OACvBe,QAAS,KACPzB,GAAQ,IAEVf,MAAKyC,OAAAC,OAAA,CAAIC,SAAU,YAAe3C,IAElCK,EAAAgC,cAAC/C,EAAW,CACVwC,KAAK,OACL/B,YAAaA,EAEb6C,QAAUC,GAAkBpC,EAAeoC,EAAET,OAAOU,OACpDC,QAAS,IAAM9B,GAAW,GAC1B+B,OAAQ,KACN/B,GAAW,IAEbgC,UAAWhD,EACXuC,QAAS,KACPzB,GAAQ,IAEV+B,MAAO9B,EAAUR,EAAcc,EAC/B4B,aAAa,QAEf7C,EAAAgC,cAAChD,EAAa,CACZmD,QAAUK,IACRA,EAAEM,kBACFpC,GAAS3B,IAEXK,cAAeG,EAAQ6B,OACvBrC,KAAMA,IAGRiB,EAAAgC,cAAC7C,EAAQ,CAACJ,KAAMA,EAAMK,cAAeG,EAAQ6B,QAC1CvB,GACCG,EAAAgC,cAAC3C,EAAM,CACL6C,UAAU,OACVC,QACEvC,EACI,KAC0B,IAApBJ,EAAS4B,OACX3B,EAAYF,GAEZE,EAAY,KAGhB,QAGNO,EAAAgC,cAACe,EAAAC,EAAKC,MAAK,CACTC,MAAM,YACNzB,KAAK,WACL0B,SAAS,2BACTC,QAAS5D,EAAS4B,SAAW7B,EAAQ6B,OACrCiC,SAAU,KACgB,IAApB7D,EAAS4B,OACX3B,EAAYF,GAEZE,EAAY,QAMrBK,EAAgBoB,IAAI,CAACZ,EAAWgD,KAC/B,IAAI/C,GAAQD,EAAKiD,YACbjD,EAAKiD,YACLjD,EAAKC,MACPc,UAAU,EAAG,IAIf,OAHId,EAAKa,QAAU,KACjBb,GAAQ,OAGRP,EAAAgC,cAAC3C,EAAM,CACL6C,UAAU,OACVsB,IAAKF,EACLnB,QACEvC,EACI,KACEiB,EAAWP,GACXF,EAAe,KAEjB,QAGLR,EACCI,EAAAgC,cAACe,EAAAC,EAAKC,MAAK,CACTC,MAAO3C,EACPkB,KAAK,WACL0B,SAAS,2BACTC,QAAS5D,EAASsB,SAASR,GAC3B+C,SAAU,KACRxC,EAAWP,GACXF,EAAe,OAInBJ,EAAAgC,cAAA,KACEG,QAAS,KACPtB,EAAWP,GACXI,GAAQ,GACRN,EAAe,MAGhBG,uCC1PrB,MAAMkD,EAAgBC,IAAAC,OAAa,CACjCC,QAAS,GACTC,aAAc,EACdC,QAAS,iCAEXL,EAAcM,aAAaC,SAASC,IACjCD,GAAaA,EACPE,IAASC,cAAA,yBACd,OAAOC,EAAoBF,EAC7B,cAFgB,iRAIlB,MAAME,EAAuBC,IAE3B,QADe,EAAAC,EAAAtB,GAAIqB,EAAS,oBAE1B,KAAK,IACL,UAAKE,EACHC,QAAQC,IAAI,iBACZ,MACF,KAAK,IACHD,QAAQC,IAAI,eACZ,MACF,KAAK,IACL,KAAK,IACHD,QAAQC,IAAI,aACZ,MACF,KAAK,IACHD,QAAQC,IAAI,uBACZC,OAAOC,SAASC,KAAO,YAK3B,OAAOC,QAAQC,OAAOT,IAExB,IAAAU,EAAA,EClCO,MAAMC,EAAW,KAEtB,GAAItD,SAASuD,OAAO7D,OAAS,EAAG,CAC9B,IAAI8D,EAAUxD,SAASuD,OAAOE,QAAQ5E,cACtC,IAAgB,GAAZ2E,EAAe,CACjBA,EAAUA,EAAU3E,EAAc,EAClC,IAAI6E,EAAQ1D,SAASuD,OAAOE,QAAQ,IAAKD,GAEzC,OADc,GAAVE,IAAaA,EAAQ1D,SAASuD,OAAO7D,QAClCiE,SAAS3D,SAASuD,OAAO5D,UAAU6D,EAASE,KAGvD,MAAO,IAGIE,EAAiB,KACrB,CACL,cAAeN,IACf,eAAgB,mBAChBO,OAAQ,2TCFL,MAAMC,EAAwB,IAEhCC,OAAA,4BAEH,aADuBV,EAAKT,IAAI,0BAElC,GAsBaoB,EACXC,GACoEF,OAAA,4BAEpE,aADuBV,EAAKT,IAAI,qBAAsB,CAAEqB,UAE1D,GAEaC,EACXD,GAC8EF,OAAA,4BAE9E,aADuBV,EAAKT,IAAI,gCAAiC,CAAEqB,UAErE,GAEaE,EACXC,GACyCL,OAAA,4BAEzC,aADuBV,EAAKT,IAAI,2BAA2BwB,KAE7D,wDChEO,MAAMC,EAAmB,CAC9B,EAAG,MACH,KAAM,GACN,KAAM,GACN,MAAO,QACP,MAAO,GACP,MAAO,GACP,MAAO,GACP,MAAO,SACP,MAAO,GACP,KAAM,GACN,MAAO,GACP,MAAO,SACP,MAAO,GACP,MAAO,GACP,MAAO,GACP,MAAO,SACP,MAAO,GACP,MAAO,GACP,MAAO,GACP,MAAO,SACP,KAAM,GACN,MAAO,GACP,IAAK,OAGMC,EAAgB,CAC3B,EAAG,OACH,GAAI,OACJ,GAAI,OACJ,GAAI,OACJ,GAAI,OACJ,IAAK,QAGMC,EAAc,CACzB,EAAG,KACH,MAAO,KACP,MAAO,MACP,MAAO,MACP,MAAO,MACP,MAAO,MACP,IAAK,OAGMC,EAAe,CAC1B,EAAG,MACH,MAAO,MACP,MAAO,MACP,MAAO,MACP,MAAO,MACP,MAAO,MACP,IAAK,OAGMC,EAAiB,CAC5BC,YAAa,WAGFC,EAAc,CACzB,CACEC,gBAAiB,UACjBF,YAAa,WAEf,CACEE,gBAAiB,UACjBF,YAAa,YAIJG,EAAa,CACxB,CACED,gBAAiB,YAIRE,EAA4B,IClDzC,MAAMC,GAAQ,EAAAC,EAAAC,IAAwBD,EAAA9H,GAAA6H,OAChCG,GAAe,EAAAjI,EAAAC,IAAOiI,EAAA7D,EAAO;;;;;;;;;EA6F7B8D,EAA0BpF,SAASqF,eACvC,gCAEED,GACFE,EAAAC,OAAgBjH,EAAAgC,cAtFQ,KACxB,MAAOkF,EAAQC,IAAa,EAAAnH,EAAAC,UAAkB,KACvCmH,EAAgBC,IAAqB,EAAArH,EAAAC,UAAkB,KACvDqH,EAAUC,IAAe,EAAAvH,EAAAC,UDoCO,ICnChCuH,EAAUC,IAAe,EAAAzH,EAAAC,UAAiBuG,GAkBjD,OAjBA,EAAAxG,EAAAE,WAAU,wBACsB,yBAC5B,MAAM8D,QAAiBwB,IACvB,GAAIxB,EAAS0D,KAAKC,QAAS,CACzB,IAAIC,EAAqB5D,EAAS0D,KAAKC,QACpCzG,IAAK2G,GACJzF,OAAAC,OAAAD,OAAAC,OAAA,GACKwF,GAAK,CACRtE,YAAa,GAAGsE,EAAMtH,QAAQsH,EAAMC,SAAW,QAGlDzH,OAAQwH,GAAUA,EAAMC,QAAU,GACrCX,EAAUS,GAEd,cAb8B,oQAe7B,IAED5H,EAAAgC,cAAA,OAAKE,UAAU,uBACblC,EAAAgC,cAAC+F,EAAA/E,EAAG,KACFhD,EAAAgC,cAACgG,EAAAhF,EAAG,CAACd,UAAU,iCACblC,EAAAgC,cAAC1C,EAAc,CACbC,QAAS2H,EACT1H,SAAU4H,EACV3H,YAAa4H,EACb3H,YAAY,WAGhBM,EAAAgC,cAACgG,EAAAhF,EAAG,CAACd,UAAU,8CACblC,EAAAgC,cAACyE,EAAK,CACJwB,MAAI,EACJ/F,UAAU,OACVgG,KAAM,KACNC,aAAeC,GAAQ,IAAU,MAANA,EAAc,KAAKC,QAAQ,KACtD1I,MAAO,CAAE2I,MAAO,SAChBC,MAAOxC,EACPyC,aAAc,CDFe,ICG3BlB,EACI,GACCA,EAAW,KAAO,MACvBE,IAAahB,EACT,KACCgB,EAAW,KAAO,OAEzBnE,SAAW+E,IACTb,EACa,IAAXa,EAAI,GDZqB,ECcrBK,KAAKC,MAAe,MAATN,EAAI,IAAc,KAEnCX,EACa,MAAXW,EAAI,GACA5B,EACAiC,KAAKC,MAAe,MAATN,EAAI,IAAc,MAGrC7B,WAAYA,EACZF,YAAaA,EACbF,eAAgBA,MAItBnG,EAAAgC,cAAC+F,EAAA/E,EAAG,CAACd,UAAU,+BACblC,EAAAgC,cAAC4E,EAAY,CACX+B,QAAQ,UACRzG,UAAU,gDACV0C,KAAM,oDAAoD0C,yBAAgCE,kBAAyBJ,EAChHlG,IAAKZ,GAASA,EAAKU,IACnBG,KAAK,QAEP,IACDnB,EAAAgC,cAAA,4BAA0B,QAUA,MAAK8E,GC1HdnI,EAAAC,GAAOC,GAAG;;;;;;;;EASfF,EAAAC,GAAOC,GAAG;;;;;;;;;;;;;EAcRF,EAAAC,GAAOC,GAAG;;;;;;;;;;;;;;;EAgBTF,EAAAC,GAAOC,GAAG;;;;;;;;;;;;;;;EAiBTF,EAAAC,GAAOC,GAAG;;;;;;;;;;;;ECxD7B,MAAM+J,EAAkC,CAC3C,CAAC5H,GAAI,EAAGT,KAAM,gBACd,CAACS,GAAI,EAAGT,KAAM,sBACd,CAACS,GAAI,EAAGT,KAAM,aACd,CAACS,GAAI,EAAGT,KAAM,YACd,CAACS,GAAI,EAAGT,KAAM,WACd,CAACS,GAAI,EAAGT,KAAM,eACd,CAACS,GAAI,EAAGT,KAAM,eACd,CAACS,GAAI,EAAGT,KAAM,YACd,CAACS,GAAI,EAAGT,KAAM,gBACd,CAACS,GAAI,GAAIT,KAAM,aACf,CAACS,GAAI,GAAIT,KAAM,aACf,CAACS,GAAI,GAAIT,KAAM,WACf,CAACS,GAAI,GAAIT,KAAM,kBACf,CAACS,GAAI,GAAIT,KAAM,uBACf,CAACS,GAAI,GAAIT,KAAM,iBACf,CAACS,GAAI,GAAIT,KAAM,uBCFnB,MAAMsI,GAAe,EAAAlK,EAAAC,IAAOiI,EAAA7D,EAAO;;;;;;;;;EAW7B8F,EAAWnK,EAAAC,GAAOmK,EAAE;;;;;;;;;;EAYpBC,GAAe,EAAArK,EAAAC,IAAOoJ,EAAAhF,EAAI;;;;;EAO1BiG,GAAmB,EAAAtK,EAAAC,IAAOoK,EAAa;;EAIvCE,GAAoB,EAAAvK,EAAAC,IAAOoK,EAAa;;EAIxCG,GAAsB,EAAAxK,EAAAC,IAAOmE,EAAAC,EAAKC,MAAMmG,MAAM;;;;;EAO9CC,GAAsB,EAAA1K,EAAAC,IAAOmE,EAAAC,EAAKC,MAAMqG,MAAM;;;;;;;;;;EA8H9CC,EAA2B7H,SAASqF,eACxC,iCAEEwC,GACFvC,EAAAC,OAAgBjH,EAAAgC,cAtHS,KACzB,MAAOwH,EAAcC,IAAmB,EAAAzJ,EAAAC,UAAwB2I,IACzDc,EAAsBC,IAA2B,EAAA3J,EAAAC,UAAwB,KACzEiH,EAAQC,IAAa,EAAAnH,EAAAC,UAAkB,KACvCmH,EAAgBC,IAAqB,EAAArH,EAAAC,UAAkB,KACvD2J,EAAcC,IAAmB,EAAA7J,EAAAC,WAAkB,IACnD6J,EAAaC,IAAkB,EAAA/J,EAAAC,UAAiB,UAEvD,EAAAD,EAAAE,WAAU,wBACsB,yBAC5B,MAAM8D,QAAiBwB,IACnBxB,EAAS0D,KAAKC,SAChBR,EAAUnD,EAAS0D,KAAKC,QAE5B,cAL8B,oQAOkB,IAA5CjD,OAAOC,SAASC,KAAKoF,OAAO,YAC9BD,EAAe,YAEhB,IAGH,MAyBME,EAAcxI,IAClBsI,EAAetI,GANC,CAACA,IACjB,MAAMyI,EAASxF,OAAOC,SAASC,KAAKuF,QAAQ,iBAAkB1I,GAC9DiD,OAAO0F,QAAQC,UAAU,CAACC,KAAKJ,GAAQ,GAAGA,IAK1CK,CAAU9I,IAGZ,OACEzB,EAAAgC,cAAA,OAAKE,UAAU,aACblC,EAAAgC,cAAC+F,EAAA/E,EAAG,CAACrD,MAAO,CAAC6K,OAAQ,IACnBxK,EAAAgC,cAACiH,EAAgB,CACf/G,UAAU,gCACVvC,MAAO,CAAC8K,WAA4B,UAAhBX,EAA0B,oCAAsC,qCACpF3H,QAAS,IAAM8H,EAAW,UAC1BjK,EAAAgC,cAAC8G,EAAQ,CACPnJ,MAAO,CAAC+K,MAAuB,UAAhBZ,EAA2B,UAAY,YAAU,mBAKpE9J,EAAAgC,cAACkH,EAAiB,CAChBhH,UAAU,gCACVvC,MAAO,CAAC8K,WAA4B,YAAhBX,EAA4B,oCAAsC,qCACtF3H,QAAS,IAAM8H,EAAW,YAC1BjK,EAAAgC,cAAC8G,EAAQ,CACPnJ,MAAO,CAAC+K,MAAuB,YAAhBZ,EAA4B,UAAY,YAAU,qBAMvE9J,EAAAgC,cAAC+F,EAAA/E,EAAG,CAACd,UAAU,eACblC,EAAAgC,cAACgG,EAAAhF,EAAG,CAACd,UAAU,sCACblC,EAAAgC,cAAC1C,EAAc,CACbC,QAAS2H,EACT1H,SAAU4H,EACV3H,YAAa4H,EACb3H,YAAY,WAGhBM,EAAAgC,cAACgG,EAAAhF,EAAG,CAACd,UAAU,sCACblC,EAAAgC,cAAC1C,EAAc,CACbC,QAASiK,EACThK,SAAUkK,EACVjK,YAAakK,EACbjK,YAAY,kBAIlBM,EAAAgC,cAAC+F,EAAA/E,EAAG,CAACd,UAAU,+BACblC,EAAAgC,cAAC6G,EAAY,CACXF,QAAQ,UACRzG,UAAU,gDACVC,QAAS,KA3EfuC,OAAOC,SAASC,KAAO,WAAWkF,KAGP,MAE3B,MAAMa,EAAiBf,EAAe,iBAAmB,GACnDgB,EAC4B,IAAhClB,EAAqBtI,OACjB,eAAesI,EAAqBxI,IAAIuB,GAASA,EAAMlC,MAAMY,KAAK,QAClE,GACA0J,EACwB,IAA1BzD,EAAehG,QAA0C,IAA1BgG,EAAehG,OAC5C,SAASgG,EAAelG,IAAIuB,GAASA,EAAMlC,MAAMY,KAAK,QACtD,GAGN,MAAO,GAFuC,IAA1BiG,EAAehG,OAAe,GAAGgG,EAAe,GAAG7G,QAAU,MAExDsK,IAAeD,IAAqBD,KAhBVG,KA4E7C9K,EAAAgC,cAAA,gCAGJhC,EAAAgC,cAAC+F,EAAA/E,EAAG,CAACd,UAAU,aACXlC,EAAAgC,cAACe,EAAAC,EAAKC,MAAK,CAACE,SAAS,2BAA2B1B,KAAK,WAAWyB,MAAM,gCACpElD,EAAAgC,cAACmH,EAAmB,CAAC1H,KAAK,WAAW2B,QAASwG,EAAcvG,SAAU,IAAMwG,GAAiBD,KAC7F5J,EAAAgC,cAACqH,EAAmB,CAACnH,UAAU,YAAYC,QAAS,IAAM0H,GAAiBD,IAAa,oCAa/D,MAAKL,iBCnLnC,MAAMwB,EAAkBpM,EAAAC,GAAOC,GAAuB;;;;;;;;;8BAS9BC,GAAWA,EAAMC,KAAO,KAAO;MACvDD,GAAWA,EAAMC,KAAO,KAAO;EAUzBiM,GAPWrM,EAAAC,GAAOC,GAAG;;EAOLF,EAAAC,GAAOC,GAAuB;;;;;;;;;sBASpCC,GAAWA,EAAMC,KAAO,QAAU;GAG5CkM,EAActM,EAAAC,GAAOM,KAAK;;;;;;;;;;EAWjCgM,GAAWvM,EAAAC,GAAOC,GAAuB;;;;;;;YAOlCC,GAAWA,EAAMC,KAAO,EAAI;;;YAG5BD,GAAWA,EAAMC,KAAO,OAAS;;;;;;;;;;;;EAaxCoM,GAASxM,EAAAC,GAAOC,GAAgB;;;;;sBAKfC,GAAWA,EAAMU,SAAW,OAAS;;;;;;EAuD5D,IAAA4L,GA1CyBtM,IACvB,MAAMS,QAAEA,EAAU,GAAE8L,eAAEA,EAAcC,kBAAEA,GAAsBxM,GAErDC,EAAM2B,IAAW,EAAAV,EAAAC,WAAS,GAEjC,OACED,EAAAgC,cAAA,WACEhC,EAAAgC,cAAC+I,EAAe,CACd7I,WACEnD,EAAO,2BAA6B,IAD3B,qDAEyC,gBACrCA,EACfA,KAAMA,EAAI,gBACI,WACdoD,QAAS,KAAOzB,GAAS3B,IACzBY,MAAO,CAAE2C,SAAU,aAEnBtC,EAAAgC,cAACiJ,EAAW,CACVxJ,KAAK,OACLgB,MAAO4I,EAAe9K,KACtBsC,aAAa,MACb0I,UAAQ,IAEVvL,EAAAgC,cAACgJ,EAAa,CACZ7I,QAAS,IAAMzB,GAAS3B,GACxBA,KAAMA,IAGRiB,EAAAgC,cAACkJ,GAAQ,CAACnM,KAAMA,GACbQ,EAAQ2B,IAAKZ,GAEVN,EAAAgC,cAACmJ,GAAM,CAAC3L,SAAUc,EAAKU,KAAOqK,EAAerK,GAAImB,QAAS,KAAOzB,GAAS3B,GAAOuM,EAAkBhL,IAAQkD,IAAKlD,EAAKU,IACnHhB,EAAAgC,cAAA,KAAGE,UAAU,QAAQ5B,EAAKC,YC7HnC,MAAMiL,GAAa7M,EAAAC,GAAO6M,CAAC;;;;;;;;;;EAYrBC,GAAgB/M,EAAAC,GAAO6M,CAAC;;;;EAMxBE,GAAMhN,EAAAC,GAAOC,GAAG;;;;EAMhB+M,GAAajN,EAAAC,GAAO6M,CAAC;;;;EAMrBI,GAAOlN,EAAAC,GAAOC,GAAG;;;;EAMjBiN,GAAWnN,EAAAC,GAAO6M,CAAC;;;;;EAOnBM,GAAcpN,EAAAC,GAAO6M,CAAC;;;;;EAqBtBO,KAdsB,EAAArN,EAAAC,IAAOmE,EAAAC,EAAKC,MAAMmG,MAAM;;;;;GAOxB,EAAAzK,EAAAC,IAAOmE,EAAAC,EAAKC,MAAMqG,MAAM;;;;;EAOvC3K,EAAAC,GAAOC,GAAG;;;;GAMjBoN,IAAiB,EAAAtN,EAAAC,IAAOmJ,EAAA/E,EAAI;;;EAK5BkJ,GAAmBvN,EAAAC,GAAO6M,CAAC;;;;EAM3BU,IAAW,EAAAxN,EAAAC,IAAOoJ,EAAAhF,EAAgB;;;;;;;;;qBASzBlE,GAChBA,EAAMsN,YAAc,oBAAsB;;EAInCC,GAAQ1N,EAAAC,GAAO0N,GAAe;;;;;qBAKrBxN,GAChBA,EAAMsN,YAAc,oBAAsB;;EASnCG,GAAiB5N,EAAAC,GAAO4N,IAAI;;;;;EAM5BC,GAAe9N,EAAAC,GAAO6M,CAAC;;;;EAKvBiB,GAAa/N,EAAAC,GAAO0N,GAAG;;EAQvBK,IAJgBhO,EAAAC,GAAOC,GAAG;;EAIRF,EAAAC,GAAO6M,CAAC;;;;;;GAQ1BmB,IAAa,EAAAjO,EAAAC,IAAOoJ,EAAAhF,EAAqB;sBAC/BlE,GACjBA,EAAMsN,YAAc,qBAAuB;;;;;;0BAMtBtN,GAChBA,EAAM+N,KAAiB/N,EAAMsN,YAAc,oBAAsB,qBAApD;;EASXU,IAAa,EAAAnO,EAAAC,IAAOmJ,EAAA/E,EAAI;;EAIxB+J,IAAW,EAAApO,EAAAC,IAAOmJ,EAAA/E,EAAI;;;;EAMtBgK,GAAmBrO,EAAAC,GAAOC,GAAG;;;;;;;;;EAW7BoO,GAAsBtO,EAAAC,GAAOC,GAAG;;;;;;;;;;EAYhCqO,GAAuBvO,EAAAC,GAAOC,GAAG;;;;;;;;;EAWjCsO,GAAuBxO,EAAAC,GAAOC,GAAG;;;;;;;;;EAWjCuO,GAAazO,EAAAC,GAAO6M,CAAC;;;;;;;;ECrN5B4B,GAAmB,qDCiVzB,IAAAC,GAvSoBxO,IAClB,MAAMyO,OACJA,EAAMC,gBACNA,EAAeC,mBACfA,EAAkBC,gBAClBA,EAAeC,mBACfA,GACE7O,GACG8O,EAAkBC,IAAuB,EAAA7N,EAAAC,WAAkB,IAC3D6N,EAAoBC,IAAyB,EAAA/N,EAAAC,WAAkB,IAC/D+N,EAAaC,IAAkB,EAAAjO,EAAAC,UAAiByE,OAAOwJ,YA8BxDC,EAAU,CAACC,EAAsB3L,KAErC,IADA2L,GAA8B,IACV3F,KAAKC,MAAMjG,GAC7B,OAAO,GAET,GAAI2L,EAAe3F,KAAK4F,KAAK5L,GAC3B,OAAO,EAET,MAAM6L,EAAwC,IAA7B7L,EAAQgG,KAAKC,MAAMjG,IACpC,OAAOgG,KAAK8F,MAAMD,IASpB,OANA,EAAAtO,EAAAE,WAAU,KAIRwE,OAAO/C,iBAAiB,SAHH,KACnBsM,EAAevJ,OAAOwJ,eAGvB,IAEDlO,EAAAgC,cAACgK,GAAI,CAAC9J,UAAU,aACdlC,EAAAgC,cAAC+F,EAAA/E,EAAG,KACDuK,EAAOV,MACN7M,EAAAgC,cAACmK,GAAQ,CAAAqC,aAEsD,IAA3DjB,EAAOkB,QAAQpO,OAAQqO,GAAWA,EAAOC,OAAOvN,OAElDc,UAAU,OAEVlC,EAAAgC,cAACqK,GAAK,CACJ1M,MAAO,CAAEiP,UAAW,SACpBxC,YAC6D,IAA3DmB,EAAOkB,QAAQpO,OAAQqO,GAAWA,EAAOC,OAAOvN,OAElDyN,IACEtB,EAAOuB,MACHvB,EAAOuB,MACPzB,GAEN0B,IAAK,6BAA6BxB,EAAOyB,kBAI/ChP,EAAAgC,cAAC4K,GAAU,CAAAqC,MACF1B,EAAOV,KACd3K,UAAU,MAAKsM,aAE8C,IAA3DjB,EAAOkB,QAAQpO,OAAQqO,GAAWA,EAAOC,OAAOvN,QAGlDpB,EAAAgC,cAAA,OAAKE,UAAU,mBACblC,EAAAgC,cAAC+F,EAAA/E,EAAG,CAACd,UAAU,QACblC,EAAAgC,cAACgG,EAAAhF,EAAG,KACFhD,EAAAgC,cAACe,EAAAC,EAAKC,MAAK,CACTjC,GAAI,UAAUuM,EAAOvM,KACrBS,KAAK,WACLyB,MAAM,4BACNC,SAAS,2BACTC,QACEoK,GAAmBA,EAAgB1M,SAASyM,EAAOvM,IAErDqC,SAAU,KAxEL,CAACkK,IAChBC,GAAmBA,EAAgB1M,SAASyM,EAAOvM,IACrDyM,EAAmBD,EAAgBnN,OAAQU,GAAQA,IAAQwM,EAAOvM,KAGhEyM,EADED,EACiB,IAAIA,EAAiBD,EAAOvM,IAE5B,CAACuM,EAAOvM,MAkEfkO,CAAa3B,QAKrBvN,EAAAgC,cAAC+F,EAAA/E,EAAG,CAACd,UAAU,aACblC,EAAAgC,cAACgG,EAAAhF,EAAG,CAACd,UAAU,mBACZ,IAAIiN,MAAM,IAAIjO,IAAI,CAACkO,EAAGC,IACrBrP,EAAAgC,cAAA,OACEwB,IAAK,QAAQ6L,IACbR,IAAK,0CAA0CV,EAAQkB,EAAG9B,EAAO+B,4BAGrEtP,EAAAgC,cAAA,KAAGE,UAAU,aACVqL,EAAO+B,eAAejH,QAAQ,OAAKkF,EAAOgC,oBAIjDvP,EAAAgC,cAAC+F,EAAA/E,EAAG,CAACd,UAAU,QACblC,EAAAgC,cAACgG,EAAAhF,EAAG,KACFhD,EAAAgC,cAACwJ,GAAU,CAACtJ,UAAU,WACnBqL,EAAOyB,gBAIdhP,EAAAgC,cAAC+F,EAAA/E,EAAG,CAACd,UAAU,QACblC,EAAAgC,cAACgG,EAAAhF,EAAG,CAACd,UAAU,UACblC,EAAAgC,cAAC0J,GAAa,CAACxJ,UAAU,WACtBqL,EAAOiC,eAAeC,iBAEzBzP,EAAAgC,cAAC2J,GAAG,CAACzJ,UAAU,gCACflC,EAAAgC,cAAC4J,GAAU,CAAC1J,UAAU,WACnBqL,EAAOoB,OAAS,QAAS,IACzBpB,EAAOmC,SAAWnC,EAAOoB,OAAS,MAAO,IACzCpB,EAAOmC,SAAW,YAIzB1P,EAAAgC,cAAC+F,EAAA/E,EAAG,CAACd,UAAU,aACZqL,EAAOoC,WAAWzO,IAAI,CAAC2G,EAAOwH,IAC7BrP,EAAAgC,cAACgG,EAAAhF,EAAG,CAACd,UAAU,eAAesB,IAAK,OAAO6L,KACxCrP,EAAAgC,cAAC6J,GAAI,KACH7L,EAAAgC,cAAC8J,GAAQ,CAAC5J,UAAU,QAAQ2F,EAAMtH,UAK1CP,EAAAgC,cAAC+F,EAAA/E,EAAG,CAACd,UAAU,QACblC,EAAAgC,cAACgG,EAAAhF,EAAG,CACFd,UAAU,8BACVC,QAAS,IACPuC,OAAO3F,KACL,kBAAkBwO,EAAOqC,oBACzB,WAIJ5P,EAAAgC,cAAC+J,GAAW,CAAC7J,UAAU,QAAM,2BAG7BlC,EAAAgC,cAAA,WACEhC,EAAAgC,cAACgL,GAAgB,CAAC9K,UAAU,eAOoB,IAA3DqL,EAAOkB,QAAQpO,OAAQqO,GAAWA,EAAOC,OAAOvN,QAC/CpB,EAAAgC,cAACiK,GAAc,KACbjM,EAAAgC,cAACgG,EAAAhF,EAAG,CAACd,UAAU,UACblC,EAAAgC,cAACkK,GAAgB,CAAChK,UAAU,eAAa,4BAMa,IAA3DqL,EAAOkB,QAAQpO,OAAQqO,GAAWA,EAAOC,OAAOvN,QAC/CpB,EAAAgC,cAAC8K,GAAU,KACT9M,EAAAgC,cAAA,OAAKE,UAAU,aACblC,EAAAgC,cAAC+F,EAAA/E,EAAG,CAACd,UAAU,0BACZqL,EAAOkB,QACLpO,OAAQqO,GAAWA,EAAOC,OAC1BkB,KAAK,CAACC,EAASC,IACdD,EAAQR,eAAiBS,EAAQT,eAAiB,GAAK,GAExDU,MACC,EACAhC,GAAe,IACXF,EACE,EACA,EACFA,EACA,EACA,GAEL5M,IAAI,CAACwN,EAAQW,IACZrP,EAAAgC,cAACgG,EAAAhF,EAAG,CACFd,UAAW,0CACT8L,GAAe,IACXqB,EAAI,GAAM,EACR,cACA,GACFA,EAAI,GAAM,EACV,cACA,2BAEJvB,EAAqB,gBAAkB,2BAEzCtK,IAAK,OAAO6L,KAEZrP,EAAAgC,cAAA,OACErC,MAAO,CAAEsQ,OAAQ,QACjB/N,UAAU,SACV2M,IACEH,EAAOwB,OACHxB,EAAOwB,OACP,qDAENnB,IAAK,iCAAiCL,EAAOyB,cAAczB,EAAO0B,cAGpEpQ,EAAAgC,cAACoL,GAAU,CAAClL,UAAU,qBACnBwM,EAAOyB,eAAazB,EAAO0B,WAG9BpQ,EAAAgC,cAAA,OAAKE,UAAU,4BACZ,IAAIiN,MAAM,IAAIjO,IAAI,CAACkO,EAAGC,IACrBrP,EAAAgC,cAAC0K,GAAU,CACTlJ,IAAK,QAAQ6L,IACbnN,UAAU,UACV2M,IAAK,0CAA0CV,EAAQkB,EAAG9B,EAAO+B,4BAGrEtP,EAAAgC,cAACyK,GAAY,CAACvK,UAAU,aACrBwM,EAAOY,mBAAiBZ,EAAOa,mBAGpCvP,EAAAgC,cAAA,KACE4C,KAAM,kBAAkB8J,EAAOkB,OAC/B7N,OAAO,SACPG,UAAU,qBAEVlC,EAAAgC,cAACuK,GAAc,CAACrK,UAAU,gBAAc,iBAGxClC,EAAAgC,cAACiL,GAAmB,CAAC/K,UAAU,cAEjClC,EAAAgC,cAACe,EAAAC,EAAKC,MAAK,CACTf,UAAU,oBACVT,KAAK,WACLyB,MAAM,4BACNlC,GAAI,UAAU0N,EAAO1N,KACrBmC,SAAS,yBACTP,UACwB,IAAtBgL,GACAA,IAAqBc,EAAO1N,GAE9BoC,QAASsK,GAAmBA,EAAgB5M,SAAS4N,EAAO1N,IAC5DqC,SAAU,KAxPT,CAACqL,KACM,IAAtBd,GAA2BA,IAAqBc,EAAO1N,KACrD0M,GAAmBA,EAAgB5M,SAAS4N,EAAO1N,KACrD6M,GAAqB,GACrBF,EAAmBD,EAAgBrN,OAAQU,GAAQA,IAAQ2N,EAAO1N,OAElE6M,EAAoBa,EAAO1N,IAEzB2M,EADED,EACiB,IAAIA,EAAiBgB,EAAO1N,IAE5B,CAAC0N,EAAO1N,QA+ObqP,CAAa3B,WAS9BnB,EAAOkB,QAAQpO,OAAQqO,GAAWA,EAAOC,OAAOvN,OAAS,GACxDpB,EAAAgC,cAAC+K,GAAQ,CAAC7K,UAAU,OAClBlC,EAAAgC,cAACgG,EAAAhF,EAAG,KACFhD,EAAAgC,cAAA,OACEE,UAAU,SACVC,QAAS,IAAM4L,GAAuBD,IAEtC9N,EAAAgC,cAAC2K,GAAe,CAACzK,UAAU,qBACxB4L,EAAqB,cAAgB,gBAExC9N,EAAAgC,cAAA,OAAKE,UAAU,QACZ4L,EACC9N,EAAAgC,cAACmL,GAAoB,CAACjL,UAAU,KAEhClC,EAAAgC,cAACkL,GAAoB,CAAChL,UAAU,WCtU3C,MAAMoO,GAAsBC,QAClBhM,IAAXgM,EACK,GAAGA,OAuBL,GAGIC,GAA0B,CACrCC,EAAiCC,KAEjC,QAAoBnM,IAAhBkM,QAA0ClM,IAAbmM,EAAwB,CACvD,MAAMjO,EAAQgG,KAAK8F,MAAMmC,EAAWD,EAAc,KAClD,OAAIhO,EAAQ,IACH,GAAGA,OAEMgG,KAAK8F,MAAM9L,EAAQ,KAAO,GACnC,WAGX,MAAO,IAaIkO,GACXC,QAEqBrM,IAAjBqM,EACEA,EAAe,IACV,GAAGA,OAGH,GADOnI,KAAK8F,MAAMqC,EAAe,eAIrC,GC7DIC,GAAYlS,EAAAC,GAAO6M,CAAC;;;;;;EAQpBqF,GAAWnS,EAAAC,GAAO6M,CAAC;;;;;EAOnBsF,GAAYpS,EAAAC,GAAO6M,CAAC;;;;;;EAQpBuF,GAAarS,EAAAC,GAAO6M,CAAC;;;;;EAOrBwF,GAAUtS,EAAAC,GAAOC,GAAG;;;EAKpBqS,GAAWvS,EAAAC,GAAO0N,GAAG;;;;;EAOrB6E,IAAe,EAAAxS,EAAAC,IAAOmJ,EAAA/E,EAAI;;;;;;;EAS1BoO,GAAoBzS,EAAAC,GAAO6M,CAAC;;;;;EAO5B4F,GAAoB1S,EAAAC,GAAO6M,CAAC;;;;;;;EAS5B6F,IAAoB,EAAA3S,EAAAC,IAAOmJ,EAAA/E,EAAI;;;;EAM/BuO,GAAU5S,EAAAC,GAAOC,GAAG;;ECsCjC,IAAA2S,GAnG6B1S,IAE3B,MAAM2S,aAAEA,GAAiB3S,EACnB4S,EAAchN,OAAOC,SAASgN,OAAStE,GAE7C,OACErN,EAAAgC,cAACuP,GAAO,KACNvR,EAAAgC,cAAA,UACEhC,EAAAgC,cAAA,OAAKE,UAAU,oCAAkC,qDAGjDlC,EAAAgC,cAAC+F,EAAA/E,EAAG,KACAhD,EAAAgC,cAACgG,EAAAhF,EAAG,CAACd,UAAU,cACXlC,EAAAgC,cAAC6O,GAAS,CAAC3O,UAAU,QAAQuP,aAAY,EAAZA,EAAcG,IAAI/J,MAAMtH,OAEzDP,EAAAgC,cAACgG,EAAAhF,EAAG,CAACd,UAAU,cACXlC,EAAAgC,cAAC8O,GAAQ,CAAC5O,UAAU,QAAQuP,aAAY,EAAZA,EAAcI,kCAGlD7R,EAAAgC,cAAC+F,EAAA/E,EAAG,KACAhD,EAAAgC,cAACgG,EAAAhF,EAAG,KACAhD,EAAAgC,cAAC+O,GAAS,CAAC7O,UAAU,QAAQuP,aAAY,EAAZA,EAAcG,IAAIE,QAEnD9R,EAAAgC,cAACgG,EAAAhF,EAAG,KACAhD,EAAAgC,cAACgP,GAAU,CAAC9O,UAAU,YAASuP,aAAY,EAAZA,EAAcM,sCAIrD/R,EAAAgC,cAAC+F,EAAA/E,EAAG,CAACd,UAAU,QACXlC,EAAAgC,cAACgG,EAAAhF,EAAG,KACAhD,EAAAgC,cAACiP,GAAO,QAGhBjR,EAAAgC,cAAC+F,EAAA/E,EAAG,CAACd,UAAU,QACXlC,EAAAgC,cAACgG,EAAAhF,EAAG,KACAhD,EAAAgC,cAACkP,GAAQ,CACLrC,KAAM4C,aAAY,EAAZA,EAAcG,IAAI1B,QAASuB,EAAaG,IAAI1B,OAASwB,EAC3D3C,IAAI,wBAGhB/O,EAAAgC,cAACmP,GAAY,CAACjP,UAAU,QACpBlC,EAAAgC,cAACgG,EAAAhF,EAAG,CAACd,UAAU,sBACXlC,EAAAgC,cAACoP,GAAiB,CAAClP,UAAU,QAAM,WACnClC,EAAAgC,cAACqP,GAAiB,CAACnP,UAAU,oBAAiBoO,GAAmBmB,aAAY,EAAZA,EAAclB,UAEnFvQ,EAAAgC,cAACgG,EAAAhF,EAAG,CAACd,UAAU,sBACXlC,EAAAgC,cAACoP,GAAiB,CAAClP,UAAU,oBAAiBuP,aAAY,EAAZA,EAAcO,oBAC5DhS,EAAAgC,cAACqP,GAAiB,CAACnP,UAAU,oBAAiBsO,GAAwBiB,aAAY,EAAZA,EAAcO,aAAeP,aAAY,EAAZA,EAAchP,aAErHzC,EAAAgC,cAACgG,EAAAhF,EAAG,CAACd,UAAU,sBACXlC,EAAAgC,cAACoP,GAAiB,CAAClP,UAAU,QAAM,kBACnClC,EAAAgC,cAACqP,GAAiB,CAACnP,UAAU,oBAAiByO,GAAyBc,aAAY,EAAZA,EAAcQ,sBAG7FjS,EAAAgC,cAACsP,GAAiB,CAACpP,UAAU,QACzBlC,EAAAgC,cAACgG,EAAAhF,EAAG,CAACd,UAAU,qBAAqBvC,MAAO,CAAEuS,WAAY,WACrDlS,EAAAgC,cAAA,OACIE,UAAU,SACV2M,IAAK,4CAA2C4C,aAAY,EAAZA,EAAcU,gBAAiB,SAAW,iBAC1FpD,IAAI,SAER/O,EAAAgC,cAAA,KAAGE,UAAW,mBAAiBuP,aAAY,EAAZA,EAAcU,gBAAiB,mBAAqB,KAAI,YAE3FnS,EAAAgC,cAACgG,EAAAhF,EAAG,CAACd,UAAU,qBAAqBvC,MAAO,CAAEuS,WAAY,WACrDlS,EAAAgC,cAAA,OACIE,UAAU,SACV2M,IAAK,kDAAiD4C,aAAY,EAAZA,EAAcW,oBAAqB,SAAW,iBACpGrD,IAAI,eAER/O,EAAAgC,cAAA,KAAGE,UAAW,mBAAiBuP,aAAY,EAAZA,EAAcW,oBAAqB,mBAAqB,KAAI,oBAE/FpS,EAAAgC,cAACgG,EAAAhF,EAAG,CAACd,UAAU,qBAAqBvC,MAAO,CAAEuS,WAAY,WACrDlS,EAAAgC,cAAA,OACIE,UAAU,SACV2M,IAAK,+CAA8C4C,aAAY,EAAZA,EAAcY,qBAAsB,SAAW,iBAClGtD,IAAI,YAER/O,EAAAgC,cAAA,KAAGE,UAAW,mBAAiBuP,aAAY,EAAZA,EAAcY,qBAAsB,mBAAqB,KAAI,iBAEhGrS,EAAAgC,cAACgG,EAAAhF,EAAG,CAACd,UAAU,qBAAqBvC,MAAO,CAAEuS,WAAY,WACrDlS,EAAAgC,cAAA,OACIE,UAAU,SACV2M,IAAK,gDAA+C4C,aAAY,EAAZA,EAAca,kBAAmB,SAAW,iBAChGvD,IAAI,aAER/O,EAAAgC,cAAA,KAAGE,UAAW,mBAAiBuP,aAAY,EAAZA,EAAca,kBAAmB,mBAAqB,KAAI,cAGjGtS,EAAAgC,cAAC+F,EAAA/E,EAAG,CAACd,UAAU,0BACXlC,EAAAgC,cAACgG,EAAAhF,EAAG,KACAhD,EAAAgC,cAAA,KAAG4C,KAAM,+BAA+B6M,aAAY,EAAZA,EAAczQ,MAAMU,SAASiD,SAASqF,UAC1EhK,EAAAgC,cAAA,UAAQP,KAAK,SAASS,UAAU,0BAAwB,yBCpGrE,MAAMqQ,GAA8B,CACvC,CAAEvR,GAAI,EAAGT,KAAM,qBAAsBkC,MAAO,mBAC5C,CAAEzB,GAAI,EAAGT,KAAM,YAAakC,MAAO,gBACnC,CAAEzB,GAAI,EAAGT,KAAM,yBAA0BkC,MAAO,mBAChD,CAAEzB,GAAI,EAAGT,KAAM,4BAA6BkC,MAAO,4BCP1C+P,IAAc,EAAA7T,EAAAC,IAAOmE,EAAAC,EAAKyP,QAAQ;;;;;;;;;;;;;;;;;;;;EAsBlCC,IAAsB,EAAA/T,EAAAC,IAAOmE,EAAAC,EAAKC,MAAMqG,MAAM;;;;;;;;;;EAW9CqJ,IAAsB,EAAAhU,EAAAC,IAAOmE,EAAAC,EAAKC,MAAMmG,MAAM;;;;;EAM9CwJ,IAAc,EAAAjU,EAAAC,IAAOmE,EAAAC,EAAKC,MAAM;;EAIhC4P,IAAe,EAAAlU,EAAAC,IAAOiI,EAAA7D,EAA0B;gBAC5ClE,IACbA,EAAMgU,OAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiCNC,IAAc,EAAApU,EAAAC,IAAO8T,GAAoB;;;;;;EAQzCM,IAAsB,EAAArU,EAAAC,IAAO4T,GAAY;;;;EAMzCS,GAAStU,EAAAC,GAAOsU,CAAC;;;;;EAMjBC,GAAYxU,EAAAC,GAAO6M,CAAC;;;;EAMpB2H,GAAkBzU,EAAAC,GAAO6M,CAAC;;;;EAM1B4H,IAAY,EAAA1U,EAAAC,IAAOmJ,EAAA/E,EAAI;;;;;;EAQvBsQ,GAAc3U,EAAAC,GAAOC,GAAG;;uYCzF9B,MAAM0U,GAAoC,CAC/CC,IAAK,CACH1E,unNACA5L,MAAO,MACP0M,KAAK,OAEP6D,OAAQ,CACN3E,2uIACA5L,MAAO,YACP0M,KAAK,UAEP8D,MAAO,CACL5E,uyIACA5L,MAAO,QACP0M,KAAK,SAEP+D,UAAW,CACT7E,uzMACA5L,MAAO,YACP0M,KAAK,aAEPgE,UAAW,CACT9E,2uIACA5L,MAAO,YACP0M,KAAK,aAEPiE,UAAW,CACT/E,+7IACA5L,MAAO,YACP0M,KAAK,aAEPkE,MAAO,CACLhF,2/IACA5L,MAAO,QACP0M,KAAK,SAEPmE,MAAO,CACLjF,u5IACA5L,MAAO,QACP0M,KAAK,SAEPoE,IAAK,CACHlF,m6KACA5L,MAAO,MACP0M,KAAK,OAEPqE,OAAQ,CACNnF,MAAOoF,GACPhR,MAAO,SACP0M,KAAK,WAGIuE,GAAkC,CAC3CX,IAAK,CACD1E,MAAOsF,GACPlR,MAAO,MACP0M,KAAK,OAEP6D,OAAQ,CACN3E,MAAOuF,GACPnR,MAAO,YACP0M,KAAK,UAEP8D,MAAO,CACL5E,MAAOwF,GACPpR,MAAO,QACP0M,KAAK,SAEP+D,UAAW,CACT7E,MAAOyF,GACPrR,MAAO,YACP0M,KAAK,aAEPgE,UAAW,CACT9E,MAAO0F,GACPtR,MAAO,YACP0M,KAAK,aAEPiE,UAAW,CACT/E,MAAO2F,GACPvR,MAAO,YACP0M,KAAK,aAEPkE,MAAO,CACLhF,MAAO4F,GACPxR,MAAO,QACP0M,KAAK,SAEPmE,MAAO,CACLjF,MAAO6F,GACPzR,MAAO,QACP0M,KAAK,SAEPoE,IAAK,CACHlF,MAAO8F,GACP1R,MAAO,MACP0M,KAAK,OAEPqE,OAAQ,CACNnF,MAAO+F,GACP3R,MAAO,SACP0M,KAAK,WC7HPkF,GAAoBnW,EAAAC,GAAOC,GAAY;;;;;;;;;;eAU7BC,GAAWA,EAAMC,KAAO,OAAS;EAE3CgW,GAAUpW,EAAAC,GAAOC,GAAG;;;;;;;EAuB1B,IAAAmW,GATgBlW,IACd,MAAMmW,QAAEA,GAAYnW,EAEpB,OACEkB,EAAAgC,cAAC8S,GAAiB,CAAC/V,KAAMkW,GACvBjV,EAAAgC,cAAC+S,GAAO,2SCFd,MA2jBMG,GAA0BxT,SAASqF,eACvC,qCAIEmO,IACFlO,EAAAC,OACEjH,EAAAgC,cAACmT,GAAAC,GAAuB,CAACC,aAJV,2CAIoCC,SAAS,MAC1DtV,EAAAgC,cAnkB0B,KAC9B,MAAOyP,EAAc8D,IAAmB,EAAAvV,EAAAC,aAEjCuV,EAASC,IAAc,EAAAzV,EAAAC,UAAmB,KAC1CyV,EAA6BC,IAAkC,EAAA3V,EAAAC,WAAkB,IACjF2V,EAAiBC,IAAsB,EAAA7V,EAAAC,WAAkB,IACzD6V,EAAoBC,IAAyB,EAAA/V,EAAAC,WAAkB,IAC/D+V,EAAUC,IAAe,EAAAjW,EAAAC,UAAiB,KAC1CiW,EAAaC,IAAkB,EAAAnW,EAAAC,UAAiB,KAChDmW,EAAWC,IAAgB,EAAArW,EAAAC,UAAiB,KAC5CqW,EAAiBC,IAAsB,EAAAvW,EAAAC,UAAiB,KACxDuW,EAASC,IAAc,EAAAzW,EAAAC,UAAiB,KACxCyW,EAAaC,IAAkB,EAAA3W,EAAAC,UAAiB,KAEhD2W,EAAaC,IAAkB,EAAA7W,EAAAC,WAAkB,IACjD6W,EAAgBC,IAAqB,EAAA/W,EAAAC,WAAkB,IACvD+W,EAAcC,IAAmB,EAAAjX,EAAAC,WAAkB,IACnDiX,EAAoBC,IAAyB,EAAAnX,EAAAC,WAAkB,IAC/DmX,EAAYC,IAAiB,EAAArX,EAAAC,WAAkB,IAE/CqX,EAAWC,IAAgB,EAAAvX,EAAAC,WAAS,IACpCuX,EAAaC,IAAkB,EAAAzX,EAAAC,WAAS,IAIxCuN,EAAiBC,IAAsB,EAAAzN,EAAAC,aACvCyN,EAAiBC,IAAsB,EAAA3N,EAAAC,aAEvCuJ,EAAcC,IACnB,EAAAzJ,EAAAC,UAAwB2I,IACnBc,EAAsBC,KAA2B,EAAA3J,EAAAC,UAEtD,KAEKyX,GAAeC,KACpB,EAAA3X,EAAAC,UAAuBsS,KAClBqF,GAAgBC,KAAqB,EAAA7X,EAAAC,UAC1CsS,GAAc,KAGTuF,GAAmBC,KAAwB,EAAA/X,EAAAC,WAAkB,IAE7D+X,GAAgBC,KAAqB,EAAAjY,EAAAC,WAAS,IAC/CiY,iBAAEA,KAAqB,EAAA/C,GAAAgD,MACvBC,IAAY,EAAApY,EAAAqY,aAGZC,GACJC,GAEOA,EAAMC,cAAc/V,MAAMrB,OAAS,EACtC,GAAGmX,EAAMC,cAAc/V,MAAM,GAAGgW,gBAAgBF,EAAMC,cAAc/V,MAAMpB,UACxE,KAEFkX,EAAMC,cAAc/V,MAmBpBiW,GAAyB7Q,GAAkB8Q,QAAA,4BAC/C,MAAMC,EAAM,IAAIC,IAAInU,OAAOC,SAASC,MAE9BkU,GADKC,SAASH,EAAII,SAASC,MAAM,KAAK,IACpB,CACtBtK,OAAO,EACPuK,qBAAsBrR,EACtBsR,gBAAiBzP,EAAqBxI,IAAKuB,GAAUA,EAAMzB,IAAIG,KAAK,KACpEiY,SAAUxB,GAAenV,QAGrBuB,QjB9FR2B,EiB8FkDmT,EjB7FYrT,OAAA,4BAE9D,aADuBV,EAAKT,IAAI,oBAAqB,CAAEqB,UAEzD,IALwC,IACtCA,EiB+FE,GAAI3B,EAAS0D,KAAKC,QAAS,CACzB,MAAM0R,EAAerV,EAAS0D,KAAKC,QAAQtH,OACxCkN,IAA2B,IAAhBA,EAAOV,OAAqC,IAApBU,EAAO+L,UAAwC,OAAnB/L,EAAOgM,SAEzE9D,EAAW4D,GAOXpB,IAAkB,GAEfvC,GACHC,GAA+B,EAEnC,IAEA,EAAA3V,EAAAE,WAAU,KACsByY,QAAA,4BAC5B,MAAMC,EAAM,IAAIC,IAAInU,OAAOC,SAASC,MAC9BkB,EAAKiT,SAASH,EAAII,SAASC,MAAM,KAAK,IACtCjV,QAAiB6B,EAAyBC,GAC5C9B,EAAS0D,OACX6N,EAAgBvR,EAAS0D,MACrB1D,EAAS0D,KAAKkK,KAChB8G,GAAgB1U,EAAS0D,KAAKkK,IAAI/J,MAAMtH,MAG9C,IAGC,KAEH,EAAAP,EAAAE,WAAU,KACJuR,IACFwG,IAAkB,GAClBS,GAAgBjH,EAAaG,IAAI/J,MAAMtH,QAExC,CAACmJ,EAAsBkO,KAE1B,MAmBM4B,GAAe,KACnB,MAAMZ,EAAM,IAAIC,IAAInU,OAAOC,SAASC,MAC9BkB,EAAKiT,SAASH,EAAII,SAASC,MAAM,KAAK,IACtCvR,EAAO,CACXnH,KAAMyV,EACNyD,QAASvD,EACTwD,cAAetD,EACfuD,aAAcrD,EACdsD,IAAKpD,EACLqD,cAAejE,EAAkB,EAAI,EACrCkE,QAASpD,EACTqD,SAAUjU,EACV0P,QAAShI,EACTiB,QAASf,EACTlE,aAAcE,GAA8C,MA2B9DuO,IAAkB,GAzBWU,QAAA,4BAC3B,IAAKT,GAGH,OAFA1T,QAAQN,MAAM,4CACd+T,IAAkB,GAIpB,MAAM+B,QAAuB9B,GAAiB,WACxC+B,EAAa7X,OAAAC,OAAAD,OAAAC,OAAA,GAAQqF,GAAI,CAAEwS,UAAWF,IAEtChW,OjB/K8B,CACxC0D,GACyDjC,OAAA,4BAQzD,aAPuBV,EAAKoV,KAC1B,4BACAC,KAAKC,UAAU3S,GACf,CACE9D,QAAS0B,KAIf,GiBoK6BgV,CAA2BL,GAAeM,MAAOnL,IACtE6I,IAAkB,GAClBzT,QAAQN,MAAM,yBAA0BkL,KAEtCpL,GAAgC,MAApBA,EAASwW,SAMrB9V,OAAOC,SAASC,KALb8C,EAAK8N,QAKe,uCAJA,uCAQ7B,IAKF,OACExV,EAAAgC,cAAA,OAAKE,UAAU,kCACblC,EAAAgC,cAACgT,GAAM,CAACC,QAAS+C,KACjBhY,EAAAgC,cAACe,EAAAC,EAAI,CAACyX,YAAU,EAACnD,UAAWA,EAAWoD,SAnErBnC,IACpB,MAAMoC,EAAOpC,EAAMC,cACnBjB,GAAa,GACbgB,EAAMqC,iBACNrC,EAAMzV,kBACF6X,EAAKE,iBACPpD,GAAe,GACV/B,GACHuC,IAAkB,GAEpB6C,EAAAC,GAAqBC,SAAS,MAI9BF,EAAAC,GAAqBC,SAAS,KAsD5Bhb,EAAAgC,cAAC+F,EAAA/E,EAAG,CAACd,UAAU,0BACblC,EAAAgC,cAACgG,EAAAhF,EAAG,CAACd,UAAU,uCACblC,EAAAgC,cAACsR,GAAW,KACVtT,EAAAgC,cAAC+F,EAAA/E,EAAG,KACFhD,EAAAgC,cAACgG,EAAAhF,EAAG,CAACd,UAAU,iCACblC,EAAAgC,cAACe,EAAAC,EAAKiY,MAAK,CAAC/Y,UAAU,SACpBlC,EAAAgC,cAACwQ,GAAW,CACV/Q,KAAK,OACLyZ,UAAQ,EACRxb,YAAY,OACZyb,QAAQ,6EACR1Y,MAAOuT,EACPoF,WAAYxE,EACZvT,SAAWb,GACTyT,EAAYqC,GAAsB9V,IAEpCG,OAASH,GACPqU,EACE,cAAcwE,KAAK7Y,EAAEgW,cAAc/V,UAIzCzC,EAAAgC,cAACe,EAAAC,EAAKyP,QAAQ6I,SAAQ,CAAC7Z,KAAK,WAAS,6BAKzCzB,EAAAgC,cAACgG,EAAAhF,EAAG,CAACd,UAAU,8DACblC,EAAAgC,cAACe,EAAAC,EAAKiY,MAAK,CAAC/Y,UAAU,SACpBlC,EAAAgC,cAACwQ,GAAW,CACV/Q,KAAK,OACLyZ,UAAQ,EACRxb,YAAY,WACZyb,QAAQ,6EACR1Y,MAAOyT,EACPkF,WAAYtE,EACZzT,SAAWb,GACT2T,EAAemC,GAAsB9V,IAEvCG,OAASH,GACPuU,EACE,cAAcsE,KAAK7Y,EAAEgW,cAAc/V,UAIzCzC,EAAAgC,cAACe,EAAAC,EAAKyP,QAAQ6I,SAAQ,CAAC7Z,KAAK,WAAS,kCAM3CzB,EAAAgC,cAAC+F,EAAA/E,EAAG,CAACd,UAAU,QACblC,EAAAgC,cAACgG,EAAAhF,EAAG,CAACd,UAAU,iCACblC,EAAAgC,cAACe,EAAAC,EAAKiY,MAAK,CAAC/Y,UAAU,SACpBlC,EAAAgC,cAACwQ,GAAW,CACV/Q,KAAK,QACLyZ,UAAQ,EACRC,QAAQ,wDACRzb,YAAY,QACZ+C,MAAO2T,EACPgF,WAAYpE,EACZ3T,SAAWb,GACT6T,EAAa7T,EAAEgW,cAAc/V,OAE/BE,OAASH,IAvM3ByU,EACE,gDAAgDoE,KAuMhB7Y,EAtMxBgW,cAAc/V,WAyMRzC,EAAAgC,cAACe,EAAAC,EAAKyP,QAAQ6I,SAAQ,CAAC7Z,KAAK,WAAS,oCAKzCzB,EAAAgC,cAACgG,EAAAhF,EAAG,CAACd,UAAU,8DACblC,EAAAgC,cAACe,EAAAC,EAAKiY,MAAK,CAAC/Y,UAAU,SACpBlC,EAAAgC,cAACwQ,GAAW,CACV/Q,KAAK,MACLyZ,UAAQ,EACRC,QAAQ,uBACRzb,YAAY,cACZ+C,MAAO6T,EACP8E,WAAYlE,EACZ7T,SAAWb,GACT+T,EAAmB/T,EAAEgW,cAAc/V,OAErCE,OAASH,IApN3B2U,EAAsB,oBAAoBkE,KAqNF7Y,EArNagW,cAAc/V,WAwNnDzC,EAAAgC,cAACe,EAAAC,EAAKyP,QAAQ6I,SAAQ,CAAC7Z,KAAK,WAAS,qCAM3CzB,EAAAgC,cAAC+F,EAAA/E,EAAG,CAACd,UAAU,QACblC,EAAAgC,cAACgG,EAAAhF,EAAG,CAACd,UAAU,6CACblC,EAAAgC,cAAC4Q,GAAW,CAACnR,KAAK,QAAQlB,KAAK,OAAO2C,MAAM,kBAC1ClD,EAAAgC,cAAC2Q,GAAmB,CAClBlR,KAAK,QACL2B,QAASwS,EACTvS,SAAU,IAAMwS,GAAmB,KAErC7V,EAAAgC,cAAC0Q,GAAmB,CAClBxQ,UAAU,YACVC,QAAS,IAAM0T,GAAmB,IAAK,mBAK3C7V,EAAAgC,cAAC4Q,GAAW,CAACnR,KAAK,QAAQlB,KAAK,OAAO2C,MAAM,mBAC1ClD,EAAAgC,cAAC2Q,GAAmB,CAClBlR,KAAK,QACL2B,SAAUwS,EACVvS,SAAU,IAAMwS,GAAmB,KAErC7V,EAAAgC,cAAC0Q,GAAmB,CAClBxQ,UAAU,YACVC,QAAS,IAAM0T,GAAmB,IAAM,qBAM9C7V,EAAAgC,cAACgG,EAAAhF,EAAG,CAACd,UAAU,8CACZ0T,GACC5V,EAAAgC,cAACe,EAAAC,EAAKiY,MAAK,CAAC/Y,UAAU,SACpBlC,EAAAgC,cAACwQ,GAAW,CACV0I,UAAQ,EACRzZ,KAAK,UACL0Z,QAAQ,cACRzb,YAAY,MACZ+C,MAAO+T,EACP4E,WAAYhE,EACZ/T,SAAWb,GACTiU,EAAWjU,EAAEgW,cAAc/V,OAE7BE,OAASH,IApQ7B6U,EAAc,cAAcgE,KAqQM7Y,EArQKgW,cAAc/V,WAwQnCzC,EAAAgC,cAACe,EAAAC,EAAKyP,QAAQ6I,SAAQ,CAAC7Z,KAAK,WAAS,6BAO7CzB,EAAAgC,cAAC+F,EAAA/E,EAAG,CAACd,UAAU,QACblC,EAAAgC,cAACgG,EAAAhF,EAAG,KACFhD,EAAAgC,cAACgR,GAAmB,CAClBuI,GAAG,WACH7b,YAAY,0BACZ2D,SAAWb,GACTmU,EAAenU,EAAEgW,cAAc/V,WAKvCzC,EAAAgC,cAAC+F,EAAA/E,EAAG,CAACd,UAAU,QACblC,EAAAgC,cAACgG,EAAAhF,EAAG,KACFhD,EAAAgC,cAAA,WACEhC,EAAAgC,cAACe,EAAAC,EAAKC,MAAK,CAACxB,KAAK,WAAWyB,MAAM,cAChClD,EAAAgC,cAAC2Q,GAAmB,CAClBtP,SAAU,IACR0U,IAAsBD,IAExB1U,QAAS0U,GACToD,UAAQ,EACRzZ,KAAK,aAEPzB,EAAAgC,cAAC+Q,GAAW,CAAC7Q,UAAU,aACrBlC,EAAAgC,cAAA,KACEG,QAAS,IACP4V,IAAsBD,KAAkB,2CAIvC,IACL9X,EAAAgC,cAAA,KAAG4C,KAAK,UAAU7C,OAAO,UAAQ,sBAE5B,IACL/B,EAAAgC,cAAA,KACEG,QAAS,IACP4V,IAAsBD,KAAkB,0CAIvC,IACL9X,EAAAgC,cAAA,KAAG4C,KAAK,YAAY7C,OAAO,UAAQ,gCAE9B,IACL/B,EAAAgC,cAAA,KACEG,QAAS,IACP4V,IAAsBD,KAAkB,QAIvC,IACL9X,EAAAgC,cAAA,KAAG4C,KAAK,YAAY7C,OAAO,UAAQ,2BAE9B,IACL/B,EAAAgC,cAAA,KACEG,QAAS,IACP4V,IAAsBD,KAAkB,mOAS3ChC,GACC9V,EAAAgC,cAAA,KACEG,QAAS,IACP4V,IAAsBD,KAGvB,06BAoBD9X,EAAAgC,cAACiR,GAAM,CACL9Q,QAAS,IAAM4T,GAAsB,IAEpC,cAKLD,GACA9V,EAAAgC,cAACiR,GAAM,CAAC9Q,QAAS,IAAM4T,GAAsB,IAC1C,eAKP/V,EAAAgC,cAACe,EAAAC,EAAKyP,QAAQ6I,SAAQ,CAAC7Z,KAAK,WAAS,wCASjDzB,EAAAgC,cAACgG,EAAAhF,EAAG,CAACd,UAAU,+BACblC,EAAAgC,cAACwP,GAAmB,CAACC,aAAcA,MAGvCzR,EAAAgC,cAAC+F,EAAA/E,EAAG,CAACd,UAAU,QACblC,EAAAgC,cAACgG,EAAAhF,EAAG,CAACd,UAAU,iCACblC,EAAAgC,cAAC6Q,GAAY,CACX3Q,UAAU,iBACVT,KAAK,SAAQqR,OACL0E,EACRvV,IAAKmW,GACLjW,QAAS,KAAK,IAAAqZ,EAAC,OAAiB,QAAjBA,EAAApD,GAAUvW,eAAO,IAAA2Z,OAAA,EAAAA,EAAEC,SAAM,sBAO/CjE,GACCxX,EAAAgC,cAACqR,GAAS,CAACnR,UAAU,QACnBlC,EAAAgC,cAACgG,EAAAhF,EAAG,CAACd,UAAU,kDACblC,EAAAgC,cAACmR,GAAS,CAACjR,UAAU,WAAS,YAEhClC,EAAAgC,cAACgG,EAAAhF,EAAG,CAACd,UAAU,oFACblC,EAAAgC,cAACoJ,GAAe,CACdrM,MAAI,EACJQ,QAASmY,GACTrM,eAAgBuM,GAChBtM,kBAAmBuM,MAGvB7X,EAAAgC,cAACgG,EAAAhF,EAAG,CAACd,UAAU,oFACblC,EAAAgC,cAAC1C,EAAc,CACbC,QAASiK,EACThK,SAAUkK,EACVjK,YAAakK,GACbjK,YAAY,iBAGhBM,EAAAgC,cAACgG,EAAAhF,EAAG,CAACd,UAAU,wDACblC,EAAAgC,cAACoR,GAAe,CAAClR,UAAU,+CAA6C,gIAO7EsV,GACCxX,EAAAgC,cAAA,OAAKE,UAAU,YAAYvC,MAAO,CAAE+b,UAAW,UAC5ClG,EAAQtU,IAAI,CAACqM,EAAQ8B,IACpBrP,EAAAgC,cAAC+F,EAAA/E,EAAG,CAACd,UAAU,OAAOsB,IAAK,OAAO6L,KAChCrP,EAAAgC,cAACgG,EAAAhF,EAAG,KACFhD,EAAAgC,cAACsL,GAAU,CACTC,OAAQA,EACRC,gBAAiBA,EACjBC,mBAAoBA,EACpBC,gBAAiBA,EACjBC,mBAAoBA,OAKR,IAAnB6H,EAAQpU,QACPpB,EAAAgC,cAAA,OAAKE,UAAU,qEACblC,EAAAgC,cAAA,OACEE,UAAU,OACVvC,MAAO,CAAEsQ,OAAQ,OAAQ0L,QAAS,OAClC9M,IAAK0E,GAAoBG,MAAM5E,QAEjC9O,EAAAgC,cAAA,uDACAhC,EAAAgC,cAAA,MAAIE,UAAU,OAAOvC,MAAO,CAAEic,UAAW,WAAU,uGACnD5b,EAAAgC,cAAC6Q,GAAY,CACT1Q,QAAS,IAAMqX,KACftX,UAAU,oCAAkC,OAMhC,IAAnBsT,EAAQpU,QACPpB,EAAAgC,cAAC+F,EAAA/E,EAAG,CAACd,UAAU,QACblC,EAAAgC,cAACgG,EAAAhF,EAAG,CACFd,UAAU,6CACVvC,MAAO,CACL2C,SAAU,QACVuZ,OAAQ,OACRC,KAAM,IACNC,MAAO,MAGT/b,EAAAgC,cAAC6Q,GAAY,CACXjQ,YACK4K,GAC0B,IAA3BA,EAAgBpM,QAChBsM,GAC2B,IAA3BA,EAAgBtM,SAClBoW,GAEFrV,QAAS,IAAMqX,KACftX,UAAU,qDAGPsL,GAAmBA,EAAgBpM,QACpC,IAAOsM,GAAmBA,EAAgBtM,QAAW,aAoB3C,OAE1B8T,8BCnmBAvD,GAASjN,OAAOC,SAASgN,OAC7B,MAAMqK,GAAgB,CACpBC,IAAKtK,GAAS,6CACduK,GAAIvK,GAAS,6DA+If,IAAAwK,GAtI6Brd,IAC3B,MAAMsd,cAAEA,EAAaC,qBAAEA,EAAoBC,wBAAEA,GAA4Bxd,EAEnEyd,EAA4BC,IAAwBC,cAAA,yBlBmDrB,IACrCC,UkBnDgCF,EAAMxb,GlBoDGyE,OAAA,4BAIzC,aAHuBV,EAAK4X,MAAM,kCAAkCD,KAAY,GAAI,CAClF9Y,QAAS0B,KAGb,GkBxDE,cAF0D,gRAI1D,IAAIsX,EAAU,IAAIC,KACdC,EAAOF,EAAQG,UACnBH,EAAQI,SAASJ,EAAQK,WAAW,GACpC,IAAIC,EAAQN,EAAQK,WAGhBE,EAAkB,GAFXP,EAAQQ,iBAEyBF,EAAM,GAAG,IAAIA,IAAQ,GAAGA,OAAsBJ,EAAK,GAAG,IAAIA,IAAO,GAAGA,MAEhH,OACE9c,EAAAgC,cAAA,WACEhC,EAAAgC,cAAA,MAAIrC,MAAO,CAAE0d,SAAU,UAAS,wCAChCrd,EAAAgC,cAACsb,GAAAta,EAAK,CAACua,YAAU,EAACC,SAAO,EAACC,UAAQ,EAACC,OAAK,EAACC,KAAK,MAC5C3d,EAAAgC,cAAA,aACAhC,EAAAgC,cAAA,UACEhC,EAAAgC,cAAA,eACAhC,EAAAgC,cAAA,wBACAhC,EAAAgC,cAAA,6BACAhC,EAAAgC,cAAA,6BACAhC,EAAAgC,cAAA,0BACAhC,EAAAgC,cAAA,mBACAhC,EAAAgC,cAAA,2BACAhC,EAAAgC,cAAA,wBACAhC,EAAAgC,cAAA,sBAGFhC,EAAAgC,cAAA,aAEDoa,EAAclb,IAAIsb,YACjB,IAAIH,aAAoB,EAApBA,EAAsBrb,MAAOwb,EAAMxb,GACvC,OACIhB,EAAAgC,cAAA,MAAIwB,IAAKgZ,EAAMxb,GAAImB,QAAS,KAAOma,EAAwBE,GAAQD,EAAmBC,GCvDhG9X,OAAOsW,SAAS,CACd4C,IAAK,EACLC,SAAU,aDsDA7d,EAAAgC,cAAC8b,GAAAC,EAAM,KACL/d,EAAAgC,cAAA,UAAQP,KAAK,uBACV,2IAGW+a,aAAK,EAALA,EAAOxb,uCACLwb,EAAM5K,IAAI/J,MAAMtH,+DACMic,EAAM5K,IAAI/J,MAAMtH,QAAQic,EAAM5K,IAAIE,YAAY0K,aAAK,EAALA,EAAO3K,iFACjD2K,EAAM5K,IAAI/J,MAAMtH,QAAQic,EAAM5K,IAAIE,YAAY0K,aAAK,EAALA,EAAO3K,qFACvC,QAAV2J,EAAAgB,aAAK,EAALA,EAAO5K,WAAG,IAAA4J,OAAA,EAAAA,EAAEtL,yEACbsM,EAAM5K,IAAI/J,MAAMtH,QAAQic,EAAM5K,IAAIE,SAAS0K,EAAM5K,IAAIoM,2DACxExB,aAAK,EAALA,EAAO/Z,0DACH+Z,aAAK,EAALA,EAAO3K,qEACN2K,aAAK,EAALA,EAAOzK,8DAChByK,aAAK,EAALA,EAAOjM,0DACNiM,aAAK,EAALA,EAAOxK,sDACTwK,aAAK,EAALA,EAAOvK,wLAG4CuK,EAAMxb,4XAO3Dwb,aAAK,EAALA,EAAOjM,uHAGPiM,aAAK,EAALA,EAAO3K,gEACEsL,8GAEYX,EAAM5K,IAAI/J,MAAMtH,QAAQic,EAAM5K,IAAIE,YAAY0K,aAAK,EAALA,EAAO3K,mFACjD2K,EAAM5K,IAAI/J,MAAMtH,QAAQic,EAAM5K,IAAIE,YAAY0K,aAAK,EAALA,EAAO3K,sFAClD2K,EAAM5K,IAAI/J,MAAMtH,QAAQic,EAAM5K,IAAIE,SAAS0K,EAAM5K,IAAIoM,6DACxExB,aAAK,EAALA,EAAO/Z,4DACH+Z,aAAK,EAALA,EAAO3K,uEACN2K,aAAK,EAALA,EAAOzK,gEAChByK,aAAK,EAALA,EAAOjM,4DACNiM,aAAK,EAALA,EAAOxK,wDACTwK,aAAK,EAALA,EAAOvK,uFAC6B,QAAVgM,EAAAzB,aAAK,EAALA,EAAO5K,WAAG,IAAAqM,OAAA,EAAAA,EAAE/N,+iCA4B/DlQ,EAAAgC,cAAA,MAAIrC,MAAO,CAACue,cAAe,WAAY1B,EAAMxb,IAC7ChB,EAAAgC,cAAA,MAAIrC,MAAO,CAACue,cAAe,WAAY1B,EAAM3K,0BAC7C7R,EAAAgC,cAAA,MAAIrC,MAAO,CAACue,cAAe,WAAY1B,EAAMjM,cAC7CvQ,EAAAgC,cAAA,MAAIrC,MAAO,CAACue,cAAe,WAAY1B,EAAMvK,qBAC7CjS,EAAAgC,cAAA,MAAIrC,MAAO,CAACue,cAAe,WAAY1B,EAAMxK,kBAC7ChS,EAAAgC,cAAA,MAAIrC,MAAO,CAACue,cAAe,WACzBle,EAAAgC,cAAA,OAAKE,UAAU,kBAAkB2M,IAAK2N,EAAMrK,eAAiB6J,GAAcE,GAAKF,GAAcC,IAAKlN,IAAI,YAEzG/O,EAAAgC,cAAA,MAAIrC,MAAO,CAACue,cAAe,WACzBle,EAAAgC,cAAA,OAAKE,UAAU,kBAAkB2M,IAAK2N,EAAMpK,mBAAqB4J,GAAcE,GAAKF,GAAcC,IAAKlN,IAAI,YAE7G/O,EAAAgC,cAAA,MAAIrC,MAAO,CAACue,cAAe,WACzBle,EAAAgC,cAAA,OAAKE,UAAU,kBAAkB2M,IAAK2N,EAAMnK,oBAAsB2J,GAAcE,GAAKF,GAAcC,IAAKlN,IAAI,YAE9G/O,EAAAgC,cAAA,MAAIrC,MAAO,CAACue,cAAe,WACzBle,EAAAgC,cAAA,OAAKE,UAAU,kBAAkB2M,IAAK2N,EAAMlK,iBAAmB0J,GAAcE,GAAKF,GAAcC,IAAKlN,IAAI,mBE3IlH,MAAMoP,GAAUxf,EAAAC,GAAOC,GAAG;;ECDjC,IAAYuf,IAAZ,SAAYA,GAERA,EAAAA,EAAA,mBACAA,EAAAA,EAAA,qBACAA,EAAAA,EAAA,oBACAA,EAAAA,EAAA,+BACD,CANH,CAAYA,KAAAA,GAAiB,KAwB7B,IAAAC,GAf6BC,IAC3B,MAAOhW,EAAOiW,IAAY,EAAAve,EAAAC,UAAiByE,OAAOwJ,YAC5CsQ,EAAyB,KAC7BD,EAAS7Z,OAAOwJ,aASlB,OAPA,EAAAlO,EAAAE,WAAU,KACRwE,OAAO/C,iBAAiB,SAAU6c,GAC3B,KACL9Z,OAAO+Z,oBAAoB,SAAUD,KAEtC,IAEIlW,GAASgW,GCTlB,MAAMI,GAAgB/f,EAAAC,GAAOsU,CAAC;;IAEzBpU,IACD,GAAIA,EAAM8F,KACR,MAAO,yBAAyB9F,EAAM8F;;;;;;;;;;;;;;EAiBtC+Z,GAAMhgB,EAAAC,GAAOC,GAAwB;;;;;;;sBAOpBC,GAAWA,EAAM8f,OAAS,UAAY;;EAGvDC,GAAelgB,EAAAC,GAAOC,GAAG;;;;;EAMzBigB,IAAsB,EAAAngB,EAAAC,IAAOoJ,EAAAhF,EAAI;;;;EAKjC+b,GAAapgB,EAAAC,GAAO0N,GAAG;;;;;EAMvB0S,GAAoBrgB,EAAAC,GAAOqgB,MAAM;;;;;;;;;;EAWjCC,IAAqB,EAAAvgB,EAAAC,IAAOogB,GAAkB;;;EAK9CG,GAAexgB,EAAAC,GAAO0N,GAAG;;;;;EAMzB8S,IAAY,EAAAzgB,EAAAC,IAAOoJ,EAAAhF,EAAI;;;;;;;;;;;;;EAyL7B,IAAAqc,GA3K6BvgB,IAC3B,MAAMwgB,OAAEA,EAAMC,QAAEA,GAAYzgB,GACrB0gB,EAAcC,IACnB,EAAAzf,EAAAC,aACKyf,EAAcC,IACnB,EAAA3f,EAAAC,YAoCF,OAnCA,EAAAD,EAAAE,WAAU,KACR,GAAIof,GAAUA,EAAOle,OAAS,EAAG,CAG/B,MAAMwe,EAFY,IAAIN,GAESpe,IAAI,CAACZ,EAAMgD,KAAU,CAClDwL,MAAOxO,EAAKwO,MACZ9N,GAAIsC,KAENsc,EAAWC,OAAO,EAAG,GACrBJ,EAAgBG,QACX,KAAKL,GAAaD,GAA4B,IAAlBA,EAAOle,QAAe,CACvD,IAAI0e,EAAQ,GACZ,IAAK,IAAIzQ,EAAI,EAAGA,EAAI,EAAGA,IACrByQ,EAAMC,KAAK,CACTjR,MAAOzB,GACPrM,GAAIqO,IAGRoQ,EAAgBK,KAEjB,CAACR,EAAQC,KACZ,EAAAvf,EAAAE,WAAU,KACJof,GAAUA,EAAOle,OAAS,EAC5Bue,EAAgB,CACd7Q,MAAOwQ,EAAO,GAAGxQ,MACjB9N,GAAI,IAEIue,GAAsBhb,MAAV+a,GAAyC,IAAlBA,EAAOle,QACpDue,EAAgB,CACd7Q,MAAOzB,GACPrM,GAAI,KAGP,CAACse,EAAQC,IACKlB,GAAoBD,GAAkB4B,QAErDhgB,EAAAgC,cAACmc,GAAO,KACNne,EAAAgC,cAAC8b,GAAAC,EAAM,KACL/d,EAAAgC,cAAA,cAAS,gTAYXhC,EAAAgC,cAAC+F,EAAA/E,EAAG,CAACd,UAAU,0BACblC,EAAAgC,cAACod,GAAS,CACRld,UAAU,yDAEVlC,EAAAgC,cAAC0c,GAAa,CACZ9Z,KAAM8a,aAAY,EAAZA,EAAc5Q,MAAK,gBACX,YAEf0Q,IAAgBA,aAAY,EAAZA,EAAcpe,QAAS,GACtCpB,EAAAgC,cAAAhC,EAAAigB,SAAA,KACG,IACDjgB,EAAAgC,cAACgd,GAAiB,CAChB7c,QAAS,KACP,GAAKud,GAAgBJ,GAAUA,EAAOle,OAAS,EAAG,CAChD,MAAMwe,EAAa,IAAIJ,GACvBI,EAAWC,OAAOH,EAAc1e,GAAI,EAAG0e,GACvC,IAAIQ,EAAYN,EAAWO,UACxB7f,GAASA,EAAKwO,QAAU4Q,EAAa5Q,OACrC,EACHoR,EAAYA,EAAW,EAAIN,EAAWxe,OAAO,EAAI8e,EACjD,MAAME,EAAaR,EAAWM,GAC9BN,EAAWC,OAAOK,EAAW,GAC7BP,EAAgBS,GAChBX,EAAgBG,MAIpB5f,EAAAgC,cAACmd,GAAY,CACXtQ,IAAI,gEACJE,IAAI,qBAGR/O,EAAAgC,cAACkd,GAAkB,CACjB/c,QAAS,KACL,GAAKud,GAAgBJ,GAAUA,EAAOle,OAAS,EAAG,CAChD,MAAMwe,EAAa,IAAIJ,GACvBI,EAAWC,OAAOH,EAAc1e,GAAI,EAAG0e,GACvC,IAAIQ,EAAYN,EAAWO,UACxB7f,GAASA,EAAKwO,QAAU4Q,EAAa5Q,OACpC,EACJoR,EAAYA,IAAcN,EAAWxe,OAAS,EAAI8e,EAClD,MAAME,EAAaR,EAAWM,GAC9BN,EAAWC,OAAOK,EAAW,GAC7BP,EAAgBS,GAChBX,EAAgBG,MAItB5f,EAAAgC,cAACmd,GAAY,CACXtQ,IAAI,gEACJE,IAAI,uBAKZ/O,EAAAgC,cAAC6c,GAAY,CAAC3c,UAAU,+DACrBod,aAAM,EAANA,EAAQpe,IAAI,CAACZ,EAAMgD,IAClBtD,EAAAgC,cAAC2c,GAAG,CACFnb,IAAKlD,EAAKwO,MACV8P,QAAQc,aAAY,EAAZA,EAAc1e,MAAOsC,EAC7BnB,QAAS,KACP,GAAIqd,EAAc,CAChB,MAAMI,EAAa,IAAIJ,GAEvBI,EAAWC,OAAOH,EAAc1e,GAAI,EAAG0e,GAEvC,MAAMW,EAAST,EAAWO,UAAWrR,GAC5BA,EAAMA,QAAUxO,EAAKwO,OAGxBsR,EAAaR,EAAWS,IAC1BX,aAAY,EAAZA,EAAc5Q,SAAUsR,EAAWtR,QAErC8Q,EAAWC,OAAOQ,EAAQ,GAC1BV,EAAgBS,GAChBX,EAAgBG,WAS9B5f,EAAAgC,cAAC8c,GAAmB,CAClBwB,GAAG,IACH3gB,MAAO,CAAE4gB,UAAW,KACpBre,UAAU,qDAETsd,aAAY,EAAZA,EAActe,IAAI,CAACZ,EAAMgD,IAC1BtD,EAAAgC,cAAA,KAAG4C,KAAOtE,EAAKwO,MAAK,gBACJ,UACd3M,QAAUK,IACNA,EAAEoY,mBAGN5a,EAAAgC,cAAC+c,GAAU,CACT7c,UAAU,OACVsB,IAAKlD,EAAKU,GACV6N,IAAKvO,EAAKwO,MACV3M,QAAS,KACP,MAAMyd,EAAa,IAAIJ,GACvBI,EAAWC,OAAOvc,EAAO,EAAGoc,GAC5BD,EAAgBG,GAChBD,EAAgBrf,YC/PzB,MAAMkgB,GAAgB7hB,EAAAC,GAAO6M,CAAC;;ySCkBrC,MAkaMgV,GAAmB/e,SAASqF,eAAe,6BAC7C0Z,IACFzZ,EAAAC,OAAgBjH,EAAAgC,cApaO,aACvB,MAAOyP,EAAc8D,IAAmB,EAAAvV,EAAAC,aACjCmc,EAAesE,IAAoB,EAAA1gB,EAAAC,UAAyB,KAC5Dsf,EAASoB,IAAc,EAAA3gB,EAAAC,WAAS,IACvC,EAAAD,EAAAE,WAAU,KAQsB0gB,QAAA,4BAC5B,MAAMhI,EAAM,IAAIC,IAAInU,OAAOC,SAASC,MAC9BkB,EAAKiT,SAASH,EAAII,SAASC,MAAM,KAAK,IACtCjV,QAAiB6B,EAAyBC,GAV7B,IAAO9E,EAWtBgD,EAAS0D,OACX6N,EAAgBvR,EAAS0D,MACrB1D,EAAS0D,KAAKkK,MAbM5Q,EAcTgD,EAAS0D,KAAKkK,IAAI5Q,GAdM4f,QAAA,4BACzC,MAAM5c,QxByCV6c,EwBzCqD7f,ExB0CeyE,OAAA,4BAEpE,aADuBV,EAAKT,IAAI,6BAA6Buc,IAE/D,IALyC,IACvCA,EwBxCQ7c,EAAS0D,KAAKC,SAChB+Y,EAAiB1c,EAAS0D,KAAKC,QAEnC,KAYEgZ,GAAW,EACb,IAGC,IACH,IAAIG,GACFrP,aAAY,EAAZA,EAAcG,IAAI/J,MAAMtH,QAAQkR,aAAY,EAAZA,EAAcG,IAAI/J,MAAMtH,KAAKa,QAAS,IAClEqQ,aAAY,EAAZA,EAAcG,IAAI/J,MAAMtH,KAAKyP,MAAM,EAAG,KAAM,MAC5CyB,aAAY,EAAZA,EAAcG,IAAI/J,MAAMtH,KAC1BwgB,GACFtP,aAAY,EAAZA,EAAcG,IAAI/J,MAAMtH,QAAQkR,aAAY,EAAZA,EAAcG,IAAIE,MAAM1Q,QAAS,IAC7DqQ,aAAY,EAAZA,EAAcG,IAAIE,MAAM9B,MAAM,EAAG,KAAM,MACvCyB,aAAY,EAAZA,EAAcG,IAAIE,MACpBkM,EAAgBvM,aAAY,EAAZA,EAAcG,IAAIoM,cACtC,IAAIgD,EAAY,IAAInI,IAAInU,OAAOC,SAASC,KAAKqU,MAAM,KAAK,IACxD,MAAMvH,EAAchN,OAAOC,SAASgN,OAAStE,GAC7C,IAAI4T,EAAiB,IAAIpI,IAAInU,OAAOC,SAASuc,SAAW,KAAOxc,OAAOC,SAASwc,QAA0B,QAAjB3F,EAAA/J,aAAY,EAAZA,EAAcG,WAAG,IAAA4J,OAAA,EAAAA,EAAEtL,QAASuB,EAAaG,IAAI1B,OAASwB,GAC1I0P,EAAWzc,SAASyc,SAEpBxE,EAAU,IAAIC,KACdC,EAAOF,EAAQG,UACnBH,EAAQI,SAASJ,EAAQK,WAAW,GACpC,IAAIC,EAAQN,EAAQK,WAGhBE,EAAkB,GAFXP,EAAQQ,iBAEyBF,EAAM,GAAG,IAAIA,IAAQ,GAAGA,OAAsBJ,EAAK,GAAG,IAAIA,IAAO,GAAGA,MAEhH,OACE9c,EAAAgC,cAAA,WACEhC,EAAAgC,cAAC8b,GAAAC,EAAM,KACL/d,EAAAgC,cAAA,aAAQ,8BAA8B8e,KAAaC,KAAa/C,KAChEhe,EAAAgC,cAAA,QAAMzB,KAAK,cAAc8gB,QACtB,0BAA0BP,KAAaC,KAAa/C,2CACzBvM,aAAY,EAAZA,EAAcI,6DACbJ,aAAY,EAAZA,EAAcM,sCAE7C/R,EAAAgC,cAAA,QAAMsf,SAAS,iBAAiBD,QAC7B,0BAA0BP,KAAaC,KAAa/C,uCAC7BvM,aAAY,EAAZA,EAAchP,iDACVgP,aAAY,EAAZA,EAAcI,6DACbJ,aAAY,EAAZA,EAAcM,sDACvBN,aAAY,EAAZA,EAAclB,kDACbkB,aAAY,EAAZA,EAAcO,8CAChBP,aAAY,EAAZA,EAAcQ,kCAEnCjS,EAAAgC,cAAA,QAAMzB,KAAK,SAAS8gB,QAAQ,4BAC5BrhB,EAAAgC,cAAA,QAAMuf,IAAI,YAAY3c,KAAM,GAAGoc,MAE/BhhB,EAAAgC,cAAA,QAAMzB,KAAK,eAAe8gB,QAAQ,YAClCrhB,EAAAgC,cAAA,QAAMsf,SAAS,gBAAgBD,QAAS,8BAA8BP,KAAaC,KAAa/C,MAChGhe,EAAAgC,cAAA,QAAMsf,SAAS,sBAAsBD,QAClC,0BAA0BP,KAAaC,KAAa/C,uCAC7BvM,aAAY,EAAZA,EAAchP,iDACVgP,aAAY,EAAZA,EAAcI,6DACbJ,aAAY,EAAZA,EAAcM,sDACvBN,aAAY,EAAZA,EAAclB,kDACbkB,aAAY,EAAZA,EAAcO,8CAChBP,aAAY,EAAZA,EAAcQ,kCAEnCjS,EAAAgC,cAAA,QAAMsf,SAAS,gBAAgBD,QAAS,GAAGJ,MAC3CjhB,EAAAgC,cAAA,QAAMsf,SAAS,oBAAoBD,QAAS,oBAAoBP,KAAaC,MAE7E/gB,EAAAgC,cAAA,QAAMsf,SAAS,WAAWD,QAAS,mDAAmDP,KAAaC,KAAa/C,MAChHhe,EAAAgC,cAAA,QAAMsf,SAAS,WAAWD,QAAS,GAAGJ,MACtCjhB,EAAAgC,cAAA,UAAQP,KAAK,uBACV,mHAGWgQ,aAAY,EAAZA,EAAczQ,+BACZ8f,oDACsBA,KAAaC,QAAgBtP,aAAY,EAAZA,EAAcI,yEACvCiP,KAAaC,QAAgBtP,aAAY,EAAZA,EAAcI,4EACxCiP,KAAaC,KAAa/C,uCAC7CvM,aAAY,EAAZA,EAAchP,kDACVgP,aAAY,EAAZA,EAAcI,6DACbJ,aAAY,EAAZA,EAAcM,sDACvBN,aAAY,EAAZA,EAAclB,kDACbkB,aAAY,EAAZA,EAAcO,8CAChBP,aAAY,EAAZA,EAAcQ,wGAGnB+O,kUAOGvP,aAAY,EAAZA,EAAclB,+FAGdkB,aAAY,EAAZA,EAAcI,wDACLsL,8FAEY2D,KAAaC,QAAgBtP,aAAY,EAAZA,EAAcI,2EACvCiP,KAAaC,QAAgBtP,aAAY,EAAZA,EAAcI,8EACxCiP,KAAaC,KAAa/C,yCAC7CvM,aAAY,EAAZA,EAAchP,oDACVgP,aAAY,EAAZA,EAAcI,+DACbJ,aAAY,EAAZA,EAAcM,wDACvBN,aAAY,EAAZA,EAAclB,oDACbkB,aAAY,EAAZA,EAAcO,gDAChBP,aAAY,EAAZA,EAAcQ,iDAClBgP,g2BA2BnBjhB,EAAAgC,cAAA,UAAQP,KAAK,uBACV,2WAQwB2f,8DACDA,+IAIPN,kEACiCA,yCACzBM,8CAAqD3P,aAAY,EAAZA,EAAcG,IAAI/J,MAAM7G,yCAC9EogB,8CAAqD3P,aAAY,EAAZA,EAAcG,IAAI/J,MAAM7G,qDAMzGhB,EAAAgC,cAAC+F,EAAA/E,EAAG,CAACd,UAAU,mCACblC,EAAAgC,cAACgG,EAAAhF,EAAG,KACFhD,EAAAgC,cAAA,KACEE,UAAU,wCACV0C,KAAK,0BAEL5E,EAAAgC,cAAA,OACE6M,IAAI,iDACJE,IAAI,cAGN,IACF/O,EAAAgC,cAAA,KAAG4C,KAAM,+BAA+BlD,SAASiD,SAASqF,UAAQ,2BAGhE,IACFhK,EAAAgC,cAAA,KACE4C,KAAM,6CAA6C6M,aAAY,EAAZA,EAAcG,IAAI/J,MAAM7G,MAE1EyQ,aAAY,EAAZA,EAAcG,IAAI/J,MAAMtH,WAEzBP,EAAAgC,cAAA,SAAIyP,aAAY,EAAZA,EAAczQ,MAGxBhB,EAAAgC,cAAC+F,EAAA/E,EAAG,CAACd,UAAU,gBACblC,EAAAgC,cAACgG,EAAAhF,EAAG,CAACwe,IAAE,GACLxhB,EAAAgC,cAAA,UACEhC,EAAAgC,cAAA,OAAKE,UAAU,oCAAkC,mCAGjDlC,EAAAgC,cAAA,OAAKE,UAAU,kEACblC,EAAAgC,cAAA,OAAKE,UAAU,QACblC,EAAAgC,cAAA,KAAGE,UAAU,kDACV4e,GAEH9gB,EAAAgC,cAAA,KAAGE,UAAU,uDACV6e,IAGL/gB,EAAAgC,cAAA,OAAKE,UAAU,kDACblC,EAAAgC,cAAA,KAAGE,UAAU,uDACV,IACAuP,aAAY,EAAZA,EAAcI,gCAEjB7R,EAAAgC,cAAA,KAAGE,UAAU,8DACV,IACAuP,aAAY,EAAZA,EAAcM,qCAIrB/R,EAAAgC,cAAA,WACEhC,EAAAgC,cAAA,OAAKE,UAAU,gEACblC,EAAAgC,cAAA,SACGgc,MAKThe,EAAAgC,cAAA,OAAKE,UAAU,wDACblC,EAAAgC,cAAA,OAAKE,UAAU,sBACblC,EAAAgC,cAAA,KAAGE,UAAU,mDAAiD,UAG9DlC,EAAAgC,cAAA,KAAGE,UAAU,mDACVoO,GAAmBmB,aAAY,EAAZA,EAAclB,UAGtCvQ,EAAAgC,cAAA,OAAKE,UAAU,WACblC,EAAAgC,cAAA,KAAGE,UAAU,8DACFuP,aAAY,EAAZA,EAAcO,oBAEzBhS,EAAAgC,cAAA,KAAGE,UAAU,mDACVsO,GACCiB,aAAY,EAAZA,EAAcO,aACdP,aAAY,EAAZA,EAAchP,SAIpBzC,EAAAgC,cAAA,OAAKE,UAAU,WACblC,EAAAgC,cAAA,KAAGE,UAAU,mDAAiD,iBAG9DlC,EAAAgC,cAAA,KAAGE,UAAU,mDACVyO,GAAyBc,aAAY,EAAZA,EAAcQ,kBAI9CjS,EAAAgC,cAAC+F,EAAA/E,EAAG,KACFhD,EAAAgC,cAACgG,EAAAhF,EAAG,KACFhD,EAAAgC,cAACwe,GAAa,CAACte,UAAU,4Ed9OpBqC,KAFjBmM,EciP4Ce,aAAY,EAAZA,EAAchP,Od7OjD,GADYgG,KAAK8F,MAAMmC,EAAW,eAGpC,iBc+OD1Q,EAAAgC,cAACgG,EAAAhF,EAAG,CAACd,UAAU,+CACblC,EAAAgC,cAAA,OAAKE,UAAU,oEACblC,EAAAgC,cAAA,OAAKE,UAAU,8CACblC,EAAAgC,cAAA,OACEE,UAAU,SACV2M,IAAK,4CACH4C,aAAY,EAAZA,EAAcU,gBAAiB,SAAW,iBAE5CpD,IAAI,SAEN/O,EAAAgC,cAAA,KACEE,UAAW,kDACTuP,aAAY,EAAZA,EAAcU,gBAAiB,mBAAqB,KACpD,UAKNnS,EAAAgC,cAAA,OAAKE,UAAU,8CACblC,EAAAgC,cAAA,OACEE,UAAU,SACV2M,IAAK,kDACH4C,aAAY,EAAZA,EAAcW,oBAAqB,SAAW,iBAEhDrD,IAAI,eAEN/O,EAAAgC,cAAA,KACEE,UAAW,kDACTuP,aAAY,EAAZA,EAAcW,oBAAqB,mBAAqB,KACxD,kBAKNpS,EAAAgC,cAAA,OAAKE,UAAU,8CACblC,EAAAgC,cAAA,OACEE,UAAU,SACV2M,IAAK,+CACH4C,aAAY,EAAZA,EAAcY,qBAAsB,SAAW,iBAEjDtD,IAAI,YAEN/O,EAAAgC,cAAA,KACEE,UAAW,kDACTuP,aAAY,EAAZA,EAAcY,qBAAsB,mBAAqB,KACzD,eAKNrS,EAAAgC,cAAA,OAAKE,UAAU,8CACblC,EAAAgC,cAAA,OACEE,UAAU,SACV2M,IAAK,gDACH4C,aAAY,EAAZA,EAAca,kBAAmB,SAAW,iBAE9CvD,IAAI,aAEN/O,EAAAgC,cAAA,KACEE,UAAW,kDACTuP,aAAY,EAAZA,EAAca,kBAAmB,mBAAqB,KACtD,YAMRtS,EAAAgC,cAAA,OAAKE,UAAU,4GACblC,EAAAgC,cAAA,KACE4C,KAAM,+BAA+B6M,aAAY,EAAZA,EAAczQ,aAAaU,SAASiD,SAASqF,SAClF9H,UAAU,mBAAiB,uBAOnClC,EAAAgC,cAAC+F,EAAA/E,EAAG,CAACd,UAAU,QACblC,EAAAgC,cAACgG,EAAAhF,EAAG,KACFhD,EAAAgC,cAACqd,GAAmB,CAClBC,OAAQ7N,aAAY,EAAZA,EAAcG,IAAI0N,OAC1BC,QAASA,MAIfvf,EAAAgC,cAAC+F,EAAA/E,EAAG,CAACd,UAAU,yCACblC,EAAAgC,cAACgG,EAAAhF,EAAG,KACFhD,EAAAgC,cAAA,MAAIE,UAAU,gDAA8C,QAC5DlC,EAAAgC,cAAA,OAAKE,UAAU,iDACVuf,wBAAyB,CAAEC,OAAsC,QAA9BzD,EAAAxM,aAAY,EAAZA,EAAckQ,wBAAgB,IAAA1D,EAAAA,EAAI,QAI9Eje,EAAAgC,cAAC+F,EAAA/E,EAAG,KACFhD,EAAAgC,cAACgG,EAAAhF,EAAG,KACFhD,EAAAgC,cAAA,OAAKE,UAAU,qFACblC,EAAAgC,cAAA,KACE4C,KAAM,+BAA+B6M,aAAY,EAAZA,EAAczQ,aAAaU,SAASiD,SAASqF,SAClF9H,UAAU,mBAAiB,uBAOnClC,EAAAgC,cAAC+F,EAAA/E,EAAG,CAACd,UAAU,wCACblC,EAAAgC,cAACgG,EAAAhF,EAAG,KACFhD,EAAAgC,cAAA,KAAGE,UAAU,eACVuP,aAAY,EAAZA,EAAcmQ,mCAKrB5hB,EAAAgC,cAAC+F,EAAA/E,EAAG,CAACd,UAAU,6CACblC,EAAAgC,cAACgG,EAAAhF,EAAG,KACFhD,EAAAgC,cAAA,UACEhC,EAAAgC,cAAA,wDACAhC,EAAAgC,cAAA,uLAGAhC,EAAAgC,cAAA,qTAIAhC,EAAAgC,cAAA,oKAEAhC,EAAAgC,cAAA,qVAIAhC,EAAAgC,cAAA,wIAKLoa,IAAiBA,aAAa,EAAbA,EAAehb,QAAS,GACxCpB,EAAAgC,cAAC+F,EAAA/E,EAAG,CAACd,UAAU,gBACblC,EAAAgC,cAACgG,EAAAhF,EAAG,KACFhD,EAAAgC,cAACma,GAAmB,CAClBE,qBAAsB5K,EACtB2K,cAAeA,EACfE,wBAAyB/G,OdnYH,IAClC7E,Gc4YiC,MAAK+P,mDCpajC,MAAMoB,IAAe,EAAAljB,EAAAC,IAAOiI,EAAA7D,EAAoB;sBAChClE,GACnBA,EAAMC,KAAO,UAAY;;EA8E7B,IAAA+iB,GA1EuBhjB,IACrB,MAAMijB,YAAEA,EAAWC,kBAAEA,EAAiBC,qBAAGA,EAAoBC,mBAAEA,EAAkBC,sBAAEA,GAA0BrjB,GACtGC,EAAM2B,IAAW,EAAAV,EAAAC,WAAS,IAWjC,EAAAD,EAAAE,WAAU,KAKRiiB,EAAsBpjB,IACrB,CAACA,IAEJ,MAAMqjB,EACJpiB,EAAAgC,cAACqgB,GAAArf,EAAO,CAAChC,GAAG,gBAAgBrB,MAAO,CAAE2iB,SAAU,SAC7CtiB,EAAAgC,cAACqgB,GAAArf,EAAQuf,OAAM,CAAChH,GAAG,sBAEjBvb,EAAAgC,cAAA,UACEhB,GAAG,iBACHS,KAAK,SACLS,UAAU,QACVC,QAAS,KACPT,SAAS8gB,KAAKC,UACf,MAELziB,EAAAgC,cAACqgB,GAAArf,EAAQ0f,KAAI,KACX1iB,EAAAgC,cAAA,OACEE,UAAU,0CACVvC,MAAO,CAAEgjB,IAAK,QAEbvgB,OAAOwgB,OAAOb,GAAa7gB,IAAK0Q,cAC/B,OACE5R,EAAAgC,cAAA,OAAKE,UAAU,wCAAwCsB,IAAKoO,EAAIiR,WAC9D7iB,EAAAgC,cAAA,OACErC,MAAO,CAAE2I,MAAO,SAChBuG,IACEmT,EAAkBlhB,SAAS8Q,GACS,QAAhC4J,EAAArH,GAAkBvC,EAAIiR,kBAAU,IAAArH,OAAA,EAAAA,EAAE1M,MACA,QAAlCmP,EAAA1K,GAAoB3B,EAAIiR,kBAAU,IAAA5E,OAAA,EAAAA,EAAEnP,MAE1C3M,QAAS,IA7CH,CAACyP,IAChBoQ,EAAkBlhB,SAAS8Q,GAG9BqQ,EACED,EAAkB3hB,OAAQyiB,GAAgBA,IAAgBlR,IAH5DqQ,EAAqB,IAAID,EAAmBpQ,KA2CjBmR,CAAcnR,KAE/B5R,EAAAgC,cAAA,aAAqC,QAAhCghB,EAAA7O,GAAkBvC,EAAIiR,kBAAU,IAAAG,OAAA,IAAE9f,aASrD,OACElD,EAAAgC,cAAAhC,EAAAigB,SAAA,KACEjgB,EAAAgC,cAACihB,GAAAjgB,EAAc,CAACkgB,QAAQ,QAAQC,WAAS,EAACC,SAAU,IAAM1iB,GAAS3B,GAAOskB,UAAU,SAASC,QAASlB,GACpGpiB,EAAAgC,cAAC6f,GAAY,CACXlZ,QAAQ,YACR5J,KAAMA,EACNiC,GAAG,gBACHrB,MAAO,CAAE2I,MAAO,UAAS,cCpFnC,MAAMgB,GAAQ3K,EAAAC,GAAO6M,CAAC;;;;EActB,IAAA8X,GATiBzkB,IACf,MAAMoE,MAAEA,EAAKsgB,SAAEA,EAAQ7jB,MAAEA,EAAM,IAAMb,EAErC,OACEkB,EAAAgC,cAAA,OAAKrC,MAAKyC,OAAAC,OAAA,CAAGC,SAAS,YAAc3C,IAClCK,EAAAgC,cAACsH,GAAK,KAAEpG,OAAgBsgB,0BCP9B,MAAMC,IAAa,EAAA9kB,EAAAC,IAAO8kB,GAAA1gB,EAAK;;;;;;;EAQzB2gB,IAAgB,EAAAhlB,EAAAC,IAAOglB,GAAA5gB,EAAQ;;;;;EAM/B6gB,GAAWllB,EAAAC,GAAO6M,CAKtB;eACc3M,GAAUA,EAAMglB;;;;;WAKpBhlB,GAAWA,EAAMilB,OAAS,UAAY;gBACjCjlB,GAAUA,EAAM8c,WAAa;qBACxB9c,GAClBA,EAAMklB,UAAY,wBAA0B;;;;;EA6EhD,IAAAC,GAtEmBnlB,IACjB,MAAM0d,MAAEA,GAAU1d,EACZ4S,EAAchN,OAAOC,SAASgN,OAAStE,GAC7C,OACErN,EAAAgC,cAAA,KAAG4C,KAAM,+BAA+B4X,EAAMxb,MAAMU,SAASiD,SAASqF,UACpEhK,EAAAgC,cAACyhB,GAAU,CAACvhB,UAAU,QACpBlC,EAAAgC,cAAC2hB,GAAa,CACZ9U,IAAK2N,EAAM5K,IAAI1B,OAASsM,EAAM5K,IAAI1B,OAASwB,EAC3C3C,IAAI,6BAEN/O,EAAAgC,cAAC0hB,GAAA1gB,EAAK0f,KAAI,KACR1iB,EAAAgC,cAAC+F,EAAA/E,EAAG,KACFhD,EAAAgC,cAACgG,EAAAhF,EAAG,CAACkhB,GAAI,EAAGhiB,UAAU,QACpBlC,EAAAgC,cAAC6hB,GAAQ,CAACC,SAAU,IAAKtH,EAAM5K,IAAI/J,MAAMtH,OAE3CP,EAAAgC,cAACgG,EAAAhF,EAAG,CAACkhB,GAAI,EAAGhiB,UAAU,QACpBlC,EAAAgC,cAAA,cACEhC,EAAAgC,cAAC6hB,GAAQ,CAACC,SAAU,GAAIC,QAAM,EAACnI,UAAU,SACtCY,EAAM3K,6BAKf7R,EAAAgC,cAAC+F,EAAA/E,EAAG,KACFhD,EAAAgC,cAACgG,EAAAhF,EAAG,CAACkhB,GAAI,EAAGhiB,UAAU,QACpBlC,EAAAgC,cAAC6hB,GAAQ,CAACC,SAAU,IAAKtH,EAAM5K,IAAIE,QAErC9R,EAAAgC,cAACgG,EAAAhF,EAAG,CAACkhB,GAAI,GACPlkB,EAAAgC,cAAC6hB,GAAQ,CAACC,SAAU,GAAIC,QAAM,EAACnI,UAAU,SAAO,WAKpD5b,EAAAgC,cAAC+F,EAAA/E,EAAG,KACFhD,EAAAgC,cAACgG,EAAAhF,EAAG,CAACkhB,GAAI,IACPlkB,EAAAgC,cAAC6hB,GAAQ,CAACC,SAAU,IAAKtH,EAAM5K,IAAIoM,iBAGvChe,EAAAgC,cAAA,WACAhC,EAAAgC,cAAC+F,EAAA/E,EAAG,KACFhD,EAAAgC,cAACgG,EAAAhF,EAAG,CAACkhB,GAAI,GACPlkB,EAAAgC,cAAC6hB,GAAQ,CAACC,SAAU,GAAIlI,UAAU,UAAQ,UAG1C5b,EAAAgC,cAAC6hB,GAAQ,CAACC,SAAU,GAAIlI,UAAU,SAASoI,WAAS,GACjD1T,GAAmBkM,EAAMjM,UAG9BvQ,EAAAgC,cAACgG,EAAAhF,EAAG,CAACkhB,GAAI,GACPlkB,EAAAgC,cAAC6hB,GAAQ,CAACC,SAAU,GAAIlI,UAAU,qBACvBY,EAAMxK,oBAEjBhS,EAAAgC,cAAC6hB,GAAQ,CAACC,SAAU,GAAIlI,UAAU,SAASoI,WAAS,GACjDxT,GAAwBgM,EAAMxK,aAAcwK,EAAM/Z,SAGvDzC,EAAAgC,cAACgG,EAAAhF,EAAG,CAACkhB,GAAI,GACPlkB,EAAAgC,cAAC6hB,GAAQ,CAACC,SAAU,GAAIlI,UAAU,UAAQ,iBAG1C5b,EAAAgC,cAAC6hB,GAAQ,CAACC,SAAU,GAAIlI,UAAU,SAASoI,WAAS,GACjDrT,GAAyB6L,EAAMvK,sBClGhD,MAAMkS,IAAa,EAAAxlB,EAAAC,IAAO8kB,GAAA1gB,EAAK;;;;;;;EAQzBohB,IAAgB,EAAAzlB,EAAAC,IAAOglB,GAAA5gB,EAAQ;;;;;EAM/BqhB,GAAW1lB,EAAAC,GAAO6M,CAKtB;eACc3M,GAAUA,EAAMglB;;;;;WAKpBhlB,GAAWA,EAAMilB,OAAS,UAAY;gBACjCjlB,GAAUA,EAAM8c,WAAa;qBACxB9c,GAClBA,EAAMklB,UAAY,wBAA0B;;;;;EAsDhD,IAAAM,GA/C8BxlB,IAC5B,MAAM0d,MAAEA,GAAU1d,EACZ4S,EAAchN,OAAOC,SAASgN,OAAStE,GACvCkX,EAA0C,IAA3B/H,EAAMgI,iBAAyB,GAAGhI,EAAMiI,wBAA0B,GAAGjI,EAAMiI,eAAejI,EAAMkI,wBACrH,OACE1kB,EAAAgC,cAAA,KAAG4C,KAAM,+BAA+B4X,EAAMmI,YAAYjjB,SAASiD,SAASqF,UAC1EhK,EAAAgC,cAACmiB,GAAU,CAACjiB,UAAU,QACpBlC,EAAAgC,cAACoiB,GAAa,CACZvV,IAAK2N,EAAMtM,OAASsM,EAAMtM,OAASwB,EACnC3C,IAAI,6BAEN/O,EAAAgC,cAAC0hB,GAAA1gB,EAAK0f,KAAI,KACR1iB,EAAAgC,cAAC+F,EAAA/E,EAAG,KACFhD,EAAAgC,cAACgG,EAAAhF,EAAG,KACFhD,EAAAgC,cAACqiB,GAAQ,CAACP,SAAU,IAAKtH,EAAM3U,MAAMtH,QAGzCP,EAAAgC,cAAC+F,EAAA/E,EAAG,KACFhD,EAAAgC,cAACgG,EAAAhF,EAAG,KACFhD,EAAAgC,cAACqiB,GAAQ,CAACP,SAAU,IAAKtH,EAAM1K,SAGnC9R,EAAAgC,cAAC+F,EAAA/E,EAAG,KACFhD,EAAAgC,cAACgG,EAAAhF,EAAG,CAACkhB,GAAI,IACPlkB,EAAAgC,cAACqiB,GAAQ,CAACP,SAAU,IAAKtH,EAAMwB,iBAGnChe,EAAAgC,cAAA,WACAhC,EAAAgC,cAAC+F,EAAA/E,EAAG,KACFhD,EAAAgC,cAACgG,EAAAhF,EAAG,KACFhD,EAAAgC,cAACqiB,GAAQ,CAACP,SAAU,GAAIC,QAAM,EAACnI,UAAU,UACtC2I,KAIPvkB,EAAAgC,cAAC+F,EAAA/E,EAAG,KACFhD,EAAAgC,cAACgG,EAAAhF,EAAG,KACFhD,EAAAgC,cAACqiB,GAAQ,CAACP,SAAU,GAAIlI,UAAU,SAASoI,WAAS,QlBX5Czf,KAFpBqgB,EkBcuCpI,EAAMgI,kBlBXvCI,GAAe,EACV,GAAGA,UACc,GAAfA,EACF,GAAGA,WACDA,GAAe,EACjB,GAAGA,WAEH,GAAGA,UAGP,SAd8B,IACrCA,GmBjEK,MAAMC,IAAsB,EAAAlmB,EAAAC,IAAOmE,EAAAC,EAAKC,MAAMqG,MAAM;;;;;;;;;;EAW9Cwb,IAAsB,EAAAnmB,EAAAC,IAAOmE,EAAAC,EAAKC,MAAMmG,MAAM;;;;;;ySCiD3D,MAAM2b,GAAYpmB,EAAAC,GAAOC,GAAa;IACjCC,IACD,GAAIA,EAAMkmB,aAAelmB,EAAMyB,KAC7B,MAAO;EAWP0kB,IAAQ,EAAAve,EAAAC,IAAwBD,EAAA9H,GAAA6H,OAChCye,GAAgBvmB,EAAAC,GAAO6M,CAAC;;;;EAKxB0Z,IAAe,EAAAxmB,EAAAC,IAAOiI,EAAA7D,EAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkxB7BoiB,GAAwB1jB,SAASqF,eACrC,kCAEEqe,IACFpe,EAAAC,OACEjH,EAAAgC,cAACmT,GAAAC,GAAuB,CACtBC,aAhyBa,2CAiyBbC,SAAS,MAETtV,EAAAgC,cA1vBqB,aACzB,MAAM2D,EAAS,IAAI0f,gBAAgB3gB,OAAOC,SAASqF,QAC7Csb,EAA+B,CACnC,CAAEtkB,GAAI,EAAGT,KAAM,eAAgBkC,MAAO,mBACtC,CAAEzB,GAAI,EAAGT,KAAM,gBAAiBkC,MAAO,oBACvC,CAAEzB,GAAI,EAAGT,KAAM,oBAAqBkC,MAAO,gBAEvC8iB,EAAkB5f,EAAOrB,IAAI,wBAA0B,SACvDkhB,EAAkB7f,EAAOrB,IAAI,wBAA0B,IACvDmhB,EAA6B9f,EAAOrB,IAAI,eAAiB,KACzDohB,EAA6B/f,EAAOrB,IAAI,eAAiB,KACzDqhB,GAEkB,QADtBnK,EAAA7V,EACGrB,IAAI,uBAAe,IAAAkX,OAAA,EAAAA,EAClBvC,MAAM,KACP5Y,OAAQC,GAAkB,KAATA,GACjBY,IAAKZ,GAASslB,OAAO7M,SAASzY,MAAU,GACvCulB,GAA4C,QAAtB5H,EAAAtY,EAAOrB,IAAI,mBAAW,IAAA2Z,OAAA,EAAAA,EAAEhF,MAAM,OAAQ,GAC5D6M,EAAmBngB,EAAOrB,IAAI,qBAAuB,IACrDyhB,EAAmBpgB,EAAOrB,IAAI,qBAAuB,KACrD0hB,EAA0BrgB,EAAOrB,IAAI,sBAAwB,QAC7D2hB,EAA0BtgB,EAAOrB,IAAI,sBAAwB,QAC7D4hB,EAAiBvgB,EAAOrB,IAAI,aAAe,eAE1C6hB,EAAgBC,IAAqB,EAAApmB,EAAAC,WAAS,IAC9ComB,EAAaC,IAAkB,EAAAtmB,EAAAC,WAAS,IAExCsf,EAASoB,IAAc,EAAA3gB,EAAAC,WAAS,IAChCiH,EAAQC,IAAa,EAAAnH,EAAAC,UAAkB,KACvCmH,EAAgBC,IAAqB,EAAArH,EAAAC,UAAkB,KACvDuH,EAAUC,IAAe,EAAAzH,EAAAC,UAC9B2lB,OAAO7M,SAASwM,KAEXje,EAAUC,IAAe,EAAAvH,EAAAC,UAC9B2lB,OAAO7M,SAASyM,KAEXe,EAAqBC,IAA0B,EAAAxmB,EAAAC,UACpD2lB,OAAO7M,SAAS0M,KAEXgB,EAAqBC,IAA0B,EAAA1mB,EAAAC,UACpD2lB,OAAO7M,SAAS2M,KAEXiB,EAAgBC,IAAqB,EAAA5mB,EAAAC,UAC1C2lB,OAAO7M,SAAS+M,KAEXe,EAAgBC,IAAqB,EAAA9mB,EAAAC,UAC1C2lB,OAAO7M,SAASgN,KAEXgB,GAAkBC,KAAuB,EAAAhnB,EAAAC,UAC9C2lB,OAAO7M,SAASiN,KAEXiB,GAAkBC,KAAuB,EAAAlnB,EAAAC,UAC9C2lB,OAAO7M,SAASkN,KAEXlE,GAAaoF,KAAkB,EAAAnnB,EAAAC,UAAqB,KACpD+hB,GAAmBC,KAAwB,EAAAjiB,EAAAC,UAAqB,KAEhEmnB,GAAQC,KAAa,EAAArnB,EAAAC,UAAyB,KAC9CqnB,GAAeC,KAAoB,EAAAvnB,EAAAC,WAAkB,IACrDunB,GAAeC,KAAoB,EAAAznB,EAAAC,UAAiB,IAEpDynB,GAAgBC,KAAqB,EAAA3nB,EAAAC,WAAkB,IACvD2nB,GAAkBC,KAAuB,EAAA7nB,EAAAC,UAAmC,KAC5E6nB,GAA6BC,KAAkC,EAAA/nB,EAAAC,WAAkB,IACjF+nB,GAAaC,KAAkB,EAAAjoB,EAAAC,UAAiB,IAEhDioB,GAAeC,KAAoB,EAAAnoB,EAAAC,UACxCqlB,EAAe8C,KAAM9nB,GAASA,EAAKmC,QAAUyjB,KACxCmC,GAAMC,KAAW,EAAAtoB,EAAAC,UAAiB,IAClCiiB,GAAoBC,KAAyB,EAAAniB,EAAAC,WAAkB,IA+DtE,EAAAD,EAAAE,WAAU,KACJqf,IACF+I,GAAQ,GAnDyBC,QAAA,4BACnC,MAAMrhB,EAASmf,EAAcjf,EAAelG,IAAKZ,GAASA,EAAKU,IAAIG,KAAK,KACtEwkB,EAAUzkB,IAAKZ,GAASA,GAAMa,KAAK,KAE/BqnB,EAAQrC,EAAiBnE,GAAkB9gB,IAAKZ,GAASA,EAAKuiB,WAAW1hB,KAAK,KAClF0kB,EAAoB1kB,KAAK,KAErB2X,EAAkB,CACtB2P,oBAAqBjhB,EACrBkhB,oBAAqBphB,EACrBqhB,WAAYlC,EACZmC,WAAYrC,EACZsC,iBAAkBhC,EAClBiC,iBAAkBnC,EAClBoC,kBAAmBhC,GACnBiC,kBAAmB/B,GACnBgC,SAAUT,EACVU,aAAchiB,EACdmhB,QACAjP,SAAU8O,GAAczlB,OAGpB0mB,EAA0BC,aAAaC,QAAQ,kBAC/CF,EACmC,QAAvC/O,KAAKkP,MAAMH,GAAqCxB,IAAkB,GAAQA,IAAkB,GAG5FjjB,OAAO0kB,aAAaG,QAAQ,iBAAkBnP,KAAKC,UAAU,UAG/D,MAAMrW,QAAiB0B,EAAmBoT,GAC1CyO,KAAiBvjB,EAAS0D,KAAK8hB,MAC/B/B,GAAiBzjB,EAAS0D,KAAK+hB,OAC3BzlB,EAAS0D,KAAKC,SAChB0f,GAAUrjB,EAAS0D,KAAKC,SAG1B,MAAM+hB,QAAiC9jB,EAA6BkT,GACpEiP,KAA+B2B,EAAyBhiB,KAAK8hB,MAC7DvB,GAAeyB,EAAyBhiB,KAAK+hB,OACzCC,EAAyBhiB,KAAKC,SAChCkgB,GAAoB6B,EAAyBhiB,KAAKC,SAtD9B,CAACgiB,IACvB,IAAIC,EAAe,IAAIvE,gBAAgB3gB,OAAOC,SAASqF,QACvD,IAAK,IAAKxG,EAAKf,KAAUL,OAAOynB,QAAQF,GACtCC,EAAaE,IAAItmB,EAAKf,EAAMsnB,YAE9B,IAAI7f,EACFxF,OAAOC,SAASgN,OAChBjN,OAAOC,SAASqU,SAChB,IACA4Q,EAAaG,WACfrlB,OAAO0F,QAAQC,UAAU,CAAEC,KAAMJ,GAAU,GAAIA,IA+C/C8f,CAAgBlR,GAChB6H,GAAW,EACb,KAQG,CAACpB,KAGJ,EAAAvf,EAAAE,WAAU,MACmB,IAAvBgiB,KAIJvB,GAAW,GACX2H,GAAQ,KACP,CAACJ,GACF1gB,EACAF,EACAmf,EACAF,EACAM,EACAF,EACAI,GACAE,GACA/E,GACA9a,EACAsgB,MAIF,EAAA1nB,EAAAE,WAAU,KACRwE,OAAO0kB,aAAaG,QAAQ,iBAAkBnP,KAAKC,UAAUqN,GAAiB,OAAS,WACtF,CAACA,MAEJ,EAAA1nB,EAAAE,WAAU,KA6BRygB,GAAW,GA5BqB4H,QAAA,4BAC9B,MAAMvkB,QAAiBwB,IACvB,GAAIxB,EAAS0D,KAAKC,QAAS,CACzB,IAAIC,EAAqB5D,EAAS0D,KAAKC,QACpCzG,IAAK2G,GACJzF,OAAAC,OAAAD,OAAAC,OAAA,GACKwF,GAAK,CACRtE,YAAa,GAAGsE,EAAMtH,QAAQsH,EAAMC,SAAW,QAGlDzH,OAAQwH,GAAUA,EAAMC,QAAU,GACrCX,EAAUS,GACVP,EACEO,EAAmBvH,OAAQC,GAASqlB,aAAS,EAATA,EAAW7kB,SAASR,EAAKU,MAE/DslB,GAAe,GAEnB,GACmCiC,QAAA,4BACjC,MAAMvkB,Q9B1NPyB,OAAA,4BAEH,aADuBV,EAAKT,IAAI,iCAElC,G8BwNUN,EAAS0D,OACXyf,GAAenjB,EAAS0D,MACxBua,GACEje,EAAS0D,KAAKrH,OAAQmiB,GAASqD,aAAmB,EAAnBA,EAAqB/kB,SAAS0hB,EAAKK,aAEpEuD,GAAkB,GAEtB,IAIC,KAEH,EAAApmB,EAAAE,WAAU,KAqDK,IAATmoB,IApD0BE,QAAA,4BAC5B,MAAMrhB,EAASE,EAAelG,IAAKZ,GAASA,EAAKU,IAAIG,KAAK,KACpDqnB,EAAQxG,GAAkB9gB,IAAKZ,GAASA,EAAKuiB,WAAW1hB,KAAK,KAG7D6C,QAAiB0B,EAAmB,CACxC+iB,oBAAqBjhB,EACrBkhB,oBAAqBphB,EACrBqhB,WAAYlC,EACZmC,WAAYrC,EACZsC,iBAAkBhC,EAClBiC,iBAAkBnC,EAClBoC,kBAAmBhC,GACnBiC,kBAAmB/B,GACnBgC,SAAUT,EACVU,aAAchiB,EACdmhB,QACAjP,SAAU8O,GAAczlB,QAW1B,GATA8kB,KAAiBvjB,EAAS0D,KAAK8hB,MAC/B/B,GAAiBzjB,EAAS0D,KAAK+hB,OAE3BzlB,EAAS0D,KAAKC,SAChB0f,GAAU,IAAID,MAAWpjB,EAAS0D,KAAKC,UAKrCmgB,GAA6B,CAC/B,MAAM4B,QAAiC9jB,EAA6B,CAClE6iB,oBAAqBjhB,EACrBkhB,oBAAqBphB,EACrBqhB,WAAYlC,EACZmC,WAAYrC,EACZsC,iBAAkBhC,EAClBiC,iBAAkBnC,EAClBoC,kBAAmBhC,GACnBiC,kBAAmB/B,GACnBgC,SAAUT,EACVU,aAAchiB,EACdmhB,QACAjP,SAAU8O,GAAczlB,QAE1BslB,KAA+B2B,EAAyBhiB,KAAK8hB,MAC7DvB,GAAeyB,EAAyBhiB,KAAK+hB,OAEzCC,EAAyBhiB,KAAKC,SAChCkgB,GAAoB,IAAID,MAAqB8B,EAAyBhiB,KAAKC,UAIjF,IAIC,CAAC0gB,KAEJ,MAAM4B,GAAa7C,GAAOlmB,IAAKZ,GAASN,EAAAgC,cAACiiB,GAAS,CAACzH,MAAOlc,EAAMkD,IAAKlD,EAAKU,MACpEkpB,GAAwBtC,GAAiB1mB,IAAKZ,GAASN,EAAAgC,cAACsiB,GAAoB,CAAC9H,MAAOlc,EAAMkD,IAAKlD,EAAKU,MAEpGmpB,GAAe,CACnBC,UAAW,MACXC,QAAS,OACTC,eAAgB,SAChB5O,UAAW,OACX6O,SAAU,SAENC,GAAgB,CACpBjK,UAAW,OACXkK,UAAW,OAGPC,GAAWrM,GAAoBD,GAAkBuM,QAChDC,GAAalqB,KAAW,EAAAV,EAAAC,WAAS,GAExC,IAAI4qB,GAAgB,IAAIhS,IAAInU,OAAOC,SAASC,KAAKqU,MAAM,KAAK,IAE5D,OACEjZ,EAAAgC,cAAAhC,EAAAigB,SAAA,KACEjgB,EAAAgC,cAAC8b,GAAAC,EAAM,KACL/d,EAAAgC,cAAA,aAAQ,uDACRhC,EAAAgC,cAAA,QAAMzB,KAAK,cAAc8gB,QACtB,oEAEHrhB,EAAAgC,cAAA,QAAMsf,SAAS,iBAAiBD,QAC7B,oEAEHrhB,EAAAgC,cAAA,QAAMuf,IAAI,YAAY3c,KAAM,GAAGimB,QAEjC7qB,EAAAgC,cAAA,OAAKE,UAAU,aACblC,EAAAgC,cAAA,OAAKE,UAAU,8BACblC,EAAAgC,cAAA,OAAKE,UAAU,8EACblC,EAAAgC,cAAA,OAAKE,UAAU,sBACZwoB,GACC1qB,EAAAgC,cAAAhC,EAAAigB,SAAA,KACEjgB,EAAAgC,cAACmjB,GAAY,CACXhjB,QAAS,IAAMzB,IAASkqB,IAAY,gBACtB,kBAAiB,gBAChBA,IAEf5qB,EAAAgC,cAAA,OAAK6M,IAAI,mDAAmDE,IAAI,qBAGlE/O,EAAAgC,cAAC8oB,GAAA9nB,EAAQ,CAAC+nB,GAAIH,IACZ5qB,EAAAgC,cAAA,OAAKhB,GAAG,mBACNhB,EAAAgC,cAAA,OACEE,UAAU,oFACVvC,MAAO,CAAEqrB,OAAQ,SAEjBhrB,EAAAgC,cAACuhB,GAAO,CAACrgB,MAAM,QAAQvD,MAAOwqB,IAC5BnqB,EAAAgC,cAAC1C,EAAc,CACbK,MAAO6qB,GACPjrB,QAAS2H,EACT1H,SAAU4H,EACV3H,YAAa4H,EACb3H,YAAa,WAGjBM,EAAAgC,cAACuhB,GAAO,CAACrgB,MAAM,aAAavD,MAAOwqB,IACjCnqB,EAAAgC,cAACijB,GAAK,CACJhd,MAAI,EACJ/F,UAAU,OACVgG,KAAM,KACNC,aAAeC,GAAQ,IAAU,MAANA,EAAc,KAAKC,QAAQ,KACtDE,MAAOxC,EACPyC,aAAc,C7B7WD,I6B8WXlB,EACI,GACCA,EAAW,KAAO,MACvBE,IAAahB,EACT,KACCgB,EAAW,KAAO,OAEzByjB,cAAgB7iB,IACdb,EACa,IAAXa,EAAI,G7BvXK,E6ByXLK,KAAKC,MAAe,MAATN,EAAI,IAAc,KAEnCX,EACa,MAAXW,EAAI,GACA5B,EACAiC,KAAKC,MAAe,MAATN,EAAI,IAAc,MAGrC7B,WAAYA,EACZF,YAAaA,EACbF,eAAgBA,KAGpBnG,EAAAgC,cAACuhB,GAAO,CAACrgB,MAAM,kBAAkBvD,MAAOwqB,IACtCnqB,EAAAgC,cAACijB,GAAK,CACJhd,MAAI,EACJ/F,UAAU,OACVgG,KAAM,KACNK,MAAOvC,EACPmC,aAAeC,GACb,GAAGK,KAAKC,MAAMN,GAAO,EAAI,GAAK,IAAIC,QAAQ,KAE5CG,aAAc,CACkB,EAAI,GAAjC+d,EAAsB,IACO,EAAI,GAAjCE,EAAsB,KAEzBwE,cAAgB7iB,IACdoe,EAAuB/d,KAAKC,MAAMN,EAAI,IAAM,EAAI,GAAK,KACrDse,EAAuBje,KAAKC,MAAMN,EAAI,IAAM,EAAI,GAAK,MAEvD7B,WAAYA,EACZF,YAAaA,EACbF,eAAgBA,KAGpBnG,EAAAgC,cAACuhB,GAAO,CAACrgB,MAAM,kBAAkBvD,MAAOwqB,IACtCnqB,EAAAgC,cAACijB,GAAK,CACJhd,MAAI,EACJ/F,UAAU,OACVgG,KAAM,KACNK,MAAOrC,EACPiC,aAAeC,GACb,IAAqB,IAAjBK,KAAK4F,KAAKjG,GAAa,KAAOC,QAAQ,KAE5CG,aAAc,EACXue,GAAmB,KAAS,KAC5BE,GAAmB,KAAS,KAE/BgE,cAAgB7iB,IACd4e,GAA4C,IAAxBve,KAAK4F,KAAc,EAATjG,EAAI,IAAgB,KAClD8e,GAA4C,IAAxBze,KAAK4F,KAAc,EAATjG,EAAI,IAAgB,MAEpD7B,WAAYA,EACZF,YAAaA,EACbF,eAAgBA,KAGpBnG,EAAAgC,cAACuhB,GAAO,CAACrgB,MAAM,eAAevD,MAAOwqB,IACnCnqB,EAAAgC,cAACijB,GAAK,CACJhd,MAAI,EACJ/F,UAAU,OACVgG,KAAM,KACNC,aAAeC,GACb,IAAIK,KAAKC,MAAMN,GAAO,MAAMC,QAAQ,KAEtCE,MAAOtC,EACPuC,aAAc,CACK,KAAjBme,EACiB,KAAjBE,GAEFoE,cAAgB7iB,IACdwe,EAAkBne,KAAKC,MAAMN,EAAI,GAAK,OACtC0e,EAAkBre,KAAKC,MAAMN,EAAI,GAAK,QAExC7B,WAAYA,EACZF,YAAaA,EACbF,eAAgBA,KAGpBnG,EAAAgC,cAACuhB,GAAO,CAACrgB,MAAM,eAAevD,MAAOwqB,IACnCnqB,EAAAgC,cAAC8f,GAAa,CACZC,YAAaA,GACbC,kBAAmBA,GACnBC,qBAAsBA,GACtBC,mBAAoBA,GACpBC,sBAAuBA,MAG3BniB,EAAAgC,cAACe,EAAAC,EAAKC,MAAK,CAACf,UAAU,OAAO3B,KAAK,OAAO2C,MAAM,yDAC7ClD,EAAAgC,cAAC8iB,GAAmB,CAClB1hB,QAASskB,GACTvlB,QAAS,IAAMwlB,IAAmBD,MAEpC1nB,EAAAgC,cAAC6iB,GAAmB,CAClB3iB,UAAU,OACVC,QAAS,IAAMwlB,IAAmBD,KAAe,8DAS7D1nB,EAAAgC,cAAA,OACEE,UAAU,oFACVvC,MAAO,CAAEqrB,OAAQ,SAEjBhrB,EAAAgC,cAACuhB,GAAO,CAACrgB,MAAM,QAAQvD,MAAOwqB,IAC5BnqB,EAAAgC,cAAC1C,EAAc,CACbK,MAAO6qB,GACPjrB,QAAS2H,EACT1H,SAAU4H,EACV3H,YAAa4H,EACb3H,YAAa,WAGjBM,EAAAgC,cAACuhB,GAAO,CAACrgB,MAAM,aAAavD,MAAOwqB,IACjCnqB,EAAAgC,cAACijB,GAAK,CACJhd,MAAI,EACJ/F,UAAU,OACVgG,KAAM,KACNC,aAAeC,GAAQ,IAAU,MAANA,EAAc,KAAKC,QAAQ,KACtDE,MAAOxC,EACPyC,aAAc,C7BrfK,I6BsfjBlB,EACI,GACCA,EAAW,KAAO,MACvBE,IAAahB,EACT,KACCgB,EAAW,KAAO,OAEzByjB,cAAgB7iB,IACdb,EACa,IAAXa,EAAI,G7B/fW,E6BigBXK,KAAKC,MAAe,MAATN,EAAI,IAAc,KAEnCX,EACa,MAAXW,EAAI,GACA5B,EACAiC,KAAKC,MAAe,MAATN,EAAI,IAAc,MAGrC7B,WAAYA,EACZF,YAAaA,EACbF,eAAgBA,KAGpBnG,EAAAgC,cAACuhB,GAAO,CAACrgB,MAAM,kBAAkBvD,MAAOwqB,IACtCnqB,EAAAgC,cAACijB,GAAK,CACJhd,MAAI,EACJ/F,UAAU,OACVgG,KAAM,KACNK,MAAOvC,EACPmC,aAAeC,GACb,GAAGK,KAAKC,MAAMN,GAAO,EAAI,GAAK,IAAIC,QAAQ,KAE5CG,aAAc,CACkB,EAAI,GAAjC+d,EAAsB,IACO,EAAI,GAAjCE,EAAsB,KAEzBwE,cAAgB7iB,IACdoe,EAAuB/d,KAAKC,MAAMN,EAAI,IAAM,EAAI,GAAK,KACrDse,EAAuBje,KAAKC,MAAMN,EAAI,IAAM,EAAI,GAAK,MAEvD7B,WAAYA,EACZF,YAAaA,EACbF,eAAgBA,KAGpBnG,EAAAgC,cAACuhB,GAAO,CAACrgB,MAAM,eAAevD,MAAOwqB,IACnCnqB,EAAAgC,cAAC8f,GAAa,CACZC,YAAaA,GACbC,kBAAmBA,GACnBC,qBAAsBA,GACtBC,mBAAoBA,GACpBC,sBAAuBA,MAG3BniB,EAAAgC,cAACuhB,GAAO,CAACrgB,MAAM,kBAAkBvD,MAAOwqB,IACtCnqB,EAAAgC,cAACijB,GAAK,CACJhd,MAAI,EACJ/F,UAAU,OACVgG,KAAM,KACNK,MAAOrC,EACPiC,aAAeC,GACb,IAAqB,IAAjBK,KAAK4F,KAAKjG,GAAa,KAAOC,QAAQ,KAE5CG,aAAc,EACXue,GAAmB,KAAS,KAC5BE,GAAmB,KAAS,KAE/BgE,cAAgB7iB,IACd4e,GAA4C,IAAxBve,KAAK4F,KAAc,EAATjG,EAAI,IAAgB,KAClD8e,GAA4C,IAAxBze,KAAK4F,KAAc,EAATjG,EAAI,IAAgB,MAEpD7B,WAAYA,EACZF,YAAaA,EACbF,eAAgBA,KAGpBnG,EAAAgC,cAACuhB,GAAO,CAACrgB,MAAM,eAAevD,MAAOwqB,IACnCnqB,EAAAgC,cAACijB,GAAK,CACJhd,MAAI,EACJ/F,UAAU,OACVgG,KAAM,KACNC,aAAeC,GACb,IAAIK,KAAKC,MAAMN,GAAO,MAAMC,QAAQ,KAEtCE,MAAOtC,EACPuC,aAAc,CACK,KAAjBme,EACiB,KAAjBE,GAEFoE,cAAgB7iB,IACdwe,EAAkBne,KAAKC,MAAMN,EAAI,GAAK,OACtC0e,EAAkBre,KAAKC,MAAMN,EAAI,GAAK,QAExC7B,WAAYA,EACZF,YAAaA,EACbF,eAAgBA,KAGpBnG,EAAAgC,cAACe,EAAAC,EAAKC,MAAK,CAACf,UAAU,OAAO3B,KAAK,OAAO2C,MAAM,yDAC7ClD,EAAAgC,cAAC8iB,GAAmB,CAClB1hB,QAASskB,GACTvlB,QAAS,IAAMwlB,IAAmBD,MAEpC1nB,EAAAgC,cAAC6iB,GAAmB,CAClB3iB,UAAU,OACVC,QAAS,IAAMwlB,IAAmBD,KAAe,+DAWjE1nB,EAAAgC,cAAA,OAAKrC,MAAO,CAAE2G,gBAAiB,QAAUpE,UAAU,QACjDlC,EAAAgC,cAAA,OAAKE,UAAU,6DACblC,EAAAgC,cAAA,OACEE,UAAU,iCACVvC,MAAO,CACLsQ,OAAQ,OACRoN,SAAU,OACVzB,UAAW,SACXtV,gBAAiB,UACjB4kB,aAAc,sBAGhBlrB,EAAAgC,cAAA,OACEE,UAAU,OACVvC,MAAO,CAAEsQ,OAAQ,QACjBpB,IAAK0E,GAAoBG,MAAM5E,QAEjC9O,EAAAgC,cAAA,kBAAUwlB,eAAwBQ,qBAIvC0C,GACC1qB,EAAAgC,cAAA,OACEE,UAAU,0DACVvC,MAAO,CAAE2G,gBAAiB,YAE1BtG,EAAAgC,cAAA,KAAGE,UAAU,QAAM,WACnBlC,EAAAgC,cAACoJ,GAAe,CACdrM,MAAM,EACNQ,QAAS+lB,EACTja,eAAgB6c,GAChB5c,kBAAmB6c,MAIvBnoB,EAAAgC,cAAA,OAAKE,UAAU,GAAGvC,MAAO,CAAE2G,gBAAiB,YAC1CtG,EAAAgC,cAAA,OAAKE,UAAU,oBACblC,EAAAgC,cAAC+iB,GAAS,CACRxkB,KAAK,kBACLykB,WAAYkD,GAAczlB,MAC1BN,QAAS,IACPgmB,GACE7C,EAAe8C,KACZ9nB,GAAwB,oBAAfA,EAAKmC,SAKrBzC,EAAAgC,cAACkjB,GAAa,sBAEhBllB,EAAAgC,cAAC+iB,GAAS,CACRxkB,KAAK,mBACLykB,WAAYkD,GAAczlB,MAC1BN,QAAS,IACPgmB,GACE7C,EAAe8C,KACZ9nB,GAAwB,qBAAfA,EAAKmC,SAKrBzC,EAAAgC,cAACkjB,GAAa,uBAEhBllB,EAAAgC,cAAC+iB,GAAS,CACRxkB,KAAK,cACLykB,WAAYkD,GAAczlB,MAC1BN,QAAS,IACPgmB,GACE7C,EAAe8C,KAAM9nB,GAAwB,gBAAfA,EAAKmC,SAIvCzC,EAAAgC,cAACkjB,GAAa,6BAKtBllB,EAAAgC,cAAA,OAAKrC,MAAO,CAAE2G,gBAAiB,YAC5BiZ,EACCvf,EAAAgC,cAAA,OACEE,UAAU,gEACVvC,MAAO,CACL+b,UAAW,QACXyP,WAAY,OACZ7iB,MAAO,QACP8iB,YAAa,OACb9I,SAAU,WAGZtiB,EAAAgC,cAACqpB,GAAAroB,EAAO,CAACsoB,UAAU,SAAS3iB,QAAQ,aAEpC+e,GAAkBwC,GAAsB9oB,OAAS,EAEjDpB,EAAAgC,cAAAhC,EAAAigB,SAAA,KACEjgB,EAAAgC,cAAA,OACEE,UAAU,0CACVvC,MAAO,CACL+b,UAAW,QACXyP,WAAY,OACZ7iB,MAAO,OACP8iB,YAAa,OACb9I,SAAU,WAGX4H,IAEHlqB,EAAAgC,cAAA,OAAKE,UAAU,mDACblC,EAAAgC,cAAC6E,EAAA7D,EAAM,CACLJ,SAAU8kB,IAAkBI,IAA+BR,GAC3D3e,QAAQ,YACRhJ,MAAO,CAAE2I,MAAO,SAChBnG,QAAS,IAAMmmB,GAAQD,GAAO,GAC9BkD,YAAc/oB,GAAMA,EAAEoY,kBAAgB,qBAS5C5a,EAAAgC,cAAA,OAAKE,UAAU,qEACblC,EAAAgC,cAAA,OACEE,UAAU,OACVvC,MAAO,CAAEsQ,OAAQ,OAAQ0L,QAAS,OAClC9M,IAAK0E,GAAoBG,MAAM5E,QAEjC9O,EAAAgC,cAAA,qDAGDioB,GAAW7oB,OAAS,EACvBpB,EAAAgC,cAAAhC,EAAAigB,SAAA,KACEjgB,EAAAgC,cAAA,OACEE,UAAU,0CACVvC,MAAO,CACL+b,UAAW,QACXyP,WAAY,OACZ7iB,MAAO,OACP8iB,YAAa,OACb9I,SAAU,WAGX2H,IAEHjqB,EAAAgC,cAAA,OAAKE,UAAU,mDACblC,EAAAgC,cAAC6E,EAAA7D,EAAM,CACLJ,SAAU8kB,IAAkBI,IAA+BR,GAC3D3e,QAAQ,YACRhJ,MAAO,CAAE2I,MAAO,SAChBnG,QAAS,IAAMmmB,GAAQD,GAAO,GAC9BkD,YAAc/oB,GAAMA,EAAEoY,kBAAgB,qBAO5C5a,EAAAgC,cAAA,OAAKE,UAAU,qEACblC,EAAAgC,cAAA,OACEE,UAAU,OACVvC,MAAO,CAAEsQ,OAAQ,OAAQ0L,QAAS,OAClC9M,IAAK0E,GAAoBG,MAAM5E,QAEjC9O,EAAAgC,cAAA,wDAmBa,OAErBojB,MC/2BJoG,EAAA,GAGA,SAAAC,EAAAC,GAEA,IAAAC,EAAAH,EAAAE,GACA,QAAAnnB,IAAAonB,EACA,OAAAA,EAAAC,QAGA,IAAAC,EAAAL,EAAAE,GAAA,CAGAE,QAAA,IAOA,OAHAE,EAAAJ,GAAAG,EAAAA,EAAAD,QAAAH,GAGAI,EAAAD,OACA,CAGAH,EAAA1N,EAAA+N,EnCzBArtB,EAAA,GACAgtB,EAAAM,EAAA,SAAAC,EAAAC,EAAAC,EAAAC,GACA,IAAAF,EAAA,CAMA,IAAAG,EAAAC,IACA,IAAAhd,EAAA,EAAiBA,EAAA5Q,EAAA2C,OAAqBiO,IAAA,CACtC4c,EAAAxtB,EAAA4Q,GAAA,GACA6c,EAAAztB,EAAA4Q,GAAA,GACA8c,EAAA1tB,EAAA4Q,GAAA,GAEA,IAJA,IAGAid,GAAA,EACAC,EAAA,EAAkBA,EAAAN,EAAA7qB,OAAqBmrB,MACvC,EAAAJ,GAAAC,GAAAD,IAAA/pB,OAAAoqB,KAAAf,EAAAM,GAAAU,MAAA,SAAAjpB,GAAoH,OAAAioB,EAAAM,EAAAvoB,GAAAyoB,EAAAM,GAAA,GACpHN,EAAApM,OAAA0M,IAAA,IAEAD,GAAA,EACAH,EAAAC,IAAAA,EAAAD,IAGA,GAAAG,EAAA,CACA7tB,EAAAohB,OAAAxQ,IAAA,GACA,IAAAqd,EAAAR,SACA3nB,IAAAmoB,IAAAV,EAAAU,EACA,CACA,CACA,OAAAV,CArBA,CAJAG,EAAAA,GAAA,EACA,QAAA9c,EAAA5Q,EAAA2C,OAA+BiO,EAAA,GAAA5Q,EAAA4Q,EAAA,MAAA8c,EAAwC9c,IAAA5Q,EAAA4Q,GAAA5Q,EAAA4Q,EAAA,GACvE5Q,EAAA4Q,GAAA,CAAA4c,EAAAC,EAAAC,EAwBA,EoC5BAV,EAAAkB,EAAA,SAAAd,GACA,IAAAe,EAAAf,GAAAA,EAAAgB,WACA,WAAe,OAAAhB,EAAA,SACf,WAAe,OAAAA,CAAA,EAEf,OADAJ,EAAAqB,EAAAF,EAAA,CAAiC1Z,EAAA0Z,IACjCA,CACA,ECNAnB,EAAAqB,EAAA,SAAAlB,EAAAmB,GACA,QAAAvpB,KAAAupB,EACAtB,EAAAuB,EAAAD,EAAAvpB,KAAAioB,EAAAuB,EAAApB,EAAApoB,IACApB,OAAA6qB,eAAArB,EAAApoB,EAAA,CAAyC0pB,YAAA,EAAA5oB,IAAAyoB,EAAAvpB,IAGzC,ECPAioB,EAAA0B,EAAA,WACA,oBAAAC,WAAA,OAAAA,WACA,IACA,OAAAC,MAAA,IAAAC,SAAA,gBACA,CAAG,MAAA9qB,GACH,oBAAAkC,OAAA,OAAAA,MACA,CACC,CAPD,GCAA+mB,EAAAuB,EAAA,SAAAO,EAAAC,GAA8C,OAAAprB,OAAAqrB,UAAAC,eAAAC,KAAAJ,EAAAC,EAAA,ECC9C/B,EAAAmC,GAAA,SAAAC,IACAzrB,OAAA0rB,yBAAAD,EAAA,aAAkDE,UAAA3rB,OAAA6qB,eAAAY,EAAA,QAAiDprB,MAAA,UAAAurB,cAAA,GACnG,ECHAvC,EAAAhgB,EAAA,2BCKA,IAAAwiB,EAAA,CACA,OAaAxC,EAAAM,EAAAQ,EAAA,SAAA2B,GAA8C,WAAAD,EAAAC,EAAA,EAG9C,IAAAC,EAAA,SAAAC,EAAA1mB,GACA,IAKAgkB,EAAAwC,EALAjC,EAAAvkB,EAAA,GACA2mB,EAAA3mB,EAAA,GACA4mB,EAAA5mB,EAAA,GAGA2H,EAAA,EACA,GAAA4c,EAAAsC,KAAA,SAAAvtB,GAAiC,WAAAitB,EAAAjtB,EAAA,GAAmC,CACpE,IAAA0qB,KAAA2C,EACA5C,EAAAuB,EAAAqB,EAAA3C,KACAD,EAAA1N,EAAA2N,GAAA2C,EAAA3C,IAGA,GAAA4C,EAAA,IAAAtC,EAAAsC,EAAA7C,EACA,CAEA,IADA2C,GAAAA,EAAA1mB,GACM2H,EAAA4c,EAAA7qB,OAAqBiO,IAC3B6e,EAAAjC,EAAA5c,GACAoc,EAAAuB,EAAAiB,EAAAC,IAAAD,EAAAC,IACAD,EAAAC,GAAA,KAEAD,EAAAC,GAAA,EAEA,OAAAzC,EAAAM,EAAAC,EACA,EAEAwC,EAAAC,KAAA,4BAAAA,KAAA,gCACAD,EAAAhtB,QAAA2sB,EAAAO,KAAA,SACAF,EAAAzO,KAAAoO,EAAAO,KAAA,KAAAF,EAAAzO,KAAA2O,KAAAF,OClDA/C,EAAAkD,QAAApqB,ECGA,IAAAqqB,EAAAnD,EAAAM,OAAAxnB,EAAA,gBAA8E,OAAAknB,EAAA,QAC9EmD,EAAAnD,EAAAM,EAAA6C","sources":["webpack://webpack-starter/webpack/runtime/chunk loaded","webpack://webpack-starter/./src/scripts/components/common/DropdownSelect.tsx","webpack://webpack-starter/./src/scripts/services/http.ts","webpack://webpack-starter/./src/scripts/services/misc.ts","webpack://webpack-starter/./src/scripts/services/leasing.resource.ts","webpack://webpack-starter/./src/scripts/static-data/SliderSettings.tsx","webpack://webpack-starter/./src/scripts/components/SearchLeasingForm/SearchLeasingForm.tsx","webpack://webpack-starter/./src/scripts/components/rangeslider/Styled.tsx","webpack://webpack-starter/./src/scripts/static-data/Voivodeships.tsx","webpack://webpack-starter/./src/scripts/components/SearchOpinionsForm/SearchOpinionsForm.tsx","webpack://webpack-starter/./src/scripts/components/common/DropdownOptions.tsx","webpack://webpack-starter/./src/scripts/components/DealerCard/Styled.tsx","webpack://webpack-starter/./src/scripts/enums/defaults.ts","webpack://webpack-starter/./src/scripts/components/DealerCard/DealerCard.tsx","webpack://webpack-starter/./src/scripts/misc/dataFromatters.tsx","webpack://webpack-starter/./src/scripts/components/LeasingOfferContactForm/LeasingOfferSummary/Styled.tsx","webpack://webpack-starter/./src/scripts/components/LeasingOfferContactForm/LeasingOfferSummary/LeasingOfferSummary.tsx","webpack://webpack-starter/./src/scripts/static-data/FilterOptions.tsx","webpack://webpack-starter/./src/scripts/components/LeasingOfferContactForm/Styled.tsx","webpack://webpack-starter/./src/scripts/enums/car-bodies.ts","webpack://webpack-starter/./src/scripts/components/common/Loader.tsx","webpack://webpack-starter/./src/scripts/components/LeasingOfferContactForm/LeasingOfferContactForm.tsx","webpack://webpack-starter/./src/scripts/components/LeasingOfferView/LeasingOfferBrowser/LeasingOfferBrowser.tsx","webpack://webpack-starter/./src/scripts/misc/utils.tsx","webpack://webpack-starter/./src/scripts/components/LeasingOfferView/LeasingOfferGallery/Styled.tsx","webpack://webpack-starter/./src/scripts/hooks/useMobileRecognizer.ts","webpack://webpack-starter/./src/scripts/components/LeasingOfferView/LeasingOfferGallery/LeasingOfferGallery.tsx","webpack://webpack-starter/./src/scripts/components/LeasingOfferView/Styled.tsx","webpack://webpack-starter/./src/scripts/components/LeasingOfferView/LeasingOfferView.tsx","webpack://webpack-starter/./src/scripts/components/common/CarBodyPicker.tsx","webpack://webpack-starter/./src/scripts/components/common/Labeled.tsx","webpack://webpack-starter/./src/scripts/components/SearchLeasingForm/OfferCard.tsx","webpack://webpack-starter/./src/scripts/components/SearchLeasingForm/AggregatedOffersCard.tsx","webpack://webpack-starter/./src/scripts/components/SearchLeasingForm/Styled.tsx","webpack://webpack-starter/./src/scripts/views/SearchLeasingsView.tsx","webpack://webpack-starter/webpack/bootstrap","webpack://webpack-starter/webpack/runtime/compat get default export","webpack://webpack-starter/webpack/runtime/define property getters","webpack://webpack-starter/webpack/runtime/global","webpack://webpack-starter/webpack/runtime/hasOwnProperty shorthand","webpack://webpack-starter/webpack/runtime/set anonymous default export name","webpack://webpack-starter/webpack/runtime/publicPath","webpack://webpack-starter/webpack/runtime/jsonp chunk loading","webpack://webpack-starter/webpack/runtime/nonce","webpack://webpack-starter/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","import React, { useEffect, useRef, useState } from \"react\";\nimport { Form } from \"react-bootstrap\";\nimport styled from \"styled-components\";\n\ninterface Props {\n  options: { id: any; name: string }[];\n  setOptions?: (items: any[]) => void;\n  selected: any[];\n  setSelected: (items: any[]) => void;\n  placeholder?: string;\n  style?: any;\n  withCheckboxes?: boolean;\n  withSelectAll?: boolean;\n}\n\nexport const DropdownWrapper = styled.div<DropdownArrowProps>`\n  background: #ffffff 0% 0% no-repeat padding-box;\n  border: 1px solid #404040;\n  border-radius: 10px;\n  opacity: 1;\n  width: 250px;\n  height: 100%;\n  min-height: 36px;\n  margin: auto;\n  transition: border-radius ${(props) => (props.open ? \".0\" : \".2\")}s\n    ${(props) => (props.open ? \".0\" : \".5\")}s;\n`;\n\nexport const Dropdown = styled.div`\n  height: inherit;\n`;\n\ninterface DropdownArrowProps {\n  open: boolean;\n  numOfElements: number;\n}\nexport const DropdownArrow = styled.div<DropdownArrowProps>`\n  border: solid #354052;\n  border-width: 0 2px 2px 0;\n  width: 3px;\n  height: 3px;\n  padding: 3px;\n  margin-right: 10px;\n  transition: transform 0.5s;\n  cursor: pointer;\n  transform: rotate(${(props) => (props.open ? \"45deg\" : \"-135deg\")});\n`;\n\nexport const SearchInput = styled.input`\n  border-style: none;\n  outline: none;\n  text-align: left;\n  font: normal normal normal 14px/12px Montserrat, serif;\n  letter-spacing: 0px;\n  color: #404040;\n  opacity: 1;\n  height: 18px;\n  margin-left: 10px;\n`;\nconst Collapse = styled.div<DropdownArrowProps>`\n  width: 250px;\n  max-height: 155px;\n  @media only screen and (max-width: 767px) {\n    max-height: 400px\n  }\n  position: absolute;\n  top: 33px;\n  left: -1px;\n  z-index: 3;\n  border: ${(props) => (props.open ? 1 : 0)}px solid #404040;\n  overflow-y: scroll;\n  background-color: #fff;\n  height: ${(props) =>\n    props.open ? `${(props.numOfElements + 1) * 26}px` : \"0px\"};\n  transition: height 0.5s, border 0.5s 0s;\n  &::-webkit-scrollbar {\n    width: 10px;\n  }\n  &::-webkit-scrollbar-track {\n    background: #f3f3f3;\n  }\n  &::-webkit-scrollbar-thumb {\n    background: #f6a335;\n    border: 1px solid #f6a335;\n  }\n`;\nconst Option = styled.div`\n  height: 24px;\n`;\nconst DropdownSelect = (props: Props) => {\n  const {\n    options = [],\n    selected,\n    setSelected,\n    placeholder,\n    style = {},\n    withCheckboxes = true,\n    withSelectAll = true,\n  } = props;\n  const [internalOptions, setInternalOptions] = useState<any[]>([]);\n  useEffect(() => {\n    setInternalOptions([...options]);\n  }, [options]);\n  const [serachInput, setSearchInput] = useState(\"\");\n  useEffect(() => {\n    setInternalOptions(\n      options.filter((item) =>\n        item.name.toLowerCase().startsWith(serachInput.toLowerCase())\n      )\n    );\n  }, [serachInput]);\n  const [open, setOpen] = useState(false);\n  const [focused, setFocused] = useState(false);\n  const selectItem = (item: any) => {\n    if (withCheckboxes) {\n      // Handle it as multi choice\n      if (selected.includes(item)) {\n        setSelected(selected.filter((sel) => sel.id !== item.id));\n      } else {\n        setSelected([...selected, item]);\n      }\n    } else {\n      setSelected([item]);\n    }\n  };\n  let joinedInputValue = selected.map((item) => item.name).join(\", \");\n  if (joinedInputValue.length > 16) {\n    joinedInputValue = joinedInputValue.substring(0, 16) + \"...\";\n  }\n  const dropdown = useRef(null);\n  useEffect(() => {\n    if (dropdown) {\n      [`click`, `touchstart`].forEach((type) => {\n        document.addEventListener(type, (evt) => {\n          //@ts-ignore\n          if (dropdown?.current.contains(evt.target)) return;\n          setOpen(false);\n        });\n      });\n    }\n  });\n  return (\n    <div ref={dropdown}>\n      <DropdownWrapper\n        className={`${\n          open ? \"without-bottom-radius in\" : \"\"\n        } d-flex align-items-center justify-content-between`}\n        aria-expanded={open}\n        open={open}\n        aria-controls=\"collapse\"\n        numOfElements={options.length}\n        onClick={() => {\n          setOpen(true);\n        }}\n        style={{ position: \"relative\", ...style }}\n      >\n        <SearchInput\n          type=\"text\"\n          placeholder={placeholder}\n          //@ts-ignore\n          onInput={(e: InputEvent) => setSearchInput(e.target.value)}\n          onFocus={() => setFocused(true)}\n          onBlur={() => {\n            setFocused(false);\n          }}\n          disabled={!withCheckboxes}\n          onClick={() => {\n            setOpen(true);\n          }}\n          value={focused ? serachInput : joinedInputValue}\n          autoComplete=\"off\"\n        />\n        <DropdownArrow\n          onClick={(e) => {\n            e.stopPropagation();\n            setOpen(!open);\n          }}\n          numOfElements={options.length}\n          open={open}\n        ></DropdownArrow>\n\n        <Collapse open={open} numOfElements={options.length}>\n          {withSelectAll && (\n            <Option\n              className=\"ml-2\"\n              onClick={\n                withCheckboxes\n                  ? () => {\n                      if (selected.length === 0) {\n                        setSelected(options);\n                      } else {\n                        setSelected([]);\n                      }\n                    }\n                  : () => {}\n              }\n            >\n              <Form.Check\n                label=\"Wszystkie\"\n                type=\"checkbox\"\n                bsPrefix=\"custom-dropdown-checkbox\"\n                checked={selected.length === options.length}\n                onChange={() => {\n                  if (selected.length === 0) {\n                    setSelected(options);\n                  } else {\n                    setSelected([]);\n                  }\n                }}\n              />\n            </Option>\n          )}\n          {internalOptions.map((item: any, index: number) => {\n            let name = (item.displayName\n              ? item.displayName\n              : item.name\n            ).substring(0, 16);\n            if (name.length >= 16) {\n              name += '...';\n            }\n            return (\n              <Option\n                className=\"ml-2\"\n                key={index}\n                onClick={\n                  withCheckboxes\n                    ? () => {\n                        selectItem(item);\n                        setSearchInput(\"\");\n                      }\n                    : () => {}\n                }\n              >\n                {withCheckboxes ? (\n                  <Form.Check\n                    label={name}\n                    type=\"checkbox\"\n                    bsPrefix=\"custom-dropdown-checkbox\"\n                    checked={selected.includes(item)}\n                    onChange={() => {\n                      selectItem(item);\n                      setSearchInput(\"\");\n                    }}\n                  />\n                ) : (\n                  <p\n                    onClick={() => {\n                      selectItem(item);\n                      setOpen(false);\n                      setSearchInput(\"\");\n                    }}\n                  >\n                    {name}\n                  </p>\n                )}\n              </Option>\n            );\n          })}\n        </Collapse>\n      </DropdownWrapper>\n    </div>\n  );\n};\n\nexport default DropdownSelect;\n","import axios from \"axios\";\nimport { get } from \"lodash-es\";\nconst axiosInstance = axios.create({\n  headers: {},\n  maxRedirects: 0,\n  baseURL: process.env.API_URL,\n});\naxiosInstance.interceptors.response.use(\n  (response) => response,\n  async (error) => {\n    return handleResponseError(error);\n  }\n);\nconst handleResponseError = (request: any) => {\n  const status = get(request, \"response.status\");\n  switch (status) {\n    case 500:\n    case undefined:\n      console.log(\"Unknown error\");\n      break;\n    case 400:\n      console.log(\"Bad request\");\n      break;\n    case 401:\n    case 403:\n      console.log(\"No access\");\n      break;\n    case 404:\n      console.log(\"Site does not exist\");\n      window.location.href = `/404.html`;\n      break;\n    default:\n      break;\n  }\n  return Promise.reject(request);\n};\nexport default axiosInstance;","import { AxiosRequestHeaders } from \"axios\";\n\nexport const getToken = (): string => {\n  const name = \"csrftoken\";\n  if (document.cookie.length > 0) {\n    let c_start = document.cookie.indexOf(name + \"=\");\n    if (c_start != -1) {\n      c_start = c_start + name.length + 1;\n      let c_end = document.cookie.indexOf(\";\", c_start);\n      if (c_end == -1) c_end = document.cookie.length;\n      return unescape(document.cookie.substring(c_start, c_end));\n    }\n  }\n  return \"\";\n};\n\nexport const getPostHeaders = (): AxiosRequestHeaders => {\n  return {\n    \"X-CSRFToken\": getToken(),\n    \"Content-Type\": \"application/json\",\n    Accept: \"application/json\",\n  };\n};\n","/**\n * LLM Context:\n * - Service layer for Leasing API communication.\n * - `fetchAggregatedLeasingOffers`: Key endpoint for the \"group by model\" catalog view.\n * - `postUserLeasingContactForm`: Submits leads/inquiries to the backend.\n * - `increaseOfferPopularity`: Engagement tracking for popularity-based sorting.\n */\nimport { AxiosResponse } from \"axios\";\nimport { Dealer } from \"../models/Dealer\";\nimport { LeasingOffer } from \"../models/LeasingOffer\";\nimport { AggregatedLeasingOffer } from \"../models/AggregatedLeasingOffer\";\nimport { Brand } from \"../components/SearchLeasingForm/SearchLeasingForm\";\nimport http from \"./http\";\nimport { getPostHeaders } from \"./misc\";\nimport { DjangoPaginatedResource } from \"./types\";\nimport { BodyType } from \"../models/BodyType\";\n\n\nexport const fetchLeasingCarBrands = async (): Promise<\n  AxiosResponse<DjangoPaginatedResource<Brand[]>>\n> => {\n  const response = await http.get(\"/api/leasing-car-brands\");\n  return response;\n};\n\nexport const fetchLeasingOfferDealers = async (\n  params: any\n): Promise<AxiosResponse<DjangoPaginatedResource<Dealer[]>>> => {\n  const response = await http.get(`/api/dealers-list`, { params });\n  return response;\n};\n\nexport const postUserLeasingContactForm = async (\n  data: any\n): Promise<AxiosResponse<DjangoPaginatedResource<any>>> => {\n  const response = await http.post(\n    `/api/leasing-contact-form`,\n    JSON.stringify(data),\n    {\n      headers: getPostHeaders(),\n    }\n  );\n  return response;\n};\n\nexport const fetchLeasingOffers = async (\n  params: any\n): Promise<AxiosResponse<DjangoPaginatedResource<LeasingOffer[]>>> => {\n  const response = await http.get(`/api/leasings-list`, { params });\n  return response;\n};\n\nexport const fetchAggregatedLeasingOffers = async (\n  params: any\n): Promise<AxiosResponse<DjangoPaginatedResource<AggregatedLeasingOffer[]>>> => {\n  const response = await http.get(`/api/aggregated-leasings-list`, { params });\n  return response;\n};\n\nexport const fetchLeasingOfferDetails = async (\n  pk: number,\n): Promise<AxiosResponse<LeasingOffer>> => {\n  const response = await http.get(`/api/leasing-offer-view/${pk}/`);\n  return response;\n};\n\nexport const fetchSimilarLeasingOffers = async (\n  carPk: number\n): Promise<AxiosResponse<DjangoPaginatedResource<LeasingOffer[]>>> => {\n  const response = await http.get(`/api/leasings-list?car_pk=${carPk}`);\n  return response;\n};\n\nexport const increaseOfferPopularity = async (\n  offerPk: number\n): Promise<AxiosResponse<LeasingOffer>> => {\n  const response = await http.patch(`/api/increase-offer-popularity/${offerPk}/`, {}, {\n    headers: getPostHeaders(),\n  });\n  return response;\n};\n\nexport const fetchLeasingCarBodyTypes = async (): Promise<\n  AxiosResponse<BodyType[]>\n> => {\n  const response = await http.get(\"/api/leasing-offers-body-types\");\n  return response;\n};\n","export const installmentMarks = {\n  0: \"MIN\",\n  4.54: \"\",\n  9.09: \"\",\n  13.63: \"700zł\",\n  18.18: \"\",\n  22.72: \"\",\n  27.27: \"\",\n  31.81: \"1100zł\",\n  36.36: \"\",\n  40.9: \"\",\n  45.45: \"\",\n  49.99: \"1500zł\",\n  54.54: \"\",\n  59.09: \"\",\n  63.63: \"\",\n  68.18: \"1900zł\",\n  72.72: \"\",\n  77.27: \"\",\n  81.81: \"\",\n  86.36: \"2300zł\",\n  90.9: \"\",\n  95.45: \"\",\n  100: \"MAX\",\n};\n\nexport const durationMarks = {\n  0: \"12mc\",\n  20: \"24mc\",\n  40: \"36mc\",\n  60: \"48mc\",\n  80: \"60mc\",\n  100: \"72mc\",\n};\n\nexport const budgetMarks = {\n  0: \"0%\",\n  16.66: \"5%\",\n  33.33: \"10%\",\n  49.99: \"15%\",\n  66.66: \"20%\",\n  83.33: \"25%\",\n  100: \"30%\",\n};\n\nexport const mileageMarks = {\n  0: \"10k\",\n  16.66: \"15k\",\n  33.33: \"20k\",\n  49.99: \"25k\",\n  66.66: \"30k\",\n  83.33: \"35k\",\n  100: \"40k\",\n};\n\nexport const activeDotStyle = {\n  borderColor: \"#0062aa\",\n};\n\nexport const handleStyle = [\n  {\n    backgroundColor: \"#f6a335\",\n    borderColor: \"#f6a335\",\n  },\n  {\n    backgroundColor: \"#f6a335\",\n    borderColor: \"#f6a335\",\n  },\n];\n\nexport const trackStyle = [\n  {\n    backgroundColor: \"#0062aa\",\n  },\n];\n\nexport const NET_INSTALLMENT_MAX_PRICE = 100000;\nexport const NET_INSTALLMENT_MIN_PRICE = 0;\n","import React, { useEffect, useState } from \"react\";\nimport DropdownSelect from \"src/scripts/components/common/DropdownSelect\";\nimport { fetchLeasingCarBrands } from \"src/scripts/services/leasing.resource\";\nimport ReactDOM from \"react-dom\";\nimport { Button, Col, Row } from \"react-bootstrap\";\nimport styled from \"styled-components\";\nimport Slider, {\n  SliderTooltip,\n  Handle,\n  createSliderWithTooltip,\n} from \"rc-slider\";\nimport {\n  activeDotStyle,\n  handleStyle,\n  installmentMarks,\n  NET_INSTALLMENT_MAX_PRICE,\n  NET_INSTALLMENT_MIN_PRICE,\n  trackStyle,\n} from \"src/scripts/static-data/SliderSettings\";\nexport interface Brand {\n  id: number;\n  name: string;\n  displayName: string;\n  icon: string;\n  counter: number;\n}\nconst Range = createSliderWithTooltip(Slider.Range);\nconst StyledButton = styled(Button)`\n  padding-left: 25%;\n  padding-right: 25%;\n  height: 50px;\n    &:hover {\n    color: #fff;\n    background-color: #f6a335;;\n    border-color: #fff;\n  }\n`;\n\nconst SearchLeasingForm = () => {\n  const [brands, setBrands] = useState<Brand[]>([]);\n  const [selectedBrands, setSelectedBrands] = useState<Brand[]>([]);\n  const [priceMin, setPriceMin] = useState<number>(NET_INSTALLMENT_MIN_PRICE);\n  const [priceMax, setPriceMax] = useState<number>(NET_INSTALLMENT_MAX_PRICE);\n  useEffect(() => {\n    const fetchData = async () => {\n      const response = await fetchLeasingCarBrands();\n      if (response.data.results) {\n        let brandsWithCounters = response.data.results\n          .map((brand) => {\n            return {\n              ...brand,\n              displayName: `${brand.name}(${brand.counter || 0})`,\n            };\n          })\n          .filter((brand) => brand.counter > 0);\n        setBrands(brandsWithCounters);\n      }\n    };\n    fetchData();\n  }, []);\n  return (\n    <div className=\"mt-5 mb-4 container\">\n      <Row>\n        <Col className=\"d-flex justify-content-center\">\n          <DropdownSelect\n            options={brands}\n            selected={selectedBrands}\n            setSelected={setSelectedBrands}\n            placeholder=\"Marka\"\n          />\n        </Col>\n        <Col className=\"d-flex justify-content-center mt-3 mt-lg-0\">\n          <Range\n            dots\n            className=\"mt-2\"\n            step={null}\n            tipFormatter={(val) => `${(val * 22.01 + 400).toFixed(0)}`}\n            style={{ width: \"250px\" }}\n            marks={installmentMarks}\n            defaultValue={[\n              priceMin === NET_INSTALLMENT_MIN_PRICE\n                ? 0\n                : (priceMin - 400) / 22.01,\n              priceMax === NET_INSTALLMENT_MAX_PRICE\n                ? 100\n                : (priceMax - 400) / 22.01,\n            ]}\n            onChange={(val: number[]) => {\n              setPriceMin(\n                val[0] === 0\n                  ? NET_INSTALLMENT_MIN_PRICE\n                  : Math.floor(val[0] * 22.01) + 400\n              );\n              setPriceMax(\n                val[1] === 100\n                  ? NET_INSTALLMENT_MAX_PRICE\n                  : Math.floor(val[1] * 22.01) + 400\n              );\n            }}\n            trackStyle={trackStyle}\n            handleStyle={handleStyle}\n            activeDotStyle={activeDotStyle}\n          />\n        </Col>\n      </Row>\n      <Row className=\"mt-5 justify-content-center\">\n        <StyledButton\n          variant=\"primary\"\n          className=\"py-2 d-flex align-items-center button-primary\"\n          href={`/finansowanie/wynajem/search?min_net_installment=${priceMin}&max_net_installment=${priceMax}&car_brand_id=${selectedBrands\n            .map((item) => item.id)\n            .join(\",\")}`}\n        >\n          {\" \"}\n          <span>Szukaj ofert</span>{\" \"}\n        </StyledButton>\n      </Row>\n    </div>\n  );\n};\nconst leasingHomepageFormRoot = document.getElementById(\n  \"react--leasing-homepage-form\"\n);\nif (leasingHomepageFormRoot) {\n  ReactDOM.render(<SearchLeasingForm />, leasingHomepageFormRoot);\n}\n","import styled from \"styled-components\";\n\nexport const SliderTrack = styled.div`\n  width: 250px;\n  height: 36px;\n  background: #ffffff 0% 0% no-repeat padding-box;\n  border: 1px solid #404040;\n  border-radius: 10px;\n  opacity: 1;\n  position: relative;\n`;\nexport const Slider = styled.div`\n  width: 122px;\n  height: 36px;\n  background: var(--unnamed-color-0062aa) 0% 0% no-repeat padding-box;\n  border: 1px solid var(--unnamed-color-0062aa);\n  background: #0062aa 0% 0% no-repeat padding-box;\n  border: 1px solid #0062aa;\n  border-radius: 10px;\n  opacity: 1;\n  position: relative;\n  z-index: 2;\n  margin: -1px;\n  cursor: pointer;\n`;\nexport const LeftText = styled.div`\nheight: 35px;\ndisplay: flex;\nalign-items: center;\n  text-align: center;\n  vertical-align: middle;\n  line-height: 35px !important;\n  font: 12px Montserrat;\n  letter-spacing: 0px;\n  color: #404040;\n  opacity: 1;\n  height: 18px;\n  position: absolute;\n  top: 5px;\n  left: 23px;\n`;\nexport const RightText = styled.div`\nheight: 35px;\ndisplay: flex;\nalign-items: center;\n  text-align: center;\n  vertical-align: middle;\n  line-height: 35px !important;\n  font: 12px Montserrat;\n  letter-spacing: 0px;\n  color: #404040;\n  opacity: 1;\n  height: 18px;\n  position: absolute;\n  top: 5px;\n  right: 21px;\n`;\n\nexport const SliderText = styled.div`\nheight: 35px;\ndisplay: flex;\nalign-items: center;\njustify-content: center;\n  text-align: center;\n  vertical-align: middle;\n  line-height: 35px !important;\n  font: 12px Montserrat;\n  letter-spacing: 0px;\n  color: #ffffff;\n  opacity: 1;\n`;\n","import { Voivodeship } from \"../models/Voivodeship\";\n\nexport const VoivodeshipsList: Voivodeship[] = [\n    {id: 1, name: \"dolnośląskie\"},\n    {id: 2, name: \"kujawsko-pomorskie\"},\n    {id: 3, name: \"lubelskie\"},\n    {id: 4, name: \"lubuskie\"},\n    {id: 5, name: \"łódzkie\"},\n    {id: 6, name: \"małopolskie\"},\n    {id: 7, name: \"mazowieckie\"},\n    {id: 8, name: \"opolskie\"},\n    {id: 9, name: \"podkarpackie\"},\n    {id: 10, name: \"podlaskie\"},\n    {id: 12, name: \"pomorskie\"},\n    {id: 12, name: \"śląskie\"},\n    {id: 13, name: \"świętokrzyskie\"},\n    {id: 14, name: \"warmińsko-mazurskie\"},\n    {id: 15, name: \"wielkopolskie\"},\n    {id: 16, name: \"zachodniopomorskie\"}\n  ];","import React, { useEffect, useState } from \"react\";\nimport DropdownSelect from \"src/scripts/components/common/DropdownSelect\";\nimport { fetchLeasingCarBrands } from \"src/scripts/services/leasing.resource\";\nimport ReactDOM from \"react-dom\";\nimport { Button, Col, Row, Form } from \"react-bootstrap\";\nimport styled from \"styled-components\";\nimport { Voivodeship } from \"../../models/Voivodeship\";\nimport { VoivodeshipsList } from \"../../static-data/Voivodeships\";\n\nexport interface Brand {\n  id: number;\n  name: string;\n  icon: string;\n  counter: number;\n}\n\nconst StyledButton = styled(Button)`\n  padding-left: 25%;\n  padding-right: 25%;\n  height: 50px;\n  &:hover {\n    color: #fff;\n    background-color: #f6a335;;\n    border-color: #fff;\n  }\n`;\n\nconst StyledH2 = styled.h2`\n  font: normal normal normal 12px/15px Montserrat, serif;\n  letter-spacing: 0;\n  color: #ffff;\n  opacity: 1;\n  margin: auto;\n\n  @media screen and (min-width: 768px) {\n    font: normal normal normal 18px/34px Montserrat, serif;\n  }\n`;\n\nconst StyledColumn = styled(Col)`\n  background: #404040 0 0 no-repeat padding-box;\n  opacity: 1;\n  cursor: pointer;\n  height: 54px;\n`;\n\nconst StyledColumnLeft = styled(StyledColumn)`\n  border-top-left-radius: 10px;\n`;\n\nconst StyledColumnRight = styled(StyledColumn)`\n  border-top-right-radius: 10px;\n`;\n\nconst CustomCheckBoxInput = styled(Form.Check.Input)`\n  width: 23px;\n  height: 23px;\n  border: 2px solid #404040;\n  opacity: 1;\n`;\n\nconst CustomCheckBoxLabel = styled(Form.Check.Label)`\n  text-align: left;\n  font: normal normal normal 12px/18px Montserrat;\n  letter-spacing: 0px;\n  opacity: 1;\n  cursor: pointer;\n\n  @media only screen and (min-width: 768px) {\n    font: normal normal normal 18px/28px Montserrat;\n  }\n`;\n\nconst SearchOpinionsForm = () => {\n  const [voivodeships, setVoivodeships] = useState<Voivodeship[]>(VoivodeshipsList);\n  const [selectedVoivodeships, setSelectedVoivodeships] = useState<Voivodeship[]>([]);\n  const [brands, setBrands] = useState<Brand[]>([]);\n  const [selectedBrands, setSelectedBrands] = useState<Brand[]>([]);\n  const [onlyVerified, setOnlyVerified] = useState<boolean>(false);\n  const [selectedTab, setSelectedTab] = useState<string>('salon');\n\n  useEffect(() => {\n    const fetchData = async () => {\n      const response = await fetchLeasingCarBrands();\n      if (response.data.results) {\n        setBrands(response.data.results);\n      }\n    };\n    fetchData();\n    if (window.location.href.search('service') !== -1) {\n      setSelectedTab('service');\n    }\n  }, []);\n\n\n  const search = () => {\n    window.location.href = `/search/${selectedTab}/` + generateSearchQuerry();\n  }\n\n  const generateSearchQuerry = () => {\n\n    const dealerVerified = onlyVerified ? \"certified=true\" : \"\";\n    const voivodeshipsQuerry =\n      selectedVoivodeships.length !== 0\n        ? `voivodeship=${selectedVoivodeships.map(value => value.name).join(\",\")}&`\n        : \"\";\n    const brandsQuerry =\n        selectedBrands.length !== 0 && selectedBrands.length !== 1\n        ? `brand=${selectedBrands.map(value => value.name).join(\",\")}&`\n        : \"\";\n    const singleBrand = selectedBrands.length === 1 ? `${selectedBrands[0].name}/` : \"\";\n\n    return `${singleBrand}?${brandsQuerry}${voivodeshipsQuerry}${dealerVerified}`;\n  };\n\n  const modifyUrl = (type: string) => {\n    const newurl = window.location.href.replace(/service|salon/g, type)\n    window.history.pushState({path:newurl},'',newurl);\n  }\n\n  const switchType = (type: string) => {\n    setSelectedTab(type); \n    modifyUrl(type)\n  }\n\n  return (\n    <div className=\"container\">\n      <Row style={{margin: 0}}>\n        <StyledColumnLeft \n          className=\"d-flex justify-content-center\" \n          style={{background: selectedTab === 'salon' ? '#FFFFFF 0 0 no-repeat padding-box' : '#404040 0 0 no-repeat padding-box'}}\n          onClick={() => switchType('salon')}>\n          <StyledH2\n            style={{color: selectedTab === 'salon' ?  '#404040' : '#FFFFFF'}}\n            >\n            Opinie salonów\n          </StyledH2>\n        </StyledColumnLeft>\n        <StyledColumnRight \n          className=\"d-flex justify-content-center\"\n          style={{background: selectedTab === 'service' ? '#FFFFFF 0 0 no-repeat padding-box' : '#404040 0 0 no-repeat padding-box'}}\n          onClick={() => switchType('service')}>\n          <StyledH2\n            style={{color: selectedTab === 'service' ? '#404040' : '#FFFFFF'}}\n            >\n            Opinie serwisów\n          </StyledH2>\n        </StyledColumnRight>\n      </Row>\n      <Row className=\"d-flex mx-4\">\n        <Col className=\"d-flex justify-content-center mt-3\">\n          <DropdownSelect\n            options={brands}\n            selected={selectedBrands}\n            setSelected={setSelectedBrands}\n            placeholder=\"Marka\"\n          />\n        </Col>\n        <Col className=\"d-flex justify-content-center mt-3\">\n          <DropdownSelect\n            options={voivodeships}\n            selected={selectedVoivodeships}\n            setSelected={setSelectedVoivodeships}\n            placeholder=\"Województwo\"\n          />\n        </Col>\n      </Row>\n      <Row className=\"mt-4 justify-content-center\">\n        <StyledButton\n          variant=\"primary\"\n          className=\"py-2 d-flex align-items-center button-primary\"\n          onClick={() => search()}>\n          <span>Szukaj dealera</span>\n        </StyledButton>\n      </Row>\n      <Row className=\"mt-4 ml-5\">\n          <Form.Check bsPrefix=\"custom-dropdown-checkbox\" type=\"checkbox\" label=\"Tylko certyfikowani dealerzy\">\n            <CustomCheckBoxInput type=\"checkbox\" checked={onlyVerified} onChange={() => setOnlyVerified(!onlyVerified)} />\n            <CustomCheckBoxLabel className=\"ml-2 mt-1\" onClick={() => setOnlyVerified(!onlyVerified)}>\n              Tylko certyfikowani dealerzy\n            </CustomCheckBoxLabel>\n          </Form.Check>\n\n      </Row>\n    </div>\n  );\n};\nconst opinionsHomepageFormRoot = document.getElementById(\n  \"react--opinions-homepage-form\"\n);\nif (opinionsHomepageFormRoot) {\n  ReactDOM.render(<SearchOpinionsForm />, opinionsHomepageFormRoot);\n}\n","import React, { useEffect, useState } from \"react\";\nimport { Form } from \"react-bootstrap\";\nimport styled from \"styled-components\";\nimport { SelectItem } from \"../../static-data/FilterOptions\";\n\ninterface Props {\n  open: boolean;\n  options: SelectItem[];\n  selectedOption: SelectItem;\n  setSelectedOption: (item: SelectItem) => void;\n}\n\nexport const DropdownWrapper = styled.div<DropdownArrowProps>`\n  background: #ffffff 0% 0% no-repeat padding-box;\n  border: 1px solid #404040;\n  border-radius: 10px;\n  opacity: 1;\n  width: 250px;\n  height: 100%;\n  min-height: 36px;\n  margin: auto;\n  transition: border-radius ${(props) => (props.open ? \".0\" : \".2\")}s\n    ${(props) => (props.open ? \".0\" : \".5\")}s;\n`;\n\nexport const Dropdown = styled.div`\n  height: inherit;\n`;\n\ninterface DropdownArrowProps {\n  open: boolean;\n}\nexport const DropdownArrow = styled.div<DropdownArrowProps>`\n  border: solid #354052;\n  border-width: 0 2px 2px 0;\n  width: 3px;\n  height: 3px;\n  padding: 3px;\n  margin-right: 10px;\n  transition: transform 0.5s;\n  cursor: pointer;\n  transform: rotate(${(props) => (props.open ? \"45deg\" : \"-135deg\")});\n`;\n\nexport const SearchInput = styled.input`\n  border-style: none;\n  outline: none;\n  text-align: left;\n  font: normal normal normal 14px/12px Montserrat, serif;\n  letter-spacing: 0px;\n  color: #404040;\n  opacity: 1;\n  height: 18px;\n  margin-left: 10px;\n`;\nconst Collapse = styled.div<DropdownArrowProps>`\n  width: 250px;\n  max-height: 200px;\n  position: absolute;\n  top: 33px;\n  left: -1px;\n  z-index: 3;\n  border: ${(props) => (props.open ? 1 : 0)}px solid #404040;\n  overflow: auto;\n  background-color: #fff;\n  height: ${(props) => (props.open ? \"auto\" : \"0px\")};\n  transition: height 0.5s, border 0.5s 0s;\n  &::-webkit-scrollbar {\n    width: 10px;\n  }\n  &::-webkit-scrollbar-track {\n    background: #f3f3f3;\n  }\n  &::-webkit-scrollbar-thumb {\n    background: #f6a335;\n    border: 1px solid #f6a335;\n  }\n`;\nconst Option = styled.div<OptionProps>`\n  height: 31px;\n  padding: 5px 10px;\n  font-size: 14px;\n  cursor:pointer;\n  background-color: ${(props) => (props.selected ? '#ddd' : '#fff')};\n\n  &:hover {\n    background-color: #f6a335;\n    color: white;\n  }\n`;\n\ninterface OptionProps {\n  selected: boolean;\n}\n\n\nconst DropdownOptions = (props: Props) => {\n  const { options = [], selectedOption, setSelectedOption } = props;\n\n  const [open, setOpen] = useState(false);\n\n  return (\n    <div>\n      <DropdownWrapper\n        className={`${\n          open ? \"without-bottom-radius in\" : \"\"\n        } d-flex align-items-center justify-content-between`}\n        aria-expanded={open}\n        open={open}\n        aria-controls=\"collapse\"\n        onClick={() => {setOpen(!open)}}\n        style={{ position: \"relative\" }}\n      >\n        <SearchInput\n          type=\"text\"\n          value={selectedOption.name}\n          autoComplete=\"off\"\n          readOnly\n        />\n        <DropdownArrow\n          onClick={() => setOpen(!open)}\n          open={open}\n        ></DropdownArrow>\n\n        <Collapse open={open}>\n          {options.map((item) => {\n            return (\n              <Option selected={item.id === selectedOption.id} onClick={() => {setOpen(!open); setSelectedOption(item)}} key={item.id}>\n                <p className=\"mb-0\">{item.name}</p>\n              </Option>\n            );\n          })}\n        </Collapse>\n      </DropdownWrapper>\n    </div>\n  );\n};\n\nexport default DropdownOptions;\n","import { Col, Form, Row } from \"react-bootstrap\";\nimport styled from \"styled-components\";\n\nexport const DealerName = styled.p`\n  font: normal normal 500 24px/26px Montserrat;\n  letter-spacing: 0px;\n  color: #404040;\n  overflow: hidden;\n  text-overflow: ellipsis;\n  display: -webkit-box;\n  -webkit-line-clamp: 2;\n  line-clamp: 2;\n  -webkit-box-orient: vertical;\n`;\n\nexport const DealerAddress = styled.p`\n  font: normal normal normal 14px/16px Montserrat;\n  letter-spacing: 0px;\n  color: #404040;\n`;\n\nexport const Dot = styled.div`\n  background: #404040 0% 0% no-repeat padding-box;\n  width: 4px;\n  height: 4px;\n`;\n\nexport const DealerType = styled.p`\n  font: normal normal normal 14px/16px Montserrat;\n  letter-spacing: 0px;\n  color: #404040;\n`;\n\nexport const Chip = styled.div`\n  background: #0062aa 0% 0% no-repeat padding-box;\n  border-radius: 10px;\n  padding: 6px 21px;\n`;\n\nexport const ChipText = styled.p`\n  text-align: center;\n  font: normal normal bold 14px/16px Montserrat;\n  letter-spacing: 0px;\n  color: #ffffff;\n`;\n\nexport const AllOpinions = styled.p`\n  font: normal normal 500 15px/20px Montserrat;\n  letter-spacing: 0px;\n  color: #0062aa;\n  cursor: pointer;\n`;\n\nexport const CustomCheckBoxInput = styled(Form.Check.Input)`\n  width: 23px;\n  height: 23px;\n  border: 2px solid #404040;\n  opacity: 1;\n`;\n\nexport const CustomCheckBoxLabel = styled(Form.Check.Label)`\n  font: normal normal normal 16px/32px Montserrat;\n  letter-spacing: 0px;\n  color: #000000;\n  cursor: pointer;\n`;\n\nexport const Card = styled.div`\n  background: #ffffff 0% 0% no-repeat padding-box;\n  box-shadow: 0px 0px 16px #0000001a;\n  border-radius: 15px;\n`;\n\nexport const ConsultantsRow = styled(Row)`\n  background: #f6a335 0% 0% no-repeat padding-box;\n  height: 47px;\n`;\n\nexport const ConsultantsTitle = styled.p`\n  font: normal normal 500 16px/16px Montserrat;\n  letter-spacing: 0px;\n  color: #ffffff;\n`;\n\nexport const ImageCol = styled(Col)<ImageProps>`\n  min-height: 250px;\n  width: 100%;\n  background: transparent;\n  border-radius: 15px 15px 0px 0px;\n  min-width: 300px;\n  height: 100%;\n  @media only screen and (min-width: 768px) {\n    width: 406px;\n    border-radius: ${(props) =>\n      props.haveworkers ? \"15px 0px 0px 0px;\" : \"15px 0px 0px 15px;\"};\n  }\n`;\n\nexport const Image = styled.img<ImageProps>`\n  height: 300px;\n  width: 100%;\n  border-radius: 15px 15px 0px 0px;\n  @media only screen and (min-width: 768px) {\n    border-radius: ${(props) =>\n      props.haveworkers ? \"15px 0px 0px 0px;\" : \"15px 0px 0px 15px;\"};\n  }\n`;\n\n\ninterface ImageProps {\n  haveworkers: boolean;\n}\n\nexport const WorkerOpinions = styled.span`\n  font: normal normal 500 14px/15px Montserrat;\n  letter-spacing: 0px;\n  color: #0062aa;\n  cursor: pointer;\n`;\nexport const WorkerRating = styled.p`\n  font: normal normal 500 12px/16px Montserrat;\n  letter-spacing: 0px;\n  color: #404040;\n`;\nexport const WorkerStar = styled.img`\n  height: 10px;\n`;\n\nexport const WorkerWrapper = styled.div`\n  min-width: 200px;\n`;\n\nexport const ShowMoreWorkers = styled.p`\n  text-align: right;\n  font: normal normal 500 15px/15px Montserrat;\n  letter-spacing: 0px;\n  color: #404040;\n  cursor: pointer;\n`;\n\nexport const DealerInfo = styled(Col)<DealerInfoProps>`\n    border-radius:  ${(props) =>\n      props.haveworkers ? \"15px 15px 0px 0px;\" : \"15px;\"};\n    margin-top: -20px;\n    background-color: #FFFFFF;\n    min-width: 300px;\n    @media only screen and (min-width: 768px) { \n        margin-top: 0;\n        border-radius:  ${(props) =>\n          !props.paid ? \"15px;\" : props.haveworkers ? \"0px 15px 0px 0px;\" : \"0px 15px 15px 0px;\"}\n    }\n`;\n\ninterface DealerInfoProps {\n  haveworkers: boolean;\n  paid: boolean;\n}\n\nexport const AllWorkers = styled(Row)`\n  background: #f3f3f3 0% 0% no-repeat padding-box;\n`;\n\nexport const ShowMore = styled(Row)`\n  background: #f3f3f3 0% 0% no-repeat padding-box;\n  border-radius: 0px 0px 15px 15px;\n  padding: 10px 0;\n`;\n\nexport const AllOpinionsArrow = styled.div`\n  border: 2px solid #0062aa;\n  width: 10px;\n  height: 10px;\n  transition: transform 0.5s;\n  transform: rotate(-45deg);\n  border-width: 0 2px 2px 0;\n  cursor: pointer;\n  margin-top: 5px;\n`;\n\nexport const WorkerOpinionsArrow = styled.div`\n  border: 2px solid #0062aa;\n  width: 8px;\n  height: 8px;\n  display: inline-block;\n  transition: transform 0.5s;\n  transform: rotate(-45deg);\n  padding: 3px;\n  border-width: 0 2px 2px 0;\n  cursor: pointer;\n`;\n\nexport const ShowMoreWorkersArrow = styled.div`\n  border: 2px solid #404040;\n  display: inline-block;\n  transition: transform 0.5s;\n  transform: rotate(45deg);\n  border-width: 0 2px 2px 0;\n  padding: 3px;\n  cursor: pointer;\n  margin-bottom: 5px;\n`;\n\nexport const ShowLessWorkersArrow = styled.div`\n  border: 2px solid #404040;\n  display: inline-block;\n  transition: transform 0.5s;\n  transform: rotate(-135deg);\n  border-width: 0 2px 2px 0;\n  padding: 3px;\n  cursor: pointer;\n  margin-bottom: 2px;\n`;\n\nexport const WorkerName = styled.p`\n  max-height: 48px;\n  overflow: hidden;\n  text-overflow: ellipsis;\n  display: -webkit-box;\n  -webkit-line-clamp: 2;\n  line-clamp: 2;\n  -webkit-box-orient: vertical;\n`;\n","const imagePlaceholder = \"/static/dist/public/assets/global/noimg-dealer.jpg\";\n\nexport { imagePlaceholder };\n","import React, { useEffect, useState } from \"react\";\nimport { Col, Form, Row } from \"react-bootstrap\";\nimport { Dealer } from \"../../models/Dealer\";\n\nimport {\n  Card,\n  Image,\n  DealerInfo,\n  DealerName,\n  ConsultantsRow,\n  ConsultantsTitle,\n  AllWorkers,\n  WorkerStar,\n  WorkerRating,\n  WorkerName,\n  ShowMoreWorkers,\n  WorkerOpinions,\n  DealerAddress,\n  Dot,\n  DealerType,\n  Chip,\n  ChipText,\n  AllOpinions,\n  AllOpinionsArrow,\n  WorkerOpinionsArrow,\n  ShowMoreWorkersArrow,\n  ShowLessWorkersArrow,\n  ImageCol,\n  ShowMore,\n} from \"./Styled\";\n\nimport { Worker } from \"../../models/Worker\";\nimport { imagePlaceholder } from \"src/scripts/enums/defaults\";\n\ninterface Props {\n  dealer: Dealer;\n  selectedDealers?: number[];\n  setSelectedDealers: (dealers: number[]) => void;\n  selectedWorkers?: number[];\n  setSelectedWorkers: (workers: number[]) => void;\n}\n\nconst DealerCard = (props: Props) => {\n  const {\n    dealer,\n    selectedDealers,\n    setSelectedDealers,\n    selectedWorkers,\n    setSelectedWorkers,\n  } = props;\n  const [selectedWorkerId, setSelectedWorkerId] = useState<number>(-1);\n  const [extendedWorkerView, setExtendedWorkerView] = useState<boolean>(false);\n  const [windowWidth, setWindowWidth] = useState<number>(window.innerWidth);\n\n  const selectWorker = (worker: Worker) => {\n    if (selectedWorkerId === -1 || selectedWorkerId === worker.id) {\n      if (selectedWorkers && selectedWorkers.includes(worker.id)) {\n        setSelectedWorkerId(-1);\n        setSelectedWorkers(selectedWorkers.filter((sel) => sel !== worker.id));\n      } else {\n        setSelectedWorkerId(worker.id);\n        if (selectedWorkers) {\n          setSelectedWorkers([...selectedWorkers, worker.id]);\n        } else {\n          setSelectedWorkers([worker.id]);\n        }\n      }\n    }\n  };\n\n  const selectDealer = (dealer: Dealer) => {\n    if (selectedDealers && selectedDealers.includes(dealer.id)) {\n      setSelectedDealers(selectedDealers.filter((sel) => sel !== dealer.id));\n    } else {\n      if (selectedDealers) {\n        setSelectedDealers([...selectedDealers, dealer.id]);\n      } else {\n        setSelectedDealers([dealer.id]);\n      }\n    }\n  };\n\n  const getRate = (currentValue: number, value: number) => {\n    currentValue = currentValue + 1;\n    if (currentValue <= Math.floor(value)) {\n      return 10;\n    }\n    if (currentValue > Math.ceil(value)) {\n      return 0;\n    }\n    const decimal = (value - Math.floor(value)) * 10;\n    return Math.round(decimal);\n  }\n\n  useEffect(() => {\n    const handleResize = () => {\n      setWindowWidth(window.innerWidth);\n    };\n    window.addEventListener(\"resize\", handleResize);\n  }, []);\n  return (\n    <Card className=\"container\">\n      <Row>\n        {dealer.paid && (\n          <ImageCol\n            $haveworkers={\n              dealer.workers.filter((worker) => worker.salon).length !== 0\n            }\n            className=\"p-0\"\n          >\n            <Image\n              style={{ objectFit: \"cover\" }}\n              haveworkers={\n                dealer.workers.filter((worker) => worker.salon).length !== 0\n              }\n              src={\n                dealer.image\n                  ? dealer.image\n                  : imagePlaceholder\n              }\n              alt={`Zdjęcie profilowe dealera ${dealer.display_name}`}\n            ></Image>\n          </ImageCol>\n        )}\n        <DealerInfo\n          $paid={dealer.paid}\n          className=\"p-0\"\n          $haveworkers={\n            dealer.workers.filter((worker) => worker.salon).length !== 0\n          }\n        >\n          <div className=\"container h-100\">\n            <Row className=\"pt-3\">\n              <Col>\n                <Form.Check\n                  id={`dealer-${dealer.id}`}\n                  type=\"checkbox\"\n                  label=\"Wyślij maila z zapytaniem\"\n                  bsPrefix=\"custom-dropdown-checkbox\"\n                  checked={\n                    selectedDealers && selectedDealers.includes(dealer.id)\n                  }\n                  onChange={() => {\n                    selectDealer(dealer);\n                  }}\n                />\n              </Col>\n            </Row>\n            <Row className=\"mt-2 gy-3\">\n              <Col className=\"col-auto d-flex\">\n                {[...Array(5)].map((_, i) => (\n                  <img\n                    key={`star-${i}`}\n                    src={`/static/dist/public/assets/global/star-${getRate(i, dealer.average_rating)}-10.svg`}\n                  ></img>\n                ))}\n                <p className=\"mb-0 ml-2\">\n                  {dealer.average_rating.toFixed(2)}({dealer.rating_count})\n                </p>\n              </Col>\n            </Row>\n            <Row className=\"mt-2\">\n              <Col>\n                <DealerName className=\"mb-auto\">\n                  {dealer.display_name}\n                </DealerName>\n              </Col>\n            </Row>\n            <Row className=\"mt-2\">\n              <Col className=\"d-flex\">\n                <DealerAddress className=\"mb-auto\">\n                  {dealer.address_fields.location_string}\n                </DealerAddress>\n                <Dot className=\"my-auto rounded-circle mx-2\"></Dot>\n                <DealerType className=\"mb-auto\">\n                  {dealer.salon && \"SALON\"}{\" \"}\n                  {dealer.service && dealer.salon && \" | \"}{\" \"}\n                  {dealer.service && \"SERWIS\"}\n                </DealerType>\n              </Col>\n            </Row>\n            <Row className=\"mt-2 mx-0\">\n              {dealer.car_brands.map((brand, i) => (\n                <Col className=\"col-auto p-1\" key={`col-${i}`}>\n                  <Chip>\n                    <ChipText className=\"mb-0\">{brand.name}</ChipText>\n                  </Chip>\n                </Col>\n              ))}\n            </Row>\n            <Row className=\"mt-3\">\n              <Col\n                className=\"d-flex justify-content-end \"\n                onClick={() =>\n                  window.open(\n                    `/single-dealer/${dealer.slug}/#opinion-tab`,\n                    \"_blank\"\n                  )\n                }\n              >\n                <AllOpinions className=\"mb-0\">\n                  Zobacz wszystkie opinie\n                </AllOpinions>\n                <div>\n                  <AllOpinionsArrow className=\"ml-2\"></AllOpinionsArrow>\n                </div>\n              </Col>\n            </Row>\n          </div>\n        </DealerInfo>\n      </Row>\n      {dealer.workers.filter((worker) => worker.salon).length !== 0 && (\n        <ConsultantsRow>\n          <Col className=\"d-flex\">\n            <ConsultantsTitle className=\"mb-0 m-auto\">\n              Nasi najlepsi doradcy:\n            </ConsultantsTitle>\n          </Col>\n        </ConsultantsRow>\n      )}\n      {dealer.workers.filter((worker) => worker.salon).length !== 0 && (\n        <AllWorkers>\n          <div className=\"container\">\n            <Row className=\"justify-content-center\">\n              {dealer.workers\n                .filter((worker) => worker.salon)\n                .sort((worker1, worker2) =>\n                  worker1.average_rating < worker2.average_rating ? 1 : -1\n                )\n                .slice(\n                  0,\n                  windowWidth <= 768\n                    ? extendedWorkerView\n                      ? 8\n                      : 2\n                    : extendedWorkerView\n                    ? 9\n                    : 3\n                )\n                .map((worker, i) => (\n                  <Col\n                    className={`col-6 pt-2 col-md-4 d-flex flex-column ${\n                      windowWidth <= 768\n                        ? i % 2 !== 0\n                          ? \"border-left\"\n                          : \"\"\n                        : i % 3 !== 0\n                        ? \"border-left\"\n                        : \"\"\n                    }\n                    ${extendedWorkerView ? \"border-bottom\" : \"\"}\n                    `}\n                    key={`col-${i}`}\n                  >\n                    <img\n                      style={{ height: \"80px\" }}\n                      className=\"m-auto\"\n                      src={\n                        worker.avatar\n                          ? worker.avatar\n                          : \"/static/dist/public/assets/global/noimg-worker.jpg\"\n                      }\n                      alt={`Zdjęcie profilowe pracownika: ${worker.first_name} ${worker.last_name}`}\n                    ></img>\n\n                    <WorkerName className=\"mx-auto mt-2 mb-0\">\n                      {worker.first_name} {worker.last_name}\n                    </WorkerName>\n\n                    <div className=\"d-flex mx-auto mt-3 mb-0\">\n                      {[...Array(5)].map((_, i) => (\n                        <WorkerStar\n                          key={`star-${i}`}\n                          className=\"my-auto\"\n                          src={`/static/dist/public/assets/global/star-${getRate(i, dealer.average_rating)}-10.svg`}\n                        ></WorkerStar>\n                      ))}\n                      <WorkerRating className=\"mb-0 ml-2\">\n                        {worker.average_rating}({worker.rating_count})\n                      </WorkerRating>\n                    </div>\n                    <a\n                      href={`/single-worker/${worker.slug}`}\n                      target=\"_blank\"\n                      className=\"mx-auto mt-1 mb-0\"\n                    >\n                      <WorkerOpinions className=\"my-auto mr-2\">\n                        Zobacz profil\n                      </WorkerOpinions>\n                      <WorkerOpinionsArrow className=\" my-auto\"></WorkerOpinionsArrow>\n                    </a>\n                    <Form.Check\n                      className=\"mx-auto mt-2 mb-0\"\n                      type=\"checkbox\"\n                      label=\"Wyślij maila z zapytaniem\"\n                      id={`worker-${worker.id}`}\n                      bsPrefix=\"custom-worker-checkbox\"\n                      disabled={\n                        selectedWorkerId !== -1 &&\n                        selectedWorkerId !== worker.id\n                      }\n                      checked={selectedWorkers && selectedWorkers.includes(worker.id)}\n                      onChange={() => {\n                        selectWorker(worker);\n                      }}\n                    />\n                  </Col>\n                ))}\n            </Row>\n          </div>\n        </AllWorkers>\n      )}\n      {dealer.workers.filter((worker) => worker.salon).length > 3 && (\n        <ShowMore className=\"p-0\">\n          <Col>\n            <div\n              className=\"d-flex\"\n              onClick={() => setExtendedWorkerView(!extendedWorkerView)}\n            >\n              <ShowMoreWorkers className=\"mb-0 mr-2 ml-auto\">\n                {extendedWorkerView ? \"Pokaż minej\" : \"Pokaż więcej\"}\n              </ShowMoreWorkers>\n              <div className=\"mx-0\">\n                {extendedWorkerView ? (\n                  <ShowLessWorkersArrow className=\"\"></ShowLessWorkersArrow>\n                ) : (\n                  <ShowMoreWorkersArrow className=\"\"></ShowMoreWorkersArrow>\n                )}\n              </div>\n            </div>\n          </Col>\n        </ShowMore>\n      )}\n    </Card>\n  );\n};\n\nexport default DealerCard;\n","export const changePeriodFormat = (period: number | undefined): string => {\n  if (period !== undefined) {\n    return `${period} mc`;\n//     Sebastian requested to have only \"mc\" everywhere but I keep last code cuz I liked it :)\n    /* if (period < 12) {\n      return `${period} mc`;\n    } else if (period === 12) {\n      return `rok`;\n    } else if (period % 12 === 0) {\n      const years = Math.floor(period / 12);\n      if (years === 2 || years === 3 || years === 4) {\n        return `${years} lata`;\n      } else {\n        return `${years} lat`;\n      }\n    } else {\n      const years = Math.floor(period / 12);\n      const months = period % 12;\n      if (years === 2 || years === 3 || years === 4) {\n        return `${years} lata ${months} mc`;\n      } else {\n        return `${years} lat ${months} mc`;\n      }\n    } */\n  }\n  return \"\";\n};\n\nexport const changeSelfDepositFormat = (\n  selfDeposit: number | undefined, carValue: number | undefined\n): string => {\n  if (selfDeposit !== undefined && carValue !== undefined) {\n    const value = Math.round(carValue * selfDeposit / 100)\n    if (value < 10000) {\n      return `${value} zł`;\n    } else {\n      const deposit = Math.round(value / 100) / 10;\n      return `${deposit} tys. zł`;\n    }\n  }\n  return \"\";\n};\n\nexport const changeCarValueFormat = (\n  carValue: number | undefined\n): string => {\n  if (carValue !== undefined) {\n    const roundValue = Math.round(carValue / 1000);\n    return `${roundValue} tys. zł`;\n  }\n  return \"\";\n};\n\nexport const changeMileageLimitFormat = (\n  mileageLimit: number | undefined\n): string => {\n  if (mileageLimit !== undefined) {\n    if (mileageLimit < 1000) {\n      return `${mileageLimit} km`;\n    } else {\n      const limit = Math.round(mileageLimit / 1000);\n      return `${limit} tys. km`;\n    }\n  }\n  return \"\";\n};\n\nexport const changeOfferNumberFormat = (\n  offerNumber: number | undefined\n): string => {\n  if (offerNumber !== undefined) {\n    if (offerNumber <= 0) {\n      return `${offerNumber} ofert`;\n    } else if (offerNumber == 1) {\n      return `${offerNumber} oferta`;\n    } else if (offerNumber <= 4) {\n      return `${offerNumber} oferty`;\n    } else {\n      return `${offerNumber} ofert`;\n    }\n  }\n  return \"\";\n};\n","import styled from \"styled-components\";\nimport { Button, Form, Row } from \"react-bootstrap\";\n\nexport const BrandName = styled.p`\n    text-align: left;\n    font: normal normal 500 22px/30px Montserrat, serif;\n    letter-spacing: 0;\n    color: #404040;\n    opacity: 1;\n`;\n\nexport const NetValue = styled.p`\n    text-align: right;\n    font: normal normal bold 22px/30px Montserrat, serif;\n    letter-spacing: 0;\n    color: #f6a335;\n`;\n\nexport const ModelName = styled.p`\n    text-align: left;\n    font: normal normal 500 16px/30px Montserrat, serif;\n    letter-spacing: 0;\n    color: black;\n    opacity: 1;\n`;\n\nexport const GrossValue = styled.p`\n    text-align: right;\n    font: normal normal 500 16px/30px Montserrat, serif;\n    letter-spacing: 0;\n    color: #f6a335;\n`;\n\nexport const Divider = styled.div`\n    height: 2px;\n    background: #0000001a;\n`;\n\nexport const CarImage = styled.img`\n    height: 179px;\n    width: 100%;\n    border-radius: 15px;\n    object-fit: cover;\n`;\n\nexport const OfferDetails = styled(Row)`\n    background: #f3f3f3;\n    border-radius: 15px;\n\n    @media screen and (min-width: 992px) {\n      background: inherit;\n    }\n`;\n\nexport const OfferDetailsTitle = styled.p`\n    text-align: center;\n    font: normal normal 300 12px/20px Montserrat, serif;\n    letter-spacing: 0;\n    color: #404040;\n`;\n\nexport const OfferDetailsValue = styled.p`\n    text-align: center;\n    font: normal normal 500 18px/25px Montserrat, serif;\n    letter-spacing: 0;\n    color: #404040;\n    border-bottom: 1px solid #0062aa;\n    opacity: 1;\n`;\n\nexport const OfferIconsWrapper = styled(Row)`\n    font: normal normal 500 12px/9px Montserrat, serif;\n    letter-spacing: 0;\n    color: #404040;\n`;\n\nexport const Wrapper = styled.div`\n    width: 400px;\n`","import React from \"react\";\nimport { Col, Row } from \"react-bootstrap\";\nimport { imagePlaceholder } from \"src/scripts/enums/defaults\";\nimport { \n    changePeriodFormat, \n    changeSelfDepositFormat, \n    changeMileageLimitFormat \n  } from \"src/scripts/misc/dataFromatters\";\nimport { LeasingOffer } from \"../../../models/LeasingOffer\";\nimport { BrandName, GrossValue, ModelName, NetValue, Divider, CarImage, OfferDetails, OfferDetailsTitle, OfferDetailsValue, OfferIconsWrapper, Wrapper } from \"./Styled\";\n\ninterface Props {\n    leasingOffer: LeasingOffer | undefined;\n}\n\nconst LeasingOfferSummary = (props: Props) => {\n\n  const { leasingOffer } = props;\n  const noImgDealer = window.location.origin + imagePlaceholder;\n\n  return (\n    <Wrapper>\n      <h1>\n        <div className=\"offer-details--container--header\">\n          Formularz kontaktowy ws. wynajmu długoterminowego\n        </div>\n        <Row>\n            <Col className=\"col-6 pr-0\">\n                <BrandName className=\"mb-0\">{leasingOffer?.car.brand.name}</BrandName>\n            </Col>\n            <Col className=\"col-6 pl-1\">\n                <NetValue className=\"mb-0\">{leasingOffer?.net_installment} zł/mc netto</NetValue>\n            </Col>\n        </Row>\n        <Row>\n            <Col>\n                <ModelName className=\"mb-0\">{leasingOffer?.car.model}</ModelName>\n            </Col>\n            <Col>\n                <GrossValue className=\"mb-0\"> {leasingOffer?.gross_installment} zł/mc brutto</GrossValue>\n            </Col>\n        </Row>\n      </h1>\n        <Row className=\"mt-3\">\n            <Col>\n                <Divider></Divider>\n            </Col>\n        </Row>\n        <Row className=\"mt-4\">\n            <Col>\n                <CarImage\n                    src={ leasingOffer?.car.avatar ? leasingOffer.car.avatar : noImgDealer }\n                    alt=\"Zdjęcie samochodu\" />\n            </Col>\n        </Row>\n        <OfferDetails className=\"mt-4\">\n            <Col className=\"d-flex flex-column\">\n                <OfferDetailsTitle className=\"mb-0\"> Okres:</OfferDetailsTitle>\n                <OfferDetailsValue className=\"mb-2 mx-auto\"> {changePeriodFormat(leasingOffer?.period)}</OfferDetailsValue>\n            </Col>\n            <Col className=\"d-flex flex-column\">\n                <OfferDetailsTitle className=\"mb-0\"> Wpłata ({leasingOffer?.self_deposit}%):</OfferDetailsTitle>\n                <OfferDetailsValue className=\"mb-2 mx-auto\"> {changeSelfDepositFormat(leasingOffer?.self_deposit,  leasingOffer?.value)} </OfferDetailsValue>\n            </Col>\n            <Col className=\"d-flex flex-column\">\n                <OfferDetailsTitle className=\"mb-0\"> Limit roczny:</OfferDetailsTitle>\n                <OfferDetailsValue className=\"mb-2 mx-auto\"> {changeMileageLimitFormat(leasingOffer?.mileage_limit)} </OfferDetailsValue>\n            </Col>\n        </OfferDetails>\n        <OfferIconsWrapper className=\"mt-4\">\n            <Col className=\"d-flex flex-column\" style={{ alignItems: \"center\" }}>\n                <img\n                    className=\"m-auto\"\n                    src={`/static/dist/public/assets/leasing/tire_${leasingOffer?.tires_included ? 'active' : 'disabled'}.svg`}\n                    alt=\"tire\"\n                />\n                <p className={`\"mx-auto mt-2 ${leasingOffer?.tires_included ? \"font-weight-bold\" : \"\"}`}> Opony </p>\n            </Col>\n            <Col className=\"d-flex flex-column\" style={{ alignItems: \"center\" }}>\n                <img\n                    className=\"m-auto\"\n                    src={`/static/dist/public/assets/leasing/inspection_${leasingOffer?.insurance_included ? 'active' : 'disabled'}.svg`}\n                    alt=\"inspection\"\n                />\n                <p className={`\"mx-auto mt-2 ${leasingOffer?.insurance_included ? \"font-weight-bold\" : \"\"}`}> Ubezpieczenie </p>\n            </Col>\n            <Col className=\"d-flex flex-column\" style={{ alignItems: \"center\" }}>\n                <img\n                    className=\"m-auto\"\n                    src={`/static/dist/public/assets/leasing/trailer_${leasingOffer?.assistance_included ? 'active' : 'disabled'}.svg`}\n                    alt=\"trailer\"\n                />\n                <p className={`\"mx-auto mt-2 ${leasingOffer?.assistance_included ? \"font-weight-bold\" : \"\"}`}> Assistance </p>\n            </Col>\n            <Col className=\"d-flex flex-column\" style={{ alignItems: \"center\" }}>\n                <img\n                    className=\"m-auto\"\n                    src={`/static/dist/public/assets/leasing/mechanic_${leasingOffer?.service_included ? 'active' : 'disabled'}.svg`}\n                    alt=\"mechanic\"\n                />\n                <p className={`\"mx-auto mt-2 ${leasingOffer?.service_included ? \"font-weight-bold\" : \"\"}`}> Serwis </p>\n            </Col>\n        </OfferIconsWrapper>\n        <Row className=\"mt-3 d-none d-lg-block\">\n            <Col>\n                <a href={`/finansowanie/wynajem/offer/${leasingOffer?.id}/${document.location.search}`}>\n                    <button type=\"button\" className=\"button-secondary w-100\">powrót do oferty</button>\n                </a>\n            </Col>\n        </Row>\n  </Wrapper>\n  );\n};\n\nexport default LeasingOfferSummary;\n","export interface SelectItem {\n    id: any;\n    value: string;\n    name: string;\n}\n\nexport const FilterOptions: SelectItem[] = [\n    { id: 0, name: \"Najlepiej oceniane\", value: \"average__rating\" },\n    { id: 1, name: \"Od A do Z\", value: \"display_name\" },\n    { id: 2, name: \"Największa liczba ocen\", value: \"opinions__count\" },\n    { id: 3, name: \"Największy % rekomendacji\", value: \"recommended__percentage\" },\n];","import styled from \"styled-components\";\nimport { Button, Form, Row } from \"react-bootstrap\";\n\nexport const CustomInput = styled(Form.Control)`\n  border: 1px solid #404040;\n  border-radius: 10px;\n  opacity: 1;\n  height: 36px;\n  min-width: 240px;\n  text-align: left;\n  font: normal normal normal 12px/28px Montserrat;\n  letter-spacing: 0px;\n  color: #000000;\n  opacity: 0.5;\n\n  &:focus {\n    color: #000000;\n  }\n\n  @media only screen and (min-width: 576px) {\n    font: normal normal normal 16px/28px Montserrat;\n    height: 58px;\n  }\n`;\n\nexport const CustomCheckBoxLabel = styled(Form.Check.Label)`\n  text-align: left;\n  font: normal normal normal 12px/18px Montserrat;\n  letter-spacing: 0px;\n  opacity: 1;\n  cursor: pointer;\n\n  @media only screen and (min-width: 576px) {\n    font: normal normal normal 18px/28px Montserrat;\n  }\n`;\nexport const CustomCheckBoxInput = styled(Form.Check.Input)`\n  width: 23px;\n  height: 23px;\n  border: 2px solid #404040;\n  opacity: 1;\n`;\nexport const CustomCheck = styled(Form.Check)`\n  min-width: 240px;\n`;\n\nexport const CustomButton = styled(Button)<CustomButtonProps>`\n  background: ${(props) =>\n    props.$valid ? \"#f6a335\" : \"#f6a335\"} 0% 0% no-repeat padding-box; // 404040\n  border-radius: 15px;\n  width: 60%;\n  opacity: 1;\n  &:hover {\n    color: #fff;\n    background-color: #f6a335;\n    border-color: #fff;\n  }\n  &:active {\n    color: #fff !important;\n    background-color: #f6a335 !important;\n    border-color: #fff !important;\n    box-shadow: none !important;\n  }\n  &:focus {\n    color: #fff !important;\n    background-color: #f6a335 !important;\n    border-color: #fff !important;\n    box-shadow: none !important;\n  }\n  &:disabled {\n    color: #fff !important;\n    background-color: #404040 !important;\n    border-color: #fff !important;\n    box-shadow: none !important;\n  }\n`;\n\ninterface CustomButtonProps {\n  valid: boolean;\n}\n\nexport const Description = styled(CustomCheckBoxLabel)`\n  font: normal normal normal 12px/12px Montserrat;\n\n  @media only screen and (min-width: 576px) {\n    font: normal normal normal 14px/16px Montserrat;\n  }\n`;\n\nexport const CustomTextAreaInput = styled(CustomInput)`\n  height: 150px;\n  width: 100%;\n  padding: 0.375rem 0.75rem;\n`;\n\nexport const Extend = styled.a`\n  cursor: pointer;\n  :hover {\n    text-decoration: none;\n  }\n`;\nexport const SortTitle = styled.p`\n  font: normal normal normal 16px/16px Montserrat;\n  letter-spacing: 0px;\n  color: #404040;\n`;\n\nexport const SortDescription = styled.p`\n  font: italic normal normal 12px/16px Montserrat;\n  letter-spacing: 0px;\n  color: #404040;\n`;\n\nexport const FilterRow = styled(Row)`\n  height: auto;\n  @media only screen and (min-width: 992px) {\n    height: 36px;\n  }\n  \n`;\n\nexport const FormWrapper = styled.div`\n  min-width: 400px;\n`;","//@ts-nocheck\nimport suv_unselected from \"@/car-bodies/unselected/suv.svg\";\nimport cabrio_unselected from \"@/car-bodies/unselected/cabriolet.svg\";\nimport coupe_unselected from \"@/car-bodies/unselected/coupe.svg\";\nimport crossover_unselected from \"@/car-bodies/unselected/crossover.svg\";\nimport dostawcze_unselected from \"@/car-bodies/unselected/dostawcze.svg\";\nimport hatchback_unselected from \"@/car-bodies/unselected/hatchback.svg\";\nimport kombi_unselected from \"@/car-bodies/unselected/kombi.svg\";\nimport sedan_unselected from \"@/car-bodies/unselected/sedan.svg\";\nimport van_unselected from \"@/car-bodies/unselected/van.svg\";\nimport pickup_unselected from \"@/car-bodies/unselected/pickup.svg\";\n\nimport suv from \"@/car-bodies/selected/suv.svg\";\nimport cabrio from \"@/car-bodies/selected/cabriolet.svg\";\nimport coupe from \"@/car-bodies/selected/coupe.svg\";\nimport crossover from \"@/car-bodies/selected/crossover.svg\";\nimport dostawcze from \"@/car-bodies/selected/dostawcze.svg\";\nimport hatchback from \"@/car-bodies/selected/hatchback.svg\";\nimport kombi from \"@/car-bodies/selected/kombi.svg\";\nimport sedan from \"@/car-bodies/selected/sedan.svg\";\nimport van from \"@/car-bodies/selected/van.svg\";\nimport pickup from \"@/car-bodies/selected/pickup.svg\";\n\nexport interface CarBodyType {\n    image:any;\n    label:string;\n    slug:string;\n}\nexport interface CarBodyObject {\n    [key:string]:CarBodyType\n}\n\nexport const carBodiesUnselected:CarBodyObject = {\n  suv: {\n    image: suv_unselected,\n    label: \"SUV\",\n    slug:'suv'\n  },\n  cabrio: {\n    image: cabrio_unselected,\n    label: \"Cabriolet\",\n    slug:'cabrio'\n  },\n  coupe: {\n    image: coupe_unselected,\n    label: \"Coupe\",\n    slug:'coupe'\n  },\n  crossover: {\n    image: crossover_unselected,\n    label: \"Crossover\",\n    slug:'crossover'\n  },\n  dostawcze: {\n    image: dostawcze_unselected,\n    label: \"Dostawcze\",\n    slug:'dostawcze'\n  },\n  hatchback: {\n    image: hatchback_unselected,\n    label: \"Hatchback\",\n    slug:'hatchback'\n  },\n  kombi: {\n    image: kombi_unselected,\n    label: \"Kombi\",\n    slug:'kombi'\n  },\n  sedan: {\n    image: sedan_unselected,\n    label: \"Sedan\",\n    slug:'sedan'\n  },\n  van: {\n    image: van_unselected,\n    label: \"Van\",\n    slug:'van'\n  },\n  pickup: {\n    image: pickup_unselected,\n    label: \"Pickup\",\n    slug:'pickup'\n  },\n};\nexport const carBodiesSelected:CarBodyObject = {\n    suv: {\n        image: suv,\n        label: \"SUV\",\n        slug:'suv'\n      },\n      cabrio: {\n        image: cabrio,\n        label: \"Cabriolet\",\n        slug:'cabrio'\n      },\n      coupe: {\n        image: coupe,\n        label: \"Coupe\",\n        slug:'coupe'\n      },\n      crossover: {\n        image: crossover,\n        label: \"Crossover\",\n        slug:'crossover'\n      },\n      dostawcze: {\n        image: dostawcze,\n        label: \"Dostawcze\",\n        slug:'dostawcze'\n      },\n      hatchback: {\n        image: hatchback,\n        label: \"Hatchback\",\n        slug:'hatchback'\n      },\n      kombi: {\n        image: kombi,\n        label: \"Kombi\",\n        slug:'kombi'\n      },\n      sedan: {\n        image: sedan,\n        label: \"Sedan\",\n        slug:'sedan'\n      },\n      van: {\n        image: van,\n        label: \"Van\",\n        slug:'van'\n      },\n      pickup: {\n        image: pickup,\n        label: \"Pickup\",\n        slug:'pickup'\n      },\n};\n","import React from \"react\";\nimport styled from \"styled-components\";\n\ninterface Props {\n  visible:boolean;\n}\n\n\nconst SpinnerBackground = styled.div<Visible>`\n    width: 100vw;\n    height: 100vh;\n    position: fixed;\n    top: 0;\n    left: 0;\n    z-index: 10000;\n    background: rgba(128, 128, 128, 0.8);\n    justify-content: center;\n    align-items: center;\n    display: ${(props) => (props.open ? \"flex\" : \"none\")};\n`\nconst Spinner = styled.div`\n    border: 16px solid #f3f3f3;\n    border-top: 16px solid #f6a335;\n    border-radius: 50%;\n    width: 120px;\n    height: 120px;\n    animation: spin 2s linear infinite;\n`\n\ninterface Visible {\n    open: boolean;\n\n}\n\nconst Loader = (props: Props) => {\n  const { visible } = props;\n\n  return (\n    <SpinnerBackground open={visible}>\n      <Spinner></Spinner>\n    </SpinnerBackground>\n  );\n};\nexport default Loader;\n","import React, { useEffect, useState, useCallback, createRef } from \"react\";\nimport { Form, Row, Col, Spinner } from \"react-bootstrap\";\nimport * as Scroll from \"react-scroll\";\nimport {\n  fetchLeasingOfferDealers,\n  fetchLeasingOfferDetails,\n  postUserLeasingContactForm,\n} from \"src/scripts/services/leasing.resource\";\nimport DropdownOptions from \"../common/DropdownOptions\";\nimport DropdownSelect from \"../common/DropdownSelect\";\nimport DealerCard from \"../DealerCard/DealerCard\";\nimport LeasingOfferSummary from \"./LeasingOfferSummary/LeasingOfferSummary\";\nimport { Dealer } from \"../../models/Dealer\";\nimport { Voivodeship } from \"../../models/Voivodeship\";\nimport { FilterOptions, SelectItem } from \"../../static-data/FilterOptions\";\nimport { VoivodeshipsList } from \"../../static-data/Voivodeships\";\nimport {\n  CustomInput,\n  CustomCheck,\n  CustomCheckBoxInput,\n  CustomCheckBoxLabel,\n  CustomTextAreaInput,\n  Description,\n  CustomButton,\n  Extend,\n  SortTitle,\n  SortDescription,\n  FilterRow,\n  FormWrapper,\n} from \"./Styled\";\nimport { LeasingOffer } from \"../../models/LeasingOffer\";\nimport ErrorModal from \"../common/ErrorModal\";\nimport ReactDOM from \"react-dom\";\nimport { useGoogleReCaptcha, GoogleReCaptchaProvider } from 'react-google-recaptcha-v3';\nimport { carBodiesUnselected } from \"src/scripts/enums/car-bodies\";\nimport Loader from \"../common/Loader\";\n\nconst LeasingOfferContactForm = () => {\n  const [leasingOffer, setLeasingOffer] = useState<LeasingOffer>();\n\n  const [dealers, setDealers] = useState<Dealer[]>([]);\n  const [dealersFirstApiCallFinished, setDealersFirstApiCallFinished] = useState<boolean>(false);\n  const [companyPurchase, setCompanyPurchase] = useState<boolean>(true);\n  const [extendedDisclaimer, setExtendedDisclaimer] = useState<boolean>(false);\n  const [nameForm, setNameForm] = useState<string>(\"\");\n  const [surnameForm, setSurnameForm] = useState<string>(\"\");\n  const [emailForm, setEmailForm] = useState<string>(\"\");\n  const [phoneNumberForm, setPhoneNumberForm] = useState<string>(\"\");\n  const [nipForm, setNipForm] = useState<string>(\"\");\n  const [messageForm, setMessageForm] = useState<string>(\"\");\n\n  const [isNameValid, setIsNameValid] = useState<boolean>(true);\n  const [isSurnameValid, setIsSurnameValid] = useState<boolean>(true);\n  const [isEmailValid, setIsEmailValid] = useState<boolean>(true);\n  const [isPhoneNumberValid, setIsPhoneNumberValid] = useState<boolean>(true);\n  const [isNipValid, setIsNipValid] = useState<boolean>(true);\n\n  const [validated, setValidated] = useState(false);\n  const [formCorrect, setFormCorrect] = useState(false);\n\n//   const [showErrorModal, setShowErrorModal] = useState(false);\n//   const [msgErrorModal, setMsgErrorModal] = useState<string>(\"\");\n  const [selectedDealers, setSelectedDealers] = useState<number[]>();\n  const [selectedWorkers, setSelectedWorkers] = useState<number[]>();\n\n  const [voivodeships, setVoivodeships] =\n    useState<Voivodeship[]>(VoivodeshipsList);\n  const [selectedVoivodeships, setSelectedVoivodeships] = useState<\n    Voivodeship[]\n  >([]);\n\n  const [filterOptions, setFilterOptions] =\n    useState<SelectItem[]>(FilterOptions);\n  const [selectedFilter, setSelectedFilter] = useState<SelectItem>(\n    FilterOptions[0]\n  );\n\n  const [statementCheckbox, setStatementCheckbox] = useState<boolean>(false);\n\n  const [loadingDealers, setLoadingDealers] = useState(false);\n  const { executeRecaptcha } = useGoogleReCaptcha();\n  const buttonRef = createRef<HTMLButtonElement>();\n\n\n  const capitalizeFirstLetter = (\n    event: React.FormEvent<HTMLInputElement>\n  ): string => {\n    return event.currentTarget.value.length > 0\n      ? `${event.currentTarget.value[0].toUpperCase()}${event.currentTarget.value.substring(\n          1\n        )}`\n      : event.currentTarget.value;\n  };\n\n  const validateEmail = (event: React.FormEvent<HTMLInputElement>) => {\n    setIsEmailValid(\n      /^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{2,3})+$/.test(\n        event.currentTarget.value\n      )\n    );\n  };\n\n  const validatePhoneNumber = (event: React.FormEvent<HTMLInputElement>) => {\n    setIsPhoneNumberValid(/^(\\+\\d{2})?\\d{9}$/.test(event.currentTarget.value));\n  };\n\n  const validateNip = (event: React.FormEvent<HTMLInputElement>) => {\n    setIsNipValid(/^[0-9]{10}$/.test(event.currentTarget.value));\n  };\n\n  const fetchDealerData = async (brand: string) => {\n    const url = new URL(window.location.href);\n    const pk = parseInt(url.pathname.split(\"/\")[4]);\n    const apiSearchParams = {\n      salon: true,\n      car_brands__name__in: brand,\n      voivodeship__in: selectedVoivodeships.map((value) => value.id).join(\",\"),\n      ordering: selectedFilter.value,\n    };\n\n    const response = await fetchLeasingOfferDealers(apiSearchParams);\n    if (response.data.results) {\n      const paidVerified = response.data.results.filter(\n        (dealer) => dealer.paid === true && dealer.verified === true && dealer.manager !== null\n      );\n      setDealers(paidVerified)\n      // if (paidVerified.length !== 0) {\n      //   setDealers(paidVerified)\n      // } else {\n      //   setDealers(response.data.results);\n      // }\n\n      setLoadingDealers(false);\n    }\n    if (!dealersFirstApiCallFinished) {\n      setDealersFirstApiCallFinished(true)\n    }\n  };\n\n  useEffect(() => {\n    const fetchData = async () => {\n      const url = new URL(window.location.href);\n      const pk = parseInt(url.pathname.split(\"/\")[4]);\n      const response = await fetchLeasingOfferDetails(pk);\n      if (response.data) {\n        setLeasingOffer(response.data);\n        if (response.data.car) {\n          fetchDealerData(response.data.car.brand.name);\n        }\n      }\n    };\n\n    fetchData();\n  }, []);\n\n  useEffect(() => {\n    if (leasingOffer) {\n      setLoadingDealers(true);\n      fetchDealerData(leasingOffer.car.brand.name);\n    }\n  }, [selectedVoivodeships, selectedFilter]);\n\n  const validateForm = (event: any) => {\n    const form = event.currentTarget;\n    setValidated(true);\n    event.preventDefault();\n    event.stopPropagation();\n    if (form.checkValidity()) {\n      setFormCorrect(true);\n      if (!dealersFirstApiCallFinished) {\n        setLoadingDealers(true);\n      }\n      Scroll.animateScroll.scrollTo(750);\n    }\n    else\n    {\n      Scroll.animateScroll.scrollTo(0);\n    }\n  };\n\n\n  const handleSubmit = () => {\n    const url = new URL(window.location.href);\n    const pk = parseInt(url.pathname.split(\"/\")[4]);\n    const data = {\n      name: nameForm,\n      surname: surnameForm,\n      email_address: emailForm,\n      phone_number: phoneNumberForm,\n      nip: nipForm,\n      purchase_type: companyPurchase ? 2 : 1,\n      message: messageForm,\n      offer_pk: pk,\n      dealers: selectedDealers,\n      workers: selectedWorkers,\n      voivodeships: selectedVoivodeships ? selectedVoivodeships : null,\n    };\n    const postData = async () => {\n      if (!executeRecaptcha) {\n        console.error('Execute recaptcha not yet available');\n        setLoadingDealers(false);\n        return;\n      }\n      \n      const recaptchaToken = await executeRecaptcha('contact');\n      const dataWithToken = { ...data, recaptcha: recaptchaToken };\n\n      const response = await postUserLeasingContactForm(dataWithToken).catch((_) => {\n        setLoadingDealers(false);\n        console.error(\"Form submission failed\", _);\n      });\n      if (response && response.status === 200) {\n        if (!data.dealers) {\n          window.location.href = `/finansowanie/wynajem/thanks/?goto=1`; // lead goes to us\n        }\n        else\n        {\n          window.location.href = `/finansowanie/wynajem/thanks/?goto=2`; // lead goes to dealer\n        }\n        // TODO wersja dla importera\n      }\n    };\n    setLoadingDealers(true);\n    postData();\n  };\n\n  return (\n    <div className=\"mt-4 mt-lg-0 position-relative\">\n      <Loader visible={loadingDealers}></Loader>\n      <Form noValidate validated={validated} onSubmit={validateForm}>\n        <Row className=\"justify-content-center\">\n          <Col className=\"col order-2 order-lg-1 mt-3 mt-lg-0\">\n            <FormWrapper>\n              <Row>\n                <Col className=\"d-flex justify-content-center\">\n                  <Form.Group className=\"w-100\">\n                    <CustomInput\n                      type=\"text\"\n                      required\n                      placeholder=\"Imię\"\n                      pattern=\"[AaĄąBbCcĆćDdEeĘęFfGgHhIiJjKkLlŁłMmNnŃńOoÓóPpRrSsŚśTtUuWwYyZzŹźŻżVvXxQq ]+\"\n                      value={nameForm}\n                      isInvalid={!isNameValid}\n                      onChange={(e: React.FormEvent<HTMLInputElement>) =>\n                        setNameForm(capitalizeFirstLetter(e))\n                      }\n                      onBlur={(e: React.FormEvent<HTMLInputElement>) =>\n                        setIsNameValid(\n                          /^([^0-9]*)$/.test(e.currentTarget.value)\n                        )\n                      }\n                    />\n                    <Form.Control.Feedback type=\"invalid\">\n                      Imię nie jest poprawne.\n                    </Form.Control.Feedback>\n                  </Form.Group>\n                </Col>\n                <Col className=\"d-flex justify-content-center mt-2 mt-sm-0 mt-lg-2 mt-xl-0\">\n                  <Form.Group className=\"w-100\">\n                    <CustomInput\n                      type=\"text\"\n                      required\n                      placeholder=\"Nazwisko\"\n                      pattern=\"[AaĄąBbCcĆćDdEeĘęFfGgHhIiJjKkLlŁłMmNnŃńOoÓóPpRrSsŚśTtUuWwYyZzŹźŻżVvXxQq ]+\"\n                      value={surnameForm}\n                      isInvalid={!isSurnameValid}\n                      onChange={(e: React.FormEvent<HTMLInputElement>) =>\n                        setSurnameForm(capitalizeFirstLetter(e))\n                      }\n                      onBlur={(e: React.FormEvent<HTMLInputElement>) =>\n                        setIsSurnameValid(\n                          /^([^0-9]*)$/.test(e.currentTarget.value)\n                        )\n                      }\n                    />\n                    <Form.Control.Feedback type=\"invalid\">\n                      Nazwisko nie jest poprawne.\n                    </Form.Control.Feedback>\n                  </Form.Group>\n                </Col>\n              </Row>\n              <Row className=\"mt-2\">\n                <Col className=\"d-flex justify-content-center\">\n                  <Form.Group className=\"w-100\">\n                    <CustomInput\n                      type=\"email\"\n                      required\n                      pattern=\"^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{2,3})+$\"\n                      placeholder=\"Email\"\n                      value={emailForm}\n                      isInvalid={!isEmailValid}\n                      onChange={(e: React.FormEvent<HTMLInputElement>) =>\n                        setEmailForm(e.currentTarget.value)\n                      }\n                      onBlur={(e: React.FormEvent<HTMLInputElement>) =>\n                        validateEmail(e)\n                      }\n                    />\n                    <Form.Control.Feedback type=\"invalid\">\n                      Adres email jest nie poprawny.\n                    </Form.Control.Feedback>\n                  </Form.Group>\n                </Col>\n                <Col className=\"d-flex justify-content-center mt-2 mt-sm-0 mt-lg-2 mt-xl-0\">\n                  <Form.Group className=\"w-100\">\n                    <CustomInput\n                      type=\"tel\"\n                      required\n                      pattern=\"^(\\+\\d{2})?\\d{9}$\"\n                      placeholder=\"Nr telefonu\"\n                      value={phoneNumberForm}\n                      isInvalid={!isPhoneNumberValid}\n                      onChange={(e: React.FormEvent<HTMLInputElement>) =>\n                        setPhoneNumberForm(e.currentTarget.value)\n                      }\n                      onBlur={(e: React.FormEvent<HTMLInputElement>) =>\n                        validatePhoneNumber(e)\n                      }\n                    />\n                    <Form.Control.Feedback type=\"invalid\">\n                      Nr telefonu jest nie poprawny.\n                    </Form.Control.Feedback>\n                  </Form.Group>\n                </Col>\n              </Row>\n              <Row className=\"mt-2\">\n                <Col className=\"d-flex justify-content-center flex-column\">\n                  <CustomCheck type=\"radio\" name=\"type\" label=\"Zakup na firmę\">\n                    <CustomCheckBoxInput\n                      type=\"radio\"\n                      checked={companyPurchase}\n                      onChange={() => setCompanyPurchase(true)}\n                    />\n                    <CustomCheckBoxLabel\n                      className=\"ml-2 mt-1\"\n                      onClick={() => setCompanyPurchase(true)}\n                    >\n                      Zakup na firmę\n                    </CustomCheckBoxLabel>\n                  </CustomCheck>\n                  <CustomCheck type=\"radio\" name=\"type\" label=\"Zakup prywatnie\">\n                    <CustomCheckBoxInput\n                      type=\"radio\"\n                      checked={!companyPurchase}\n                      onChange={() => setCompanyPurchase(false)}\n                    />\n                    <CustomCheckBoxLabel\n                      className=\"ml-2 mt-1\"\n                      onClick={() => setCompanyPurchase(false)}\n                    >\n                      Zakup prywatnie\n                    </CustomCheckBoxLabel>\n                  </CustomCheck>\n                </Col>\n                <Col className=\"d-flex justify-content-center mt-2 mt-sm-0\">\n                  {companyPurchase && (\n                    <Form.Group className=\"w-100\">\n                      <CustomInput\n                        required\n                        type=\"numbers\"\n                        pattern=\"^[0-9]{10}$\"\n                        placeholder=\"Nip\"\n                        value={nipForm}\n                        isInvalid={!isNipValid}\n                        onChange={(e: React.FormEvent<HTMLInputElement>) =>\n                          setNipForm(e.currentTarget.value)\n                        }\n                        onBlur={(e: React.FormEvent<HTMLInputElement>) =>\n                          validateNip(e)\n                        }\n                      />\n                      <Form.Control.Feedback type=\"invalid\">\n                        Nip jest nie poprawny.\n                      </Form.Control.Feedback>\n                    </Form.Group>\n                  )}\n                </Col>\n              </Row>\n              <Row className=\"mt-2\">\n                <Col>\n                  <CustomTextAreaInput\n                    as=\"textarea\"\n                    placeholder=\"Wiadomość (opcjonalnie)\"\n                    onChange={(e: React.FormEvent<HTMLTextAreaElement>) =>\n                      setMessageForm(e.currentTarget.value)\n                    }\n                  />\n                </Col>\n              </Row>\n              <Row className=\"mt-2\">\n                <Col>\n                  <div>\n                    <Form.Check type=\"checkbox\" label=\"Disclaimer\">\n                      <CustomCheckBoxInput\n                        onChange={() =>\n                          setStatementCheckbox(!statementCheckbox)\n                        }\n                        checked={statementCheckbox}\n                        required\n                        type=\"checkbox\"\n                      />\n                      <Description className=\"ml-2 mt-1\">\n                        <a\n                          onClick={() =>\n                            setStatementCheckbox(!statementCheckbox)\n                          }\n                        >\n                          Oświadczam, że zapoznałem się z treścią\n                        </a>{\" \"}\n                        <a href=\"/terms/\" target=\"_blank\">\n                          Regulaminu Serwisu\n                        </a>{\" \"}\n                        <a\n                          onClick={() =>\n                            setStatementCheckbox(!statementCheckbox)\n                          }\n                        >\n                          oraz stanowiącymi ich integralną część\n                        </a>{\" \"}\n                        <a href=\"/privacy/\" target=\"_blank\">\n                          Polityką prywatności Serwisu\n                        </a>{\" \"}\n                        <a\n                          onClick={() =>\n                            setStatementCheckbox(!statementCheckbox)\n                          }\n                        >\n                          oraz\n                        </a>{\" \"}\n                        <a href=\"/cookies/\" target=\"_blank\">\n                          Polityką Plików Cookies\n                        </a>{\" \"}\n                        <a\n                          onClick={() =>\n                            setStatementCheckbox(!statementCheckbox)\n                          }\n                        >\n                          i akceptuję ich treść. Wyrażam zgodę na udostępnienie\n                          moich danych z formularza wybranym Dealerom i/lub\n                          importerom wygranej marki samochodu w celu nawiązania\n                          ze mną kontaktu na temat oferty handlowej oferowanych\n                          samochodów.\n                        </a>\n                        {extendedDisclaimer && (\n                          <a\n                            onClick={() =>\n                              setStatementCheckbox(!statementCheckbox)\n                            }\n                          >\n                            {\" \"}\n                            Oświadczam, że mam świadomość, iż wraz z wysłaniem\n                            formularza moje dane osobowe z formularza\n                            przekazywane są przez Poznajdealera sp. z o.o\n                            wskazanemu Dealerowi i/lub importerowi wygranej\n                            marki samochodu w celu nawiązania ze mną kontaktu na\n                            temat oferty handlowej oferowanych samochodów, w\n                            wybrany przeze mnie sposób, drogą elektroniczną na\n                            wskazany e-mail lub na wskazany numer telefonu.\n                            Jeżeli wybranie Dealera nie będzie możliwe, to wyrażam\n                            zgodę na przekazanie przez Poznajdealera sp. z o.o informacji\n                            zawartych w formularzu wybranemu przez Poznajdealera sp. z o.o\n                            Dealerowi i/lub importerowi wygranej marki samochodu.\n                            Wyrażenie zgody jest dobrowolne, ale niezbędne dla\n                            realizacji usługi. Mogę ją w każdym momencie\n                            wycofać, bez wpływu na legalność uprzedniego\n                            przetwarzania. Wraz z momentem przekazania danych\n                            Dealer i/lub importer staje się odrębnym\n                            administratorem moich danych osobowych,\n                            odpowiedzialnym za ich przetwarzanie.\n                            <Extend\n                              onClick={() => setExtendedDisclaimer(false)}\n                            >\n                              {\" \"}\n                              Zwiń\n                            </Extend>\n                          </a>\n                        )}\n                        {!extendedDisclaimer && (\n                          <Extend onClick={() => setExtendedDisclaimer(true)}>\n                            {\" \"}\n                            Rozwiń\n                          </Extend>\n                        )}\n                      </Description>\n                      <Form.Control.Feedback type=\"invalid\">\n                        Proszę zaznaczyć oświadczenie.\n                      </Form.Control.Feedback>\n                    </Form.Check>\n                  </div>\n                </Col>\n              </Row>\n            </FormWrapper>\n          </Col>\n          <Col className=\"col-auto order-1 order-lg-2\">\n            <LeasingOfferSummary leasingOffer={leasingOffer} />\n          </Col>\n        </Row>\n        <Row className=\"mt-4\">\n          <Col className=\"d-flex justify-content-center\">\n            <CustomButton\n              className=\"button-primary\"\n              type=\"submit\"\n              $valid={formCorrect}\n              ref={buttonRef}\n              onClick={() => buttonRef.current?.blur()}\n            >\n              Wybierz dealera\n            </CustomButton>\n          </Col>\n        </Row>\n      </Form>\n      {formCorrect && (\n        <FilterRow className=\"mt-4\">\n          <Col className=\"col-12 col-lg-auto d-none d-lg-flex order-lg-1\">\n            <SortTitle className=\"my-auto\">Sortuj:</SortTitle>\n          </Col>\n          <Col className=\"col-12 col-lg-auto d-flex order-lg-2 order-2 mt-2 mt-lg-0 justify-content-center\">\n            <DropdownOptions\n              open\n              options={filterOptions}\n              selectedOption={selectedFilter}\n              setSelectedOption={setSelectedFilter}\n            ></DropdownOptions>\n          </Col>\n          <Col className=\"col-12 col-lg-auto d-flex order-lg-3 order-3 mt-2 mt-lg-0 justify-content-center\">\n            <DropdownSelect\n              options={voivodeships}\n              selected={selectedVoivodeships}\n              setSelected={setSelectedVoivodeships}\n              placeholder=\"Województwo\"\n            />\n          </Col>\n          <Col className=\"col-12 col-lg d-flex order-lg-4 order-1 mt-2 mt-lg-0\">\n            <SortDescription className=\"my-auto text-break text-lg-left text-center\">\n              Możesz wybrać dowolną liczbę salonów, do których zostanie wysłane\n              zapytanie ofertowe oraz jednego doradcę w danym salonie.\n            </SortDescription>\n          </Col>\n        </FilterRow>\n      )}\n      {formCorrect && (\n        <div className=\"container\" style={{ minHeight: \"400px\" }}>\n          {dealers.map((dealer, i) => (\n            <Row className=\"mt-4\" key={`row-${i}`}>\n              <Col>\n                <DealerCard\n                  dealer={dealer}\n                  selectedDealers={selectedDealers}\n                  setSelectedDealers={setSelectedDealers}\n                  selectedWorkers={selectedWorkers}\n                  setSelectedWorkers={setSelectedWorkers}\n                ></DealerCard>\n              </Col>\n            </Row>\n          ))}\n          {dealers.length === 0 && (\n            <div className=\"d-flex justify-content-center align-items-center flex-column py-5\">\n              <img\n                className=\"my-2\"\n                style={{ height: \"50px\", opacity: \"0.3\" }}\n                src={carBodiesUnselected.coupe.image}\n              />\n              <h5>Brak dealerów spełniających dane kryteria</h5>\n              <h4 className=\"my-2\" style={{ textAlign: \"center\" }}>Nie szkodzi! Kliknij \"OK\" i wyślij zapytanie do nas, a my przekażemy informacje w odpowiednie ręce.</h4>\n              <CustomButton\n                  onClick={() => handleSubmit()}\n                  className=\"mt-3 w-30 button-primary mx-auto\"\n                >\n                  OK\n                </CustomButton>\n            </div>\n          )}\n          {dealers.length !== 0 && (\n            <Row className=\"mt-3\">\n              <Col\n                className=\"d-flex justify-content-center bg-light p-2\"\n                style={{\n                  position: \"fixed\",\n                  bottom: \"20px\",\n                  left: \"0\",\n                  right: \"0\",\n                }}\n              >\n                <CustomButton\n                  disabled={\n                    !((selectedDealers &&\n                      selectedDealers.length !== 0 ||\n                      selectedWorkers &&\n                      selectedWorkers.length !== 0) &&\n                    formCorrect)\n                  }\n                  onClick={() => handleSubmit()}\n                  className=\"w-80 button-primary mx-auto\"\n                >\n                  Wyślij wiadomość (\n                  {((selectedDealers && selectedDealers.length) ||\n                    0) + ((selectedWorkers && selectedWorkers.length) || 0)}\n                  )\n                </CustomButton>\n              </Col>\n            </Row>\n          )}\n        </div>\n      )}\n    </div>\n  );\n};\n\nconst leasingOfferContactForm = document.getElementById(\n  \"react--leasing-offer-contact-form\"\n);\nconst captchaKey = process.env.CAPTCHA_KEY || \"\";\n\nif (leasingOfferContactForm) {\n  ReactDOM.render(\n    <GoogleReCaptchaProvider reCaptchaKey={captchaKey} language=\"pl\">\n      <LeasingOfferContactForm />\n    </GoogleReCaptchaProvider>,\n    leasingOfferContactForm\n  );\n}\n","import React, { useEffect, useState } from \"react\";\nimport {Helmet} from \"react-helmet\";\nimport { Col, Row, Table } from \"react-bootstrap\";\nimport { increaseOfferPopularity } from \"src/scripts/services/leasing.resource\";\nimport { scrollToTop } from \"src/scripts/misc/utils\";\nimport { LeasingOffer } from \"../../../models/LeasingOffer\";\n\nvar origin = window.location.origin;\nconst includedIcons = {\n  yes: origin + \"/static/dist/public/assets/icons/minus.svg\",\n  no: origin + \"/static/dist/public/assets/icons/icon-review-accepted.svg\",\n};\n\ninterface Props {\n  leasingOffers: LeasingOffer[];\n  selectedLeasingOffer: LeasingOffer | undefined;\n  setSelectedLeasingOffer: (leasingOffer: LeasingOffer) => void;\n}\n\nconst LeasingOfferBrowser = (props: Props) => {\n  const { leasingOffers, selectedLeasingOffer, setSelectedLeasingOffer } = props;\n\n  const increasePopularity = async (offer: LeasingOffer) => {\n    await increaseOfferPopularity(offer.id);\n  };\n\n  let newDate = new Date();\n  let date = newDate.getDate();\n  newDate.setMonth(newDate.getMonth()+8)\n  let month = newDate.getMonth();\n  let year = newDate.getFullYear();\n  let separator = '-'\n  let priceValidUntil = `${year}${separator}${month<10?`0${month}`:`${month}`}${separator}${date<10?`0${date}`:`${date}`}`\n\n  return (\n    <div>\n      <h3 style={{ fontSize: \"large\" }}>Inne warianty oferty dla tego modelu</h3>\n      <Table responsive striped bordered hover size=\"sm\">\n        <thead>\n        <tr>\n          <th>#</th>\n          <th>Rata netto</th>\n          <th>Okres kontraktu</th>\n          <th>Przebieg roczny</th>\n          <th>Wkład własny</th>\n          <th>Opony</th>\n          <th>Ubezpieczenie</th>\n          <th>Assistance</th>\n          <th>Serwis</th>\n        </tr>\n        </thead>\n        <tbody>\n\n      {leasingOffers.map(offer => {\n        if (selectedLeasingOffer?.id !== offer.id)\n        return (\n            <tr key={offer.id} onClick={() => {setSelectedLeasingOffer(offer); increasePopularity(offer); scrollToTop()}}>\n              <Helmet>\n                <script type=\"application/ld+json\">\n                  {`{\n                    \"@context\": \"https://schema.org\",\n                    \"@type\": [\"Product\", \"Car\"],\n                    \"sku\": \"${offer?.id}\",\n                    \"brand\": \"${offer.car.brand.name}\",\n                    \"name\": \"Wynajem długoterminowy ${offer.car.brand.name} ${offer.car.model} za ${offer?.net_installment} zł\",\n                    \"alternateName\": \"Auto na abonament ${offer.car.brand.name} ${offer.car.model} za ${offer?.net_installment} zł\",\n                    \"image\" : \"https://www.poznajdealera.pl/${offer?.car?.avatar}/\",\n                    \"description\": \"Wynajem długoterminowy ${offer.car.brand.name} ${offer.car.model} ${offer.car.specification},\n                     wartość samochodu: ${offer?.value} zł,\n                     miesięczna rata netto: ${offer?.net_installment} zł,\n                     miesięczna rata brutto: ${offer?.gross_installment} zł,\n                     okres wynajmu: ${offer?.period} miesięcy,\n                     wpłata wstępna: ${offer?.self_deposit}%,\n                     limit roczny: ${offer?.mileage_limit} km.\",\n                    \"offers\": {\n                      \"@type\": \"Offer\",\n                      \"url\": \"https://www.poznajdealera.pl/finansowanie/wynajem/offer/${offer.id}/\",\n                      \"areaServed\": \"PL\",\n                      \"itemCondition\": \"https://schema.org/NewCondition\",\n                      \"availability\": \"https://schema.org/InStock\",\n                      \"businessFunction\": \"LeaseOut\",\n                      \"leaseLength\": {\n                        \"@type\": \"QuantitativeValue\",\n                        \"value\": ${offer?.period},\n                        \"unitText\": \"miesięcy\"\n                      },\n                      \"price\" : \"${offer?.net_installment}\",\n                      \"priceValidUntil\": \"${priceValidUntil}\",\n                      \"priceCurrency\" : \"PLN\",\n                      \"name\": \"Wynajem długoterminowy ${offer.car.brand.name} ${offer.car.model} za ${offer?.net_installment} zł\",\n                      \"alternateName\": \"Auto na abonament ${offer.car.brand.name} ${offer.car.model} za ${offer?.net_installment} zł\",\n                      \"description\": \"Wynajem długoterminowy ${offer.car.brand.name} ${offer.car.model} ${offer.car.specification},\n                       wartość samochodu: ${offer?.value} zł,\n                       miesięczna rata netto: ${offer?.net_installment} zł,\n                       miesięczna rata brutto: ${offer?.gross_installment} zł,\n                       okres wynajmu: ${offer?.period} miesięcy,\n                       wpłata wstępna: ${offer?.self_deposit}%,\n                       limit roczny: ${offer?.mileage_limit} km.\",\n                       \"image\" : \"https://www.poznajdealera.pl/${offer?.car?.avatar}/\"\n                    },\n                    \"aggregateRating\": {\n                      \"@type\": \"AggregateRating\",\n                      \"ratingValue\": \"5.0\",\n                      \"reviewCount\": \"1\"\n                    },\n                    \"review\": [\n                      {\n                        \"@type\": \"Review\",\n                        \"author\": {\n                          \"@type\": \"Person\",\n                          \"name\": \"Piotr\"\n                        },\n                        \"datePublished\": \"2022-08-10\",\n                        \"reviewBody\": \"Oferta wygląda na interesującą. Myślę, że warto poprosić o kontakt i uzyskać więcej szczegółów.\",\n                        \"name\": \"Oferta od importera\",\n                        \"reviewRating\": {\n                          \"@type\": \"Rating\",\n                          \"bestRating\": \"5\",\n                          \"ratingValue\": \"5\",\n                          \"worstRating\": \"1\"\n                        }\n                      }\n                    ]\n                  }`}\n                </script>\n              </Helmet>\n              <td style={{verticalAlign: \"middle\"}}>{offer.id}</td>\n              <td style={{verticalAlign: \"middle\"}}>{offer.net_installment} zł/mc</td>\n              <td style={{verticalAlign: \"middle\"}}>{offer.period} mc</td>\n              <td style={{verticalAlign: \"middle\"}}>{offer.mileage_limit} km</td>\n              <td style={{verticalAlign: \"middle\"}}>{offer.self_deposit}%</td>\n              <td style={{verticalAlign: \"middle\"}}>\n                <img className=\"mx-auto d-block\" src={offer.tires_included ? includedIcons.no : includedIcons.yes} alt=\"status\" />\n              </td>\n              <td style={{verticalAlign: \"middle\"}}>\n                <img className=\"mx-auto d-block\" src={offer.insurance_included ? includedIcons.no : includedIcons.yes} alt=\"status\" />\n              </td>\n              <td style={{verticalAlign: \"middle\"}}>\n                <img className=\"mx-auto d-block\" src={offer.assistance_included ? includedIcons.no : includedIcons.yes} alt=\"status\" />\n              </td>\n              <td style={{verticalAlign: \"middle\"}}>\n                <img className=\"mx-auto d-block\" src={offer.service_included ? includedIcons.no : includedIcons.yes} alt=\"status\" />\n              </td>\n            </tr>\n        )\n      })}\n\n        </tbody>\n      </Table>\n    </div>\n  );\n};\n\nexport default LeasingOfferBrowser;\n","export const scrollToTop = () => {\n  window.scrollTo({\n    top: 0,\n    behavior: 'smooth' // for smoothly scrolling\n  });\n};\n","import styled from \"styled-components\";\n\nexport const Wrapper = styled.div`\n    height: auto;\n`;","import { useState, useEffect } from 'react';\nexport enum ScreenBreakpoints {\n    // Same as in bootstrap.\n    SMALL = 768,\n    MEDIUM = 992,\n    LARGE = 1200,\n    EXTRA_LARGE = 1400,\n  }\n  \n\nconst useMobileRecognizer = (screenBreakpoint: ScreenBreakpoints) => {\n  const [width, setWidth] = useState<number>(window.innerWidth);\n  const handleWindowSizeChange = () => {\n    setWidth(window.innerWidth);\n  };\n  useEffect(() => {\n    window.addEventListener('resize', handleWindowSizeChange);\n    return () => {\n      window.removeEventListener('resize', handleWindowSizeChange);\n    };\n  }, []);\n\n  return width <= screenBreakpoint;\n};\n\nexport default useMobileRecognizer;\n","import React, { useEffect, useState } from \"react\";\nimport {Helmet} from \"react-helmet\";\nimport { Wrapper } from \"./Styled\";\nimport { Row, Col } from \"react-bootstrap\";\nimport styled from \"styled-components\";\nimport { imagePlaceholder } from \"src/scripts/enums/defaults\";\nimport useMobileRecognizer, {\n  ScreenBreakpoints,\n} from \"src/scripts/hooks/useMobileRecognizer\";\ninterface Props {\n  images?: { image: string }[];\n  loading?: boolean;\n}\nconst LGalleryImage = styled.a`\n  border-radius: 15px;\n  ${(props) => {\n    if (props.href) {\n      return `background-image: url(${props.href})`;\n    }\n  }};\n  background-size: cover;\n  background-position: center;\n  width: 100%;\n  height: 500px;\n  @media screen and (max-width: 991px) {\n    height: 400px;\n  }\n  @media only screen and (max-width: 767px) {\n    height: 300px;\n  }\n  @media screen and (max-width: 400px) {\n    height: 200px;\n  }\n`;\nconst Dot = styled.div<{ active: boolean }>`\n  border-radius: 100%;\n  width: 16px;\n  height: 16px;\n  margin: 3px;\n  border-style: solid;\n  border-width: 2px;\n  background-color: ${(props) => (props.active ? \"#f6a335\" : \"#ffffff7f\")};\n  border-color: #f6a335;\n`;\nconst DotContainer = styled.div`\n  position: absolute;\n  bottom: 10px;\n  left: 50%;\n  transform: translateX(-50%);\n`;\nconst ColWithHiddenScroll = styled(Col)`\n  &::-webkit-scrollbar {\n    display: none;\n  }\n`;\nconst SmallImage = styled.img`\n  border-radius: 15px;\n  width: 100%;\n  object-fit: cover;\n  height: 92px;\n`;\nconst ChevronButtonLeft = styled.button`\n  mix-blend-mode: difference;\n  position: absolute;\n  width: 20%;\n  height: 100%;\n  left: 15px;\n  @media only screen and (max-width: 767px) {\n    width: 25px;\n    height: 25px;\n  }\n`;\nconst ChevronButtonRight = styled(ChevronButtonLeft)`\n  left:calc(80% - 15px);\n  transform: rotate(180deg);\n`;\n\nconst ChevronImage = styled.img`\n  @media only screen and (max-width: 767px) {\n    width: 25px;\n    height: 25px;\n  }\n`;\nconst StyledCol = styled(Col)`\n  position: relative;\n  border-radius: 15px;\n  height: 500px;\n  @media screen and (max-width: 991px) {\n    height: 400px;\n  }\n  @media only screen and (max-width: 767px) {\n    height: 300px;\n  }\n  @media screen and (max-width: 400px) {\n    height: 200px;\n  }\n`;\nconst LeasingOfferGallery = (props: Props) => {\n  const { images, loading } = props;\n  const [imageChoices, setImageChoices] =\n    useState<{ image: string; id: number }[]>();\n  const [currentImage, setCurrentImage] =\n    useState<{ image: string; id: number }>();\n  useEffect(() => {\n    if (images && images.length > 0) {\n      let imagesToSet = [...images];\n      // imagesToSet.\n      const newChoices = imagesToSet.map((item, index) => ({\n        image: item.image,\n        id: index,\n      }));\n      newChoices.splice(0, 1);\n      setImageChoices(newChoices);\n    } else if (!loading && (!images || images.length === 0)) {\n      let toSet = [];\n      for (let i = 1; i < 6; i++) {\n        toSet.push({\n          image: imagePlaceholder,\n          id: i,\n        });\n      }\n      setImageChoices(toSet);\n    }\n  }, [images, loading]);\n  useEffect(() => {\n    if (images && images.length > 0) {\n      setCurrentImage({\n        image: images[0].image,\n        id: 0,\n      });\n    } else if (!loading && (images == undefined || images.length === 0)) {\n      setCurrentImage({\n        image: imagePlaceholder,\n        id: 0,\n      });\n    }\n  }, [images, loading]);\n  const isMobile = useMobileRecognizer(ScreenBreakpoints.MEDIUM);\n  return (\n    <Wrapper>\n      <Helmet>\n        <script>{`\n          lightbox.option({\n            'resizeDuration': 200,\n            'wrapAround': true,\n            'albumLabel': \"Zdjęcie %1 z %2\",\n            'disableScrolling': true,\n            'imageFadeDuration': 200,\n            'alwaysShowNavOnTouchDevices': true\n          })\n          `}\n        </script>\n      </Helmet>\n      <Row className=\"justify-content-center\">\n        <StyledCol\n          className=\"d-flex justify-content-center flex-column flex-lg-row\"\n        >\n          <LGalleryImage\n            href={currentImage?.image}\n            data-lightbox=\"gallery\"\n          ></LGalleryImage>\n          {imageChoices && imageChoices?.length > 0 && (\n            <>\n              {\" \"}\n              <ChevronButtonLeft\n                onClick={() => {\n                  if ( currentImage && images && images.length > 1) {\n                    const newChoices = [...imageChoices];\n                    newChoices.splice(currentImage!.id, 0, currentImage!);\n                    let nextIndex = newChoices.findIndex(\n                      (item) => item.image === currentImage.image\n                    ) -1;\n                    nextIndex = nextIndex <0 ? newChoices.length-1 : nextIndex;\n                    const newCurrent = newChoices[nextIndex];\n                    newChoices.splice(nextIndex, 1);\n                    setCurrentImage(newCurrent);\n                    setImageChoices(newChoices);\n                  }\n                }}\n              >\n                <ChevronImage\n                  src=\"/static/dist/public/assets/singleDealer/icon-arrow-slider.svg\"\n                  alt=\"strzałka w lewo\"\n                />\n              </ChevronButtonLeft>\n              <ChevronButtonRight\n                onClick={() => {\n                    if ( currentImage && images && images.length > 1) {\n                      const newChoices = [...imageChoices];\n                      newChoices.splice(currentImage!.id, 0, currentImage!);\n                      let nextIndex = newChoices.findIndex(\n                        (item) => item.image === currentImage.image\n                      ) + 1;\n                      nextIndex = nextIndex === newChoices.length ? 0 : nextIndex;\n                      const newCurrent = newChoices[nextIndex];\n                      newChoices.splice(nextIndex, 1);\n                      setCurrentImage(newCurrent);\n                      setImageChoices(newChoices);\n                    }\n                }}\n              >\n                <ChevronImage\n                  src=\"/static/dist/public/assets/singleDealer/icon-arrow-slider.svg\"\n                  alt=\"strzałka w prawo\"\n                />\n              </ChevronButtonRight>\n            </>\n          )}\n          <DotContainer className=\"d-flex d-sm-flex d-md-flex d-lg-none justify-content-center\">\n            {images?.map((item, index) => (\n              <Dot\n                key={item.image}\n                active={currentImage?.id === index}\n                onClick={() => {\n                  if (imageChoices) {\n                    const newChoices = [...imageChoices];\n                    // return taken image\n                    newChoices.splice(currentImage!.id, 0, currentImage!);\n                    // find clicked image\n                    const _index = newChoices.findIndex((image) => {\n                      return image.image === item.image;\n                    });\n                    // pick clicked image\n                    const newCurrent = newChoices[_index];\n                    if (currentImage?.image !== newCurrent.image) {\n                      // remove clicked image from list\n                      newChoices.splice(_index, 1);\n                      setCurrentImage(newCurrent);\n                      setImageChoices(newChoices);\n                    }\n                  }\n                }}\n              ></Dot>\n            ))}\n          </DotContainer>\n        </StyledCol>\n\n        <ColWithHiddenScroll\n          sm=\"3\"\n          style={{ maxHeight: 485 }}\n          className=\"d-none\td-sm-none d-md-none d-lg-flex flex-column\"\n        >\n          {imageChoices?.map((item, index) => (\n          <a href={ item.image }\n            data-lightbox=\"gallery\"\n            onClick={(e) => {\n                e.preventDefault()\n              }}\n            >\n            <SmallImage\n              className=\"my-1\"\n              key={item.id}\n              src={item.image}\n              onClick={() => {\n                const newChoices = [...imageChoices];\n                newChoices.splice(index, 1, currentImage!);\n                setImageChoices(newChoices);\n                setCurrentImage(item);\n              }}\n            />\n          </a>\n          ))}\n        </ColWithHiddenScroll>\n      </Row>\n    </Wrapper>\n  );\n};\n\nexport default LeasingOfferGallery;\n","import styled from \"styled-components\";\n\nexport const OfferCarPrice = styled.p`\n    font: normal normal normal 14px/32px Montserrat, serif;\n`;\n","import React, { useEffect, useState } from \"react\";\nimport {Helmet} from \"react-helmet\";\nimport { Col, Row } from \"react-bootstrap\";\nimport ReactDOM from \"react-dom\";\nimport {\n  changePeriodFormat,\n  changeSelfDepositFormat,\n  changeMileageLimitFormat,\n  changeCarValueFormat,\n} from \"src/scripts/misc/dataFromatters\";\nimport {\n  fetchLeasingOfferDetails,\n  fetchSimilarLeasingOffers,\n} from \"src/scripts/services/leasing.resource\";\nimport { LeasingOffer } from \"../../models/LeasingOffer\";\nimport LeasingOfferBrowser from \"./LeasingOfferBrowser/LeasingOfferBrowser\";\nimport LeasingOfferGallery from \"./LeasingOfferGallery/LeasingOfferGallery\";\nimport { OfferCarPrice } from \"./Styled\";\nimport { imagePlaceholder } from \"src/scripts/enums/defaults\";\n\nconst LeasingOfferView = () => {\n  const [leasingOffer, setLeasingOffer] = useState<LeasingOffer>();\n  const [leasingOffers, setLeasingOffers] = useState<LeasingOffer[]>([]);\n  const [loading, setLoading] = useState(true);\n  useEffect(() => {\n    const fetchSimilar = async (id: number) => {\n      const response = await fetchSimilarLeasingOffers(id);\n      if (response.data.results) {\n        setLeasingOffers(response.data.results);\n      }\n    };\n\n    const fetchData = async () => {\n      const url = new URL(window.location.href);\n      const pk = parseInt(url.pathname.split(\"/\")[4]);\n      const response = await fetchLeasingOfferDetails(pk);\n      if (response.data) {\n        setLeasingOffer(response.data);\n        if (response.data.car) {\n          fetchSimilar(response.data.car.id);\n        }\n      }\n      setLoading(false);\n    };\n    fetchData();\n    \n  }, []);\n  let brandName =\n    leasingOffer?.car.brand.name && leasingOffer?.car.brand.name.length > 15\n      ? leasingOffer?.car.brand.name.slice(0, 15) + \"...\"\n      : leasingOffer?.car.brand.name;\n  let modelName =\n    leasingOffer?.car.brand.name && leasingOffer?.car.model.length > 15\n      ? leasingOffer?.car.model.slice(0, 15) + \"...\"\n      : leasingOffer?.car.model;\n  let specification = leasingOffer?.car.specification;\n  var offer_url = new URL(window.location.href.split('?')[0]);\n  const noImgDealer = window.location.origin + imagePlaceholder;\n  let car_avatar_url = new URL(window.location.protocol + '//' + window.location.host) + (leasingOffer?.car?.avatar ? leasingOffer.car.avatar : noImgDealer);\n  let hostname = location.hostname;\n\n  let newDate = new Date();\n  let date = newDate.getDate();\n  newDate.setMonth(newDate.getMonth()+8);\n  let month = newDate.getMonth();\n  let year = newDate.getFullYear();\n  let separator = '-'\n  let priceValidUntil = `${year}${separator}${month<10?`0${month}`:`${month}`}${separator}${date<10?`0${date}`:`${date}`}`\n\n  return (\n    <div>\n      <Helmet>\n        <title>{`Wynajem długoterminowy dla ${brandName} ${modelName} ${specification}`}</title>\n        <meta name=\"description\" content=\n          {`Wynajem długoterminowy ${brandName} ${modelName} ${specification},\n             miesięczna rata netto: ${leasingOffer?.net_installment} zł,\n             miesięczna rata brutto: ${leasingOffer?.gross_installment} zł,\n          `}/>\n        <meta property=\"og:description\" content=\n          {`Wynajem długoterminowy ${brandName} ${modelName} ${specification},\n             wartość samochodu: ${leasingOffer?.value} zł\n             miesięczna rata netto: ${leasingOffer?.net_installment} zł,\n             miesięczna rata brutto: ${leasingOffer?.gross_installment} zł,\n             okres wynajmu: ${leasingOffer?.period} miesięcy,\n             wpłata wstępna: ${leasingOffer?.self_deposit}%,\n             limit roczny: ${leasingOffer?.mileage_limit} km.\n          `}/>\n        <meta name=\"robots\" content=\"max-image-preview:large\"/>\n        <link rel=\"canonical\" href={`${offer_url}`}/>\n\n        <meta name=\"twitter:card\" content=\"summary\"/>\n        <meta property=\"twitter:title\" content={`Wynajem długoterminowy dla ${brandName} ${modelName} ${specification}`}/>\n        <meta property=\"twitter:description\" content=\n          {`Wynajem długoterminowy ${brandName} ${modelName} ${specification},\n             wartość samochodu: ${leasingOffer?.value} zł\n             miesięczna rata netto: ${leasingOffer?.net_installment} zł,\n             miesięczna rata brutto: ${leasingOffer?.gross_installment} zł,\n             okres wynajmu: ${leasingOffer?.period} miesięcy,\n             wpłata wstępna: ${leasingOffer?.self_deposit}%,\n             limit roczny: ${leasingOffer?.mileage_limit} km.\n          `}/>\n        <meta property=\"twitter:image\" content={`${car_avatar_url}`}/>\n        <meta property=\"twitter:image:alt\" content={` Głównie zdjęcie ${brandName} ${modelName}`}/>\n\n        <meta property=\"og:title\" content={`Prezentacja oferty wynajmu długoterminowego dla ${brandName} ${modelName} ${specification}`}/>\n        <meta property=\"og:image\" content={`${car_avatar_url}`}/>\n        <script type=\"application/ld+json\">\n          {`{\n            \"@context\": \"https://schema.org\",\n            \"@type\": [\"Product\", \"Car\"],\n            \"sku\": \"${leasingOffer?.id}\",\n            \"brand\": \"${brandName}\",\n            \"name\": \"Wynajem długoterminowy ${brandName} ${modelName} za ${leasingOffer?.net_installment} zł\",\n            \"alternateName\": \"Auto na abonament ${brandName} ${modelName} za ${leasingOffer?.net_installment} zł\",\n            \"description\": \"Wynajem długoterminowy ${brandName} ${modelName} ${specification},\n             wartość samochodu: ${leasingOffer?.value} zł,\n             miesięczna rata netto: ${leasingOffer?.net_installment} zł,\n             miesięczna rata brutto: ${leasingOffer?.gross_installment} zł,\n             okres wynajmu: ${leasingOffer?.period} miesięcy,\n             wpłata wstępna: ${leasingOffer?.self_deposit}%,\n             limit roczny: ${leasingOffer?.mileage_limit} km.\",\n            \"offers\": {\n              \"@type\": \"Offer\",\n              \"url\": \"${offer_url}\",\n              \"areaServed\": \"PL\",\n              \"itemCondition\": \"https://schema.org/NewCondition\",\n              \"availability\": \"https://schema.org/InStock\",\n              \"businessFunction\": \"LeaseOut\",\n              \"leaseLength\": {\n                \"@type\": \"QuantitativeValue\",\n                \"value\": ${leasingOffer?.period},\n                \"unitText\": \"miesięcy\"\n              },\n              \"price\" : \"${leasingOffer?.net_installment}\",\n              \"priceValidUntil\": \"${priceValidUntil}\",\n              \"priceCurrency\" : \"PLN\",\n              \"name\": \"Wynajem długoterminowy ${brandName} ${modelName} za ${leasingOffer?.net_installment} zł\",\n              \"alternateName\": \"Auto na abonament ${brandName} ${modelName} za ${leasingOffer?.net_installment} zł\",\n              \"description\": \"Wynajem długoterminowy ${brandName} ${modelName} ${specification},\n               wartość samochodu: ${leasingOffer?.value} zł,\n               miesięczna rata netto: ${leasingOffer?.net_installment} zł,\n               miesięczna rata brutto: ${leasingOffer?.gross_installment} zł,\n               okres wynajmu: ${leasingOffer?.period} miesięcy,\n               wpłata wstępna: ${leasingOffer?.self_deposit}%,\n               limit roczny: ${leasingOffer?.mileage_limit} km.\",\n               \"image\": \"${car_avatar_url}\"\n            },\n            \"aggregateRating\": {\n              \"@type\": \"AggregateRating\",\n              \"ratingValue\": \"5.0\",\n              \"reviewCount\": \"1\"\n            },\n            \"review\": [\n              {\n                \"@type\": \"Review\",\n                \"author\": {\n                  \"@type\": \"Person\",\n                  \"name\": \"Piotr\"\n                },\n                \"datePublished\": \"2022-08-10\",\n                \"reviewBody\": \"Oferta wygląda na interesującą. Myślę, że warto poprosić o kontakt i uzyskać więcej szczegółów.\",\n                \"name\": \"Oferta od importera\",\n                \"reviewRating\": {\n                  \"@type\": \"Rating\",\n                  \"bestRating\": \"5\",\n                  \"ratingValue\": \"5\",\n                  \"worstRating\": \"1\"\n                }\n              }\n            ]\n          }`}\n        </script>\n        <script type=\"application/ld+json\">\n          {`{\n            \"@context\": \"https://schema.org\",\n            \"@type\": \"BreadcrumbList\",\n            \"itemListElement\": [{\n                \"@type\": \"ListItem\",\n                \"position\": 1,\n                \"name\": \"Oferty wynajmu długoterminowego\",\n                \"alternateName\": \"Auta na abonament wszystkich marek\",\n                \"item\": \"https://${hostname}/finansowanie/wynajem/\",\n                \"url\": \"https://${hostname}/finansowanie/wynajem/\"\n              },{\n                \"@type\": \"ListItem\",\n                \"position\": 2,\n                \"name\": \"${brandName}\",\n                \"alternateName\": \"Auta na abonament marki ${brandName}\",\n                \"item\": \"https://${hostname}/finansowanie/wynajem/search?car_brand_id=${leasingOffer?.car.brand.id}\",\n                \"url\": \"https://${hostname}/finansowanie/wynajem/search?car_brand_id=${leasingOffer?.car.brand.id}\"\n              }]\n            }\n          `}\n        </script>\n      </Helmet>\n      <Row className=\"offer-details--container--title\">\n        <Col>\n          <a\n            className=\"offer-details--container--title--icon\"\n            href=\"/finansowanie/wynajem/\"\n          >\n            <img\n              src=\"/static/dist/public/assets/icons/icon-home.svg\"\n              alt=\"home\"\n            />\n          </a>\n          /{\" \"}\n          <a href={`/finansowanie/wynajem/search${document.location.search}`}>\n            Wyniki wyszukiwania\n          </a>\n          /{\" \"}\n          <a\n            href={`/finansowanie/wynajem/search?car_brand_id=${leasingOffer?.car.brand.id}`}\n          >\n            {leasingOffer?.car.brand.name}\n          </a>\n          / <b>{leasingOffer?.id}</b>\n        </Col>\n      </Row>\n      <Row className=\"mt-lg-1 mt-1\">\n        <Col md>\n          <h1>\n            <div className=\"offer-details--container--header\">\n              Oferta wynajmu długoterminowego\n            </div>\n            <div className=\"d-flex offer-details--container--info--details align-items-end\">\n              <div className=\"w-50\">\n                <p className=\"offer-details--container--info--details--brand\">\n                  {brandName}\n                </p>\n                <p className=\"offer-details--container--info--details--model mb-0\">\n                  {modelName}\n                </p>\n              </div>\n              <div className=\"offer-details--container--info--details--price\">\n                <p className=\"offer-details--container--info--details--price--net\">\n                  {\" \"}\n                  {leasingOffer?.net_installment} zł/mc netto\n                </p>\n                <p className=\"offer-details--container--info--details--price--gross mb-0\">\n                  {\" \"}\n                  {leasingOffer?.gross_installment} zł/mc brutto\n                </p>\n              </div>\n            </div>\n            <div>\n              <div className=\"w-100 offer-details--container--info--details--specification\">\n                <p>\n                  {specification}\n                </p>\n              </div>\n            </div>\n          </h1>\n          <div className=\"d-flex offer-details--container--info--gray-bar mt-2\">\n            <div className=\"mx-auto mr-lg-auto\">\n              <p className=\"offer-details--container--info--gray-bar--title\">\n                Okres:\n              </p>\n              <p className=\"offer-details--container--info--gray-bar--value\">\n                {changePeriodFormat(leasingOffer?.period)}\n              </p>\n            </div>\n            <div className=\"mx-auto\">\n              <p className=\"offer-details--container--info--gray-bar--title\">\n                Wpłata ({leasingOffer?.self_deposit}%):\n              </p>\n              <p className=\"offer-details--container--info--gray-bar--value\">\n                {changeSelfDepositFormat(\n                  leasingOffer?.self_deposit,\n                  leasingOffer?.value\n                )}\n              </p>\n            </div>\n            <div className=\"mx-auto\">\n              <p className=\"offer-details--container--info--gray-bar--title\">\n                Limit roczny:\n              </p>\n              <p className=\"offer-details--container--info--gray-bar--value\">\n                {changeMileageLimitFormat(leasingOffer?.mileage_limit)}\n              </p>\n            </div>\n          </div>\n          <Row>\n            <Col>\n              <OfferCarPrice className=\"mt-2 mb-2 mx-auto font-weight-bold\">Przybliżona wartość\n              samochodu {changeCarValueFormat(leasingOffer?.value)} brutto</OfferCarPrice>\n            </Col>\n          </Row>\n        </Col>\n        <Col className=\"col d-flex align-items-end flex-column mt-3\">\n          <div className=\"d-flex offer-details--container--icons justify-content-end w-100\">\n            <div className=\"d-flex mx-auto ml-lg-4 mx-lg-0 flex-column\">\n              <img\n                className=\"m-auto\"\n                src={`/static/dist/public/assets/leasing/tire_${\n                  leasingOffer?.tires_included ? \"active\" : \"disabled\"\n                }.svg`}\n                alt=\"tire\"\n              />\n              <p\n                className={`offer-details--container--icons--description ${\n                  leasingOffer?.tires_included ? \"font-weight-bold\" : \"\"\n                }`}\n              >\n                Opony\n              </p>\n            </div>\n            <div className=\"d-flex mx-auto ml-lg-4 mx-lg-0 flex-column\">\n              <img\n                className=\"m-auto\"\n                src={`/static/dist/public/assets/leasing/inspection_${\n                  leasingOffer?.insurance_included ? \"active\" : \"disabled\"\n                }.svg`}\n                alt=\"inspection\"\n              />\n              <p\n                className={`offer-details--container--icons--description ${\n                  leasingOffer?.insurance_included ? \"font-weight-bold\" : \"\"\n                }`}\n              >\n                Ubezpieczenie\n              </p>\n            </div>\n            <div className=\"d-flex mx-auto ml-lg-4 mx-lg-0 flex-column\">\n              <img\n                className=\"m-auto\"\n                src={`/static/dist/public/assets/leasing/trailer_${\n                  leasingOffer?.assistance_included ? \"active\" : \"disabled\"\n                }.svg`}\n                alt=\"trailer\"\n              />\n              <p\n                className={`offer-details--container--icons--description ${\n                  leasingOffer?.assistance_included ? \"font-weight-bold\" : \"\"\n                }`}\n              >\n                Assistance\n              </p>\n            </div>\n            <div className=\"d-flex mx-auto ml-lg-4 mx-lg-0 flex-column\">\n              <img\n                className=\"m-auto\"\n                src={`/static/dist/public/assets/leasing/mechanic_${\n                  leasingOffer?.service_included ? \"active\" : \"disabled\"\n                }.svg`}\n                alt=\"mechanic\"\n              />\n              <p\n                className={`offer-details--container--icons--description ${\n                  leasingOffer?.service_included ? \"font-weight-bold\" : \"\"\n                }`}\n              >\n                Serwis\n              </p>\n            </div>\n          </div>\n          <div className=\"d-flex justify-content-center justify-content-md-end mt-2 offer-details--container--contact-button w-100\">\n            <a\n              href={`/finansowanie/wynajem/offer/${leasingOffer?.id}/contact${document.location.search}`}\n              className=\"btn btn-primary\"\n            >\n              Poproś o kontakt\n            </a>\n          </div>\n        </Col>\n      </Row>\n      <Row className=\"mt-3\">\n        <Col>\n          <LeasingOfferGallery\n            images={leasingOffer?.car.images}\n            loading={loading}\n          ></LeasingOfferGallery>\n        </Col>\n      </Row>\n      <Row className=\"offer-details--container--description\">\n        <Col>\n          <h2 className=\"offer-details--container--description--title\">Opis</h2>\n          <div className=\"offer-details--container--description--content\"\n               dangerouslySetInnerHTML={{ __html: leasingOffer?.long_description ?? \"\" }}>\n          </div>\n        </Col>\n      </Row>\n      <Row>\n        <Col>\n          <div className=\"d-flex justify-content-center mt-2 offer-details--container--contact-button w-100\">\n            <a\n              href={`/finansowanie/wynajem/offer/${leasingOffer?.id}/contact${document.location.search}`}\n              className=\"btn btn-primary\"\n            >\n              Poproś o kontakt\n            </a>\n          </div>\n        </Col>\n      </Row>\n      <Row className=\"offer-details--container--views mt-2\">\n        <Col>\n          <p className=\"text-center\">\n            {leasingOffer?.popularity} wyświetleń oferty\n          </p>\n          {/*<p className=\"text-center\">{leasingOffer?.inquiries_sent} kontaktów ws. oferty</p> */}\n        </Col>\n      </Row>\n      <Row className=\"offer-details--container--disclaimer mt-2\">\n        <Col>\n          <ul>\n            <li>Publikowane zdjęcia są jedynie ilustracją.</li>\n            <li>Niniejsze ogłoszenie zostało pobrane bezpośrednio od importera\n            danej marki i jest wyłącznie informacją handlową, nie stanowi\n            oferty w myśl art. 66 §1. Kodeksu Cywilnego.</li>\n            <li>Wszelkie informacje przedstawione na tej stronie zostały zamieszczone\n            wyłącznie w celach poglądowych i są orientacyjne. Wiążące ustalenie ceny,\n            wyposażenia i specyfikacji pojazdu następuje w umowie jego sprzedaży,\n            a określenie parametrów technicznych zawiera świadectwo homologacji typu pojazdu.</li>\n            <li>Zawarcie umowy oraz jej warunki uzależnione są od wyniku oceny sytuacji finansowej\n            Klienta oraz jego zdolności do zaciągania i regulowania zobowiązań.</li>\n            <li>Wysłanie zapytania na podstawie informacji zawartych na stronie za pomocą formularza\n            elektronicznego oznacza zgłoszenie zainteresowania wybranym modelem samochodu w danej\n            specyfikacji i wyrażenie zgody na kontakt ze strony autoryzowanego przedstawiciela marki\n            w celu przedstawienia szczegółowej oferty sprzedaży i finansowania.</li>\n            <li>Użyte logo i nazwa firmy są własnością ich prawnych właścicieli i zostały\n            zaprezentowane tylko do celów informacyjnych.</li>\n          </ul>\n        </Col>\n      </Row>\n      {leasingOffers && leasingOffers?.length > 1 && (\n        <Row className=\"mt-lg-1 mt-1\">\n          <Col>\n            <LeasingOfferBrowser\n              selectedLeasingOffer={leasingOffer}\n              leasingOffers={leasingOffers}\n              setSelectedLeasingOffer={setLeasingOffer}\n            ></LeasingOfferBrowser>\n          </Col>\n        </Row>\n      )}\n    </div>\n  );\n};\nconst leasingOfferView = document.getElementById(\"react--leasing-offer-view\");\nif (leasingOfferView) {\n  ReactDOM.render(<LeasingOfferView />, leasingOfferView);\n}\n","import React, { useEffect, useState } from \"react\";\nimport { Popover, Button, OverlayTrigger } from \"react-bootstrap\";\nimport {\n  carBodiesSelected,\n  carBodiesUnselected,\n  CarBodyType,\n} from \"src/scripts/enums/car-bodies\";\nimport { BodyType } from \"src/scripts/models/BodyType\";\nimport styled from \"styled-components\";\ninterface Props {\n  carBodyType: BodyType[];\n  selectedBodyTypes: BodyType[];\n  setSelectedBodyTypes: (type: BodyType[]) => void;\n  carBodyPickerState: boolean;\n  setCarBodyPickerState: (type: boolean) => void;\n}\ninterface ButtonProps {\n  open: boolean;\n}\n\nexport const StyledButton = styled(Button)<ButtonProps>`\n  background-color: ${(props) =>\n    props.open ? \"#5a6268\" : \"#0062aa\"} !important;\n  box-shadow: none !important;\n`;\n\nconst CarBodyPicker = (props: Props) => {\n  const { carBodyType, selectedBodyTypes,  setSelectedBodyTypes, carBodyPickerState, setCarBodyPickerState } = props;\n  const [open, setOpen] = useState(false); \n  const toggleCarBody = (car:BodyType) => {\n    if (!selectedBodyTypes.includes(car)) {\n      setSelectedBodyTypes([...selectedBodyTypes, car]);\n    } else {\n      setSelectedBodyTypes(\n        selectedBodyTypes.filter((selectedCar) => selectedCar !== car)\n      );\n    }\n  };\n\n  useEffect(() => {\n    // TODO this is done twice when we click exit button or \"wybierz\" to close popover\n    // state open is toggled twice\n    // the only problem is that button for \"Typ nadwozia\" stays grey as open state do not correspond\n    // actual state of popover\n    setCarBodyPickerState(open)\n  }, [open,]);\n\n  const popover = (\n    <Popover id=\"carbodypicker\" style={{ maxWidth: \"90vw\" }}>\n      <Popover.Header as=\"h3\">\n        Typy nadwozia\n        <button\n          id=\"popovercloseid\"\n          type=\"button\"\n          className=\"close\"\n          onClick={() => {\n            document.body.click();\n          }}>&times;</button>\n      </Popover.Header>\n      <Popover.Body>\n        <div\n          className=\"d-flex flex-wrap justify-content-around\"\n          style={{ gap: \"5px\" }}\n        >\n          {Object.values(carBodyType).map((car) => {\n            return (\n              <div className=\"d-flex align-items-center flex-column\" key={car.car__body}>\n                <img\n                  style={{ width: \"100px\" }}\n                  src={\n                    selectedBodyTypes.includes(car)\n                      ? carBodiesSelected[car.car__body]?.image\n                      : carBodiesUnselected[car.car__body]?.image\n                  }\n                  onClick={() => toggleCarBody(car)}\n                />\n                <p> {carBodiesSelected[car.car__body]?.label}</p>\n              </div>\n            );\n          })}\n        </div>\n      </Popover.Body>\n    </Popover>\n  );\n\n  return (\n    <>\n      <OverlayTrigger trigger=\"click\" rootClose onToggle={() => setOpen(!open)} placement=\"bottom\" overlay={popover}>\n        <StyledButton\n          variant=\"secondary\"\n          open={open}\n          id=\"carbodypicker\"\n          style={{ width: \"250px\" }}\n        >\n          Wybierz\n        </StyledButton>\n      </OverlayTrigger>\n    </>\n  );\n};\nexport default CarBodyPicker;\n","import React from \"react\";\nimport styled from \"styled-components\";\n\ninterface Props {\n  label: string;\n  children: any;\n  style?:any;\n}\nconst Label = styled.p`\nposition: absolute;\nline-height: 16px;\ntop: -23px;\n`\nconst Labeled = (props: Props) => {\n  const { label, children, style={}} = props;\n\n  return (\n    <div style={{position:'relative',...style}}>\n      <Label>{label}</Label> {children}\n    </div>\n  );\n};\nexport default Labeled;\n","import React from \"react\";\nimport { Card, Row, Col, Image, CardImg } from \"react-bootstrap\";\nimport { LeasingOffer } from \"../../models/LeasingOffer\";\nimport styled from \"styled-components\";\nimport {\n  changePeriodFormat,\n  changeSelfDepositFormat,\n  changeMileageLimitFormat,\n} from \"src/scripts/misc/dataFromatters\";\nimport { imagePlaceholder } from \"src/scripts/enums/defaults\";\n\nconst StyledCard = styled(Card)`\n  font-family: Montserrat, serif;\n  /* max-height: 400px; */\n  border-radius: 15px;\n  margin-left: 8px;\n  margin-right: 8px;\n  width: 390px;\n`;\nconst StyledCardImg = styled(CardImg)`\n  border-radius: 15px 15px 0 0;\n  height: 250px;\n  width: 388px;\n  object-fit: cover;\n`;\nconst CardText = styled.p<{\n  yellow?: boolean;\n  textSize: number;\n  textAlign?: \"left\" | \"right\" | \"center\";\n  underline?: boolean;\n}>`\n  font-size: ${(props) => props.textSize}px;\n  text-overflow: ellipsis;\n  overflow: hidden;\n  word-wrap: normal;\n  margin-bottom: 2px;\n  color: ${(props) => (props.yellow ? \"#f6a335\" : \"black\")};\n  text-align: ${(props) => props.textAlign || \"left\"};\n  text-decoration: ${(props) =>\n    props.underline ? \"underline #0062AA 3px\" : \"none\"};\n  display: -webkit-box;\n  -webkit-line-clamp: 1;\n  line-clamp: 1;\n  -webkit-box-orient: vertical;\n`;\n\nconst OfferCard = (props: { offer: LeasingOffer }) => {\n  const { offer } = props;\n  const noImgDealer = window.location.origin + imagePlaceholder;\n  return (\n    <a href={`/finansowanie/wynajem/offer/${offer.id}/${document.location.search}`} >\n      <StyledCard className=\"mt-3\">\n        <StyledCardImg\n          src={offer.car.avatar ? offer.car.avatar : noImgDealer}\n          alt=\"Zdjęcie główne samochodu\"\n        ></StyledCardImg>\n        <Card.Body>\n          <Row>\n            <Col xs={7} className=\"pr-0\">\n              <CardText textSize={22}>{offer.car.brand.name}</CardText>\n            </Col>\n            <Col xs={5} className=\"pl-1\">\n              <strong>\n                <CardText textSize={22} yellow textAlign=\"right\">\n                  {offer.net_installment} zł/mc\n                </CardText>\n              </strong>\n            </Col>\n          </Row>\n          <Row>\n            <Col xs={9} className=\"pr-0\">\n              <CardText textSize={16}>{offer.car.model}</CardText>\n            </Col>\n            <Col xs={3}>\n              <CardText textSize={16} yellow textAlign=\"right\">\n                Netto\n              </CardText>\n            </Col>\n          </Row>\n          <Row>\n            <Col xs={12}>\n              <CardText textSize={12}>{offer.car.specification}</CardText>\n            </Col>\n          </Row>\n          <hr />\n          <Row>\n            <Col xs={4}>\n              <CardText textSize={12} textAlign=\"center\">\n                Okres:\n              </CardText>\n              <CardText textSize={18} textAlign=\"center\" underline>\n                {changePeriodFormat(offer.period)}\n              </CardText>\n            </Col>\n            <Col xs={4}>\n              <CardText textSize={12} textAlign=\"center\">\n                Wpłata ({offer.self_deposit}%):\n              </CardText>\n              <CardText textSize={18} textAlign=\"center\" underline>\n                {changeSelfDepositFormat(offer.self_deposit, offer.value)}\n              </CardText>\n            </Col>\n            <Col xs={4}>\n              <CardText textSize={12} textAlign=\"center\">\n                Limit roczny:\n              </CardText>\n              <CardText textSize={18} textAlign=\"center\" underline>\n                {changeMileageLimitFormat(offer.mileage_limit)}\n              </CardText>\n            </Col>\n          </Row>\n        </Card.Body>\n      </StyledCard>\n    </a>\n  );\n};\nexport default OfferCard;\n","import React from \"react\";\nimport { Card, Row, Col, Image, CardImg } from \"react-bootstrap\";\nimport { AggregatedLeasingOffer } from \"../../models/AggregatedLeasingOffer\";\nimport styled from \"styled-components\";\nimport {\n  changeOfferNumberFormat,\n} from \"src/scripts/misc/dataFromatters\";\nimport { imagePlaceholder } from \"src/scripts/enums/defaults\";\n\nconst StyledCard = styled(Card)`\n  font-family: Montserrat, serif;\n  /* max-height: 400px; */\n  border-radius: 15px;\n  margin-left: 8px;\n  margin-right: 8px;\n  width: 390px;\n`;\nconst StyledCardImg = styled(CardImg)`\n  border-radius: 15px 15px 0 0;\n  height: 250px;\n  width: 388px;\n  object-fit: cover;\n`;\nconst CardText = styled.p<{\n  yellow?: boolean;\n  textSize: number;\n  textAlign?: \"left\" | \"right\" | \"center\";\n  underline?: boolean;\n}>`\n  font-size: ${(props) => props.textSize}px;\n  text-overflow: ellipsis;\n  overflow: hidden;\n  word-wrap: normal;\n  margin-bottom: 2px;\n  color: ${(props) => (props.yellow ? \"#f6a335\" : \"black\")};\n  text-align: ${(props) => props.textAlign || \"left\"};\n  text-decoration: ${(props) =>\n    props.underline ? \"underline #0062AA 3px\" : \"none\"};\n  display: -webkit-box;\n  -webkit-line-clamp: 1;\n  line-clamp: 1;\n  -webkit-box-orient: vertical;\n`;\n\nconst AggregatedOffersCard = (props: { offer: AggregatedLeasingOffer }) => {\n  const { offer } = props;\n  const noImgDealer = window.location.origin + imagePlaceholder;\n  const price_string = offer.number_of_offers === 1 ? `${offer.min_price} zł/mc Netto` : `${offer.min_price} - ${offer.max_price} zł/mc Netto`;\n  return (\n    <a href={`/finansowanie/wynajem/offer/${offer.offer_id}/${document.location.search}`}>\n      <StyledCard className=\"mt-3\">\n        <StyledCardImg\n          src={offer.avatar ? offer.avatar : noImgDealer}\n          alt=\"Zdjęcie główne samochodu\"\n        ></StyledCardImg>\n        <Card.Body>\n          <Row>\n            <Col>\n              <CardText textSize={22}>{offer.brand.name}</CardText>\n            </Col>\n          </Row>\n          <Row>\n            <Col>\n              <CardText textSize={16}>{offer.model}</CardText>\n            </Col>\n          </Row>\n          <Row>\n            <Col xs={12}>\n              <CardText textSize={12}>{offer.specification}</CardText>\n            </Col>\n          </Row>\n          <hr />\n          <Row>\n            <Col>\n              <CardText textSize={22} yellow textAlign=\"center\">\n                {price_string}\n              </CardText>\n            </Col>\n          </Row>\n          <Row>\n            <Col>\n              <CardText textSize={16} textAlign=\"center\" underline>\n                {changeOfferNumberFormat(offer.number_of_offers)}\n              </CardText>\n            </Col>\n          </Row>\n        </Card.Body>\n      </StyledCard>\n    </a>\n  );\n};\nexport default AggregatedOffersCard;\n","import styled from \"styled-components\";\nimport { Form } from \"react-bootstrap\";\n\nexport const CustomCheckBoxLabel = styled(Form.Check.Label)`\n  text-align: left;\n  font: normal normal normal 14px/30px Montserrat;\n  letter-spacing: 0px;\n  opacity: 1;\n  cursor: pointer;\n\n  @media only screen and (min-width: 768px) {\n    font: normal normal normal 16px/30px Montserrat;\n  }\n`;\nexport const CustomCheckBoxInput = styled(Form.Check.Input)`\n  width: 18px;\n  height: 18px;\n  border: 2px solid #404040;\n  opacity: 1;\n  cursor: pointer;\n`;\n","/**\n * LLM Context:\n * - Primary search interface for Leasing offers.\n * - Handles complex state for filters (price, period, budget, etc.) and syncs with URL params.\n * - Supports two view modes: Individual Offers (`fetchLeasingOffers`) and\n *   Aggregated Car Models (`fetchAggregatedLeasingOffers`).\n * - Uses `react-helmet` for dynamic SEO titles and canonical URLs.\n */\n// TODOs\n// remove double requests on initial entry\n// remove unneeded code like setting offer/car count when we just change page ?\nimport { GoogleReCaptchaProvider } from 'react-google-recaptcha-v3';\nimport React, { useEffect, useState } from \"react\";\nimport { Helmet } from \"react-helmet\";\nimport Slider, { createSliderWithTooltip } from \"rc-slider\";\nimport { Button, Row, Spinner, Collapse, Form } from \"react-bootstrap\";\nimport ReactDOM from \"react-dom\";\nimport CarBodyPicker from \"src/scripts/components/common/CarBodyPicker\";\nimport DropdownSelect from \"src/scripts/components/common/DropdownSelect\";\nimport Labeled from \"src/scripts/components/common/Labeled\";\nimport { Brand } from \"src/scripts/components/SearchLeasingForm/SearchLeasingForm\";\nimport OfferCard from \"src/scripts/components/SearchLeasingForm/OfferCard\";\nimport {\n  fetchLeasingCarBodyTypes,\n  fetchLeasingCarBrands,\n  fetchLeasingOffers,\n  fetchAggregatedLeasingOffers,\n} from \"src/scripts/services/leasing.resource\";\nimport { LeasingOffer } from \"../models/LeasingOffer\";\nimport AggregatedOffersCard from \"src/scripts/components/SearchLeasingForm/AggregatedOffersCard\";\nimport { AggregatedLeasingOffer } from \"../models/AggregatedLeasingOffer\";\nimport { carBodiesUnselected } from \"../enums/car-bodies\";\nimport { useDebouncedEffect } from \"../hooks/useDebouncedEffect\";\nimport styled from \"styled-components\";\nimport useMobileRecognizer, {\n  ScreenBreakpoints,\n} from \"../hooks/useMobileRecognizer\";\nimport {\n  activeDotStyle,\n  budgetMarks,\n  durationMarks,\n  handleStyle,\n  installmentMarks,\n  mileageMarks,\n  NET_INSTALLMENT_MAX_PRICE,\n  NET_INSTALLMENT_MIN_PRICE,\n  trackStyle,\n} from \"../static-data/SliderSettings\";\nimport {\n  CustomCheckBoxInput,\n  CustomCheckBoxLabel,\n} from \"src/scripts/components/SearchLeasingForm/Styled\";\nimport { BodyType } from \"../models/BodyType\";\nimport DropdownOptions from \"../components/common/DropdownOptions\";\ninterface TabProps {\n  name: string;\n  activeName: string;\n}\ninterface SelectItem {\n  id: any;\n  value: string;\n  name: string;\n}\nconst StyledTab = styled.div<TabProps>`\n  ${(props) => {\n    if (props.activeName === props.name) {\n      return ` color: #F6A335;\n            border-style: solid;\n            border-color: #F6A335;\n            border-width: 0;\n            border-bottom-width: 5px;`;\n    }\n  }}\n`;\n\nconst captchaKey = process.env.CAPTCHA_KEY || \"\";\n\nconst Range = createSliderWithTooltip(Slider.Range);\nconst StyledTabText = styled.p`\n  padding: 14px 30px;\n  font: normal normal bold 16px/16px Montserrat;\n  cursor: pointer;\n`;\nconst StyledButton = styled(Button)`\n  background: #ffffff;\n  border-radius: 10px;\n  display: flex;\n  font-size: 16px;\n  color: #0062aa;\n  width: 130px;\n  justify-content: center;\n  align-items: center;\n  height: 35px;\n  margin: 5px;\n  margin-bottom: 10px;\n  cursor: pointer;\n  box-shadow: 0px 10px 20px #0000001A;\n\n  &:hover {\n    box-shadow: 0px 0px 0px transparent;\n    background: #f3f3f3;\n    color: #0062aa;\n    border: 1px solid #0062aa;\n  }\n  &:focus {\n    box-shadow: 0px 0px 0px transparent;\n    background: #f3f3f3;\n    color: #0062aa;\n    border: 1px solid #0062aa;\n  }\n  &:active {\n    border: 0 !important;\n    outline: 0 !important;\n  }\n`;\n\nconst SearchLeasingsView = () => {\n  const params = new URLSearchParams(window.location.search);\n  const sortingOptions: SelectItem[] = [\n    { id: 0, name: \"Rata rosnąco\", value: \"net_installment\" },\n    { id: 1, name: \"Rata malejąco\", value: \"-net_installment\" },\n    { id: 2, name: \"Najpopularniejsze\", value: \"-popularity\" },\n  ];\n  const defaultMaxPrice = params.get(\"max_net_installment\") || \"100000\";\n  const defaultMinPrice = params.get(\"min_net_installment\") || \"0\";\n  const defaultMinContractDuration = params.get(\"min_period\") || \"12\";\n  const defaultMaxContractDuration = params.get(\"max_period\") || \"72\";\n  const barndsIds =\n    params\n      .get(\"car_brand_id\")\n      ?.split(\",\")\n      .filter((item) => item !== \"\")\n      .map((item) => Number.parseInt(item)) || [];\n  const defaultCarBodyTypes = params.get(\"car_body\")?.split(\",\") || [];\n  const defaultMinBudget = params.get(\"min_self_deposit\") || \"0\";\n  const defaultMaxBudget = params.get(\"max_self_deposit\") || \"30\";\n  const defaultMinAnnualMileage = params.get(\"min_mileage_limit\") || \"10000\";\n  const defaultMaxAnnualMileage = params.get(\"max_mileage_limit\") || \"40000\";\n  const defaultSorting = params.get(\"ordering\") || \"-popularity\";\n\n  const [fetchBodyTypes, setFetchBodyTypes] = useState(false);\n  const [fetchBrands, setFetchBrands] = useState(false);\n\n  const [loading, setLoading] = useState(true);\n  const [brands, setBrands] = useState<Brand[]>([]);\n  const [selectedBrands, setSelectedBrands] = useState<Brand[]>([]);\n  const [priceMax, setPriceMax] = useState<number>(\n    Number.parseInt(defaultMaxPrice)\n  );\n  const [priceMin, setPriceMin] = useState<number>(\n    Number.parseInt(defaultMinPrice)\n  );\n  const [contractDurationMin, setContractDurationMin] = useState<number>(\n    Number.parseInt(defaultMinContractDuration)\n  );\n  const [contractDurationMax, setContractDurationMax] = useState<number>(\n    Number.parseInt(defaultMaxContractDuration)\n  );\n  const [startBudgetMin, setStartBudgetMin] = useState<number>(\n    Number.parseInt(defaultMinBudget)\n  );\n  const [startBudgetMax, setStartBudgetMax] = useState<number>(\n    Number.parseInt(defaultMaxBudget)\n  );\n  const [annualMileageMin, setAnnualMileageMin] = useState<number>(\n    Number.parseInt(defaultMinAnnualMileage)\n  );\n  const [annualMileageMax, setAnnualMileageMax] = useState<number>(\n    Number.parseInt(defaultMaxAnnualMileage)\n  );\n  const [carBodyType, setCarBodyType] = useState<BodyType[]>([]);\n  const [selectedBodyTypes, setSelectedBodyTypes] = useState<BodyType[]>([]);\n\n  const [offers, setOffers] = useState<LeasingOffer[]>([]);\n  const [nextAvailable, setNextAvailable] = useState<boolean>(true);\n  const [allOfferCount, setAllOfferCount] = useState<number>(0);\n\n  const [aggregateOffer, setAggregateOffer] = useState<boolean>(false);\n  const [aggregatedOffers, setAggregatedOffers] = useState<AggregatedLeasingOffer[]>([]);\n  const [nextAggregatedPageAvailable, setNextAggregatedPageAvailable] = useState<boolean>(true);\n  const [allCarCount, setAllCarCount] = useState<number>(0);\n\n  const [orderingField, setOrderingField] = useState<SelectItem>(\n    sortingOptions.find((item) => item.value === defaultSorting)!);\n  const [page, setPage] = useState<number>(1);\n  const [carBodyPickerState, setCarBodyPickerState] = useState<boolean>(false);\n  const setSearchParams = (parmas: { [key: string]: string | number }) => {\n    let searchParams = new URLSearchParams(window.location.search);\n    for (let [key, value] of Object.entries(parmas)) {\n      searchParams.set(key, value.toString());\n    }\n    var newurl =\n      window.location.origin +\n      window.location.pathname +\n      \"?\" +\n      searchParams.toString();\n    window.history.pushState({ path: newurl }, \"\", newurl);\n  };\n\n  const fetchDataInitial = async () => {\n    const brands = fetchBrands ? selectedBrands.map((item) => item.id).join(\",\") :\n      barndsIds.map((item) => item).join(\",\");\n\n    const types = fetchBodyTypes ? selectedBodyTypes.map((item) => item.car__body).join(\",\") :\n      defaultCarBodyTypes.join(\",\");\n\n    const apiSearchParams = {\n      max_net_installment: priceMax,\n      min_net_installment: priceMin,\n      max_period: contractDurationMax,\n      min_period: contractDurationMin,\n      max_self_deposit: startBudgetMax,\n      min_self_deposit: startBudgetMin,\n      min_mileage_limit: annualMileageMin,\n      max_mileage_limit: annualMileageMax,\n      car_body: types,\n      car_brand_id: brands,\n      page,\n      ordering: orderingField.value,\n    };\n\n    const aggregateOfferInStorage = localStorage.getItem('aggregateOffer');\n    if (!!aggregateOfferInStorage) {\n      JSON.parse(aggregateOfferInStorage) == \"true\" ? setAggregateOffer(true) : setAggregateOffer(false)\n    }\n    else {\n      window.localStorage.setItem('aggregateOffer', JSON.stringify(\"false\"));\n    }\n\n    const response = await fetchLeasingOffers(apiSearchParams);\n    setNextAvailable(response.data.next ? true : false);\n    setAllOfferCount(response.data.count);\n    if (response.data.results) {\n      setOffers(response.data.results);\n    }\n\n    const responseAggregatedOffers = await fetchAggregatedLeasingOffers(apiSearchParams);\n    setNextAggregatedPageAvailable(responseAggregatedOffers.data.next ? true : false);\n    setAllCarCount(responseAggregatedOffers.data.count);\n    if (responseAggregatedOffers.data.results) {\n      setAggregatedOffers(responseAggregatedOffers.data.results);\n    }\n\n    setSearchParams(apiSearchParams);\n    setLoading(false);\n  };\n\n  // on each parameter change we set loading to true, fetch data again and set page to 1\n  useEffect(() => {\n    if (loading) {\n      setPage(1);\n      fetchDataInitial();\n    }\n  }, [loading,\n  ]);\n\n  useEffect(() => {\n    if (carBodyPickerState !== false) {\n      return;\n    }\n\n    setLoading(true);\n    setPage(1);\n  }, [orderingField,\n    priceMax,\n    priceMin,\n    contractDurationMax,\n    contractDurationMin,\n    startBudgetMax,\n    startBudgetMin,\n    annualMileageMin,\n    annualMileageMax,\n    carBodyPickerState,\n    selectedBrands,\n    aggregateOffer\n  ]);\n\n  // save info about aggregated checkbox in browser storage\n  useEffect(() => {\n    window.localStorage.setItem('aggregateOffer', JSON.stringify(aggregateOffer ? \"true\" : \"false\"));\n  }, [aggregateOffer]);\n\n  useEffect(() => {\n    const fetchBrands = async () => {\n      const response = await fetchLeasingCarBrands();\n      if (response.data.results) {\n        let brandsWithCounters = response.data.results\n          .map((brand) => {\n            return {\n              ...brand,\n              displayName: `${brand.name}(${brand.counter || 0})`,\n            };\n          })\n          .filter((brand) => brand.counter > 0);\n        setBrands(brandsWithCounters);\n        setSelectedBrands(\n          brandsWithCounters.filter((item) => barndsIds?.includes(item.id))\n        );\n        setFetchBrands(true)\n      }\n    };\n    const fetchBodyTypes = async () => {\n      const response = await fetchLeasingCarBodyTypes();\n      if (response.data) {\n        setCarBodyType(response.data);\n        setSelectedBodyTypes(\n          response.data.filter((body) => defaultCarBodyTypes?.includes(body.car__body))\n        );\n        setFetchBodyTypes(true)\n      }\n    };\n    setLoading(true);\n    fetchBrands();\n    fetchBodyTypes();\n  }, []);\n\n  useEffect(() => {\n    const fetchData = async () => {\n      const brands = selectedBrands.map((item) => item.id).join(\",\");\n      const types = selectedBodyTypes.map((item) => item.car__body).join(\",\");\n\n      // separated offers\n      const response = await fetchLeasingOffers({\n        max_net_installment: priceMax,\n        min_net_installment: priceMin,\n        max_period: contractDurationMax,\n        min_period: contractDurationMin,\n        max_self_deposit: startBudgetMax,\n        min_self_deposit: startBudgetMin,\n        min_mileage_limit: annualMileageMin,\n        max_mileage_limit: annualMileageMax,\n        car_body: types,\n        car_brand_id: brands,\n        page,\n        ordering: orderingField.value,\n      });\n      setNextAvailable(response.data.next ? true : false);\n      setAllOfferCount(response.data.count);\n\n      if (response.data.results) {\n        setOffers([...offers, ...response.data.results]);\n      }\n      // end of separated offers\n\n      // aggregated offers\n      if (nextAggregatedPageAvailable) {\n        const responseAggregatedOffers = await fetchAggregatedLeasingOffers({\n          max_net_installment: priceMax,\n          min_net_installment: priceMin,\n          max_period: contractDurationMax,\n          min_period: contractDurationMin,\n          max_self_deposit: startBudgetMax,\n          min_self_deposit: startBudgetMin,\n          min_mileage_limit: annualMileageMin,\n          max_mileage_limit: annualMileageMax,\n          car_body: types,\n          car_brand_id: brands,\n          page,\n          ordering: orderingField.value,\n        });\n        setNextAggregatedPageAvailable(responseAggregatedOffers.data.next ? true : false);\n        setAllCarCount(responseAggregatedOffers.data.count);\n\n        if (responseAggregatedOffers.data.results) {\n          setAggregatedOffers([...aggregatedOffers, ...responseAggregatedOffers.data.results]);\n        }\n      }\n      // end of aggregated offers\n    };\n    if (page !== 1) {\n      fetchData();\n    }\n  }, [page]);\n\n  const offerCards = offers.map((item) => <OfferCard offer={item} key={item.id} />);\n  const aggregatedOffersCards = aggregatedOffers.map((item) => <AggregatedOffersCard offer={item} key={item.id} />);\n\n  const labeledStyle = {\n    flexBasis: \"30%\",\n    display: \"flex\",\n    justifyContent: \"center\",\n    minHeight: \"50px\",\n    minWidth: \"250px\",\n  };\n  const dropdownStyle = {\n    maxHeight: \"36px\",\n    marginTop: \"5px\",\n  };\n\n  const isMobile = useMobileRecognizer(ScreenBreakpoints.SMALL);\n  const [filter_open, setOpen] = useState(false);\n\n  var canonical_url = new URL(window.location.href.split('?')[0]);\n\n  return (\n    <>\n      <Helmet>\n        <title>{`Wyniki wyszukiwania ofert wynajmu długoterminowego.`}</title>\n        <meta name=\"description\" content=\n          {`Wyniki wyszukiwania ofert wynajmu długoterminowego.\n          `} />\n        <meta property=\"og:description\" content=\n          {`Wyniki wyszukiwania ofert wynajmu długoterminowego.\n          `} />\n        <link rel=\"canonical\" href={`${canonical_url}`} />\n      </Helmet>\n      <div className=\"container\">\n        <div className=\"row justify-content-center\">\n          <div className=\"search-dealer-form-wrapper col-12 px-0 leasing--advanced-search--main-form\">\n            <div className=\"leasing--container\">\n              {isMobile ? (\n                <>\n                  <StyledButton\n                    onClick={() => setOpen(!filter_open)}\n                    aria-controls=\"filter-collapse\"\n                    aria-expanded={filter_open}\n                  >\n                    <img src=\"/static/dist/public/assets/icons/Icon-filter.svg\" alt=\"Filtry\"></img>\n                    Filtry\n                  </StyledButton>\n                  <Collapse in={filter_open}>\n                    <div id=\"filter-collapse\">\n                      <div\n                        className=\"d-flex justify-content-center justify-content-md-between px-5 pt-4 pb-3 flex-wrap\"\n                        style={{ rowGap: \"30px\" }}\n                      >\n                        <Labeled label=\"Marka\" style={labeledStyle}>\n                          <DropdownSelect\n                            style={dropdownStyle}\n                            options={brands}\n                            selected={selectedBrands}\n                            setSelected={setSelectedBrands}\n                            placeholder={\"Marka\"}\n                          />\n                        </Labeled>\n                        <Labeled label=\"Rata netto\" style={labeledStyle}>\n                          <Range\n                            dots\n                            className=\"mt-2\"\n                            step={null}\n                            tipFormatter={(val) => `${(val * 22.01 + 400).toFixed(0)}`}\n                            marks={installmentMarks}\n                            defaultValue={[\n                              priceMin === NET_INSTALLMENT_MIN_PRICE\n                                ? 0\n                                : (priceMin - 400) / 22.01,\n                              priceMax === NET_INSTALLMENT_MAX_PRICE\n                                ? 100\n                                : (priceMax - 400) / 22.01,\n                            ]}\n                            onAfterChange={(val) => {\n                              setPriceMin(\n                                val[0] === 0\n                                  ? NET_INSTALLMENT_MIN_PRICE\n                                  : Math.floor(val[0] * 22.01) + 400\n                              );\n                              setPriceMax(\n                                val[1] === 100\n                                  ? NET_INSTALLMENT_MAX_PRICE\n                                  : Math.floor(val[1] * 22.01) + 400\n                              );\n                            }}\n                            trackStyle={trackStyle}\n                            handleStyle={handleStyle}\n                            activeDotStyle={activeDotStyle}\n                          />\n                        </Labeled>\n                        <Labeled label=\"Okres kontraktu\" style={labeledStyle}>\n                          <Range\n                            dots\n                            className=\"mt-2\"\n                            step={null}\n                            marks={durationMarks}\n                            tipFormatter={(val) =>\n                              `${Math.floor(val / (5 / 3) + 12).toFixed(0)}`\n                            }\n                            defaultValue={[\n                              (contractDurationMin - 12) * (5 / 3),\n                              (contractDurationMax - 12) * (5 / 3),\n                            ]}\n                            onAfterChange={(val) => {\n                              setContractDurationMin(Math.floor(val[0] / (5 / 3) + 12));\n                              setContractDurationMax(Math.floor(val[1] / (5 / 3) + 12));\n                            }}\n                            trackStyle={trackStyle}\n                            handleStyle={handleStyle}\n                            activeDotStyle={activeDotStyle}\n                          />\n                        </Labeled>\n                        <Labeled label=\"Przebieg roczny\" style={labeledStyle}>\n                          <Range\n                            dots\n                            className=\"mt-2\"\n                            step={null}\n                            marks={mileageMarks}\n                            tipFormatter={(val) =>\n                              `${(Math.ceil(val) * 300 + 10000).toFixed(0)}`\n                            }\n                            defaultValue={[\n                              (annualMileageMin - 10000) / 300,\n                              (annualMileageMax - 10000) / 300,\n                            ]}\n                            onAfterChange={(val: number[]) => {\n                              setAnnualMileageMin(Math.ceil(val[0] * 3) * 100 + 10000);\n                              setAnnualMileageMax(Math.ceil(val[1] * 3) * 100 + 10000);\n                            }}\n                            trackStyle={trackStyle}\n                            handleStyle={handleStyle}\n                            activeDotStyle={activeDotStyle}\n                          />\n                        </Labeled>\n                        <Labeled label=\"Wkład własny\" style={labeledStyle}>\n                          <Range\n                            dots\n                            className=\"mt-2\"\n                            step={null}\n                            tipFormatter={(val) =>\n                              `${(Math.floor(val) / 3.33).toFixed(0)}`\n                            }\n                            marks={budgetMarks}\n                            defaultValue={[\n                              startBudgetMin * 3.33,\n                              startBudgetMax * 3.33,\n                            ]}\n                            onAfterChange={(val: number[]) => {\n                              setStartBudgetMin(Math.floor(val[0] / 3.33));\n                              setStartBudgetMax(Math.floor(val[1] / 3.33));\n                            }}\n                            trackStyle={trackStyle}\n                            handleStyle={handleStyle}\n                            activeDotStyle={activeDotStyle}\n                          />\n                        </Labeled>\n                        <Labeled label=\"Typ nadwozia\" style={labeledStyle}>\n                          <CarBodyPicker\n                            carBodyType={carBodyType}\n                            selectedBodyTypes={selectedBodyTypes}\n                            setSelectedBodyTypes={setSelectedBodyTypes}\n                            carBodyPickerState={carBodyPickerState}\n                            setCarBodyPickerState={setCarBodyPickerState}\n                          />\n                        </Labeled>\n                        <Form.Check className=\"ml-2\" name=\"type\" label=\"Połącz wszystkie warianty oferty dla danego samochodu\">\n                          <CustomCheckBoxInput\n                            checked={aggregateOffer}\n                            onClick={() => setAggregateOffer(!aggregateOffer)}\n                          />\n                          <CustomCheckBoxLabel\n                            className=\"ml-2\"\n                            onClick={() => setAggregateOffer(!aggregateOffer)}\n                          >\n                            Połącz wszystkie warianty oferty dla danego samochodu\n                          </CustomCheckBoxLabel>\n                        </Form.Check>\n                      </div>\n                    </div>\n                  </Collapse>\n                </>) : (\n                <div\n                  className=\"d-flex justify-content-center justify-content-md-between px-5 pt-5 pb-3 flex-wrap\"\n                  style={{ rowGap: \"30px\" }}\n                >\n                  <Labeled label=\"Marka\" style={labeledStyle}>\n                    <DropdownSelect\n                      style={dropdownStyle}\n                      options={brands}\n                      selected={selectedBrands}\n                      setSelected={setSelectedBrands}\n                      placeholder={\"Marka\"}\n                    />\n                  </Labeled>\n                  <Labeled label=\"Rata netto\" style={labeledStyle}>\n                    <Range\n                      dots\n                      className=\"mt-2\"\n                      step={null}\n                      tipFormatter={(val) => `${(val * 22.01 + 400).toFixed(0)}`}\n                      marks={installmentMarks}\n                      defaultValue={[\n                        priceMin === NET_INSTALLMENT_MIN_PRICE\n                          ? 0\n                          : (priceMin - 400) / 22.01,\n                        priceMax === NET_INSTALLMENT_MAX_PRICE\n                          ? 100\n                          : (priceMax - 400) / 22.01,\n                      ]}\n                      onAfterChange={(val) => {\n                        setPriceMin(\n                          val[0] === 0\n                            ? NET_INSTALLMENT_MIN_PRICE\n                            : Math.floor(val[0] * 22.01) + 400\n                        );\n                        setPriceMax(\n                          val[1] === 100\n                            ? NET_INSTALLMENT_MAX_PRICE\n                            : Math.floor(val[1] * 22.01) + 400\n                        );\n                      }}\n                      trackStyle={trackStyle}\n                      handleStyle={handleStyle}\n                      activeDotStyle={activeDotStyle}\n                    />\n                  </Labeled>\n                  <Labeled label=\"Okres kontraktu\" style={labeledStyle}>\n                    <Range\n                      dots\n                      className=\"mt-2\"\n                      step={null}\n                      marks={durationMarks}\n                      tipFormatter={(val) =>\n                        `${Math.floor(val / (5 / 3) + 12).toFixed(0)}`\n                      }\n                      defaultValue={[\n                        (contractDurationMin - 12) * (5 / 3),\n                        (contractDurationMax - 12) * (5 / 3),\n                      ]}\n                      onAfterChange={(val) => {\n                        setContractDurationMin(Math.floor(val[0] / (5 / 3) + 12));\n                        setContractDurationMax(Math.floor(val[1] / (5 / 3) + 12));\n                      }}\n                      trackStyle={trackStyle}\n                      handleStyle={handleStyle}\n                      activeDotStyle={activeDotStyle}\n                    />\n                  </Labeled>\n                  <Labeled label=\"Typ nadwozia\" style={labeledStyle}>\n                    <CarBodyPicker\n                      carBodyType={carBodyType}\n                      selectedBodyTypes={selectedBodyTypes}\n                      setSelectedBodyTypes={setSelectedBodyTypes}\n                      carBodyPickerState={carBodyPickerState}\n                      setCarBodyPickerState={setCarBodyPickerState}\n                    />\n                  </Labeled>\n                  <Labeled label=\"Przebieg roczny\" style={labeledStyle}>\n                    <Range\n                      dots\n                      className=\"mt-2\"\n                      step={null}\n                      marks={mileageMarks}\n                      tipFormatter={(val) =>\n                        `${(Math.ceil(val) * 300 + 10000).toFixed(0)}`\n                      }\n                      defaultValue={[\n                        (annualMileageMin - 10000) / 300,\n                        (annualMileageMax - 10000) / 300,\n                      ]}\n                      onAfterChange={(val: number[]) => {\n                        setAnnualMileageMin(Math.ceil(val[0] * 3) * 100 + 10000);\n                        setAnnualMileageMax(Math.ceil(val[1] * 3) * 100 + 10000);\n                      }}\n                      trackStyle={trackStyle}\n                      handleStyle={handleStyle}\n                      activeDotStyle={activeDotStyle}\n                    />\n                  </Labeled>\n                  <Labeled label=\"Wkład własny\" style={labeledStyle}>\n                    <Range\n                      dots\n                      className=\"mt-2\"\n                      step={null}\n                      tipFormatter={(val) =>\n                        `${(Math.floor(val) / 3.33).toFixed(0)}`\n                      }\n                      marks={budgetMarks}\n                      defaultValue={[\n                        startBudgetMin * 3.33,\n                        startBudgetMax * 3.33,\n                      ]}\n                      onAfterChange={(val: number[]) => {\n                        setStartBudgetMin(Math.floor(val[0] / 3.33));\n                        setStartBudgetMax(Math.floor(val[1] / 3.33));\n                      }}\n                      trackStyle={trackStyle}\n                      handleStyle={handleStyle}\n                      activeDotStyle={activeDotStyle}\n                    />\n                  </Labeled>\n                  <Form.Check className=\"ml-2\" name=\"type\" label=\"Połącz wszystkie warianty oferty dla danego samochodu\">\n                    <CustomCheckBoxInput\n                      checked={aggregateOffer}\n                      onClick={() => setAggregateOffer(!aggregateOffer)}\n                    />\n                    <CustomCheckBoxLabel\n                      className=\"ml-2\"\n                      onClick={() => setAggregateOffer(!aggregateOffer)}\n                    >\n                      Połącz wszystkie warianty oferty dla danego samochodu\n                    </CustomCheckBoxLabel>\n                  </Form.Check>\n                </div>\n              )}\n            </div>\n          </div>\n        </div>\n      </div>\n      <div style={{ backgroundColor: \"#fff\" }} className=\"mt-5\">\n        <div className=\"container d-flex justify-content-start align-items-center\">\n          <div\n            className=\"d-flex align-items-center px-3\"\n            style={{\n              height: \"50px\",\n              fontSize: \"16px\",\n              textAlign: \"center\",\n              backgroundColor: \"#f5f5f5\",\n              borderRadius: \"10px 10px 0px 0px\",\n            }}\n          >\n            <img\n              className=\"mr-2\"\n              style={{ height: \"20px\" }}\n              src={carBodiesUnselected.coupe.image}\n            />\n            <strong> {allOfferCount} ofert / {allCarCount} samochodów</strong>\n          </div>\n        </div>\n      </div>\n      {isMobile ? (\n        <div\n          className=\"d-flex justify-content-center align-items-baseline pt-3\"\n          style={{ backgroundColor: \"#f5f5f5\" }}\n        >\n          <p className=\"mr-2\">Sortuj:</p>\n          <DropdownOptions\n            open={false}\n            options={sortingOptions}\n            selectedOption={orderingField}\n            setSelectedOption={setOrderingField}\n          ></DropdownOptions>\n        </div>\n      ) : (\n        <div className=\"\" style={{ backgroundColor: \"#f5f5f5\" }}>\n          <div className=\"container d-flex\">\n            <StyledTab\n              name=\"net_installment\"\n              activeName={orderingField.value}\n              onClick={() =>\n                setOrderingField(\n                  sortingOptions.find(\n                    (item) => item.value === \"net_installment\"\n                  )!\n                )\n              }\n            >\n              <StyledTabText>Rata rosnąco</StyledTabText>\n            </StyledTab>\n            <StyledTab\n              name=\"-net_installment\"\n              activeName={orderingField.value}\n              onClick={() =>\n                setOrderingField(\n                  sortingOptions.find(\n                    (item) => item.value === \"-net_installment\"\n                  )!\n                )\n              }\n            >\n              <StyledTabText>Rata malejąco</StyledTabText>\n            </StyledTab>\n            <StyledTab\n              name=\"-popularity\"\n              activeName={orderingField.value}\n              onClick={() =>\n                setOrderingField(\n                  sortingOptions.find((item) => item.value === \"-popularity\")!\n                )\n              }\n            >\n              <StyledTabText>Najpopularniejsze</StyledTabText>\n            </StyledTab>\n          </div>\n        </div>\n      )}\n      <div style={{ backgroundColor: \"#f5f5f5\" }}>\n        {loading ? (\n          <div\n            className=\"d-flex flex-wrap justify-content-md-center align-items-center\"\n            style={{\n              minHeight: \"200px\",\n              marginLeft: \"auto\",\n              width: \"100vw\",\n              marginRight: \"auto\",\n              maxWidth: \"1500px\",\n            }}\n          >\n            <Spinner animation=\"border\" variant=\"primary\"></Spinner>\n          </div>\n        ) : aggregateOffer ? (aggregatedOffersCards.length > 0 ?\n          (\n            <>\n              <div\n                className=\"d-flex flex-wrap justify-content-center\"\n                style={{\n                  minHeight: \"200px\",\n                  marginLeft: \"auto\",\n                  width: \"100%\",\n                  marginRight: \"auto\",\n                  maxWidth: \"1500px\",\n                }}\n              >\n                {aggregatedOffersCards}\n              </div>\n              <div className=\"d-flex justify-content-center mt-4 mb-4 mb-md-0\">\n                <Button\n                  disabled={aggregateOffer ? !nextAggregatedPageAvailable : !nextAvailable}\n                  variant=\"secondary\"\n                  style={{ width: \"250px\" }}\n                  onClick={() => setPage(page + 1)}\n                  onMouseDown={(e) => e.preventDefault()}\n                >\n                  Załaduj kolejne\n                </Button>\n              </div>\n            </>\n          )\n          :\n          (\n            <div className=\"d-flex justify-content-center align-items-center flex-column py-5\">\n              <img\n                className=\"my-2\"\n                style={{ height: \"50px\", opacity: \"0.3\" }}\n                src={carBodiesUnselected.coupe.image}\n              />\n              <h5>Brak ofert spełniających dane kryteria</h5>\n            </div>\n          )\n        ) : (offerCards.length > 0 ? (\n          <>\n            <div\n              className=\"d-flex flex-wrap justify-content-center\"\n              style={{\n                minHeight: \"200px\",\n                marginLeft: \"auto\",\n                width: \"100%\",\n                marginRight: \"auto\",\n                maxWidth: \"1500px\",\n              }}\n            >\n              {offerCards}\n            </div>\n            <div className=\"d-flex justify-content-center mt-4 mb-4 mb-md-0\">\n              <Button\n                disabled={aggregateOffer ? !nextAggregatedPageAvailable : !nextAvailable}\n                variant=\"secondary\"\n                style={{ width: \"250px\" }}\n                onClick={() => setPage(page + 1)}\n                onMouseDown={(e) => e.preventDefault()}\n              >\n                Załaduj kolejne\n              </Button>\n            </div>\n          </>\n        ) : (\n          <div className=\"d-flex justify-content-center align-items-center flex-column py-5\">\n            <img\n              className=\"my-2\"\n              style={{ height: \"50px\", opacity: \"0.3\" }}\n              src={carBodiesUnselected.coupe.image}\n            />\n            <h5>Brak ofert spełniających dane kryteria</h5>\n          </div>\n        )\n        )}\n      </div>\n    </>\n  );\n};\nexport default SearchLeasingsView;\n\nconst leasingSearchViewRoot = document.getElementById(\n  \"react--leasing-advanced-search\"\n);\nif (leasingSearchViewRoot) {\n  ReactDOM.render(\n    <GoogleReCaptchaProvider\n      reCaptchaKey={captchaKey}\n      language=\"pl\"\n    >\n      <SearchLeasingsView />\n    </GoogleReCaptchaProvider>,\n    leasingSearchViewRoot);\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\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); }","// set .name for anonymous default exports per ES spec\n__webpack_require__.dn = function(x) {\n\t(Object.getOwnPropertyDescriptor(x, \"name\") || {}).writable || Object.defineProperty(x, \"name\", { value: \"default\", configurable: true });\n};","__webpack_require__.p = \"/static/dist/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t644: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkwebpack_starter\"] = self[\"webpackChunkwebpack_starter\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [96], function() { return __webpack_require__(4313); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","DropdownWrapper","styled_components_browser_esm","Ay","div","props","open","DropdownArrow","SearchInput","input","Collapse","numOfElements","Option","common_DropdownSelect","options","selected","setSelected","placeholder","style","withCheckboxes","withSelectAll","internalOptions","setInternalOptions","react","useState","useEffect","serachInput","setSearchInput","filter","item","name","toLowerCase","startsWith","setOpen","focused","setFocused","selectItem","includes","sel","id","joinedInputValue","map","join","length","substring","dropdown","useRef","forEach","type","document","addEventListener","evt","current","contains","target","createElement","ref","className","onClick","Object","assign","position","onInput","e","value","onFocus","onBlur","disabled","autoComplete","stopPropagation","Form","A","Check","label","bsPrefix","checked","onChange","index","displayName","key","axiosInstance","axios_default","create","headers","maxRedirects","baseURL","interceptors","response","use","error","__awaiter","handleResponseError","request","get","undefined","console","log","window","location","href","Promise","reject","http","getToken","cookie","c_start","indexOf","c_end","unescape","getPostHeaders","Accept","fetchLeasingCarBrands","leasing_resource_awaiter","fetchLeasingOffers","params","fetchAggregatedLeasingOffers","fetchLeasingOfferDetails","pk","installmentMarks","durationMarks","budgetMarks","mileageMarks","activeDotStyle","borderColor","handleStyle","backgroundColor","trackStyle","NET_INSTALLMENT_MAX_PRICE","Range","es","R3","StyledButton","Button","leasingHomepageFormRoot","getElementById","react_dom","render","brands","setBrands","selectedBrands","setSelectedBrands","priceMin","setPriceMin","priceMax","setPriceMax","data","results","brandsWithCounters","brand","counter","Row","Col","dots","step","tipFormatter","val","toFixed","width","marks","defaultValue","Math","floor","variant","VoivodeshipsList","SearchOpinionsForm_StyledButton","StyledH2","h2","StyledColumn","StyledColumnLeft","StyledColumnRight","CustomCheckBoxInput","Input","CustomCheckBoxLabel","Label","opinionsHomepageFormRoot","voivodeships","setVoivodeships","selectedVoivodeships","setSelectedVoivodeships","onlyVerified","setOnlyVerified","selectedTab","setSelectedTab","search","switchType","newurl","replace","history","pushState","path","modifyUrl","margin","background","color","dealerVerified","voivodeshipsQuerry","brandsQuerry","generateSearchQuerry","DropdownOptions_DropdownWrapper","DropdownOptions_DropdownArrow","DropdownOptions_SearchInput","DropdownOptions_Collapse","DropdownOptions_Option","common_DropdownOptions","selectedOption","setSelectedOption","readOnly","DealerName","p","DealerAddress","Dot","DealerType","Chip","ChipText","AllOpinions","Card","ConsultantsRow","ConsultantsTitle","ImageCol","haveworkers","Image","img","WorkerOpinions","span","WorkerRating","WorkerStar","ShowMoreWorkers","DealerInfo","paid","AllWorkers","ShowMore","AllOpinionsArrow","WorkerOpinionsArrow","ShowMoreWorkersArrow","ShowLessWorkersArrow","WorkerName","imagePlaceholder","DealerCard_DealerCard","dealer","selectedDealers","setSelectedDealers","selectedWorkers","setSelectedWorkers","selectedWorkerId","setSelectedWorkerId","extendedWorkerView","setExtendedWorkerView","windowWidth","setWindowWidth","innerWidth","getRate","currentValue","ceil","decimal","round","$haveworkers","workers","worker","salon","objectFit","src","image","alt","display_name","$paid","selectDealer","Array","_","i","average_rating","rating_count","address_fields","location_string","service","car_brands","slug","sort","worker1","worker2","slice","height","avatar","first_name","last_name","selectWorker","changePeriodFormat","period","changeSelfDepositFormat","selfDeposit","carValue","changeMileageLimitFormat","mileageLimit","BrandName","NetValue","ModelName","GrossValue","Divider","CarImage","OfferDetails","OfferDetailsTitle","OfferDetailsValue","OfferIconsWrapper","Wrapper","LeasingOfferSummary_LeasingOfferSummary","leasingOffer","noImgDealer","origin","car","net_installment","model","gross_installment","self_deposit","mileage_limit","alignItems","tires_included","insurance_included","assistance_included","service_included","FilterOptions","CustomInput","Control","LeasingOfferContactForm_Styled_CustomCheckBoxLabel","LeasingOfferContactForm_Styled_CustomCheckBoxInput","CustomCheck","CustomButton","$valid","Description","CustomTextAreaInput","Extend","a","SortTitle","SortDescription","FilterRow","FormWrapper","carBodiesUnselected","suv","cabrio","coupe","crossover","dostawcze","hatchback","kombi","sedan","van","pickup","pickup_namespaceObject","carBodiesSelected","selected_suv_namespaceObject","selected_cabriolet_namespaceObject","selected_coupe_namespaceObject","selected_crossover_namespaceObject","selected_dostawcze_namespaceObject","selected_hatchback_namespaceObject","selected_kombi_namespaceObject","selected_sedan_namespaceObject","selected_van_namespaceObject","selected_pickup_namespaceObject","SpinnerBackground","Spinner","common_Loader","visible","leasingOfferContactForm","react_google_recaptcha_v3_esm","G3","reCaptchaKey","language","setLeasingOffer","dealers","setDealers","dealersFirstApiCallFinished","setDealersFirstApiCallFinished","companyPurchase","setCompanyPurchase","extendedDisclaimer","setExtendedDisclaimer","nameForm","setNameForm","surnameForm","setSurnameForm","emailForm","setEmailForm","phoneNumberForm","setPhoneNumberForm","nipForm","setNipForm","messageForm","setMessageForm","isNameValid","setIsNameValid","isSurnameValid","setIsSurnameValid","isEmailValid","setIsEmailValid","isPhoneNumberValid","setIsPhoneNumberValid","isNipValid","setIsNipValid","validated","setValidated","formCorrect","setFormCorrect","filterOptions","setFilterOptions","selectedFilter","setSelectedFilter","statementCheckbox","setStatementCheckbox","loadingDealers","setLoadingDealers","executeRecaptcha","_Y","buttonRef","createRef","capitalizeFirstLetter","event","currentTarget","toUpperCase","fetchDealerData","LeasingOfferContactForm_awaiter","url","URL","apiSearchParams","parseInt","pathname","split","car_brands__name__in","voivodeship__in","ordering","paidVerified","verified","manager","handleSubmit","surname","email_address","phone_number","nip","purchase_type","message","offer_pk","recaptchaToken","dataWithToken","recaptcha","post","JSON","stringify","postUserLeasingContactForm","catch","status","noValidate","onSubmit","form","preventDefault","checkValidity","modules","Nk","scrollTo","Group","required","pattern","isInvalid","test","Feedback","as","_a","blur","minHeight","opacity","textAlign","bottom","left","right","includedIcons","yes","no","LeasingOfferBrowser_LeasingOfferBrowser","leasingOffers","selectedLeasingOffer","setSelectedLeasingOffer","increasePopularity","offer","LeasingOfferBrowser_awaiter","offerPk","patch","newDate","Date","date","getDate","setMonth","getMonth","month","priceValidUntil","getFullYear","fontSize","Table","responsive","striped","bordered","hover","size","top","behavior","Helmet","m","specification","_b","verticalAlign","Styled_Wrapper","ScreenBreakpoints","hooks_useMobileRecognizer","screenBreakpoint","setWidth","handleWindowSizeChange","removeEventListener","LGalleryImage","LeasingOfferGallery_Dot","active","DotContainer","ColWithHiddenScroll","SmallImage","ChevronButtonLeft","button","ChevronButtonRight","ChevronImage","StyledCol","LeasingOfferGallery_LeasingOfferGallery","images","loading","imageChoices","setImageChoices","currentImage","setCurrentImage","newChoices","splice","toSet","push","MEDIUM","Fragment","nextIndex","findIndex","newCurrent","_index","sm","maxHeight","OfferCarPrice","leasingOfferView","setLeasingOffers","setLoading","LeasingOfferView_awaiter","carPk","brandName","modelName","offer_url","car_avatar_url","protocol","host","hostname","content","property","rel","md","dangerouslySetInnerHTML","__html","long_description","popularity","CarBodyPicker_StyledButton","common_CarBodyPicker","carBodyType","selectedBodyTypes","setSelectedBodyTypes","carBodyPickerState","setCarBodyPickerState","popover","Popover","maxWidth","Header","body","click","Body","gap","values","car__body","selectedCar","toggleCarBody","_c","OverlayTrigger","trigger","rootClose","onToggle","placement","overlay","common_Labeled","children","StyledCard","esm_Card","StyledCardImg","CardImg","CardText","textSize","yellow","underline","SearchLeasingForm_OfferCard","xs","AggregatedOffersCard_StyledCard","AggregatedOffersCard_StyledCardImg","AggregatedOffersCard_CardText","SearchLeasingForm_AggregatedOffersCard","price_string","number_of_offers","min_price","max_price","offer_id","offerNumber","SearchLeasingForm_Styled_CustomCheckBoxLabel","SearchLeasingForm_Styled_CustomCheckBoxInput","StyledTab","activeName","SearchLeasingsView_Range","StyledTabText","SearchLeasingsView_StyledButton","leasingSearchViewRoot","URLSearchParams","sortingOptions","defaultMaxPrice","defaultMinPrice","defaultMinContractDuration","defaultMaxContractDuration","barndsIds","Number","defaultCarBodyTypes","defaultMinBudget","defaultMaxBudget","defaultMinAnnualMileage","defaultMaxAnnualMileage","defaultSorting","fetchBodyTypes","setFetchBodyTypes","fetchBrands","setFetchBrands","contractDurationMin","setContractDurationMin","contractDurationMax","setContractDurationMax","startBudgetMin","setStartBudgetMin","startBudgetMax","setStartBudgetMax","annualMileageMin","setAnnualMileageMin","annualMileageMax","setAnnualMileageMax","setCarBodyType","offers","setOffers","nextAvailable","setNextAvailable","allOfferCount","setAllOfferCount","aggregateOffer","setAggregateOffer","aggregatedOffers","setAggregatedOffers","nextAggregatedPageAvailable","setNextAggregatedPageAvailable","allCarCount","setAllCarCount","orderingField","setOrderingField","find","page","setPage","SearchLeasingsView_awaiter","types","max_net_installment","min_net_installment","max_period","min_period","max_self_deposit","min_self_deposit","min_mileage_limit","max_mileage_limit","car_body","car_brand_id","aggregateOfferInStorage","localStorage","getItem","parse","setItem","next","count","responseAggregatedOffers","parmas","searchParams","entries","set","toString","setSearchParams","offerCards","aggregatedOffersCards","labeledStyle","flexBasis","display","justifyContent","minWidth","dropdownStyle","marginTop","isMobile","SMALL","filter_open","canonical_url","esm_Collapse","in","rowGap","onAfterChange","borderRadius","marginLeft","marginRight","esm_Spinner","animation","onMouseDown","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__","O","result","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","j","keys","every","r","n","getter","__esModule","d","definition","o","defineProperty","enumerable","g","globalThis","this","Function","obj","prop","prototype","hasOwnProperty","call","dn","x","getOwnPropertyDescriptor","writable","configurable","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","self","bind","nc","__webpack_exports__"],"sourceRoot":""}