{"version":3,"file":"static/chunks/pages/_site/[city]/movix-new-bcd4fa7f518eaee9.js","mappings":"uFACKA,OAAOC,SAAWD,OAAOC,UAAY,IAAIC,KAAK,CAC7C,0BACA,WACE,OAAO,EAAQ,W,o4DCIvB,ICsCO,GDtCDC,IAAaC,EAAAA,EAAAA,GAAeC,EAAAA,IAC5BC,IAAYC,EAAAA,EAAAA,GAAcF,EAAAA,IAE1BG,IAAgBC,EAAAA,EAAAA,KAAG,KAMZC,IAAUC,EAAAA,EAAAA,SAAOC,EAAAA,GAAa,Y,6BAApBD,C,IAMEE,EAAAA,GAAAA,QAEH,Y,OAAoB,EAAjBC,kBAA4C,IAAM,OAK9DC,GAAQJ,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,IACfK,EAAAA,EAAAA,IAIOC,GAAWN,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,IAClBK,EAAAA,EAAAA,GAIOE,IAAOP,EAAAA,EAAAA,SAAOL,IAAU,Y,6BAAjBK,C,IACdH,IAGOW,IAAQR,EAAAA,EAAAA,SAAOR,IAAW,Y,6BAAlBQ,C,IACfH,IAGOY,GAAaT,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,IAMDE,EAAAA,GAAAA,QAKZQ,IAASV,EAAAA,EAAAA,SAAOW,EAAAA,IAAW,Y,6BAAlBX,C,KAChBK,EAAAA,EAAAA,GAKOO,GAAWZ,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAElBK,EAAAA,EAAAA,KAImBL,EAAAA,QAAAA,EAAAA,MAAe,CACpCa,KAAM,uFACNC,OAAQ,WACV,Y,6BAHuBd,C,KAInBK,EAAAA,EAAAA,K,SC7BMU,GAAAA,EAAAA,EACJ,KAAG,GAAPC,OADQD,EAAAA,EAEJ,KAAG,GAAPE,OAFQF,EAAAA,EAGD,QAAG,GAAVG,U,CAHQH,KAAAA,GAAc,KAM1B,IAiJA,GAjJ0B,Y,IAAGI,EAAU,EAAVA,WAAYC,EAAQ,EAARA,SAAUC,EAAK,EAALA,MAAOC,EAAY,EAAZA,aAAcC,EAAS,EAATA,UAAWC,EAAK,EAALA,MACzEC,GAAOC,EAAAA,EAAAA,IAAYC,EAAAA,GACnBC,EAAoB,CAAEC,MAAO,GAAIC,SAAS,EAAOC,WAAY,W,OAAMC,QACjDC,GAAAA,EAAAA,EAAAA,UAAiBL,GAAlCM,EAAiBD,EAAmC,GAA9CE,EAAWF,EAAmC,GACjCA,GAAAA,EAAAA,EAAAA,UAAiBL,GAApCQ,EAAmBH,EAAmC,GAA/CI,EAAYJ,EAAmC,GACzBA,GAAAA,EAAAA,EAAAA,WAAkB,GAA/CK,EAA6BL,EAAwB,GAAxCM,EAAgBN,EAAwB,GACtDO,GAASd,EAAAA,EAAAA,KAAY,SAACe,G,OAAkBA,EAAMC,KAAKF,UACnDG,GAAiBjB,EAAAA,EAAAA,KAAY,SAACe,G,OAAkBA,EAAMC,KAAKC,kBACfV,GAAAA,EAAAA,EAAAA,WAAS,GAApD9B,EAA2C8B,EAAe,GAAvCW,EAAwBX,EAAe,IAEjEY,EAAAA,EAAAA,YAAU,WACND,GAAqBE,EAAAA,EAAAA,GAAiBN,MACvC,CAACA,IAEJ,IAAMO,GAAqBC,EAAAA,EAAAA,cAAY,SAACC,EAAoBC,GACxD,IAAMC,EAAoC,kBAAfF,EAA0BA,EAAWpB,MAAQoB,GAEnEX,GAAea,KAChBC,EAAAA,EAAAA,IAAwB,CACpBC,MAAOC,EAAAA,GAAAA,QACPC,SAAUC,EAAAA,GAAAA,gBACVC,OAAQjB,EAASkB,EAAAA,GAAAA,WAAqBA,EAAAA,GAAAA,QACtClC,MAAAA,EACAmC,IAAKnB,EAAuB,OAAdG,QAAc,IAAdA,OAAAA,EAAAA,EAAgBiB,UAAY,OAE9CrB,GAAa,IAEjBW,EAAUD,KACX,CAACX,EAAad,IAEXqC,GAAkBb,EAAAA,EAAAA,cAAY,SAACc,EAAQC,IACzCX,EAAAA,EAAAA,IAAwB,CACpBK,OAAQK,EAASJ,EAAAA,GAAAA,SAAmBA,EAAAA,GAAAA,MACpCM,OAAQF,EAAStC,EAAQ,GAAcuC,OAAXvC,EAAM,OAAa,OAARuC,GACvCJ,IAAKnB,EAAuB,OAAdG,QAAc,IAAdA,OAAAA,EAAAA,EAAgBiB,UAAY,OAE9CrB,GAAa,GACbnB,GAAS,SAACqB,G,OAAwB,kBAC3BA,GAAK,CACRwB,eAAe,EACfC,gBAAgB,EAChBC,qBAAiBC,EACjBC,mBAAeD,EACfE,SAAUvD,GAAeC,KACzBuD,WAAYT,EAASU,EAAAA,EAAAA,QAA6BA,EAAAA,EAAAA,MAClDC,YAAaX,EAAS,oGAAsB,8FAC5CY,WAAYX,IACRD,EACM,6LACA,uMAGf,IAEGa,GAAa3B,EAAAA,EAAAA,cAAY,WAC3BT,GAAa,GACbF,GAAS,kBAAKD,GAAK,CAAEP,MAAO,MAC5BT,GAAS,SAACqB,G,OAAwB,kBAC3BA,GAAK,CACRwB,eAAe,EACfC,gBAAgB,EAChBC,qBAAiBC,EACjBC,mBAAeD,EACfE,SAAUvD,GAAeC,YAE9B,IAEG4D,EAAW,W,OAAA,8B,IAGPC,EAWAC,EAE0BA,EAApBC,EAAQhB,E,wEAfpBzC,GAAa,GAEPuD,EAAqB,CACvBpD,KAAAA,EACAuD,IAAK9C,EAAKL,MACVO,MAAOA,EAAMP,MACboD,UAAW5D,EAAMiD,SACjBY,iBAAkB7D,EAAM8C,gBACxBgB,KAAW,OAAL9D,QAAK,IAALA,OAAAA,EAAAA,EAAOgD,cACbe,WAAY,CAACC,EAAAA,EAAAA,IACbC,gBAAiB,CAtGF,S,SAyGAC,EAAAA,EAAAA,YAAkCC,EAAAA,EAAAA,GAAoBX,I,QAAnEC,EAAO,EAAH,MACDW,WACuBX,EAAAA,EAAKY,QAAzBX,EAAoBD,EAApBC,OAAQhB,EAAYe,EAAZf,QAGhBF,IAFakB,EAEOhB,IAEpBF,GAAgB,EAAO,0T,6FArBd,GAyBX8B,EAAaxE,GAAc,8FAEjC,OACI,sB,WACI,UAACyE,GAAU,CAACC,OAAQxE,EAAM4C,cAAe6B,QAASnB,EAAYxE,kBAAmBA,E,WAC7E,SAACyF,GAAQ,C,SAAC,uGACV,SAACA,GAAW,C,SAAC,mgBAGb,UAACA,GAAa,C,WACV,SAACA,GAAO,CACJ1D,KAAK,OACL6D,SAAU,SAAClE,G,OAAkBkB,EAAmBlB,EAAOM,IACvD6D,YAAY,wEACZC,aAAa,yKACbC,UAAW,qBAEf,SAACN,GAAQ,CACL1D,KAAK,QACL6D,SAAU,SAAC3D,G,OAAkBW,EAAmBX,EAAOC,IACvD2D,YAAa,kFACbC,aAAc,6JACdE,aAAc/D,EAAMP,MACpBqE,UAAW,wBAGnB,SAACN,GAAW,C,UACR,SAACQ,EAAAA,EAAU,CACPC,YAAU,YACVV,WAAYA,EACZW,SAAUC,EAAAA,OAGlB,SAACX,GAAS,CACNY,KAAMC,EAAAA,GAAAA,OACNC,UAAWtE,EAAMN,UAAYI,EAAKJ,SAAWP,EAC7CoF,KAAMhB,EACNiB,QAAShC,QAGjB,SAACiC,EAAAA,EAAW,CACRhB,OAAQxE,EAAM6C,eACd4B,QAASnB,EACTmC,MAAOzF,EAAMoD,YACbkC,KAAMtF,EAAMqD,WACZ8B,KAAMnF,EAAMkD,WAEZwC,MAAO,CAAEC,SAAU,c,sxJCpL5B,IAAMC,GAAiBjH,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,MAMjBkH,IAAclH,EAAAA,EAAAA,SAAOU,GAAAA,GAAO,Y,6BAAdV,C,KACrBK,EAAAA,EAAAA,GAIO8G,IAAgBnH,EAAAA,EAAAA,SAAOoH,GAAAA,GAAS,Y,6BAAhBpH,C,MAIhBqH,GAAqBrH,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAOTsH,EAAAA,EAAAA,QAIAA,EAAAA,EAAAA,SAIAA,EAAAA,EAAAA,QAKZC,GAAiBvH,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAINwH,EAAAA,IACIC,SAAAA,G,OAASA,EAAMC,iBA2B9B9G,GAAWZ,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAClBK,EAAAA,EAAAA,IAOOsH,EAAAA,GAEYL,EAAAA,EAAAA,QAKAA,EAAAA,EAAAA,SAKAA,EAAAA,EAAAA,OAKAA,EAAAA,EAAAA,QAMZM,GAAQ5H,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAOEsH,EAAAA,EAAAA,QAIAA,EAAAA,EAAAA,SAKAA,EAAAA,EAAAA,OAIAA,EAAAA,EAAAA,QAMVO,GAAS7H,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAGNwH,EAAAA,GAgBOF,EAAAA,EAAAA,QAMAA,EAAAA,EAAAA,QAwBVQ,GAAY9H,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAMFsH,EAAAA,EAAAA,QAIAA,EAAAA,EAAAA,SAIAA,EAAAA,EAAAA,OAIAA,EAAAA,EAAAA,QAKVlH,GAAQJ,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KACjBK,EAAAA,EAAAA,GACO0H,GAAAA,EAAAA,WACQ,Y,IAAGC,EAAY,EAAZA,a,MAAmB,GAAgB,OAAbA,EAAa,QAElCV,EAAAA,EAAAA,SACjBjH,EAAAA,EAAAA,GAGiBiH,EAAAA,EAAAA,SACF,Y,IAAGU,EAAY,EAAZA,a,MAAmB,GAAqB,OAAlBA,EAAe,GAAG,QAGzCV,EAAAA,EAAAA,QAInB,Y,OAAS,EAANW,UAGMC,GAAUlI,EAAAA,QAAAA,IAAAA,WAAU,C,8BAAVA,C,KAGPwH,EAAAA,GAKOF,EAAAA,EAAAA,QAKAA,EAAAA,EAAAA,SAKAA,EAAAA,EAAAA,OAKAA,EAAAA,EAAAA,Q,mvOCjPvB,IAAMa,IAAgBrI,EAAAA,EAAAA,KAAG,KACnBO,EAAAA,EAAAA,EACO0H,GAAAA,EAAAA,UAEY7H,EAAAA,GAAAA,SACfG,EAAAA,EAAAA,GAGeH,EAAAA,GAAAA,OACfG,EAAAA,EAAAA,KAIG+H,GAAcpI,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAKT+H,GAAAA,EAAAA,OACGM,GAAAA,EAAAA,kBAKRjI,GAAQJ,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KACfK,EAAAA,EAAAA,GACO0H,GAAAA,EAAAA,UAGY7H,EAAAA,GAAAA,SACfG,EAAAA,EAAAA,GAGeH,EAAAA,GAAAA,QAOZoI,GAAkBtI,EAAAA,QAAAA,GAAAA,WAAS,C,6BAATA,C,KAUrBmI,GAGmBjI,EAAAA,GAAAA,OAKJA,EAAAA,GAAAA,QAMZqI,GAAcvI,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAIrBmI,GAGmBjI,EAAAA,GAAAA,QA+BZsI,IAzBkBxI,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KACzBK,EAAAA,EAAAA,EACO0H,GAAAA,EAAAA,SAOY7H,EAAAA,GAAAA,SACfG,EAAAA,EAAAA,IAIeH,EAAAA,GAAAA,OAMAA,EAAAA,GAAAA,QAKEF,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KACrBK,EAAAA,EAAAA,EAImBH,EAAAA,GAAAA,SACfG,EAAAA,EAAAA,GAKeH,EAAAA,GAAAA,OACfG,EAAAA,EAAAA,IAOeH,EAAAA,GAAAA,OACfG,EAAAA,EAAAA,KAOGoI,GAAQzI,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,MAQC,Y,OAAO,EAAJ0I,QAEF,Y,OAAa,EAAVC,WAA8B,mBAAqB,YAExDN,GAAAA,EAAAA,kBAEf,Y,IAAGO,EAAgB,EAAhBA,iB,OAAuBA,IAAoB9I,EAAAA,EAAAA,KAAG,KAI7C8I,EAAiBC,SAAU/I,EAAAA,EAAAA,KAAG,KAAW8I,EAAiBC,QAC1DD,EAAiBE,OAAQhJ,EAAAA,EAAAA,KAAG,KAAS8I,EAAiBE,MACtDF,EAAiBG,QAASjJ,EAAAA,EAAAA,KAAG,KAAU8I,EAAiBG,OACxDH,EAAiBI,MAAOlJ,EAAAA,EAAAA,KAAG,KAAQ8I,EAAiBI,KACpDJ,EAAiBK,eAAgBnJ,EAAAA,EAAAA,KAAG,KAAkB8I,EAAiBK,cAC3DL,EAAiBM,SACtBN,EAAiBO,MAAQ,GAA0B,OAAvBP,EAAiBO,MAAM,MAAM,OACxDP,EAAiBQ,UAIVlJ,EAAAA,GAAAA,SAKAA,EAAAA,GAAAA,QAGf,Y,IAAGmJ,EAAwB,EAAxBA,yBAA0BV,EAAU,EAAVA,W,OAAkBU,IAA4BvJ,EAAAA,EAAAA,KAAG,KACzD6I,EAAa,QAAU,gBAI7BzI,EAAAA,GAAAA,QAGf,Y,IAAGmJ,EAAwB,EAAxBA,yBAA0BV,EAAU,EAAVA,W,OAAkBU,IAA4BvJ,EAAAA,EAAAA,KAAG,KAC7D6I,EAAa,QAAU,iBAMrCW,GAAQtJ,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KACfK,EAAAA,EAAAA,GACO0H,GAAAA,EAAAA,UAGY7H,EAAAA,GAAAA,SACfG,EAAAA,EAAAA,GAGeH,EAAAA,GAAAA,OACfG,EAAAA,EAAAA,GAGeH,EAAAA,GAAAA,OACfG,EAAAA,EAAAA,IAyBGkJ,IArBWvJ,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAClBK,EAAAA,EAAAA,GAKO0H,GAAAA,EAAAA,SAEY7H,EAAAA,GAAAA,OAMAA,EAAAA,GAAAA,QAOCF,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAQDE,EAAAA,GAAAA,SAKAA,EAAAA,GAAAA,OAKAA,EAAAA,GAAAA,SAOZsJ,GAAYxJ,EAAAA,QAAAA,IAAAA,WAAU,C,8BAAVA,C,KACnBK,EAAAA,EAAAA,GACO0H,GAAAA,EAAAA,UAEY7H,EAAAA,GAAAA,SACfG,EAAAA,EAAAA,GAGeH,EAAAA,GAAAA,OACfG,EAAAA,EAAAA,GAGeH,EAAAA,GAAAA,OACfG,EAAAA,EAAAA,IAIGoJ,GAAiBzJ,EAAAA,QAAAA,IAAAA,WAAU,C,8BAAVA,C,KAOLE,EAAAA,GAAAA,SAKAA,EAAAA,GAAAA,QAOZwJ,GAAU1J,EAAAA,QAAAA,IAAAA,WAAU,C,8BAAVA,C,KAIV+H,GAAAA,EAAAA,UACP1H,EAAAA,EAAAA,EAegB0H,GAAAA,EAAAA,aACM,Y,OAAW,EAAR4B,UAA2B,GAAK,KAWzC5B,GAAAA,EAAAA,aACM,Y,OAAW,EAAR4B,SAA0B,IAAM,KAGzDtJ,EAAAA,EAAAA,EAcmBH,EAAAA,GAAAA,SACfG,EAAAA,EAAAA,IAgBeH,EAAAA,GAAAA,QCjIzB,GArKyB,Y,IACrB0J,EAAI,EAAJA,KAAI,IACJC,aAAAA,OAAY,IAAG,KAAE,EACjBC,EAAW,EAAXA,YAGIhD,EAYA8C,EAZA9C,MACAiD,EAWAH,EAXAG,MACAC,EAUAJ,EAVAI,IACAC,EASAL,EATAK,YACAC,EAQAN,EARAM,SACAC,EAOAP,EAPAO,oBACAxE,EAMAiE,EANAjE,WACAyE,EAKAR,EALAQ,UACAzB,EAIAiB,EAJAjB,WACAC,EAGAgB,EAHAhB,iBACAyB,EAEAT,EAFAS,mBACAhB,EACAO,EADAP,yBAEwCpH,GAAAA,EAAAA,EAAAA,UAAS4H,EAAaA,EAAaS,OAAS,IAAjFC,EAAqCtI,EAA+C,GAApEuI,EAAqBvI,EAA+C,GACnDA,GAAAA,EAAAA,EAAAA,WAAS,GAA1CwI,EAAiCxI,EAAe,GAAlCyI,EAAmBzI,EAAe,GAEjD0I,GAAc3H,EAAAA,EAAAA,cAAY,WAC5B,GAAKuH,EAGL,OAAOA,EAAe/D,OAASoE,EAAAA,EAAAA,QACzB,UACA,+BACP,CAACL,IAEEM,GAAuB7H,EAAAA,EAAAA,cAAYgB,SAAAA,GACrCwG,EAAkBxG,GAClB0G,GAAgB,KACjB,IAEGI,GAAsB9H,EAAAA,EAAAA,cAAY,WACpC0H,GAAiBD,KAClB,CAACA,IAEEM,GAAgB/H,EAAAA,EAAAA,cAAY,WAC9B,GAAKuH,EAGL,OAAOA,EAAe/D,OAASoE,EAAAA,EAAAA,QACzB,6CACA,uEAAqC,OAArBL,EAAe1I,MAAM,0BAC5C,CAAC0I,IAEES,GAA8BhI,EAAAA,EAAAA,cAAY,SAACiI,GAC7CnB,GAAeA,EAAYmB,IAC3BC,EAAAA,GAAAA,IAAoBD,EAAKzJ,SAC1B,IAqCH,OACI,qB,UACI,UAACoE,GAAc,C,WACX,SAACA,GAAQ,CACL8C,KAAMsB,EACNrB,WAAYA,EACZC,iBAAkBA,EAClBS,yBAA0BA,KAE9B,SAACzD,GAAQ,C,SAAEkB,IACVmD,IAAe,SAACrE,GAAc,C,SAAEqE,IAChCC,IACG,SAACtE,GAAkB,C,SACdsE,EAASiB,KAAI,SAACxE,EAAMyE,G,OAAU,SAACC,KAAE,C,SAAc1E,GAARyE,QAG/CrB,IACG,SAACnE,GAAa,C,UACV,UAACA,GAAQ,C,UAxBrBuE,EACOA,EAAsBJ,EAE1BA,EAqBsC,kCAGpCK,IACG,UAACxE,GAAiB,C,UACbiE,IACG,sB,WACI,SAACjE,GAAU,CAACgB,QAASkE,EAAqBnB,SAAUc,E,SAAeM,MAClEN,IAAgB,SAACa,EAAAA,EAAW,CACzBC,QAAS1B,EACT2B,SAAS,QACT3J,MAAO0I,EACPxE,SAAU8E,EACVY,WAAS,EACTC,uBAAuB,EACvBC,0BAA0B,EAC1BC,qBAAqB,EACrBC,aAAa,EACbC,YAAU,EACVC,iBAAiB,EACjBC,SAAU,CACNC,oBAAqB,SAACC,G,OAAyC,kBACxDA,GAAQ,CACXC,QAAS,UAEbC,UAAW,SAACF,G,OAAyC,kBAC9CA,GAAQ,CACXG,SAAU,cAGdC,KAAM,SAACJ,G,OAAyC,kBACzCA,GAAQ,CACXV,SAAU,QACVe,SAAU,SACVC,OAAQ,YAO5B,UAAC5G,GAAY,C,WAAE6G,EAAAA,GAAAA,IAAyB,OAAdlC,QAAc,IAAdA,OAAAA,EAAAA,EAAgBR,OAAQY,UAGzDhF,IACG,SAACC,GAAc,C,UACX,SAACsB,GAAW,CACRwF,MAAO,YACP9F,QArGG,WACvB,IAAItC,EACA9C,EAEAuI,GACAzF,EAAWvD,GAAeG,QAC1BM,EAAQmL,EAAAA,GAAAA,QACDpC,GAEHjG,EADAiG,EAAe/D,OAASoE,EAAAA,EAAAA,QACb7J,GAAeE,KAEfF,GAAeG,QAE9BM,EAAQmL,EAAAA,GAAAA,MAERrI,EAAWvD,GAAeC,KAC1BQ,EAAQmL,EAAAA,GAAAA,WAEZ,IAAM1B,EAAO,CACT3G,SAAAA,EACAH,gBAAiB4F,EAjBY,GAiBqC,OAAdQ,QAAc,IAAdA,OAAAA,EAAAA,EAAgB1I,MACpEV,WAAYkJ,EAAqB,GAAK1E,EACtCnE,MAAAA,GAGJsI,GAAekB,EAA4BC,I,SA8EtBtF,Y,uiECpNtB,IAAMiH,GAAM5M,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,MAON6M,IAAQ7M,EAAAA,EAAAA,SAAO4M,IAAI,Y,6BAAX5M,C,KAEL+H,GAAAA,EAAAA,QAGD,Y,OAAO,EAAJ+E,OAEKxF,EAAAA,EAAAA,QAKAA,EAAAA,EAAAA,SAIAA,EAAAA,EAAAA,QACjB,Y,IAAGwF,EAAI,EAAJA,KACH,OAD6B,EAApBC,qBAEA,GAEO,UAATD,IAAoBhN,EAAAA,EAAAA,KAAG,SAErB,Y,MAAuB,UAAhB,EAAJgN,KAA8B,mBAAqB,mBAI9CxF,EAAAA,EAAAA,QAKnB,Y,OAAS,EAANW,UAGM7H,GAAQJ,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KACjBK,EAAAA,EAAAA,GACO0H,GAAAA,EAAAA,UAEYT,EAAAA,EAAAA,SACjBjH,EAAAA,EAAAA,GAGiBiH,EAAAA,EAAAA,OAEjBjH,EAAAA,EAAAA,GAGiBiH,EAAAA,EAAAA,QAInB,Y,OAAS,EAANW,UAGMM,GAAcvI,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KACvBK,EAAAA,EAAAA,EACO0H,GAAAA,EAAAA,UAGYT,EAAAA,EAAAA,SACjBjH,EAAAA,EAAAA,IAGiBiH,EAAAA,EAAAA,OACjBjH,EAAAA,EAAAA,IAKO2M,GAAYhN,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAOFsH,EAAAA,EAAAA,QAMV2F,GAAajN,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KASHsH,EAAAA,EAAAA,QAEN,Y,MAAuB,UAAhB,EAAJwF,KAA8B,IAAM,MAIjCxF,EAAAA,EAAAA,QAEN,Y,MAAuB,UAAhB,EAAJwF,KAA8B,IAAM,MAC3C,Y,MAAuB,UAAhB,EAAJA,KAA8B,OAAS,MAGnD,Y,OAAS,EAAN7E,UAGMQ,GAAQzI,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,MCzDrB,GApCgC,Y,IAC5BkN,EAAY,EAAZA,aAAY,IACZtD,KACIkD,EAAI,EAAJA,KACAK,EAAM,EAANA,OACAlD,EAAW,EAAXA,YACAD,EAAG,EAAHA,IACAoD,EAAO,EAAPA,QACAtG,EAAK,EAALA,MACAuG,EAAW,EAAXA,YACAC,EAAe,EAAfA,gBACAC,EAAW,EAAXA,YAEJR,EAAoB,EAApBA,qBAGMS,GAAMC,EAAAA,EAAAA,MAAaL,EAAUA,EAAUpD,EAE7C,OACI,UAACpE,GAAQ,CACLkH,KAAMA,EAENC,qBAAsBA,EACtB9E,OAAQqF,E,WAER,UAAC1H,GAAY,C,WACT,SAACA,GAAQ,CAACqC,OAAQsF,E,SAAczG,IAC/BmD,IAAe,SAACrE,GAAc,C,SAAEqE,QAErC,SAACrE,GAAa,CAACkH,KAAMA,EAAM7E,OAAQoF,E,UAC/B,SAACzH,GAAQ,CAAC4H,IAAKN,GAAgBC,EAASA,EAASK,EAAKE,IAAK1D,QAT1DlD,IChDJ6G,GAA4B,CACrC,CACI7G,MAAO,qLACPmD,YAAa,icACbD,IAAK,mCACLoD,QAAS,oCACTN,KAAM,SAEV,CACIhG,MAAO,oIACPmD,YAAa,uXACbD,IAAK,qCACLoD,QAAS,sCACTN,KAAM,SAGV,CACIhG,MAAO,yFACPmD,YAAa,6SACbD,IAAK,0CACLoD,QAAS,2CACTN,KAAM,UAEV,CACIhG,MAAO,6HACPmD,YAAa,4PACbD,IAAK,mCACLoD,QAAS,oCACTN,KAAM,U,ksBC1BP,ICQP,GAOA,GAMe,GDrBF/M,GAAUC,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAUAsH,EAAAA,EAAAA,OAOAA,EAAAA,EAAAA,QEiBvB,GA9B2B,WACvB,IAAwCrF,GAAAA,EAAAA,EAAAA,WAAS,GAA1CiL,EAAiCjL,EAAe,GAAlC2L,EAAmB3L,EAAe,GAoBvD,OAlBAY,EAAAA,EAAAA,YAAU,WACN,IAAMgL,EAAW,WACTxO,OAAOyO,YAAc,KACrBF,GAAgB,GAEhBA,GAAgB,IAQxB,OAJAC,IAEAxO,OAAO0O,iBAAiB,SAAUF,GAE3B,WACHxO,OAAO2O,oBAAoB,SAAUH,MAE1C,KAGC,SAACjI,GAAU,C,SACN+H,GAAMxC,KAAIvB,SAAAA,G,OACP,SAACqE,GAAW,CAAkBrE,KAAMA,EAAMsD,aAAcA,GAAtCtD,EAAK9C,a,oCDhCjCoH,GAAa,0BACbC,GAAY,GAAc,OAAXD,GAAW,WAC1BE,GAAW,GAAc,OAAXF,GAAW,UACzBG,GAAc,GAAc,OAAXH,GAAW,aAC5BI,GAAY,GAAc,OAAXJ,GAAW,WAC1BK,GAAkB,GAAc,OAAXL,GAAW,iBAEhCM,GAAU,GAAc,OAAXN,GAAW,gBACxBO,GAAe,GAAc,OAAXP,GAAW,sBAC7BQ,GAAS,GAAc,OAAXR,GAAW,eACvBS,GAAQ,GAAc,OAAXT,GAAW,e,SAEvBU,GAAAA,EACK,OAANF,SADCE,EAEM,QAAPJ,UAFCI,EAGI,MAALD,QAHCC,EAIW,aAAZH,e,CAJCG,KAAAA,GAAU,K,SAOVC,GAAAA,EACK,OAAG,QADRA,EAEM,QAAG,QAFTA,EAGI,MAAG,O,CAHPA,KAAAA,GAAW,KAMhB,IAAMC,IAAS,GAKd,IAJG,QADW,GACVF,GAAWF,OAAS,CAAElB,IAAKkB,GAAQvF,MAAO0F,GAAYH,UACvD,QAFW,GAEVE,GAAWJ,QAAU,CAAEhB,IAAKgB,GAASrF,MAAO0F,GAAYL,WACzD,QAHW,GAGVI,GAAWD,MAAQ,CAAEnB,IAAKmB,GAAOxF,MAAO0F,GAAYF,SACrD,QAJW,GAIVC,GAAWH,aAAe,CAAEjB,IAAKiB,GAActF,MAAO0F,GAAYL,UAJxD,IAaTO,GAAU,SAACrG,EAAcsG,GAC3B,OAAOA,EAAM7D,KAAI,Y,IAAGjJ,EAAI,EAAJA,KAAM+M,EAAG,EAAHA,IAAKzI,EAAI,EAAJA,KACrBhF,EAAQgF,GAAQsI,GAAOtI,GAC7B,MAAO,CACHgH,IAAK,GAAUtL,OAAPwG,GAAY,OAALxG,EAAK,YACpB+M,IAAAA,EACAzN,MAAAA,OAoFC0N,GAAO,CAChB,CAAE1N,MAAO,uCAAU2N,OAhFTJ,GAAQZ,GAAW,CAC7B,CAAEjM,KAAM,eAAgB+M,IAAK,IAC7B,CAAE/M,KAAM,cAAe+M,IAAK,IAC5B,CAAE/M,KAAM,eAAgB+M,IAAK,IAC7B,CAAE/M,KAAM,SAAU+M,IAAK,IACvB,CAAE/M,KAAM,SAAU+M,IAAK,IACvB,CAAE/M,KAAM,eAAgB+M,IAAK,IAC7B,CAAE/M,KAAM,QAAS+M,IAAK,GAAIzI,KAAMoI,GAAWJ,SAC3C,CAAEtM,KAAM,QAAS+M,IAAK,IACtB,CAAE/M,KAAM,OAAQ+M,IAAK,IACrB,CAAE/M,KAAM,gBAAiB+M,IAAK,GAAIzI,KAAMoI,GAAWJ,SACnD,CAAEtM,KAAM,SAAU+M,IAAK,IACvB,CAAE/M,KAAM,aAAc+M,IAAK,OAqE3B,CAAEzN,MAAO,6CAAW2N,OAlERJ,GAAQV,GAAa,CACjC,CAAEnM,KAAM,cAAe+M,IAAK,GAAIzI,KAAMoI,GAAWJ,SACjD,CAAEtM,KAAM,SAAU+M,IAAK,IACvB,CAAE/M,KAAM,aAAc+M,IAAK,IAC3B,CAAE/M,KAAM,QAAS+M,IAAK,IACtB,CAAE/M,KAAM,OAAQ+M,IAAK,IACrB,CAAE/M,KAAM,UAAW+M,IAAK,IACxB,CAAE/M,KAAM,KAAM+M,IAAK,GAAIzI,KAAMoI,GAAWD,OACxC,CAAEzM,KAAM,MAAO+M,IAAK,IACpB,CAAE/M,KAAM,OAAQ+M,IAAK,IACrB,CAAE/M,KAAM,SAAU+M,IAAK,IACvB,CAAE/M,KAAM,aAAc+M,IAAK,IAC3B,CAAE/M,KAAM,WAAY+M,IAAK,OAuDzB,CAAEzN,MAAO,oDAAa2N,OApDNJ,GAAQR,GAAiB,CACzC,CAAErM,KAAM,KACR,CAAEA,KAAM,MACR,CAAEA,KAAM,SACR,CAAEA,KAAM,OACR,CAAEA,KAAM,UACR,CAAEA,KAAM,OACR,CAAEA,KAAM,OACR,CAAEA,KAAM,mBACR,CAAEA,KAAM,SACR,CAAEA,KAAM,QACR,CAAEA,KAAM,KACR,CAAEA,KAAM,aACR,CAAEA,KAAM,QACR,CAAEA,KAAM,UAuCR,CAAEV,MAAO,iCAAS2N,OApCRJ,GAAQT,GAAW,CAC7B,CAAEpM,KAAM,iBACR,CAAEA,KAAM,OACR,CAAEA,KAAM,QACR,CAAEA,KAAM,UACR,CAAEA,KAAM,QACR,CAAEA,KAAM,eACR,CAAEA,KAAM,eACR,CAAEA,KAAM,eACR,CAAEA,KAAM,WACR,CAAEA,KAAM,QACR,CAAEA,KAAM,OACR,CAAEA,KAAM,aACR,CAAEA,KAAM,iBACR,CAAEA,KAAM,kBAuBR,CAAEV,MAAO,iCAAS2N,OApBTJ,GAAQX,GAAU,CAC3B,CAAElM,KAAM,eAAgB+M,IAAK,EAAGzI,KAAMoI,GAAWJ,SACjD,CAAEtM,KAAM,QAAS+M,IAAK,GACtB,CAAE/M,KAAM,oBAAqB+M,IAAK,GAClC,CAAE/M,KAAM,YAAa+M,IAAK,IAC1B,CAAE/M,KAAM,kBAAmB+M,IAAK,GAChC,CAAE/M,KAAM,sBAAuB+M,IAAK,GACpC,CAAE/M,KAAM,IAAK+M,IAAK,GAClB,CAAE/M,KAAM,SAAU+M,IAAK,GACvB,CAAE/M,KAAM,cAAe+M,IAAK,EAAGzI,KAAMoI,GAAWJ,SAChD,CAAEtM,KAAM,YAAa+M,IAAK,IAC1B,CAAE/M,KAAM,eAAgB+M,IAAK,EAAGzI,KAAMoI,GAAWH,cACjD,CAAEvM,KAAM,aAAc+M,IAAK,O,m5HEjHxB,IAAMG,IAAQpP,EAAAA,EAAAA,SAAOqP,GAAAA,GAAK,Y,6BAAZrP,C,KAGV+H,GAAAA,EAAAA,UACWP,EAAAA,IAaL,Y,OAAS,EAAN8H,OAAsBvH,GAAAA,EAAAA,SAAkBA,GAAAA,EAAAA,YAClD1H,EAAAA,EAAAA,EAGS0H,GAAAA,EAAAA,SAKMT,EAAAA,EAAAA,QAIAA,EAAAA,EAAAA,SAIAA,EAAAA,EAAAA,OAKbjH,EAAAA,EAAAA,GAKaiH,EAAAA,EAAAA,OAIAA,EAAAA,EAAAA,QAOZiI,GAAkBvP,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,MAE3B,Y,IAAGwP,EAAK,EAALA,MAAOC,EAAU,EAAVA,WAAYC,EAAS,EAATA,UAAWC,EAAQ,EAARA,S,OAAe7P,EAAAA,EAAAA,KAAG,KACnB0P,EAAQG,EAAWA,EAAWH,EAAUC,EAC1DC,KAYKpI,EAAAA,EAAAA,QAKAA,EAAAA,EAAAA,SAKAA,EAAAA,EAAAA,OAKAA,EAAAA,EAAAA,QAQVmB,GAAQzI,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,MAKD,Y,OAAM,EAAHwN,OAKVoC,GAAM5P,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KASR+H,GAAAA,EAAAA,UASYT,EAAAA,EAAAA,QASAA,EAAAA,EAAAA,SASAA,EAAAA,EAAAA,OAQAA,EAAAA,EAAAA,QASVuI,GAAY7P,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,MAId,Y,OAAQ,EAALmJ,SACM,Y,OAAM,EAAHqE,MAIAlG,EAAAA,EAAAA,QAKAA,EAAAA,EAAAA,SAKAA,EAAAA,EAAAA,OAKAA,EAAAA,EAAAA,QAMVwI,IAAW9P,EAAAA,EAAAA,SAAO+P,GAAAA,GAAW,Y,6BAAlB/P,C,KAGRwH,EAAAA,GAIOF,EAAAA,EAAAA,QAIAA,EAAAA,EAAAA,SAIAA,EAAAA,EAAAA,OAIAA,EAAAA,EAAAA,QC1MjB0I,GACO,CACLP,WAAY,IACZC,UAAW,IAHbM,GAKM,CACJC,WAAY,KACZR,WAAY,IACZC,UAAW,IARbM,GAUQ,CACNC,WAAY,KACZR,WAAY,IACZC,UAAW,IAbbM,GAeO,CACLC,WAAY,KACZR,WAAY,IACZC,UAAW,IA8FnB,GAxFuB,WACnB,IAAkCzN,GAAAA,EAAAA,EAAAA,UAASiN,GAAK,GAAG1N,OAA5C0O,EAA2BjO,EAAuB,GAAvCkO,EAAgBlO,EAAuB,GACnBA,GAAAA,EAAAA,EAAAA,UAJjB,GAIdmO,EAA+BnO,EAA0B,GAA5CoO,EAAkBpO,EAA0B,GAC5BA,GAAAA,EAAAA,EAAAA,UAAS+N,GAAuBP,YAA7DA,EAA6BxN,EAA2C,GAA5DqO,EAAiBrO,EAA2C,GAC7CA,GAAAA,EAAAA,EAAAA,UAAS+N,GAAuBN,WAA3DA,EAA2BzN,EAA0C,GAA1DsO,EAAgBtO,EAA0C,GACtEuO,GAAYC,EAAAA,EAAAA,UACZC,GAAYD,EAAAA,EAAAA,QAA8B,OAEhD5N,EAAAA,EAAAA,YAAU,WACN,IAAMgL,EAAW,WACb,IAAM1E,EAAQ9J,OAAOyO,WAEjB3E,GAAS6G,GAAsBC,WAC/BU,EAAYX,IACL7G,GAAS6G,GAAwBC,WACxCU,EAAYX,IACL7G,GAAS6G,GAAuBC,WACvCU,EAAYX,IAEZW,EAAYX,KAIdW,EAAc,Y,IACID,EADDjB,EAAU,EAAVA,WAAYC,EAAS,EAATA,UACzBkB,EAA+B,QAAjBF,EAAAA,EAAUG,eAAO,IAAjBH,OAAAA,EAAAA,EAAmBI,YAEvC,GAAKF,EAAL,CAIA,IAAMpB,EAAQuB,KAAKC,MAAMJ,GAAenB,EAAaC,IACrDW,EAAeb,EAjCF,IAiCgDA,GAC7Dc,EAAcb,GACdc,EAAab,KAKjB,OAHA7B,IAEAxO,OAAO0O,iBAAiB,SAAUF,GAC3B,WACHxO,OAAO2O,oBAAoB,SAAUH,MAE1C,IAYH,OACI,sB,WACI,SAACjI,GAAQ,CAACsK,UAAWA,EAAWe,YAAalJ,GAAAA,EAAAA,UAAkBmJ,YARnD,SAAC1P,G,IAGjBgP,EAFAL,EAAa3O,GAEI,QAAjBgP,EAAAA,EAAUK,eAAO,IAAjBL,GAAAA,EAAmBW,QAAQjC,GAAKkC,WAAUC,SAAAA,G,OAAOA,EAAI7P,QAAUA,O,SAMtD0N,GAAK/D,KAAI,WAAYmG,G,IAAT9P,EAAK,EAALA,M,OACT,SAAC+P,GAAAA,EAAG,CAAS/P,MAAOA,GAAV8P,SAGlB,SAAC1L,GAAW,CACR4L,IAAKhB,EACLiB,YAAY,EACZC,UAAU,EACVC,eArBI,SAACC,GACbzB,EAAajB,GAAK0C,GAAOpQ,Q,SAsBhB0N,GAAK/D,KAAI,WAAa0G,G,IAAV1C,EAAM,EAANA,O,OACT,SAACvJ,GAAkB,CAEf4L,IAAKd,EACLlB,MAAOY,EACPX,WAAYA,EACZC,UAAWA,EACXC,SAAUR,EAAO7E,OAAS,E,SAEzB6E,EAAOhE,KAAI,SAACnB,EAAKsH,G,OACd,UAAC1L,GAAQ,CAAS4H,IAAKxD,EAAIwD,I,UACH,qBAAZxD,EAAIiF,MAAuB,UAACrJ,GAAM,C,UAAEoE,EAAIiF,IAAI,OACnDjF,EAAIxI,QAAS,SAACoE,GAAY,CAACuD,MAAOa,EAAIxI,MAAM2H,MAAOqE,IAAKxD,EAAIxI,MAAMgM,QAFxD8D,OARdO,Y,otFCnGtB,IAAMC,GAAuB9R,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAIZwH,EAAAA,GAYCF,EAAAA,EAAAA,QAKZQ,GAAY9H,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAEZ+H,GAAAA,EAAAA,UAMYT,EAAAA,EAAAA,QAKAA,EAAAA,EAAAA,SAKAA,EAAAA,EAAAA,OAKAA,EAAAA,EAAAA,QAOZlH,GAAQJ,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAGfK,EAAAA,EAAAA,GAEmBiH,EAAAA,EAAAA,SAIAA,EAAAA,EAAAA,SAEfjH,EAAAA,EAAAA,GAGeiH,EAAAA,EAAAA,OAKAA,EAAAA,EAAAA,OAGfjH,EAAAA,EAAAA,IAIG0R,GAAU/R,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAGjBK,EAAAA,EAAAA,EAGmBiH,EAAAA,EAAAA,SACfjH,EAAAA,EAAAA,GAGeiH,EAAAA,EAAAA,OAMAA,EAAAA,EAAAA,QAOZ0K,IAAchS,EAAAA,EAAAA,SAAOiS,GAAAA,eAAc,Y,6BAArBjS,C,KAUFsH,EAAAA,EAAAA,OAKAA,EAAAA,EAAAA,QAMNtH,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,OAIOA,EAAAA,EAAAA,SAAOiS,GAAAA,eAAc,Y,6BAArBjS,C,KAGDsH,EAAAA,EAAAA,Q,mjDCjIlB,IAAM4K,GAAiBlS,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAExBK,EAAAA,EAAAA,GACO0H,GAAAA,EAAAA,UAGY7H,EAAAA,GAAAA,SAIAA,EAAAA,GAAAA,OAEfG,EAAAA,EAAAA,IAIG0R,IAAU/R,EAAAA,EAAAA,SAAOkS,IAAe,Y,6BAAtBlS,C,KACjBK,EAAAA,EAAAA,IAKOyH,IAAY9H,EAAAA,EAAAA,SAAOmS,IAAc,Y,6BAArBnS,C,KAEAE,EAAAA,GAAAA,OAIAA,EAAAA,GAAAA,QAOZsI,GAAcxI,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAMFE,EAAAA,GAAAA,OAIAA,EAAAA,GAAAA,QAKZkS,GAAcpS,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAEd+H,GAAAA,EAAAA,UAGP1H,EAAAA,EAAAA,GAEmBH,EAAAA,GAAAA,SAEfG,EAAAA,EAAAA,IAGeH,EAAAA,GAAAA,OACfG,EAAAA,EAAAA,GAKeH,EAAAA,GAAAA,OAEfG,EAAAA,EAAAA,KAMGgS,GAAqBrS,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,MCxClC,GA/ByB,Y,IAAG8J,EAAW,EAAXA,YAElBkB,GAA8BhI,EAAAA,EAAAA,cAAY,WAC5C8G,EAAY,CAAEtI,MAAOmL,EAAAA,GAAAA,eACrBzB,EAAAA,GAAAA,IAAoByB,EAAAA,GAAAA,eACrB,IAEH,OAAQ,UAAC/G,GAAY,C,WACjB,UAACA,GAAiB,C,UAAC,uEACH,SAAC0M,KAAE,IAAE,wGAErB,SAAC1M,GAAU,C,SAAC,glBAIZ,UAACA,GAAqB,C,WAClB,SAACA,GAAc,C,UACX,SAACsB,GAAW,CACRwF,MAAO,QACP9F,QAASoE,E,SACZ,kIAIL,SAACpF,GAAc,C,SAAC,8N,srCC5BrB,ICCA,GDDM2M,GAAcvS,EAAAA,QAAAA,OAAAA,WAAa,C,6BAAbA,C,MAGCyH,SAAAA,G,OAASA,EAAMC,gBAKlBxH,EAAAA,GAAAA,QAaZH,GAAUC,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,MAIVwS,GAAuBxS,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAGZwH,EAAAA,GAElB0K,GACuBhS,EAAAA,GAAAA,OAIfG,EAAAA,EAAAA,GAKR0R,GAEI1R,EAAAA,EAAAA,GAEmBH,EAAAA,GAAAA,OAEfG,EAAAA,EAAAA,EAKeH,EAAAA,GAAAA,OAEfG,EAAAA,EAAAA,K,SCpDFoS,GAAAA,EACA,SAAG,8CADHA,EAEF,OAAG,6CAFDA,EAGF,OAAG,sBAHDA,EAIF,OAAG,4CAJDA,EAKD,QAAG,4CALFA,EAMA,SAAG,qB,CANHA,KAAAA,GAAW,KASvB,IA8EA,GAxD2B,Y,IAAG3I,EAAW,EAAXA,YACpB4I,GAAYC,EAAAA,GAAAA,GAAcF,GAAYG,UACtCC,GAAWF,EAAAA,GAAAA,GAAcF,GAAYK,QACrCC,GAAWJ,EAAAA,GAAAA,GAAcF,GAAYO,QACrCC,GAAWN,EAAAA,GAAAA,GAAcF,GAAYS,QACrCC,GAAYR,EAAAA,GAAAA,GAAcF,GAAYW,SACtCC,GAAaV,EAAAA,GAAAA,GAAcF,GAAYa,UAEvCC,GAAiBC,EAAAA,EAAAA,UAAQ,WAC3B,QAAQ,GACJ,KAAKd,EACD,MA7BqB,uDA8BzB,KAAKG,EACD,MA5BmB,uDA6BvB,KAAKI,EACD,MA3BmB,sDA4BvB,KAAKE,EACD,MA1BoB,sDA2BxB,KAAKE,EACD,MAzBqB,sDA0BzB,QACI,MA1CoB,0DA4C7B,CAACX,EAAWG,EAAUI,EAAUE,EAAWE,IAExCI,GAAaD,EAAAA,EAAAA,UAAQ,WACvB,QAAQ,GACJ,KAAKd,EACD,MA/CiB,sDAgDrB,KAAKG,EACD,MA9Ce,sDA+CnB,KAAKI,EACD,MA7Ce,qDA8CnB,KAAKE,EACD,MA5CgB,qDA6CpB,KAAKE,EACD,MA3CiB,qDA4CrB,QACI,MA5DgB,yDA8DzB,CAACX,EAAWG,EAAUI,EAAUE,EAAWE,IAExCK,GAAkBjG,EAAAA,EAAAA,KAAY8F,EAAiBE,EAErD,OAAQ,UAAC7N,GAAU,C,WACf,SAACA,GAAc,CAAC8B,cAAegM,E,UACzBX,IAAY,SAACY,GAAgB,CAAC7J,YAAaA,MAEhDiJ,IACG,SAACnN,GAAuB,C,UACpB,SAAC+N,GAAgB,CAAC7J,YAAaA,U,gmCCnFxC,IAAM/J,GAAUC,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,MAKA4T,SAAAA,G,OAAKA,EAAEC,QAAU,UACXD,SAAAA,G,OAAKA,EAAElL,QAETkL,SAAAA,G,OAAKA,EAAEE,aACbzL,GAAAA,EAAAA,kBAEEuL,SAAAA,G,OAAKA,EAAEG,YACjBhM,GAAAA,EAAAA,UAGYT,EAAAA,EAAAA,QAIAA,EAAAA,EAAAA,SAKAA,EAAAA,EAAAA,QAGRsM,SAAAA,G,OAAKA,EAAEI,SAEGJ,SAAAA,G,OAAKA,EAAEK,cAAgB,SAGzB3M,EAAAA,EAAAA,QAMZ4M,GAAYlU,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KACnBK,EAAAA,EAAAA,GAEmBiH,EAAAA,EAAAA,OACfjH,EAAAA,EAAAA,IAIG8T,GAAOnU,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KACdK,EAAAA,EAAAA,EAEmBiH,EAAAA,EAAAA,SACfjH,EAAAA,EAAAA,ICnBV,GArBiC,Y,IAAG4K,EAAI,EAAJA,KAEhC,OACI,UAACrF,GAAU,CACP8C,KAAMuC,EAAKjB,IACX8J,WAAY7I,EAAK6I,WACjBC,UAAW9I,EAAK8I,UAChBC,MAAO/I,EAAKmJ,YACZH,aAAchJ,EAAKgJ,aACnBJ,OAAQ5I,EAAK4I,O,WAEb,SAACjO,GAAY,C,SACRqF,EAAKnE,SAEV,SAAClB,GAAO,C,SACHqF,EAAKhB,kB,glKCtBtB,ICCO,GDSMoK,GAAgBrU,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAELwH,EAAAA,GAZK,sfA+BJF,EAAAA,EAAAA,OA/BI,ufAmDhBgN,GAAmBtU,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAGJuU,EAAQ,MAKXjN,EAAAA,EAAAA,QAIAA,EAAAA,EAAAA,SAIAA,EAAAA,EAAAA,QAMZkN,GAAgBxU,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAMJsH,EAAAA,EAAAA,SAKZmN,GAAWzU,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAClBK,EAAAA,EAAAA,GACO0H,GAAAA,EAAAA,UAEYT,EAAAA,EAAAA,OACfjH,EAAAA,EAAAA,IAIGqU,GAAY1U,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KACnBK,EAAAA,EAAAA,EACO0H,GAAAA,EAAAA,UAEYT,EAAAA,EAAAA,SACfjH,EAAAA,EAAAA,GAGeiH,EAAAA,EAAAA,QASZqN,GAAgB3U,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KACvBK,EAAAA,EAAAA,GACO0H,GAAAA,EAAAA,UAIYT,EAAAA,EAAAA,QAIAA,EAAAA,EAAAA,SAEfjH,EAAAA,EAAAA,GAGeiH,EAAAA,EAAAA,OAKAA,EAAAA,EAAAA,OACfjH,EAAAA,EAAAA,IAOGuU,IAAoB5U,EAAAA,EAAAA,SAAO8H,IAAU,Y,6BAAjB9H,C,KAIRsH,EAAAA,EAAAA,OAInBmB,GAK2BnB,EAAAA,EAAAA,QAM3BlH,GAGIC,EAAAA,EAAAA,GAEmBiH,EAAAA,EAAAA,QAIAA,EAAAA,EAAAA,OAGfjH,EAAAA,EAAAA,GAGeiH,EAAAA,EAAAA,OAKvBiB,GACIlI,EAAAA,EAAAA,EAGmBiH,EAAAA,EAAAA,SACfjH,EAAAA,EAAAA,GAOeiH,EAAAA,EAAAA,OAKvBc,GAKAR,GAEIQ,GAEIK,GAC2B8L,EAAQ,OAEZjN,EAAAA,EAAAA,OAIAA,EAAAA,EAAAA,OACQiN,EAAQ,OAM/C3M,GAEIa,GAMJL,GAGuBd,EAAAA,EAAAA,OAKvBc,GAIuBd,EAAAA,EAAAA,QAInBmB,GAGuBnB,EAAAA,EAAAA,SAKJA,EAAAA,EAAAA,QAMhBuN,GAAgB7U,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAOJsH,EAAAA,EAAAA,QAIAA,EAAAA,EAAAA,SAIAA,EAAAA,EAAAA,OAKAA,EAAAA,EAAAA,S,SClRbmL,GAAAA,EACF,OAAG,sBADDA,EAEF,OAAG,qB,CAFDA,KAAAA,GAAW,KAKvB,IAkEA,GAlE0B,WACtB,IAAMQ,GAAWN,EAAAA,GAAAA,GAAcF,GAAYS,QACrC4B,GAAgBnC,EAAAA,GAAAA,GAAcF,GAAYO,QAU1C+B,EAAqB,SAACC,GAExB,OAAOC,EAAAA,GAAAA,IAAiBH,GAAe3J,KAAI,SAAC+J,EAAMC,GAO9C,OALIH,EAHwB,IAIJG,EAJI,IAMJA,IAGb,SAACC,GAAY,CAAenK,KAAMiK,GAAfA,EAAKG,KAE5B,4BAIf,OAAQ,SAACzP,GAAgB,C,UACrB,UAACA,GAAoB,C,WACjB,SAACA,GAAgB,C,UACb,SAAC0P,KAAE,C,SAAC,oQAIR,SAAC1N,GAAK,C,SACD2N,GAAAA,GAAAA,KAAyB,SAAC3L,G,OAAS,SAAC4L,GAAI,CAAe5L,KAAMA,GAAfA,EAAKyL,UAEtDpC,IAAY,SAACrN,GAAmB,C,UAC9B,UAACA,GAAgB,C,WACb,SAACA,GAAW,C,SACP6P,GAAAA,GAAAA,SAEL,SAAC7P,GAAY,C,SACR6P,GAAAA,GAAAA,mBAIZxC,IAAY,sB,WACT,SAACrN,GAAgB,C,SACZmP,GAAmB,MAExB,SAACnN,GAAK,C,UACF,SAAC4N,GAAI,CAAC5L,KAAM6L,GAAAA,QAEhB,SAAC7P,GAAgB,C,SACZmP,GAAmB,SAG1B9B,IAAY,SAACrN,GAAgB,C,UAC1BqP,EAAAA,GAAAA,IAAiBH,GAAe3J,KAAI,SAAC+J,G,OAAS,SAACE,GAAY,CAAenK,KAAMiK,GAAfA,EAAKG,e,wjFCtEvF,IAAM9H,IAAczN,EAAAA,EAAAA,KAAG,KACEwH,EAAAA,EAAAA,OACfjH,EAAAA,EAAAA,IAIJgN,IAAcvN,EAAAA,EAAAA,KAAG,KACEwH,EAAAA,EAAAA,OAMAA,EAAAA,EAAAA,QAKnBgG,IAAkBxN,EAAAA,EAAAA,KAAG,KACFwH,EAAAA,EAAAA,QAKZqG,GAA4B,CACrC,CACI7G,MAAO,4OACPmD,YAAa,mwBAEbD,IAAK,uCACL8C,KAAM,QACNO,aAAavN,EAAAA,EAAAA,KAAG,KAMSwH,EAAAA,EAAAA,OAcAA,EAAAA,EAAAA,QAOzBgG,iBAAiBxN,EAAAA,EAAAA,KAAG,KAGKwH,EAAAA,EAAAA,OAKAA,EAAAA,EAAAA,QAKzBiG,aAAazN,EAAAA,EAAAA,KAAG,KACSwH,EAAAA,EAAAA,OACfjH,EAAAA,EAAAA,KAId,CACIyG,MAAO,0RACPkD,IAAK,oCACL8C,KAAM,QACNS,YAAAA,GACAF,aAAavN,EAAAA,EAAAA,KAAG,KAOSwH,EAAAA,EAAAA,QAIzBgG,iBAAiBxN,EAAAA,EAAAA,KAAG,KACdwN,GACmBhG,EAAAA,EAAAA,SAK7B,CACIR,MAAO,gSACPkD,IAAK,wCACL8C,KAAM,SACNS,YAAAA,GACAF,aAAavN,EAAAA,EAAAA,KAAG,KACVuN,GAGmB/F,EAAAA,EAAAA,OAIAA,EAAAA,EAAAA,QAIzBgG,gBAAAA,K,mwIClHD,IAAMvN,GAAUC,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAGPwH,EAAAA,GAIOF,EAAAA,EAAAA,QAgBVoO,GAAa1V,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,MAQb2V,GAAe3V,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAULsH,EAAAA,EAAAA,QAWVsO,IAAkB5V,EAAAA,EAAAA,SAAO8H,IAAU,Y,6BAAjB9H,C,MAKlB6V,GAAmB7V,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,MAWNyH,SAAAA,G,OAASA,EAAMC,gBAgBlBJ,EAAAA,EAAAA,QAKAA,EAAAA,EAAAA,SAMAA,EAAAA,EAAAA,OAKAA,EAAAA,EAAAA,QAOVwO,IAAqB9V,EAAAA,EAAAA,SAAO8H,IAAU,Y,6BAAjB9H,C,KAMXsH,EAAAA,EAAAA,QAKAA,EAAAA,EAAAA,UAMVyO,GAAiB/V,EAAAA,QAAAA,IAAAA,MAAiB,CAC3CwN,IAAK,2CACP,Y,6BAF4BxN,C,KAQPsH,EAAAA,EAAAA,QAQAA,EAAAA,EAAAA,SAOAA,EAAAA,EAAAA,QAKV0F,GAAYhN,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAQFsH,EAAAA,EAAAA,QAMAA,EAAAA,EAAAA,SAMAA,EAAAA,EAAAA,OAMAA,EAAAA,EAAAA,QAOVlH,GAAQJ,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KACjBK,EAAAA,EAAAA,GAEO0H,GAAAA,EAAAA,UAEYT,EAAAA,EAAAA,SAChBjH,EAAAA,EAAAA,IAIMkI,GAAcvI,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KACvBK,EAAAA,EAAAA,EACO0H,GAAAA,EAAAA,UAGYT,EAAAA,EAAAA,SACjBjH,EAAAA,EAAAA,GAIiBiH,EAAAA,EAAAA,QAKV0O,GAAahW,EAAAA,QAAAA,IAAAA,WAAU,C,8BAAVA,C,KACtBK,EAAAA,EAAAA,EACO0H,GAAAA,EAAAA,UAEYT,EAAAA,EAAAA,SACjBjH,EAAAA,EAAAA,IChLN,GArCwB,WACpB,IAAMqT,GAAkBjG,EAAAA,EAAAA,KAAYwI,KAAuBC,KACrDC,GAAwBC,EAAAA,GAAAA,GAAoB1C,EAAiB,CAAE2C,aAAc,EAAGC,YAAY,IAElG,OACI,UAAC1Q,GAAU,C,WACP,UAACA,GAAa,C,WACV,SAACA,GAAmB,CAAC8B,cAAeyO,KACpC,SAACvQ,GAAqB,C,UAClB,SAACA,GAAiB,UAG1B,UAACA,GAAkB,C,WACf,UAACA,GAAY,C,WACT,SAACA,GAAa,C,SAAC,uIACf,SAACA,GAAQ,C,UACL,SAAC0P,KAAE,C,SAAC,uTAIR,SAAC1P,GAAc,C,SAEP,64BAOZ,SAACA,GAAe,C,SACX+H,GAAAA,KAAU/D,SAAAA,G,OAAQ,SAACqE,GAAW,CAAClB,sBAAoB,EAAkBnD,KAAMA,GAAlBA,EAAK9C,mBClBnF,GApBgC,WAG5B,OACI,SAAClB,GAAuB,C,UACpB,UAACA,GAAY,C,WACT,SAACA,GAAQ,C,UACL,SAAC0P,KAAE,C,SACE,wPAGT,SAAC1P,GAAU,C,SACN,+WAEL,SAACA,GAAc,CAAC4H,IAbD,8CAa0BE,IAAK,0J,skPCRvD,IAAM3N,GAAUC,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAMLwH,EAAAA,GAQOtH,EAAAA,GAAAA,QAOZ0V,IAAkB5V,EAAAA,EAAAA,SAAO8H,IAAU,Y,6BAAjB9H,C,MAIlBoI,GAAcpI,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAkBFE,EAAAA,GAAAA,UAOZE,GAAQJ,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KACfK,EAAAA,EAAAA,GACO0H,GAAAA,EAAAA,UAIY7H,EAAAA,GAAAA,SACfG,EAAAA,EAAAA,GAGeH,EAAAA,GAAAA,QAOZqI,GAAcvI,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAErBK,EAAAA,EAAAA,EAEO0H,GAAAA,EAAAA,UASY7H,EAAAA,GAAAA,SACfG,EAAAA,EAAAA,EAWeH,EAAAA,GAAAA,OACfG,EAAAA,EAAAA,GAQeH,EAAAA,GAAAA,OACfG,EAAAA,EAAAA,IASGmI,GAAcxI,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAIFE,EAAAA,GAAAA,QAKZ8M,GAAYhN,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAWAE,EAAAA,GAAAA,QAKZsV,GAAOxV,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAyBKE,EAAAA,GAAAA,SAWAA,EAAAA,GAAAA,OAWAA,EAAAA,GAAAA,QAaZqW,GAAYvW,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KACnBK,EAAAA,EAAAA,GACO0H,GAAAA,EAAAA,UAEY7H,EAAAA,GAAAA,SACfG,EAAAA,EAAAA,GAGeH,EAAAA,GAAAA,QAKZsW,GAAkBxW,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAClB+H,GAAAA,EAAAA,UACP1H,EAAAA,EAAAA,EAEmBH,EAAAA,GAAAA,SACfG,EAAAA,EAAAA,GAGeH,EAAAA,GAAAA,QAMZuW,GAAUzW,EAAAA,QAAAA,IAAAA,WAAU,C,8BAAVA,C,MAIjB,YACF,OADa,EAARqM,UAEH,IAAK,QACH,OAAOvM,EAAAA,EAAAA,KAAG,MAWZ,IAAK,OACH,OAAOA,EAAAA,EAAAA,KAAG,SAcPiI,GAAAA,EAAAA,WAGW,Y,OAAM,EAAHyF,MAGAtN,EAAAA,GAAAA,UACf,YACJ,OADe,EAARmM,UAEL,IAAK,QACH,OAAOvM,EAAAA,EAAAA,KAAG,MACZ,IAAK,OACH,OAAOA,EAAAA,EAAAA,KAAG,SAEYI,EAAAA,GAAAA,QAGtB,YACJ,OADe,EAARmM,UAEL,IAAK,QACH,OAAOvM,EAAAA,EAAAA,KAAG,MAQZ,IAAK,OACH,OAAOA,EAAAA,EAAAA,KAAG,SAYSI,EAAAA,GAAAA,QACrB,Y,MAA+B,UAApB,EAARmM,UACKvM,EAAAA,EAAAA,KAAG,OACHA,EAAAA,EAAAA,KAAG,SAcN4W,IAAgB1W,EAAAA,EAAAA,SAAOgN,IAAU,Y,8BAAjBhN,C,KAIJE,EAAAA,GAAAA,QAKZyW,GAAc3W,EAAAA,QAAAA,IAAAA,WAAU,C,8BAAVA,C,KASFE,EAAAA,GAAAA,SAKAA,EAAAA,GAAAA,OAKAA,EAAAA,GAAAA,QAOZ+M,GAAajN,EAAAA,QAAAA,IAAAA,WAAU,C,8BAAVA,C,KAODE,EAAAA,GAAAA,QC3SzB,GAtDyB,Y,IAAG4J,EAAW,EAAXA,YAClBkB,GAA8BhI,EAAAA,EAAAA,cAAY,WAC5C8G,EAAY,CAAEtI,MAAOmL,EAAAA,GAAAA,oBACrBzB,EAAAA,GAAAA,IAAoByB,EAAAA,GAAAA,oBACrB,IAEH,OACI,UAAC/G,GAAU,C,WACP,SAACA,GAAc,KACf,UAACA,GAAY,C,WACT,SAACA,GAAQ,C,UACL,UAAC0P,KAAE,C,UAAC,iGACkB,SAACsB,OAAI,C,SAAC,oFAGhC,SAAChR,GAAc,C,SAAC,ujBAKhB,SAACA,GAAc,C,UACX,SAACsB,GAAW,CACRwF,MAAO,QACP9F,QAASoE,E,SACZ,kIAIL,SAACpF,GAAU,CAACyG,SAAS,OAAOmB,IAAI,oDAChC,SAAC5H,GAAU,CAACyG,SAAS,QAAQmB,IAAI,qDAErC,SAAC5H,GAAc,C,UACX,SAACA,GAAkB,C,UACf,UAACA,GAAO,C,WACJ,UAACA,GAAgB,C,WACb,UAACA,GAAY,C,UAAC,+FAEV,SAAC0M,KAAE,IAAE,iKAGT,SAAC1M,GAAkB,C,SAAC,yTAIxB,SAACA,GAAa,C,UACV,SAACoE,MAAG,CAACwD,IAAI,8CAA8CE,IAAI,2B,onECnDhF,IAAM3N,GAAUC,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAQAsH,EAAAA,EAAAA,QAIAA,EAAAA,EAAAA,SAIAA,EAAAA,EAAAA,OAIAA,EAAAA,EAAAA,QAKVlH,GAAQJ,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KACjBK,EAAAA,EAAAA,GACO0H,GAAAA,EAAAA,UAEYT,EAAAA,EAAAA,SACjBjH,EAAAA,EAAAA,GAGiBiH,EAAAA,EAAAA,OAGjBjH,EAAAA,EAAAA,IAIOkI,GAAcvI,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KACvBK,EAAAA,EAAAA,EACO0H,GAAAA,EAAAA,UAGYT,EAAAA,EAAAA,SACjBjH,EAAAA,EAAAA,GAGiBiH,EAAAA,EAAAA,QAMV0F,GAAYhN,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,MAMZ6W,GAAe7W,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAMLsH,EAAAA,EAAAA,QAIAA,EAAAA,EAAAA,SAKAA,EAAAA,EAAAA,OAKAA,EAAAA,EAAAA,QAOVkB,GAAcxI,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAGJsH,EAAAA,EAAAA,QAKV2F,GAAajN,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAQHsH,EAAAA,EAAAA,QAIAA,EAAAA,EAAAA,SAIAA,EAAAA,EAAAA,QAMVwP,GAAU9W,EAAAA,QAAAA,IAAAA,MAAiB,CACtCwN,IAAK,0DACL,Y,6BAFqBxN,C,MC7EvB,GA3CwB,WACpB,OACI,UAAC4F,GAAU,C,WACP,UAACA,GAAY,C,WACT,SAACA,GAAQ,C,UACL,UAAC0P,KAAE,C,UAAC,kHAEA,SAAChD,KAAE,IAAE,uGAIb,SAAC1M,GAAc,C,SAAC,kUAIhB,UAACA,GAAe,C,WACZ,SAACA,GAAc,C,UACX,SAACmR,IAAC,CAAClW,KAAM,0EAA2EC,OAAO,SAASkW,IAAI,a,UACpG,SAAC9P,GAAW,CACRwF,MAAO,Y,SACV,+EAKT,SAAC9G,GAAc,C,UACX,SAACmR,IAAC,CAAClW,KAAM,6DAA8DC,OAAO,SAASkW,IAAI,a,UACvF,SAAC9P,GAAW,CACRwF,MAAM,Y,SACT,iFAOjB,SAAC9G,GAAa,C,UACV,SAACA,GAAU,CAAC8H,IAAI,mH,8CC1CnBuJ,GAAS,CAClB,CACInQ,MAAO,8DACPmD,aACI,qB,SAAE,6gBAMV,CACInD,MAAO,8EACPmD,aACI,qB,SAAE,0e,6kCCNP,IAAMiN,GAAkBlX,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAORsH,EAAAA,EAAAA,QAKVuF,GAAQ7M,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAIL+H,GAAAA,EAAAA,OAKOT,EAAAA,EAAAA,OAIAA,EAAAA,EAAAA,QAOVlH,GAAQJ,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KACjBK,EAAAA,EAAAA,GACO0H,GAAAA,EAAAA,UAEYT,EAAAA,EAAAA,SACjBjH,EAAAA,EAAAA,GAGiBiH,EAAAA,EAAAA,OACjBjH,EAAAA,EAAAA,IAKOkI,GAAcvI,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KACvBK,EAAAA,EAAAA,EACO0H,GAAAA,EAAAA,UAEYT,EAAAA,EAAAA,SACjBjH,EAAAA,EAAAA,GAGiBiH,EAAAA,EAAAA,OACjBjH,EAAAA,EAAAA,IAGiBiH,EAAAA,EAAAA,OACjBjH,EAAAA,EAAAA,IC/CN,GAbwB,WACpB,OACI,SAACuF,GAAkB,C,SACdqR,GAAO9L,KAAI,Y,IAAGrE,EAAK,EAALA,MAAOmD,EAAW,EAAXA,Y,OAClB,UAACrE,GAAQ,C,WACL,SAACA,GAAQ,C,SAAEkB,KACX,SAAClB,GAAc,C,SAAEqE,MAFNnD,S,iOCuB/B,IAAMqQ,GAAaC,KAAQ,W,OAAM,kCAA6C,C,wDAiI9E,GAhH0C,Y,IAAGC,EAAS,EAATA,UACIpV,GAAAA,EAAAA,EAAAA,WAAkB,GAAxDqV,EAAsCrV,EAAwB,GAA9CsV,EAAsBtV,EAAwB,GAE/DyR,GAAkBjG,EAAAA,EAAAA,KAAY+J,KAAeC,KAC7CtB,GAAwBC,EAAAA,GAAAA,GAAoB1C,EAAiB,CAAE2C,aAAc,EAAGC,YAAY,IAE5FoB,EAAkB,WACpBH,GAAmB,KAGvB1U,EAAAA,EAAAA,YAAU,WAEN,OADAxD,OAAO0O,iBAAiB,OAAQ2J,GACzB,WACHrY,OAAO2O,oBAAoB,OAAQ0J,MAExC,IAEH,IAAMC,GAAsBlH,EAAAA,EAAAA,QAAuB,MACfxO,GAAAA,EAAAA,EAAAA,UAAS,IAAtCd,EAA6Bc,EAAY,GAA7B2V,EAAiB3V,EAAY,GACtBA,GAAAA,EAAAA,EAAAA,UAAS,IAA5BT,EAAmBS,EAAY,GAAxB4V,EAAY5V,EAAY,GAEZA,GAAAA,EAAAA,EAAAA,UAAsB,CAC5CgC,eAAe,EACfC,gBAAgB,EAChBO,YAAa,GACbC,WAAY,GACZH,WAAYC,EAAAA,EAAAA,QACZL,qBAAiBC,EACjBC,mBAAeD,EACfE,SAAUvD,GAAeC,OARtBK,EAAmBY,EASxB,GATYb,EAAYa,EASxB,GACgCA,GAAAA,EAAAA,EAAAA,WAAS,GAApCV,EAA2BU,EAAe,GAA/BX,EAAgBW,EAAe,GAC3C6H,GAAc9G,EAAAA,EAAAA,cAAY,SAACiI,GAC7B2M,GAAkB,OAAJ3M,QAAI,IAAJA,OAAAA,EAAAA,EAAM9J,aAAc,IAClC0W,EAAS5M,EAAKzJ,OACdJ,GAASqB,SAAAA,GAAS,OAAC,kBACZA,GAAK,CACR0B,iBAAqB,OAAJ8G,QAAI,IAAJA,OAAAA,EAAAA,EAAM9G,kBAAmB9C,EAAM8C,gBAChDE,eAAmB,OAAJ4G,QAAI,IAAJA,OAAAA,EAAAA,EAAM5G,gBAAiBhD,EAAMgD,cAC5CC,UAAc,OAAJ2G,QAAI,IAAJA,OAAAA,EAAAA,EAAM3G,WAAYjD,EAAMiD,SAClCL,eAAe,SAEpB,IAGH,OADAgR,EAAAA,GAAAA,KAAiB,IAEb,UAACrP,GAAiB,CACd4L,IAAKmG,E,WAEL,SAACG,GAAM,CAAChO,YAAaA,KACrB,UAAClE,GAAqB,C,WAClB,SAACA,GAAiB,CAAC8B,cAAeyO,E,UAC9B,SAACgB,GAAU,CAACG,eAAgBA,OAEhC,SAACS,GAAa,QAElB,SAAC1D,GAAa,KACd,SAAC2D,GAAgB,CAAClO,YAAaA,KAC/B,SAACmO,GAAU,KACX,SAACC,GAAW,KACZ,SAACtS,GAAU,C,UACP,UAACA,GAAY,C,WACT,SAACA,GAAQ,CACLoC,aAAc,GACdC,QAAQnI,EAAAA,EAAAA,KAAG,KACYwH,EAAAA,EAAAA,Q,UAKvB,SAACgO,KAAE,C,SAAC,4OAIR,SAAC6C,GAAc,UAGvB,SAACvS,GAAS,C,UACN,UAACA,GAAY,C,WACT,SAACA,GAAQ,CAACoC,aAAc,G,UACpB,SAACsN,KAAE,C,SAAC,gKAIR,SAAC1P,GAAQ,C,SACJ+H,GAAAA,GAAAA,KAAU,SAAC/D,EAAM0H,G,OACd,SAACkE,GAAI,CAED5L,KAAMA,EACNE,YAAaA,EACbD,aA5FZ,IA4F0ByH,GAAoB8G,EAAAA,EAAAA,IAAgBC,EAAAA,EAAAA,IAAkBhB,EAAU,UAAOjT,GAHhFwF,EAAKyL,UAOtB,SAACiD,GAAe,KAChB,SAACC,GAAW,KACZ,SAAC3S,GAAW,C,SAAE4S,GAAAA,WAGtB,SAACC,GAAK,CACFrX,SAAUA,EACVC,MAAOA,EACPF,WAAYA,EACZG,aAAcA,EACdC,UAAWA,EACXC,MAAOA,IAEVD,IAAa,SAACqE,GAAgB,Q,4DC/HrC8S,GAAqC,Y,IAAGC,EAAW,EAAXA,YAAatB,EAAS,EAATA,UAAWuB,EAAa,EAAbA,cAClE,OACI,SAACC,EAAAA,EAAM,CACH/R,MAAO6R,EAAY7R,MACnBmD,YAAa0O,EAAY1O,YACzB6O,UAAU,EACVC,UAAU,EACVC,YAAY,E,UAEZ,SAACC,GAAe,CACZ5B,UAAWA,EACXuB,cAAeA,OAM/BF,GAAiBQ,gBAAkB,W,OAAA,4BAAM3N,G,IAC7B4N,EACAC,EAAKC,EAEP5W,EAGE6W,EAIFC,EAEAZ,EAEApT,EAEsD,EAArDiU,EAAuBC,EAAiBpC,EAuBzCuB,E,kFAvCiCc,EAAAA,GAAAA,GAAanO,EAAS,CAAEoO,gBAAgB,I,cAAzE,EAAsB,OAApBR,qBACAC,EAAe7N,EAAf6N,IAAKC,EAAU9N,EAAV8N,MAEP5W,EAAQ4W,EAAMO,WAEhBC,EAGApX,EAHAoX,KACIP,YAIFC,EAAaO,QAAOC,EAAAA,GAAAA,GAAU,aAAcX,KAAQY,EAAAA,GAAAA,GAAiBvX,IAErEkW,GAAcsB,EAAAA,GAAAA,IAAeX,GAE7B/T,GAAY2U,EAAAA,GAAAA,GAAa3O,EAAQ6N,K,mBAE2Be,QAAQC,IAAI,CAC1E7U,EAAU8U,YAAsCC,EAAAA,EAAAA,MAChD/U,EAAU8U,YAAgC,mBACnCE,EAAAA,EAAAA,GAAQ,CAAEhB,WAAAA,KAAa,CAC1BiB,cAAc,MAElBC,EAAAA,EAAAA,IACIlB,EACAJ,EACAuB,EAAAA,GAAAA,SACA,CACIC,EAAAA,GAAAA,SACAA,EAAAA,GAAAA,OACAA,EAAAA,GAAAA,OAEJ,CAAE,aAAc,oC,2BAfoC,GAiB1D,gBAjBKnB,EAAqD,EAiB1D,GAjB4BC,EAA8B,EAiB1D,GAjB6CpC,EAAa,EAiB1D,GAEEmC,EAAsB/T,WACtB4T,EAAMuB,UAASC,EAAAA,GAAAA,GAAmBrB,EAAsB9T,QAAQoV,MAAM,KAGpElC,GAA+B,OAAfa,QAAe,IAAfA,OAAAA,EAAAA,EAAiBhU,YCvFHsV,EDwFNtB,EAAgB/T,QAAQqV,QCvF/CC,OAAOC,OAAOF,GAASG,QAAOC,SAAAA,G,IACnBA,EAARC,EAAc,OAAND,QAAM,IAANA,GAAmB,QAAnBA,EAAAA,EAAQlR,mBAAW,IAAnBkR,OAAAA,EAAAA,EAAqBC,MACnC,OAAOA,EAAMC,SAAS,cAAgBD,EAAMC,SAAS,uBDsFnD,G,kBAEE,CACJ1C,YAAAA,EACAtB,UAAAA,EACAuB,cAAAA,I,kCC9F+B,IAACmC,I,uBD+CCxP,G,gCAAN,GAmDnC,W,+LErFO,EAoBA,E,4GAuJA,SAAekP,EAClBlB,EACA+B,EACA/X,EACAgY,EACAL,G,OALkBT,EAAY,sB,SAAZA,I,OAAAA,GAAf,4BACHlB,EACA+B,EACA/X,EACAgY,EACAL,G,IACAM,EAGM3W,EAOA4W,EAgBAC,EAGI5W,EAAI,Y,wEA7Bd0W,EAAAA,EAAAA,OAAAA,QAAAA,IAAAA,EAAAA,IAAiB,KAGX3W,GAA0B,gBAC5B0U,WAAAA,GACG2B,GAAM,CACTK,OAAQI,EAAkBJ,GAC1BnB,IAAKoB,IAGHC,EAA+BH,EAC/B,CAAEM,cAAe,UAAgB,OAANN,IAC3B,GAEF/B,IACA1U,EAAO0U,WAAaA,GAGpBhW,IACAsB,EAAOtB,SAAWA,GAGtBsB,EAAOgX,YAAaC,EAAAA,EAAAA,GAAsB,CACtCtZ,OAAQuZ,QAAQT,KAGdI,EAAM,iB,oBAGWM,EAAAA,EAAAA,KACf,W,OAAMC,EAAAA,EAAAA,IAAmBP,EAAK,CAC1BD,QAAAA,EACA5W,OAAAA,EACAqX,iBAAkB,SAACrX,GACf,OAAOsX,EAAAA,EAAAA,WAAUtX,S,eALvBC,EAAO,EAAH,K,kBAUHA,EAAKmG,KAAK6P,O,0CAGjBsB,EAAAA,EAAAA,IAAiB,EAAD,I,kBACT,I,0DAjDO3B,EAAY,sBAmElC,SAASkB,EAAkBU,GACvB,GAAIA,GAAWA,EAAQ/R,OACnB,OAAO+R,EAAQC,KAAK,KAKrB,SAAeC,EAAWhD,EAAoB+B,G,OAA/BiB,EAAU,sB,SAAVA,I,OAAAA,GAAf,4BAA0BhD,EAAoB+B,G,0FAC1Cb,EACHlB,EACA+B,EACAZ,EAAc8B,QACd,CAAC7B,EAAiB8B,SAAU9B,EAAiB+B,MAAO/B,EAAiBgC,U,4CAL7C,sBAUzB,SAAeC,EAAoBrD,EAAoB+B,G,OAAxCsB,EAAmB,sB,SAAnBA,I,OAAAA,GAAf,4BAAmCrD,EAAoB+B,G,0FACnDb,EACHlB,EACA+B,EACAZ,EAAcmC,SACd,CAAClC,EAAiB8B,SAAU9B,EAAiB+B,MAAO/B,EAAiBgC,U,4CALpC,sBASlC,SAAeG,EAAqBvD,EAAoB+B,G,OAAzCwB,EAAoB,sB,SAApBA,I,OAAAA,GAAf,4BAAoCvD,EAAoB+B,G,0FACpDb,EACHlB,EACA+B,EACAZ,EAAcqC,aACd,CAACpC,EAAiB8B,SAAU9B,EAAiB+B,S,4CALX,uB,SAxQ9BhC,GAAAA,EACG,YAAG,cADNA,EAEI,aAAG,gBAFPA,EAGD,QAAG,UAHFA,EAIA,SAAG,WAJHA,EAKJ,KAAG,iBALCA,EAMO,gBAAG,mCANVA,EAOA,SAAG,WAPHA,EAQE,WAAG,eARLA,EASK,cAAG,kBATRA,EAUS,kBAAG,uBAVZA,EAWA,SAAG,YAXHA,EAYM,eAAG,kBAZTA,EAaA,SAAG,WAbHA,EAcK,cAAG,gBAdRA,EAeG,YAAG,cAfNA,EAgBI,aAAG,eAhBPA,EAiBc,uBAAG,2B,CAjBjBA,IAAAA,EAAa,K,SAoBbC,GAAAA,EACG,YAAG,cADNA,EAEA,SAAG,WAFHA,EAGH,MAAG,QAHAA,EAIF,OAAG,SAJDA,EAKK,cAAG,iB,CALRA,IAAAA,EAAgB,M,iJCvBtBqC,EAAeC,IAAAA,OAAa,CAC9BC,SAASC,EAAAA,EAAAA,KACHC,sDACAA,uCAGVJ,EAAaK,aAAaC,QAAQC,KAC9B,SAACC,GACG,IAAMlC,EAAQmC,EAAAA,GAAAA,KAAaC,EAAAA,IACrBC,EAAaF,EAAAA,GAAAA,KAAaG,EAAAA,IAE1BnC,EAAU,CACZ,mBAAoB,kBAYxB,OATK+B,EAAO/B,QAAuB,eAAKH,IACpCG,EAAuB,cAAI,UAAkB,OAAPH,IAGtCqC,IACAlC,EAAQ,gBAAkBkC,GAE9BH,EAAO/B,SAAU,UAAK+B,EAAO/B,QAAYA,GAElC+B,KAEX,SAACK,G,OAAU1D,QAAQ2D,OAAOD,MAO9B,IAAM5B,EAAiBjB,OAAO+C,OAAOf,GAErCf,EAAe+B,IAAM,W,OAAA,4BAAMtC,EAAKnQ,G,wEACxBA,IACAA,EAAQ2Q,iBAAmBrX,SAAAA,GACvB,OAAOsX,EAAAA,EAAAA,WAAUtX,K,kBAGlBmY,EAAagB,IAAItC,EAAKnQ,I,2DANNmQ,EAAKnQ,G,gCAAX,GAQrB,O,8HCyCa6M,EAAkB,SAC3B6F,EACAC,G,IACAC,EAAY,UAAH,8CACTC,EAAO,UAAH,6CAAGC,EAAAA,GAED9S,EAAU,GACZ+S,GAAuB,EACrBC,GAAkBC,EAAAA,EAAAA,GAAaC,EAAAA,IAsDrC,OApDAR,EACK/C,QAAOtR,SAAAA,G,OAAQA,EAAKpD,OAASoE,EAAAA,EAAAA,WAC7B8T,SAAQ9U,SAAAA,GACL2B,EAAQhM,KAAK,CACT8V,GAAIzL,EAAKyL,GACTxT,MAAO+H,EAAK+U,SACZnd,MAAO2c,EACD,8EAAmCI,OAAjB3U,EAAK+U,SAAS,KAAuC/U,OAApC2U,EAAgB3U,EAAK+U,UAAU,OAAgB,OAAX/U,EAAK/H,MAAM,+BAClF,uEAA8B,OAAd+H,EAAK+U,SAAS,wBACpC5U,MAAOH,EAAK/H,MACZ+c,WAAYhV,EAAKiV,WACjBrY,KAAMoE,EAAAA,EAAAA,QACNkU,SAAUC,EAAAA,GAAAA,QACVX,KAAMxU,EAAKwU,KACXY,UAAWpV,EAAKoV,YAGhBpV,EAAKwU,OACLE,GAAuB,MAInCL,EACK/C,QAAOtR,SAAAA,G,OAAQA,EAAKpD,OAASoE,EAAAA,EAAAA,WAC7B8T,SAAQ9U,SAAAA,GACL,IAAMqV,EAAY,CACd5J,GAAIzL,EAAKyL,GACTxT,MAAO,EACPL,MAAO,6CACPuI,MAAOH,EAAK/H,MACZ+c,WAAYhV,EAAKiV,WACjBrY,KAAMoE,EAAAA,EAAAA,QACNkU,SAAUC,EAAAA,GAAAA,QACVX,KAAMxU,EAAKwU,KACXY,UAAWpV,EAAKoV,WAGhBpV,EAAKwU,OACLE,GAAuB,GAGvB,SAAWJ,EACX3S,EAAQ2T,QAAQD,GAEhB1T,EAAQhM,KAAK0f,MAIrBX,GACA/S,EAAQ6S,KAAKA,GAGV7S,I,wHCxJJ,EAOA,E,4EAPKwT,GAAAA,EACD,QAAG,UADFA,EAED,QAAG,UAFFA,EAGC,UAAG,aAHJA,EAIF,OAAG,S,CAJDA,IAAAA,EAAoB,K,SAOpBI,GAAAA,EACJ,KAAG,OADCA,EAED,QAAG,U,CAFFA,IAAAA,EAAc,KAyCnB,MAwCJ,W,SAxCU7V,EAaG7B,I,eACR2X,KAAK/J,GAAK5N,EAAM4N,GAChB+J,KAAK5Y,KAAOiB,EAAMjB,KAClB4Y,KAAKvd,MAAQ4F,EAAM5F,MACnBud,KAAKP,WAAapX,EAAMoX,WACxBO,KAAKT,SAAW7E,OAAOrS,EAAMkX,UAC7BS,KAAKhB,KAAO3W,EAAM2W,KAClBgB,KAAKJ,UAAYvX,EAAMuX,UAEvBI,KAAK5d,MAAQ4d,KAAK5Y,OAASoE,EAAAA,EAAAA,QACrB,2DAA4B,OAAdwU,KAAKT,SAAS,yBAC5B,6CAENS,KAAKC,WAAaD,KAAK5Y,OAASoE,EAAAA,EAAAA,QAC1B,6BACA,GAENwU,KAAKE,QAAUF,KAAK5Y,OAASoE,EAAAA,EAAAA,QACvBuU,EAAezV,QACfyV,EAAeI,K,OAhChBjW,EAAK,UAmCdkW,SAAAA,WACI,OAAOJ,KAAKP,YAAcO,KAAKvd,O,EAIpC,GAAI,SAASwW,EAAkBzO,GAC9B,OAAKA,EAIEA,EAAK6V,UAAY7V,EAAK6V,SAASnV,OAoC1C,SAA6BV,G,IAIrBA,EAAgB,EAHdqU,EAAS,GAETyB,EAAqB,IAAIC,IACX,QAAhB/V,EAAAA,EAAKgW,mBAAW,IAAhBhW,GAAyB,QAAzBA,EAAAA,EAAkB1I,eAAO,WAAzB0I,EAAAA,EAA2BuB,KAAI,SAACpB,G,MAA4B,CAACA,EAAM4U,SAAU5U,OAGjFH,EAAK6V,SAASrB,KAAKC,EAAAA,I,IAEd,GAAkB,EAAlB,GAAkB,EAAlB,OAAkB,E,IAAvB,QAAK,IAAsBzU,EAAK6V,SAAQ,qBAAnC,OAAkB,cAAlB,GAAkB,EAAmB,CAArC,I,EAOa7V,EAAgB,EAPvBiW,EAAN,EAAkB,MACnB5B,EAAO1e,KAAK,IAAI+J,GAAM,kBACfuW,GAAY,CACfhB,YACgB,OAAZgB,QAAY,IAAZA,OAAAA,EAAAA,EAAcC,eACD,OAAZD,QAAY,IAAZA,OAAAA,EAAAA,EAAclB,UACqC,QAA9Ce,EAAkB,OAAlBA,QAAkB,IAAlBA,OAAAA,EAAAA,EAAoB1B,IAAI6B,EAAalB,iBAAS,WAA9Ce,EAAqD,EAAL7d,MAChC,QAAhB+H,EAAAA,EAAKgW,mBAAW,IAAhBhW,GAAyB,QAAzBA,EAAAA,EAAkBmW,eAAO,WAAzBnW,EAAyB,EAAE/H,Y,SAPxC,GAAkB,EAAlB,EAAkB,E,YAAlB,GAAkB,MAAlB,EAAkB,QAAlB,EAAkB,S,WAAlB,E,MAAA,GAWL,OAAOoc,EAvDD+B,CAAoBpW,GAI9B,SAA6BA,G,IAIrBA,EAIAA,EAAgB,EAYhBA,EAIgBA,EAAgB,EAvB9BqU,EAAS,GAETgC,EAAgB,IAAIN,IACX,QAAX/V,EAAAA,EAAKqU,cAAM,IAAXrU,OAAAA,EAAAA,EAAa1I,QAAQiK,KAAI,SAACpB,G,MAA6B,CAACA,EAAM4U,SAAU5U,OAGtE2V,EAAqB,IAAIC,IACX,QAAhB/V,EAAAA,EAAKgW,mBAAW,IAAhBhW,GAAyB,QAAzBA,EAAAA,EAAkB1I,eAAO,WAAzB0I,EAAAA,EAA2BuB,KAAI,SAACpB,G,MAA4B,CAACA,EAAM4U,SAAU5U,OAG5E,GAAuB,EAAvB,GAAuB,EAAvB,OAAuB,E,IAA5B,QAAK,IAA2BkW,EAAa,qBAAxC,OAAuB,cAAvB,GAAuB,EAAmB,CAA1C,I,EAAA,YAAuB,SAAhBtB,EAAQ,KAAE5U,EAAK,KACvBkU,EAAO1e,KAAK,IAAI+J,EAAM,CAClB9C,KAAMoE,EAAAA,EAAAA,QACN/I,MAAOkI,EAAMA,MACb8U,WAA6C,QAAjCa,EAAkB,OAAlBA,QAAkB,IAAlBA,OAAAA,EAAAA,EAAoB1B,IAAIW,UAAS,WAAjCe,EAAwC,EAAL7d,MAC/C8c,SAAU5U,EAAM4U,a,SALnB,GAAuB,EAAvB,EAAuB,E,YAAvB,GAAuB,MAAvB,EAAuB,QAAvB,EAAuB,S,WAAvB,E,MAAA,IASU,QAAX/U,EAAAA,EAAKqU,cAAM,IAAXrU,OAAAA,EAAAA,EAAamW,UACb9B,EAAO1e,KAAK,IAAI+J,EAAM,CAClB9C,KAAMoE,EAAAA,EAAAA,QACN/I,MAAO+H,EAAKqU,OAAO8B,QACnBlB,WAA4B,QAAhBjV,EAAAA,EAAKgW,mBAAW,IAAhBhW,GAAyB,QAAzBA,EAAAA,EAAkBmW,eAAO,WAAzBnW,EAAyB,EAAE/H,SAI/C,OAAOoc,EA/BDiC,CAAoBtW,GALf,K,4ICxFR,IAgCA,EAlBMuW,EAAO,EAMP3Y,EAAyB,UAMzBG,EAAkB,W,SAMnBgF,GAAAA,EACF,OAANyT,SADQzT,EAEG,YAAG,eAFNA,EAGQ,iBAAG,sBAHXA,EAIF,OAANwO,SAJQxO,EAKC,UAAG,aALJA,EAML,IAAH0T,M,CANQ1T,IAAAA,EAAO,M,mLClCf2T,EAAW,EAEF3S,EAAqB,CAC9B,CACI7G,OAAO,sB,UAAE,kGAAmB,SAACwL,KAAE,IAAE,gFACjCrI,aAAa,sB,UAAE,2IAA8B,SAACqI,KAAE,IAAE,2QAClD3M,WAAY,+DACZqE,IAAK,uCACLqL,GAAIiL,IACJjW,oBAAoB,EACpB1B,YAAY,GAEhB,CACI7B,OAAO,sB,UAAE,sGAAkB,SAACwL,KAAE,IAAE,iIAChCrI,YAAa,yrBAEbtE,WAAY,8FACZqE,IAAK,0CACLI,UAAW,eACXiL,GAAIiL,IACJ3X,YAAY,IAIP8M,EAA6B,CACtC3O,MAAO,iKACPmD,aAAa,sB,UAAE,0RAAqD,SAACqI,KAAE,IAAE,0QACzEtI,IAAK,8CACLrB,YAAY,EACZ0M,GAAIiL,KAGKC,EAA0C,CACnD,CACIzZ,OAAO,sB,UAAE,iEAAW,SAACwL,KAAE,IAAE,6GACzBrI,YAAa,gfACbD,IAAK,yCACLqL,GAAIiL,IACJxM,WAAY,SACZC,UAAW,aACXK,YAAa,EACbH,aAAc,MACdJ,OAAQ,OAEZ,CACI/M,MAAO,qGACPmD,YAAa,6cACbD,IAAK,0CACLqL,GAAIiL,IACJvM,UAAW,WACXK,YAAa,EACbH,aAAc,QACdJ,OAAQ,SAEZ,CACI/M,MAAO,gHACPmD,YAAa,2RACbD,IAAK,qCACLqL,GAAIiL,IACJxM,WAAY,WACZC,UAAW,aACXK,YAAa,EACbP,OAAQ,MACRI,aAAc,QAITsB,EAAmD,CAC5D,CACIzO,MAAO,uSACPmD,aAAa,sB,UAAE,mVAAiE,SAACqI,KAAE,IAAE,uZAErFtI,IAAK,oCACLrB,YAAY,EACZ0M,GAAIiL,KAER,CACIxZ,MAAO,4EACPmD,YAAa,odACbD,IAAK,uCACLqL,GAAIiL,IACJvM,UAAW,WACXK,YAAa,EACbN,WAAY,QACZG,aAAc,YAITuE,EAAW,2jD,+NC5DXyB,EAAiB,SAACJ,GAC3B,MAAO,CACH/S,MAAO,sKAAqD,OAAZ+S,EAAK2G,OAAO,wLAC5DvW,YACI,msBAEA,6IAA0C,OAAX4P,EAAKzX,SA2BnCqe,EAAW,W,IACpB,G,SAAKC,GAAAA,EACK,OAANC,SADCD,EAEK,OAANE,S,CAFCF,IAAAA,EAAK,KAIV,IACMG,EAAKC,UAAUC,UAAUC,cAC/B,OAAOH,EAAGI,QAAQP,EAAMC,SAFC,GAE4BE,EAAGI,QAAQP,EAAME,QAAUT,EAAAA,IAUvEe,EAAa,WACtB,IAAIC,EAAc,GACZJ,EAAYD,UAAUC,UAO5B,OALG1hB,OAAOuhB,SAAWG,EAAUK,MAAM,WAAcD,EAAc,UAE9D9hB,OAAOuhB,QAAUG,EAAUK,MAAM,cAAiBD,EAAc,QAEhE9hB,OAAOuhB,QAAUG,EAAUM,OAAO,aAAelB,EAAAA,KAAUgB,EAAc,UACrD,WAAhBA,GAWElM,EAAmB,SAACqM,GAC7B,IAAMC,GAA6B,OAAIhM,EAAAA,IAAsBiM,MAC7D,OAAIF,GACO,OAAIf,EAAAA,IAAAA,OAAJ,CAA4BgB,IAEhChB,EAAAA,IAWErV,EAAsB,SAAC1J,IAChCigB,EAAAA,EAAAA,IAAc,CACVpe,MAAOC,EAAAA,GAAAA,QACPC,SAAUC,EAAAA,GAAAA,QACVC,OAAQC,EAAAA,GAAAA,WACRlC,MAAAA,M,mCC1HD,M,yCAAKkgB,GAAAA,EAAAA,EACC,UAAG,WAAK,IAAjBC,YADQD,EAAAA,EAEA,SAAG,WAAK,IAAhBE,WAFQF,EAAAA,EAII,aAAG,WAAK,IAApBG,eAJQH,EAAAA,EAMU,mBAAG,WAAK,KAA1BI,qB,CANQJ,IAAAA,EAAa,KAclB,IAAM5F,EAAwB,Y,QAAGiG,OAAAA,OAAM,IAAG,KAAE,EAAEvf,EAAM,EAANA,OAC7CsB,EAAS4d,EAAcG,aAAeE,EAAOC,QAAO,SAACC,EAAKlZ,G,OAAUkZ,EAAMlZ,IAAO,GAUrF,MARsB,mBAAXvG,IAEHsB,GADAtB,EACUkf,EAAcE,SAEdF,EAAcC,WAIzB7d,I,6FCvBEhB,EAAmB,SAACN,GAC7B,IAA6BnD,EAAAA,OAAO6iB,SAA5Bb,EAAqBhiB,EAArBgiB,OAAQc,EAAa9iB,EAAb8iB,SACVC,GAAkBC,EAAAA,EAAAA,IAAmB,CAAEhB,OAAAA,EAAQc,SAAAA,IAC/CG,GAAmBC,EAAAA,EAAAA,IAAqBJ,GAC9C,SAASlP,EAAAA,EAAAA,OAAe5T,OAAOyO,WAAa,KAAQsU,IAAoB5f,GAAU8f,K,uICiBhFE,EAAW,SAACC,EAAuBC,EAAqClV,GAC1E,GAAIA,IAAOmV,EAAAA,EAAAA,KAAgB,CACvB,IAAM3Y,EAAM,IAAIvB,MAChBuB,EAAIwD,IAAMA,EACVxD,EAAI4Y,OAASH,EACTC,IACA1Y,EAAI6Y,QAAUH,QAGlBA,EAAQ,WAMT,SAAStM,EACZ5I,EACAsV,G,IACAC,EAAAA,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,GAAkC,aAApBC,IAE0B/gB,GAAAA,EAAAA,EAAAA,UAAS,IAA1CghB,EAAiChhB,EAAY,GAA/BihB,EAAmBjhB,EAAY,GACH6gB,EAAAA,GAAW,GAAE,EAAbA,EAAzCxM,WAAAA,OAAU,IAAG,GAAK,IAAuBwM,EAArBzM,aAAAA,OAAY,IAAG,IAAC,EAEtCoM,GAAYzf,EAAAA,EAAAA,cACd,W,OAAMsT,EACA6M,YAAW,W,OAAMD,EAAgB1V,KAAgB6I,GACjD6M,EAAgB1V,KACtB,CAACA,EAAK8I,EAAYD,IAGhBqM,GAAU1f,EAAAA,EAAAA,cAAY,WACxBkgB,EAAgBH,KACjB,CAACA,IAIJ,OAFAvP,EAAAA,EAAAA,UAAQ,W,OAAMgP,EAASC,EAAWC,EAASlV,KAAM,CAACkV,EAASD,EAAWjV,IAE/DyV,EAGJ,SAASG,EACZ5V,EACAjC,GAEA,IAGIA,EAAAA,GAAW,GAFXuX,EAEAvX,EAFAuX,QAAO,EAEPvX,EADAwX,YAAAA,OAAW,IAAG,EAAAC,IAAoB,EAEE/gB,GAAAA,EAAAA,EAAAA,UAAS,IAA1CghB,EAAiChhB,EAAY,GAA/BihB,EAAmBjhB,EAAY,GAChBA,GAAAA,EAAAA,EAAAA,WAAS,GAAtCohB,EAA6BphB,EAAe,GAAhCqhB,EAAiBrhB,EAAe,GACfA,GAAAA,EAAAA,EAAAA,eAAiBmC,GAA9Cmf,EAA6BthB,EAA2B,GAA5CuhB,EAAiBvhB,EAA2B,GAEd6gB,EAAAA,GAAW,GAAE,EAAbA,EAAzCxM,WAAAA,OAAU,IAAG,GAAK,IAAuBwM,EAArBzM,aAAAA,OAAY,IAAG,IAAC,EAEtCoM,GAAYzf,EAAAA,EAAAA,cACd,W,OAAMsT,EACA6M,YAAW,W,OAAMD,EAAgB1V,KAAgB6I,GACjD6M,EAAgB1V,KACtB,CAACA,EAAK8I,EAAYD,IAGhBqM,GAAU1f,EAAAA,EAAAA,cAAY,SAACK,GACzB6f,EAAgBH,GAChBO,GAAc,GACdE,EAAcngB,KACf,CAAC0f,IAIJ,OAFAvP,EAAAA,EAAAA,UAAQ,W,OAAMgP,EAASC,EAAWC,EAASlV,KAAM,CAACkV,EAASD,EAAWjV,IAE9D,CAAEyV,aAAAA,EAAcI,WAAAA,EAAYE,WAAAA,K,4FC5FxC,IAOaE,EAAWC,SAAAA,G,MAAkB,kBAANA,EAAiBC,WAAWD,EAAEE,WAAWC,QAAQ,IAAK,IAAIA,QAAQ,IAP1F,MAOuG/J,OAAO4J,IA4B7GjX,EAAa,SAACqX,G,IAAQC,EAAI,UAAH,6CAAG,EAAGC,EAAI,UAAH,6CAAG,IAAKC,EAAC,uCAAEC,EAAI,UAAH,6CAnC3C,IAoCFC,EAAIV,EAASK,GACnBG,EAAIA,GAAK,SAACF,G,OAAMA,EAAE1I,SAAS,KAAO0I,EAAEK,MAAM,KAAK5C,MAAMlX,OAAS,EAArD,CAAyD6Z,EAAEP,YACpE,IAAMS,EAAMF,EAAEG,QAAQvT,KAAKwT,IAAI,IAAKN,IAC9BO,EAAK,cAAqBP,OAAPF,EAAE,OAAyB,OAApBE,EAAI,EAAI,MAAQ,IAAI,KACpD,OAAQC,EAAIG,EAAIR,QAAQ,IAAKK,GAAKG,GAAKR,QAAQ,IAAIY,OAAOD,EAAI,KAAM,KAAO,OAAFR,M,kFCrChEnJ,EAAqB,SAAC6J,G,MAAoC,CACnEle,KAAMme,EAAAA,EACNjf,QAASgf,K,mECGN,IAAMnK,EAAU,W,IAACqK,EAA2B,UAAH,6CAAG,G,MAAkB,CACjEC,IAAK,qBACLC,OAAQ,MACRF,YAAAA,EACApK,cAAc,K,mECJX,IAAMF,EAAgB,W,IAACsK,EAA2B,UAAH,6CAAG,G,MAAkB,CACvEC,IAAK,qBACLC,OAAQ,MACRF,YAAAA,EACApK,cAAc,K,0FCPlB,IAoBauK,EAAY,SAACljB,EAAemjB,G,OApBtB,SAACnjB,EAAemjB,GAC/B,IAAMC,EAAMlU,KAAKkU,IAAIpjB,GAErB,OAAOmjB,EACHC,EAAM,IAAM,GAAKA,EAAM,KAAO,GACxB,EACAA,EAAM,IAAM,GAAKA,EAAM,IAAM,IAAMA,EAAM,IAAM,IAAMA,EAAM,KAAO,IAC9D,EACA,GAadC,CAAWrjB,EAAOmjB,IAQTxG,EAAe,SAACwG,G,OAA4B,SAACnjB,G,OACtDkjB,EAAUljB,EAAOmjB,M,4IC5Bd,IAAMvG,EAAgC,CAAC,iCAAS,uCAAU,8CAOpD0G,EAAkC,CAAC,iCAAS,uCAAU,8CAOtDC,EAA8B,CAAC,2BAAQ,qBAAO,4BAO9CC,EAAgC,CAAC,iCAAS,uCAAU,+C,mCC5B1D,M,yCAAKza,GAAAA,EAAAA,EACD,QAAG,GAAV0a,UADQ1a,EAAAA,EAED,QAAG,GAAVlB,U,CAFQkB,IAAAA,EAAW,M,+yBCSvB,IAAM2a,EAAevlB,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAGfwlB,EAAU,SAAC/d,GACb,IAAQge,EAA0Dhe,EAA1Dge,SAAUC,EAAgDje,EAAhDie,WAAYC,EAAoCle,EAApCke,UAAWC,EAAyBne,EAAzBme,SAAUC,EAAepe,EAAfoe,WACnD,OACI,SAACN,GAAY,gBAAC/T,IAAKoU,EAAUD,UAAWA,EAAWD,WAAYA,GAAgBG,GAAU,C,SACpFJ,MAKPK,GAAiB9lB,EAAAA,EAAAA,SAAO+lB,EAAAA,EAAAA,gBAA0B,Y,6BAAjC/lB,C,KAMjBgmB,EAAahmB,EAAAA,QAAAA,IAAAA,WAAU,C,6BAAVA,C,IACN+H,EAAAA,EAAAA,aAEPke,EAAc,SAACxe,GACjB,IAAQge,EAA+Che,EAA/Cge,SAAUC,EAAqCje,EAArCie,WAAYE,EAAyBne,EAAzBme,SAAUC,EAAepe,EAAfoe,WACxC,OACI,SAACG,GAAU,gBAACxU,IAAKoU,EAAUF,WAAYA,GAAgBG,GAAU,C,SAC5DJ,MAKPS,GAAYlmB,EAAAA,EAAAA,SAAO+lB,EAAAA,EAAAA,mBAA6B,Y,6BAApC/lB,C,KAOZmmB,EAAoB,SAAC1e,GACvB,OACI,SAACye,GAAS,kBAAKze,GAAK,C,UAChB,SAAC2e,EAAAA,EAAI,CAACC,QAAQ,SAAQC,MAAOve,EAAAA,EAAAA,kBAK1B,e,sCAAMwe,I,uDAqBjBxgB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAAA,GAAAA,YAAW,SAAClE,GACR,EAAK4F,MAAM1B,SAASlE,M,oBAGxB2kB,IAAAA,S,MAAAA,WACI,IAAgG,EAAApH,KAAK3X,MAA7F8D,EAAwF,EAAxFA,QAASkb,EAA+E,EAA/EA,aAAc5kB,EAAiE,EAAjEA,MAAOmE,EAA0D,EAA1DA,YAAawF,EAA6C,EAA7CA,SAAUQ,EAAmC,EAAnCA,SAAU0a,EAAyB,EAAzBA,YAAgBC,GAAI,OAAK,EAAU,CAAlGpb,UAASkb,eAAc5kB,QAAOmE,cAAawF,WAAUQ,WAAU0a,gBAGjEE,EAAmB,CACrBC,mBAAoB,KACpBrB,QAAAA,EACAM,eAAAA,EACAG,YAAAA,EACAa,OANW,SAACrf,G,OAAUif,GAAc,SAACK,EAAAA,IAAW,QAACC,SAAS,QAAWvf,KAAY,SAACwf,EAAAA,IAAS,UAAKxf,KAOhGyf,KAAAA,EAAAA,GACAC,SAAAA,EAAAA,GACAhB,kBAAAA,GAGEiB,GAAe,QACjB9a,KAAM+a,SAAAA,G,OAAS,kBACRA,GAAI,CACP7b,SAAUA,MAEXQ,GAEP,OACI,SAACsb,EAAAA,IAAW,QACR/b,QAASA,EACTxF,SAAUqZ,KAAKrZ,SACf0gB,aAAcA,EACd5kB,MAAOA,EACPgK,aAAa,EACb0b,cAAc,EACdvhB,YAAaA,EACb+f,WAAYa,EACZ3e,OAAQmf,GACJT,Q,EA1DL,CAAqBa,EAAAA,YAChC,OADiBjB,EACVkB,YAAY,CACflc,QAASmc,IAAAA,QAAkBA,IAAAA,MAAgB,CACvClmB,MAAOkmB,IAAAA,IACP7lB,MAAO6lB,IAAAA,OAEXjB,aAAciB,IAAAA,IACd1hB,YAAa0hB,IAAAA,OACb3hB,SAAU2hB,IAAAA,KACV7lB,MAAO6lB,IAAAA,MAAgB,CACnBlmB,MAAOkmB,IAAAA,IACP7lB,MAAO6lB,IAAAA,SAIf,OAfiBnB,EAeVoB,eAAe,CAClBpc,QAAS,GACTvF,YAAa,GACbD,SAAU,gB,seClElB,IAAMqgB,E,QAAOpmB,QAAAA,IAAAA,WAAU,C,6BAAVA,C,KAUIyH,SAAAA,G,OAASA,EAAMuf,SAAWvf,EAAMuf,SAAW,aAC/Cvf,SAAAA,G,OAASA,EAAM6e,OAAS,WAElB7e,SAAAA,G,MAAS,IAAkB,OAAdA,EAAM4e,QAAQ,QAI9C,O,kBCvBAuB,EAAOC,QAAU,8O,kBCAjBD,EAAOC,QAAU,2H,kBCAjBD,EAAOC,QAAU,oH,kBCAjBD,EAAOC,QAAU,gI,kBCAjBD,EAAOC,QAAU,iI,kBCAjBD,EAAOC,QAAU,wH,kBCAjBD,EAAOC,QAAU,yH,iBCAjBD,EAAOC,QAAU,4H","sources":["webpack://_N_E/?c10f","webpack://_N_E/./src/features/movix-new/Popup/styled.ts","webpack://_N_E/./src/features/movix-new/Popup/index.tsx","webpack://_N_E/./src/features/movix-new/styled.ts","webpack://_N_E/./src/features/movix-new/Card/styled.ts","webpack://_N_E/./src/features/movix-new/Card/index.tsx","webpack://_N_E/./src/features/movix-new/ContentCard/styled.ts","webpack://_N_E/./src/features/movix-new/ContentCard/index.tsx","webpack://_N_E/./src/features/movix-new/ConnectionInfo/data.tsx","webpack://_N_E/./src/features/movix-new/ConnectionInfo/styled.ts","webpack://_N_E/./src/features/movix-new/FilmsBlock/data.tsx","webpack://_N_E/./src/features/movix-new/ConnectionInfo/index.tsx","webpack://_N_E/./src/features/movix-new/FilmsBlock/styled.ts","webpack://_N_E/./src/features/movix-new/FilmsBlock/index.tsx","webpack://_N_E/./src/features/movix-new/VideoServices/styled.ts","webpack://_N_E/./src/features/movix-new/HeaderTitileBlock/styled.ts","webpack://_N_E/./src/features/movix-new/HeaderTitileBlock/index.tsx","webpack://_N_E/./src/features/movix-new/Header/styled.ts","webpack://_N_E/./src/features/movix-new/Header/index.tsx","webpack://_N_E/./src/features/movix-new/BenefitsCard/styled.ts","webpack://_N_E/./src/features/movix-new/BenefitsCard/index.tsx","webpack://_N_E/./src/features/movix-new/MovixBenefits/styled.ts","webpack://_N_E/./src/features/movix-new/MovixBenefits/index.tsx","webpack://_N_E/./src/features/movix-new/ShieldBlock/data.tsx","webpack://_N_E/./src/features/movix-new/ShieldBlock/styled.ts","webpack://_N_E/./src/features/movix-new/ShieldBlock/index.tsx","webpack://_N_E/./src/features/movix-new/VideoServices/index.tsx","webpack://_N_E/./src/features/movix-new/WatchNowPayAfter/styled.ts","webpack://_N_E/./src/features/movix-new/WatchNowPayAfter/index.tsx","webpack://_N_E/./src/features/movix-new/WatchWithFamily/styled.ts","webpack://_N_E/./src/features/movix-new/WatchWithFamily/index.tsx","webpack://_N_E/./src/features/movix-new/BlocksAbout/data.tsx","webpack://_N_E/./src/features/movix-new/BlocksAbout/styled.ts","webpack://_N_E/./src/features/movix-new/BlocksAbout/index.tsx","webpack://_N_E/./src/features/movix-new/index.tsx","webpack://_N_E/./pages/_site/[city]/movix-new.tsx","webpack://_N_E/./src/features/movix-new/utils/prepareTariffsZasmotris.js","webpack://_N_E/./src/api/content/shop/getShopItems.ts","webpack://_N_E/./src/api/requests/contentRequest.js","webpack://_N_E/./src/entities/equipment.js","webpack://_N_E/./src/entities/price.ts","webpack://_N_E/./src/features/movix-new/constants/index.ts","webpack://_N_E/./src/features/movix-new/data.tsx","webpack://_N_E/./src/features/movix-new/utils/index.ts","webpack://_N_E/./src/helpers/accessMode.ts","webpack://_N_E/./src/helpers/checkMobilePlank.ts","webpack://_N_E/./src/helpers/hooks/useProgressiveImage.tsx","webpack://_N_E/./src/helpers/numbers.js","webpack://_N_E/./src/store/actions/intercom.ts","webpack://_N_E/../../packages/api-domru/src/api-content/v1/cities/tariffs/index.ts","webpack://_N_E/../../packages/api-domru/src/api-content/v1/domofon-action/index.ts","webpack://_N_E/../../packages/shared/src/helpers/pluralize/index.ts","webpack://_N_E/../../packages/shared/src/helpers/pluralize/predifined.ts","webpack://_N_E/../../packages/shared/src/types/EPriceTypes.ts","webpack://_N_E/../../packages/ui-react/src/components/select/titleSelect/index.js","webpack://_N_E/../../packages/ui-react/src/deprecated/icon/index.js","webpack://_N_E/./static/images/defaultImageFallback.svg","webpack://_N_E/./static/images/movix-new/gamer-mobile.png","webpack://_N_E/./static/images/movix-new/gamer.png","webpack://_N_E/./static/images/movix-new/shield-background.png","webpack://_N_E/./static/images/movix-new/shield-background.webp","webpack://_N_E/./static/images/movix-new/tv-border.png","webpack://_N_E/./static/images/movix-new/tv-border.webp","webpack://_N_E/./static/images/movix-new/ultra-hd-web.png"],"sourcesContent":["\n (window.__NEXT_P = window.__NEXT_P || []).push([\n \"/_site/[city]/movix-new\",\n function () {\n return require(\"private-next-pages/_site/[city]/movix-new.tsx\");\n }\n ]);\n if(module.hot) {\n module.hot.dispose(function () {\n window.__NEXT_P.push([\"/_site/[city]/movix-new\"])\n });\n }\n ","import styled, { css } from 'styled-components';\n\nimport { BaseButton } from '@r1-frontend/ui-react/components/buttons/baseButton';\nimport InputSimple, { nameDecorator, phoneDecorator } from '@r1-frontend/ui-react/components/inputSimple';\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport DefaultPopup from '@r1-frontend/ui-react/components/popups/defaultPopup';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nconst InputPhone = phoneDecorator(InputSimple);\nconst InputName = nameDecorator(InputSimple);\n\nconst InputSettings = css`\n display: block;\n width: 100%;\n margin: 0;\n`;\n\nexport const Wrapper = styled(DefaultPopup)<{ isShowMobilePlank: boolean }>`\n max-width: 596px !important;\n width: 100% !important;\n border-radius: 24px !important;\n padding: 59px;\n\n @media (max-width: ${wideBreakpoints.mobile}) { \n padding: 24px;\n margin-top: ${({ isShowMobilePlank }) => isShowMobilePlank ? 230 : 147}px !important;\n min-height: fit-content !important;\n }\n`;\n\nexport const Title = styled.div`\n ${FONTS.H2}\n margin-bottom: 16px;\n`;\n\nexport const Subtitle = styled.div`\n ${FONTS.M}\n margin-bottom: 41px;\n`;\n\nexport const Name = styled(InputName)`\n ${InputSettings}\n`;\n\nexport const Phone = styled(InputPhone)`\n ${InputSettings}\n`;\n\nexport const InputBlock = styled.div`\n display: flex;\n flex-wrap: nowrap;\n width: 100%;\n gap: 16px;\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n flex-direction: column;\n }\n`;\n\nexport const Button = styled(BaseButton)`\n ${FONTS.S}\n width: 100%;\n margin: 16px 0 8px;\n`;\n\nexport const InfoText = styled.div`\n margin-top: 12px;\n ${FONTS.XXS}\n display: inline-block;\n`;\n\nexport const AgreeLink = styled.a.attrs({\n href: 'https://dom.ru/policy.pdf?_ga=2.194887981.1682807258.1580735380-296976907.1577435201',\n target: '_blank',\n})`\n ${FONTS.XS}\n`;\n","import React, { Dispatch, FC, SetStateAction, useCallback, useEffect, useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport noop from 'lodash/noop';\n\nimport { doRequest } from '@r1-frontend/do-request';\nimport {\n requestByConnection,\n RequestDto,\n ResponseDto,\n} from '@r1-frontend/api-domru/api-request/v1/user/request-by-connection';\n\nimport { btnTypes } from '@r1-frontend/ui-react/components/buttons/baseButton';\nimport { PolicyNote } from '@r1-frontend/ui-react/components/PolicyNote';\nimport { EResultPopupStatus } from '@r1-frontend/ui-react/components/popups/popupResult';\nimport { ACTIONS, CATEGORIES, EVENTS } from '@r1-frontend/shared/constants/analytics';\nimport { EProductsId } from '@r1-frontend/shared/types/EProductsId';\n\nimport PopupResult from '~/src/components/Popups/PopupResult';\nimport { TField } from '~/src/components/RequestForm';\nimport { POLICY_PAGE_LINK } from '~/src/constants';\nimport { IPopupProps as IPopupPropsExport } from '~/src/features/router/order-card';\nimport { checkMobilePlank } from '~/src/helpers/checkMobilePlank';\nimport { dataLayerForCBPhonePush, IDataLayerPushUid } from '~/src/helpers/eventsForDataLayer';\nimport { TState } from '~/src/store';\nimport { selectCsrf } from '~/src/store/selectors/auth/selectCsrf';\n\nimport * as ST from './styled';\n\nconst MOVIX_PRO_VOICE_ID = 101183;\nexport interface IPopupProps extends IPopupPropsExport {\n leasingDuration?: number,\n costType?: number,\n salePackageId?: number,\n}\n\ntype TDispatch = Dispatch>;\n\ninterface IProps {\n textButton?: string,\n isLoading: boolean,\n setPopup: TDispatch,\n setIsLoading: TDispatch,\n popup: IPopupProps,\n label: string,\n}\n\nexport enum EEquipmentType {\n loan = 0,\n sale = 1,\n leasing = 5,\n}\n\nconst Popup: FC = ({ textButton, setPopup, popup, setIsLoading, isLoading, label }) => {\n const csrf = useSelector(selectCsrf);\n const defaultFieldValue = { value: '', isValid: false, clearInput: () => noop() };\n const [name, setName] = useState(defaultFieldValue);\n const [phone, setPhone] = useState(defaultFieldValue);\n const [beenStarted, setDataLayer] = useState(false);\n const isAuth = useSelector((state: TState) => state.auth.isAuth);\n const clientPersonal = useSelector((state: TState) => state.auth.clientPersonal);\n const [isShowMobilePlank, setIsShowMobilePlank] = useState(false);\n\n useEffect(() => {\n setIsShowMobilePlank(checkMobilePlank(isAuth as boolean));\n }, [isAuth]);\n\n const phoneChangeHandler = useCallback((stateInput: TField, _setState: TDispatch) => {\n const stateResult = typeof stateInput === 'object' ? stateInput.value : stateInput;\n // @TODO stateInput.value убрать из условия после фикса nameDecorator (useEffect onchange) UI react\n if (!beenStarted && stateResult) {\n dataLayerForCBPhonePush({\n event: EVENTS.UAevent,\n category: CATEGORIES.applicationForm,\n action: isAuth ? ACTIONS.startedVas : ACTIONS.started,\n label,\n uid: isAuth ? clientPersonal?.agreement : null,\n } as unknown as IDataLayerPushUid);\n setDataLayer(true);\n }\n _setState(stateInput);\n }, [beenStarted, label]);\n\n const openPopupResult = useCallback((result, message) => {\n dataLayerForCBPhonePush({\n action: result ? ACTIONS.finished : ACTIONS.error,\n option: result ? label : `${label} | ${message}`,\n uid: isAuth ? clientPersonal?.agreement : null,\n });\n setDataLayer(false);\n setPopup((state: IPopupProps) => ({\n ...state,\n isOrderOpened: false,\n isResultOpened: true,\n leasingDuration: undefined,\n salePackageId: undefined,\n costType: EEquipmentType.loan,\n resultType: result ? EResultPopupStatus.SUCCESS : EResultPopupStatus.ERROR,\n resultTitle: result ? 'Заявка отправлена' : 'Произошла ошибка',\n resultText: message || (\n result\n ? 'Мы свяжемся с вами в ближайшее время'\n : 'Что-то пошло не так, попробуйте позже.'\n ),\n }));\n }, []);\n\n const closePopup = useCallback(() => {\n setDataLayer(false);\n setPhone({ ...phone, value: '' });\n setPopup((state: IPopupProps) => ({\n ...state,\n isOrderOpened: false,\n isResultOpened: false,\n leasingDuration: undefined,\n salePackageId: undefined,\n costType: EEquipmentType.loan,\n }));\n }, []);\n\n const onSubmit = async() => {\n setIsLoading(true);\n\n const params: RequestDto = {\n csrf,\n fio: name.value,\n phone: phone.value,\n cost_type: popup.costType,\n leasing_duration: popup.leasingDuration,\n plan: popup?.salePackageId,\n product_id: [EProductsId.tv],\n tv_equipment_id: [MOVIX_PRO_VOICE_ID],\n };\n\n const resp = await doRequest.apiRequest(requestByConnection(params));\n if (resp.isSuccess) {\n const { status, message } = resp.payload;\n const ok = !!status;\n\n openPopupResult(ok, message);\n } else {\n openPopupResult(false, 'Не удалось отправить заявку. Пожалуйста, попробуйте еще раз.');\n }\n };\n\n const buttonText = textButton || 'Отправить заявку';\n\n return (\n <>\n \n Оформление заявки\n \n Оставьте заявку. Мы перезвоним в ближайшее время, ответим на ваши вопросы и поможем оформить заказ.\n \n \n phoneChangeHandler(value, setName)}\n placeholder='Как вас зовут?'\n errorMessage='Ожидаются только буквы и дефисы'\n className={'ym-disable-keys'}\n />\n phoneChangeHandler(phone, setPhone)}\n placeholder={'Номер телефона'}\n errorMessage={'Введите телефон в формате +7 (999) 999-99-99'}\n initialValue={phone.value}\n className={'ym-disable-keys'}\n />\n \n \n \n \n \n \n \n \n );\n};\n\nexport default Popup;\n","import styled from 'styled-components';\n\nimport Button from '@r1-frontend/ui-react/components/buttons/button';\nimport Throbber from '@r1-frontend/ui-react/components/loaders/Throbber';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nimport { breakPoints } from '~/src/constants/breakpoints';\nimport { BACKGROUND_COLOR_BLACK, GREY_TEXT_COLOR } from '~/src/features/movix-new/constants';\nimport { TStyles } from '~/src/features/movix-new/ContentCard';\n\nexport const LandingWrapper = styled.div`\n width: 100%;\n overflow: hidden;\n margin-bottom: -50px;\n`;\n\nexport const MovixButton = styled(Button)`\n ${FONTS.S};\n width: 100%;\n`;\n\nexport const StyledTrobber = styled(Throbber)`\n position: fixed;\n`;\n\nexport const ServicesAndTvBlock = styled.div`\n width: 100%;\n position: relative;\n overflow: hidden;\n margin-top: -2px;\n height: 33vw;\n\n @media (max-width: ${breakPoints.desktop}) {\n height: 43vw;\n }\n\n @media (max-width: ${breakPoints.sDesktop}) {\n height: 50vw;\n }\n\n @media (max-width: ${breakPoints.tablet}) {\n height: auto;\n }\n`;\n\nexport const VideoContainer = styled.div<{ backgroundImg: string }>`\n width: 100%;\n position: relative;\n height: 70vw;\n background-color: ${BACKGROUND_COLOR_BLACK};\n background-image: url(${props => props.backgroundImg});\n background-size: cover;\n background-position: center;\n background-repeat: no-repeat;\n margin-top: -1px;\n\n @media (min-width: 1024px) {\n background-position-y: 7px;\n background-size: 87%;\n background-position-x: calc(100% + 40vw);\n top: -105px;\n z-index: 1;\n }\n\n @media (min-width: 1366px) {\n background-size: 69%;\n background-position-y: 23%;\n background-position-x: 112%;\n }\n\n @media (min-width: 1601px) {\n background-size: 48.5%;\n background-position-y: 11%;\n background-position-x: 85%;\n }\n`;\n\nexport const InfoText = styled.div`\n ${FONTS.XXS}\n width: 100%;\n margin-top: 97px;\n margin-bottom: 10px;\n\n text-align: center;\n\n color: ${GREY_TEXT_COLOR};\n\n @media (max-width: ${breakPoints.desktop}) {\n margin-bottom: 132px;\n margin-top: 40px;\n }\n\n @media (max-width: ${breakPoints.sDesktop}) {\n margin-bottom: 117px;\n margin-top: 32px;\n }\n\n @media (max-width: ${breakPoints.tablet}) {\n margin-bottom: 108px;\n margin-top: 27px;\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n margin-top: 41px;\n margin-bottom: 50px;\n }\n`;\n\nexport const Cards = styled.div`\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap;\n width: 100%;\n column-gap: 24px;\n\n @media (max-width: ${breakPoints.desktop}) {\n column-gap: 22px;\n }\n\n @media (max-width: ${breakPoints.sDesktop}) {\n flex-wrap: nowrap;\n column-gap: 16px;\n }\n\n @media (max-width: ${breakPoints.tablet}) {\n column-gap: 12px;\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n flex-direction: column;\n row-gap: 24px;\n }\n`;\n\nexport const Footer = styled.div`\n position: relative;\n width: 100%;\n background: ${BACKGROUND_COLOR_BLACK};\n overflow: hidden;\n margin-top: -1px;\n\n :before {\n content: '';\n position: absolute;\n width: 3123px;\n height: 1845px;\n left: calc(50% - 1561.5px);\n top: 140px;\n background: radial-gradient(48.12% 30.66% at 50% 54.13%, rgba(15, 80, 240, .59) 0%, rgba(15, 80, 240, 0) 100%);\n mix-blend-mode: normal;\n opacity: 0.35;\n }\n\n @media (max-width: ${breakPoints.desktop}) {\n :before {\n display: none;\n }\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n :before {\n display: initial;\n width: 1595px;\n height: 1845px;\n left: calc(50% - 797.5px);\n top: -224px;\n }\n\n :after {\n content: '';\n position: absolute;\n width: 1595px;\n height: 1845px;\n left: calc(50% - 797.5px);\n bottom: 262px;\n\n background: radial-gradient(48.12% 30.66% at 50% 54.13%, rgba(15, 80, 240, .59) 0%, rgba(15, 80, 240, 0) 100%);\n mix-blend-mode: normal;\n opacity: 0.35;\n }\n }\n`;\n\nexport const Container = styled.div`\n max-width: 1503px;\n width: 100%;\n margin: 0 auto;\n z-index: 1;\n\n @media (max-width: ${breakPoints.desktop}) {\n max-width: 1226px;\n }\n\n @media (max-width: ${breakPoints.sDesktop}) {\n max-width: 929px;\n }\n\n @media (max-width: ${breakPoints.tablet}) {\n max-width: 691px;\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n max-width: 327px;\n }\n`;\n\nexport const Title = styled.div<{ marginBottom: number, styles?: TStyles }>`\n ${FONTS.H2};\n color: ${COLORS.TextWhite};\n margin-bottom: ${({ marginBottom }) => `${marginBottom}px`};\n\n @media (max-width: ${breakPoints.sDesktop}) {\n ${FONTS.H3};\n }\n\n @media (max-width: ${breakPoints.desktop}) {\n margin-bottom: ${({ marginBottom }) => `${marginBottom + 10}px`};\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n text-align: center;\n }\n\n ${({ styles }) => styles}\n`;\n\nexport const Content = styled.div`\n position: relative;\n width: 100%;\n background: ${BACKGROUND_COLOR_BLACK};\n overflow: hidden;\n padding: 152px 0;\n margin-top: -1px;\n\n @media (max-width: ${breakPoints.desktop}) {\n padding-top: 91px;\n padding-bottom: 126px;\n }\n\n @media (max-width: ${breakPoints.sDesktop}) {\n padding-top: 77px;\n padding-bottom: 59px;\n }\n\n @media (max-width: ${breakPoints.tablet}) {\n padding-top: 82px;\n padding-bottom: 58px;\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n padding-top: 70px;\n padding-bottom: 85px;\n }\n`;\n","import styled, { css } from 'styled-components';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { BorderRadius } from '@r1-frontend/ui-react/tokens/borderRadius';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nimport { IGradientSettings } from '~/src/features/movix-new/Card/index';\n\nconst TEXT_SETTINGS = css`\n ${FONTS.S};\n color: ${COLORS.TextWhite};\n\n @media (max-width: ${wideBreakpoints.sDesktop}) {\n ${FONTS.XS};\n }\n\n @media (max-width: ${wideBreakpoints.tablet}) {\n ${FONTS.XXS};\n }\n`;\n\nexport const CardWrapper = styled.div`\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n background: ${COLORS.BgMain}0D;\n border-radius: ${BorderRadius.OuterBlockRadius};\n padding: 16px;\n max-width: 480px;\n`;\n\nexport const Title = styled.div`\n ${FONTS.H3};\n color: ${COLORS.TextWhite};\n white-space: nowrap;\n \n @media (max-width: ${wideBreakpoints.sDesktop}) {\n ${FONTS.H4};\n }\n\n @media (max-width: ${wideBreakpoints.tablet}) {\n white-space: wrap;\n padding-left: 0;\n padding-right: 0;\n }\n`;\n\nexport const DescriptionList = styled.ul`\n display: flex;\n flex-direction: column;\n margin: 24px 0;\n list-style: disc;\n flex-grow: 1;\n padding-right: 16px;\n padding-left: 16px;\n\n li {\n ${TEXT_SETTINGS};\n margin-left: 4px;\n\n @media (max-width: ${wideBreakpoints.tablet}) {\n margin-left: 18px;\n }\n }\n\n @media (max-width: ${wideBreakpoints.tablet}) {\n padding-right: 0;\n padding-left: 0;\n }\n`;\n\nexport const Description = styled.div`\n width: 100%;\n margin-top: 16px;\n flex-grow: 1;\n ${TEXT_SETTINGS};\n margin-bottom: 8px;\n\n @media (max-width: ${wideBreakpoints.tablet}) {\n padding-left: 0;\n padding-right: 0;\n }\n`;\n\nexport const UnderButtonText = styled.div`\n ${FONTS.S};\n color: ${COLORS.TextHint};\n margin-top: 21px;\n width: 100%;\n justify-content: center;\n padding-left: 32px;\n padding-right: 32px;\n\n @media (max-width: ${wideBreakpoints.sDesktop}) {\n ${FONTS.XXS};\n margin-top: 9px;\n }\n\n @media (max-width: ${wideBreakpoints.tablet}) {\n margin-top: 9px;\n padding-left: 0;\n padding-right: 0;\n }\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n margin-top: 9px;\n }\n`;\n\nexport const ButtonBlock = styled.div`\n ${FONTS.S}\n min-height: 60px;\n width: auto;\n\n @media (max-width: ${wideBreakpoints.sDesktop}) {\n ${FONTS.XS};\n min-height: 45px;\n padding: 15px 0;\n }\n\n @media (max-width: ${wideBreakpoints.tablet}) {\n ${FONTS.XXS};\n min-height: 34px;\n padding: 10px 0;\n margin: 0 auto;\n width: 100%;\n }\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n ${FONTS.XS};\n min-height: 40px;\n padding: 14.5px 0;\n width: -webkit-fill-available;\n }\n`;\n\nexport const Image = styled.div<{\n path: string,\n isBigImage?: boolean,\n gradientSettings?: IGradientSettings,\n notNeedBgStyleAdditional?: boolean,\n}>`\n width: 100%;\n height: 221px;\n background: url(${({ path }) => path}) center no-repeat;\n margin-bottom: 15px;\n background-size: ${({ isBigImage }) => isBigImage ? 'cover !important' : 'contain'};\n position: relative;\n border-radius: ${BorderRadius.OuterBlockRadius};\n\n ${({ gradientSettings }) => gradientSettings && css`\n :before {\n content: '';\n position: absolute;\n ${gradientSettings.bottom && css`bottom: ${gradientSettings.bottom};`}\n ${gradientSettings.left && css`left: ${gradientSettings.left};`}\n ${gradientSettings.right && css`right: ${gradientSettings.right};`}\n ${gradientSettings.top && css`top: ${gradientSettings.top};`}\n ${gradientSettings.borderRadius && css`border-radius: ${gradientSettings.borderRadius};`}\n background: ${gradientSettings.gradient};\n width: ${gradientSettings.width ? `${gradientSettings.width}px` : '100%'};\n height: ${gradientSettings.height}px;\n }\n `};\n\n @media (max-width: ${wideBreakpoints.sDesktop}) {\n height: 167px;\n background-size: 100% 100%;\n }\n\n @media (max-width: ${wideBreakpoints.tablet}) {\n height: 124px;\n\n ${({ notNeedBgStyleAdditional, isBigImage }) => !notNeedBgStyleAdditional && css`\n background-size: ${isBigImage ? 'cover' : '100% 124px'};\n `}\n }\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n height: 162px;\n\n ${({ notNeedBgStyleAdditional, isBigImage }) => !notNeedBgStyleAdditional && css`\n background-size: ${isBigImage ? 'cover' : '100% 162px'};\n `}\n\n }\n`;\n\nexport const Price = styled.div`\n ${FONTS.H1};\n color: ${COLORS.TextWhite};\n white-space: nowrap;\n\n @media (max-width: ${wideBreakpoints.sDesktop}) {\n ${FONTS.H3};\n }\n\n @media (max-width: ${wideBreakpoints.tablet}) {\n ${FONTS.H4};\n }\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n ${FONTS.H3};\n }\n`;\n\nexport const Discount = styled.div`\n ${FONTS.XS};\n max-width: 128px;\n width: 100%;\n height: fit-content;\n\n color: ${COLORS.TextHint};\n\n @media (max-width: ${wideBreakpoints.tablet}) {\n font-size: 8px;\n line-height: 2;\n max-width: 71px;\n }\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n font-size: 12px;\n line-height: 1.33;\n max-width: 105px;\n }\n`;\n\nexport const PriceBlock = styled.div`\n display: flex;\n flex-wrap: nowrap;\n width: fit-content;\n align-items: center;\n column-gap: 29px;\n margin-bottom: 21px;\n\n @media (max-width: ${wideBreakpoints.sDesktop}) {\n column-gap: 21px;\n margin-bottom: 15px;\n }\n\n @media (max-width: ${wideBreakpoints.tablet}) {\n column-gap: 15px;\n margin-bottom: 13px;\n }\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n justify-content: space-between;\n width: 100%;\n margin-bottom: 10px;\n }\n`;\n\nexport const FullPrice = styled.div`\n ${FONTS.H1};\n color: ${COLORS.TextWhite};\n\n @media (max-width: ${wideBreakpoints.sDesktop}) {\n ${FONTS.H3};\n }\n\n @media (max-width: ${wideBreakpoints.tablet}) {\n ${FONTS.H4};\n }\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n ${FONTS.H3};\n }\n`;\n\nexport const FullPriceBlock = styled.div`\n display: flex;\n flex-direction: column;\n width: fit-content;\n margin-bottom: 16px;\n margin-top: 28px;\n\n @media (max-width: ${wideBreakpoints.sDesktop}) {\n margin-bottom: 11px;\n margin-top: 23px;\n }\n\n @media (max-width: ${wideBreakpoints.tablet}) {\n margin-bottom: 8px;\n margin-top: 8px;\n padding-left: 0;\n }\n`;\n\nexport const Leasing = styled.div<{ isActive: boolean }>`\n display: flex;\n align-items: center;\n position: relative;\n color: ${COLORS.TextWhite};\n ${FONTS.M};\n line-height: 100%;\n opacity: 0.5;\n width: fit-content;\n padding-right: 23px;\n cursor: pointer;\n\n :after {\n content: '';\n position: absolute;\n top: 5px;\n right: 0;\n width: 2px;\n height: 10px;\n border-radius: 10px;\n background: ${COLORS.BgSecondary};\n transform: rotate(${({ isActive }) => isActive ? -45 : 45}deg);\n }\n\n :before {\n content: '';\n position: absolute;\n top: 5px;\n right: 6px;\n width: 2px;\n height: 10px;\n border-radius: 10px;\n background: ${COLORS.BgSecondary};\n transform: rotate(${({ isActive }) => isActive ? 45 : -45}deg);\n }\n\n ${FONTS.S};\n line-height: 1;\n\n :before {\n top: 6px;\n height: 8px;\n }\n\n :after {\n top: 6px;\n right: 1px;\n height: 8px;\n }\n\n @media (max-width: ${wideBreakpoints.sDesktop}) {\n ${FONTS.XXS}\n line-height: 1;\n padding-right: 14px;\n\n :before {\n top: 3px;\n right: 4px;\n height: 7px;\n }\n\n :after {\n top: 3px;\n height: 7px;\n }\n }\n\n @media (max-width: ${wideBreakpoints.tablet}) {\n font-size: 9px;\n line-height: 1;\n padding-right: 10px;\n\n :before {\n top: 3px;\n right: 4px;\n height: 5px;\n }\n\n :after {\n top: 3px;\n height: 5px;\n right: 1px;\n }\n }\n`;\n","import React, { FC, useCallback, useState } from 'react';\n\n// @ts-ignore\nimport TitleSelect from '@r1-frontend/ui-react/components/select/titleSelect';\nimport { EPriceTypes } from '@r1-frontend/shared/types/EPriceTypes';\n\nimport { IClick } from '~/src/features/movix-new';\nimport { ELABELS } from '~/src/features/movix-new/constants';\nimport { EEquipmentType } from '~/src/features/movix-new/Popup';\nimport { dataLayerPushButton } from '~/src/features/movix-new/utils';\nimport { toCurrency } from '~/src/helpers/numbers';\nimport { ICityState } from '~/src/store/reducers/city';\n\nimport { MovixButton } from '~/src/features/movix-new/styled';\nimport * as ST from './styled';\n\nexport interface ICardItem {\n img: string,\n title: string | JSX.Element,\n descList?: JSX.Element[],\n description?: string | JSX.Element,\n price?: number,\n discountDefault?: string | JSX.Element,\n priceStartsFromText?: string,\n buttonText?: string,\n defaultAfterPrice?: number,\n fullPrice?: string,\n isBigImage?: boolean,\n gradientSettings?: IGradientSettings,\n id: number,\n costType?: EEquipmentType,\n notAllowButtonText?: boolean,\n notNeedBgStyleAdditional?: boolean,\n}\n\nexport interface IGradientSettings {\n gradient: string,\n height: number,\n width?: number,\n top?: string,\n bottom?: string,\n right?: string,\n left?: string,\n borderRadius?: string,\n}\n\nexport interface IPriceOption {\n label: string,\n operType: string,\n price: number,\n sort: number,\n type: number,\n value: number,\n pricePromo?: number,\n}\n\ninterface IProps {\n item: ICardItem,\n city?: ICityState,\n priceOptions?: IPriceOption[],\n handleClick?: (data: IClick) => void,\n}\n\nconst Card: FC = ({\n item,\n priceOptions = [],\n handleClick,\n}) => {\n const {\n title,\n price,\n img,\n description,\n descList,\n priceStartsFromText,\n buttonText,\n fullPrice,\n isBigImage,\n gradientSettings,\n notAllowButtonText,\n notNeedBgStyleAdditional,\n } = item;\n const [selectedOption, setSelectedOption] = useState(priceOptions[priceOptions.length - 1]);\n const [isSelectOpen, setIsSelectOpen] = useState(false);\n\n const getCurrency = useCallback(() => {\n if (!selectedOption) {\n return;\n }\n return selectedOption.type === EPriceTypes.Possess\n ? ' ₽'\n : ' ₽/мес';\n }, [selectedOption]);\n\n const changeOptionsHandler = useCallback(option => {\n setSelectedOption(option);\n setIsSelectOpen(false);\n }, []);\n\n const toggleSelectHandler = useCallback(() => {\n setIsSelectOpen(!isSelectOpen);\n }, [isSelectOpen]);\n\n const getPriceLabel = useCallback(() => {\n if (!selectedOption) {\n return;\n }\n return selectedOption.type === EPriceTypes.Possess\n ? 'Покупка'\n : `рассрочка на ${selectedOption.value} мес.`;\n }, [selectedOption]);\n\n const handleClickDataLayerWrapper = useCallback((data: IClick) => {\n handleClick && handleClick(data);\n dataLayerPushButton(data.label);\n }, []);\n\n const handleClickWrapper = () => {\n let costType;\n let label;\n const leasingDurationForTariff = 36;\n if (price) {\n costType = EEquipmentType.leasing;\n label = ELABELS.tariff;\n } else if (selectedOption) {\n if (selectedOption.type === EPriceTypes.Possess) {\n costType = EEquipmentType.sale;\n } else {\n costType = EEquipmentType.leasing;\n }\n label = ELABELS.buy;\n } else {\n costType = EEquipmentType.loan;\n label = ELABELS.testDrive;\n }\n const data = {\n costType,\n leasingDuration: price ? leasingDurationForTariff : selectedOption?.value,\n textButton: notAllowButtonText ? '' : buttonText,\n label,\n };\n\n handleClick && handleClickDataLayerWrapper(data);\n };\n\n const assertPriceMode = () => {\n if (priceStartsFromText) {\n return priceStartsFromText + price;\n }\n return price;\n };\n\n return (\n <>\n \n \n {title}\n {description && {description}}\n {descList && (\n \n {descList.map((text, index) =>
  • {text}
  • )}\n
    \n )}\n {price && (\n \n {assertPriceMode()} ₽/мес\n \n )}\n {fullPrice && (\n \n {priceOptions && (\n <>\n {getPriceLabel()}\n {isSelectOpen && ({\n ...provided,\n display: 'none',\n }),\n container: (provided: { [key: string]: string }) => ({\n ...provided,\n position: 'absolute',\n }),\n\n menu: (provided: { [key: string]: string }) => ({\n ...provided,\n minWidth: '220px',\n overflow: 'hidden',\n zIndex: 2,\n }),\n }}\n />}\n \n\n )}\n {toCurrency(selectedOption?.price)}{getCurrency()}\n \n )}\n {buttonText &&\n \n \n {buttonText}\n \n }\n
    \n \n );\n};\n\nexport default Card;\n","import styled, { css } from 'styled-components';\n\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nimport { breakPoints } from '~/src/constants/breakpoints';\nimport { TArea, TStyles } from '~/src/features/movix-new/ContentCard';\n\nexport const Row = styled.div`\n display: flex;\n flex-direction: row;\n column-gap: 54px;\n flex-wrap: nowrap;\n`;\n\nexport const Block = styled(Row)<{ area: TArea, withoutDisplayColumn?: boolean, styles?: TStyles }>`\n padding: 8px 8px 8px 50px;\n background: ${COLORS.BgMain}0D;\n border-radius: 24px;\n align-items: center;\n grid-area: ${({ area }) => area};\n\n @media (max-width: ${breakPoints.desktop}) {\n column-gap: 35px;\n padding: 8px 8px 8px 20px;\n }\n\n @media (max-width: ${breakPoints.sDesktop}) {\n column-gap: 32px;\n }\n\n @media (max-width: ${breakPoints.tablet}) {\n ${({ area, withoutDisplayColumn }) => {\n if (withoutDisplayColumn) {\n return '';\n }\n return area !== 'large' && css`flex-direction: column-reverse;`;\n }};\n padding: ${({ area }) => area !== 'large' ? '8px 8px 40px 8px' : '8px 8px 0 22px'};\n justify-content: flex-end;\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n flex-direction: column-reverse;\n padding: 8px 8px 40px 8px;\n }\n\n ${({ styles }) => styles}\n`;\n\nexport const Title = styled.div<{ styles?: TStyles }>`\n ${FONTS.H3}\n color: ${COLORS.TextWhite};\n\n @media (max-width: ${breakPoints.sDesktop}) {\n ${FONTS.H5}\n }\n\n @media (max-width: ${breakPoints.tablet}) {\n margin: auto 8px;\n ${FONTS.H4}\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n width: fit-content;\n }\n\n ${({ styles }) => styles}\n`;\n\nexport const Description = styled.div`\n ${FONTS.S};\n color: ${COLORS.TextWhite};\n max-width: 460px;\n\n @media (max-width: ${breakPoints.sDesktop}) {\n ${FONTS.XXS};\n }\n\n @media (max-width: ${breakPoints.tablet}) {\n ${FONTS.XS};\n margin: auto 8px;\n }\n`;\n\nexport const TextBlock = styled.div`\n display: flex;\n flex-direction: column;\n width: 100%;\n flex-wrap: nowrap;\n row-gap: 8px;\n\n @media (max-width: ${breakPoints.mobile}) {\n padding-left: 4px; \n padding-right: 4px; \n }\n`;\n\nexport const ImageBlock = styled.div<{ area: TArea, styles?: TStyles }>`\n min-height: 136px;\n min-width: 136px;\n border-radius: 24px;\n overflow: hidden;\n display: flex;\n align-items: center;\n justify-content: center;\n\n @media (max-width: ${breakPoints.tablet}) {\n min-height: 112px;\n min-width: ${({ area }) => area === 'large' ? 263 : 112}px;\n margin-bottom: 8px;\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n min-height: 88px;\n min-width: ${({ area }) => area === 'large' ? 160 : 88}px;\n width: ${({ area }) => area === 'large' ? '100%' : ''};\n }\n\n ${({ styles }) => styles}\n`;\n\nexport const Image = styled.img`\n width: 100%;\n`;\n","import React, { FC } from 'react';\nimport { FlattenSimpleInterpolation } from 'styled-components';\n\nimport { useWebp } from '@r1-frontend/shared/hooks/useWebp';\n\nimport * as ST from './styled';\n\nexport type TArea = 'second' | 'first' | 'third' | 'large';\n\nexport type TStyles = string | FlattenSimpleInterpolation;\n\nexport interface IContentCardItem {\n title: string,\n description?: string,\n img: string,\n imgWebp?: string,\n bigImg?: string,\n area: TArea,\n imageStyles?: TStyles,\n containerStyles?: TStyles,\n titleStyles?: TStyles,\n}\n\ninterface IProps {\n item: IContentCardItem,\n isShowBigImg?: boolean,\n withoutDisplayColumn?: boolean,\n}\n\nconst ContentCard: FC = ({\n isShowBigImg,\n item: {\n area,\n bigImg,\n description,\n img,\n imgWebp,\n title,\n imageStyles,\n containerStyles,\n titleStyles,\n },\n withoutDisplayColumn,\n}) => {\n\n const src = useWebp() && imgWebp ? imgWebp : img;\n\n return (\n \n \n {title}\n {description && {description}}\n \n \n \n \n \n );\n};\n\nexport default ContentCard;\n","import { IContentCardItem } from '~/src/features/movix-new/ContentCard';\n\nexport const CARDS: IContentCardItem[] = [\n {\n title: 'Одним кабелем к любому телевизору',\n description: 'Просто подключаете кабель HDMI — и всё. Подходит к любым телевизорам, даже довольно старым.',\n img: 'static/images/movix-new/hdmi.png',\n imgWebp: 'static/images/movix-new/hdmi.webp',\n area: 'large',\n },\n {\n title: 'Без вреда вашему ремонту',\n description: 'Подключение к интернету по Wi-Fi — не нужно тянуть кабель через всю квартиру.',\n img: 'static/images/movix-new/router.png',\n imgWebp: 'static/images/movix-new/router.webp',\n area: 'first',\n },\n\n {\n title: 'Не мешая близким',\n description: 'Подключайте беспроводные наушники по Bluetooth и наслаждайтесь.',\n img: 'static/images/movix-new/airpods-pro.png',\n imgWebp: 'static/images/movix-new/airpods-pro.webp',\n area: 'second',\n },\n {\n title: 'Не ограничиваясь видео',\n description: 'Устанавливайте приложения из магазина как на Smart TV.',\n img: 'static/images/movix-new/grid.png',\n imgWebp: 'static/images/movix-new/grid.webp',\n area: 'third',\n },\n];\n\n","import styled from 'styled-components';\n\nimport { breakPoints } from '~/src/constants/breakpoints';\n\nexport const Wrapper = styled.div`\n display: grid;\n grid-template-columns: 1fr 1fr;\n grid-template-rows: 1fr 1fr;\n grid-template-areas: 'large first'\n 'second third';\n row-gap: 24px;\n column-gap: 26px;\n width: 100%;\n\n @media (max-width: ${breakPoints.tablet}) {\n grid-template-rows: 1fr;\n grid-template-columns: 1fr 1fr 1fr;\n grid-template-areas: 'large large large'\n 'second first third';\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n grid-template-rows: min-content min-content min-content min-content;\n grid-auto-rows: min-content;\n grid-template-columns: 100%;\n grid-template-areas: \n 'large' \n 'first' \n 'second' \n 'third';\n }\n`;\n","const IMAGES_URL = 'static/images/movix-new';\nconst FILMS_URL = `${IMAGES_URL}/films/`;\nconst KIDS_URL = `${IMAGES_URL}/kids/`;\nconst SERIALS_URL = `${IMAGES_URL}/serials/`;\nconst SPORT_URL = `${IMAGES_URL}/sport/`;\nconst TV_CHANNELS_URL = `${IMAGES_URL}/tv-channels/`;\n\nconst vipplay = `${IMAGES_URL}/vipplay.png`;\nconst vipplayBlack = `${IMAGES_URL}/black-vipplay.png`;\nconst megogo = `${IMAGES_URL}/megogo.png`;\nconst start = `${IMAGES_URL}/start.png`;\n\nenum LabelTypes {\n megogo = 'megogo',\n vipplay = 'vipplay',\n start = 'start',\n vipplayBlack = 'vipplayBlack',\n}\n\nenum LabelsWidth {\n megogo = '19.4%',\n vipplay = '22.6%',\n start = '13.5',\n}\n\nconst LABELS = {\n [LabelTypes.megogo]: { src: megogo, width: LabelsWidth.megogo },\n [LabelTypes.vipplay]: { src: vipplay, width: LabelsWidth.vipplay },\n [LabelTypes.start]: { src: start, width: LabelsWidth.start },\n [LabelTypes.vipplayBlack]: { src: vipplayBlack, width: LabelsWidth.vipplay },\n};\n\ninterface IMovie {\n name: string,\n age?: number,\n type?: LabelTypes,\n}\n\nconst getUrls = (path: string, names: IMovie[]) => {\n return names.map(({ name, age, type }) => {\n const label = type && LABELS[type];\n return {\n src: `${path}${name}-min.jpg`,\n age,\n label,\n };\n });\n};\n\nconst FILMS = getUrls(FILMS_URL, [\n { name: 'one-plus-one', age: 18 },\n { name: 'made-in-usa', age: 18 },\n { name: 'world-period', age: 16 },\n { name: 'gatsbi', age: 16 },\n { name: 'forsaj', age: 12 },\n { name: 'interstellar', age: 16 },\n { name: 'venom', age: 16, type: LabelTypes.vipplay },\n { name: 'holop', age: 12 },\n { name: 'text', age: 18 },\n { name: 'baby-on-drive', age: 18, type: LabelTypes.vipplay },\n { name: 'bogem5', age: 18 },\n { name: 'get-knifes', age: 16 },\n]);\n\nconst SERIALS = getUrls(SERIALS_URL, [\n { name: 'white-queen', age: 18, type: LabelTypes.vipplay },\n { name: 'berlin', age: 16 },\n { name: 'besprincip', age: 18 },\n { name: 'lasts', age: 18 },\n { name: 'jail', age: 18 },\n { name: 'citchen', age: 16 },\n { name: 'ip', age: 16, type: LabelTypes.start },\n { name: 'eva', age: 18 },\n { name: 'tabu', age: 18 },\n { name: 'rivera', age: 16 },\n { name: 'bad-doctor', age: 18 },\n { name: 'mediator', age: 18 },\n]);\n\nconst TV_CHANNELS = getUrls(TV_CHANNELS_URL, [\n { name: '1' },\n { name: 'r1' },\n { name: 'match' },\n { name: 'ntv' },\n { name: 'friday' },\n { name: 'tnt' },\n { name: 'sts' },\n { name: 'gold-collection' },\n { name: 'movie' },\n { name: 'euro' },\n { name: 'a' },\n { name: 'discovery' },\n { name: 'mult' },\n { name: 'vip' },\n]);\n\nconst SPORT = getUrls(SPORT_URL, [\n { name: 'match-premier' },\n { name: 'm-1' },\n { name: 'game' },\n { name: 'khl-tv' },\n { name: 'boks' },\n { name: 'eurosport-1' },\n { name: 'eurosport-2' },\n { name: 'match-sport' },\n { name: 'fighter' },\n { name: 'viju' },\n { name: 'rex' },\n { name: 'motosport' },\n { name: 'match-country' },\n { name: 'match-arena' },\n]);\n\nconst KIDS = getUrls(KIDS_URL, [\n { name: 'three-heroes', age: 6, type: LabelTypes.vipplay },\n { name: 'masha', age: 0 },\n { name: 'belka-and-strelka', age: 0 },\n { name: 'planet-51', age: 12 },\n { name: 'rebbit-pitter-2', age: 6 },\n { name: 'monsters-on-weekend', age: 6 },\n { name: 'i', age: 0 },\n { name: 'trolli', age: 0 },\n { name: 'angry-birds', age: 6, type: LabelTypes.vipplay },\n { name: 'spiderman', age: 16 },\n { name: 'family-kruds', age: 6, type: LabelTypes.vipplayBlack },\n { name: 'smeshariki', age: 0 },\n]);\n\nexport const TABS = [\n { label: 'Фильмы', images: FILMS },\n { label: 'Сериалы', images: SERIALS },\n { label: 'ТВ-каналы', images: TV_CHANNELS },\n { label: 'Спорт', images: SPORT },\n { label: 'Детям', images: KIDS },\n];\n","import React, { FC, useEffect, useState } from 'react';\n\nimport ContentCard from '~/src/features/movix-new/ContentCard';\n\nimport { CARDS } from './data';\n\nimport * as ST from './styled';\n\nconst ConnectionInfo: FC = () => {\n const [isShowBigImg, setIsShowBigImg] = useState(false);\n\n useEffect(() => {\n const onResize = () => {\n if (window.innerWidth <= 1023) {\n setIsShowBigImg(true);\n } else {\n setIsShowBigImg(false);\n }\n };\n\n onResize();\n\n window.addEventListener('resize', onResize);\n\n return () => {\n window.removeEventListener('resize', onResize);\n };\n }, []);\n\n return (\n \n {CARDS.map(item => (\n \n ))}\n \n );\n};\n\nexport default ConnectionInfo;\n","import styled, { css } from 'styled-components';\n\n// @ts-ignore\nimport Tabs from '@r1-frontend/ui-react/components/tabs/tabs';\n// @ts-ignore\nimport CarouselUI from '@r1-frontend/ui-react/deprecated/carousel';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nimport { breakPoints } from '~/src/constants/breakpoints';\nimport { BACKGROUND_COLOR_BLACK } from '~/src/features/movix-new/constants';\n\nexport const STabs = styled(Tabs)`\n display: flex;\n justify-content: center;\n color: ${COLORS.TextWhite};\n background-color: ${BACKGROUND_COLOR_BLACK};\n flex-wrap: nowrap;\n flex-direction: column;\n margin-top: -1px;\n\n & > div:first-child {\n width: 100%;\n max-width: 1360px;\n align-self: center;\n z-index: 2;\n\n > div > div > div {\n div {\n color: ${({ active }) => active ? COLORS.TextHint : COLORS.TextWhite};\n ${FONTS.S}\n\n :hover {\n color: ${COLORS.TextHint};\n }\n }\n }\n\n @media (max-width: ${breakPoints.desktop}) {\n max-width: 1226px;\n }\n\n @media (max-width: ${breakPoints.sDesktop}) {\n max-width: 929px;\n }\n\n @media (max-width: ${breakPoints.tablet}) {\n max-width: 691px;\n\n > div > div > div {\n div {\n ${FONTS.XS}\n }\n }\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n max-width: 297px;\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n width: 100%;\n }\n }\n\n`;\n\nexport const ImagesContainer = styled.div<{ count: number, imageWidth: number, columnGap: number, maxCount: number }>`\n display: grid;\n ${({ count, imageWidth, columnGap, maxCount }) => css`\n grid-template-columns: repeat(${count > maxCount ? maxCount : count}, ${imageWidth}px);\n column-gap: ${columnGap}px;\n `};\n justify-content: center;\n grid-template-rows: repeat(3, 142px);\n row-gap: 18px;\n padding: 0 35px;\n margin: 0 auto;\n width: 100%;\n clear: both;\n overflow-x: visible;\n z-index: 2;\n\n @media (max-width: ${breakPoints.desktop}) {\n grid-template-rows: repeat(3, 110px);\n row-gap: 17px;\n }\n\n @media (max-width: ${breakPoints.sDesktop}) {\n grid-template-rows: repeat(3, 82px);\n row-gap: 10px;\n }\n\n @media (max-width: ${breakPoints.tablet}) {\n grid-template-rows: repeat(3, 74px);\n row-gap: 9px;\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n grid-template-columns: repeat(2, 132px);\n grid-template-rows: repeat(7, 74px);\n row-gap: 10px;\n padding: 0 20px;\n }\n`;\n\nexport const Image = styled.div<{ src: string }>`\n position: relative;\n width: 100%;\n height: 100%;\n border-radius: 9px;\n background: url(${({ src }) => src}) no-repeat center;\n background-size: cover;\n overflow: hidden;\n`;\n\nexport const Age = styled.div`\n position: absolute;\n top: 8px;\n left: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 10px;\n line-height: 1;\n color: ${COLORS.TextWhite};\n max-width: 27px;\n max-height: 18px;\n height: 100%;\n width: 100%;\n border-radius: 5px;\n padding-bottom: 1px;\n background: rgba(0, 0, 0, 0.3);\n\n @media (max-width: ${breakPoints.desktop}) {\n max-width: 20px;\n max-height: 13px;\n font-size: 8px;\n border-radius: 3px;\n top: 6px;\n left: 7px;\n }\n\n @media (max-width: ${breakPoints.sDesktop}) {\n max-width: 15px;\n max-height: 10px;\n font-size: 7px;\n border-radius: 2px;\n top: 5px;\n left: 6px;\n }\n\n @media (max-width: ${breakPoints.tablet}) {\n max-width: 12px;\n max-height: 8px;\n font-size: 5px;\n top: 3px;\n left: 4px;\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n max-width: 13px;\n max-height: 9px;\n font-size: 6px;\n top: 4px;\n left: 5px;\n }\n`;\n\nexport const TextImage = styled.div<{ src: string, width: string }>`\n position: absolute;\n top: 10px;\n right: 10px;\n width: ${({ width }) => width};\n background: url(${({ src }) => src}) no-repeat center center;\n background-size: contain;\n min-height: 21px;\n\n @media (max-width: ${breakPoints.desktop}) {\n top: 8px;\n right: 7px;\n }\n\n @media (max-width: ${breakPoints.sDesktop}) {\n top: 6px;\n right: 6px;\n }\n\n @media (max-width: ${breakPoints.tablet}) {\n top: 5px;\n right: 4px;\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n top: 5px;\n right: 5px;\n }\n`;\n\nexport const Carousel = styled(CarouselUI)`\n flex-direction: row;\n width: 100%;\n background: ${BACKGROUND_COLOR_BLACK};\n padding-top: 37px;\n margin-bottom: -175px;\n\n @media (max-width: ${breakPoints.desktop}) {\n margin-bottom: -100px;\n }\n\n @media (max-width: ${breakPoints.sDesktop}) {\n margin-bottom: -84px;\n }\n\n @media (max-width: ${breakPoints.tablet}) {\n margin-bottom: -64px;\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n margin-bottom: -97px;\n margin-top: -23px;\n }\n`;\n","import React, { FC, useEffect, useRef, useState } from 'react';\n\n// @ts-ignore\nimport Tab from '@r1-frontend/ui-react/components/tabs/tab';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\n\nimport { TABS } from '~/src/features/movix-new/FilmsBlock/data';\n\nimport * as ST from './styled';\n\ninterface IFilmSettings {\n resolution?: number,\n imageWidth: number,\n columnGap: number,\n}\n\nconst FILMS_SETTINGS = {\n default: {\n imageWidth: 252,\n columnGap: 18,\n },\n tablet: {\n resolution: 1023,\n imageWidth: 132,\n columnGap: 12,\n },\n sDesktop: {\n resolution: 1365,\n imageWidth: 146,\n columnGap: 13,\n },\n desktop: {\n resolution: 1600,\n imageWidth: 195,\n columnGap: 14,\n },\n};\n\nconst MAX_COUNT_IMAGES = 7;\n\nconst FilmsBlock: FC = () => {\n const [activeTab, setActiveTab] = useState(TABS[0].label);\n const [countImages, setCountImages] = useState(MAX_COUNT_IMAGES);\n const [imageWidth, setImageWidth] = useState(FILMS_SETTINGS.default.imageWidth);\n const [columnGap, setColumnGap] = useState(FILMS_SETTINGS.default.columnGap);\n const sliderRef = useRef();\n const imagesRef = useRef(null);\n\n useEffect(() => {\n const onResize = () => {\n const width = window.innerWidth;\n\n if (width <= FILMS_SETTINGS.tablet.resolution) {\n changeCount(FILMS_SETTINGS.tablet);\n } else if (width <= FILMS_SETTINGS.sDesktop.resolution) {\n changeCount(FILMS_SETTINGS.sDesktop);\n } else if (width <= FILMS_SETTINGS.desktop.resolution) {\n changeCount(FILMS_SETTINGS.desktop);\n } else {\n changeCount(FILMS_SETTINGS.default);\n }\n };\n\n const changeCount = ({ imageWidth, columnGap }: IFilmSettings) => {\n const imagesWidth = imagesRef.current?.clientWidth;\n\n if (!imagesWidth) {\n return;\n }\n\n const count = Math.floor(imagesWidth / (imageWidth + columnGap));\n setCountImages(count > MAX_COUNT_IMAGES ? MAX_COUNT_IMAGES : count);\n setImageWidth(imageWidth);\n setColumnGap(columnGap);\n };\n onResize();\n\n window.addEventListener('resize', onResize);\n return () => {\n window.removeEventListener('resize', onResize);\n };\n }, []);\n\n const onSwipe = (slide: number) => {\n setActiveTab(TABS[slide].label);\n };\n\n const onSwitchTab = (label: string) => {\n setActiveTab(label);\n // @ts-ignore\n sliderRef.current?.swipeTo(TABS.findIndex(tab => tab.label === label));\n };\n\n return (\n <>\n \n {TABS.map(({ label }, i) => (\n \n ))}\n \n \n {TABS.map(({ images }, containerKey) => (\n \n {images.map((img, i) => (\n \n {typeof img.age !== 'undefined' && {img.age}+}\n {img.label && }\n \n ))}\n \n ))}\n \n \n );\n};\n\nexport default FilmsBlock;\n","import { LazyLoadImage } from 'react-lazy-load-image-component';\nimport styled from 'styled-components';\n\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nimport { breakPoints } from '~/src/constants/breakpoints';\nimport { BACKGROUND_COLOR_BLACK } from '~/src/features/movix-new/constants';\n\nexport const VideoServicesWrapper = styled.div`\n position: relative;\n width: 100%;\n margin-top: -2px;\n background-color: ${BACKGROUND_COLOR_BLACK};\n\n @media (min-width: 1024px) {\n position: absolute;\n top: -10px;\n height: 530px;\n }\n\n @media (min-width: 1366px) {\n height: 610px;\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n height: auto;\n }\n`;\n\nexport const Container = styled.div`\n display: block;\n color: ${COLORS.TextWhite};\n z-index: 1;\n max-width: 1356px;\n width: 100%;\n margin: 86px auto 0 auto;\n\n @media (max-width: ${breakPoints.desktop}) {\n max-width: 1226px;\n margin-top: 98px;\n }\n\n @media (max-width: ${breakPoints.sDesktop}) {\n max-width: 929px;\n margin-top: 71px;\n }\n\n @media (max-width: ${breakPoints.tablet}) {\n margin: 5px auto 0 auto;\n text-align: center;\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n padding: 0 24px;\n width: 100%;\n margin-left: auto;\n }\n`;\n\nexport const Title = styled.div`\n width: 450px;\n height: fit-content;\n ${FONTS.H2};\n\n @media (max-width: ${breakPoints.sDesktop}) {\n width: 430px;\n }\n\n @media (max-width: ${breakPoints.sDesktop}) {\n width: 430px;\n ${FONTS.H3};\n }\n\n @media (max-width: ${breakPoints.tablet}) {\n width: 100%;\n justify-content: center;\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n justify-content: center;\n text-align: center;\n ${FONTS.H4};\n }\n`;\n\nexport const SubText = styled.div`\n width: 450px;\n height: fit-content;\n ${FONTS.M};\n margin-top: 10px;\n\n @media (max-width: ${breakPoints.sDesktop}) {\n ${FONTS.XS};\n }\n\n @media (max-width: ${breakPoints.tablet}) {\n width: 100%;\n margin-top: 12px;\n justify-content: center;\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n line-height: 1.71;\n text-align: center;\n justify-content: center;\n }\n`;\n\nexport const ImgServices = styled(LazyLoadImage)`\n max-width: 400px;\n height: auto;\n margin-top: 23px;\n image-rendering: -moz-crisp-edges;\n image-rendering: -o-crisp-edges;\n image-rendering: -webkit-optimize-contrast;\n image-rendering: crisp-edges;\n -ms-interpolation-mode: nearest-neighbor;\n\n @media (max-width: ${breakPoints.tablet}) {\n margin-top: 16px;\n justify-content: center;\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n max-width: 250px;\n margin-top: 27px;\n }\n`;\n\nexport const Img = styled.img`\n object-fit: content;\n`;\n\nexport const ImgYouTube = styled(LazyLoadImage)`\n margin: 0 10px 3px 10px;\n\n @media (max-width: ${breakPoints.mobile}) {\n margin-bottom: 5px;\n }\n`;\n","import styled from 'styled-components';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nimport { Container as ContainerOrig } from '~/src/features/movix-new/VideoServices/styled';\n\nexport const HeaderMainText = styled.div`\n max-width: 550px;\n ${FONTS.H1};\n color: ${COLORS.TextWhite};\n margin-top: 25px;\n\n @media (max-width: ${wideBreakpoints.sDesktop}) {\n max-width: 400px;\n }\n\n @media (max-width: ${wideBreakpoints.tablet}) {\n text-align: start;\n ${FONTS.H3};\n }\n`;\n\nexport const SubText = styled(HeaderMainText)`\n ${FONTS.XS};\n width: 475px;\n margin-top: 0;\n`;\n\nexport const Container = styled(ContainerOrig)`\n\n @media (max-width: ${wideBreakpoints.tablet}) {\n margin: 0 34px;\n }\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n max-width: inherit;\n padding: 0;\n margin: 0 16px;\n }\n`;\n\nexport const ButtonBlock = styled.div`\n display: block;\n width: 236px;\n height: 48px;\n margin-top: 32px;\n\n @media (max-width: ${wideBreakpoints.tablet}) {\n margin-top: 24px;\n }\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n width: 100%;\n }\n`;\n\nexport const HeaderLegal = styled.div`\n width: 480px;\n color: ${COLORS.TextWhite};\n opacity: .75;\n margin-top: 14px;\n ${FONTS.XS};\n\n @media (max-width: ${wideBreakpoints.sDesktop}) {\n margin-top: 26px;\n ${FONTS.XXS};\n }\n\n @media (max-width: ${wideBreakpoints.tablet}) {\n ${FONTS.XS};\n margin: 16px 0 45px 0;\n text-align: left;\n }\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n width: 100%;\n ${FONTS.XXS};\n margin: 20px 0 65px 0;\n white-space: normal;\n }\n`;\n\nexport const WrapperBottomBlock = styled.div`\n width: 100%;\n\n @media (min-width: 768px) {\n flex-direction: column;\n }\n`;\n","import React, { useCallback } from 'react';\n\nimport { IClick } from '~/src/features/movix-new';\nimport { ELABELS } from '~/src/features/movix-new/constants';\nimport { dataLayerPushButton } from '~/src/features/movix-new/utils';\n\nimport { MovixButton } from '~/src/features/movix-new/styled';\nimport * as ST from './styled';\n\ninterface IProps {\n handleClick: (data: IClick) => void,\n}\n\nconst HeaderTitleBlock = ({ handleClick }: IProps): JSX.Element => {\n\n const handleClickDataLayerWrapper = useCallback(() => {\n handleClick({ label: ELABELS.firstScreen });\n dataLayerPushButton(ELABELS.firstScreen);\n }, []);\n\n return (\n \n Ваш домашний
    центр развлечений\n
    \n \n Всё и сразу: телеканалы, фильмы и сериалы из популярных онлайн-кинотеатров\n и приложения как на Smart TV в одной приставке\n \n \n \n \n Подключить в рассрочку\n \n \n \n Подключите в рассрочку на 6, 12, 24 или 36 месяцев\n \n \n
    );\n};\n\nexport default HeaderTitleBlock;\n","import styled from 'styled-components';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nimport { BACKGROUND_COLOR_BLACK } from '~/src/features/movix-new/constants';\n\nimport { HeaderMainText, SubText } from '~/src/features/movix-new/HeaderTitileBlock/styled';\n\nexport const HeaderBlock = styled.header<{ backgroundImg: string }>`\n width: 100%;\n height: 678px;\n background-image: url(${props => props.backgroundImg});\n background-size: cover;\n background-position: center;\n background-repeat: no-repeat;\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n height: 450px;\n }\n\n @media (max-width: 640px) {\n height: 565px;\n }\n\n @media (max-width: 375px) {\n height: 380px;\n }\n`;\n\nexport const Wrapper = styled.div`\n width: 100%;\n`;\n\nexport const ContainerMobileTitle = styled.div`\n width: 100%;\n position: relative;;\n background-color: ${BACKGROUND_COLOR_BLACK};\n\n ${HeaderMainText} {\n @media (max-width: ${wideBreakpoints.tablet}) {\n max-width: 590px;\n margin-top: 25px;\n margin-left: 0;\n ${FONTS.H3};\n text-align: left;\n }\n }\n\n ${SubText} {\n margin-top: 8px;\n ${FONTS.XS};\n\n @media (max-width: ${wideBreakpoints.tablet}) {\n width: 515px;\n ${FONTS.M};\n margin-left: 0;\n text-align: left;\n }\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n width: 100%;\n ${FONTS.XS};\n margin-right: 16px;\n }\n }\n`;\n","import React, { FC, useMemo } from 'react';\n\nimport { useMatchMedia } from '@r1-frontend/shared/hooks/useMatchMedia';\nimport { useWebp } from '@r1-frontend/shared/hooks/useWebp';\n\nimport { IClick } from '~/src/features/movix-new';\nimport HeaderTitleBlock from '~/src/features/movix-new/HeaderTitileBlock';\n\nimport * as ST from './styled';\n\nexport enum EMediaWidth {\n sDesktop = '(max-width: 1567px) and (min-width: 1280px)',\n laptop = '(max-width: 1279px) and (min-width: 769px)',\n tablet = '(max-width: 1023px)',\n mobile = '(max-width: 768px) and (min-width: 641px)',\n sMobile = '(max-width: 640px) and (min-width: 376px)',\n xSMobile = '(max-width: 375px)',\n}\n\nconst headerBackgroundDesktop = '/static/images/movix-new/header-background-1920.jpg';\nconst headerBackgroundDesktopWebp = '/static/images/movix-new/header-background-1920.webp';\n\nconst headerBackgroundSDesktop = '/static/images/movix-new/header-background-1366.jpg';\nconst headerBackgroundSDesktopWebp = '/static/images/movix-new/header-background-1366.webp';\n\nconst headerBackgroundLaptop = '/static/images/movix-new/header-background-1024.jpg';\nconst headerBackgroundLaptopWebp = '/static/images/movix-new/header-background-1024.webp';\n\nconst headerBackgroundMobile = '/static/images/movix-new/header-background-768.jpg';\nconst headerBackgroundMobileWebp = '/static/images/movix-new/header-background-768.webp';\n\nconst headerBackgroundSMobile = '/static/images/movix-new/header-background-640.jpg';\nconst headerBackgroundSMobileWebp = '/static/images/movix-new/header-background-640.webp';\n\nconst headerBackgroundXSMobile = '/static/images/movix-new/header-background-320.jpg';\nconst headerBackgroundXSMobileWebp = '/static/images/movix-new/header-background-320.webp';\n\ninterface IProps {\n handleClick: (data: IClick) => void,\n}\n\nconst Header: FC = ({ handleClick }) => {\n const isDesktop = useMatchMedia(EMediaWidth.sDesktop);\n const isLaptop = useMatchMedia(EMediaWidth.laptop);\n const isTablet = useMatchMedia(EMediaWidth.tablet);\n const isMobile = useMatchMedia(EMediaWidth.mobile);\n const isSMobile = useMatchMedia(EMediaWidth.sMobile);\n const isXSMobile = useMatchMedia(EMediaWidth.xSMobile);\n\n const backgroundWebp = useMemo((): string => {\n switch (true) {\n case isDesktop:\n return headerBackgroundSDesktopWebp;\n case isLaptop:\n return headerBackgroundLaptopWebp;\n case isMobile:\n return headerBackgroundMobileWebp;\n case isSMobile:\n return headerBackgroundSMobileWebp;\n case isXSMobile:\n return headerBackgroundXSMobileWebp;\n default:\n return headerBackgroundDesktopWebp;\n }\n }, [isDesktop, isLaptop, isMobile, isSMobile, isXSMobile]);\n\n const background = useMemo((): string => {\n switch (true) {\n case isDesktop:\n return headerBackgroundSDesktop;\n case isLaptop:\n return headerBackgroundLaptop;\n case isMobile:\n return headerBackgroundMobile;\n case isSMobile:\n return headerBackgroundSMobile;\n case isXSMobile:\n return headerBackgroundXSMobile;\n default:\n return headerBackgroundDesktop;\n }\n }, [isDesktop, isLaptop, isMobile, isSMobile, isXSMobile]);\n\n const backgroundImage = useWebp() ? backgroundWebp : background;\n\n return (\n \n {!isTablet && }\n \n {isTablet &&\n \n \n \n }\n );\n};\n\nexport default Header;\n","import styled from 'styled-components';\n\nimport { BorderRadius } from '@r1-frontend/ui-react/tokens/borderRadius';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nimport { breakPoints } from '~/src/constants/breakpoints';\n\nexport const Wrapper = styled.div<{path: string, bgPosition?: string, textAlign: string, order: number, bgSizeMobile?: string, bgSize?: string}>`\n width: 435px;\n height: 468px;\n flex-direction: column;\n background-color: rgba(255, 255, 255, .05);\n background-size: ${p => p.bgSize || 'auto'};\n background-image: url('${p => p.path}');\n background-repeat: no-repeat;\n background-position: ${p => p.bgPosition};\n border-radius: ${BorderRadius.OuterBlockRadius};\n padding: 44px 50px 31px 53px;\n justify-content: ${p => p.textAlign};\n color: ${COLORS.TextWhite};\n row-gap: 10px;\n\n @media (max-width: ${breakPoints.desktop}) {\n padding: 31px;\n }\n\n @media (max-width: ${breakPoints.sDesktop}) {\n padding: 40px 24px 46px 31px;\n height: 437px;\n }\n\n @media (max-width: ${breakPoints.tablet}) {\n width: 339px;\n height: 340px;\n order: ${p => p.order};\n padding: 24px;\n background-size: ${p => p.bgSizeMobile || 'auto'};\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n max-width: 100%;\n height: 315px;\n }\n`;\n\nexport const TitleCard = styled.div`\n ${FONTS.H3};\n\n @media (max-width: ${breakPoints.tablet}) {\n ${FONTS.H4};\n }\n`;\n\nexport const Text = styled.div`\n ${FONTS.S};\n\n @media (max-width: ${breakPoints.sDesktop}) {\n ${FONTS.XS};\n }\n`;\n","import React, { FC } from 'react';\n\nimport { ICardItem } from '~/src/features/movix-new/Card';\n\nimport * as ST from './styled';\n\nexport interface ICardBenefits extends ICardItem {\n bgPosition?: string,\n textAlign: string,\n orderMobile: number,\n bgSizeMobile?: string,\n bgSize?: string,\n}\n\ninterface IProps {\n data: ICardBenefits,\n}\n\nconst BenefitsCard: FC = ({ data }) => {\n\n return (\n \n \n {data.title}\n \n \n {data.description}\n \n \n );\n};\n\nexport default BenefitsCard;\n","import styled from 'styled-components';\n\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nimport { breakPoints } from '~/src/constants/breakpoints';\nimport { BACKGROUND_COLOR_BLACK } from '~/src/features/movix-new/constants';\n\nimport { CardWrapper, Description, Image, Title } from '~/src/features/movix-new/Card/styled';\nimport { Cards, Container } from '~/src/features/movix-new/styled';\n\nconst mixinGradient = () => `\n content: '';\n position: absolute;\n width: 1689px;\n background: radial-gradient(48.12% 30.66% at 50% 54.13%, rgba(15, 80, 240, .59) 0%, rgba(15, 80, 240, 0) 100%);\n mix-blend-mode: normal;\n opacity: 0.35;\n z-index: 1;\n`;\n\nexport const MovixBenefits = styled.div`\n width: 100%;\n background-color: ${BACKGROUND_COLOR_BLACK};\n margin-top: -2px;\n position: relative;\n\n @media (min-width: 768px) {\n &:after {\n ${mixinGradient()}\n height: 1845px;\n top: -15%;\n left: calc(100% - 760px);\n }\n\n &:before {\n ${mixinGradient()}\n height: 1245px;\n right: calc(100% - 700px);\n }\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n &:after {\n ${mixinGradient()}\n width: 2662px;\n height: 945px;\n left: calc(100% - 1600px);\n top: -430px;\n opacity: 0.25;\n z-index: auto;\n };\n\n &:before {\n ${mixinGradient()}\n top: 12%;\n height: 1245px;\n right: calc(100% - 600px);\n }\n }\n`;\n\nexport const UltraHDContainer = styled.div`\n width: 100%;\n height: 144px;\n background-image: url(${require('~/static/images/movix-new/ultra-hd-web.png')});\n background-repeat: no-repeat;\n background-size: cover;\n border-radius: 24px;\n\n @media (max-width: ${breakPoints.desktop}) {\n background-position: bottom;\n }\n\n @media (max-width: ${breakPoints.sDesktop}) {\n background-position: 70% 100%;\n }\n\n @media (max-width: ${breakPoints.tablet}) {\n height: 164px;\n background-position: 80% 50%;\n }\n`;\n\nexport const TextContainer = styled.div`\n width: 60%;\n padding: 28px 0 14px 50px;\n flex-direction: column;\n row-gap: 10px;\n\n @media (max-width: ${breakPoints.desktop}) {\n padding-left: 31px;\n }\n`;\n\nexport const TitileHd = styled.div`\n ${FONTS.H3};\n color: ${COLORS.TextWhite};\n\n @media (max-width: ${breakPoints.tablet}) {\n ${FONTS.H4};\n }\n`;\n\nexport const SubtextHd = styled.div`\n ${FONTS.S};\n color: ${COLORS.TextWhite};\n\n @media (max-width: ${breakPoints.sDesktop}) {\n ${FONTS.XS};\n }\n\n @media (max-width: ${breakPoints.tablet}) {\n max-width: 322px;\n\n br {\n display: none;\n }\n }\n`;\n\nexport const BenefitsTitle = styled.div`\n ${FONTS.H2};\n color: ${COLORS.TextWhite};\n margin-bottom: 14px;\n margin-top: 25px;\n\n @media (max-width: ${breakPoints.desktop}) {\n margin-top: 5px;\n }\n\n @media (max-width: ${breakPoints.sDesktop}) {\n margin-top: 10px;\n ${FONTS.H3};\n }\n\n @media (max-width: ${breakPoints.tablet}) {\n margin-top: 15px;\n margin-bottom: 17px;\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n ${FONTS.H4};\n text-align: center;\n margin-bottom: 25px;\n margin-top: 45px;\n }\n`;\n\nexport const ContainerBenefits = styled(Container)`\n row-gap: 16px;\n z-index: 2;\n\n @media (max-width: ${breakPoints.tablet}) {\n justify-content: center;\n }\n\n ${Image} {\n border-radius: 16px;\n margin-bottom: 0;\n\n &:before {\n @media (max-width: ${breakPoints.desktop}) {\n content: none;\n }\n }\n }\n\n ${Title} {\n white-space: pre;\n margin-top: 35px;\n ${FONTS.H3};\n\n @media (max-width: ${breakPoints.desktop}) {\n margin-top: 33px;\n }\n\n @media (max-width: ${breakPoints.tablet}) {\n margin-top: 20px;\n margin-left: 16px;\n ${FONTS.H4};\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n white-space: normal;\n }\n }\n\n ${Description} {\n ${FONTS.S};\n width: auto;\n\n @media (max-width: ${breakPoints.sDesktop}) {\n ${FONTS.XS};\n\n br {\n display: none;\n }\n }\n\n @media (max-width: ${breakPoints.tablet}) {\n margin-left: 16px;\n }\n }\n\n ${CardWrapper} {\n padding: 8px 8px 40px;\n max-width: 100%;\n }\n\n ${Cards}:nth-child(2) {\n\n ${CardWrapper}:nth-child(1) {\n\n ${Image} {\n background-image: url('${require('~/static/images/movix-new/gamer.png')}');\n\n @media (max-width: ${breakPoints.tablet}) {\n height: 168px;\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n background-image: url('${require('~/static/images/movix-new/gamer-mobile.png')}');\n }\n }\n }\n }\n\n ${Cards}:nth-child(4) {\n\n ${Image} {\n height: 168px;\n background-position: 100% 22%;\n }\n }\n\n ${CardWrapper}:nth-child(1) {\n flex-basis: 66%;\n\n @media (max-width: ${breakPoints.tablet}) {\n flex-basis: 100%;\n }\n }\n\n ${CardWrapper}:nth-child(2) {\n flex-basis: 32%;\n padding-bottom: 30px;\n\n @media (max-width: ${breakPoints.desktop}) {\n flex-basis: 34%;\n }\n\n ${Image} {\n background-size: contain;\n\n @media (max-width: ${breakPoints.sDesktop}) {\n background-position: top;\n }\n }\n\n @media (max-width: ${breakPoints.tablet}) {\n display: none;\n }\n }\n`;\n\nexport const CardsBenefits = styled.div`\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap;\n width: 100%;\n column-gap: 24px;\n\n @media (max-width: ${breakPoints.desktop}) {\n column-gap: 22px;\n }\n\n @media (max-width: ${breakPoints.sDesktop}) {\n column-gap: 16px;\n }\n\n @media (max-width: ${breakPoints.tablet}) {\n flex-wrap: wrap;\n gap: 12px;\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n flex-direction: column;\n row-gap: 24px;\n }\n`;\n","import React, { FC } from 'react';\n\nimport { useMatchMedia } from '@r1-frontend/shared/hooks/useMatchMedia';\n\nimport BenefitsCard from '~/src/features/movix-new/BenefitsCard';\nimport Card from '~/src/features/movix-new/Card';\nimport { dataBenefitsBlockOne, dataHdContainer } from '~/src/features/movix-new/data';\nimport { getBenefitsCards } from '~/src/features/movix-new/utils';\n\nimport { Cards } from '~/src/features/movix-new/styled';\nimport * as ST from './styled';\n\nexport enum EMediaWidth {\n tablet = '(max-width: 1023px)',\n mobile = '(max-width: 767px)',\n}\n\nconst MovixBenefits: FC = () => {\n const isMobile = useMatchMedia(EMediaWidth.mobile);\n const isUntilTablet = useMatchMedia(EMediaWidth.tablet);\n\n /**\n * Возвращает компоненты карточек в зависимости от разрешения\n *\n * @function\n * @name renderBenefitsCard\n * @param {boolean} isMobileLayout - условие сортировки блоков в зависимости от разрешения\n * @returns {JSX.Element[] | JSX.Element}\n */\n const renderBenefitsCard = (isMobileLayout: boolean): JSX.Element[] | JSX.Element => {\n const serialNumberCardEconomy = 3;\n return getBenefitsCards(isUntilTablet).map((elem, key) => {\n let conditionOfRender;\n if (isMobileLayout) {\n conditionOfRender = key === serialNumberCardEconomy;\n } else {\n conditionOfRender = key !== serialNumberCardEconomy;\n }\n if (conditionOfRender) {\n return ;\n }\n return <>;\n });\n };\n\n return (\n \n \n

    \n С приставкой Movix ваш телевизор способен на большее\n

    \n
    \n \n {dataBenefitsBlockOne.map((item) => )}\n \n {!isMobile && \n \n \n {dataHdContainer.title}\n \n \n {dataHdContainer.description}\n \n \n }\n {isMobile && <>\n \n {renderBenefitsCard(true)}\n \n \n \n \n \n {renderBenefitsCard(false)}\n \n }\n {!isMobile && \n {getBenefitsCards(isUntilTablet).map((elem) => )}\n }\n
    \n
    );\n};\n\nexport default MovixBenefits;\n","import { css } from 'styled-components';\n\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nimport { breakPoints } from '~/src/constants/breakpoints';\nimport { IContentCardItem } from '~/src/features/movix-new/ContentCard';\n\nconst titleStyles = css`\n @media (max-width: ${breakPoints.tablet}) {\n ${FONTS.H4};\n }\n`;\n\nconst imageStyles = css`\n @media (max-width: ${breakPoints.tablet}) {\n min-height: 88px;\n min-width: 88px;\n max-width: 88px;\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n margin-bottom: 10px;\n }\n`;\n\nconst containerStyles = css`\n @media (max-width: ${breakPoints.tablet}) {\n padding-bottom: 18px;\n }\n`;\n\nexport const CARDS: IContentCardItem[] = [\n {\n title: 'Целый раздел с безопасным детским контентом',\n description: 'Увлекательные ТВ-каналы, любимые коллекции мультфильмов от ведущих мировых студий, ' +\n 'а также подборки о роботах, принцессах, драконах и других героях.',\n img: 'static/images/movix-new/for-kids.png',\n area: 'large',\n imageStyles: css`\n max-height: 165px;\n min-width: 483px;\n border-radius: 0;\n margin-right: 14px;\n\n @media (max-width: ${breakPoints.tablet}) {\n min-width: 302px;\n min-height: 120px;\n margin-right: 12px;\n margin-bottom: 0px;\n\n background-image: url(static/images/movix-new/for-kids-mobile.png);\n background-size: cover;\n\n & img {\n display: none;\n }\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n max-width: 282px;\n min-width: 282px;\n min-height: 112px;\n margin: -40px 0 10px;\n }\n `,\n containerStyles: css`\n height: fit-content;\n\n @media (max-width: ${breakPoints.tablet}) {\n padding-bottom: 8px;\n column-gap: 10px;\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n padding-top: 48px;\n padding-bottom: 21px;\n }\n `,\n titleStyles: css`\n @media (max-width: ${breakPoints.mobile}) {\n ${FONTS.H5};\n }\n `,\n },\n {\n title: 'Дети больше не требуют ваш телефон для игр и мультиков',\n img: 'static/images/movix-new/phone.svg',\n area: 'first',\n titleStyles,\n imageStyles: css`\n margin-right: 42px;\n\n img{\n max-height: 95px;\n }\n\n @media (max-width: ${breakPoints.tablet}) {\n margin-right: 0;\n }\n `,\n containerStyles: css`\n ${containerStyles};\n @media (max-width: ${breakPoints.tablet}) {\n column-gap: 16px;\n }\n `,\n },\n {\n title: 'Мультфильмы на большом экране, а не на дисплее телефона',\n img: 'static/images/movix-new/humansuit.svg',\n area: 'second',\n titleStyles,\n imageStyles: css`\n ${imageStyles};\n margin-right: 42px;\n\n @media (max-width: ${breakPoints.tablet}) {\n margin-right: 0;\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n margin-bottom: 8px;\n }\n `,\n containerStyles,\n },\n];\n","import styled from 'styled-components';\n\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nimport { breakPoints } from '~/src/constants/breakpoints';\nimport { BACKGROUND_COLOR_BLACK } from '~/src/features/movix-new/constants';\n\nimport { Container } from '~/src/features/movix-new/styled';\n\nexport const Wrapper = styled.div`\n position: relative;\n width: 100%;\n background: ${BACKGROUND_COLOR_BLACK};\n z-index: 1;\n margin-top: -1px;\n\n @media (max-width: ${breakPoints.mobile}) {\n :before {\n content: '';\n position: absolute;\n top: -46%;\n left: -207%;\n width: 1595px;\n height: 2100px;\n\n background: radial-gradient(33.01% 38.15% at 50.05% 46.07%, rgba(1, 128, 135, 0.65) 0%, rgba(2, 52, 55, 0) 100%);\n mix-blend-mode: normal;\n opacity: 0.5;\n }\n }\n`;\n\nexport const Background = styled.div`\n width: 100%;\n height: 1172px;\n position: absolute;\n left: 0;\n overflow: hidden;\n`;\n\nexport const CardsWrapper = styled.div`\n display: grid;\n grid-template-columns: 1fr 1fr;\n grid-template-rows: 1fr auto;\n grid-template-areas: 'first second'\n 'large large';\n row-gap: 24px;\n column-gap: 26px;\n width: 100%;\n\n @media (max-width: ${breakPoints.mobile}) {\n grid-template-rows: min-content min-content min-content;\n grid-auto-rows: min-content;\n grid-template-columns: 100%;\n grid-template-areas:\n 'first'\n 'second'\n 'large';\n }\n`;\n\nexport const StyledContainer = styled(Container)`\n position: relative;\n z-index: 2;\n`;\n\nexport const ShieldBackground = styled.div<{ backgroundImg: string }>`\n position: absolute;\n top: 0;\n left: 0;\n z-index: 1;\n display: flex;\n justify-content: center;\n align-items: center;\n max-width: calc(100% - 249px);\n width: 100%;\n height: 100%;\n background-image: url(${props => props.backgroundImg});\n background-position: center;\n background-repeat: no-repeat;\n background-size: 100%;\n\n @media (min-width: 1829px) {\n background-position: left;\n background-size: cover;\n }\n\n @media (min-width: 2300px) {\n background-position: left;\n background-size: cover;\n max-width: calc(100% - 629px);\n }\n\n @media (max-width: ${breakPoints.desktop}) {\n background-position: bottom;\n max-width: 100%;\n }\n\n @media (max-width: ${breakPoints.sDesktop}) {\n background-position: -274px -100px;\n max-width: 100%;\n background-size: 1256px;\n }\n\n @media (max-width: ${breakPoints.tablet}) {\n background-position: -118px -54px;\n background-size: 880px;\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n background-position: top right;\n background-size: 851px;\n top: -70px;\n }\n`;\n\nexport const EnemyShipContainer = styled(Container)`\n position: absolute;\n z-index: 2;\n height: 680px;\n left: calc(50% - 678px);\n\n @media (max-width: ${breakPoints.desktop}) {\n height: 468px;\n left: calc(50% - 613px);\n }\n\n @media (max-width: ${breakPoints.sDesktop}) {\n height: 544px;\n left: calc(50% - 464.5px);\n }\n`;\n\nexport const EnemyShipImage = styled.img.attrs({\n src: 'static/images/movix-new/enemy-ship.svg',\n})`\n position: absolute;\n left: -73px;\n bottom: 0;\n z-index: 2;\n\n @media (max-width: ${breakPoints.desktop}) {\n width: 60px;\n height: 59px;\n left: 80px;\n top: 20px;\n bottom: -40px;\n }\n\n @media (max-width: ${breakPoints.sDesktop}) {\n width: 65px;\n height: 64px;\n left: 20px;\n bottom: 0;\n }\n\n @media (max-width: ${breakPoints.tablet}) {\n display: none;\n }\n`;\n\nexport const TextBlock = styled.div`\n display: flex;\n flex-direction: column;\n max-width: 583px;\n width: 100%;\n margin-bottom: 160px;\n margin-top: 319px;\n\n @media (max-width: ${breakPoints.desktop}) {\n max-width: 548px;\n margin-bottom: 141px;\n margin-top: 211px;\n }\n\n @media (max-width: ${breakPoints.sDesktop}) {\n max-width: 432px;\n margin-bottom: 137px;\n margin-top: 172px;\n }\n\n @media (max-width: ${breakPoints.tablet}) {\n max-width: 387px;\n margin-bottom: 160px;\n margin-top: 126px;\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n max-width: 100%;\n margin-bottom: 27px;\n margin-top: 358px;\n }\n`;\n\nexport const Title = styled.div`\n ${FONTS.H2}\n margin: 8px 0 12px 0;\n color: ${COLORS.TextWhite};\n\n @media (max-width: ${breakPoints.sDesktop}) {\n ${FONTS.H3}\n }\n`;\n\nexport const Description = styled.div`\n ${FONTS.M}\n color: ${COLORS.TextWhite};\n white-space: pre-wrap;\n\n @media (max-width: ${breakPoints.sDesktop}) {\n ${FONTS.XS}\n max-width: 430px;\n }\n\n @media (max-width: ${breakPoints.tablet}) {\n white-space: normal;\n }\n`;\n\nexport const YellowText = styled.div`\n ${FONTS.M}\n color: ${COLORS.TextWhite};\n\n @media (max-width: ${breakPoints.sDesktop}) {\n ${FONTS.XS}\n }\n`;\n","import React, { FC } from 'react';\n\nimport { useWebp } from '@r1-frontend/shared/hooks/useWebp';\n\nimport ContentCard from '~/src/features/movix-new/ContentCard';\nimport { CARDS } from '~/src/features/movix-new/ShieldBlock/data';\nimport { useProgressiveImage } from '~/src/helpers/hooks/useProgressiveImage';\nimport ShieldBackgroundImg from '~/static/images/movix-new/shield-background.png';\nimport ShieldBackgroundWebp from '~/static/images/movix-new/shield-background.webp';\n\nimport * as ST from './styled';\n\nconst ShieldBlock: FC = () => {\n const backgroundImage = useWebp() ? ShieldBackgroundWebp : ShieldBackgroundImg;\n const sourseBackgroundImage = useProgressiveImage(backgroundImage, { timeoutDelay: 1, hasTimeout: true });\n\n return (\n \n \n \n \n \n \n \n \n \n Movix — ваша виртуальная няня\n \n

    \n Вы можете отдохнуть, потому что ваш ребёнок под присмотром\n

    \n
    \n \n {\n 'Просто настройте родительский контроль: поставьте пин-код \\nот ' +\n 'случайных покупок детьми, а также ' +\n 'возрастное ограничение на фильмы и ТВ-каналы, чтобы ребёнок ' +\n 'не увидел лишнего.'\n }\n \n
    \n \n {CARDS.map(item => )}\n \n
    \n
    \n );\n};\n\nexport default ShieldBlock;\n","import React from 'react';\n\nimport * as ST from './styled';\n\nconst VideoServices: React.FC = (): JSX.Element => {\n const imgPathWebServices = '/static/images/movix-new/video-services.png';\n\n return (\n \n \n \n

    \n {'Всё, что вы смотрите — \\n теперь в одной приставке'}\n

    \n
    \n \n {'Не нужно переключаться между приложениями,\\n всё собрано в одном месте.'}\n \n \n
    \n
    \n );\n};\n\nexport default VideoServices;\n","import styled, { css } from 'styled-components';\n\nimport { wideBreakpoints } from '@r1-frontend/ui-react/components/layouts/wideContainer';\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nimport { BACKGROUND_COLOR_BLACK } from '~/src/features/movix-new/constants';\n\nimport { Container } from '~/src/features/movix-new/styled';\n\nexport const Wrapper = styled.div`\n position: relative;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n background: ${BACKGROUND_COLOR_BLACK};\n width: 100%;\n height: fit-content;\n padding-bottom: 94px;\n padding-top: 150px;\n row-gap: 147px;\n margin-top: -1px;\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n row-gap: 220px;\n padding-bottom: 42px;\n padding-top: 356px;\n }\n`;\n\nexport const StyledContainer = styled(Container)`\n z-index: 2;\n`;\n\nexport const CardWrapper = styled.div`\n position: relative;\n width: 100%;\n height: fit-content;\n z-index: 1;\n\n :before {\n content: '';\n position: absolute;\n bottom: calc(50% - 273.5px);\n right: -20px;\n mix-blend-mode: screen;\n width: 594px;\n height: 547px;\n background: url('/static/images/movix-new/light-min.png') no-repeat center center;\n background-size: contain;\n }\n\n @media (max-width: ${wideBreakpoints.sDesktop}) {\n :before {\n display: none;\n }\n }\n`;\n\nexport const Title = styled.div`\n ${FONTS.H2}\n color: ${COLORS.TextWhite};\n text-align: center;\n z-index: 2;\n\n @media (max-width: ${wideBreakpoints.sDesktop}) {\n ${FONTS.H3}\n }\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n span {\n display: block;\n }\n }\n`;\n\nexport const Description = styled.div`\n z-index: 2;\n ${FONTS.M}\n text-align: center;\n color: ${COLORS.TextWhite};\n max-width: 625px;\n margin: 12px 0 32px 0;\n white-space: pre-line;\n\n #afterConnect {\n display: none;\n }\n\n @media (max-width: ${wideBreakpoints.sDesktop}) {\n ${FONTS.S}\n max-width: 556px;\n #afterConnect {\n display: none;\n }\n\n #afterDays {\n display: initial;\n }\n }\n\n @media (max-width: ${wideBreakpoints.tablet}) {\n ${FONTS.XS}\n max-width: 425px;\n\n #afterDays {\n display: none;\n }\n }\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n ${FONTS.XS}\n max-width: 425px;\n\n #afterConnect {\n display: initial;\n }\n }\n`;\n\nexport const ButtonBlock = styled.div`\n z-index: 2;\n max-width: 252px;\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n max-width: 280px;\n }\n`;\n\nexport const TextBlock = styled.div`\n position: relative;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n width: 50%;\n margin: 0 auto;\n max-width: 767px;\n padding: 0 13px;\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n width: 100%;\n }\n`;\n\nexport const Card = styled.div`\n z-index: 2;\n display: flex;\n align-items: center;\n flex-wrap: nowrap;\n justify-content: space-between;\n width: 100%;\n max-height: 213px;\n\n padding: 31px;\n\n :before {\n content: '';\n position: absolute;\n bottom: calc(50% - 273.5px);\n right: 0;\n mix-blend-mode: screen;\n width: 594px;\n height: 547px;\n background-image: url('/static/images/movix-new/light-min.png');\n background-position: center;\n background-repeat: no-repeat;\n background-size: contain;\n }\n\n @media (max-width: ${wideBreakpoints.sDesktop}) {\n padding: 40px 24px 46px 24px;\n\n :before {\n width: 524px;\n height: 482px;\n bottom: calc(50% - 241px);\n right: -14px;\n }\n }\n\n @media (max-width: ${wideBreakpoints.tablet}) {\n padding: 35px;\n\n :before {\n width: 303px;\n height: 279px;\n bottom: calc(50% - 139.5px);\n right: -8px;\n }\n }\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n flex-direction: column-reverse;\n padding: 0;\n\n :before {\n width: 365px;\n height: 336px;\n bottom: calc(50% + 9px);\n right: -41px;\n }\n }\n`;\n\nexport const CardTitle = styled.div`\n ${FONTS.H2}\n color: ${COLORS.TextWhite};\n\n @media (max-width: ${wideBreakpoints.sDesktop}) {\n ${FONTS.H3}\n }\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n text-align: center;\n }\n`;\n\nexport const CardDescription = styled.div`\n color: ${COLORS.TextWhite};\n ${FONTS.M};\n\n @media (max-width: ${wideBreakpoints.sDesktop}) {\n ${FONTS.XS}\n }\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n text-align: center;\n margin-top: 8px;\n }\n`;\n\nexport const BGImage = styled.div<{ position: 'right' | 'left', src: string }>`\n position: absolute;\n top: -118px;\n z-index: 0;\n ${({ position }) => {\n switch (position) {\n case 'right':\n return css`\n right: -790px;\n\n :before {\n content: url('/static/images/movix-new/star-wars-light.png');\n mix-blend-mode: screen;\n position: absolute;\n left: 237px;\n top: 76px;\n }\n `;\n case 'left':\n return css`\n transform: scale(-1, 1);\n left: -790px;\n\n :before {\n content: url('/static/images/movix-new/corparation-light.png');\n mix-blend-mode: screen;\n position: absolute;\n left: 246px;\n top: 46px;\n }\n `;\n }\n }}\n color: ${COLORS.TextWhite};\n width: 1071px;\n height: 582px;\n background: url(${({ src }) => src}) no-repeat center center;\n background-size: contain;\n\n @media (max-width: ${wideBreakpoints.sDesktop}) {\n ${({ position }) => {\n switch (position) {\n case 'right':\n return css`right: -743px;`;\n case 'left':\n return css`left: -743px;`;\n }\n }} @media (max-width: ${wideBreakpoints.tablet}) {\n width: 848px;\n height: 461px;\n ${({ position }) => {\n switch (position) {\n case 'right':\n return css`\n right: -545px;\n\n :before {\n left: 165px;\n top: 4px;\n }\n `;\n case 'left':\n return css`\n left: -545px;\n\n :before {\n left: 187px;\n top: -26px;\n }\n `;\n }\n }}\n }\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n ${({ position }) => position === 'right'\n ? css`display: none;`\n : css`\n top: -375px;\n left: -412px;\n `}\n width: 902px;\n height: 490px;\n\n :before {\n left: 195px;\n top: -9px;\n }\n }\n`;\n\nexport const CardTextBlock = styled(TextBlock)`\n align-items: flex-start;\n margin: 0;\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n margin-top: 60px;\n }\n`;\n\nexport const CircleLight = styled.div`\n position: absolute;\n width: 2436px;\n height: 2436px;\n background: radial-gradient(33.01% 38.15% at 50.05% 46.07%, rgba(15, 80, 240, .59) 0%, rgba(15, 80, 240, 0) 100%);\n mix-blend-mode: normal;\n opacity: 0.35;\n z-index: 1;\n\n @media (max-width: ${wideBreakpoints.sDesktop}) {\n width: 1684px;\n height: 1684px;\n }\n\n @media (max-width: ${wideBreakpoints.tablet}) {\n width: 1684px;\n height: 1684px;\n }\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n width: 1595px;\n height: 2100px;\n background: radial-gradient(33.01% 38.15% at 50.05% 46.07%, rgba(15, 80, 240, .59) 0%, rgba(15, 80, 240, 0) 100%);\n }\n`;\n\nexport const ImageBlock = styled.div`\n width: 50%;\n\n img {\n width: 100%;\n }\n\n @media (max-width: ${wideBreakpoints.mobile}) {\n width: 100%;\n }\n`;\n","import React, { useCallback } from 'react';\n\nimport { IClick } from '~/src/features/movix-new';\nimport { ELABELS } from '~/src/features/movix-new/constants';\nimport { dataLayerPushButton } from '~/src/features/movix-new/utils';\n\nimport { MovixButton } from '~/src/features/movix-new/styled';\nimport * as ST from './styled';\n\ninterface IProps {\n handleClick: (data: IClick) => void,\n}\n\nconst WatchNowPayAfter = ({ handleClick }: IProps): JSX.Element => {\n const handleClickDataLayerWrapper = useCallback(() => {\n handleClick({ label: ELABELS.watchNowPayLater });\n dataLayerPushButton(ELABELS.watchNowPayLater);\n }, []);\n\n return (\n \n \n \n \n

    \n Смотрите сейчас — платите потом\n

    \n
    \n \n Выбирайте удобный для вас период рассрочки: \n на 6, 12, 24 или 36 месяцев. \n Мы привезём, подключим и настроим приставку.\n \n \n \n Подключить в рассрочку\n \n \n \n \n
    \n \n \n \n \n \n Громкие премьеры\n
    \n онлайн-кинотеатров у вас дома\n
    \n \n Более 100 000 фильмов и сериалов в подписках онлайн-кинотеатров.\n \n
    \n \n ivi-start\n \n
    \n
    \n
    \n
    \n );\n};\n\nexport default WatchNowPayAfter;\n","import styled from 'styled-components';\n\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nimport { breakPoints } from '~/src/constants/breakpoints';\n\nexport const Wrapper = styled.div`\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap;\n width: 100%;\n justify-content: space-between;\n margin-top: 142px;\n\n @media (max-width: ${breakPoints.desktop}) {\n margin-top: 53px;\n }\n\n @media (max-width: ${breakPoints.sDesktop}) {\n margin-top: 51px;\n }\n\n @media (max-width: ${breakPoints.tablet}) {\n margin-top: 61px;\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n flex-direction: column-reverse;\n }\n`;\n\nexport const Title = styled.div`\n ${FONTS.H2};\n color: ${COLORS.TextWhite};\n\n @media (max-width: ${breakPoints.sDesktop}) {\n ${FONTS.H3};\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n text-align: center;\n margin: 0 auto;\n ${FONTS.H4};\n }\n`;\n\nexport const Description = styled.div`\n ${FONTS.M};\n color: ${COLORS.TextWhite};\n max-width: 480px;\n\n @media (max-width: ${breakPoints.sDesktop}) {\n ${FONTS.XS};\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n text-align: center;\n margin: auto 14px;\n }\n`;\n\nexport const TextBlock = styled.div`\n display: flex;\n flex-direction: column;\n row-gap: 14px;\n`;\n\nexport const ButtonsBlock = styled.div`\n display: flex;\n column-gap: 27px;\n row-gap: 10px;\n margin-top: 24px;\n\n @media (max-width: ${breakPoints.desktop}) {\n column-gap: 24px;\n }\n\n @media (max-width: ${breakPoints.sDesktop}) {\n column-gap: 17px;\n margin-top: 12px;\n }\n\n @media (max-width: ${breakPoints.tablet}) {\n column-gap: 14px;\n margin-top: 0;\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n justify-content: center;\n column-gap: 20px;\n margin: 0 auto;\n }\n`;\n\nexport const ButtonBlock = styled.div`\n width: auto;\n\n @media (max-width: ${breakPoints.mobile}) {\n width: 100%;\n }\n`;\n\nexport const ImageBlock = styled.div`\n display: flex;\n flex-direction: column-reverse;\n max-width: 653px;\n max-height: 362px;\n width: 100%;\n height: 100%;\n\n @media (max-width: ${breakPoints.desktop}) {\n max-width: 587px;\n }\n\n @media (max-width: ${breakPoints.sDesktop}) {\n max-width: 448px;\n }\n\n @media (max-width: ${breakPoints.tablet}) {\n max-width: 334px;\n margin-bottom: 30px;\n }\n`;\n\nexport const TvImage = styled.img.attrs({\n src: 'static/images/movix-new/tv-notebook-tablet-mobile.png',\n})`\n width: 100%;\n`;\n","import React from 'react';\n\nimport { MovixButton } from '~/src/features/movix-new/styled';\nimport * as ST from './styled';\n\nconst WatchWithFamily = (): JSX.Element => {\n return (\n \n \n \n

    \n Смотрите всей семьёй\n
    \n там, где вам удобно\n

    \n
    \n \n С бесплатным приложением Movix для iOS, Android, \n Smart TV или при регистрации на movix.ru\n \n \n \n \n \n Скачать для Android\n \n \n \n \n \n \n Скачать для iOS\n \n \n \n \n
    \n \n \n \n
    \n );\n};\n\nexport default WatchWithFamily;\n","export const BLOCKS = [\n {\n title: 'Поддержка 24/7',\n description: (\n <>\n Мы на связи круглосуточно. Наши инженеры помогут\n с подключением приставки и научат ей пользоваться.\n \n ),\n },\n {\n title: 'Movix всегда с вами ',\n description: (\n <>\n Приставка будет работать с любым интернет-провайдером,\n даже при переезде или поездке на дачу.\n \n ),\n },\n];\n","import styled from 'styled-components';\n\nimport { COLORS } from '@r1-frontend/ui-react/tokens/colors';\nimport { FONTS } from '@r1-frontend/ui-react/tokens/fonts';\n\nimport { breakPoints } from '~/src/constants/breakpoints';\n\nexport const BlocksContainer = styled.div`\n display: flex;\n flex-wrap: nowrap;\n gap: 24px;\n width: 100%;\n margin-top: 48px;\n\n @media (max-width: ${breakPoints.mobile}) {\n flex-direction: column;\n }\n`;\n\nexport const Block = styled.div`\n display: flex;\n flex-direction: column;\n row-gap: 8px;\n background: ${COLORS.BgMain}0D;\n border-radius: 24px;\n padding: 28px 38px 31px 38px;\n width: 100%;\n\n @media (max-width: ${breakPoints.tablet}) {\n padding: 14px 19px 20px 19px;\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n padding: 32px 6px 27px 6px;\n align-items: center;\n row-gap: 12px;\n }\n`;\n\nexport const Title = styled.div`\n ${FONTS.H3};\n color: ${COLORS.TextWhite};\n\n @media (max-width: ${breakPoints.sDesktop}) {\n ${FONTS.H4};\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n ${FONTS.H3};\n text-align: center;\n }\n`;\n\nexport const Description = styled.div`\n ${FONTS.S};\n color: ${COLORS.TextWhite};\n\n @media (max-width: ${breakPoints.sDesktop}) {\n ${FONTS.XS};\n }\n\n @media (max-width: ${breakPoints.tablet}) {\n ${FONTS.XXS};\n }\n\n @media (max-width: ${breakPoints.mobile}) {\n ${FONTS.XS};\n text-align: center;\n }\n`;\n","import React, { FC } from 'react';\n\nimport { BLOCKS } from '~/src/features/movix-new/BlocksAbout/data';\n\nimport * as ST from './styled';\n\nconst BlocksAbout: FC = () => {\n return (\n \n {BLOCKS.map(({ title, description }) => (\n \n {title}\n {description}\n \n ))}\n \n );\n};\n\nexport default BlocksAbout;\n","import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport dynamic from 'next/dynamic';\nimport { css } from 'styled-components';\n\nimport { EResultPopupStatus } from '@r1-frontend/ui-react/components/popups/popupResult';\nimport { useWebp } from '@r1-frontend/shared/hooks/useWebp';\n\nimport { IShopItem } from '~/src/api/content/shop/getShopItems';\nimport { breakPoints } from '~/src/constants/breakpoints';\nimport { getPriceOptions } from '~/src/entities/equipment';\nimport { convertShopPrices } from '~/src/entities/price';\nimport { IBundle } from '~/src/entities/tariff';\nimport Card from '~/src/features/movix-new/Card';\nimport ConnectionInfo from '~/src/features/movix-new/ConnectionInfo';\nimport { ELABELS } from '~/src/features/movix-new/constants';\nimport { CARDS, TextInfo } from '~/src/features/movix-new/data';\nimport FilmsBlock from '~/src/features/movix-new/FilmsBlock';\nimport Header from '~/src/features/movix-new/Header';\nimport MovixBenefits from '~/src/features/movix-new/MovixBenefits';\nimport Popup, { EEquipmentType, IPopupProps } from '~/src/features/movix-new/Popup';\nimport ShieldBlock from '~/src/features/movix-new/ShieldBlock';\nimport { getBenefitsCards } from '~/src/features/movix-new/utils';\nimport VideoServices from '~/src/features/movix-new/VideoServices';\nimport WatchNowPayAfter from '~/src/features/movix-new/WatchNowPayAfter';\nimport WatchWithFamily from '~/src/features/movix-new/WatchWithFamily';\nimport { useProgressiveImage } from '~/src/helpers/hooks/useProgressiveImage';\nimport TvBorderImg from '~/static/images/movix-new/tv-border.png';\nimport TvBorderWebp from '~/static/images/movix-new/tv-border.webp';\n\nimport BlocksAbout from './BlocksAbout';\n\nimport * as ST from './styled';\n\nconst VideoBlock = dynamic(() => import('~/src/features/movix-new/VideoBlock'));\n\ninterface IProps {\n cardsInfo: IShopItem[],\n zasmotrisInfo: IBundle[],\n}\n\nexport interface IClick {\n textButton?: string,\n leasingDuration?: number,\n salePackageId?: number,\n costType?: number,\n label: ELABELS,\n}\n\nconst INDEX_MOVIX = 1;\n\nconst MovixnewLanding: React.FC = ({ cardsInfo }) => {\n const [readyPlayVideo, setPlayVideoStatus] = useState(false);\n\n const backgroundImage = useWebp() ? TvBorderWebp : TvBorderImg;\n const sourseBackgroundImage = useProgressiveImage(backgroundImage, { timeoutDelay: 1, hasTimeout: true });\n\n const onUnloadHandler = () => {\n setPlayVideoStatus(true);\n };\n\n useEffect(() => {\n window.addEventListener('load', onUnloadHandler);\n return () => {\n window.removeEventListener('load', onUnloadHandler);\n };\n }, []);\n\n const containerContentRef = useRef(null);\n const [textButton, setTextButton] = useState('');\n const [label, setLabel] = useState('');\n\n const [popup, setPopup] = useState({\n isOrderOpened: false,\n isResultOpened: false,\n resultTitle: '',\n resultText: '',\n resultType: EResultPopupStatus.SUCCESS,\n leasingDuration: undefined,\n salePackageId: undefined,\n costType: EEquipmentType.loan,\n });\n const [isLoading, setIsLoading] = useState(false);\n const handleClick = useCallback((data: IClick) => {\n setTextButton(data?.textButton || '');\n setLabel(data.label);\n setPopup(state => ({\n ...state,\n leasingDuration: data?.leasingDuration || popup.leasingDuration,\n salePackageId: data?.salePackageId || popup.salePackageId,\n costType: data?.costType || popup.costType,\n isOrderOpened: true,\n }));\n }, []);\n\n getBenefitsCards(true);\n return (\n \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n

    \n Подключить просто, использовать — ещё проще\n

    \n \n \n
    \n
    \n \n \n \n

    \n Варианты покупки приставки Movix\n

    \n
    \n \n {CARDS.map((item, i) => (\n \n ))}\n \n \n \n {TextInfo}\n
    \n
    \n \n {isLoading && }\n \n );\n};\n\nexport default MovixnewLanding;\n","import React from 'react';\nimport { NextPage } from 'next';\n\nimport { tariffs } from '@r1-frontend/api-domru/api-content/v1/cities/tariffs';\nimport {\n TResponseDto as TTariffsResponseDto,\n} from '@r1-frontend/api-domru/api-content/v1/cities/tariffs/dto/ResponseDto';\nimport { domofonAction } from '@r1-frontend/api-domru/api-content/v1/domofon-action';\nimport {\n TResponseDto as TDomofonActionResponseDto,\n} from '@r1-frontend/api-domru/api-content/v1/domofon-action/dto/ResponseDto';\n\nimport { EExpandShopItems, EShopCategory, getShopItems, IShopItem } from '~/src/api/content/shop/getShopItems';\nimport { IBundle } from '~/src/entities/tariff';\nimport Layout from '~/src/features/_layout';\nimport MovixnewLanding from '~/src/features/movix-new';\nimport { getPageDataSeo } from '~/src/features/movix-new/utils';\nimport { prepareTariffsZasmotris } from '~/src/features/movix-new/utils/prepareTariffsZasmotris';\nimport { initialProps } from '~/src/helpers/basePageFunc';\nimport { getCookie } from '~/src/helpers/cookie';\nimport getRequester from '~/src/helpers/getRequester';\nimport { saveIntercomAction } from '~/src/store/actions/intercom';\nimport selectProviderId from '~/src/store/selectors/selectProviderId';\n\ninterface IProps {\n pageDataSeo: ReturnType,\n cardsInfo: IShopItem[],\n zasmotrisInfo: IBundle[],\n}\n\nconst MovixLandingPage: NextPage = ({ pageDataSeo, cardsInfo, zasmotrisInfo }) => {\n return (\n \n \n \n );\n};\n\nMovixLandingPage.getInitialProps = async(options) => {\n const { validatedAccessToken } = await initialProps(options, { isNeedAuthData: true });\n const { req, store } = options;\n\n const state = store.getState();\n const {\n city: {\n currentCity,\n },\n } = state;\n\n const providerId = Number(getCookie('providerId', req) || selectProviderId(state));\n\n const pageDataSeo = getPageDataSeo(currentCity);\n\n const doRequest = getRequester(options.req);\n\n const [domofonActionResponse, tariffsResponse, cardsInfo] = await Promise.all([\n doRequest.apiContent(domofonAction()),\n doRequest.apiContent({\n ...tariffs({ providerId }),\n withProvider: false,\n }),\n getShopItems(\n providerId,\n validatedAccessToken,\n EShopCategory.Decoders,\n [\n EExpandShopItems.Category,\n EExpandShopItems.Labels,\n EExpandShopItems.Props,\n ],\n { 'filter[eq]': 'tv-pristavka-movix-model-2021' },\n ),\n ]);\n\n if (domofonActionResponse.isSuccess) {\n store.dispatch(saveIntercomAction(domofonActionResponse.payload.items[0]));\n }\n\n const zasmotrisInfo = tariffsResponse?.isSuccess\n ? prepareTariffsZasmotris(tariffsResponse.payload.bundles)\n : [];\n\n return ({\n pageDataSeo,\n cardsInfo,\n zasmotrisInfo,\n });\n};\n\nexport default MovixLandingPage;\n","export const prepareTariffsZasmotris = (bundles) => {\n return Object.values(bundles).filter(tariff => {\n const alias = tariff?.description?.alias;\n return alias.includes('zasmotris') || alias.includes('zasmotris-light');\n });\n};\n\n","import { captureException } from '@sentry/node';\nimport { stringify } from 'qs';\n\nimport { EPriceTypes } from '@r1-frontend/shared/types/EPriceTypes';\n\nimport { IShopCategory } from '~/src/api/content/shop/getShopCategories';\nimport contentRequest from '~/src/api/requests/contentRequest';\nimport { IPartnerVasContents } from '~/src/components/Promo/popups/PartnerPopup/types';\nimport { getAccessModeByRights } from '~/src/helpers/accessMode';\nimport { retryIfParamIsLocked } from '~/src/helpers/functions';\n\n// @todo All types must be in api-domru package, now collected at frontend/packages/api-domru/src/api-content/common-types/shop-item.types.ts\n// @deprecated use @r1-frontend/shared/types\nexport enum EShopCategory {\n Antiviruses = 'antiviruses',\n SpeedBonuses = 'speed-bonuses',\n Routers = 'routers',\n Intercom = 'intercom',\n Sale = 'special-offers',\n PartnerServices = 'partner-service-with-phone-check',\n Decoders = 'decoders',\n BonusToAll = 'bonus-to-all',\n YandexStation = 'yandex-stanciya',\n YandexStationLite = 'yandex-stanciya-lite',\n SafeKids = 'safe-kids',\n LoyaltyProgram = 'loyalty-program',\n Products = 'products',\n Subscriptions = 'subscriptions',\n Multibundle = 'multibundle',\n Videocontrol = 'videocontrol',\n PrivateSectorEquipment = 'private-sector-equipment',\n}\n\nexport enum EExpandShopItems {\n Advertising = 'advertising',\n Category = 'category',\n Props = 'props',\n Labels = 'labels',\n CategoryProps = 'category.props',\n}\n\ninterface IFilter {\n [key: string]: string | number,\n}\n\nexport interface IShopLabel {\n id: number,\n name: string,\n title: string,\n color: string,\n color_text: string,\n}\n\nexport interface IShopProp {\n name: string,\n title: string,\n type: string,\n value?: string | string[],\n computedValue?: string,\n asIs?: number,\n}\n\nexport interface ICostRa {\n dur_type_id: number,\n duration: number,\n flag_ra: number,\n cost: number,\n}\n\nexport interface IShopPriceOptions {\n label: string,\n price: number,\n pricePromo?: number,\n type: EPriceTypes.Possess | EPriceTypes.Leasing,\n operType: string,\n}\n\nexport interface IShopPriceV2 {\n sort: number,\n type: number,\n date_close_promo: string | null,\n duration: number | null,\n id: number,\n lifetime_price: number | null,\n owner_id: number,\n price_type: string,\n value: number,\n}\n\nexport interface IUrl {\n id: number,\n manual: number,\n name: string,\n owner_id: number,\n type: string,\n url: string,\n}\n\nexport interface IAdvertising {\n companyName: string,\n erid: string,\n}\n\nexport interface IShopItem {\n advertising: IAdvertising | null,\n alias: string,\n body: string,\n body_full: string,\n button_link: string,\n button_text: string,\n category_id: number,\n exists: boolean,\n extra: unknown[],\n global_id: number,\n id: number,\n image: string,\n image_webp?: string,\n images: string[],\n costRa: ICostRa[],\n // 0 или 1\n is_sale: number,\n prices: IShopItemPrices,\n pricesV2: IShopPriceV2[],\n pricesPromo: IShopItemPrices,\n sort: null | number,\n title: string,\n title_short?: string,\n labels?: IShopLabel[],\n category?: IShopCategory,\n image_widgets?: string,\n image_widgets_webp?: string,\n image_widgets_background?: string,\n image_background?: string,\n image_background_webp?: string,\n image_for_tariff_card: string,\n image_for_tariff_card_webp?: string,\n image_for_tariff_card_height: number,\n image_for_tariff_card_width: number,\n props?: IShopProp[],\n priceOptions?: IShopPriceOptions[],\n partnerVasContents?: IPartnerVasContents,\n image_width?: number,\n image_height?: number,\n leftovers: number | null,\n showForDelivery?: 0 | 1 | null,\n checkProductId?: number,\n name: string,\n urls?: IUrl[],\n isCreditAvailable?: number,\n}\n\ninterface IShopItemParams {\n all: boolean,\n expand?: string | undefined,\n filter?: IFilter | undefined,\n category?: EShopCategory | string | null,\n accessMode?: number,\n providerId: number,\n}\n\ninterface IMonth {\n value: number,\n lifetime_price: number,\n}\n\ninterface IRent {\n month: IMonth | null,\n year: number | null,\n}\n\nexport interface IShopItemPrices {\n leasing?: ILeasing[],\n possess?: number,\n rent?: IRent,\n}\n\nexport interface ILeasing {\n price: number,\n duration: number,\n}\n/**\n * @deprecated use api-domru/src/api-content/v2/shop/items/index.ts\n */\n\nexport async function getShopItems(\n providerId: number,\n token: string | null,\n category: EShopCategory | string | null,\n expand?: EExpandShopItems[],\n filter?: IFilter | null,\n isShowAll = false,\n): Promise {\n\n const params: IShopItemParams = {\n providerId,\n ...filter,\n expand: prepareExpandProp(expand),\n all: isShowAll,\n };\n\n const headers: Record = token\n ? { Authorization: `Bearer ${token}` }\n : {};\n\n if (providerId) {\n params.providerId = providerId;\n }\n\n if (category) {\n params.category = category;\n }\n\n params.accessMode = getAccessModeByRights({\n isAuth: Boolean(token),\n });\n\n const url = '/v1/shop/items';\n\n try {\n const resp = await retryIfParamIsLocked(\n () => contentRequest.get(url, {\n headers,\n params,\n paramsSerializer: (params: IShopItemParams) => {\n return stringify(params);\n },\n }),\n );\n\n return resp.data.items;\n\n } catch (e) {\n captureException(e);\n return [];\n }\n}\n\nexport async function getBonusToAll(\n providerId: number,\n token: string | null,\n expand?: EExpandShopItems[],\n filter?: IFilter,\n): Promise {\n\n let expandDefault = [EExpandShopItems.Category];\n if (expand) {\n expandDefault = [...expandDefault, ...expand];\n }\n return await getShopItems(providerId, token, EShopCategory.BonusToAll, expandDefault, filter);\n}\n\nfunction prepareExpandProp(expands: EExpandShopItems[] | undefined): string | undefined {\n if (expands && expands.length) {\n return expands.join(',');\n }\n return undefined;\n}\n\nexport async function getRouters(providerId: number, token: string | null): Promise {\n return getShopItems(\n providerId,\n token,\n EShopCategory.Routers,\n [EExpandShopItems.Category, EExpandShopItems.Props, EExpandShopItems.Labels],\n );\n}\n\n// eslint-disable-next-line no-undef\nexport async function getIntercomServices(providerId: number, token: string): Promise {\n return getShopItems(\n providerId,\n token,\n EShopCategory.Intercom,\n [EExpandShopItems.Category, EExpandShopItems.Props, EExpandShopItems.Labels],\n );\n}\n\nexport async function getVideocontrolItems(providerId: number, token: string): Promise {\n return getShopItems(\n providerId,\n token,\n EShopCategory.Videocontrol,\n [EExpandShopItems.Category, EExpandShopItems.Props],\n );\n}\n","import { isServerSide } from '@r1-frontend/shared/helpers/ssr';\nimport axios from 'axios';\nimport { stringify } from 'qs';\nimport cookies from 'react-cookies';\n\nimport { ACCESS_TOKEN_COOKIE, NO_CACHE_COOKIE } from '~/src/constants';\n\n/**\n * Запрос в ApiContent\n */\nconst axiosContent = axios.create({\n baseURL: isServerSide()\n ? process.env.NEXT_PUBLIC_HOST_API_CONTENT_INNER || process.env.NEXT_PUBLIC_HOST_API_CONTENT\n : process.env.NEXT_PUBLIC_HOST_API_CONTENT,\n});\n\naxiosContent.interceptors.request.use(\n (config) => {\n const token = cookies.load(ACCESS_TOKEN_COOKIE);\n const noCacheKey = cookies.load(NO_CACHE_COOKIE);\n\n const headers = {\n 'X-Requested-With': 'XMLHttpRequest',\n };\n\n if (!config.headers['Authorization'] && token) {\n headers['Authorization'] = `Bearer ${ token }`;\n }\n\n if (noCacheKey) {\n headers['no-cache-key'] = noCacheKey;\n }\n config.headers = { ...config.headers, ...headers };\n\n return config;\n },\n (error) => Promise.reject(error),\n);\n\n/**\n * @deprecated\n * @type {AxiosInstance}\n */\nconst contentRequest = Object.create(axiosContent);\n\ncontentRequest.get = async(url, options) => {\n if (options) {\n options.paramsSerializer = params => {\n return stringify(params);\n };\n }\n return axiosContent.get(url, options);\n};\nexport default contentRequest;\n","import { getPluralize } from '@r1-frontend/shared/helpers/pluralize';\nimport { monthPluralize } from '@r1-frontend/shared/helpers/pluralize/predifined';\nimport { EPriceTypes } from '@r1-frontend/shared/types/EPriceTypes';\n\nimport { EPriceOperationTypes } from '~/src/entities/price';\nimport { sortFunction } from '~/src/helpers/functions';\n\nexport const convertDevicePrices = (device) => {\n if (!device) {\n return [];\n }\n\n const {\n posessPrice,\n posess_price,\n promo,\n leasing,\n leasingDuration,\n leasingPrice,\n leasing_dur,\n leasing_mon_price,\n leasingDurationSec,\n leasingPriceSec,\n leasing_dur_two,\n leasing_mon_price_two,\n prices,\n } = device;\n\n const convertedPrices = [];\n\n if (Array.isArray(prices) && prices.length > 0) {\n prices.filter(item => item.type === EPriceTypes.Possess)\n .forEach(item => {\n convertedPrices.push({\n type: EPriceTypes.Possess,\n value: item.value,\n valuePromo: promo,\n });\n });\n\n prices.filter(item => item.type === EPriceTypes.Leasing)\n .forEach(item => {\n convertedPrices.push({\n type: EPriceTypes.Leasing,\n value: item.value,\n duration: item.duration,\n });\n });\n } else {\n if (posessPrice || posess_price) {\n convertedPrices.push({\n type: EPriceTypes.Possess,\n value: posessPrice || posess_price,\n valuePromo: promo,\n });\n }\n\n if (Array.isArray(leasing)) {\n leasing.forEach(leasingPriceItem => {\n convertedPrices.push({\n type: EPriceTypes.Leasing,\n value: leasingPriceItem.price,\n duration: leasingPriceItem.duration,\n });\n });\n } else {\n if (leasingDuration && leasingPrice || leasing_dur && leasing_mon_price) {\n convertedPrices.push({\n type: EPriceTypes.Leasing,\n value: leasingPrice || leasing_mon_price,\n duration: leasingDuration || leasing_dur,\n });\n }\n\n if (leasingDurationSec && leasingPriceSec || leasing_dur_two && leasing_mon_price_two) {\n convertedPrices.push({\n type: EPriceTypes.Leasing,\n value: leasingPriceSec || leasing_mon_price_two,\n duration: leasingDurationSec || leasing_dur_two,\n });\n }\n }\n }\n\n return convertedPrices;\n};\n\n/**\n *\n * @param {(import('~/src/entities/price').Price | import('~/src/entities/price').IPriceProps)[] prices}\n * @param {string | null} [domain]\n * @param {boolean} [longLabel]\n * @param {(a: any, b: any) => number} [sort]\n */\nexport const getPriceOptions = (\n prices,\n domain,\n longLabel = false,\n sort = sortFunction,\n) => {\n const options = [];\n let hasNonEmptySortField = false;\n const pluralizeMonths = getPluralize(monthPluralize);\n\n prices\n .filter(item => item.type === EPriceTypes.Leasing)\n .forEach(item => {\n options.push({\n id: item.id,\n value: item.duration,\n label: longLabel\n ? `В рассрочку на ${item.duration} ${pluralizeMonths(item.duration)} - ${item.value} ₽/мес.`\n : `Рассрочка на ${item.duration} мес.`,\n price: item.value,\n pricePromo: item.valuePromo,\n type: EPriceTypes.Leasing,\n operType: EPriceOperationTypes.Leasing,\n sort: item.sort,\n requestId: item.requestId,\n });\n\n if (item.sort) {\n hasNonEmptySortField = true;\n }\n });\n\n prices\n .filter(item => item.type === EPriceTypes.Possess)\n .forEach(item => {\n const priceItem = {\n id: item.id,\n value: 0,\n label: 'Покупка',\n price: item.value,\n pricePromo: item.valuePromo,\n type: EPriceTypes.Possess,\n operType: EPriceOperationTypes.Possess,\n sort: item.sort,\n requestId: item.requestId,\n };\n\n if (item.sort) {\n hasNonEmptySortField = true;\n }\n\n if ('ekat' === domain) {\n options.unshift(priceItem);\n } else {\n options.push(priceItem);\n }\n });\n\n if (hasNonEmptySortField) {\n options.sort(sort);\n }\n\n return options;\n};\n","import { EPriceTypes } from '@r1-frontend/shared/types/EPriceTypes';\n\nimport { sortFunction } from '~/src/helpers/functions';\n\nexport enum EPriceOperationTypes {\n Possess = 'possess',\n Leasing = 'leasing',\n TestDrive = 'test-drive',\n Credit = 'credit',\n}\n\nexport enum EPriceBuyTypes {\n Sale = 'sale',\n Leasing = 'leasing',\n}\n\nexport interface IPriceProps {\n id?: number,\n type: EPriceTypes,\n value: number,\n valuePromo?: number,\n duration?: number,\n sort?: number,\n requestId?: number,\n}\n\nexport interface IPrice extends IPriceProps {\n periodText: string,\n label: string,\n buyType: EPriceBuyTypes,\n getValue: () => number,\n}\n\nexport interface IPriceOptionProps extends Omit {\n value?: IPrice['duration'],\n price: IPrice['value'],\n pricePromo?: IPrice['valuePromo'],\n operType: EPriceOperationTypes,\n}\n\nexport interface IPriceShopDefault {\n price: number,\n duration: number,\n}\n\nexport interface IPriceShopCustom {\n date_close_promo: string,\n duration: number,\n lifetime_price: null,\n value: number,\n}\n\nexport class Price implements IPrice {\n id;\n type;\n value;\n valuePromo;\n duration;\n sort;\n requestId;\n periodText;\n label;\n buyType;\n name: string | null | undefined;\n\n constructor(props: IPriceProps) {\n this.id = props.id,\n this.type = props.type;\n this.value = props.value;\n this.valuePromo = props.valuePromo;\n this.duration = Number(props.duration);\n this.sort = props.sort;\n this.requestId = props.requestId;\n\n this.label = this.type === EPriceTypes.Leasing\n ? `Рассрочка (${this.duration} мес.)`\n : 'Покупка';\n\n this.periodText = this.type === EPriceTypes.Leasing\n ? 'в мес.'\n : '';\n\n this.buyType = this.type === EPriceTypes.Leasing\n ? EPriceBuyTypes.Leasing\n : EPriceBuyTypes.Sale;\n }\n\n getValue(): number {\n return this.valuePromo || this.value;\n }\n}\n\nexport function convertShopPrices(item: any): Price[] {\n if (!item) {\n return [];\n }\n\n return item.pricesV2 && item.pricesV2.length\n ? convertShopPricesV2(item)\n : convertShopPricesV1(item);\n}\n\nfunction convertShopPricesV1(item: any): Price[] {\n const prices = [];\n\n const pricesLeasing = new Map(\n item.prices?.leasing.map((price: IPriceShopDefault) => [price.duration, price]),\n );\n\n const pricesLeasingPromo = new Map(\n item.pricesPromo?.leasing?.map((price: IPriceShopCustom) => [price.duration, price]),\n );\n\n for (const [duration, price] of pricesLeasing) {\n prices.push(new Price({\n type: EPriceTypes.Leasing,\n value: price.price,\n valuePromo: pricesLeasingPromo?.get(duration)?.value,\n duration: price.duration,\n }));\n }\n\n if (item.prices?.possess) {\n prices.push(new Price({\n type: EPriceTypes.Possess,\n value: item.prices.possess,\n valuePromo: item.pricesPromo?.possess?.value,\n }));\n }\n\n return prices;\n}\n\nfunction convertShopPricesV2(item: any): Price[] {\n const prices = [];\n\n const pricesLeasingPromo = new Map(\n item.pricesPromo?.leasing?.map((price: IPriceShopCustom) => [price.duration, price]),\n );\n\n item.pricesV2.sort(sortFunction);\n\n for (const priceElement of item.pricesV2) {\n prices.push(new Price({\n ...priceElement,\n valuePromo:\n priceElement?.promoValue ||\n (priceElement?.duration\n ? pricesLeasingPromo?.get(priceElement.duration)?.value\n : item.pricesPromo?.possess?.value),\n }));\n }\n\n return prices;\n}\n\ninterface IGetWithConvertedPricesProps {\n prices: IPriceProps[],\n}\n\n// Фундоментальная функция, все объекты/массивы объектов нужно прогонять через неё\nexport function getWithConvertedPrices(\n elementOrArray: Array | IGetWithConvertedPricesProps,\n): Array | IGetWithConvertedPricesProps {\n if (!elementOrArray) {\n return elementOrArray;\n }\n\n return Array.isArray(elementOrArray)\n ? elementOrArray.map(element => {\n element.prices = element.prices.map((price: IPriceProps) => new Price(price)).sort(sortFunction);\n return element;\n })\n : (elementOrArray.prices = elementOrArray.prices.map((price: IPriceProps) => new Price(price)).sort(sortFunction)) &&\n elementOrArray;\n}\n","/**\n * Ширина фиксированной плашки хедера\n *\n * @name constants.BAR_WIDTH\n * @type {number}\n */\nexport const BAR_WIDTH = 54;\n\n/**\n * Позиция фиксированного элемнта (плашки)\n *\n * @name constants.BOUNDING_RECT_FIXED\n * @type {number}\n */\nexport const BOUNDING_RECT_FIXED = 100;\n\n/**\n * @name constants.ZERO\n * @type {number}\n */\nexport const ZERO = 0;\n\n/**\n * @name constants.BACKGROUND_COLOR_BLACK\n * @type {string}\n */\nexport const BACKGROUND_COLOR_BLACK = '#101125';\n\n/**\n * @name constants.GREY_TEXT_COLOR\n * @type {string}\n */\nexport const GREY_TEXT_COLOR = '#929292';\n\n/**\n * @name constants.LABELS\n * @type {enum}\n */\nexport enum ELABELS {\n header = 'header',\n firstScreen = 'first screen',\n watchNowPayLater = 'watch now pay later',\n tariff = 'tariff',\n testDrive = 'test drive',\n buy = 'buy',\n}\n","import { ICardBenefits } from '~/src/features/movix-new/BenefitsCard';\n\nimport { ICardItem } from './Card';\n\nlet globalId = 0;\n\nexport const CARDS: ICardItem[] = [\n {\n title: <>Кeшбэк при покупке
    ТВ-приставки Movix,\n description: <>Получите 4 490 рублей баллами.
    Тратьте их на фильмы, сериалы и пакеты телеканалов.,\n buttonText: 'Подключить',\n img: 'static/images/movix-new/cashback.jpg',\n id: globalId++,\n notAllowButtonText: true,\n isBigImage: true,\n },\n {\n title: <>Купить в рассрочку
    или за полную стоимость,\n description: 'Подключите и смотрите на телевизоре более 190 ТВ-каналов, более 100 000 фильмов и сериалов, ' +\n 'выходите в интернет, управляйте приставкой голосом.',\n buttonText: 'Купить приставку',\n img: 'static/images/movix-new/installment.jpg',\n fullPrice: '4 490 ₽',\n id: globalId++,\n isBigImage: true,\n },\n];\n\nexport const dataHdContainer: ICardItem = {\n title: 'Высокое качество изображения',\n description: <>Смотрите фильмы такими, какими их задумывал режиссер:
    с кристально чёткой картинкой и идеальным звуком.,\n img: 'static/images/movix-new/ultra-hd-mini-m.png',\n isBigImage: true,\n id: globalId++,\n};\n\nexport const dataBenefitsBlockThree: ICardBenefits[] = [\n {\n title: <>Управляйте
    просмотром каналов,\n description: 'Ставьте на паузу или перемотайте \\nназад и пересмотрите тот самый гол \\nпрямо во время трансляции.',\n img: 'static/images/movix-new/remotes-tv.png',\n id: globalId++,\n bgPosition: 'bottom',\n textAlign: 'flex-start',\n orderMobile: 2,\n bgSizeMobile: '40%',\n bgSize: '50%',\n },\n {\n title: 'Архив всех передач',\n description: 'Пропустили любимую передачу — \\nпосмотрите её позже. Архив доступен \\nещё 7 дней после эфира.',\n img: 'static/images/movix-new/channels-tv.png',\n id: globalId++,\n textAlign: 'flex-end',\n orderMobile: 3,\n bgSizeMobile: 'cover',\n bgSize: 'cover',\n },\n {\n title: 'Пропускайте рекламу',\n description: 'Смотрите фильмы и передачи из \\nтелеархива без рекламы.',\n img: 'static/images/movix-new/rewind.png',\n id: globalId++,\n bgPosition: '50% 100%',\n textAlign: 'flex-start',\n orderMobile: 4,\n bgSize: '75%',\n bgSizeMobile: '75%',\n },\n];\n\nexport const dataBenefitsBlockOne: [ICardItem, ICardBenefits] = [\n {\n title: 'Все ваши подписки на онлайн-кинотеатры \\nв одном аккаунте',\n description: <>Теперь все платежи под контролем и оплачиваются с одного счёта —
    \n в едином аккаунте вы легко можете управлять подписками на онлайн-кинотеатры.,\n img: 'static/images/movix-new/gamer.png',\n isBigImage: true,\n id: globalId++,\n },\n {\n title: 'Для экономных',\n description: 'Покупая приставку Movix, вы получаете все возможности современного Smart TV, но значительно дешевле.',\n img: 'static/images/movix-new/discount.png',\n id: globalId++,\n textAlign: 'flex-end',\n orderMobile: 1,\n bgPosition: '0 8px',\n bgSizeMobile: 'contain',\n },\n];\n\nexport const TextInfo = 'Предложение о приобретении приставки в рассрочку — по акции «Приставка в собственность» ' +\n 'для абонентов услуги «Цифровое кабельное телевидение «Дом.ru TV. Центр домашних развлечений» ' +\n 'при приобретении приставки с 14.03.2020 по 31.12.2023. Подключение АО «ЭР-Телеком Холдинг» ' +\n 'при наличии технической возможности. Подробности на dom.ru';\n\nexport const PopupTexts = {\n title: 'Оформление заявки ',\n subtitle: 'Оставьте заявку. Мы перезвоним в ближайшее время, ответим на ваши вопросы и поможем оформить заказ.',\n};\n","import { RefObject } from 'react';\n\nimport { ICurrentCity } from '@r1-frontend/entities/City/models/ICurrentCity';\n\nimport { dataLayerPush } from '@r1-frontend/analytics/dataLayerPush';\n\nimport { ACTIONS, CATEGORIES, EVENTS } from '@r1-frontend/shared/constants/analytics';\n\nimport { IBundle } from '~/src/entities/tariff';\nimport { ICardBenefits } from '~/src/features/movix-new/BenefitsCard';\nimport { BAR_WIDTH, BOUNDING_RECT_FIXED, ELABELS, ZERO } from '~/src/features/movix-new/constants';\nimport { dataBenefitsBlockOne, dataBenefitsBlockThree } from '~/src/features/movix-new/data';\n\ninterface ISeoPageData {\n title: string,\n description: string,\n}\n\nexport interface IZasmotrisData {\n price: number,\n afterPrice: number,\n salePackageId: number,\n}\n\n/**\n * Возвращает SEO-данные\n *\n * @function\n * @name utils.getPageDataSeo\n * @param {ICurrentCity} city - данные о городе и тп.\n * @returns {ISeoPageData}\n */\nexport const getPageDataSeo = (city: ICurrentCity): ISeoPageData => {\n return {\n title: `Купить ТВ-приставку Movix от Дом.ру в ${city.cityIn} | Андроид приставка для телевизора`,\n description:\n 'Провайдер Дом.ру предлагает получить ТВ-приставку Movix, подключив тариф «Засмотрись», ' +\n 'взять бесплатно на 2-х недельный тест-драйв или купить. ' +\n `Подробнее на сайте или по ☎ ${city.phone}`,\n };\n};\n\n/**\n * Проверка нахождения элемента плашки хедера в зоне контента страницы\n *\n * @function\n * @name utils.checkCollision\n * @param {RefObject} containerContentRef - реф контейнера контента страницы\n * @returns {boolean}\n */\nexport const checkCollision = (containerContentRef: RefObject): boolean => {\n const barPosition = BOUNDING_RECT_FIXED + window.scrollY + BAR_WIDTH;\n const headerOffsetHeight = containerContentRef?.current?.offsetHeight || ZERO;\n const headerBoundingClientRect = containerContentRef?.current?.getBoundingClientRect().top || ZERO;\n const containerContext = headerOffsetHeight + headerBoundingClientRect + window.scrollY;\n return barPosition < containerContext;\n};\n\n/**\n * Проверка на браузер Safari\n *\n * @function\n * @name utils.isSafari\n * @returns {boolean}\n */\nexport const isSafari = (): boolean => {\n enum agent {\n safari = 'safari',\n chrome = 'chrome',\n }\n const INDEX_FAIL_CODE = -1;\n const ua = navigator.userAgent.toLowerCase();\n return ua.indexOf(agent.safari) > INDEX_FAIL_CODE && ua.indexOf(agent.chrome) < ZERO;\n};\n\n/**\n * Проверка на браузер типа Chromium\n *\n * @function\n * @name utils.checkChrome\n * @returns {boolean}\n */\nexport const isChromium = (): boolean => {\n let browserName = '';\n const userAgent = navigator.userAgent;\n // @ts-ignore\n (!!window.chrome && !userAgent.match(/(OPR)/)) && (browserName = 'Chrome');\n // @ts-ignore\n (!!window.chrome && userAgent.match(/Edge|Edg/)) && (browserName = 'Edge');\n // @ts-ignore\n (!!window.chrome && userAgent.search(/YaBrowser/) > ZERO) && (browserName = 'Yandex');\n return browserName === 'Chrome';\n};\n\n/**\n * Возвращает данные для третьего блока BenefitsMovix\n *\n * @function\n * @name utils.getBenefitsCards\n * @param {boolean} withCardEconomy - необходимо ли включить в дату блок \"Для Экономных\"\n * @returns {ICardBenefits[]}\n */\nexport const getBenefitsCards = (withCardEconomy: boolean): ICardBenefits[] => {\n const cardEconomy = [...dataBenefitsBlockOne].pop();\n if (withCardEconomy) {\n return [...dataBenefitsBlockThree, cardEconomy];\n }\n return dataBenefitsBlockThree;\n};\n\n/**\n * Отправляет события аналитики - обертка\n *\n * @function\n * @name utils.dataLayerPushButton\n * @param {ELABELS} label - описание места отправки события\n * @returns {void}\n */\nexport const dataLayerPushButton = (label: ELABELS): void => {\n dataLayerPush({\n event: EVENTS.UAevent,\n category: CATEGORIES.landing,\n action: ACTIONS.clickOnBtn,\n label,\n });\n};\n\nexport const getZasmotrisData = (bundle?: IBundle): IZasmotrisData | null => {\n if (bundle) {\n return {\n price: calculatePrice(bundle),\n afterPrice: calculatePrice(bundle, true),\n salePackageId: bundle.sale_package_id,\n };\n }\n\n return null;\n};\n\nconst calculatePrice = ({ salePackage2in1 }: IBundle, isAfterPrice?: boolean) => {\n const { price_final, promo_price_final } = salePackage2in1;\n return isAfterPrice ? price_final : promo_price_final;\n};\n","// https://kb.ertelecom.ru/pages/viewpage.action?pageId=429887688\nexport enum EAccessRights {\n UserGuest = 2 ** 1,\n UserAuth = 2 ** 2,\n\n PlatformSite = 2 ** 9,\n\n ConditionZasmotris = 2 ** 25,\n}\n\ninterface IAccessModeProps {\n rights?: EAccessRights[],\n isAuth?: boolean,\n}\n\nexport const getAccessModeByRights = ({ rights = [], isAuth }: IAccessModeProps): number => {\n let result = EAccessRights.PlatformSite | rights.reduce((acc, right) => acc + right, 0);\n\n if (typeof isAuth === 'boolean') {\n if (isAuth) {\n result += EAccessRights.UserAuth;\n } else {\n result += EAccessRights.UserGuest;\n }\n }\n\n return result;\n};\n","import { isMobile } from '~/src/helpers/mobile';\nimport { getIsActiveByTerms, getIsLocationByTerms } from '~/src/store/actions/plank';\n\nexport const checkMobilePlank = (isAuth: boolean): boolean => {\n const { search, pathname } = window.location;\n const isActiveByTerms = getIsActiveByTerms({ search, pathname });\n const isLocationByTerm = getIsLocationByTerms(pathname);\n return !!isMobile() && (window.innerWidth < 861) && isActiveByTerms && (isAuth || isLocationByTerm);\n};\n","import { useCallback, useMemo, useState } from 'react';\n\nimport { isClientSide } from '@r1-frontend/shared/helpers/ssr';\n\nimport defaultImageFallback from '~/static/images/defaultImageFallback.svg';\n\ninterface ITimeout {\n hasTimeout?: boolean,\n timeoutDelay?: number,\n}\n\ninterface IOptions {\n timeout?: ITimeout,\n fallbackSrc?: string,\n}\n\ntype TEvent = Event | string | undefined;\n\nexport interface IProgressiveImageExtendedResult {\n sourceLoaded: string,\n isFallback: boolean,\n errorEvent: TEvent,\n}\n\nconst getImage = (onSuccess: () => void, onError: OnErrorEventHandlerNonNull, src?: string) => {\n if (src && isClientSide()) {\n const img = new Image();\n img.src = src;\n img.onload = onSuccess;\n if (onError) {\n img.onerror = onError;\n }\n } else {\n onError('No src');\n }\n};\n\n// использовать только для картинок (LazyLoadImage, img, picture),\n// не подходит для фоновых изображений (css: background, background-image), для них ручная проверка - useWebp\nexport function useProgressiveImage(\n src?: string,\n timeout?: ITimeout,\n fallbackSrc = defaultImageFallback,\n): string {\n const [sourceLoaded, setSourceLoaded] = useState('');\n const { hasTimeout = false, timeoutDelay = 0 } = timeout || {};\n\n const onSuccess = useCallback(\n () => hasTimeout\n ? setTimeout(() => setSourceLoaded(src as string), timeoutDelay)\n : setSourceLoaded(src as string),\n [src, hasTimeout, timeoutDelay],\n );\n\n const onError = useCallback(() => {\n setSourceLoaded(fallbackSrc);\n }, [fallbackSrc]);\n\n useMemo(() => getImage(onSuccess, onError, src), [onError, onSuccess, src]);\n\n return sourceLoaded;\n}\n\nexport function useProgressiveImageWithFallbackDetection(\n src?: string,\n options?: IOptions,\n): IProgressiveImageExtendedResult {\n const {\n timeout,\n fallbackSrc = defaultImageFallback,\n } = options || {};\n const [sourceLoaded, setSourceLoaded] = useState('');\n const [isFallback, setIsFallback] = useState(false);\n const [errorEvent, setErrorEvent] = useState(undefined);\n\n const { hasTimeout = false, timeoutDelay = 0 } = timeout || {};\n\n const onSuccess = useCallback(\n () => hasTimeout\n ? setTimeout(() => setSourceLoaded(src as string), timeoutDelay)\n : setSourceLoaded(src as string),\n [src, hasTimeout, timeoutDelay],\n );\n\n const onError = useCallback((event) => {\n setSourceLoaded(fallbackSrc);\n setIsFallback(true);\n setErrorEvent(event);\n }, [fallbackSrc]);\n\n useMemo(() => getImage(onSuccess, onError, src), [onError, onSuccess, src]);\n\n return ({ sourceLoaded, isFallback, errorEvent });\n}\n","const f_s = '.'; // разделитель дробной части\n\n/**\n * В число\n * @param {*} v - значение\n * @return {number}\n */\nexport const toNumber = v => typeof v === 'string' ? parseFloat(v.toString().replace(' ', '').replace(',', f_s)) : Number(v);\n\n/**\n * Число?\n * @param {*} v - значение\n * @return {boolean}\n */\nexport const isNumeric = v => {\n if (typeof v === 'number') {\n return true;\n }\n const str = (v || '').toString();\n if (!str) {\n return false;\n }\n const float = toNumber(str);\n return !isNaN(float) && isFinite(float);\n};\n\n/**\n * Форматирование цены\n * @param {(number|string)} amount число\n * @param {number} [x=3] длина секции\n * @param {string} [s=' '] разделитель секций\n * @param {number} [d=0] длина дробной части\n * @param {string} [c='.'] разделитель дробной части\n * @return {string}\n */\nexport const toCurrency = (amount, x = 3, s = ' ', d, c = f_s) => {\n const n = toNumber(amount);\n d = d || (x => (x.includes('.') ? x.split('.').pop().length : 0))(n.toString());\n const str = n.toFixed(Math.max(0, ~~d));\n const re = `\\\\d(?=(\\\\d{${x}})+${d > 0 ? '\\\\D' : '$'})`;\n return (c ? str.replace('.', c) : str).replace(new RegExp(re, 'g'), `$&${s}`);\n};\n\n/**\n * Целая часть от деления\n * @param {Number} a\n * @param {Number} b\n * @return {number}\n */\nexport function integerDivision(a, b) {\n return (a - a % b) / b;\n}\n","import { GET_INTERCOM_ACTION } from '~/src/store/actionTypes/intercom';\nimport { IntercomActionInfo } from '~/src/store/reducers/intercom';\n\nexport const saveIntercomAction = (actionInfo: IntercomActionInfo) => ({\n type: GET_INTERCOM_ACTION,\n payload: actionInfo,\n});\n","import { TRequestDto } from '@r1-frontend/api-domru/api-content/v1/cities/tariffs/dto/RequestDto';\n\nimport { IRequest } from '@r1-frontend/shared/types/IRequest';\n\n/**\n * Получение пакетов тарифов на продажу\n * {@link https://master.api-content.sandbox.d2c.r-one.io/docs/v1#/%D0%AD%D0%BD%D0%B4%D0%BF%D0%BE%D0%B9%D0%BD%D1%82%D1%8B%20%D0%B4%D0%BB%D1%8F%20bundles%20%D0%BF%D0%BE%20%D0%B3%D0%BE%D1%80%D0%BE%D0%B4%D1%83/fe2f1c0bbe63536e8c065ce1cd2baef9 Documentation}\n */\nexport const tariffs = (queryParams: TRequestDto = {}): IRequest => ({\n uri: '/v1/cities/tariffs',\n method: 'GET',\n queryParams,\n withProvider: true,\n});\n","import { IRequest } from '@r1-frontend/shared/types/IRequest';\n\nimport { TRequestDto } from './dto/RequestDto';\n\n/**\n * Список акций домофонии по всем городам\n * {@link https://master.api-content.sandbox.d2c.r-one.io/docs/v1#/%D0%90%D0%BA%D1%86%D0%B8%D0%B8%20%D0%B4%D0%BE%D0%BC%D0%BE%D1%84%D0%BE%D0%BD%D0%B8%D0%B8/get_v1_domofon_action Documentation}\n */\nexport const domofonAction = (queryParams: TRequestDto = {}): IRequest => ({\n uri: '/v1/domofon-action',\n method: 'GET',\n queryParams,\n withProvider: true,\n});\n","export type TArrayOfThree = [string, string, string];\n\n/**\n * @link https://docs.translatehouse.org/projects/localization-guide/en/latest/l10n/pluralforms.html\n */\nconst getVariant = (value: number, variants: TArrayOfThree) => {\n const abs = Math.abs(value);\n\n return variants[\n abs % 10 == 1 && abs % 100 != 11\n ? 0\n : abs % 10 >= 2 && abs % 10 <= 4 && (abs % 100 < 10 || abs % 100 >= 20)\n ? 1\n : 2\n ];\n};\n\n/**\n * Cклоняет число\n * @param value Число\n * @param variants Варианты слов для склонения\n * @returns Один из вариантов в зависимости от переданного значения {value}\n * @example\n * pluralize(3, ['идея', 'идеи', 'идей']); // идеи\n */\nexport const pluralize = (value: number, variants: TArrayOfThree) =>\n getVariant(value, variants);\n\n/**\n * Получает функцию для склонения числа\n * @param variants Варианты слов для склонения\n * @example\n * const pluralize = getPluralize(['идея', 'идеи', 'идей']);\n */\nexport const getPluralize = (variants: TArrayOfThree) => (value: number) =>\n pluralize(value, variants);\n","import { TArrayOfThree } from '.';\n\n/**\n * Склонения для месяца\n *\n * @return ['месяц', 'месяца', 'месяцев']\n */\nexport const monthPluralize: TArrayOfThree = ['месяц', 'месяца', 'месяцев'];\n\n/**\n * Склонения для канала\n *\n * @return ['канал', 'канала', 'каналов']\n */\nexport const channelPluralize: TArrayOfThree = ['канал', 'канала', 'каналов'];\n\n/**\n * Склонения для дня\n *\n * @return ['день', 'дня', 'дней']\n */\nexport const dayPluralize: TArrayOfThree = ['день', 'дня', 'дней'];\n\n/**\n * Склонения для бонуса\n *\n * @return ['бонус', 'бонуса', 'бонусов']\n */\nexport const bonusPluralize: TArrayOfThree = ['бонус', 'бонуса', 'бонусов'];\n","export enum EPriceTypes {\n Possess = 1, // Покупка за полную стоимость\n Leasing = 5, // Покупка в рассрочку\n}\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactSelect, { components } from 'react-select';\nimport styled from 'styled-components';\n\nimport Icon from '../../../deprecated/icon';\nimport { COLORS } from '../../../tokens/colors';\nimport { Menu, MenuList, Option as BigOption, SmallOption } from '../dropdown';\n\nconst ControlTitle = styled.div`\n cursor: pointer;\n`;\nconst Control = (props) => {\n const { children, isDisabled, isFocused, innerRef, innerProps } = props;\n return (\n \n {children}\n \n );\n};\n\nconst ValueContainer = styled(components.ValueContainer)`\n padding: 0!important;\n flex: auto!important;\n align-items: flex-start!important;\n`;\n\nconst TitleValue = styled.div`\n color: ${COLORS.TextPrimary};\n`;\nconst SingleValue = (props) => {\n const { children, isDisabled, innerRef, innerProps } = props;\n return (\n \n {children}\n \n );\n};\n\nconst Indicator = styled(components.DropdownIndicator)`\n min-width: 20px;\n justify-content: center;\n align-items: center;\n margin-left: 5px;\n padding: 0!important;\n`;\nconst DropdownIndicator = (props) => {\n return (\n \n \n \n );\n};\n\nexport default class Select extends React.Component {\n static propTypes = {\n options: PropTypes.arrayOf(PropTypes.shape({\n label: PropTypes.any,\n value: PropTypes.any,\n })),\n defaultValue: PropTypes.any,\n placeholder: PropTypes.string,\n onChange: PropTypes.func,\n value: PropTypes.shape({\n label: PropTypes.any,\n value: PropTypes.any,\n }),\n };\n\n static defaultProps = {\n options: [],\n placeholder: '',\n onChange: () => { },\n };\n\n onChange = (value) => {\n this.props.onChange(value);\n };\n\n render() {\n const { options, defaultValue, value, placeholder, minWidth, extStyle, smallOption, ...rest } = this.props;\n\n const Option = (props) => smallOption ? : ;\n const customComponents = {\n IndicatorSeparator: null,\n Control,\n ValueContainer,\n SingleValue,\n Option,\n Menu,\n MenuList,\n DropdownIndicator,\n };\n\n const customStyles = {\n menu: base => ({\n ...base,\n minWidth: minWidth,\n }),\n ...extStyle,\n };\n return (\n \n );\n }\n}\n","import styled from 'styled-components';\n\n/**\n * @deprecated\n * Use @r1-frontend/ui-react/components/svg instead\n */\nconst Icon = styled.div`\n display: inline-block;\n font-family: 'icomoon' !important;\n font-style: normal;\n font-weight: normal;\n font-variant: normal;\n text-transform: none;\n text-decoration: none;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n font-size: ${props => props.fontSize ? props.fontSize : 'inherit'};\n color: ${props => props.color || 'black'};\n &::before {\n content: ${props => `\"${props.content}\"`};\n }\n`;\n\nexport default Icon;\n","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iODAiIGhlaWdodD0iODAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHJlY3Qgd2lkdGg9IjgwIiBoZWlnaHQ9IjgwIiByeD0iMTIiIGZpbGw9IiNGQUZBRkEiIGZpbGwtb3BhY2l0eT0iMC4xNSIvPjwvc3ZnPg==\"","module.exports = \"https://cdn-b2c.dom.ru/b2c-domru/2.358.9/frontend/_next/static/images/gamer-mobile-45e79122929fae4fb05425917557e28a.png\";","module.exports = \"https://cdn-b2c.dom.ru/b2c-domru/2.358.9/frontend/_next/static/images/gamer-1c9983cc69185e6895569b90f102f67c.png\";","module.exports = \"https://cdn-b2c.dom.ru/b2c-domru/2.358.9/frontend/_next/static/images/shield-background-2890fa974a52cf945ccdeb1ccf4965c7.png\";","module.exports = \"https://cdn-b2c.dom.ru/b2c-domru/2.358.9/frontend/_next/static/images/shield-background-69b5416886709e718454c75c61c7b1a4.webp\";","module.exports = \"https://cdn-b2c.dom.ru/b2c-domru/2.358.9/frontend/_next/static/images/tv-border-a2356d22fb339d5c56c5e2fec0a97c9f.png\";","module.exports = \"https://cdn-b2c.dom.ru/b2c-domru/2.358.9/frontend/_next/static/images/tv-border-8c1a53b6a28e79ab64767f8550222254.webp\";","module.exports = \"https://cdn-b2c.dom.ru/b2c-domru/2.358.9/frontend/_next/static/images/ultra-hd-web-065cf80b4fc33d7fc2c04cc0df796a8b.png\";"],"names":["window","__NEXT_P","push","InputPhone","phoneDecorator","InputSimple","InputName","nameDecorator","InputSettings","css","Wrapper","styled","DefaultPopup","wideBreakpoints","isShowMobilePlank","Title","FONTS","Subtitle","Name","Phone","InputBlock","Button","BaseButton","InfoText","href","target","EEquipmentType","loan","sale","leasing","textButton","setPopup","popup","setIsLoading","isLoading","label","csrf","useSelector","selectCsrf","defaultFieldValue","value","isValid","clearInput","noop","useState","name","setName","phone","setPhone","beenStarted","setDataLayer","isAuth","state","auth","clientPersonal","setIsShowMobilePlank","useEffect","checkMobilePlank","phoneChangeHandler","useCallback","stateInput","_setState","stateResult","dataLayerForCBPhonePush","event","EVENTS","category","CATEGORIES","action","ACTIONS","uid","agreement","openPopupResult","result","message","option","isOrderOpened","isResultOpened","leasingDuration","undefined","salePackageId","costType","resultType","EResultPopupStatus","resultTitle","resultText","closePopup","onSubmit","params","resp","status","fio","cost_type","leasing_duration","plan","product_id","EProductsId","tv_equipment_id","doRequest","requestByConnection","isSuccess","payload","buttonText","ST","isOpen","onClose","onChange","placeholder","errorMessage","className","initialValue","PolicyNote","data-test","agreeUrl","POLICY_PAGE_LINK","type","btnTypes","disabled","text","onClick","PopupResult","title","style","maxWidth","LandingWrapper","MovixButton","StyledTrobber","Throbber","ServicesAndTvBlock","breakPoints","VideoContainer","BACKGROUND_COLOR_BLACK","props","backgroundImg","GREY_TEXT_COLOR","Cards","Footer","Container","COLORS","marginBottom","styles","Content","TEXT_SETTINGS","CardWrapper","BorderRadius","DescriptionList","Description","ButtonBlock","Image","path","isBigImage","gradientSettings","bottom","left","right","top","borderRadius","gradient","width","height","notNeedBgStyleAdditional","Price","PriceBlock","FullPrice","FullPriceBlock","Leasing","isActive","item","priceOptions","handleClick","price","img","description","descList","priceStartsFromText","fullPrice","notAllowButtonText","length","selectedOption","setSelectedOption","isSelectOpen","setIsSelectOpen","getCurrency","EPriceTypes","changeOptionsHandler","toggleSelectHandler","getPriceLabel","handleClickDataLayerWrapper","data","dataLayerPushButton","map","index","li","TitleSelect","options","minWidth","autoFocus","backspaceRemovesValue","controlShouldRenderValue","hideSelectedOptions","isClearable","menuIsOpen","tabSelectsValue","extStyle","indicatorsContainer","provided","display","container","position","menu","overflow","zIndex","toCurrency","bType","ELABELS","Row","Block","area","withoutDisplayColumn","TextBlock","ImageBlock","isShowBigImg","bigImg","imgWebp","imageStyles","containerStyles","titleStyles","src","useWebp","alt","CARDS","setIsShowBigImg","onResize","innerWidth","addEventListener","removeEventListener","ContentCard","IMAGES_URL","FILMS_URL","KIDS_URL","SERIALS_URL","SPORT_URL","TV_CHANNELS_URL","vipplay","vipplayBlack","megogo","start","LabelTypes","LabelsWidth","LABELS","getUrls","names","age","TABS","images","STabs","Tabs","active","ImagesContainer","count","imageWidth","columnGap","maxCount","Age","TextImage","Carousel","CarouselUI","FILMS_SETTINGS","resolution","activeTab","setActiveTab","countImages","setCountImages","setImageWidth","setColumnGap","sliderRef","useRef","imagesRef","changeCount","imagesWidth","current","clientWidth","Math","floor","accentColor","onSwitchTab","swipeTo","findIndex","tab","i","Tab","ref","showArrows","showDots","changeCallback","slide","containerKey","VideoServicesWrapper","SubText","ImgServices","LazyLoadImage","HeaderMainText","ContainerOrig","HeaderLegal","WrapperBottomBlock","br","HeaderBlock","ContainerMobileTitle","EMediaWidth","isDesktop","useMatchMedia","sDesktop","isLaptop","laptop","isTablet","tablet","isMobile","mobile","isSMobile","sMobile","isXSMobile","xSMobile","backgroundWebp","useMemo","background","backgroundImage","HeaderTitleBlock","p","bgSize","bgPosition","textAlign","order","bgSizeMobile","TitleCard","Text","orderMobile","MovixBenefits","UltraHDContainer","require","TextContainer","TitileHd","SubtextHd","BenefitsTitle","ContainerBenefits","CardsBenefits","isUntilTablet","renderBenefitsCard","isMobileLayout","getBenefitsCards","elem","key","BenefitsCard","id","h2","dataBenefitsBlockOne","Card","dataHdContainer","Background","CardsWrapper","StyledContainer","ShieldBackground","EnemyShipContainer","EnemyShipImage","YellowText","ShieldBackgroundWebp","ShieldBackgroundImg","sourseBackgroundImage","useProgressiveImage","timeoutDelay","hasTimeout","CardTitle","CardDescription","BGImage","CardTextBlock","CircleLight","span","ButtonsBlock","TvImage","a","rel","BLOCKS","BlocksContainer","VideoBlock","dynamic","cardsInfo","readyPlayVideo","setPlayVideoStatus","TvBorderWebp","TvBorderImg","onUnloadHandler","containerContentRef","setTextButton","setLabel","Header","VideoServices","WatchNowPayAfter","FilmsBlock","ShieldBlock","ConnectionInfo","getPriceOptions","convertShopPrices","WatchWithFamily","BlocksAbout","TextInfo","Popup","MovixLandingPage","pageDataSeo","zasmotrisInfo","Layout","withMenu","withChat","withFooter","MovixnewLanding","getInitialProps","validatedAccessToken","req","store","currentCity","providerId","domofonActionResponse","tariffsResponse","initialProps","isNeedAuthData","getState","city","Number","getCookie","selectProviderId","getPageDataSeo","getRequester","Promise","all","apiContent","domofonAction","tariffs","withProvider","getShopItems","EShopCategory","EExpandShopItems","dispatch","saveIntercomAction","items","bundles","Object","values","filter","tariff","alias","includes","token","expand","isShowAll","headers","url","prepareExpandProp","Authorization","accessMode","getAccessModeByRights","Boolean","retryIfParamIsLocked","contentRequest","paramsSerializer","stringify","captureException","expands","join","getRouters","Routers","Category","Props","Labels","getIntercomServices","Intercom","getVideocontrolItems","Videocontrol","axiosContent","axios","baseURL","isServerSide","process","interceptors","request","use","config","cookies","ACCESS_TOKEN_COOKIE","noCacheKey","NO_CACHE_COOKIE","error","reject","create","get","prices","domain","longLabel","sort","sortFunction","hasNonEmptySortField","pluralizeMonths","getPluralize","monthPluralize","forEach","duration","pricePromo","valuePromo","operType","EPriceOperationTypes","requestId","priceItem","unshift","EPriceBuyTypes","this","periodText","buyType","Sale","getValue","pricesV2","pricesLeasingPromo","Map","pricesPromo","priceElement","promoValue","possess","convertShopPricesV2","pricesLeasing","convertShopPricesV1","ZERO","header","buy","globalId","dataBenefitsBlockThree","cityIn","isSafari","agent","safari","chrome","ua","navigator","userAgent","toLowerCase","indexOf","isChromium","browserName","match","search","withCardEconomy","cardEconomy","pop","dataLayerPush","EAccessRights","UserGuest","UserAuth","PlatformSite","ConditionZasmotris","rights","reduce","acc","location","pathname","isActiveByTerms","getIsActiveByTerms","isLocationByTerm","getIsLocationByTerms","getImage","onSuccess","onError","isClientSide","onload","onerror","timeout","fallbackSrc","defaultImageFallback","sourceLoaded","setSourceLoaded","setTimeout","useProgressiveImageWithFallbackDetection","isFallback","setIsFallback","errorEvent","setErrorEvent","toNumber","v","parseFloat","toString","replace","amount","x","s","d","c","n","split","str","toFixed","max","re","RegExp","actionInfo","GET_INTERCOM_ACTION","queryParams","uri","method","pluralize","variants","abs","getVariant","channelPluralize","dayPluralize","bonusPluralize","Possess","ControlTitle","Control","children","isDisabled","isFocused","innerRef","innerProps","ValueContainer","components","TitleValue","SingleValue","Indicator","DropdownIndicator","Icon","content","color","Select","render","defaultValue","smallOption","rest","customComponents","IndicatorSeparator","Option","SmallOption","fontSize","BigOption","Menu","MenuList","customStyles","base","ReactSelect","isSearchable","React","propTypes","PropTypes","defaultProps","module","exports"],"sourceRoot":""}