{"version":3,"file":"js/family-explorer.88c179dd.js","mappings":"sIAGA,KACEA,IAAAA,GACE,MAAO,CACLC,cAAe,KACfC,cAAe,KACfC,UAAW,EACXC,OAAQ,KACRC,OAAQ,KAEZ,EACAC,QAAS,CACPC,qBAAAA,CAAsBC,GACpB,GAAY,QAARA,EAAe,CACjBC,KAAKR,cAAgBS,SAASC,eAAe,mBAC7CF,KAAKN,UAAYO,SAASE,gBAAgBC,YAC1C,IAAIC,GAAS,EAETL,KAAKR,gBACPc,EAAAA,EAAQC,GAAG,eAAgBP,KAAKQ,cAC5BR,KAAKN,UAAY,KACnBM,KAAKR,cAAca,OAAOL,KAAKN,UAAY,IAAM,GACjDW,GAAS,GACAL,KAAKN,UAAY,KAC1BM,KAAKR,cAAca,OAAOL,KAAKN,UAAY,EAAG,GAC9CW,GAAS,GACAL,KAAKN,UAAY,MAC1BM,KAAKR,cAAca,OAAOL,KAAKN,UAAY,EAAG,GAC9CW,GAAS,IAETL,KAAKP,cAAgBQ,SAASC,eAAe,eACzCF,KAAKP,gBACPO,KAAKP,cAAcgB,MAAMC,UAAY,oBAGrCL,GACFL,KAAKR,cAAcmB,iBAAiB,SAAUX,KAAKY,cAGzD,MACMZ,KAAKR,gBACPc,EAAAA,EAAQO,IAAI,eAAgBb,KAAKQ,cACjCR,KAAKR,cAAcsB,oBAAoB,SAAUd,KAAKY,cAG5D,EACAJ,YAAAA,GACER,KAAKR,cAAgBS,SAASC,eAAe,mBAC7CF,KAAKL,OAASM,SAASc,uBAAuB,iBAC9Cf,KAAKN,UAAYO,SAASE,gBAAgBC,YAC1CJ,KAAKP,cAAgBQ,SAASC,eAAe,eAE7C,IACIc,EADAC,GAAgB,EAGfA,IACHC,OAAOC,uBAAsB,KACvBH,IAAehB,KAAKR,cAAcwB,aACpCA,EAAahB,KAAKR,cAAcwB,WAC5BhB,KAAKP,gBACPO,KAAKP,cAAcgB,MAAMC,UAAY,eAAeM,QAElDhB,KAAKL,OAAOyB,QACdpB,KAAKL,OAAO0B,SAAQC,IAClBA,EAAQb,MAAMC,UAAY,eAAeM,MAAe,KAK9DhB,KAAKN,UAAYO,SAASE,gBAAgBC,YAEtCJ,KAAKN,UAAY,MACnBM,KAAKR,cAAca,OAAOL,KAAKN,UAAY,EAAG,GAC1CM,KAAKN,UAAY,IACnBM,KAAKR,cAAca,OAAOL,KAAKN,UAAY,IAAM,GACxCM,KAAKN,UAAY,KAC1BM,KAAKR,cAAca,OAAOL,KAAKN,UAAY,EAAG,KAGhDM,KAAKR,cAAca,OAAO,EAAG,GACzBL,KAAKP,gBACPO,KAAKP,cAAcgB,MAAMC,UAAY,oBAGzCO,GAAgB,CAAK,IAEvBA,GAAgB,EAEpB,EACAL,YAAAA,GACEZ,KAAKR,cAAgBS,SAASC,eAAe,mBAC7CF,KAAKP,cAAgBQ,SAASC,eAAe,eAC7CF,KAAKL,OAASM,SAASc,uBAAuB,iBAC9Cf,KAAKN,UAAYO,SAASE,gBAAgBC,YAC1C,IACIY,EADAO,GAAU,EAGTA,IACHL,OAAOC,uBAAsB,KACvBH,IAAehB,KAAKR,cAAcwB,aACpCA,EAAahB,KAAKR,cAAcwB,WAC5BhB,KAAKP,gBACPO,KAAKP,cAAcgB,MAAMC,UAAY,eAAeM,QAElDhB,KAAKL,OAAOyB,QACdpB,KAAKL,OAAO0B,SAAQC,IAClBA,EAAQb,MAAMC,UAAY,eAAeM,MAAe,KAI9DO,GAAU,CAAK,IAEjBA,GAAU,EAEd,GAEFC,OAAAA,GACEC,EAAAA,EAAMC,OACJ,IAAMD,EAAAA,EAAME,QAAQC,YACpB,KACE5B,KAAKR,cAAca,OAAOL,KAAKR,cAAcwB,WAAa,EAAG,EAAE,IAGnEhB,KAAKF,sBAAsB,MAC7B,EACA+B,SAAAA,GACE7B,KAAKF,sBAAsB,SAC7B,E,iLCzHEgC,EAAAA,EAAAA,IAAsC,OAAjCC,MAAM,sBAAoB,W,GAkCxBA,MAAM,yBAAyBC,GAAG,mB,UACrCF,EAAAA,EAAAA,IAAwD,UAAhDC,MAAM,eAAeC,GAAG,gB,cA3CxCC,IAAA,EA4C+CF,MAAM,W,EA5CrD,sB,uWACEG,EAAAA,EAAAA,IA0FM,OAzFJH,OAFJI,EAAAA,EAAAA,IAAA,CAEU,OAAM,C,sBAC4BC,EAAAC,gB,EAIxCC,EAAAA,EAAAA,IAAiBC,GACjBC,GACAF,EAAAA,EAAAA,IAQaG,EAAAA,GAAA,CARDC,KAAK,cAAY,CATjCC,SAAAC,EAAAA,EAAAA,KAUM,IAME,CALMR,EAAAS,aAAeT,EAAAU,YAAS,WADhCC,EAAAA,EAAAA,IAMEC,EAAA,CAhBRf,IAAA,EAYS,WAAUG,EAAAU,UACV,eAAcV,EAAAa,YACd,gBAAeb,EAAAC,YACfa,aAAYd,EAAAe,Y,qEAfrBC,EAAAA,EAAAA,IAAA,UAAAC,EAAA,KAkBIvB,EAAAA,EAAAA,IAwEM,OAvEJC,OAnBNI,EAAAA,EAAAA,IAAA,CAmBY,kCAAiC,C,0CACuBC,EAAAS,aAAeT,EAAAU,c,WAI7ER,EAAAA,EAAAA,IAA8DgB,EAAA,sBAAd,aAAhBlB,EAAAa,eAER,aAAhBb,EAAAa,cAAW,WADnBF,EAAAA,EAAAA,IAWEQ,EAAA,CApCRtB,IAAA,EA2BS,eAAcG,EAAAa,YACdO,YAAapB,EAAAoB,YACb,uBAAsBpB,EAAAqB,mBACtB,gBAAerB,EAAAsB,aACfC,OAAIC,EAAA,KAAAA,EAAA,GAAAC,GAAEzB,EAAA0B,gBACNC,aAAY3B,EAAA4B,WACZC,cAAa7B,EAAA8B,YACbC,cAAa/B,EAAAgC,YACbC,eAAcjC,EAAAkC,c,gJAnCvBlB,EAAAA,EAAAA,IAAA,OAsC6B,KAAfmB,EAAAC,OAAOC,MAAgBrC,EAAAoB,aAAgBpB,EAAAsC,cAtCrDtB,EAAAA,EAAAA,IAAA,SAsCiE,WAD3DL,EAAAA,EAAAA,IAIE4B,EAAA,CAzCR1C,IAAA,EAuCS2C,cAAaxC,EAAAyC,YACbC,eAAc1C,EAAA2C,c,6CAEjBjD,EAAAA,EAAAA,IAkBM,MAlBNkD,EAkBM,CAjBJC,EAC2B,aAAhB7C,EAAAa,cAAW,WAAtBf,EAAAA,EAAAA,IAeM,MAfNgD,EAeM,gBAdJhD,EAAAA,EAAAA,IAaWiD,EAAAA,GAAA,MA1DrBC,EAAAA,EAAAA,IA6CqChD,EAAAiD,kBAAVC,K,WA7C3BpD,EAAAA,EAAAA,IAAAiD,EAAAA,GAAA,CAAAlD,IA6C6DqD,EAAOC,K,CAEhDhB,EAAAiB,OAAOC,OAAOC,cAAcJ,EAAOK,cAAU,WADrDzD,EAAAA,EAAAA,IAWS,UAzDrBD,IAAA,EAgDe2D,QAAK/B,GAAEzB,EAAAyD,wBAAwBP,GAC/BQ,QAAKjC,GAAEU,EAAAiB,OAAOO,OAAO,sBAAuBT,EAAOK,YACnDK,OAAIpC,EAAA,KAAAA,EAAA,GAAAC,GAAEU,EAAAiB,OAAOO,OAAO,sBAAuB,S,QAG1CxB,EAAA0B,GAAG,+BAAgC,C,OAA6B1B,EAAA0B,GAAGX,EAAO5C,S,GArD1FwD,KAAA9C,EAAAA,EAAAA,IAAA,e,UAAAA,EAAAA,EAAAA,IAAA,mBA6DMd,EAAAA,EAAAA,IAGE6D,EAAA,CAFAC,IAAI,gBAAc,iBACM,aAAhBhE,EAAAa,gBAAW,SAErBX,EAAAA,EAAAA,IAME+D,EAAA,CAJC,eAAcjE,EAAAa,YACd,gBAAeb,EAAAsC,aACf4B,gBAAgBlE,EAAAmE,cAChBC,yBAAwBpE,EAAAqE,wB,6FAJD,aAAhBrE,EAAAa,gBAAW,SAMrBX,EAAAA,EAAAA,IAIEoE,EAAA,CAFC,eAActE,EAAAa,YACd,gBAAeb,EAAAsB,c,gDAFQ,aAAhBtB,EAAAa,gBAIVX,EAAAA,EAAAA,IAAwEqE,EAAA,CAA3D,eAAcvE,EAAAa,YAAc,gBAAeb,EAAAsB,c,0CACxDpB,EAAAA,EAAAA,IAWEsE,EAAA,CAVCC,SAAMjD,EAAA,KAAAA,EAAA,QAAmCxB,EAAA0E,eAAeC,WAAS,GAKjEC,UAAOpD,EAAA,KAAAA,EAAA,QAAmCxB,EAAA0E,eAAeC,WAAS,Q,4GC5EvEE,EAAkC,qBAAXC,OAA0BA,OAA6B,qBAAXhG,OAA0BA,YAASiG,EAC1G,GAA4B,qBAAjBF,EAA8B,CACrCA,EAAaG,QAAUA,EACvBH,EAAaG,QAAUH,EAAaG,SAAW,CAAC,EAChD,IAAIA,EAAUH,EAAaG,QAC3BA,EAAQC,MAAQD,EAAQC,OAAS,CAAC,EAClC,IAAIC,EAAO,GACX,IAAK,IAAIrF,KAAOoF,EACZD,EAAQC,MAAMpF,GAAOoF,EAAYpF,GACjCqF,EAAKC,KAAKtF,GAEd,IAAK,IAAIA,KAAO,EACZmF,EAAQnF,GAAO,EAAQA,EAE/B,CAEO,IAAI,EAAQ,CACfuF,WAAYH,EAAA,WACZI,eAAgBJ,EAAA,eAChBK,cAAeL,EAAA,cACfM,eAAgBN,EAAA,gB,0DCvBL,MAAMO,EACnBC,WAAAA,EAAY,MAAEC,EAAK,OAAEC,EAAM,QAAEC,EAAO,QAAEC,EAAO,aAAEC,EAAY,MAAEC,EAAK,MAAE1G,IAClEzB,KAAK8H,MAAQA,EACb9H,KAAK+H,OAASA,EACd/H,KAAKgI,QAAUA,EACfhI,KAAKiI,QAAUA,EACfjI,KAAKkI,aAAeA,EACpBlI,KAAKmI,MAAQA,EACbnI,KAAKyB,MAAQA,EAOb,IAAI2G,EAAe,CAAC,EAChBC,EAAuBrI,KAAK8H,MAAMQ,YAAYC,0BAClD,IAAK,MAAOtG,EAAKuG,KAASC,OAAOC,QAAQ1I,KAAKmI,OAAQ,CACpD,IAAIQ,EAAiB,CACnBb,QACAC,SACAC,UACAC,UACAI,wBAIF,GAAKG,EAAKI,SAUCJ,EAAKI,WACdD,EAAiB,IACZA,EACHC,SAAUJ,EAAKI,eAbC,CAClB,MAAMC,EAAO7I,KAAKkI,aAAaY,MAAKD,GAAQA,EAAK7G,KAAOC,IACxD,IAAK4G,EACH,OAEFF,EAAiB,IACZA,EACHE,OACAE,OAAQP,EAAKO,OAEjB,CAOAX,EAAanG,GAAO,CAClBD,GAAIC,EACJ+G,KAAMR,EAAKQ,KACXJ,SAAU5I,KAAKiJ,cAAcN,GAC7BpJ,KAAMiJ,EAAKjJ,KAEf,CACAS,KAAKyB,MAAMsE,OAAO,yBAA0BqC,EAC9C,CAEAc,MAAAA,GACE,MAAM,MAAEpB,EAAK,OAAEC,EAAM,QAAEC,EAAO,QAAEC,GAAYjI,KAE5C,IAAImJ,EAAkB,CAAC,EACnBd,EAAuBrI,KAAK8H,MAAMQ,YAAYC,0BAClD,IAAK,MAAOtG,EAAKuG,KAASC,OAAOC,QAAQ1I,KAAKmI,OAAQ,CACpD,IAAIQ,EAAiB,CACnBb,QACAC,SACAC,UACAC,UACAI,wBAGF,MAAMQ,EAAO7I,KAAKkI,aAAaY,MAAKD,GAAQA,EAAK7G,KAAOC,IAExD,IAAK4G,EAEH,OAEFF,EAAiB,IAAKA,EAAgBE,OAAME,OAAQP,EAAKO,QAEzDI,EAAgBlH,GAAOjC,KAAKiJ,cAAcN,EAC5C,CACA3I,KAAKyB,MAAMsE,OAAO,4BAA6BoD,EACjD,CAEAC,KAAAA,GACEpJ,KAAKyB,MAAMsE,OAAO,wBACpB,CAEAkD,aAAAA,EAAc,MACZnB,EAAK,OACLC,EAAM,QACNC,EAAO,QACPC,EAAO,qBACPI,EAAoB,KACpBQ,EAAI,OACJE,EAAM,SACNH,IAGA,IAAIS,EAEAR,EACFQ,EAAaR,EAAKS,kBAAkBC,YAAYC,YAAYC,IAAIV,GACvDH,IACTS,EAAaT,GAGf,IAAIc,EAAMC,EAAAA,QAAQC,QAChBP,EACAQ,EAAAA,OAAOC,WACPhC,EAAMiC,qBACNhC,EAAOiC,SAASC,SAASjC,EAASC,IAGpC,MAAO,CACLiC,EAAGR,EAAIQ,EAAI7B,EACX8B,EAAGT,EAAIS,EAAI9B,EAEf,ECxHF,OACE3F,KAAM,mBACN0H,YAAa,4BACbC,SAAU,wCACVC,mBAAoB,WACpBC,oBAAqB,CAAC,EAAG,IAAK,KAC9BC,aAAc,CACZ7H,QAAS,GACT8H,WAAY,EACZC,WAAY,IAOdC,SAAU,CACR,aAAc,CACZ3B,KAAM,UACNzJ,KAAM,CACJqL,MAAO,iDACPC,YAAa,uDACbC,OAAQ,CAAC,IAAK,KACdC,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,mBAAoB,mBAAoB,sBAIxD,cAAe,CACbjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,kDACPC,YAAa,wDACbC,OAAQ,CAAC,GAAI,MAEfE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,mBAAqB,oBAAqB,sBAIzD,sBAAuB,CACrBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,0DACPC,YACE,gEACFC,OAAQ,CAAC,IAAK,KACdC,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,mBAAoB,mBAAoB,uBAIxD,uBAAwB,CACtBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,2DACPC,YACE,iEACFC,OAAQ,CAAC,IAAK,KACdC,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,mBAAoB,sBAItD,WAAY,CACVjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,+CACPC,YAAa,qDACbC,OAAQ,CAAC,GAAI,MAEfE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,oBAAqB,uBAIvD,0BAA2B,CACzBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,8DACPC,YACE,oEACFC,OAAQ,CAAC,IAAK,KACdC,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAoB,mBAAoB,uBAIvD,aAAc,CACZjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,iDACPC,YAAa,uDACbC,OAAQ,CAAC,GAAI,KACbC,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,kBAAmB,mBAAoB,sBAIvD,oBAAqB,CACnBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,wDACPC,YACE,8DACFC,OAAQ,CAAC,GAAI,KACbC,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,kBAAmB,oBAAqB,uBAIxD,cAAe,CACbjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,kDACPC,YAAa,wDACbC,OAAQ,CAAC,IAAK,KACdC,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,mBAAoB,oBAItD,uBAAwB,CACtBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,2DACPC,YACE,iEACFC,OAAQ,CAAC,GAAI,KACbC,KAAK,EACLG,YAAa,SAEfF,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,kBAAmB,mBAAoB,sBAsBvD,qBAAsB,CACpBjC,KAAM,YACNzJ,KAAM,CACJ4L,KAAM,wDACNC,aAAc,KACdC,OAAQ,CACNC,MAAM,EACNC,OAAO,GAETT,OAAQ,CAAC,IAAK,KACdU,QAAS,KAGb,qBAAsB,CACpBxC,KAAM,YACNzJ,KAAM,CACJ4L,KAAM,wDACNC,aAAc,KACdC,OAAQ,CACNC,MAAM,EACNC,OAAO,GAETT,OAAQ,CAAC,EAAG,GACZU,QAAS,MAIfC,WAAY,CACVC,QAAS,CACPC,MAAO,CACLC,SAAU,KACVC,WAAY,EACZC,SAAU,UAIhBC,MAAO,CACLC,SAAU,CACRC,gBAAiB,CACfH,SAAU,OACVF,SAAU,IACVM,SAAU,CACRC,QAAS,CACPP,SAAU,QAKlBO,QAAS,CACPF,gBAAiB,CACfJ,WAAY,OACZC,SAAU,OACVF,SAAU,IACVM,SAAU,CACRF,SAAU,CACRJ,SAAU,SAMpBQ,UAAW,CACTC,eAAgB,qBAChBC,eAAgB,CACdpC,GAAI,MACJC,EAAG,MACHoC,EAAG,MAELC,SAAU,CAAC,EAAG,EAAG,GACjBC,OAAO,EACPC,QAAS,CAAC,KAAO,MACjBC,MAAO,MACPC,aAAc,CACZZ,SAAU,CACRa,OAAQ,MACRC,MAAO,EACPC,OAAQ,OACRC,OAAQ,QAEVb,QAAS,CACPU,OAAQ,MACRC,MAAO,EACPC,OAAQ,OACRC,OAAQ,SAGZC,qBAAsB,CAAC,IAAK,KAC5BC,iBAAiB,EACjBC,cAAc,GAEhBC,iBAAkB,CAChBxC,MAAO,4BACPyC,IAAK,oEACLC,eAAe,EACfvB,MAAO,CACLwB,OAAQ,0CACR5K,QAAS,WACTsI,OAAQ,CACNe,SAAU,4BACVG,QAAS,6BAGbqB,gBAAiB,CACfxB,SAAU,CACR,CACEuB,OAAQ,2CACR5K,QAAS,iBACT8K,YAAa,CACXC,eAAgB,CACdhL,KAAM,kCACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CAAC,gBAAiB,qBAC7BC,MAAO,WAET,CACED,UAAW,CACT,qBACA,2BACA,sBACA,6BAEFC,MAAO,WAET,CACED,UAAW,CACT,gBACA,kBACA,kBAEFC,MAAO,YAGXC,OAAQ,CACNC,KAAM,CAAC,cACPC,KAAM,CAAC,aACPC,sBAAuB,CACrB,CACEC,OAAQ,YACRC,WAAY,gCAKpBC,MAAO,CACL3L,KAAM,2BACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CAAC,gBAAiB,qBAC7BC,MAAO,WAET,CACED,UAAW,CACT,gBACA,kBACA,qBACA,2BACA,sBACA,4BACA,kBAEFC,MAAO,YAGXC,OAAQ,CACNC,KAAM,CAAC,aACPC,KAAM,CAAC,cACPC,sBAAuB,CACrB,CACEC,OAAQ,YACRC,WAAY,+BAKpBE,eAAgB,CACd5L,KAAM,+BACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CAAC,gBAAiB,qBAC7BC,MAAO,WAET,CACED,UAAW,CACT,gBACA,kBACA,qBACA,2BACA,sBACA,4BACA,kBAEFC,MAAO,YAGXC,OAAQ,CACNC,KAAM,CAAC,aACPC,KAAM,CAAC,cACPC,sBAAuB,CACrB,CACEC,OAAQ,YACRC,WAAY,+BAKpBG,QAAS,CACP7L,KAAM,yCACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CACT,gBACA,oBACA,4BAEFC,MAAO,WAET,CACED,UAAW,CACT,sBACA,6BAEFC,MAAO,WAET,CACED,UAAW,CACT,gBACA,kBACA,qBACA,kBAEFC,MAAO,YAGXC,OAAQ,CACNC,KAAM,CAAC,cACPC,KAAM,CAAC,aACPC,sBAAuB,CACrB,CACEC,OAAQ,YACRC,WAAY,mCAQ1BjC,QAAS,CACP,CACEoB,OAAQ,2CACR5K,QAAS,gBACT8K,YAAa,CACXe,cAAe,CACb9L,KAAM,8BACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CAAC,gBAAiB,qBAC7BC,MAAO,WAET,CACED,UAAW,CACT,gBACA,kBACA,qBACA,2BACA,sBACA,4BACA,kBAEFC,MAAO,YAGXC,OAAQ,CACNC,KAAM,CAAC,aACPC,KAAM,CAAC,cACPC,sBAAuB,CACrB,CACEC,OAAQ,YACRC,WAAY,+BAKpBC,MAAO,CACL3L,KAAM,2BACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CAAC,gBAAiB,qBAC7BC,MAAO,WAET,CACED,UAAW,CACT,gBACA,kBACA,qBACA,2BACA,sBACA,4BACA,kBAEFC,MAAO,YAGXC,OAAQ,CACNC,KAAM,CAAC,aACPC,KAAM,CAAC,cACPC,sBAAuB,CACrB,CACEC,OAAQ,YACRC,WAAY,oCAU9BK,WAAY,CACV,oCACA,oCACA,oCACA,sCC3fJ,GACE/L,KAAM,iBACN0H,YAAa,4BACbC,SAAU,mBACVE,oBAAqB,CAAC,EAAG,IAAK,KAC9BD,mBAAoB,GACpBE,aAAc,CACZ7H,QAAS,GACT8H,WAAY,EACZC,WAAY,IAiBdC,SAAU,CACR,gBAAiB,CACf3B,KAAM,UACNzJ,KAAM,CACJqL,MAAO,oDACPC,YAAa,0DAKb6D,YAAa,CACX1C,UAAU,EACVG,QAAS,CAAC,IAAK,OAKnBnB,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,mBAAoB,mBAAoB,sBAIxD,gBAAiB,CACfjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,oDACPC,YAAa,0DAKb6D,YAAa,CACX1C,SAAU,CAAC,IAAK,KAChBG,SAAS,IAKbnB,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,mBAAoB,mBAAoB,sBAIxD,eAAgB,CACdjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,gDACPC,YAAa,sDAKb6D,YAAa,CACX1C,UAAU,EACVG,QAAS,CAAC,GAAI,OAIlBnB,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,mBAAqB,oBAAqB,sBAIzD,eAAgB,CACdjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,gDACPC,YAAa,sDAKb6D,YAAa,CACX1C,SAAU,CAAC,GAAI,KACfG,SAAS,IAIbnB,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,mBAAqB,oBAAqB,sBAIzD,yBAA0B,CACxBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,6DACPC,YACE,mEAKF6D,YAAa,CACX1C,UAAU,EACVG,QAAS,CAAC,IAAK,OAKnBnB,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,mBAAoB,mBAAoB,uBAIxD,yBAA0B,CACxBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,6DACPC,YACE,mEAKF6D,YAAa,CACX1C,SAAU,CAAC,IAAK,KAChBG,SAAS,IAKbnB,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,mBAAoB,mBAAoB,uBAIxD,uBAAwB,CACtBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,2DACPC,YACE,iEAKF6D,YAAa,CACX1C,SAAU,CAAC,IAAK,KAChBG,QAAS,CAAC,IAAK,OAKnBnB,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,mBAAoB,sBAItD,qBAAsB,CACpBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,sDACPC,YACE,4DAKF6D,YAAa,CACX1C,UAAU,EACVG,QAAS,CAAC,GAAI,OAIlBnB,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,oBAAqB,uBAIvD,qBAAsB,CACpBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,sDACPC,YACE,4DAKF6D,YAAa,CACX1C,SAAU,CAAC,GAAI,KACfG,SAAS,IAIbnB,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,oBAAqB,uBAIvD,6BAA8B,CAC5BjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,iEACPC,YACE,uEAKF6D,YAAa,CACX1C,SAAU,CAAC,IAAK,KAChBG,SAAS,IAKbnB,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAoB,mBAAoB,uBAIvD,6BAA8B,CAC5BjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,iEACPC,YACE,uEAKF6D,YAAa,CACX1C,UAAU,EACVG,QAAS,CAAC,IAAK,OAKnBnB,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAoB,mBAAoB,uBAIvD,gBAAiB,CACfjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,oDACPC,YAAa,0DAKb6D,YAAa,CACX1C,UAAU,EACVG,QAAS,CAAC,GAAI,OAKlBnB,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,kBAAmB,mBAAoB,sBAIvD,gBAAiB,CACfjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,oDACPC,YAAa,0DAKb6D,YAAa,CACX1C,SAAU,CAAC,GAAI,KACfG,SAAS,IAKbnB,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,kBAAmB,mBAAoB,sBAIvD,cAAe,CACbjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,kDACPC,YAAa,wDAKb6D,YAAa,CACX1C,SAAU,CAAC,GAAI,KACfG,QAAS,CAAC,GAAI,OAKlBnB,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,kBAAmB,oBAAqB,uBAIxD,oBAAqB,CACnBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,wDACPC,YACE,8DAKF6D,YAAa,CACX1C,SAAU,CAAC,GAAI,KACfG,QAAS,CAAC,GAAI,OAKlBnB,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,kBAAmB,oBAAqB,uBAIxD,cAAe,CACbjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,kDACPC,YAAa,wDAKb6D,YAAa,CACX1C,SAAU,CAAC,IAAK,KAChBG,QAAS,CAAC,IAAK,OAKnBnB,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,mBAAoB,oBAItD,0BAA2B,CACzBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,8DACPC,YACE,oEAKF6D,YAAa,CACX1C,UAAU,EACVG,QAAS,CAAC,GAAI,OAMlBnB,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,kBAAmB,mBAAoB,sBAIvD,0BAA2B,CACzBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,8DACPC,YACE,oEAKF6D,YAAa,CACX1C,SAAU,CAAC,GAAI,KACfG,SAAS,IAMbnB,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,kBAAmB,mBAAoB,sBAIvD,sBAAuB,CACrBjC,KAAM,YACNzJ,KAAM,CACJ4L,KAAM,wDACNC,aAAc,KACdC,OAAQ,CACNC,MAAM,EACNC,OAAO,GAGTmD,YAAa,CACX1C,SAAU,CAAC,IAAK,KAChBG,SAAS,GAEXX,QAAS,KAGb,sBAAuB,CACrBxC,KAAM,YACNzJ,KAAM,CACJ4L,KAAM,wDACNC,aAAc,KACdC,OAAQ,CACNC,MAAM,EACNC,OAAO,GAETmD,YAAa,CACX1C,UAAU,EACVG,QAAS,CAAC,IAAK,MAGjBX,QAAS,MAIfC,WAAY,CACVC,QAAS,CACPC,MAAO,CACLC,SAAU,IACVC,WAAY,EACZC,SAAU,KAIhBM,UAAW,CACTC,eAAgB,sBAChBC,eAAgB,CACdpC,GAAI,MACJC,EAAG,MACHoC,EAAG,GAELC,SAAU,CAAC,EAAG,EAAG,GACjBC,OAAO,EACPC,QAAS,CAAC,KAAO,MACjBC,MAAO,MACP7B,OAAQ,CAAE+B,OAAQ,IAAKC,MAAO,EAAGC,OAAQ,EAAGC,OAAQ,KACpDC,qBAAsB,CAAC,IAAK,KAC5BC,iBAAiB,EACjBC,cAAc,GAEhBwB,aAAc,CACZhM,QAAS,WACTqJ,SAAU,CACRiC,KAAM,CACJ9B,QAAS,GAEX6B,KAAM,CACJhC,SAAU,GAEZ4C,6BAA8B,CAAC,YAAa,WAAY,iBAE1DzC,QAAS,CACP8B,KAAM,CACJjC,SAAU,GAEZgC,KAAM,CACJ7B,QAAS,GAEXyC,6BAA8B,CAAC,YAAa,WAAY,kBAG5DxB,iBAAkB,CAChBxC,MAAO,gCACPyC,IAAK,mCACLC,eAAe,EACfuB,OAAQ,CACNtB,OAAQ,0CACR5K,QAAS,WACTsI,OAAQ,CACNe,SAAU,sCACVG,QAAS,6BAGb2C,cAAe,CACb9C,SAAU,CACR,CACEuB,OAAQ,2CACR5K,QAAS,gBACT8K,YAAa,CACXY,MAAO,CACL3L,KAAM,sBACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CAAC,mBACZC,MAAO,UACPiB,iBAAkB,WAEpB,CACElB,UAAW,CAAC,eAAgB,iBAC5BC,MAAO,UACPiB,iBAAkB,WAEpB,CACElB,UAAW,CAAC,gBACZC,MAAO,UACPiB,iBAAkB,aAIxBP,cAAe,CACb9L,KAAM,yBACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CAAC,mBACZC,MAAO,UACPiB,iBAAkB,WAEpB,CACElB,UAAW,CAAC,eAAgB,iBAC5BC,MAAO,UACPiB,iBAAkB,WAEpB,CACElB,UAAW,CAAC,gBACZC,MAAO,UACPiB,iBAAkB,gBAO9B5C,QAAS,CACP,CACEoB,OAAQ,2CACR5K,QAAS,gBACT8K,YAAa,CACXY,MAAO,CACL3L,KAAM,sBACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CAAC,mBACZC,MAAO,UACPiB,iBAAkB,WAEpB,CACElB,UAAW,CAAC,eAAgB,iBAC5BC,MAAO,UACPiB,iBAAkB,WAEpB,CACElB,UAAW,CAAC,gBACZC,MAAO,UACPiB,iBAAkB,aAIxBP,cAAe,CACb9L,KAAM,yBACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CAAC,mBACZC,MAAO,UACPiB,iBAAkB,WAEpB,CACElB,UAAW,CAAC,eAAgB,iBAC5BC,MAAO,UACPiB,iBAAkB,WAEpB,CACElB,UAAW,CAAC,gBACZC,MAAO,UACPiB,iBAAkB,kBASlCN,WAAY,CACV,oCACA,oCACA,oCACA,oCACA,oCACA,oCACA,oCACA,oCACA,oCACA,qCACA,qCACA,qCACA,qCACA,uCCjoBJ,GACE/L,KAAM,mBACN0H,YAAa,4BACbC,SAAU,kBACVE,oBAAqB,CAAC,EAAG,IAAK,KAC9BD,mBAAoB,GACpBE,aAAc,CACZ7H,QAAS,GACT8H,WAAY,EACZC,WAAY,IAiBdC,SAAU,CACR,gBAAiB,CACf3B,KAAM,UACNzJ,KAAM,CACJqL,MAAO,oDACPC,YAAa,0DAKb6D,YAAa,CACX1C,UAAU,EACVG,QAAS,CAAC,IAAK,OAKnBnB,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,mBAAoB,mBAAoB,sBAIxD,gBAAiB,CACfjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,oDACPC,YAAa,0DAKb6D,YAAa,CACX1C,SAAU,CAAC,IAAK,KAChBG,SAAS,IAKbnB,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,mBAAoB,mBAAoB,sBAIxD,eAAgB,CACdjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,gDACPC,YAAa,sDAKb6D,YAAa,CACX1C,UAAU,EACVG,QAAS,CAAC,GAAI,OAIlBnB,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,mBAAqB,oBAAqB,sBAIzD,eAAgB,CACdjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,gDACPC,YAAa,sDAKb6D,YAAa,CACX1C,SAAU,CAAC,GAAI,KACfG,SAAS,IAIbnB,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,mBAAqB,oBAAqB,sBAIzD,yBAA0B,CACxBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,6DACPC,YACE,mEAKF6D,YAAa,CACX1C,UAAU,EACVG,QAAS,CAAC,IAAK,OAKnBnB,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,mBAAoB,mBAAoB,uBAIxD,yBAA0B,CACxBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,6DACPC,YACE,mEAKF6D,YAAa,CACX1C,SAAU,CAAC,IAAK,KAChBG,SAAS,IAKbnB,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,mBAAoB,mBAAoB,uBAIxD,aAAc,CACZjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,iDACPC,YAAa,uDAKb6D,YAAa,CACX1C,SAAU,CAAC,IAAK,KAChBG,QAAS,CAAC,IAAK,OAKnBnB,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,mBAAoB,sBAItD,uBAAwB,CACtBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,2DACPC,YACE,iEAKF6D,YAAa,CACX1C,SAAU,CAAC,IAAK,KAChBG,QAAS,CAAC,IAAK,OAKnBnB,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,mBAAoB,sBAItD,qBAAsB,CACpBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,sDACPC,YACE,4DAKF6D,YAAa,CACX1C,UAAU,EACVG,QAAS,CAAC,GAAI,OAIlBnB,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,oBAAqB,uBAIvD,qBAAsB,CACpBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,sDACPC,YACE,4DAKF6D,YAAa,CACX1C,SAAU,CAAC,GAAI,KACfG,SAAS,IAIbnB,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,oBAAqB,uBAIvD,0BAA2B,CACzBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,8DACPC,YACE,oEAKF6D,YAAa,CACX1C,SAAU,CAAC,IAAK,KAChBG,QAAS,CAAC,IAAK,OAKnBnB,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAoB,mBAAoB,uBAIvD,gBAAiB,CACfjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,oDACPC,YAAa,0DAKb6D,YAAa,CACX1C,UAAU,EACVG,QAAS,CAAC,GAAI,OAKlBnB,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,kBAAmB,mBAAoB,sBAIvD,gBAAiB,CACfjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,oDACPC,YAAa,0DAKb6D,YAAa,CACX1C,SAAU,CAAC,GAAI,KACfG,SAAS,IAKbnB,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,kBAAmB,mBAAoB,sBAIvD,cAAe,CACbjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,kDACPC,YAAa,wDAKb6D,YAAa,CACX1C,SAAU,CAAC,GAAI,KACfG,QAAS,CAAC,GAAI,OAKlBnB,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,kBAAmB,oBAAqB,uBAIxD,oBAAqB,CACnBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,wDACPC,YACE,8DAKF6D,YAAa,CACX1C,SAAU,CAAC,GAAI,KACfG,QAAS,CAAC,GAAI,OAKlBnB,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,kBAAmB,oBAAqB,uBAIxD,cAAe,CACbjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,kDACPC,YAAa,wDAKb6D,YAAa,CACX1C,SAAU,CAAC,IAAK,KAChBG,QAAS,CAAC,IAAK,OAKnBnB,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,mBAAoB,oBAItD,0BAA2B,CACzBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,8DACPC,YACE,oEAKF6D,YAAa,CACX1C,UAAU,EACVG,QAAS,CAAC,GAAI,OAMlBnB,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,kBAAmB,mBAAoB,sBAIvD,0BAA2B,CACzBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,8DACPC,YACE,oEAKF6D,YAAa,CACX1C,SAAU,CAAC,GAAI,KACfG,SAAS,IAMbnB,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,kBAAmB,mBAAoB,sBAIvD,sBAAuB,CACrBjC,KAAM,YACNzJ,KAAM,CACJ4L,KAAM,wDACNC,aAAc,KACdC,OAAQ,CACNC,MAAM,EACNC,OAAO,GAGTmD,YAAa,CACX1C,SAAU,CAAC,IAAK,KAChBG,SAAS,GAEXX,QAAS,KAGb,sBAAuB,CACrBxC,KAAM,YACNzJ,KAAM,CACJ4L,KAAM,wDACNC,aAAc,KACdC,OAAQ,CACNC,MAAM,EACNC,OAAO,GAETmD,YAAa,CACX1C,UAAU,EACVG,QAAS,CAAC,IAAK,MAGjBX,QAAS,MAIfC,WAAY,CACVC,QAAS,CACPC,MAAO,CACLC,SAAU,IACVC,WAAY,EACZC,SAAU,OA6BhBM,UAAW,CACTC,eAAgB,sBAChBC,eAAgB,CACdpC,GAAI,MACJC,EAAG,MACHoC,EAAG,GAELC,SAAU,CAAC,EAAG,EAAG,GACjBC,OAAO,EACPC,QAAS,CAAC,KAAO,MACjBC,MAAO,MACP7B,OAAQ,CAAE+B,OAAQ,IAAKC,MAAO,EAAGC,OAAQ,IAAKC,OAAQ,KACtDC,qBAAsB,CAAC,IAAK,KAC5BC,iBAAiB,EACjBC,cAAc,GAEhBwB,aAAc,CACZhM,QAAS,UACTqJ,SAAU,CACRiC,KAAM,CACJ9B,QAAS,GAEX6B,KAAM,CACJhC,SAAU,GAEZ4C,6BAA8B,CAAC,SAAU,YAG3CzC,QAAS,CACP8B,KAAM,CACJjC,SAAU,GAEZgC,KAAM,CACJ7B,QAAS,GAEXyC,6BAA8B,CAAC,SAAU,aAI7CxB,iBAAkB,CAChBxC,MAAO,4BACPyC,IAAK,mCACLC,eAAe,EACfuB,OAAQ,CACNtB,OAAQ,0CACR5K,QAAS,UACTsI,OAAQ,CACNkB,QAAS,2BACTH,SAAU,8BAGd8C,cAAe,CACb9C,SAAU,CACR,CACEuB,OAAQ,2CACR5K,QAAS,QACT8K,YAAa,CACXY,MAAO,CACL3L,KAAM,2BACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CAAC,mBACZC,MAAO,UACPiB,iBAAkB,WAEpB,CACElB,UAAW,CAAC,eAAgB,iBAC5BC,MAAO,UACPiB,iBAAkB,WAEpB,CACElB,UAAW,CAAC,gBACZC,MAAO,UACPiB,iBAAkB,YAGtBhB,OAAQ,CAENE,KAAM,CAAC,UAAW,UAStBO,cAAe,CACb9L,KAAM,8BACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CAAC,mBACZC,MAAO,UACPiB,iBAAkB,WAEpB,CACElB,UAAW,CAAC,eAAgB,iBAC5BC,MAAO,UACPiB,iBAAkB,WAEpB,CACElB,UAAW,CAAC,gBACZC,MAAO,UACPiB,iBAAkB,YAGtBhB,OAAQ,CAENE,KAAM,CAAC,UAAW,aAY5B9B,QAAS,CACP,CACEoB,OAAQ,2CACR5K,QAAS,QACT8K,YAAa,CACXY,MAAO,CACL3L,KAAM,2BACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CAAC,kBAAmB,qBAC/BC,MAAO,UACPiB,iBAAkB,WAEpB,CACElB,UAAW,CAAC,eAAgB,iBAC5BC,MAAO,UACPiB,iBAAkB,WAEpB,CACElB,UAAW,CAAC,gBACZC,MAAO,UACPiB,iBAAkB,YAGtBhB,OAAQ,CACNC,KAAM,CAAC,UAAW,OAAQ,mBAC1BC,KAAM,CAAC,qBASXO,cAAe,CACb9L,KAAM,8BACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CAAC,mBACZC,MAAO,UACPiB,iBAAkB,WAEpB,CACElB,UAAW,CAAC,eAAgB,iBAC5BC,MAAO,UACPiB,iBAAkB,WAEpB,CACElB,UAAW,CAAC,gBACZC,MAAO,UACPiB,iBAAkB,YAGtBhB,OAAQ,CACNC,KAAM,CAAC,mBACPC,KAAM,CAAC,UAAW,OAAQ,0BAsBxCQ,WAAY,CACV,oCACA,oCACA,oCACA,oCACA,oCACA,oCACA,oCACA,oCACA,oCACA,qCACA,uCC1sBJ,GACE/L,KAAM,mBACN0H,YAAa,4BACbC,SAAU,wCACVC,mBAAoB,WACpBC,oBAAqB,CAAC,EAAG,IAAK,KAC9BC,aAAc,CACZ7H,QAAS,GACT8H,WAAY,EACZC,WAAY,IAOdC,SAAU,CACR,aAAc,CACZ3B,KAAM,UACNzJ,KAAM,CACJqL,MAAO,iDACPC,YAAa,uDACbC,OAAQ,CAAC,IAAK,KACdC,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,mBAAoB,mBAAoB,sBAIxD,cAAe,CACbjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,kDACPC,YAAa,wDACbC,OAAQ,CAAC,GAAI,MAEfE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,mBAAqB,oBAAqB,sBAIzD,sBAAuB,CACrBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,0DACPC,YACE,gEACFC,OAAQ,CAAC,IAAK,KACdC,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,mBAAoB,mBAAoB,uBAIxD,uBAAwB,CACtBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,2DACPC,YACE,iEACFC,OAAQ,CAAC,IAAK,KACdC,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,mBAAoB,sBAItD,WAAY,CACVjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,+CACPC,YAAa,qDACbC,OAAQ,CAAC,GAAI,MAEfE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,oBAAqB,uBAIvD,0BAA2B,CACzBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,8DACPC,YACE,oEACFC,OAAQ,CAAC,IAAK,KACdC,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAoB,mBAAoB,uBAIvD,aAAc,CACZjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,iDACPC,YAAa,uDACbC,OAAQ,CAAC,GAAI,KACbC,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,kBAAmB,mBAAoB,sBAIvD,oBAAqB,CACnBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,wDACPC,YACE,8DACFC,OAAQ,CAAC,GAAI,KACbC,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,kBAAmB,oBAAqB,uBAIxD,cAAe,CACbjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,kDACPC,YAAa,wDACbC,OAAQ,CAAC,IAAK,KACdC,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,mBAAoB,oBAItD,uBAAwB,CACtBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,2DACPC,YACE,iEACFC,OAAQ,CAAC,GAAI,KACbC,KAAK,EACLG,YAAa,SAEfF,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,kBAAmB,mBAAoB,sBAsBvD,qBAAsB,CACpBjC,KAAM,YACNzJ,KAAM,CACJ4L,KAAM,wDACNC,aAAc,KACdC,OAAQ,CACNC,MAAM,EACNC,OAAO,GAETT,OAAQ,CAAC,IAAK,KACdU,QAAS,KAGb,qBAAsB,CACpBxC,KAAM,YACNzJ,KAAM,CACJ4L,KAAM,wDACNC,aAAc,KACdC,OAAQ,CACNC,MAAM,EACNC,OAAO,GAETT,OAAQ,CAAC,EAAG,GACZU,QAAS,MAIfC,WAAY,CACVC,QAAS,CACPC,MAAO,CACLC,SAAU,KACVC,WAAY,EACZC,SAAU,UAIhBC,MAAO,CACLC,SAAU,CACRC,gBAAiB,CACfH,SAAU,OACVF,SAAU,IACVM,SAAU,CACRC,QAAS,CACPP,SAAU,QAKlBO,QAAS,CACPF,gBAAiB,CACfJ,WAAY,OACZC,SAAU,OACVF,SAAU,IACVM,SAAU,CACRF,SAAU,CACRJ,SAAU,SAMpBQ,UAAW,CACTC,eAAgB,qBAChBC,eAAgB,CACdpC,GAAI,MACJC,EAAG,MACHoC,EAAG,MAELC,SAAU,CAAC,EAAG,EAAG,GACjBC,OAAO,EACPC,QAAS,CAAC,KAAO,MACjBC,MAAO,MACPC,aAAc,CACZZ,SAAU,CACRa,OAAQ,MACRC,MAAO,EACPC,OAAQ,OACRC,OAAQ,QAEVb,QAAS,CACPU,OAAQ,MACRC,MAAO,EACPC,OAAQ,OACRC,OAAQ,SAGZC,qBAAsB,CAAC,IAAK,KAC5BC,iBAAiB,EACjBC,cAAc,GAEhBC,iBAAkB,CAChBxC,MAAO,4BACPyC,IAAK,oEACLtB,MAAO,CACLwB,OAAQ,0CACR5K,QAAS,WACTsI,OAAQ,CACNe,SAAU,4BACVG,QAAS,6BAGbqB,gBAAiB,CACfxB,SAAU,CACR,CACEuB,OAAQ,2CACR5K,QAAS,QACT8K,YAAa,CACXY,MAAO,CACL3L,KAAM,2BACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CAAC,gBAAiB,qBAC7BC,MAAO,UACPiB,iBAAkB,WAEpB,CACElB,UAAW,CACT,gBACA,kBACA,qBACA,2BACA,sBACA,4BACA,kBAEFC,MAAO,UACPiB,iBAAkB,YAGtBhB,OAAQ,CACNC,KAAM,CAAC,aACPC,KAAM,CAAC,cACPC,sBAAuB,CACrB,CACEC,OAAQ,YACRC,WAAY,+BAKpBV,eAAgB,CACdhL,KAAM,kCACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CAAC,gBAAiB,qBAC7BC,MAAO,UACPiB,iBAAkB,WAEpB,CACElB,UAAW,CACT,qBACA,2BACA,sBACA,6BAEFC,MAAO,UACPiB,iBAAkB,WAEpB,CACElB,UAAW,CACT,gBACA,kBACA,kBAEFC,MAAO,UACPiB,iBAAkB,YAGtBhB,OAAQ,CACNC,KAAM,CAAC,cACPC,KAAM,CAAC,aACPC,sBAAuB,CACrB,CACEC,OAAQ,YACRC,WAAY,gCAKpBE,eAAgB,CACd5L,KAAM,+BACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CAAC,gBAAiB,qBAC7BC,MAAO,UACPiB,iBAAkB,WAEpB,CACElB,UAAW,CACT,gBACA,kBACA,qBACA,2BACA,sBACA,4BACA,kBAEFC,MAAO,UACPiB,iBAAkB,YAGtBhB,OAAQ,CACNC,KAAM,CAAC,aACPC,KAAM,CAAC,cACPC,sBAAuB,CACrB,CACEC,OAAQ,YACRC,WAAY,+BAKpBY,KAAM,CACJtM,KAAM,0BACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CAAC,gBAAiB,qBAC7BC,MAAO,UACPiB,iBAAkB,WAEpB,CACElB,UAAW,CACT,gBACA,kBACA,qBACA,2BACA,sBACA,4BACA,kBAEFC,MAAO,UACPiB,iBAAkB,YAGtBhB,OAAQ,CACNC,KAAM,CAAC,aACPC,KAAM,CAAC,cACPC,sBAAuB,CACrB,CACEC,OAAQ,YACRC,WAAY,kCAQ1BjC,QAAS,CACP,CACEoB,OAAQ,2CACR5K,QAAS,QACT8K,YAAa,CACXY,MAAO,CACL3L,KAAM,2BACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CAAC,gBAAiB,qBAC7BC,MAAO,UACPiB,iBAAkB,WAEpB,CACElB,UAAW,CACT,gBACA,kBACA,qBACA,2BACA,sBACA,4BACA,kBAEFC,MAAO,UACPiB,iBAAkB,YAGtBhB,OAAQ,CACNC,KAAM,CAAC,aACPC,KAAM,CAAC,cACPC,sBAAuB,CACrB,CACEC,OAAQ,YACRC,WAAY,+BAKpBI,cAAe,CACb9L,KAAM,8BACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CAAC,gBAAiB,qBAC7BC,MAAO,UACPiB,iBAAkB,WAEpB,CACElB,UAAW,CACT,gBACA,kBACA,qBACA,2BACA,sBACA,4BACA,kBAEFC,MAAO,UACPiB,iBAAkB,YAGtBhB,OAAQ,CACNC,KAAM,CAAC,aACPC,KAAM,CAAC,cACPC,sBAAuB,CACrB,CACEC,OAAQ,YACRC,WAAY,oCAU9BK,WAAY,CACV,oCACA,oCACA,oCACA,oCACA,oCACA,sCCngBJ,GACE/L,KAAM,sBACN0H,YAAa,8BACbC,SAAU,wCACVG,aAAc,CACZ7H,QAAS,GACT8H,WAAY,EACZC,WAAY,IAEdH,oBAAqB,CAAC,EAAG,KAAM,GAC/BI,SAAU,CACR,aAAc,CACZ3B,KAAM,UACNzJ,KAAM,CACJqL,MAAO,mDACPC,YAAa,yDACbC,OAAQ,CAAC,IAAK,KACdC,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,mBAAoB,mBAAoB,uBAIxD,YAAa,CACXjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,kDACPC,YAAa,wDACbC,OAAQ,CAAC,GAAI,MAEfE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,mBAAqB,mBAAoB,uBAIxD,uBAAwB,CACtBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,6DACPC,YACE,mEACFC,OAAQ,CAAC,IAAK,KACdC,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EACL,mBACD,oBACC,uBAKT,aAAc,CACZjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,mDACPC,YAAa,yDACbC,OAAQ,CAAC,GAAI,KACbC,KAAK,EACLkE,4BAA4B,GAE9BjE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,mBAAoB,mBAAoB,uBAIxD,iBAAkB,CAChBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,uDACPC,YACE,6DACFC,OAAQ,CAAC,IAAK,KACdC,KAAK,EACLO,MAAM,GAERN,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,mBAAoB,mBAAoB,sBAIvD,2BAA4B,CAC1BjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,iEACPC,YACE,uEACFC,OAAQ,CAAC,IAAK,KACdC,KAAK,EACLkE,4BAA4B,GAE9BjE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,mBAAoB,uBAItD,SAAU,CACRjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,+CACPC,YAAa,qDACbC,OAAQ,CAAC,GAAI,MAEfE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,kBAAmB,sBAIrD,iBAAkB,CAChBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,uDACPC,YACE,6DACFC,OAAQ,CAAC,IAAK,MAEhBE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,mBAAqB,mBAAoB,uBAIxD,aAAc,CACZjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,mDACPC,YAAa,yDACbC,OAAQ,CAAC,EAAG,MAEdE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,mBAAoB,qBAItD,cAAe,CACbjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,oDACPC,YAAa,0DACbC,OAAQ,CAAC,IAAK,KACdC,KAAK,EACLO,MAAM,EACN2D,4BAA4B,EAC5BC,6BAA6B,GAE/BlE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,mBAAoB,qBAItD,YAAa,CACXjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,kDACPC,YAAa,wDACbC,OAAQ,CAAC,GAAI,KACbC,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,kBAAmB,oBAAqB,uBAqBxD,iBAAkB,CAChBjC,KAAM,YACNzJ,KAAM,CACJ4L,KAAM,sDACNC,aAAc,KACdC,OAAQ,CACNC,MAAM,EACNC,OAAO,GAETT,OAAQ,CAAC,IAAK,KACdU,QAAS,MAIfY,UAAW,CACTC,eAAgB,iBAChBC,eAAgB,CACdpC,GAAI,MACJC,EAAG,MACHoC,GAAI,OAENC,SAAU,CAAC,EAAG,EAAG,GACjBC,OAAO,EACPC,QAAS,EAAE,MAAO,OAClBC,MAAO,MACP7B,OAAQ,CACN+B,OAAQ,MACRC,MAAO,EACPC,OAAQ,OACRC,OAAQ,QAEVC,qBAAsB,CAAC,IAAK,KAC5BC,iBAAiB,EACjBC,cAAc,GAEhB1B,WAAY,CACVC,QAAS,CACPC,MAAO,CACLC,SAAU,KACVC,WAAY,MACZC,SAAU,SAIhBsB,iBAAkB,CAChBxC,MAAO,8BACPyC,IAAK,iEACLC,eAAe,EACf6B,OAAQ,CACN,CACE5B,OAAQ,2CACR5K,QAAS,WACT8K,YAAa,CACX2B,SAAU,CACR1M,KAAM,yBACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CACT,kBACA,qBACA,iBACA,gBACA,gBAEFC,MAAO,WAET,CACED,UAAW,CAAC,iBACZC,MAAO,iBAoErBW,WAAY,CACV,sCACA,sCACA,wCC5UJ,GACE/L,KAAM,sBACN0H,YAAa,6BACbC,SAAU,wCACVG,aAAc,CACZ7H,QAAS,GACT8H,WAAY,EACZC,WAAY,IAEdH,oBAAqB,CAAC,EAAG,KAAM,GAC/BI,SAAU,CACR,aAAc,CACZ3B,KAAM,UACNzJ,KAAM,CACJqL,MAAO,kDACPC,YAAa,wDACbC,OAAQ,CAAC,IAAK,KACdC,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,mBAAoB,mBAAoB,uBAIxD,YAAa,CACXjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,iDACPC,YAAa,uDACbC,OAAQ,CAAC,GAAI,MAEfE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,mBAAqB,mBAAoB,uBAIxD,uBAAwB,CACtBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,4DACPC,YACE,kEACFC,OAAQ,CAAC,IAAK,KACdC,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EACL,mBACD,oBACC,uBAKT,aAAc,CACZjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,kDACPC,YAAa,wDACbC,OAAQ,CAAC,GAAI,KACbC,KAAK,EACLkE,4BAA4B,GAE9BjE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,mBAAoB,mBAAoB,uBAIxD,iBAAkB,CAChBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,sDACPC,YACE,4DACFC,OAAQ,CAAC,IAAK,KACdC,KAAK,EACLO,MAAM,GAERN,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,mBAAoB,mBAAoB,sBAIvD,2BAA4B,CAC1BjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,gEACPC,YACE,sEACFC,OAAQ,CAAC,IAAK,KACdC,KAAK,EACLkE,4BAA4B,GAE9BjE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,mBAAoB,uBAItD,SAAU,CACRjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,8CACPC,YAAa,oDACbC,OAAQ,CAAC,GAAI,MAEfE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,kBAAmB,sBAIrD,iBAAkB,CAChBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,sDACPC,YACE,4DACFC,OAAQ,CAAC,IAAK,MAEhBE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,mBAAqB,mBAAoB,uBAIxD,aAAc,CACZjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,kDACPC,YAAa,wDACbC,OAAQ,CAAC,EAAG,MAEdE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,mBAAoB,qBAItD,cAAe,CACbjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,mDACPC,YAAa,yDACbC,OAAQ,CAAC,IAAK,KACdC,KAAK,EACLO,MAAM,EACN2D,4BAA4B,EAC5BC,6BAA6B,GAE/BlE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,mBAAoB,qBAItD,YAAa,CACXjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,iDACPC,YAAa,uDACbC,OAAQ,CAAC,GAAI,KACbC,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,kBAAmB,oBAAqB,uBAqBxD,iBAAkB,CAChBjC,KAAM,YACNzJ,KAAM,CACJ4L,KAAM,qDACNC,aAAc,KACdC,OAAQ,CACNC,MAAM,EACNC,OAAO,GAETT,OAAQ,CAAC,IAAK,KACdU,QAAS,MAIfY,UAAW,CACTC,eAAgB,iBAChBC,eAAgB,CACdpC,GAAI,MACJC,EAAG,MACHoC,GAAI,OAENC,SAAU,CAAC,EAAG,EAAG,GACjBC,OAAO,EACPC,QAAS,EAAE,MAAO,OAClBC,MAAO,MACP7B,OAAQ,CACN+B,OAAQ,MACRC,MAAO,EACPC,OAAQ,OACRC,OAAQ,QAEVC,qBAAsB,CAAC,IAAK,KAC5BC,iBAAiB,EACjBC,cAAc,GAEhB1B,WAAY,CACVC,QAAS,CACPC,MAAO,CACLC,SAAU,KACVC,WAAY,MACZC,SAAU,SAIhBsB,iBAAkB,CAChBxC,MAAO,6BACPyC,IAAK,iEACLC,eAAe,EACf6B,OAAQ,CACN,CACE5B,OAAQ,2CACR5K,QAAS,OACT8K,YAAa,CACX2B,SAAU,CACR1M,KAAM,yBACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CACT,kBACA,qBACA,iBACA,gBACA,gBAEFC,MAAO,WAET,CACED,UAAW,CAAC,iBACZC,MAAO,aAIbQ,eAAgB,CACd5L,KAAM,0BACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CACT,kBACA,qBACA,gBACA,iBACA,gBAEFC,MAAO,WAET,CACED,UAAW,CAAC,iBACZC,MAAO,aAIbS,QAAS,CACP7L,KAAM,wBACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CACT,kBACA,qBACA,iBACA,gBACA,gBAEFC,MAAO,WAET,CACED,UAAW,CAAC,iBACZC,MAAO,aAIbkB,KAAM,CACJtM,KAAM,qBACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CACT,kBACA,qBACA,iBACA,gBACA,gBAEFC,MAAO,WAET,CACED,UAAW,CAAC,iBACZC,MAAO,iBAQrBW,WAAY,CACV,qCACA,qCACA,uCC5UJ,GACE/L,KAAM,eACN0H,YAAa,wBACbC,SAAU,sCACVgF,oBAAqB,CAAC,wCACtB7E,aAAc,CACZ7H,QAAS,GACT8H,WAAY,EACZC,WAAY,IAEdC,SAAU,CACR,aAAc,CACZ3B,KAAM,UACNzJ,KAAM,CACJqL,MAAO,6CACPC,YAAa,mDACbC,OAAQ,CACNwE,OAAQ,CAAC,IAAK,KACdC,QAAQ,EACRC,OAAQ,CAAC,IAAK,OAGlBxE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,kBAAoB,mBAAoB,sBAIxD,aAAc,CACZjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,6CACPC,YAAa,mDACbC,OAAQ,CACNwE,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,MAGlBxE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,kBAAmB,kBAAmB,sBAItD,YAAa,CACXjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,4CACPC,YAAa,kDACbC,OAAQ,CACNwE,OAAQ,CACN,CAAC,GAAI,KACL,CAAC,IAAK,MAERC,OAAQ,CACN,CAAC,GAAI,KACL,CAAC,IAAK,MAERC,OAAQ,CACN,CAAC,GAAI,IACL,CAAC,IAAK,QAIZxE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,mBAAqB,kBAAmB,uBAIvD,iBAAkB,CAChBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,iDACPC,YAAa,uDACbE,KAAK,EACLO,MAAM,EACNR,OAAQ,CACNwE,OAAQ,CAAC,IAAK,IACdC,OAAQ,CAAC,IAAK,IACdC,QAAQ,IAGZxE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,mBAAoB,kBAAmB,uBAItD,aAAc,CACZjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,6CACPC,YAAa,mDACbC,OAAQ,CACNwE,OAAQ,CAAC,GAAI,KACbC,OAAQ,CAAC,GAAI,KACbC,OAAQ,CAAC,GAAI,OAGjBxE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,kBAAmB,mBAAoB,sBAIvD,gBAAiB,CACfjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,gDACPC,YAAa,sDACbC,OAAQ,CACNwE,OAAQ,CAAC,IAAK,IACdC,OAAQ,CAAC,IAAK,IACdC,QAAQ,IAGZxE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,mBAAoB,mBAAoB,uBAIvD,kBAAmB,CACjBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,kDACPC,YAAa,wDACbC,OAAQ,CACNwE,OAAQ,CAAC,IAAK,KACdC,QAAQ,EACRC,OAAQ,CAAC,IAAK,OAGlBxE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,mBAAoB,kBAAmB,uBAIvD,SAAU,CACRjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,yCACPC,YAAa,+CACbC,OAAQ,CACNwE,OAAQ,CAAC,EAAG,KACZC,OAAQ,CAAC,EAAG,KACZC,OAAQ,CAAC,GAAI,MAEflE,MAAM,GAERN,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,mBAAoB,mBAAoB,uBAIvD,SAAU,CACRjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,yCACPC,YAAa,+CACbC,OAAQ,CACNwE,OAAQ,CAAC,GAAI,KACbC,OAAQ,CAAC,GAAI,KACbC,OAAQ,CAAC,GAAI,MAEflE,MAAM,GAERN,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,mBAAoB,uBAItD,8BAA+B,CAC7BjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,8DACPC,YACE,oEACFC,OAAQ,CACNwE,OAAQ,CAAC,IAAK,KACdC,QAAQ,EACRC,OAAQ,CAAC,IAAK,OAGlBxE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,mBAAoB,kBAAmB,uBAIvD,cAAe,CACbjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,8CACPC,YAAa,oDACbC,OAAQ,CACNwE,OAAQ,CAAC,EAAG,KACZC,OAAQ,CAAC,EAAG,KACZC,OAAQ,CAAC,GAAI,MAEflE,MAAM,GAERN,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,mBAAoB,qBAItD,gBAAiB,CACfjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,gDACPC,YAAa,sDACbC,OAAQ,CACNwE,OAAQ,CAAC,GAAI,KACbC,QAAQ,EACRC,QAAQ,GAEVzE,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,mBAAoB,mBAAoB,sBAIvD,iBAAkB,CAChBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,iDACPC,YAAa,uDACbC,OAAQ,CACNwE,OAAQ,CAAC,GAAI,KACbC,QAAQ,EACRC,QAAQ,IAGZxE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,mBAAoB,kBAAmB,sBAIvD,YAAa,CACXjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,4CACPC,YAAa,kDACbC,OAAQ,CACNwE,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,EAAG,MAEdzE,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,kBAAmB,uBAIrD,uBAAwB,CACtBjC,KAAM,YACNzJ,KAAM,CACJ4L,KAAM,sDACNL,OAAQ,CACNwE,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,KACdC,QAAQ,GAEVnE,OAAQ,CACNC,MAAM,EACNC,OAAO,MAKfa,UAAW,CACTC,eAAgB,uBAChBC,eAAgB,CACdpC,GAAI,KACJC,EAAG,GACHoC,EAAG,KAELC,SAAU,CAAC,EAAG,EAAG,GACjBC,OAAO,EACPC,QAAS,CAAC,IAAM,MAChB5B,OAAQ,CAAE+B,MAAO,EAAGC,MAAO,KAAMC,OAAQ,OAAQC,OAAQ,QACzDC,qBAAsB,CAAC,IAAK,MAE9BxB,WAAY,CACVC,QAAS,CACPC,MAAO,CACLC,SAAU,KACVC,WAAY,KACZC,SAAU,SAGd2D,UAAW,CACT9D,MAAO,CACLC,SAAU,KACVC,WAAY,KACZC,SAAU,UAIhBC,MAAO,CACLuD,OAAQ,CACNrD,gBAAiB,CACfH,SAAU,OACVF,SAAU,IACVM,SAAU,CACRoD,OAAQ,CACN1D,SAAU,KAEZ4D,OAAQ,CACN5D,SAAU,MAEZ2D,OAAQ,CACN3D,SAAU,QAIhB8D,kBAAmB,CACjB5D,SAAU,OACVF,SAAU,IACVM,SAAU,CACRoD,OAAQ,CACN1D,SAAU,KAEZ4D,OAAQ,CACN5D,SAAU,MAEZ2D,OAAQ,CACN3D,SAAU,QAIhBZ,WAAY,CACV2E,kBAAmB,GACnBC,OAAQ,CACN3E,OAAQ,CAAC,EAAG,IAAK,GACjB4E,OAAQ,CACNC,IAAK,IACLC,MAAO,QAKfP,OAAQ,CACNvD,gBAAiB,CACfH,SAAU,EACVF,SAAU,IACVM,SAAU,CACRoD,OAAQ,CACN1D,SAAU,MAEZ4D,OAAQ,CACN5D,SAAU,KAEZ2D,OAAQ,CACN3D,SAAU,OAIhB8D,kBAAmB,CACjB5D,SAAU,OACVF,SAAU,IACVM,SAAU,CACRoD,OAAQ,CACN1D,SAAU,MAEZ4D,OAAQ,CACN5D,SAAU,KAEZ2D,OAAQ,CACN3D,SAAU,OAIhBZ,WAAY,CACV2E,kBAAmB,GACnBC,OAAQ,CACN3E,OAAQ,CAAC,EAAG,IAAK,MACjB4E,OAAQ,CACNC,IAAK,IACLC,MAAO,QAKfR,OAAQ,CACNtD,gBAAiB,CACfH,SAAU,OACVF,SAAU,IACVM,SAAU,CACRoD,OAAQ,CACN1D,SAAU,MAEZ4D,OAAQ,CACN5D,SAAU,KAEZ2D,OAAQ,CACN3D,SAAU,OAIhB8D,kBAAmB,CACjB5D,SAAU,OACVF,SAAU,IACVM,SAAU,CACRoD,OAAQ,CACN1D,SAAU,MAEZ4D,OAAQ,CACN5D,SAAU,KAEZ2D,OAAQ,CACN3D,SAAU,OAIhBZ,WAAY,CACV2E,kBAAmB,GACnBC,OAAQ,CACN3E,OAAQ,CAAC,EAAG,IAAK,GACjB4E,OAAQ,CACNC,IAAK,IACLC,MAAO,SAMjB3C,iBAAkB,CAChBxC,MAAO,wBACPyC,IAAK,0DACLC,eAAe,EACfvB,MAAO,CACLwB,OAAQ,wCACR5K,QAAS,SACTsI,OAAQ,CACNqE,OAAQ,0BACRC,OAAQ,0BACRC,OAAQ,4BAGZL,OAAQ,CACN,CACE5B,OAAQ,2CACR5K,QAAS,WACT8K,YAAa,CACX2B,SAAU,CACR1M,KAAM,yBACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CAAC,eAAgB,wBAC5BC,MAAO,eAMjB,CACEP,OAAQ,uDACR5K,QAAS,UACT8K,YAAa,CACX2B,SAAU,CACR1M,KAAM,yBACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CAAC,uBAAwB,yBACpCC,MAAO,WAET,CACED,UAAW,CAAC,mBAAoB,gBAChCC,MAAO,aAIbkC,SAAU,CACRtN,KAAM,yBACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CAAC,uBAAwB,yBACpCC,MAAO,WAET,CACED,UAAW,CAAC,mBAAoB,gBAChCC,MAAO,aAIbS,QAAS,CACP7L,KAAM,wBACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CAAC,uBAAwB,yBACpCC,MAAO,WAET,CACED,UAAW,CAAC,mBAAoB,gBAChCC,MAAO,aAIbO,MAAO,CACL3L,KAAM,sBACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CAAC,uBAAwB,yBACpCC,MAAO,WAET,CACED,UAAW,CAAC,mBAAoB,gBAChCC,MAAO,eAMjB,CACEP,OAAQ,+CACR5K,QAAS,WACT8K,YAAa,CACX2B,SAAU,CACR1M,KAAM,yBACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CAAC,oBACZC,MAAO,WAET,CACED,UAAW,CACT,uBACA,uBACA,qBACA,sBAEFC,MAAO,aAIbkC,SAAU,CACRtN,KAAM,yBACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CAAC,oBACZC,MAAO,WAET,CACED,UAAW,CACT,uBACA,uBACA,qBACA,sBAEFC,MAAO,aAIbS,QAAS,CACP7L,KAAM,wBACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CAAC,oBACZC,MAAO,WAET,CACED,UAAW,CACT,uBACA,uBACA,qBACA,sBAEFC,MAAO,aAIbO,MAAO,CACL3L,KAAM,sBACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CACT,mBACA,uBACA,uBACA,qBACA,sBAEFC,MAAO,iBAQrBW,WAAY,CACV,gCACA,gCACA,gCACA,kCCxmBJ,GACE/L,KAAM,eACN0H,YAAa,wBACbC,SAAU,sCACVgF,oBAAqB,CAAC,wCACtB7E,aAAc,CACZ7H,QAAS,GACT8H,WAAY,EACZC,WAAY,IAEdC,SAAU,CACR,aAAc,CACZ3B,KAAM,UACNzJ,KAAM,CACJqL,MAAO,6CACPC,YAAa,mDACbC,OAAQ,CACNwE,OAAQ,CAAC,IAAK,KACdC,QAAQ,EACRC,OAAQ,CAAC,IAAK,OAGlBxE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,kBAAoB,mBAAoB,sBAIxD,aAAc,CACZjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,6CACPC,YAAa,mDACbC,OAAQ,CACNwE,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,MAGlBxE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,kBAAmB,kBAAmB,sBAItD,YAAa,CACXjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,4CACPC,YAAa,kDACbC,OAAQ,CACNwE,OAAQ,CACN,CAAC,GAAI,KACL,CAAC,IAAK,MAERC,OAAQ,CACN,CAAC,GAAI,KACL,CAAC,IAAK,MAERC,OAAQ,CACN,CAAC,GAAI,IACL,CAAC,IAAK,QAIZxE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,mBAAqB,kBAAmB,uBAIvD,iBAAkB,CAChBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,iDACPC,YAAa,uDACbE,KAAK,EACLO,MAAM,EACNR,OAAQ,CACNwE,OAAQ,CAAC,IAAK,IACdC,OAAQ,CAAC,IAAK,IACdC,QAAQ,IAGZxE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,mBAAoB,kBAAmB,uBAItD,aAAc,CACZjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,6CACPC,YAAa,mDACbC,OAAQ,CACNwE,OAAQ,CAAC,GAAI,KACbC,OAAQ,CAAC,GAAI,KACbC,OAAQ,CAAC,GAAI,OAGjBxE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,kBAAmB,mBAAoB,sBAIvD,gBAAiB,CACfjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,gDACPC,YAAa,sDACbC,OAAQ,CACNwE,OAAQ,CAAC,IAAK,IACdC,OAAQ,CAAC,IAAK,IACdC,QAAQ,IAGZxE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,mBAAoB,mBAAoB,uBAIvD,kBAAmB,CACjBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,kDACPC,YAAa,wDACbC,OAAQ,CACNwE,OAAQ,CAAC,IAAK,KACdC,QAAQ,EACRC,OAAQ,CAAC,IAAK,OAGlBxE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,mBAAoB,kBAAmB,uBAIvD,SAAU,CACRjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,yCACPC,YAAa,+CACbC,OAAQ,CACNwE,OAAQ,CAAC,EAAG,KACZC,OAAQ,CAAC,EAAG,KACZC,OAAQ,CAAC,GAAI,MAEflE,MAAM,GAERN,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,mBAAoB,mBAAoB,uBAIvD,SAAU,CACRjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,yCACPC,YAAa,+CACbC,OAAQ,CACNwE,OAAQ,CAAC,GAAI,KACbC,OAAQ,CAAC,GAAI,KACbC,OAAQ,CAAC,GAAI,MAEflE,MAAM,GAERN,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,mBAAoB,uBAItD,8BAA+B,CAC7BjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,8DACPC,YACE,oEACFC,OAAQ,CACNwE,OAAQ,CAAC,IAAK,KACdC,QAAQ,EACRC,OAAQ,CAAC,IAAK,OAGlBxE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,mBAAoB,kBAAmB,uBAIvD,cAAe,CACbjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,8CACPC,YAAa,oDACbC,OAAQ,CACNwE,OAAQ,CAAC,EAAG,KACZC,OAAQ,CAAC,EAAG,KACZC,OAAQ,CAAC,GAAI,MAEflE,MAAM,GAERN,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,mBAAoB,qBAItD,gBAAiB,CACfjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,gDACPC,YAAa,sDACbC,OAAQ,CACNwE,OAAQ,CAAC,GAAI,KACbC,QAAQ,EACRC,QAAQ,GAEVzE,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,mBAAoB,mBAAoB,sBAIvD,iBAAkB,CAChBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,iDACPC,YAAa,uDACbC,OAAQ,CACNwE,OAAQ,CAAC,GAAI,KACbC,QAAQ,EACRC,QAAQ,IAGZxE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,mBAAoB,kBAAmB,sBAIvD,YAAa,CACXjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,4CACPC,YAAa,kDACbC,OAAQ,CACNwE,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,EAAG,MAEdzE,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,kBAAmB,uBAIrD,uBAAwB,CACtBjC,KAAM,YACNzJ,KAAM,CACJ4L,KAAM,sDACNL,OAAQ,CACNwE,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,KACdC,QAAQ,GAEVnE,OAAQ,CACNC,MAAM,EACNC,OAAO,MAKfa,UAAW,CACTC,eAAgB,uBAChBC,eAAgB,CACdpC,GAAI,KACJC,EAAG,GACHoC,EAAG,KAELC,SAAU,CAAC,EAAG,EAAG,GACjBC,OAAO,EACPC,QAAS,CAAC,IAAM,MAChB5B,OAAQ,CAAE+B,MAAO,EAAGC,MAAO,KAAMC,OAAQ,OAAQC,OAAQ,QACzDC,qBAAsB,CAAC,IAAK,MAE9BxB,WAAY,CACVC,QAAS,CACPC,MAAO,CACLC,SAAU,KACVC,WAAY,KACZC,SAAU,SAGd2D,UAAW,CACT9D,MAAO,CACLC,SAAU,KACVC,WAAY,KACZC,SAAU,UAIhBC,MAAO,CACLuD,OAAQ,CACNrD,gBAAiB,CACfH,SAAU,OACVF,SAAU,IACVM,SAAU,CACRoD,OAAQ,CACN1D,SAAU,KAEZ4D,OAAQ,CACN5D,SAAU,MAEZ2D,OAAQ,CACN3D,SAAU,QAIhB8D,kBAAmB,CACjB5D,SAAU,OACVF,SAAU,IACVM,SAAU,CACRoD,OAAQ,CACN1D,SAAU,KAEZ4D,OAAQ,CACN5D,SAAU,MAEZ2D,OAAQ,CACN3D,SAAU,QAIhBZ,WAAY,CACV2E,kBAAmB,GACnBC,OAAQ,CACN3E,OAAQ,CAAC,EAAG,IAAK,GACjB4E,OAAQ,CACNC,IAAK,IACLC,MAAO,QAKfP,OAAQ,CACNvD,gBAAiB,CACfH,SAAU,EACVF,SAAU,IACVM,SAAU,CACRoD,OAAQ,CACN1D,SAAU,MAEZ4D,OAAQ,CACN5D,SAAU,KAEZ2D,OAAQ,CACN3D,SAAU,OAIhB8D,kBAAmB,CACjB5D,SAAU,OACVF,SAAU,IACVM,SAAU,CACRoD,OAAQ,CACN1D,SAAU,MAEZ4D,OAAQ,CACN5D,SAAU,KAEZ2D,OAAQ,CACN3D,SAAU,OAIhBZ,WAAY,CACV2E,kBAAmB,GACnBC,OAAQ,CACN3E,OAAQ,CAAC,EAAG,IAAK,MACjB4E,OAAQ,CACNC,IAAK,IACLC,MAAO,QAKfR,OAAQ,CACNtD,gBAAiB,CACfH,SAAU,OACVF,SAAU,IACVM,SAAU,CACRoD,OAAQ,CACN1D,SAAU,MAEZ4D,OAAQ,CACN5D,SAAU,KAEZ2D,OAAQ,CACN3D,SAAU,OAIhB8D,kBAAmB,CACjB5D,SAAU,OACVF,SAAU,IACVM,SAAU,CACRoD,OAAQ,CACN1D,SAAU,MAEZ4D,OAAQ,CACN5D,SAAU,KAEZ2D,OAAQ,CACN3D,SAAU,OAIhBZ,WAAY,CACV2E,kBAAmB,GACnBC,OAAQ,CACN3E,OAAQ,CAAC,EAAG,IAAK,GACjB4E,OAAQ,CACNC,IAAK,IACLC,MAAO,SAMjB3C,iBAAkB,CAChBxC,MAAO,wBACPyC,IAAK,0DACLC,eAAe,EACfvB,MAAO,CACLwB,OAAQ,wCACR5K,QAAS,SACTsI,OAAQ,CACNqE,OAAQ,0BACRC,OAAQ,0BACRC,OAAQ,4BAGZL,OAAQ,CACN,CACE5B,OAAQ,2CACR5K,QAAS,WACT8K,YAAa,CACX2B,SAAU,CACR1M,KAAM,yBACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CAAC,eAAgB,wBAC5BC,MAAO,eAMjB,CACEP,OAAQ,uDACR5K,QAAS,WACT8K,YAAa,CACX2B,SAAU,CACR1M,KAAM,yBACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CAAC,uBAAwB,yBACpCC,MAAO,WAET,CACED,UAAW,CAAC,mBAAoB,gBAChCC,MAAO,aAIbkC,SAAU,CACRtN,KAAM,yBACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CAAC,uBAAwB,yBACpCC,MAAO,WAET,CACED,UAAW,CAAC,mBAAoB,gBAChCC,MAAO,aAIbS,QAAS,CACP7L,KAAM,wBACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CAAC,uBAAwB,yBACpCC,MAAO,WAET,CACED,UAAW,CAAC,mBAAoB,gBAChCC,MAAO,aAIbO,MAAO,CACL3L,KAAM,sBACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CAAC,uBAAwB,yBACpCC,MAAO,WAET,CACED,UAAW,CAAC,mBAAoB,gBAChCC,MAAO,eAMjB,CACEP,OAAQ,+CACR5K,QAAS,WACT8K,YAAa,CACX2B,SAAU,CACR1M,KAAM,yBACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CAAC,oBACZC,MAAO,WAET,CACED,UAAW,CACT,uBACA,uBACA,qBACA,sBAEFC,MAAO,aAIbkC,SAAU,CACRtN,KAAM,yBACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CAAC,oBACZC,MAAO,WAET,CACED,UAAW,CACT,uBACA,uBACA,qBACA,sBAEFC,MAAO,aAIbS,QAAS,CACP7L,KAAM,wBACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CAAC,oBACZC,MAAO,WAET,CACED,UAAW,CACT,uBACA,uBACA,qBACA,sBAEFC,MAAO,aAIbO,MAAO,CACL3L,KAAM,sBACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CACT,mBACA,uBACA,uBACA,qBACA,sBAEFC,MAAO,iBAQrBW,WAAY,CACV,gCACA,gCACA,gCACA,gCACA,kCCzmBJ,GACE/L,KAAM,gBACN0H,YAAa,yBACbC,SAAU,2BACVgF,oBAAqB,CAAC,6BACtB7E,aAAc,CACZ7H,QAAS,GACT8H,WAAY,EACZC,WAAY,IAEdC,SAAU,CACR,aAAc,CACZ3B,KAAM,UACNzJ,KAAM,CACJqL,MAAO,8CACPC,YAAa,oDACbC,OAAQ,CACNwE,OAAQ,CAAC,GAAI,KACbC,OAAQ,CAAC,GAAI,KACbC,OAAQ,CAAC,GAAI,OAGjBxE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EACL,oBACD,mBACC,sBAKT,YAAa,CACXjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,6CACPC,YAAa,mDACbC,OAAQ,CACNwE,OAAQ,CAAC,EAAG,KACZC,OAAQ,CAAC,EAAG,KACZC,OAAQ,CAAC,EAAG,OAGhBxE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,mBAAoB,mBAAoB,uBAIvD,iBAAkB,CAChBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,kDACPC,YAAa,wDACbC,OAAQ,CACNwE,OAAQ,CAAC,GAAI,KACbC,OAAQ,CAAC,GAAI,KACbC,OAAQ,CAAC,GAAI,OAGjBxE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,mBAAoB,sBAItD,cAAe,CACbjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,+CACPC,YAAa,qDACbC,OAAQ,CACNwE,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,OAGlBxE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,kBAAmB,mBAAoB,sBAIvD,YAAa,CACXjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,6CACPC,YAAa,mDACbC,OAAQ,CACNwE,OAAQ,CAAC,EAAG,KACZC,OAAQ,CAAC,EAAG,KACZC,OAAQ,CAAC,EAAG,MAEdzE,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,iBAAkB,oBAAqB,uBAItD,eAAgB,CACdjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,gDACPC,YAAa,sDACbC,OAAQ,CACNwE,OAAQ,CAAC,IAAK,IACdC,OAAQ,CAAC,IAAK,IACdC,OAAQ,CAAC,IAAK,MAGlBxE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,mBAAoB,mBAAoB,uBAqBvD,oBAAqB,CACnBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,qDACPC,YAAa,2DACbC,OAAQ,CACNwE,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,MAEhBzE,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,mBAAoB,mBAAoB,sBAIvD,kBAAmB,CACjBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,mDACPC,YAAa,yDACbC,OAAQ,CACNwE,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,OAGlBxE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,kBAAmB,mBAAoB,sBAIvD,YAAa,CACXjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,6CACPC,YAAa,mDACbC,OAAQ,CACNwE,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,OAGlBxE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,mBAAoB,mBAAoB,uBAqBvD,iBAAkB,CAChBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,kDACPC,YAAa,wDACbC,OAAQ,CACNwE,OAAQ,CAAC,IAAK,IACdC,OAAQ,CAAC,IAAK,IACdC,OAAQ,CAAC,IAAK,MAGlBxE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,mBAAoB,oBAAqB,oBAIxD,aAAc,CACZjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,8CACPC,YAAa,oDACbC,OAAQ,CACNwE,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,OAGlBxE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,mBAAoB,kBAAmB,uBAIvD,iBAAkB,CAChBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,kDACPC,YAAa,wDACbC,OAAQ,CACNwE,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,MAEhBS,IAAK,SAEPjF,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,kBAAmB,uBAIrD,SAAU,CACRjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,0CACPC,YAAa,gDACbC,OAAQ,CACNwE,OAAQ,CAAC,GAAI,KACbC,OAAQ,CAAC,GAAI,KACbC,OAAQ,CAAC,GAAI,MAEfzE,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,kBAAmB,mBAAoB,uBAIvD,gBAAiB,CACfjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,iDACPC,YAAa,uDACbC,OAAQ,CACNwE,OAAQ,CAAC,GAAI,KACbC,OAAQ,CAAC,GAAI,KACbC,OAAQ,CAAC,GAAI,MAEfzE,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,kBAAmB,iBAAkB,uBAIrD,aAAc,CACZjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,8CACPC,YAAa,oDACbC,OAAQ,CACNwE,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,OAGlBxE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,mBAAoB,kBAAmB,uBAIvD,YAAa,CACXjC,KAAM,YACNzJ,KAAM,CACJ4L,KAAM,oBACNC,aAAc,KACdC,OAAQ,CACNC,MAAM,EACNC,OAAO,GAETT,OAAQ,CACNwE,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,KACdC,QAAQ,MAKhB/D,WAAY,CACVC,QAAS,CACPC,MAAO,CACLC,SAAU,KACVC,WAAY,KACZC,SAAU,SAGd2D,UAAW,CACT9D,MAAO,CACLC,SAAU,KACVC,WAAY,KACZC,SAAU,UAIhBC,MAAO,CACLuD,OAAQ,CACNrD,gBAAiB,CACfH,SAAU,OACVF,SAAU,IACVM,SAAU,CACRoD,OAAQ,CACN1D,SAAU,KAEZ4D,OAAQ,CACN5D,SAAU,MAEZ2D,OAAQ,CACN3D,SAAU,QAIhB8D,kBAAmB,CACjB5D,SAAU,OACVF,SAAU,IACVM,SAAU,CACRoD,OAAQ,CACN1D,SAAU,KAEZ4D,OAAQ,CACN5D,SAAU,MAEZ2D,OAAQ,CACN3D,SAAU,QAIhBZ,WAAY,CACV2E,kBAAmB,GACnBC,OAAQ,CACN3E,OAAQ,CAAC,EAAG,IAAK,GACjB4E,OAAQ,CACNC,IAAK,IACLC,MAAO,QAKfP,OAAQ,CACNvD,gBAAiB,CACfH,SAAU,EACVF,SAAU,IACVM,SAAU,CACRoD,OAAQ,CACN1D,SAAU,MAEZ4D,OAAQ,CACN5D,SAAU,KAEZ2D,OAAQ,CACN3D,SAAU,OAIhB8D,kBAAmB,CACjB5D,SAAU,OACVF,SAAU,IACVM,SAAU,CACRoD,OAAQ,CACN1D,SAAU,MAEZ4D,OAAQ,CACN5D,SAAU,KAEZ2D,OAAQ,CACN3D,SAAU,OAIhBZ,WAAY,CACV2E,kBAAmB,GACnBC,OAAQ,CACN3E,OAAQ,CAAC,EAAG,IAAK,MACjB4E,OAAQ,CACNC,IAAK,IACLC,MAAO,QAKfR,OAAQ,CACNtD,gBAAiB,CACfH,SAAU,OACVF,SAAU,IACVM,SAAU,CACRoD,OAAQ,CACN1D,SAAU,MAEZ4D,OAAQ,CACN5D,SAAU,KAEZ2D,OAAQ,CACN3D,SAAU,OAIhB8D,kBAAmB,CACjB5D,SAAU,OACVF,SAAU,IACVM,SAAU,CACRoD,OAAQ,CACN1D,SAAU,MAEZ4D,OAAQ,CACN5D,SAAU,KAEZ2D,OAAQ,CACN3D,SAAU,OAIhBZ,WAAY,CACV2E,kBAAmB,GACnBC,OAAQ,CACN3E,OAAQ,CAAC,EAAG,IAAK,GACjB4E,OAAQ,CACNC,IAAK,IACLC,MAAO,SAMjB3D,UAAW,CACTC,eAAgB,YAChBC,eAAgB,CACdpC,GAAI,KACJC,EAAG,GACHoC,EAAG,KAELE,OAAO,EACPD,SAAU,CAAC,EAAG,EAAG,GACjBE,QAAS,CAAC,IAAM,MAChB5B,OAAQ,CAAE+B,MAAO,EAAGC,MAAO,KAAMC,OAAQ,OAAQC,OAAQ,QACzDC,qBAAsB,CAAC,IAAK,MAE9BG,iBAAkB,CAChBxC,MAAO,yBACPyC,IAAK,iEACLC,eAAe,EACfvB,MAAO,CACLwB,OAAQ,wCACR5K,QAAS,SACTsI,OAAQ,CACNqE,OAAQ,0BACRC,OAAQ,0BACRC,OAAQ,4BAGZL,OAAQ,CACN,CACE5B,OAAQ,2CACR5K,QAAS,WACT8K,YAAa,CACX2B,SAAU,CACR1M,KAAM,yBACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CAAC,kBAAmB,eAC/BC,MAAO,WAET,CACED,UAAW,CACT,eACA,sBACA,uBACA,2BAEFC,MAAO,aAIboC,SAAU,CACRxN,KAAM,yBACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CACT,kBACA,sBACA,eAEFC,MAAO,WAET,CACED,UAAW,CACT,eACA,uBACA,2BAEFC,MAAO,eAMjB,CACEP,OAAQ,wDACR5K,QAAS,QACT8K,YAAa,CACX2B,SAAU,CACR1M,KAAM,yBACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CAAC,iBACZC,MAAO,WAET,CACED,UAAW,CAAC,sBACZC,MAAO,aAIbkC,SAAU,CACRtN,KAAM,yBACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CAAC,iBACZC,MAAO,WAET,CACED,UAAW,CAAC,sBACZC,MAAO,aAIbS,QAAS,CACP7L,KAAM,wBACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CAAC,iBACZC,MAAO,WAET,CACED,UAAW,CAAC,sBACZC,MAAO,aAIbO,MAAO,CACL3L,KAAM,sBACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CAAC,iBACZC,MAAO,WAET,CACED,UAAW,CAAC,sBACZC,MAAO,iBAQrBW,WAAY,CACV,iCACA,iCACA,iCACA,iCACA,iCACA,iCACA,iCACA,iCACA,mCCzmBJ,GACE/L,KAAM,iBACN0H,YAAa,0BACbC,SAAU,0BACVgF,oBAAqB,CAAC,6BACtB7E,aAAc,CACZ7H,QAAS,GACT8H,WAAY,EACZC,WAAY,IAEdC,SAAU,CACR,aAAc,CACZ3B,KAAM,UACNzJ,KAAM,CACJqL,MAAO,+CACPC,YAAa,qDAKbC,OAAQ,CACNwE,OAAQ,CAAC,GAAI,KACbC,OAAQ,CAAC,GAAI,KACbC,OAAQ,CAAC,GAAI,OAGjBxE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EACL,oBACD,mBACC,sBAKT,YAAa,CACXjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,8CACPC,YAAa,oDAKbC,OAAQ,CACNwE,OAAQ,CAAC,EAAG,KACZC,OAAQ,CAAC,EAAG,KACZC,OAAQ,CAAC,EAAG,OAGhBxE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,mBAAoB,mBAAoB,uBAIvD,iBAAkB,CAChBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,mDACPC,YAAa,yDAKbC,OAAQ,CACNwE,OAAQ,CAAC,GAAI,KACbC,OAAQ,CAAC,GAAI,KACbC,OAAQ,CAAC,GAAI,OAGjBxE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,mBAAoB,sBAItD,cAAe,CACbjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,gDACPC,YAAa,sDAKbC,OAAQ,CACNwE,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,OAGlBxE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,kBAAmB,mBAAoB,sBAIvD,YAAa,CACXjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,8CACPC,YAAa,oDAKbC,OAAQ,CACNwE,OAAQ,CAAC,EAAG,KACZC,OAAQ,CAAC,EAAG,KACZC,OAAQ,CAAC,EAAG,MAEdzE,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,iBAAkB,oBAAqB,uBAItD,eAAgB,CACdjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,iDACPC,YAAa,uDAKbC,OAAQ,CACNwE,OAAQ,CAAC,IAAK,IACdC,OAAQ,CAAC,IAAK,IACdC,OAAQ,CAAC,IAAK,MAGlBxE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,mBAAoB,mBAAoB,uBAIvD,oBAAqB,CACnBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,sDACPC,YACE,4DAKFC,OAAQ,CACNwE,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,MAEhBzE,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,mBAAoB,mBAAoB,sBAIvD,iBAAkB,CAChBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,mDACPC,YAAa,yDAKbC,OAAQ,CACNwE,OAAQ,CAAC,IAAK,IACdC,OAAQ,CAAC,IAAK,IACdC,OAAQ,CAAC,IAAK,MAGlBxE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,mBAAoB,oBAAqB,oBAIxD,aAAc,CACZjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,+CACPC,YAAa,qDAKbC,OAAQ,CACNwE,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,OAGlBxE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,mBAAoB,kBAAmB,uBAIvD,iBAAkB,CAChBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,mDACPC,YAAa,yDAKbC,OAAQ,CACNwE,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,MAEhBS,IAAK,SAEPjF,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,kBAAmB,uBAIrD,SAAU,CACRjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,2CACPC,YAAa,iDAKbC,OAAQ,CACNwE,OAAQ,CAAC,GAAI,KACbC,QAAQ,EACRC,QAAQ,GAEVzE,KAAK,GAEPoF,gBAAiB,CAAC,SAAU,UAC5BnF,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,kBAAmB,mBAAoB,uBAIvD,gBAAiB,CACfjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,kDACPC,YAAa,wDAKbC,OAAQ,CACNwE,OAAQ,CAAC,GAAI,KACbC,QAAQ,EACRC,QAAQ,GAEVzE,KAAK,GAEPoF,gBAAiB,CAAC,SAAU,UAC5BnF,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,kBAAmB,iBAAkB,uBAIrD,aAAc,CACZjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,+CACPC,YAAa,qDAKbC,OAAQ,CACNwE,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,OAGlBxE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,mBAAoB,kBAAmB,uBAIvD,aAAc,CACZjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,+CACPC,YAAa,qDAKbC,OAAQ,CACNwE,OAAQ,CAAC,EAAG,KACZC,QAAQ,EACRC,QAAQ,IAGZW,gBAAiB,CAAC,SAAU,UAC5BnF,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,iBAAkB,oBAAqB,uBAItD,YAAa,CACXjC,KAAM,YACNzJ,KAAM,CACJ4L,KAAM,oBACNC,aAAc,KACdC,OAAQ,CACNC,MAAM,EACNC,OAAO,GAMTT,OAAQ,CACNwE,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,KACdC,QAAQ,KAId,kBAAmB,CACjBxG,KAAM,UACNzJ,KAAM,CACJqL,MAAO,oDACPC,YAAa,0DAKbC,OAAQ,CACNwE,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,OAGlBxE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,kBAAmB,uBAIrD,cAAe,CACbjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,gDACPC,YAAa,sDACbC,OAAQ,CACNwE,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,OAGlBxE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,kBAAmB,uBAIrD,SAAU,CACRjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,2CACPC,YAAa,iDAKbC,OAAQ,CACNwE,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,OAGlBxE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,mBAAoB,kBAAmB,wBAKzDQ,WAAY,CACVC,QAAS,CACPC,MAAO,CACLC,SAAU,KACVC,WAAY,KACZC,SAAU,SAGd2D,UAAW,CACT9D,MAAO,CACLC,SAAU,KACVC,WAAY,KACZC,SAAU,UAIhBC,MAAO,CACLuD,OAAQ,CACNrD,gBAAiB,CACfH,SAAU,OACVF,SAAU,IACVM,SAAU,CACRoD,OAAQ,CACN1D,SAAU,KAEZ4D,OAAQ,CACN5D,SAAU,MAEZ2D,OAAQ,CACN3D,SAAU,QAIhB8D,kBAAmB,CACjB5D,SAAU,OACVF,SAAU,IACVM,SAAU,CACRoD,OAAQ,CACN1D,SAAU,KAEZ4D,OAAQ,CACN5D,SAAU,MAEZ2D,OAAQ,CACN3D,SAAU,QAIhBZ,WAAY,CACV2E,kBAAmB,GACnBC,OAAQ,CACN3E,OAAQ,CAAC,EAAG,IAAK,GACjB4E,OAAQ,CACNC,IAAK,IACLC,MAAO,QAKfP,OAAQ,CACNvD,gBAAiB,CACfH,SAAU,EACVF,SAAU,IACVM,SAAU,CACRoD,OAAQ,CACN1D,SAAU,MAEZ4D,OAAQ,CACN5D,SAAU,KAEZ2D,OAAQ,CACN3D,SAAU,OAIhB8D,kBAAmB,CACjB5D,SAAU,IACVF,SAAU,IACVM,SAAU,CACRoD,OAAQ,CACN1D,SAAU,MAEZ4D,OAAQ,CACN5D,SAAU,KAEZ2D,OAAQ,CACN3D,SAAU,OAIhBZ,WAAY,CACV2E,kBAAmB,GACnBC,OAAQ,CACN3E,OAAQ,CAAC,EAAG,IAAK,MACjB4E,OAAQ,CACNC,IAAK,IACLC,MAAO,QAKfR,OAAQ,CACNtD,gBAAiB,CACfH,SAAU,OACVF,SAAU,IACVM,SAAU,CACRoD,OAAQ,CACN1D,SAAU,MAEZ4D,OAAQ,CACN5D,SAAU,KAEZ2D,OAAQ,CACN3D,SAAU,OAIhB8D,kBAAmB,CACjB5D,SAAU,IACVF,SAAU,IACVM,SAAU,CACRoD,OAAQ,CACN1D,SAAU,MAEZ4D,OAAQ,CACN5D,SAAU,KAEZ2D,OAAQ,CACN3D,SAAU,OAIhBZ,WAAY,CACV2E,kBAAmB,GACnBC,OAAQ,CACN3E,OAAQ,CAAC,EAAG,IAAK,GACjB4E,OAAQ,CACNC,IAAK,IACLC,MAAO,SAMjB3D,UAAW,CACTC,eAAgB,YAChBC,eAAgB,CACdpC,GAAI,KACJC,EAAG,GACHoC,EAAG,KAELE,OAAO,EACPD,SAAU,CAAC,EAAG,EAAG,GACjBE,QAAS,CAAC,IAAM,MAChB5B,OAAQ,CAAE+B,MAAO,EAAGC,MAAO,KAAMC,OAAQ,OAAQC,OAAQ,QACzDC,qBAAsB,CAAC,IAAK,MAyB9BG,iBAAkB,CAChBxC,MAAO,0BACPyC,IAAK,mCACLC,eAAe,EACfvB,MAAO,CACLwB,OAAQ,wCACR5K,QAAS,SACTsI,OAAQ,CACNqE,OAAQ,0BACRC,OAAQ,0BACRC,OAAQ,4BAaZL,OAAQ,CACN,CACE5B,OAAQ,2CACR5K,QAAS,WACT8K,YAAa,CACX2B,SAAU,CACR1M,KAAM,yBACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CAAC,kBAAmB,eAC/BC,MAAO,WAET,CACED,UAAW,CAAC,uBACZC,MAAO,UACPiB,iBAAkB,WAEpB,CACElB,UAAW,CAAC,oBACZC,MAAO,WAET,CACED,UAAW,CAAC,eAAgB,wBAC5BC,MAAO,WAET,CACED,UAAW,CAAC,sBACZC,MAAO,aAIbO,MAAO,CACL3L,KAAM,sBACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CAAC,kBAAmB,eAC/BC,MAAO,WAET,CACED,UAAW,CAAC,uBACZC,MAAO,UACPiB,iBAAkB,QAEpB,CACElB,UAAW,CAAC,oBACZC,MAAO,WAET,CACED,UAAW,CAAC,eAAgB,wBAC5BC,MAAO,WAET,CACED,UAAW,CAAC,sBACZC,MAAO,YAMjB,CACEP,OAAQ,0DACR5K,QAAS,QACT8K,YAAa,CACX2B,SAAU,CACR1M,KAAM,yBACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CAAC,iBACZC,MAAO,WAET,CACED,UAAW,CAAC,aAAc,YAC1BC,MAAO,WAET,CACED,UAAW,CAAC,eACZC,MAAO,WAET,CACED,UAAW,CAAC,sBACZC,MAAO,aAIbO,MAAO,CACL3L,KAAM,sBACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CAAC,gBAAiB,aAAc,YAC3CC,MAAO,WAET,CACED,UAAW,CAAC,eACZC,MAAO,WAET,CACED,UAAW,CAAC,sBACZC,MAAO,iBAQrBW,WAAY,CACV,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,qCChtBJ,GACE/L,KAAM,cACN0H,YAAa,0BACbC,SAAU,sBACVgF,oBAAqB,CAAC,yBACtB7E,aAAc,CACZ7H,QAAS,GACT8H,WAAY,EACZC,WAAY,IAEdC,SAAU,CACR,aAAc,CACZ3B,KAAM,UACNzJ,KAAM,CACJqL,MAAO,+CACPC,YAAa,qDAKbC,OAAQ,CACNwE,OAAQ,CAAC,GAAI,KACbC,OAAQ,CAAC,GAAI,KACbC,OAAQ,CAAC,GAAI,OAGjBxE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EACL,oBACD,mBACC,sBAKT,YAAa,CACXjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,8CACPC,YAAa,oDAKbC,OAAQ,CACNwE,OAAQ,CAAC,EAAG,KACZC,OAAQ,CAAC,EAAG,KACZC,OAAQ,CAAC,EAAG,OAGhBxE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,mBAAoB,mBAAoB,uBAIvD,iBAAkB,CAChBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,mDACPC,YAAa,yDAKbC,OAAQ,CACNwE,OAAQ,CAAC,GAAI,KACbC,OAAQ,CAAC,GAAI,KACbC,OAAQ,CAAC,GAAI,OAGjBxE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,mBAAoB,sBAItD,cAAe,CACbjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,gDACPC,YAAa,sDAKbC,OAAQ,CACNwE,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,OAGlBxE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,kBAAmB,mBAAoB,sBAIvD,YAAa,CACXjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,8CACPC,YAAa,oDAKbC,OAAQ,CACNwE,OAAQ,CAAC,EAAG,KACZC,OAAQ,CAAC,EAAG,KACZC,OAAQ,CAAC,EAAG,MAEdzE,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,iBAAkB,oBAAqB,uBAItD,eAAgB,CACdjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,iDACPC,YAAa,uDAKbC,OAAQ,CACNwE,OAAQ,CAAC,IAAK,IACdC,OAAQ,CAAC,IAAK,IACdC,OAAQ,CAAC,IAAK,MAGlBxE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,mBAAoB,mBAAoB,uBAIvD,oBAAqB,CACnBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,sDACPC,YAAa,4DAKbC,OAAQ,CACNwE,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,MAEhBzE,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,mBAAoB,mBAAoB,sBAIvD,iBAAkB,CAChBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,mDACPC,YAAa,yDAKbC,OAAQ,CACNwE,OAAQ,CAAC,IAAK,IACdC,OAAQ,CAAC,IAAK,IACdC,OAAQ,CAAC,IAAK,MAGlBxE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,mBAAoB,oBAAqB,oBAIxD,aAAc,CACZjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,+CACPC,YAAa,qDAKbC,OAAQ,CACNwE,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,OAGlBxE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,mBAAoB,kBAAmB,uBAIvD,iBAAkB,CAChBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,mDACPC,YAAa,yDAKbC,OAAQ,CACNwE,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,MAEhBS,IAAK,SAEPjF,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,kBAAmB,uBAIrD,gBAAiB,CACfjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,2CACPC,YAAa,iDAKbC,OAAQ,CACNwE,OAAQ,CAAC,GAAI,KACbC,QAAQ,EACRC,QAAQ,GAEVzE,KAAK,GAEPoF,gBAAiB,CAAC,SAAU,UAC5BnF,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,kBAAmB,mBAAoB,uBAIvD,gBAAiB,CACfjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,kDACPC,YAAa,wDAKbC,OAAQ,CACNwE,OAAQ,CAAC,GAAI,KACbC,QAAQ,EACRC,QAAQ,GAEVzE,KAAK,GAEPoF,gBAAiB,CAAC,SAAU,UAC5BnF,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,kBAAmB,iBAAkB,uBAIrD,aAAc,CACZjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,+CACPC,YAAa,qDAKbC,OAAQ,CACNwE,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,OAGlBxE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,mBAAoB,kBAAmB,uBAIvD,YAAa,CACXjC,KAAM,YACNzJ,KAAM,CACJ4L,KAAM,oBACNC,aAAc,KACdC,OAAQ,CACNC,MAAM,EACNC,OAAO,GAMTT,OAAQ,CACNwE,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,KACdC,QAAQ,KAyBd,cAAe,CACbxG,KAAM,UACNzJ,KAAM,CACJqL,MAAO,gDACPC,YAAa,sDAKbC,OAAQ,CACNwE,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,OAGlBxE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,kBAAmB,uBAIrD,SAAU,CACRjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,2CACPC,YAAa,iDAKbC,OAAQ,CACNwE,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,OAGlBxE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,mBAAoB,kBAAmB,wBAKzDQ,WAAY,CACVC,QAAS,CACPC,MAAO,CACLC,SAAU,KACVC,WAAY,KACZC,SAAU,SAGd2D,UAAW,CACT9D,MAAO,CACLC,SAAU,KACVC,WAAY,KACZC,SAAU,QAIhBC,MAAO,CACLuD,OAAQ,CACNrD,gBAAiB,CACfH,SAAU,OACVF,SAAU,IACVM,SAAU,CACRoD,OAAQ,CACN1D,SAAU,KAEZ4D,OAAQ,CACN5D,SAAU,MAEZ2D,OAAQ,CACN3D,SAAU,QAIhB8D,kBAAmB,CACjB5D,SAAU,KACVF,SAAU,IACVM,SAAU,CACRoD,OAAQ,CACN1D,SAAU,KAEZ4D,OAAQ,CACN5D,SAAU,MAEZ2D,OAAQ,CACN3D,SAAU,QAIhBZ,WAAY,CACV2E,kBAAmB,GACnBC,OAAQ,CACN3E,OAAQ,CAAC,EAAG,IAAK,GACjB4E,OAAQ,CACNC,IAAK,IACLC,MAAO,QAKfP,OAAQ,CACNvD,gBAAiB,CACfH,SAAU,EACVF,SAAU,IACVM,SAAU,CACRoD,OAAQ,CACN1D,SAAU,MAEZ4D,OAAQ,CACN5D,SAAU,KAEZ2D,OAAQ,CACN3D,SAAU,OAIhB8D,kBAAmB,CACjB5D,SAAU,GACVF,SAAU,IACVM,SAAU,CACRoD,OAAQ,CACN1D,SAAU,MAEZ4D,OAAQ,CACN5D,SAAU,KAEZ2D,OAAQ,CACN3D,SAAU,OAIhBZ,WAAY,CACV2E,kBAAmB,GACnBC,OAAQ,CACN3E,OAAQ,CAAC,EAAG,IAAK,MACjB4E,OAAQ,CACNC,IAAK,IACLC,MAAO,QAKfR,OAAQ,CACNtD,gBAAiB,CACfH,SAAU,EACVF,SAAU,IACVM,SAAU,CACRoD,OAAQ,CACN1D,SAAU,MAEZ4D,OAAQ,CACN5D,SAAU,KAEZ2D,OAAQ,CACN3D,SAAU,OAIhB8D,kBAAmB,CACjB5D,SAAU,GACVF,SAAU,IACVM,SAAU,CACRoD,OAAQ,CACN1D,SAAU,MAEZ4D,OAAQ,CACN5D,SAAU,KAEZ2D,OAAQ,CACN3D,SAAU,OAIhBZ,WAAY,CACV2E,kBAAmB,GACnBC,OAAQ,CACN3E,OAAQ,CAAC,EAAG,IAAK,GACjB4E,OAAQ,CACNC,IAAK,IACLC,MAAO,SAMjB3D,UAAW,CACTC,eAAgB,YAChBC,eAAgB,CACdpC,GAAI,KACJC,EAAG,GACHoC,EAAG,KAELE,OAAO,EACPD,SAAU,CAAC,EAAG,EAAG,GACjBE,QAAS,CAAC,IAAM,MAChB5B,OAAQ,CAAE+B,MAAO,EAAGC,MAAO,KAAMC,OAAQ,IAAOC,OAAQ,GACxDC,qBAAsB,CAAC,IAAK,MAyB9BG,iBAAkB,CAChBxC,MAAO,8BACPyC,IAAK,mCACLC,eAAe,EACfvB,MAAO,CACLwB,OAAQ,wCACR5K,QAAS,SACTsI,OAAQ,CACNqE,OAAQ,0BACRC,OAAQ,0BACRC,OAAQ,4BAaZL,OAAQ,CACN,CACE5B,OAAQ,2CACR5K,QAAS,WACT8K,YAAa,CACX2B,SAAU,CACR1M,KAAM,yBACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CAAC,kBAAmB,eAC/BC,MAAO,WAET,CACED,UAAW,CAAC,uBACZC,MAAO,UACPiB,iBAAkB,WAEpB,CACElB,UAAW,CAAC,oBACZC,MAAO,WAET,CACED,UAAW,CAAC,eAAgB,wBAC5BC,MAAO,WAET,CACED,UAAW,CAAC,sBACZC,MAAO,aAIbO,MAAO,CACL3L,KAAM,sBACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CAAC,kBAAmB,eAC/BC,MAAO,WAET,CACED,UAAW,CAAC,uBACZC,MAAO,UACPiB,iBAAkB,QAEpB,CACElB,UAAW,CAAC,oBACZC,MAAO,WAET,CACED,UAAW,CAAC,eAAgB,wBAC5BC,MAAO,WAET,CACED,UAAW,CAAC,sBACZC,MAAO,YAMjB,CACEP,OAAQ,gDACR5K,QAAS,QACT8K,YAAa,CACXY,MAAO,CACL3L,KAAM,sBACNiL,YAAa,UACbC,aAAc,QAOxBa,WAAY,CACV,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,mCACA,mCACA,mCACA,mCACA,mCACA,mCACA,mCACA,mCACA,mCACA,mCACA,qCCrqBJ,GACE/L,KAAM,gBACN0H,YAAa,yBACbC,SAAU,0BACVgF,oBAAqB,CAAC,6BACtB7E,aAAc,CACZ7H,QAAS,GACT8H,WAAY,EACZC,WAAY,IAEdC,SAAU,CACR,aAAc,CACZ3B,KAAM,UACNzJ,KAAM,CACJqL,MAAO,8CACPC,YAAa,oDACb6D,YAAa,CACX0B,KAAM,CAAC,GAAI,KACXC,QAAS,CAAC,GAAI,MAEhBvF,OAAQ,CACNwE,OAAQ,CAAC,GAAI,KACbC,OAAQ,CAAC,GAAI,KACbC,OAAQ,CAAC,GAAI,OAGjBxE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EACL,oBACD,mBACC,sBAKT,YAAa,CACXjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,6CACPC,YAAa,mDACb6D,YAAa,CACX0B,KAAM,CAAC,EAAG,KACVC,QAAS,CAAC,EAAG,MAEfvF,OAAQ,CACNwE,OAAQ,CAAC,EAAG,KACZC,OAAQ,CAAC,EAAG,KACZC,OAAQ,CAAC,EAAG,OAGhBxE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,mBAAoB,mBAAoB,uBAIvD,iBAAkB,CAChBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,kDACPC,YAAa,wDACb6D,YAAa,CACX0B,KAAM,CAAC,GAAI,KACXC,QAAS,CAAC,GAAI,MAEhBvF,OAAQ,CACNwE,OAAQ,CAAC,GAAI,KACbC,OAAQ,CAAC,GAAI,KACbC,OAAQ,CAAC,GAAI,OAGjBxE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,mBAAoB,sBAItD,cAAe,CACbjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,+CACPC,YAAa,qDACb6D,YAAa,CACX0B,KAAM,CAAC,IAAK,KACZC,QAAS,CAAC,IAAK,MAEjBvF,OAAQ,CACNwE,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,OAGlBxE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,kBAAmB,mBAAoB,sBAIvD,YAAa,CACXjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,6CACPC,YAAa,mDACb6D,YAAa,CACX0B,KAAM,CAAC,EAAG,KACVC,QAAS,CAAC,EAAG,MAEfvF,OAAQ,CACNwE,OAAQ,CAAC,EAAG,KACZC,OAAQ,CAAC,EAAG,KACZC,OAAQ,CAAC,EAAG,MAEdzE,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,iBAAkB,oBAAqB,uBAItD,eAAgB,CACdjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,gDACPC,YAAa,sDACb6D,YAAa,CACX0B,KAAM,CAAC,IAAK,IACZC,QAAS,CAAC,IAAK,KAEjBvF,OAAQ,CACNwE,OAAQ,CAAC,IAAK,IACdC,OAAQ,CAAC,IAAK,IACdC,OAAQ,CAAC,IAAK,MAGlBxE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,mBAAoB,mBAAoB,uBAIvD,oBAAqB,CACnBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,qDACPC,YAAa,2DACb6D,YAAa,CACX0B,KAAM,CAAC,IAAK,KACZC,QAAS,CAAC,IAAK,MAEjBvF,OAAQ,CACNwE,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,MAEhBzE,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,mBAAoB,mBAAoB,sBAIvD,iBAAkB,CAChBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,kDACPC,YAAa,wDACb6D,YAAa,CACX0B,KAAM,CAAC,IAAK,IACZC,QAAS,CAAC,IAAK,KAEjBvF,OAAQ,CACNwE,OAAQ,CAAC,IAAK,IACdC,OAAQ,CAAC,IAAK,IACdC,OAAQ,CAAC,IAAK,MAGlBxE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,mBAAoB,oBAAqB,oBAIxD,aAAc,CACZjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,8CACPC,YAAa,oDACb6D,YAAa,CACX0B,KAAM,CAAC,IAAK,KACZC,QAAS,CAAC,IAAK,MAEjBvF,OAAQ,CACNwE,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,OAGlBxE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,mBAAoB,kBAAmB,uBAIvD,iBAAkB,CAChBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,kDACPC,YAAa,wDACb6D,YAAa,CACX0B,KAAM,CAAC,IAAK,KACZC,QAAS,CAAC,IAAK,MAEjBvF,OAAQ,CACNwE,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,MAEhBS,IAAK,SAEPjF,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,kBAAmB,uBAIrD,SAAU,CACRjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,0CACPC,YAAa,gDACb6D,YAAa,CACX0B,KAAM,CAAC,GAAI,KACXC,QAAS,CAAC,GAAI,MAEhBvF,OAAQ,CACNwE,OAAQ,CAAC,GAAI,KACbC,QAAQ,EACRC,QAAQ,GAEVzE,KAAK,GAEPoF,gBAAiB,CAAC,SAAU,UAC5BnF,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,kBAAmB,mBAAoB,uBAIvD,gBAAiB,CACfjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,iDACPC,YAAa,uDACb6D,YAAa,CACX0B,KAAM,CAAC,GAAI,KACXC,QAAS,CAAC,GAAI,MAEhBvF,OAAQ,CACNwE,OAAQ,CAAC,GAAI,KACbC,QAAQ,EACRC,QAAQ,GAEVzE,KAAK,GAEPoF,gBAAiB,CAAC,SAAU,UAC5BnF,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,kBAAmB,iBAAkB,uBAIrD,aAAc,CACZjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,8CACPC,YAAa,oDACb6D,YAAa,CACX0B,KAAM,CAAC,IAAK,KACZC,QAAS,CAAC,IAAK,MAEjBvF,OAAQ,CACNwE,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,OAGlBxE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,mBAAoB,kBAAmB,uBAIvD,YAAa,CACXjC,KAAM,YACNzJ,KAAM,CACJ4L,KAAM,oBACNC,aAAc,KACdC,OAAQ,CACNC,MAAM,EACNC,OAAO,GAETmD,YAAa,CACX0B,KAAM,CAAC,IAAK,KACZC,QAAS,CAAC,IAAK,MAEjBvF,OAAQ,CACNwE,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,KACdC,QAAQ,KAId,aAAc,CACZxG,KAAM,UACNzJ,KAAM,CACJqL,MAAO,8CACPC,YAAa,oDACb6D,YAAa,CACX0B,MAAM,EACNC,QAAS,CAAC,IAAK,MAEjBvF,OAAQ,CACNwE,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,OAGlBxE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,iBAAkB,mBAAoB,uBAKxDQ,WAAY,CACVC,QAAS,CACPC,MAAO,CACLC,SAAU,KACVC,WAAY,KACZC,SAAU,SAGd2D,UAAW,CACT9D,MAAO,CACLC,SAAU,KACVC,WAAY,KACZC,SAAU,UAIhBC,MAAO,CACLuD,OAAQ,CACNrD,gBAAiB,CACfH,SAAU,OACVF,SAAU,IACVM,SAAU,CACRoD,OAAQ,CACN1D,SAAU,KAEZ4D,OAAQ,CACN5D,SAAU,MAEZ2D,OAAQ,CACN3D,SAAU,QAIhB8D,kBAAmB,CACjB5D,SAAU,OACVF,SAAU,IACVM,SAAU,CACRoD,OAAQ,CACN1D,SAAU,KAEZ4D,OAAQ,CACN5D,SAAU,MAEZ2D,OAAQ,CACN3D,SAAU,QAIhBZ,WAAY,CACV2E,kBAAmB,GACnBC,OAAQ,CACN3E,OAAQ,CAAC,EAAG,IAAK,GACjB4E,OAAQ,CACNC,IAAK,IACLC,MAAO,QAKfP,OAAQ,CACNvD,gBAAiB,CACfH,SAAU,EACVF,SAAU,IACVM,SAAU,CACRoD,OAAQ,CACN1D,SAAU,MAEZ4D,OAAQ,CACN5D,SAAU,KAEZ2D,OAAQ,CACN3D,SAAU,OAIhB8D,kBAAmB,CACjB5D,SAAU,IACVF,SAAU,IACVM,SAAU,CACRoD,OAAQ,CACN1D,SAAU,MAEZ4D,OAAQ,CACN5D,SAAU,KAEZ2D,OAAQ,CACN3D,SAAU,OAIhBZ,WAAY,CACV2E,kBAAmB,GACnBC,OAAQ,CACN3E,OAAQ,CAAC,EAAG,IAAK,MACjB4E,OAAQ,CACNC,IAAK,IACLC,MAAO,QAKfR,OAAQ,CACNtD,gBAAiB,CACfH,SAAU,OACVF,SAAU,IACVM,SAAU,CACRoD,OAAQ,CACN1D,SAAU,MAEZ4D,OAAQ,CACN5D,SAAU,KAEZ2D,OAAQ,CACN3D,SAAU,OAIhB8D,kBAAmB,CACjB5D,SAAU,IACVF,SAAU,IACVM,SAAU,CACRoD,OAAQ,CACN1D,SAAU,MAEZ4D,OAAQ,CACN5D,SAAU,KAEZ2D,OAAQ,CACN3D,SAAU,OAIhBZ,WAAY,CACV2E,kBAAmB,GACnBC,OAAQ,CACN3E,OAAQ,CAAC,EAAG,IAAK,GACjB4E,OAAQ,CACNC,IAAK,IACLC,MAAO,SAMjB3D,UAAW,CACTC,eAAgB,YAChBC,eAAgB,CACdpC,GAAI,KACJC,EAAG,GACHoC,EAAG,KAELE,OAAO,EACPD,SAAU,CAAC,EAAG,EAAG,GACjBE,QAAS,CAAC,IAAM,MAChB5B,OAAQ,CAAE+B,MAAO,EAAGC,MAAO,KAAMC,OAAQ,OAAQC,OAAQ,QACzDC,qBAAsB,CAAC,IAAK,MAE9B0B,aAAc,CACZhM,QAAS,OACT2N,oBAAoB,EACpBC,qBAAqB,EACrBH,KAAM,CACJnC,KAAM,CACJoC,QAAS,GAEXrC,KAAM,CACJoC,KAAM,GAERI,aAAc,IAEhBH,QAAS,CACPpC,KAAM,CACJmC,KAAM,GAERpC,KAAM,CACJqC,QAAS,GAEXG,aAAc,CAAC,aAGnBpD,iBAAkB,CAChBxC,MAAO,yBACPyC,IAAK,iEACLC,eAAe,EACfvB,MAAO,CACLwB,OAAQ,wCACR5K,QAAS,SACTsI,OAAQ,CACNqE,OAAQ,0BACRC,OAAQ,0BACRC,OAAQ,4BAKZX,OAAQ,CACNtB,OAAQ,sCACR5K,QAAS,OACTsI,OAAQ,CACNmF,KAAM,yBACNC,QAAS,6BAGbvB,cAAe,CACbsB,KAAM,CACJ,CACE7C,OAAQ,2CACR5K,QAAS,WACT8K,YAAa,CACX2B,SAAU,CACR1M,KAAM,yBACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CAAC,kBAAmB,eAC/BC,MAAO,WAET,CACED,UAAW,CAAC,uBACZC,MAAO,UACPiB,iBAAkB,WAEpB,CACElB,UAAW,CAAC,oBACZC,MAAO,WAET,CACED,UAAW,CAAC,eAAgB,wBAC5BC,MAAO,WAET,CACED,UAAW,CAAC,sBACZC,MAAO,aAIboC,SAAU,CACRxN,KAAM,yBACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CAAC,kBAAmB,eAC/BC,MAAO,WAET,CACED,UAAW,CAAC,uBACZC,MAAO,UACPiB,iBAAkB,QAEpB,CACElB,UAAW,CAAC,oBACZC,MAAO,WAET,CACED,UAAW,CAAC,eAAgB,wBAC5BC,MAAO,WAET,CACED,UAAW,CAAC,sBACZC,MAAO,UAIb2C,OAAQ,CACN/N,KAAM,uBACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CAAC,kBAAmB,eAC/BC,MAAO,WAET,CACED,UAAW,CAAC,uBACZC,MAAO,UACPiB,iBAAkB,WAEpB,CACElB,UAAW,CAAC,eAAgB,wBAC5BC,MAAO,WAET,CACED,UAAW,CAAC,sBACZC,MAAO,aAIb4C,SAAU,CACRhO,KAAM,yBACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CAAC,kBAAmB,eAC/BC,MAAO,WAET,CACED,UAAW,CAAC,uBACZC,MAAO,UACPiB,iBAAkB,WAEpB,CACElB,UAAW,CAAC,eAAgB,wBAC5BC,MAAO,WAET,CACED,UAAW,CAAC,sBACZC,MAAO,eAMjB,CACEP,OAAQ,wDACR5K,QAAS,QACT8K,YAAa,CACX2B,SAAU,CACR1M,KAAM,yBACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CAAC,iBACZC,MAAO,WAET,CACED,UAAW,CAAC,sBACZC,MAAO,aAIbO,MAAO,CACL3L,KAAM,sBACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CAAC,iBACZC,MAAO,WAET,CACED,UAAW,CAAC,sBACZC,MAAO,aAIb2C,OAAQ,CACN/N,KAAM,uBACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CAAC,iBACZC,MAAO,WAET,CACED,UAAW,CAAC,sBACZC,MAAO,aAIb4C,SAAU,CACRhO,KAAM,yBACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CAAC,iBACZC,MAAO,WAET,CACED,UAAW,CAAC,sBACZC,MAAO,gBAOnBuC,QAAS,CACP,CACE9C,OAAQ,2CACR5K,QAAS,WACT8K,YAAa,CACX2B,SAAU,CACR1M,KAAM,yBACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CAAC,kBAAmB,eAC/BC,MAAO,WAET,CACED,UAAW,CAAC,uBACZC,MAAO,UACPiB,iBAAkB,WAEpB,CACElB,UAAW,CAAC,oBACZC,MAAO,WAET,CACED,UAAW,CAAC,eAAgB,wBAC5BC,MAAO,WAET,CACED,UAAW,CAAC,sBACZC,MAAO,eAMjB,CACEP,OAAQ,wDACR5K,QAAS,QACT8K,YAAa,CACX2B,SAAU,CACR1M,KAAM,yBACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CAAC,iBACZC,MAAO,WAET,CACED,UAAW,CAAC,sBACZC,MAAO,aAIbO,MAAO,CACL3L,KAAM,sBACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CAAC,iBACZC,MAAO,WAET,CACED,UAAW,CAAC,sBACZC,MAAO,aAIb2C,OAAQ,CACN/N,KAAM,uBACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CAAC,iBACZC,MAAO,WAET,CACED,UAAW,CAAC,sBACZC,MAAO,aAIb4C,SAAU,CACRhO,KAAM,yBACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CAAC,iBACZC,MAAO,WAET,CACED,UAAW,CAAC,sBACZC,MAAO,kBASvBW,WAAY,CACV,iCACA,iCACA,iCACA,iCACA,iCACA,iCACA,iCACA,iCACA,iCACA,kCACA,oCCrzBJ,GACE/L,KAAM,oBACN0H,YAAa,4BACbC,SAAU,6BACVC,mBAAoB,UACpBE,aAAc,CACZ7H,QAAS,GACT8H,WAAY,GACZC,WAAY,IAEdH,oBAAqB,CAAC,EAAG,IAAK,GAC9BoG,WAAY,CACVhO,QAAS,IACT8H,WAAY,GACZC,WAAY,KAEdkG,aAAc,UACdC,IAAK,CACHC,MAAO,GACPC,IAAK,IAEPpG,SAAU,CACR,aAAc,CACZ3B,KAAM,UACNzJ,KAAM,CACJqL,MAAO,gDACPC,YAAa,sDACbC,OAAQ,CAAC,IAAK,IACdC,KAAK,EACLQ,OAAO,GAETP,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,mBAAoB,mBAAoB,sBAIvD,YAAa,CACXjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,+CACPC,YAAa,qDACbC,OAAQ,CAAC,GAAI,MAEfE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,mBAAqB,mBAAoB,sBAIxD,iBAAkB,CAChBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,oDACPC,YAAa,0DACbC,OAAQ,CAAC,IAAK,KACdC,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,mBAAqB,kBAAmB,uBAIxD,aAAc,CACZjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,gDACPC,YAAa,sDACbC,OAAQ,CACNkG,QAAS,CAAC,GAAI,KACdzB,QAAQ,GAEVN,4BAA4B,EAC5BlE,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,kBAAmB,mBAAoB,uBAIvD,aAAc,CACZjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,gDACPC,YAAa,sDACbC,OAAQ,CAAC,GAAI,KACbC,KAAK,EACLQ,OAAO,GAETP,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EACL,mBACD,oBACC,uBAKT,UAAW,CACTjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,4CACPC,YAAa,kDACbC,OAAQ,CAAC,GAAI,MAEfE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,mBAAoB,sBAItD,4BAA6B,CAC3BjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,+DACPC,YACE,qEACFC,OAAQ,CACNkG,QAAS,CAAC,IAAK,KACfzB,QAAQ,GAEVrE,YAAa,QACb+D,4BAA4B,EAC5BlE,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,mBAAoB,oBAAqB,uBAIxD,mBAAoB,CAClBjC,KAAM,YACNzJ,KAAM,CACJ4L,KAAM,qDACNC,aAAc,KACdC,OAAQ,CACNN,KAAK,EACLkG,QAAQ,GAEVnG,OAAQ,CAAC,GAAI,MAEfE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,kBAAmB,mBAAoB,sBAIvD,cAAe,CACbjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,iDACPC,YAAa,uDACbC,OAAQ,CACNkG,QAAS,CAAC,IAAK,KACfzB,QAAQ,GAEVN,4BAA4B,EAC5BlE,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,mBAAoB,sBAItD,cAAe,CACbjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,iDACPC,YAAa,uDACbC,OAAQ,CAAC,GAAI,KACbC,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,mBAAqB,mBAAoB,uBAIxD,SAAU,CACRjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,4CACPC,YAAa,kDACbC,OAAQ,CAAC,IAAK,IACdC,KAAK,EACLO,MAAM,GAERN,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,mBAAoB,mBAAoB,uBAIvD,WAAY,CACVjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,8CACPC,YAAa,oDACbC,OAAQ,CAAC,IAAK,KACdC,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,mBAAoB,uBAItD,YAAa,CACXjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,+CACPC,YAAa,qDACbC,OAAQ,CAAC,GAAI,KACbC,KAAK,EACLQ,OAAO,GAETP,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,kBAAmB,mBAAoB,uBAIvD,kBAAmB,CACjBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,qDACPC,YAAa,2DACbC,OAAQ,CACNkG,QAAS,CAAC,IAAK,KACfzB,QAAQ,IAGZvE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,kBAAmB,wBAmBvDmB,UAAW,CACTC,eAAgB,mBAChBC,eAAgB,CACdpC,GAAI,MACJC,EAAG,KACHoC,EAAG,OAELC,SAAU,CAAC,EAAG,EAAG,GACjB0E,OAAO,EACPC,QAAS,CAAC,KAAM,QAChBrG,OAAQ,CACN+B,MAAO,EACPC,MAAO,MACPC,OAAQ,EACRC,OAAQ,OAEVC,qBAAsB,CAAC,GAAI,KAC3BmE,cAAe,CACb,CACEC,MAAO,CAAC,EAAK,OACbC,KAAM,UAER,CACED,MAAO,CAAC,EAAK,GACbC,KAAM,aAIZ7F,WAAY,CACVC,QAAS,CACPC,MAAO,CACLC,SAAU,IACVC,WAAY,EACZC,SAAU,KAIhBC,MAAO,CACLiF,QAAS,CACP/E,gBAAiB,CACfH,SAAU,MACVF,SAAU,IACVM,SAAU,CACRqD,OAAQ,CACN3D,SAAU,SAKlB2D,OAAQ,CACNtD,gBAAiB,CACfH,SAAU,EACVF,SAAU,IACVM,SAAU,CACRqD,OAAQ,CACN3D,SAAU,UAMpBwB,iBAAkB,CAChBxC,MAAO,4BACPyC,IAAK,mEACLC,eAAe,EACfvB,MAAO,CACLwB,OAAQ,wCACR5K,QAAS,UACTsI,OAAQ,CACN+F,QAAS,2BACTzB,OAAQ,6BAIdd,WAAY,CACV,mCACA,qCC9UJ,GACE/L,KAAM,0BACN0H,YAAa,kCACbC,SAAU,mBACVE,oBAAqB,CAAC,EAAG,IAAK,KAC9BC,aAAc,CACZ7H,QAAS,GACT8H,WAAY,GACZC,WAAY,IAEdC,SAAU,CACR,aAAc,CACZ3B,KAAM,UACNzJ,KAAM,CACJqL,MAAO,uDACPC,YACE,6DACFC,OAAQ,CACNwE,OAAQ,CAAC,GAAI,KACbiC,MAAO,CAAC,GAAI,KACZhC,OAAQ,CAAC,GAAI,OAGjBvE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,mBAAqB,mBAAoB,uBAIxD,YAAa,CACXjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,sDACPC,YACE,4DACFC,OAAQ,CACNwE,OAAQ,CAAC,EAAG,KACZiC,MAAO,CAAC,EAAG,KACXhC,OAAQ,CAAC,EAAG,OAGhBvE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,oBAAsB,mBAAoB,sBAIzD,iBAAkB,CAChBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,2DACPC,YACE,iEACFC,OAAQ,CACNwE,OAAQ,CAAC,IAAK,KACdiC,MAAO,CAAC,IAAK,KACbhC,OAAQ,CAAC,IAAK,OAGlBvE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,kBAAmB,uBAuBrD,WAAY,CACVjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,qDACPC,YAAa,2DACbC,OAAQ,CACNwE,OAAQ,CAAC,IAAK,IACdiC,MAAO,CAAC,IAAK,IACbhC,OAAQ,CAAC,IAAK,KAEhBxE,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,mBAAoB,mBAAoB,uBAIvD,aAAc,CACZjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,uDACPC,YACE,6DACFC,OAAQ,CACNwE,OAAQ,CAAC,IAAK,KACdiC,MAAO,CAAC,IAAK,IACbhC,QAAQ,GAEVxE,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,mBAAoB,uBAItD,iBAAkB,CAChBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,2DACPC,YACE,iEACFC,OAAQ,CACNwE,OAAQ,CAAC,GAAI,KACbiC,MAAO,CAAC,EAAG,IACXhC,QAAQ,GAEVxE,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,mBAAoB,mBAAoB,uBAIxD,iBAAkB,CAChBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,2DACPC,YACE,iEACFC,OAAQ,CACNwE,OAAQ,CAAC,IAAK,KACdiC,MAAO,CAAC,IAAK,KACbhC,OAAQ,CAAC,IAAK,MAEhBxE,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,mBAAoB,mBAAoB,sBAIxD,iBAAkB,CAChBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,2DACPC,YACE,iEACFC,OAAQ,CACNwE,OAAQ,CAAC,GAAI,KACbiC,MAAO,CAAC,GAAI,KACZhC,OAAQ,CAAC,GAAI,MAEfxE,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAoB,oBAAqB,uBAIxD,YAAa,CACXjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,sDACPC,YACE,4DACFC,OAAQ,CACNwE,OAAQ,CAAC,EAAG,KACZiC,MAAO,CAAC,EAAG,KACXhC,OAAQ,CAAC,EAAG,MAEdxE,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,mBAAoB,sBAItD,cAAe,CACbjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,wDACPC,YACE,8DACFC,OAAQ,CACNwE,OAAQ,CAAC,IAAK,IACdiC,MAAO,CAAC,IAAK,IACbhC,OAAQ,CAAC,IAAK,KAEhBxE,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,mBAAoB,mBAAoB,sBAIvD,eAAgB,CACdjC,KAAM,YACNzJ,KAAM,CACJ4L,KAAM,wDACNC,aAAc,KACdC,OAAQ,CACNC,MAAM,EACNC,OAAO,GAETT,OAAQ,CACNwE,OAAQ,CAAC,IAAK,KACdiC,MAAO,CAAC,IAAK,KACbhC,OAAQ,CAAC,IAAK,OAGlBvE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,mBAAoB,mBAAoB,uBAKzDmB,UAAW,CACTC,eAAgB,eAChBC,eAAgB,CACdpC,GAAI,KACJC,EAAG,GACHoC,GAAI,MAENC,SAAU,CAAC,EAAG,EAAG,GACjBC,OAAO,EACPC,QAAS,EAAE,KAAM,OACjBC,MAAO,GACP7B,OAAQ,CACN+B,MAAO,MACPC,MAAO,EACPC,OAAQ,OACRC,OAAQ,QAEVC,qBAAsB,CAAC,IAAK,KAE5BE,cAAc,GAEhB1B,WAAY,CACVC,QAAS,CACPC,MAAO,CACLC,SAAU,KACVC,WAAY,OACZC,SAAU,UAIhBC,MAAO,CACLuD,OAAQ,CACNrD,gBAAiB,CACfH,SAAU,OACVF,SAAU,IACVM,SAAU,CACRqF,MAAO,CACL3F,SAAU,KAEZ2D,OAAQ,CACN3D,SAAU,OAIhBZ,WAAY,CACV2E,kBAAmB,GACnBC,OAAQ,CACN3E,OAAQ,CAAC,EAAG,IAAK,KACjB4E,OAAQ,CACNC,IAAK,IACLC,MAAO,QAKfwB,MAAO,CACLtF,gBAAiB,CACfH,SAAU,OACVF,SAAU,KAEZZ,WAAY,CACV2E,kBAAmB,GACnBC,OAAQ,CACN3E,OAAQ,CAAC,EAAG,IAAK,KACjB4E,OAAQ,CACNC,IAAK,IACLC,MAAO,QAKfR,OAAQ,CACNtD,gBAAiB,CACfH,SAAU,OACVF,SAAU,IACVM,SAAU,CACRoD,OAAQ,CACN1D,SAAU,KAEZ2F,MAAO,CACL3F,SAAU,OAIhBZ,WAAY,CACV2E,kBAAmB,GACnBC,OAAQ,CACN3E,OAAQ,CAAC,EAAG,IAAK,GACjB4E,OAAQ,CACNC,IAAK,IACLC,MAAO,SAMjB3C,iBAAkB,CAChBxC,MAAO,kCACPyC,IACE,2EACFC,eAAe,EACfvB,MAAO,CACLwB,OAAQ,wCACR5K,QAAS,SACTsI,OAAQ,CACNqE,OAAQ,0BACRiC,MAAO,yBACPhC,OAAQ,4BAGZJ,OAAQ,CACN,CACE5B,OAAQ,2CACR5K,QAAS,WACT8K,YAAa,CACX2B,SAAU,CACR1M,KAAM,yBACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CACT,kBACA,qBACA,sBACA,gBAEFC,MAAO,UACPiB,iBAAkB,WAEpB,CACElB,UAAW,CAAC,WACZC,MAAO,UACPiB,iBAAkB,WAEpB,CACElB,UAAW,CAAC,gBACZC,MAAO,UACPiB,iBAAkB,WAEpB,CACElB,UAAW,CAAC,gBACZC,MAAO,iBAQrBW,WAAY,CACV,0CACA,0CACA,0CACA,0CACA,0CACA,4CCzYJ,GACE/L,KAAM,wBACN0H,YAAa,iCACbC,SAAU,mBACVE,oBAAqB,CAAC,EAAG,IAAK,KAC9BC,aAAc,CACZ7H,QAAS,GACT8H,WAAY,GACZC,WAAY,IAEdC,SAAU,CACR,aAAc,CACZ3B,KAAM,UACNzJ,KAAM,CACJqL,MAAO,sDACPC,YACE,4DACFC,OAAQ,CACNwE,OAAQ,CAAC,GAAI,KACbiC,MAAO,CAAC,GAAI,KACZhC,OAAQ,CAAC,GAAI,OAGjBvE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,mBAAqB,mBAAoB,uBAIxD,YAAa,CACXjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,qDACPC,YAAa,2DACbC,OAAQ,CACNwE,OAAQ,CAAC,EAAG,KACZiC,MAAO,CAAC,EAAG,KACXhC,OAAQ,CAAC,EAAG,OAGhBvE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,oBAAsB,mBAAoB,sBAIzD,iBAAkB,CAChBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,0DACPC,YACE,gEACFC,OAAQ,CACNwE,OAAQ,CAAC,IAAK,KACdiC,MAAO,CAAC,IAAK,KACbhC,OAAQ,CAAC,IAAK,OAGlBvE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,kBAAmB,uBAuBrD,WAAY,CACVjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,oDACPC,YAAa,0DACbC,OAAQ,CACNwE,OAAQ,CAAC,IAAK,IACdiC,MAAO,CAAC,IAAK,IACbhC,OAAQ,CAAC,IAAK,KAEhBxE,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,mBAAoB,mBAAoB,uBAIvD,aAAc,CACZjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,sDACPC,YACE,4DACFC,OAAQ,CACNwE,OAAQ,CAAC,IAAK,KACdiC,MAAO,CAAC,IAAK,IACbhC,QAAQ,GAEVxE,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,mBAAoB,uBAItD,iBAAkB,CAChBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,0DACPC,YACE,gEACFC,OAAQ,CACNwE,OAAQ,CAAC,GAAI,KACbiC,MAAO,CAAC,EAAG,IACXhC,QAAQ,GAEVxE,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,mBAAoB,mBAAoB,uBAIxD,iBAAkB,CAChBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,0DACPC,YACE,gEACFC,OAAQ,CACNwE,OAAQ,CAAC,IAAK,KACdiC,MAAO,CAAC,IAAK,KACbhC,OAAQ,CAAC,IAAK,MAEhBxE,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,mBAAoB,mBAAoB,sBAIxD,iBAAkB,CAChBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,0DACPC,YACE,gEACFC,OAAQ,CACNwE,OAAQ,CAAC,GAAI,KACbiC,MAAO,CAAC,GAAI,KACZhC,OAAQ,CAAC,GAAI,MAEfxE,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAoB,oBAAqB,uBAIxD,YAAa,CACXjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,qDACPC,YAAa,2DACbC,OAAQ,CACNwE,OAAQ,CAAC,EAAG,KACZiC,MAAO,CAAC,EAAG,KACXhC,OAAQ,CAAC,EAAG,MAEdxE,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,mBAAoB,sBAItD,cAAe,CACbjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,uDACPC,YACE,6DACFC,OAAQ,CACNwE,OAAQ,CAAC,IAAK,IACdiC,MAAO,CAAC,IAAK,IACbhC,OAAQ,CAAC,IAAK,KAEhBxE,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,mBAAoB,mBAAoB,sBAIvD,eAAgB,CACdjC,KAAM,YACNzJ,KAAM,CACJ4L,KAAM,uDACNC,aAAc,KACdC,OAAQ,CACNC,MAAM,EACNC,OAAO,GAETT,OAAQ,CACNwE,OAAQ,CAAC,IAAK,KACdiC,MAAO,CAAC,IAAK,KACbhC,OAAQ,CAAC,IAAK,OAGlBvE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,mBAAoB,mBAAoB,uBAKzDmB,UAAW,CACTC,eAAgB,eAChBC,eAAgB,CACdpC,GAAI,KACJC,EAAG,GACHoC,GAAI,MAENC,SAAU,CAAC,EAAG,EAAG,GACjBC,OAAO,EACPC,QAAS,EAAE,KAAM,OACjBC,MAAO,GACP7B,OAAQ,CACN+B,MAAO,MACPC,MAAO,EACPC,OAAQ,OACRC,OAAQ,QAEVC,qBAAsB,CAAC,IAAK,KAE5BE,cAAc,GAEhB1B,WAAY,CACVC,QAAS,CACPC,MAAO,CACLC,SAAU,KACVC,WAAY,OACZC,SAAU,UAIhBC,MAAO,CACLuD,OAAQ,CACNrD,gBAAiB,CACfH,SAAU,OACVF,SAAU,IACVM,SAAU,CACRqF,MAAO,CACL3F,SAAU,KAEZ2D,OAAQ,CACN3D,SAAU,OAIhBZ,WAAY,CACV2E,kBAAmB,GACnBC,OAAQ,CACN3E,OAAQ,CAAC,EAAG,IAAK,KACjB4E,OAAQ,CACNC,IAAK,IACLC,MAAO,QAKfwB,MAAO,CACLtF,gBAAiB,CACfH,SAAU,OACVF,SAAU,KAEZZ,WAAY,CACV2E,kBAAmB,GACnBC,OAAQ,CACN3E,OAAQ,CAAC,EAAG,IAAK,KACjB4E,OAAQ,CACNC,IAAK,IACLC,MAAO,QAKfR,OAAQ,CACNtD,gBAAiB,CACfH,SAAU,OACVF,SAAU,IACVM,SAAU,CACRoD,OAAQ,CACN1D,SAAU,KAEZ2F,MAAO,CACL3F,SAAU,OAIhBZ,WAAY,CACV2E,kBAAmB,GACnBC,OAAQ,CACN3E,OAAQ,CAAC,EAAG,IAAK,GACjB4E,OAAQ,CACNC,IAAK,IACLC,MAAO,SAMjB3C,iBAAkB,CAChBxC,MAAO,iCACPyC,IACE,yEACFC,eAAe,EACfvB,MAAO,CACLwB,OAAQ,wCACR5K,QAAS,SACTsI,OAAQ,CACNqE,OAAQ,0BACRiC,MAAO,yBACPhC,OAAQ,4BAGZJ,OAAQ,CACN,CACE5B,OAAQ,2CACR5K,QAAS,WACT8K,YAAa,CACX2B,SAAU,CACR1M,KAAM,yBACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CACT,kBACA,qBACA,sBACA,gBAEFC,MAAO,UACPiB,iBAAkB,WAEpB,CACElB,UAAW,CAAC,WACZC,MAAO,UACPiB,iBAAkB,WAEpB,CACElB,UAAW,CAAC,gBACZC,MAAO,iBAQrBW,WAAY,CACV,yCACA,yCACA,yCACA,yCACA,yCACA,yCACA,2C,yCCjYJ,GACE/L,KAAM,wBACN0H,YAAa,gCACbC,SAAU,wCACVE,oBAAqB,CAAC,EAAG,EAAG,GAC5BC,aAAc,CACZ7H,QAAS,IACT8H,WAAY,EACZC,WAAY,KAEdiG,WAAY,CACVhO,QAAS,IACT8H,WAAY,GACZC,WAAY,KAEdC,SAAU,CACR,aAAc,CACZ3B,KAAM,UACNzJ,KAAM,CACJqL,MAAO,oDACPC,YAAa,0DACbC,OAAQ,CAAC,IAAK,IACdQ,MAAM,EACN4D,6BAA6B,GAE/BlE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,oBAAqB,mBAEnDuG,mBAAmB,IAGvB,aAAc,CACZxI,KAAM,UACNzJ,KAAM,CACJqL,MAAO,oDACPC,YAAa,0DACbC,OAAQ,CAAC,IAAK,KACdQ,MAAM,EACN4D,6BAA6B,EAC7BnE,KAAK,EACLkE,4BAA4B,GAE9BjE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,kBAAmB,mBAAoB,oBAEnDuG,mBAAmB,IAGvB,WAAY,CACVxI,KAAM,UACNzJ,KAAM,CACJ4L,KAAM,iDACNL,OAAQ,CAAC,IAAK,MAEhBE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,mBAAoB,mBAAoB,qBAEpDuG,mBAAmB,GAErBC,KAAM,CACJ7G,MAAO,uDACP8G,KAAM,sDACNC,IAAKC,IAGT,cAAe,CACb5I,KAAM,UACNzJ,KAAM,CACJqL,MAAO,qDACPC,YAAa,2DACbC,OAAQ,CAAC,IAAK,MAEhBE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,mBAAoB,oBAAqB,sBAGtDuG,mBAAmB,GAErB,iBAAkB,CAChBxI,KAAM,UACNzJ,KAAM,CACJqL,MAAO,wDACPC,YACE,8DACFC,OAAQ,CAAC,IAAK,KACdC,KAAK,EACLkE,4BAA4B,GAE9BjE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,kBAAmB,oBAAqB,qBAGtDuG,mBAAmB,GAErB,kBAAmB,CACjBxI,KAAM,UACNzJ,KAAM,CACJqL,MAAO,yDACPC,YACE,+DACFC,OAAQ,CAAC,IAAK,KACdC,KAAK,EACLkE,4BAA4B,GAE9BjE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,kBAAmB,mBAAoB,uBAIvD,eAAgB,CACdjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,sDACPC,YACE,4DACFC,OAAQ,CAAC,IAAK,MAEhBE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,mBAAoB,sBAItD,iBAAkB,CAChBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,wDACPC,YACE,8DACFC,OAAQ,CAAC,IAAK,IACdC,KAAK,EACLkE,4BAA4B,GAE9BjE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,mBAAoB,kBAAmB,uBAKxDQ,WAAY,CACVC,QAAS,CACPC,MAAO,CACLC,SAAU,KACVC,WAAY,MACZC,SAAU,UAIhBsB,iBAAkB,CAChBxC,MAAO,+BACPiH,QAAS,mCACTxE,IACE,6EACF8B,OAAQ,CACN,CACE5B,OAAQ,qCACR5K,QAAS,QACT8K,YAAa,CACXY,MAAO,CACL3L,KAAM,2BACNiL,YAAa,UACbC,aAAc,GACdG,OAAQ,CACNG,sBAAuB,CACrB,CACEC,OAAQ,QACRC,WAAY,oBAEd,CACED,OAAQ,YACRC,WAAY,wBAEd,CACED,OAAQ,SACRC,WAAY,qBAEd,CACED,OAAQ,WACRC,WAAY,uBAEd,CACED,OAAQ,QACRC,WAAY,oBAEd,CACED,OAAQ,YACRC,WAAY,wBAEd,CACED,OAAQ,SACRC,WAAY,4BAiD5BK,WAAY,CACV,uCACA,uCACA,yCC3PJ,GACI/L,KAAM,4BACN0H,YAAa,oCACbC,SAAU,aAEVG,aAAc,CACZ7H,QAAS,GACT8H,WAAY,EACZC,WAAY,IAEdC,SAAU,CACR,gBAAiB,CACf3B,KAAM,UACNzJ,KAAM,CACJqL,MAAO,4DACPC,YAAa,kEACbC,OAAQ,CAAC,EAAG,MAEdE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,oBAAsB,mBAAoB,uBAI1D,gBAAiB,CACfjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,4DACPC,YAAa,kEACbC,OAAQ,CAAC,EAAG,MAEdE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,mBAAqB,kBAAmB,sBAIxD,gBAAiB,CACfjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,4DACPC,YAAa,kEACbC,OAAQ,CAAC,EAAG,MAEdE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,oBAAsB,mBAAoB,uBAI1D,gBAAiB,CACfjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,4DACPC,YAAa,kEACbC,OAAQ,CAAC,EAAG,MAEdE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,kBAAmB,kBAAmB,wBAKxDmC,iBAAkB,CAChBxC,MAAO,oCACPyC,IAAK,mCACLC,eAAe,EACf6B,OAAQ,CACN,CACE5B,OAAQ,2CACR5K,QAAS,QACT8K,YAAa,CACXY,MAAO,CACL3L,KAAM,sBACNiL,YAAa,UACbC,aAAc,QAOxBa,WAAY,CACV,4CACA,4CACA,4CACA,8CCvFN,GACE/L,KAAM,kBACN0H,YAAa,4BACbC,SAAU,sCACVG,aAAc,CACZ7H,QAAS,EACT8H,WAAY,EACZC,WAAY,GAEdmG,IAAK,CACHC,MAAO,GACPC,IAAK,IAEPe,MAAO,CACLlJ,SAAU,CAAC,EAAG,IAAK,GACnBmJ,UAAW,CAAC,KAAM,IAAK,KACvBC,UAAW,MAEbrH,SAAU,CACR,wBAAyB,CACvB3B,KAAM,UACNzJ,KAAM,CACJqL,MAAO,4DACPC,YACE,kEACFC,OAAQ,CAAC,IAAK,MAEhBE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,kBAAmB,mBAAoB,uBAIvD,gBAAiB,CACfjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,oDACPC,YAAa,0DACbC,OAAQ,CAAC,IAAK,MAEhBE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,kBAAmB,oBAAqB,uBAIxD,aAAc,CACZjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,iDACPC,YAAa,uDACbC,OAAQ,CAAC,IAAK,MAEhBE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,kBAAmB,kBAAmB,wBAKxDQ,WAAY,CACVC,QAAS,CACPC,MAAO,CACLC,SAAU,KACVC,WAAY,EACZC,SAAU,UAIhBsB,iBAAkB,CAChBxC,MAAO,4BACPyC,IAAK,iEACL8B,OAAQ,CACN,CACE5B,OAAQ,qCACR5K,QAAS,UACT8K,YAAa,CACXwE,QAAS,CACPvP,KAAM,wBACNiL,YAAa,UACbuE,eAAgB,QAChBtE,aAAc,CACZ,CACEC,UAAW,CACT,2BACA,6BAEFC,MAAO,WAET,CACED,UAAW,CAAC,oBACZC,MAAO,WAET,CACED,UAAW,CAAC,mBACZC,MAAO,aAIboC,SAAU,CACRxN,KAAM,yBACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CACT,kBACA,2BACA,6BAEFC,MAAO,WAET,CACED,UAAW,CAAC,oBACZC,MAAO,kB,qVCrGvB,IACEpL,KAAM,eACN0H,YAAa,0BACbC,SAAU,kBACVE,oBAAqB,CAAC,EAAG,IAAK,GAC9BD,mBAAoB,WACpBE,aAAc,CACZ7H,QAAS,GACT8H,WAAY,KACZC,WAAY,IAEdkG,aAAc,SACdD,WAAY,CACVhO,QAAS,IACT8H,WAAY,IACZC,WAAY,KAEdmG,IAAK,CACHC,MAAO,GACPC,IAAK,IAEPe,MAAO,CACLC,UAAW,EAAE,IAAM,IAAK,KACxBC,UAAW,KAEbG,WAAY,CAAC,WACbxH,SAAU,CACR,eAAgB,CACd3B,KAAM,UACNzJ,KAAM,CACJ4L,KAAM,gDACNuD,YAAa,CACX0D,MAAO,CAAC,EAAG,KACXC,YAAY,GAEdvH,OAAQ,CACNwH,UAAU,EACVC,UAAW,CAAC,EAAG,OAGnBpC,gBAAiB,CAAC,YAClBqC,mBAAoB,cACpBf,KAAM,CACJ7G,MAAO,sDACP8G,KAAM,qDACNC,IAAKc,GAEPzH,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,mBAAoB,oBAAqB,sBAIxD,cAAe,CACbjC,KAAM,UACNzJ,KAAM,CACJ4L,KAAM,gDACNuD,YAAa,CACX0D,MAAO,CAAC,EAAG,KACXC,YAAY,GAEdvH,OAAQ,CACNwH,SAAU,CAAC,EAAG,KACdC,WAAW,IAGfpC,gBAAiB,CAAC,aAClBqC,mBAAoB,eACpBf,KAAM,CACJ7G,MAAO,sDACP8G,KAAM,qDACNC,IAAKc,GAEPzH,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,mBAAoB,oBAAqB,sBAIxD,iBAAkB,CAChBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,mDACPC,YAAa,yDACb6D,YAAa,CACX0D,MAAO,CAAC,IAAK,IACbC,YAAY,IAGhBrH,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,eAAgB,oBAAqB,sBAIpD,YAAa,CACXjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,8CACPC,YAAa,oDACb6D,YAAa,CACX0D,MAAO,CAAC,IAAK,IACbC,YAAY,IAGhBrH,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,oBAAqB,sBAIvD,qBAAsB,CACpBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,sDACPC,YAAa,4DACb6D,YAAa,CACX0D,MAAO,CAAC,IAAK,IACbC,YAAY,GAEdtH,KAAK,EACLO,MAAM,GAERN,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,oBAAqB,uBAIvD,gBAAiB,CACfjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,kDACPC,YAAa,wDACb6D,YAAa,CACX0D,MAAO,CAAC,IAAK,IACbC,YAAY,GAEdtH,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,mBAAoB,qBAItD,iBAAkB,CAChBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,mDACPC,YAAa,yDACb6D,YAAa,CACX0D,MAAO,CAAC,GAAI,KACZC,YAAY,GAEdtH,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,oBAAqB,uBAIvD,gBAAiB,CACfjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,kDACPC,YAAa,wDACb6D,YAAa,CACX0D,MAAO,CAAC,GAAI,KACZC,YAAY,GAEdtH,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,mBAAoB,mBAAoB,sBAIvD,oBAAqB,CACnBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,sDACPC,YAAa,4DACb6D,YAAa,CACX0D,MAAO,CAAC,IAAK,KACbC,YAAY,IAGhBrH,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,kBAAmB,oBAAqB,sBAIxD,gBAAiB,CACfjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,iDACP8D,YAAa,CACX0D,MAAO,CAAC,GAAI,KACZC,YAAY,IAGhBZ,KAAM,CACJ7G,MAAO,uDACP8G,KAAM,CACJ,CACEC,IAAK,CACHe,IAAKC,EACLC,IAAK,IAEPC,QAAS,CACPjI,MACE,sEACFkI,SACE,uEAGN,CACEnB,IAAK,CACHe,IAAKK,EACLH,IAAK,IAEPC,QAAS,CACPjI,MACE,wEACFkI,SACE,0EAIRrE,WAAY,6DAEdzD,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,kBAAmB,kBAAmB,sBAItD,mBAAoB,CAClBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,qDACPC,YAAa,2DACb6D,YAAa,CACX0D,MAAO,CAAC,IAAK,KACbC,YAAY,IAGhBrH,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,mBAAoB,mBAAoB,sBAIxD,eAAgB,CACdjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,iDACPC,YAAa,uDACb6D,YAAa,CACX0D,MAAO,CAAC,IAAK,KACbC,YAAY,IAGhBrH,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,mBAAoB,uBAItD,gBAAiB,CACfjC,KAAM,UACNzJ,KAAM,CACJ4L,KAAM,iDACNuD,YAAa,CACX0D,MAAO,CAAC,IAAK,KACbC,YAAY,IAGhBZ,KAAM,CACJ7G,MAAO,uDACP8G,KAAM,sDACNC,IAAKqB,GAEPhI,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,mBAAoB,uBAItD,oBAAqB,CACnBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,sDACPC,YAAa,4DACb6D,YAAa,CACX0D,MAAO,CAAC,IAAK,KACbC,YAAY,IAGhBZ,KAAM,CACJ7G,MAAO,sDACP8G,KAAM,4DACNC,IAAKsB,IAEPjI,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,iBAAkB,kBAAmB,sBAIrD,aAAc,CACZjC,KAAM,UACNzJ,KAAM,CACJ4L,KAAM,8CACNuD,YAAa,CACX0D,MAAO,CAAC,GAAI,KACZC,YAAY,IAGhBtJ,OAAQ,IAAIY,EAAAA,QAAQ,EAAG,EAAG,GAC1B8H,KAAM,CACJ7G,MAAO,oDACP8G,KAAM,mDACNC,IAAKuB,IAEPlI,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAoB,oBAAqB,uBAIxD,eAAgB,CACdjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,gDACP8D,YAAa,CACX0D,OAAO,EACPC,WAAY,CAAC,EAAG,OAGpBZ,KAAM,CACJ7G,MAAO,sDACP8G,KAAM,qDACNC,IAAKwB,GAEPnI,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,mBAAoB,oBAAqB,sBAIxD,iBAAkB,CAChBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,mDACPC,YAAa,yDACb6D,YAAa,CACX0D,OAAO,EACPC,WAAY,CAAC,IAAK,MAGtBrH,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,eAAgB,oBAAqB,sBAIpD,YAAa,CACXjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,8CACPC,YAAa,oDACb6D,YAAa,CACX0D,OAAO,EACPC,WAAY,CAAC,IAAK,MAGtBrH,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,oBAAqB,sBAIvD,oBAAqB,CACnBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,sDACPC,YAAa,4DACb6D,YAAa,CACX0D,OAAO,EACPC,WAAY,CAAC,IAAK,KAEpBtH,KAAK,EACLO,MAAM,GAERN,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,oBAAqB,uBAIvD,gBAAiB,CACfjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,kDACPC,YAAa,wDACb6D,YAAa,CACX0D,OAAO,EACPC,WAAY,CAAC,IAAK,KAEpBtH,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,mBAAoB,qBAItD,iBAAkB,CAChBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,mDACPC,YAAa,yDACb6D,YAAa,CACX0D,OAAO,EACPC,WAAY,CAAC,GAAI,MAEnBtH,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,oBAAqB,uBAIvD,gBAAiB,CACfjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,kDACPC,YAAa,wDACb6D,YAAa,CACX0D,OAAO,EACPC,WAAY,CAAC,GAAI,MAEnBtH,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,mBAAoB,mBAAoB,sBAIvD,oBAAqB,CACnBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,sDACPC,YAAa,4DACb6D,YAAa,CACX0D,OAAO,EACPC,WAAY,CAAC,IAAK,OAGtBrH,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,kBAAmB,oBAAqB,sBAIxD,gBAAiB,CACfjC,KAAM,UACNzJ,KAAM,CACJ4L,KAAM,iDACNuD,YAAa,CACX0D,OAAO,EACPC,WAAY,CAAC,GAAI,OAGrBZ,KAAM,CACJ7G,MAAO,uDACP8G,KAAM,CACJ,CACEC,IAAK,CACHe,IAAKC,EACLC,IAAK,IAEPC,QAAS,CACPjI,MACE,sEACFkI,SACE,uEAGN,CACEnB,IAAK,CACHe,IAAKU,EACLR,IAAK,IAEPC,QAAS,CACPjI,MACE,uEACFkI,SACE,wEAGN,CACEnB,IAAK,CACHe,IAAKW,EACLT,IAAK,IAEPC,QAAS,CACPjI,MACE,wEACFkI,SACE,0EAIRrE,WAAY,6DAEdzD,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,kBAAmB,kBAAmB,sBAItD,mBAAoB,CAClBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,qDACPC,YAAa,2DACb6D,YAAa,CACX0D,OAAO,EACPC,WAAY,CAAC,IAAK,OAGtBrH,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,mBAAoB,mBAAoB,sBAIxD,eAAgB,CACdjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,iDACPC,YAAa,uDACb6D,YAAa,CACX0D,OAAO,EACPC,WAAY,CAAC,IAAK,OAGtBrH,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,mBAAoB,uBAItD,gBAAiB,CACfjC,KAAM,UACNzJ,KAAM,CACJ4L,KAAM,iDACNuD,YAAa,CACX0D,OAAO,EACPC,WAAY,CAAC,IAAK,OAGtBZ,KAAM,CACJ7G,MAAO,uDACP8G,KAAM,sDACNC,IAAKqB,GAEPhI,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,mBAAoB,uBAItD,oBAAqB,CACnBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,sDACP8D,YAAa,CACX0D,OAAO,EACPC,WAAY,CAAC,IAAK,OAGtBZ,KAAM,CACJ7G,MAAO,sDACP8G,KAAM,4DACNC,IAAKsB,IAEPjI,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,iBAAkB,kBAAmB,sBAIrD,wBAAyB,CACvBjC,KAAM,YACNzJ,KAAM,CACJ4L,KAAM,oBACNC,aAAc,KACdsD,YAAa,CACX0D,MAAO,CAAC,IAAK,KACbC,YAAY,MAUpBtG,MAAO,CACLuG,SAAU,CACRrG,gBAAiB,CACfH,SAAU,IACVF,SAAU,IACVM,SAAU,CACRoG,SAAU,CACR1G,SAAU,KAEZ2G,UAAW,CACT3G,SAAU,OAGd0H,WAAY,CACV,sBACA,uBACA,sBACA,wBAEFnB,WAAY,CACV,sBACA,uBACA,sBACA,yBAGJzC,kBAAmB,CACjB5D,SAAU,IACVF,SAAU,IACVM,SAAU,CACRoG,SAAU,CACR1G,SAAU,KAEZ2G,UAAW,CACT3G,SAAU,QAIhBZ,WAAY,CACV2E,kBAAmB,EACnBC,OAAQ,CACN3E,OAAQ,CAAC,EAAG,IAAK,GACjB4E,OAAQ,CACNC,IAAK,IACLC,MAAO,QAKfwC,UAAW,CACTtG,gBAAiB,CACfH,SAAU,EACVF,SAAU,IACVM,SAAU,CACRoG,SAAU,CACR1G,SAAU,MAEZ2G,UAAW,CACT3G,SAAU,MAGd0H,WAAY,CACV,sBACA,uBACA,sBACA,wBAEFnB,WAAY,CACV,sBACA,uBACA,sBACA,yBAGJzC,kBAAmB,CACjB5D,SAAU,EACVF,SAAU,IACVM,SAAU,CACRoG,SAAU,CACR1G,SAAU,MAEZ2G,UAAW,CACT3G,SAAU,OAIhBZ,WAAY,CACV2E,kBAAmB,EACnBC,OAAQ,CACN3E,OAAQ,CAAC,EAAG,IAAK,GACjB4E,OAAQ,CACNC,IAAK,IACLC,MAAO,SAMjB3D,UAAW,CACTC,eAAgB,wBAChBC,eAAgB,CACdpC,EAAG,KACHC,EAAG,KACHoC,GAAI,MAEN2E,OAAO,EACP1E,SAAU,CAAC,EAAG,EAAG,GACjBE,QAAS,EAAE,KAAM,KACjB5B,OAAQ,CAAE+B,MAAO,QAASC,MAAO,EAAKC,OAAQ,EAAKC,OAAQ,GAC3DC,qBAAsB,CAAC,IAAK,MAE9BxB,WAAY,CACVC,QAAS,CACPC,MAAO,CACLC,SAAU,IACVC,WAAY,IACZC,SAAU,OAIhB6C,aAAc,CACZhM,QAAS,QACTyP,MAAO,CACLnE,KAAM,CACJoE,WAAY,GAEdrE,KAAM,CACJoE,MAAO,GAETxD,6BAA8B,CAAC,UAAW,aAE5CyD,WAAY,CACVpE,KAAM,CACJmE,MAAO,GAETpE,KAAM,CACJqE,WAAY,GAEdzD,6BAA8B,CAAC,UAAW,UAAW,cAGzDxB,iBAAkB,CAChBxC,MAAO,0BACPyC,IAAK,iEACLC,eAAe,EACfuB,OAAQ,CACNtB,OAAQ,sCACR5K,QAAS,QACTsI,OAAQ,CACNmH,MAAO,yBACPC,WAAY,gCAGhBkB,aAAc,CACZnB,MAAO,CACL7E,OAAQ,wCACR5K,QAAS,WACTsI,OAAQ,CACNqH,SAAU,4BACVC,UAAW,iCAanB9D,WAAY,CACV,kCACA,kCACA,kCACA,mCAEF+E,gBAAiB,sC,8NC7xBnB,IACE9Q,KAAM,eACN0H,YAAa,yBACbC,SAAU,kBACVE,oBAAqB,CAAC,EAAG,IAAK,GAC9BD,mBAAoB,GACpBE,aAAc,CACZ7H,QAAS,GACT8H,WAAY,KACZC,WAAY,IAEdkG,aAAc,SACdD,WAAY,CACVhO,QAAS,IACT8H,WAAY,IACZC,WAAY,KAEdmG,IAAK,CACHC,MAAO,GACPC,IAAK,IAEPe,MAAO,CACLC,UAAW,EAAE,IAAM,IAAK,KACxBC,UAAW,KAEbG,WAAY,CAAC,WACbxH,SAAU,CACR,eAAgB,CACd3B,KAAM,UACNzJ,KAAM,CACJ4L,KAAM,+CACNuD,YAAa,CACX0D,MAAO,CAAC,EAAG,KACXC,YAAY,IAGhBZ,KAAM,CACJ7G,MAAO,qDACP8G,KAAM,oDACNC,IAAKc,IAEPzH,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,mBAAoB,oBAAqB,sBAIxD,iBAAkB,CAChBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,kDACPC,YAAa,wDACb6D,YAAa,CACX0D,MAAO,CAAC,IAAK,IACbC,YAAY,IAGhBrH,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,eAAgB,oBAAqB,sBAIpD,YAAa,CACXjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,6CACPC,YAAa,mDACb6D,YAAa,CACX0D,MAAO,CAAC,IAAK,IACbC,YAAY,IAGhBrH,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,oBAAqB,sBAIvD,qBAAsB,CACpBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,qDACPC,YAAa,2DACb6D,YAAa,CACX0D,MAAO,CAAC,IAAK,IACbC,YAAY,GAEdtH,KAAK,EACLO,MAAM,GAERN,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,oBAAqB,uBAIvD,gBAAiB,CACfjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,iDACPC,YAAa,uDACb6D,YAAa,CACX0D,MAAO,CAAC,IAAK,IACbC,YAAY,GAEdtH,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,mBAAoB,qBAItD,iBAAkB,CAChBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,kDACPC,YAAa,wDACb6D,YAAa,CACX0D,MAAO,CAAC,GAAI,KACZC,YAAY,GAEdtH,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,oBAAqB,uBAIvD,gBAAiB,CACfjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,iDACPC,YAAa,uDACb6D,YAAa,CACX0D,MAAO,CAAC,GAAI,KACZC,YAAY,GAEdtH,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,mBAAoB,mBAAoB,sBAIvD,oBAAqB,CACnBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,qDACPC,YAAa,2DACb6D,YAAa,CACX0D,MAAO,CAAC,IAAK,KACbC,YAAY,IAGhBrH,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,kBAAmB,oBAAqB,sBAIxD,gBAAiB,CACfjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,gDACP8D,YAAa,CACX0D,MAAO,CAAC,GAAI,KACZC,YAAY,IAGhBZ,KAAM,CACJ7G,MAAO,sDACP8G,KAAM,CACJ,CACEC,IAAK,CACHe,IAAKC,GACLC,IAAK,IAEPC,QAAS,CACPjI,MACE,qEACFkI,SACE,sEAGN,CACEnB,IAAK,CACHe,IAAKW,GACLT,IAAK,IAEPC,QAAS,CACPjI,MACE,uEACFkI,SACE,yEAIRrE,WAAY,4DAEdzD,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,kBAAmB,kBAAmB,sBAItD,mBAAoB,CAClBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,oDACPC,YAAa,0DACb6D,YAAa,CACX0D,MAAO,CAAC,IAAK,KACbC,YAAY,IAGhBrH,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,mBAAoB,mBAAoB,sBAIxD,eAAgB,CACdjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,gDACPC,YAAa,sDACb6D,YAAa,CACX0D,MAAO,CAAC,IAAK,KACbC,YAAY,IAGhBrH,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,mBAAoB,uBAItD,gBAAiB,CACfjC,KAAM,UACNzJ,KAAM,CACJ4L,KAAM,gDACNuD,YAAa,CACX0D,MAAO,CAAC,IAAK,KACbC,YAAY,IAGhBZ,KAAM,CACJ7G,MAAO,sDACP8G,KAAM,qDACNC,IAAKqB,GAEPhI,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,mBAAoB,uBAItD,oBAAqB,CACnBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,qDACPC,YAAa,2DACb6D,YAAa,CACX0D,MAAO,CAAC,IAAK,KACbC,YAAY,IAGhBZ,KAAM,CACJ7G,MAAO,qDACP8G,KAAM,2DACNC,IAAKsB,IAEPjI,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,iBAAkB,kBAAmB,sBAIrD,aAAc,CACZjC,KAAM,UACNzJ,KAAM,CACJ4L,KAAM,6CACNuD,YAAa,CACX0D,MAAO,CAAC,GAAI,KACZC,YAAY,IAGhBtJ,OAAQ,IAAIY,EAAAA,QAAQ,EAAG,EAAG,GAC1B8H,KAAM,CACJ7G,MAAO,mDACP8G,KAAM,kDACNC,IAAKuB,IAEPlI,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAoB,oBAAqB,uBAIxD,eAAgB,CACdjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,+CACP8D,YAAa,CACX0D,OAAO,EACPC,WAAY,CAAC,EAAG,OAGpBZ,KAAM,CACJ7G,MAAO,qDACP8G,KAAM,oDACNC,IAAKwB,IAEPnI,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,mBAAoB,oBAAqB,sBAIxD,iBAAkB,CAChBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,kDACPC,YAAa,wDACb6D,YAAa,CACX0D,OAAO,EACPC,WAAY,CAAC,IAAK,MAGtBrH,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,eAAgB,oBAAqB,sBAIpD,YAAa,CACXjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,6CACPC,YAAa,mDACb6D,YAAa,CACX0D,OAAO,EACPC,WAAY,CAAC,IAAK,MAGtBrH,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,oBAAqB,sBAIvD,oBAAqB,CACnBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,qDACPC,YAAa,2DACb6D,YAAa,CACX0D,OAAO,EACPC,WAAY,CAAC,IAAK,KAEpBtH,KAAK,EACLO,MAAM,GAERN,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,oBAAqB,uBAIvD,gBAAiB,CACfjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,iDACPC,YAAa,uDACb6D,YAAa,CACX0D,OAAO,EACPC,WAAY,CAAC,IAAK,KAEpBtH,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,mBAAoB,qBAItD,iBAAkB,CAChBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,kDACPC,YAAa,wDACb6D,YAAa,CACX0D,OAAO,EACPC,WAAY,CAAC,GAAI,MAEnBtH,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,oBAAqB,uBAIvD,gBAAiB,CACfjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,iDACPC,YAAa,uDACb6D,YAAa,CACX0D,OAAO,EACPC,WAAY,CAAC,GAAI,MAEnBtH,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,mBAAoB,mBAAoB,sBAIvD,oBAAqB,CACnBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,qDACPC,YAAa,2DACb6D,YAAa,CACX0D,OAAO,EACPC,WAAY,CAAC,IAAK,OAGtBrH,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,kBAAmB,oBAAqB,sBAIxD,gBAAiB,CACfjC,KAAM,UACNzJ,KAAM,CACJ4L,KAAM,gDACNuD,YAAa,CACX0D,OAAO,EACPC,WAAY,CAAC,GAAI,OAGrBZ,KAAM,CACJ7G,MAAO,sDACP8G,KAAM,CACJ,CACEC,IAAK,CACHe,IAAKC,GACLC,IAAK,IAEPC,QAAS,CACPjI,MACE,qEACFkI,SACE,sEAGN,CACEnB,IAAK,CACHe,IAAKU,GACLR,IAAK,IAEPC,QAAS,CACPjI,MACE,sEACFkI,SACE,uEAGN,CACEnB,IAAK,CACHe,IAAKW,GACLT,IAAK,IAEPC,QAAS,CACPjI,MACE,uEACFkI,SACE,yEAIRrE,WAAY,4DAEdzD,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,kBAAmB,kBAAmB,sBAItD,mBAAoB,CAClBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,oDACPC,YAAa,0DACb6D,YAAa,CACX0D,OAAO,EACPC,WAAY,CAAC,IAAK,OAGtBrH,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,mBAAoB,mBAAoB,sBAIxD,eAAgB,CACdjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,gDACPC,YAAa,sDACb6D,YAAa,CACX0D,OAAO,EACPC,WAAY,CAAC,IAAK,OAGtBrH,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,mBAAoB,uBAItD,gBAAiB,CACfjC,KAAM,UACNzJ,KAAM,CACJ4L,KAAM,gDACNuD,YAAa,CACX0D,OAAO,EACPC,WAAY,CAAC,IAAK,OAGtBZ,KAAM,CACJ7G,MAAO,sDACP8G,KAAM,qDACNC,IAAKqB,GAEPhI,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,mBAAoB,uBAItD,oBAAqB,CACnBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,qDACP8D,YAAa,CACX0D,OAAO,EACPC,WAAY,CAAC,IAAK,OAGtBZ,KAAM,CACJ7G,MAAO,qDACP8G,KAAM,2DACNC,IAAKsB,IAEPjI,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,iBAAkB,kBAAmB,uBAKvDQ,WAAY,CACVC,QAAS,CACPC,MAAO,CACLC,SAAU,KACVC,WAAY,KACZC,SAAU,QAIhB6C,aAAc,CACZhM,QAAS,QACTyP,MAAO,CACLnE,KAAM,CACJoE,WAAY,GAEdrE,KAAM,CACJoE,MAAO,GAETxD,6BAA8B,CAAC,UAAW,aAE5CyD,WAAY,CACVpE,KAAM,CACJmE,MAAO,GAETpE,KAAM,CACJqE,WAAY,GAEdzD,6BAA8B,CAAC,UAAW,UAAW,cAGzDxB,iBAAkB,CAChBxC,MAAO,yBACPyC,IAAK,2DACLC,eAAe,EACfuB,OAAQ,CACNtB,OAAQ,sCACR5K,QAAS,QACTsI,OAAQ,CACNmH,MAAO,yBACPC,WAAY,iCAIlB5D,WAAY,CACV,iCACA,iCACA,iCACA,iCACA,iCACA,kCAEF+E,gBAAiB,qCCxnBnB,IACE9Q,KAAM,gBACN0H,YAAa,yBACbC,SAAU,4BACVgF,oBAAqB,CAAC,8BACtB7E,aAAc,CACZ7H,QAAS,GACT8H,WAAY,EACZC,WAAY,IAEdC,SAAU,CACR,aAAc,CACZ3B,KAAM,UACNzJ,KAAM,CACJqL,MAAO,8CACPC,YAAa,oDACbC,OAAQ,CACNwE,OAAQ,CAAC,GAAI,KACbC,OAAQ,CAAC,GAAI,KACbC,OAAQ,CAAC,GAAI,OAGjBxE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,oBAAsB,mBAAoB,qBAI1D,YAAa,CACXjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,6CACPC,YAAa,mDACbC,OAAQ,CACNwE,OAAQ,CAAC,EAAG,KACZC,OAAQ,CAAC,EAAG,KACZC,OAAQ,CAAC,EAAG,OAGhBxE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,mBAAoB,mBAAoB,uBAIvD,iBAAkB,CAChBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,kDACPC,YAAa,wDACbC,OAAQ,CACNwE,OAAQ,CAAC,GAAI,KACbC,OAAQ,CAAC,GAAI,KACbC,OAAQ,CAAC,GAAI,OAGjBxE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,mBAAoB,sBAItD,YAAa,CACXjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,6CACPC,YAAa,mDACbC,OAAQ,CACNwE,OAAQ,CAAC,EAAG,KACZC,OAAQ,CAAC,EAAG,KACZC,OAAQ,CAAC,EAAG,MAEdN,6BAA6B,EAC7B5D,MAAM,EACNP,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,iBAAkB,oBAAqB,uBAyBtD,iBAAkB,CAChBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,kDACPC,YAAa,wDACbC,OAAQ,CACNwE,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,MAEhBzE,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,mBAAoB,mBAAoB,sBAIxD,kBAAmB,CACjBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,mDACPC,YAAa,yDACbC,OAAQ,CACNwE,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,OAGlBxE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,kBAAmB,mBAAoB,sBAIvD,YAAa,CACXjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,6CACPC,YAAa,mDACbC,OAAQ,CACNwE,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,OAGlBxE,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,mBAAoB,mBAAoB,uBAqBvD,aAAc,CACZjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,8CACPC,YAAa,oDACbC,OAAQ,CACNwE,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,MAEhBzE,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,mBAAoB,kBAAmB,uBAIvD,eAAgB,CACdjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,gDACPC,YAAa,sDACbC,OAAQ,CACNwE,OAAQ,CAAC,IAAK,IACdC,OAAQ,CAAC,IAAK,IACdC,OAAQ,CAAC,IAAK,KAEhBzE,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,mBAAoB,mBAAoB,uBAIvD,gBAAiB,CACfjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,iDACPC,YAAa,uDACbC,OAAQ,CACNwE,OAAQ,CAAC,GAAI,KACbC,OAAQ,CAAC,GAAI,KACbC,OAAQ,CAAC,GAAI,MAEfzE,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,kBAAmB,iBAAkB,uBAIrD,iBAAkB,CAChBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,kDACPC,YAAa,wDACbC,OAAQ,CACNwE,OAAQ,CAAC,GAAI,KACbC,OAAQ,CAAC,GAAI,KACbC,OAAQ,CAAC,GAAI,MAEfzE,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,kBAAmB,mBAAoB,sBAIvD,YAAa,CACXjC,KAAM,YACNzJ,KAAM,CACJ4L,KAAM,oBACNC,aAAc,KACdC,OAAQ,CACNC,MAAM,EACNC,OAAO,GAETT,OAAQ,CACNwE,OAAQ,CAAC,IAAK,KACdC,OAAQ,CAAC,IAAK,KACdC,QAAQ,MAKhB/D,WAAY,CACVC,QAAS,CACPC,MAAO,CACLC,SAAU,KACVC,WAAY,KACZC,SAAU,SAGd2D,UAAW,CACT9D,MAAO,CACLC,SAAU,KACVC,WAAY,KACZC,SAAU,UAIhBC,MAAO,CACLuD,OAAQ,CACNrD,gBAAiB,CACfH,SAAU,OACVF,SAAU,IACVM,SAAU,CACRoD,OAAQ,CACN1D,SAAU,KAEZ4D,OAAQ,CACN5D,SAAU,MAEZ2D,OAAQ,CACN3D,SAAU,QAIhB8D,kBAAmB,CACjB5D,SAAU,OACVF,SAAU,IACVM,SAAU,CACRoD,OAAQ,CACN1D,SAAU,KAEZ4D,OAAQ,CACN5D,SAAU,MAEZ2D,OAAQ,CACN3D,SAAU,QAIhBZ,WAAY,CACV2E,kBAAmB,GACnBC,OAAQ,CACN3E,OAAQ,CAAC,EAAG,IAAK,GACjB4E,OAAQ,CACNC,IAAK,IACLC,MAAO,QAKfP,OAAQ,CACNvD,gBAAiB,CACfH,SAAU,EACVF,SAAU,IACVM,SAAU,CACRoD,OAAQ,CACN1D,SAAU,MAEZ4D,OAAQ,CACN5D,SAAU,KAEZ2D,OAAQ,CACN3D,SAAU,OAIhB8D,kBAAmB,CACjB5D,SAAU,OACVF,SAAU,IACVM,SAAU,CACRoD,OAAQ,CACN1D,SAAU,MAEZ4D,OAAQ,CACN5D,SAAU,KAEZ2D,OAAQ,CACN3D,SAAU,OAIhBZ,WAAY,CACV2E,kBAAmB,GACnBC,OAAQ,CACN3E,OAAQ,CAAC,EAAG,IAAK,MACjB4E,OAAQ,CACNC,IAAK,IACLC,MAAO,QAKfR,OAAQ,CACNtD,gBAAiB,CACfH,SAAU,OACVF,SAAU,IACVM,SAAU,CACRoD,OAAQ,CACN1D,SAAU,MAEZ4D,OAAQ,CACN5D,SAAU,KAEZ2D,OAAQ,CACN3D,SAAU,OAIhB8D,kBAAmB,CACjB5D,SAAU,OACVF,SAAU,IACVM,SAAU,CACRoD,OAAQ,CACN1D,SAAU,MAEZ4D,OAAQ,CACN5D,SAAU,KAEZ2D,OAAQ,CACN3D,SAAU,OAIhBZ,WAAY,CACV2E,kBAAmB,GACnBC,OAAQ,CACN3E,OAAQ,CAAC,EAAG,IAAK,GACjB4E,OAAQ,CACNC,IAAK,IACLC,MAAO,SAMjB3D,UAAW,CACTC,eAAgB,YAChBC,eAAgB,CACdpC,GAAI,KACJC,EAAG,GACHoC,EAAG,KAELE,OAAO,EACPD,SAAU,CAAC,EAAG,EAAG,GACjBE,QAAS,CAAC,IAAM,MAChB5B,OAAQ,CAAE+B,MAAO,EAAGC,MAAO,KAAMC,OAAQ,OAAQC,OAAQ,QACzDC,qBAAsB,CAAC,IAAK,MAE9BG,iBAAkB,CAChBxC,MAAO,yBACPyC,IAAK,iEACLC,eAAe,EACfvB,MAAO,CACLwB,OAAQ,wCACR5K,QAAS,SACTsI,OAAQ,CACNqE,OAAQ,0BACRC,OAAQ,0BACRC,OAAQ,4BAGZL,OAAQ,CACN,CACE5B,OAAQ,2CACR5K,QAAS,WACT8K,YAAa,CACX2B,SAAU,CACR1M,KAAM,yBACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CAAC,kBAAmB,eAC/BC,MAAO,WAET,CACED,UAAW,CACT,eACA,sBACA,2BAEFC,MAAO,aAIb2F,WAAY,CACV/Q,KAAM,2BACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CACT,kBACA,sBACA,eAEFC,MAAO,WAET,CACED,UAAW,CAAC,eAAgB,2BAC5BC,MAAO,eAMjB,CACEP,OAAQ,wDACR5K,QAAS,QACT8K,YAAa,CACX2B,SAAU,CACR1M,KAAM,yBACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CAAC,iBACZC,MAAO,WAET,CACED,UAAW,CAAC,sBACZC,MAAO,aAIbkC,SAAU,CACRtN,KAAM,yBACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CAAC,iBACZC,MAAO,WAET,CACED,UAAW,CAAC,sBACZC,MAAO,aAIbS,QAAS,CACP7L,KAAM,wBACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CAAC,iBACZC,MAAO,WAET,CACED,UAAW,CAAC,sBACZC,MAAO,aAIbO,MAAO,CACL3L,KAAM,sBACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CAAC,iBACZC,MAAO,WAET,CACED,UAAW,CAAC,sBACZC,MAAO,iBAQrBW,WAAY,CACV,iCACA,iCACA,iCACA,iCACA,iCACA,iCACA,mCCjiBJ,IACE/L,KAAM,gBACN0H,YAAa,wBACbC,SAAU,mBACVC,mBAAoB,OACpBE,aAAc,CACZ7H,QAAS,EACT8H,WAAY,EACZC,WAAY,GAEdH,oBAAqB,CAAC,EAAG,GAAK,GAC9BqG,aAAc,SACdD,WAAY,CACVjG,WAAY,MAEdmG,IAAK,CACHC,MAAO,EACPC,IAAK,IAEPpG,SAAU,CACR,WAAY,CACV3B,KAAM,UACNzJ,KAAM,CACJqL,MAAO,4CACPC,YAAa,kDACbC,OAAQ,CACN4I,KAAM,CACJ,CAAC,GAAI,KACL,CAAC,IAAK,MAERC,KAAM,CAAC,GAAI,KACXC,QAAS,CAAC,GAAI,KACdC,cAAe,CAAC,GAAI,KACpBC,aAAc,CAAC,IAAK,KACpBC,KAAM,CAAC,IAAK,OAGhB/I,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,kBAAmB,mBAAoB,oBAEnD+I,OAAQ,CACNN,KAAM,CACJ9K,SAAU,CACRqC,OAAQ,EACL,iBACD,kBACA,qBAIN4I,cAAe,CACbjL,SAAU,CACRqC,OAAQ,EACL,mBACD,oBACC,yBAOb,gBAAiB,CACfjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,iDACPC,YAAa,uDACbC,OAAQ,CACN4I,KAAM,CAAC,IAAK,KACZC,KAAM,CAAC,GAAI,KACXC,QAAS,CAAC,IAAK,KACfC,cAAe,CAAC,IAAK,KACrBC,aAAc,CAAC,IAAK,KACpBC,KAAM,CAAC,IAAK,OAGhB/I,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,mBAAqB,kBAAmB,oBAEpD+I,OAAQ,CACNL,KAAM,CACJ/K,SAAU,CACRqC,OAAQ,CACN,oBACA,mBACC,sBAIP6I,aAAc,CACZlL,SAAU,CACRqC,OAAQ,EACL,mBACD,mBACC,oBAIP8I,KAAM,CACJnL,SAAU,CACRqC,OAAQ,EACL,mBACD,mBACC,uBAyDb,iBAAkB,CAChBjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,kDACPC,YAAa,wDACbC,OAAQ,CACN4I,KAAM,CAAC,IAAK,KACZC,KAAM,CAAC,IAAK,KACZC,QAAS,CAAC,GAAI,KACdC,cAAe,CAAC,IAAK,KACrBC,aAAc,CAAC,GAAI,KACnBC,KAAM,CAAC,IAAK,MAEd7I,YAAa,SAEfF,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,kBAAmB,kBAAmB,qBAElD+I,OAAQ,CACNL,KAAM,CACJ/K,SAAU,CACRqC,OAAQ,EACL,kBACD,kBACA,sBAIN2I,QAAS,CACPhL,SAAU,CACRqC,OAAQ,EACL,kBACD,oBACC,qBAIP4I,cAAe,CACbjL,SAAU,CACRqC,OAAQ,EACL,kBACD,kBACA,qBAIN6I,aAAc,CACZlL,SAAU,CACRqC,OAAQ,EACL,mBACD,oBACC,qBAIP8I,KAAM,CACJnL,SAAU,CACRqC,OAAQ,CACN,mBACA,mBACA,wBAOZ,SAAU,CACRjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,0CACPC,YAAa,gDACbC,OAAQ,CACN4I,KAAM,CAAC,GAAI,KACXC,KAAM,CAAC,IAAK,IACZC,QAAS,CAAC,IAAK,IACfC,cAAe,CAAC,IAAK,IACrBC,aAAc,CAAC,GAAI,KACnBC,KAAM,CAAC,GAAI,OAGf/I,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,mBAAoB,mBAAoB,qBAEnD+I,OAAQ,CACNN,KAAM,CACJ9K,SAAU,CACRqC,OAAQ,EACL,mBACD,mBACC,qBAIP6I,aAAc,CACZlL,SAAU,CACRqC,OAAQ,CACN,mBACA,oBACC,qBAIP8I,KAAM,CACJnL,SAAU,CACRqC,OAAQ,CACN,mBACA,oBACC,wBAOb,YAAa,CACXjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,6CACPC,YAAa,mDACbC,OAAQ,CACN4I,KAAM,CAAC,IAAK,KACZC,KAAM,CAAC,IAAK,KACZC,QAAS,CAAC,IAAK,IACfC,cAAe,CAAC,IAAK,KACrBC,aAAc,CAAC,GAAI,KACnBC,KAAM,CAAC,IAAK,OAGhB/I,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,mBAAoB,mBAAoB,oBAEpD+I,OAAQ,CACNL,KAAM,CACJ/K,SAAU,CACRqC,OAAQ,CACN,kBACA,iBACA,sBAIN2I,QAAS,CACPhL,SAAU,CACRqC,OAAQ,CACN,kBACA,iBACA,sBAIN6I,aAAc,CACZlL,SAAU,CACRqC,OAAQ,EACL,mBACD,mBACC,qBAIP8I,KAAM,CACJnL,SAAU,CACRqC,OAAQ,EACL,mBACD,oBACC,yBAOb,YAAa,CACXjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,6CACPC,YAAa,mDACbC,OAAQ,CACN4I,KAAM,CAAC,IAAK,KACZC,KAAM,CAAC,IAAK,KACZC,QAAS,CAAC,IAAK,KACfC,cAAe,CAAC,IAAK,KACrBC,aAAc,CAAC,IAAK,KACpBC,KAAM,CAAC,IAAK,MAEd7I,YAAa,SAEfF,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAoB,kBAAmB,oBAElD+I,OAAQ,CACNL,KAAM,CACJ/K,SAAU,CACRqC,OAAQ,EACL,iBACD,mBACC,qBAIP6I,aAAc,CACZlL,SAAU,CACRqC,OAAQ,CACN,kBACA,kBACA,qBAIN8I,KAAM,CACJnL,SAAU,CACRqC,OAAQ,CACN,mBACA,kBACA,wBAOZ,aAAc,CACZjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,8CACPC,YAAa,oDACbC,OAAQ,CACN4I,KAAM,CAAC,GAAI,KACXC,KAAM,CAAC,IAAK,KACZC,QAAS,CAAC,GAAI,KACdC,cAAe,CAAC,GAAI,KACpBC,aAAc,CAAC,EAAG,IAClBC,KAAM,CAAC,IAAK,KAEdhJ,KAAK,GAEPC,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAoB,oBAAqB,oBAEpD+I,OAAQ,CACNL,KAAM,CACJ/K,SAAU,CACRqC,OAAQ,CAAC,mBAAoB,mBAAoB,mBAGrD2I,QAAS,CACPhL,SAAU,CACRqC,OAAQ,CACN,kBACA,mBACC,sBAIP4I,cAAe,CACbjL,SAAU,CACRqC,OAAQ,CACN,kBACA,mBACC,sBAIP6I,aAAc,CACZlL,SAAU,CACRqC,OAAQ,CACN,kBACA,oBACC,qBAIP8I,KAAM,CACJnL,SAAU,CACRqC,OAAQ,CACN,kBACA,oBACC,wBAOb,aAAc,CACZjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,8CACPC,YAAa,oDACbC,OAAQ,CACN4I,KAAM,CAAC,IAAK,IACZC,KAAM,CAAC,IAAK,KACZC,QAAS,CACP,CAAC,GAAI,KACL,CAAC,IAAK,MAERC,cAAe,CAAC,IAAK,KACrBC,aAAc,CAAC,IAAK,IACpBC,KAAM,CAAC,IAAK,MAGhB/I,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,mBAAoB,oBAAqB,oBAEpD+I,OAAQ,CACNL,KAAM,CACJ/K,SAAU,CACRqC,OAAQ,CACN,iBACA,mBACA,qBAIN2I,QAAS,CACPhL,SAAU,CACRqC,OAAQ,CACN,kBACA,kBACA,sBAIN4I,cAAe,CACbjL,SAAU,CACRqC,OAAQ,CACN,kBACA,kBACA,yBAOZ,WAAY,CACVjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,4CACPC,YAAa,kDACbC,OAAQ,CACN4I,KAAM,CAAC,EAAG,IACVC,KAAM,CAAC,IAAK,KACZC,QAAS,CACP,CAAC,GAAI,KACL,CAAC,IAAK,MAERC,cAAe,CAAC,IAAK,KACrBC,aAAc,CAAC,IAAK,IACpBC,KAAM,CAAC,IAAK,KAEd7I,YAAa,SAEfF,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,kBAAmB,oBAAqB,mBAEnD+I,OAAQ,CACNL,KAAM,CACJ/K,SAAU,CACRqC,OAAQ,EAAE,iBAAkB,kBAAoB,mBAGpD2I,QAAS,CACPhL,SAAU,CACRqC,OAAQ,EACL,kBACD,mBACA,qBAIN4I,cAAe,CACbjL,SAAU,CACRqC,OAAQ,EACL,kBACD,mBACA,wBAOZ,aAAc,CACZjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,8CACPC,YAAa,oDACbC,OAAQ,CACN4I,KAAM,CAAC,GAAI,KACXC,KAAM,CAAC,IAAK,KACZC,QAAS,CAAC,GAAI,KACdC,cAAe,CAAC,GAAI,KACpBC,aAAc,CAAC,GAAI,KACnBC,MAAM,GAER7I,YAAa,SAEfF,WAAY,CACVpC,SAAU,CACRqC,OAAQ,EAAE,kBAAmB,oBAAqB,qBAEpD+I,OAAQ,CACNL,KAAM,CACJ/K,SAAU,CACRqC,OAAQ,EACL,mBACD,kBACA,qBAIN8I,KAAM,CACJnL,SAAU,CACRqC,OAAQ,EACL,mBACD,mBACC,wBAOb,cAAe,CACbjC,KAAM,UACNzJ,KAAM,CACJqL,MAAO,+CACPC,YAAa,qDACbC,OAAQ,CACN4I,KAAM,CAAC,IAAK,IACZC,KAAM,CAAC,GAAI,IACXC,QAAS,CAAC,IAAK,KACfC,cAAe,CAAC,IAAK,KACrBC,aAAc,CAAC,GAAI,IACnBC,KAAM,CAAC,GAAI,MAGf/I,WAAY,CACVpC,SAAU,CACRqC,OAAQ,CAAC,mBAAoB,kBAAoB,mBAEnD+I,OAAQ,CACNL,KAAM,CACJ/K,SAAU,CACRqC,OAAQ,CACN,kBACA,mBACC,sBAIP6I,aAAc,CACZlL,SAAU,CACRqC,OAAQ,CACN,kBACA,oBACC,qBAIP8I,KAAM,CACJnL,SAAU,CACRqC,OAAQ,CACN,kBACA,oBACC,yBAQfQ,WAAY,CACVC,QAAS,CACPC,MAAO,CACLC,SAAU,KACVC,WAAY,MACZC,SAAU,KACVmI,cAAe,WACf9B,WAAY,CAAC,YAAa,YAAa,YAAa,WAI1DpG,MAAO,CACL2H,KAAM,CACJzH,gBAAiB,CAGfL,SAAU,IACVM,SAAU,CACR0H,QAAS,CACP/H,WAAY,KACZC,SAAU,EACVmI,cAAe,sBAEjBN,KAAM,CACJ9H,WAAY,KACZC,SAAU,EACVmI,cAAe,mBAEjBH,aAAc,CACZjI,WAAY,KACZC,SAAU,EACVmI,cAAe,mBAEjBJ,cAAe,CACbhI,WAAY,KACZC,SAAU,EACVmI,cAAe,wBAEjBF,KAAM,CACJlI,WAAY,EACZC,SAAU,KACVmI,cAAe,sBAGnB9B,WAAY,CAAC,YAAa,YAAa,YAAa,UAGxDwB,KAAM,CACJ1H,gBAAiB,CAEfL,SAAU,IACVM,SAAU,CACRwH,KAAM,CACJ7H,WAAY,EACZC,SAAU,KACVmI,cAAe,mBAEjBL,QAAS,CACP/H,WAAY,EACZC,SAAU,KACVmI,cAAe,sBAEjBH,aAAc,CACZjI,WAAY,KACZC,SAAU,EACVmI,cAAe,mBAEjBJ,cAAe,CACbhI,WAAY,EACZC,SAAU,KACVmI,cAAe,wBAEjBF,KAAM,CACJlI,WAAY,EACZC,SAAU,KACVmI,cAAe,sBAGnB9B,WAAY,CAAC,YAAa,YAAa,YAAa,UAGxDyB,QAAS,CACP3H,gBAAiB,CAEfL,SAAU,IACVM,SAAU,CACRwH,KAAM,CACJ7H,WAAY,EACZC,SAAU,KACVmI,cAAe,sBAEjBN,KAAM,CACJ9H,WAAY,KACZC,SAAU,EACVmI,cAAe,sBAEjBH,aAAc,CACZjI,WAAY,KACZC,SAAU,EACVmI,cAAe,sBAEjBJ,cAAe,CACbhI,WAAY,KACZC,SAAU,EACVmI,cAAe,2BAEjBF,KAAM,CACJlI,WAAY,EACZC,SAAU,KACVmI,cAAe,yBAGnB9B,WAAY,CAAC,YAAa,YAAa,YAAa,UAGxD0B,cAAe,CACb5H,gBAAiB,CAEfL,SAAU,IACVM,SAAU,CACRwH,KAAM,CACJ7H,WAAY,EACZC,SAAU,KACVmI,cAAe,wBAEjBL,QAAS,CACP/H,WAAY,EACZC,SAAU,KACVmI,cAAe,2BAEjBN,KAAM,CACJ9H,WAAY,KACZC,SAAU,EACVmI,cAAe,wBAEjBH,aAAc,CACZjI,WAAY,KACZC,SAAU,EACVmI,cAAe,wBAEjBF,KAAM,CACJlI,WAAY,EACZC,SAAU,KACVmI,cAAe,2BAGnB9B,WAAY,CAAC,YAAa,YAAa,YAAa,UAGxD2B,aAAc,CACZ7H,gBAAiB,CAEfL,SAAU,IACVM,SAAU,CACRwH,KAAM,CACJ7H,WAAY,EACZC,SAAU,KACVmI,cAAe,mBAEjBL,QAAS,CACP/H,WAAY,EACZC,SAAU,KACVmI,cAAe,sBAEjBN,KAAM,CACJ9H,WAAY,EACZC,SAAU,KACVmI,cAAe,mBAEjBJ,cAAe,CACbhI,WAAY,EACZC,SAAU,KACVmI,cAAe,wBAEjBF,KAAM,CACJlI,WAAY,EACZC,SAAU,KACVmI,cAAe,sBAGnB9B,WAAY,CAAC,YAAa,YAAa,YAAa,UAGxD4B,KAAM,CACJ9H,gBAAiB,CAEfL,SAAU,IACVM,SAAU,CACRwH,KAAM,CACJ7H,WAAY,KACZC,SAAU,EACVmI,cAAe,qBAEjBL,QAAS,CACP/H,WAAY,KACZC,SAAU,EACVmI,cAAe,wBAEjBN,KAAM,CACJ9H,WAAY,KACZC,SAAU,EACVmI,cAAe,qBAEjBH,aAAc,CACZjI,WAAY,KACZC,SAAU,EACVmI,cAAe,qBAEjBJ,cAAe,CACbhI,WAAY,KACZC,SAAU,EACVmI,cAAe,2BAGnBX,WAAY,CAAC,YAAa,YAAa,YAAa,WAI1DlG,iBAAkB,CAChBxC,MAAO,wBACPyC,IAAK,2DACLC,eAAe,EACfvB,MAAO,CACLwB,OAAQ,wCACR5K,QAAS,OACTsI,OAAQ,CACNyI,KAAM,wBACNC,KAAM,wBACNC,QAAS,2BACTC,cAAe,iCACfC,aAAc,gCACdC,KAAM,0BAGV5E,OAAQ,CACN,CACE5B,OAAQ,qCACR5K,QAAS,UACT8K,YAAa,CACXwE,QAAS,CACPvP,KAAM,wBACNiL,YAAa,UACbuG,aAAc,UACdhC,eAAgB,QAChBtE,aAAc,CACZ,CACEC,UAAW,CAAC,qBAAsB,uBAClCC,MAAO,WAET,CACED,UAAW,CAAC,uBACZC,MAAO,aAIbqG,SAAU,CACRzR,KAAM,yBACNiL,YAAa,UACbC,aAAc,CACZ,CACEC,UAAW,CACT,qBACA,sBACA,uBAEFC,MAAO,iBAQrBW,WAAY,CACV,iCACA,iCACA,iCACA,iCACA,iCACA,mCC73BJ,MAAM2F,GAAY,CAChBC,SAAU,CACR,CACEC,KAAM,+BACNC,KAAM,uBAGVC,iBAAkB,CAChB,CACEF,KAAM,+BACNC,KAAM,uBAGVE,SAAU,CACR,CACEH,KAAM,mCACNC,KAAM,0CAGVG,SAAU,CACR,CACEJ,KAAM,mCACNC,KAAM,qBAGVI,SAAU,CACR,CACEL,KAAM,mCACNC,KAAM,oBAGVK,cAAe,CACb,CACEN,KAAM,mCACNC,KAAM,0CAIVM,UAAW,CACT,CACEP,KAAM,oCACNC,KAAM,0CAGVO,eAAgB,CACd,CACER,KAAM,oCACNC,KAAM,0CAKVQ,KAAM,CACJ,CACET,KAAM,+BACNC,KAAM,uCAER,CACED,KAAM,+BACNC,KAAM,yCAGVS,UAAW,CACT,CACEV,KAAM,+BACNC,KAAM,uCAER,CACED,KAAM,+BACNC,KAAM,yCAIVU,MAAO,CACL,CACEX,KAAM,gCACNC,KAAM,4BAER,CACED,KAAM,gCACNC,KAAM,8BAGVW,SAAU,CACR,CACEZ,KAAM,gCACNC,KAAM,uBAER,CACED,KAAM,gCACNC,KAAM,0BAGVY,MAAO,CACL,CACEb,KAAM,gCACNC,KAAM,2BAER,CACED,KAAM,gCACNC,KAAM,8BAGVa,WAAY,CACV,CACEd,KAAM,gCACNC,KAAM,2BAER,CACED,KAAM,gCACNC,KAAM,8BAGVc,OAAQ,CACN,CACEf,KAAM,iCACNC,KAAM,+BAIVe,cAAe,CACb,CACEhB,KAAM,uCACNC,KAAM,qBAGVgB,mBAAoB,CAClB,CACEjB,KAAM,uCACNC,KAAM,qBAIViB,WAAY,CACV,CACElB,KAAM,sCACNC,KAAM,0CAGVkB,KAAM,CACJ,CACEnB,KAAM,+BACNC,KAAM,eAGVmB,QAAS,CACP,CACEpB,KAAM,kCACNC,KAAM,wCAGVoB,KAAM,CACJ,CACErB,KAAM,+BACNC,KAAM,oBAGVqB,UAAW,CACT,CACEtB,KAAM,+BACNC,KAAM,oBAGVsB,MAAO,CACL,CACEvB,KAAM,gCACNC,KAAM,qBAGVuB,MAAO,CACL,CACExB,KAAM,gCACNC,KAAM,6BAER,CACED,KAAM,gCACNC,KAAM,gCAKNwB,GAAU,CACdL,QAAO,EAEPX,KAAI,EACJC,UAAS,EAETQ,WAAU,EACVC,KAAI,EACJhB,SAAQ,EACRE,SAAQ,EACRD,SAAQ,EACRE,cAAa,EAEbC,UAAS,EACTC,eAAc,EAEdO,OAAM,EACNM,KAAI,GACJC,UAAS,GAETN,cAAa,EACbC,mBAAkB,EAElBL,SAAQ,EACRC,MAAK,EACLC,WAAU,EACVH,MAAK,EACLa,MAAK,GACLD,MAAKA,I,0BC7LP,MAAMG,GAAkB,CAAC,EACzB,IAAIC,GACFC,IAAO,EACPC,GAAgB,EAEH,MAAMC,GACnBvO,WAAAA,CAAY/D,EAAcuS,EAAY5U,EAAOuC,IAAYsS,EAAAA,EAAAA,GAAA,yBA2tCtC5T,IACjB,OAAQA,GACN,IAAK,OACH,MAAO,gBACT,IAAK,OACH,MAAO,gBACT,IAAK,QACH,MAAO,iBACT,IAAK,QACH,MAAO,cAET,IAAK,gBACH,MAAO,0BAET,IAAK,eACH,MAAO,wBACT,IAAK,OACH,MAAO,gBACT,IAAK,UACH,MAAO,kBAET,IAAK,MACH,MAAO,eAET,IAAK,MACH,MAAO,eACT,IAAK,aACH,MAAO,wBACT,IAAK,kBACH,MAAO,4BACT,IAAK,UACH,MAAO,mBACT,IAAK,UACH,MAAO,mBACT,IAAK,UACH,MAAO,mBACT,IAAK,UACH,MAAO,iBAET,IAAK,YACH,MAAO,sBAET,IAAK,YACH,MAAO,sBACT,IAAK,UACH,MAAO,oBACT,IAAK,OACH,MAAO,gBACT,IAAK,QACH,MAAO,iBACX,KACD4T,EAAAA,EAAAA,GAAA,4BAEqB5T,IAChB1C,KAAKuW,YACPvW,KAAKwW,SAGH9T,GAAU1C,KAAKyW,WAAW/T,IAE5B1C,KAAK0W,kBAAkB,CAAEC,YAAa,CAAE3U,GAAIhC,KAAKyW,WAAW/T,KAC9D,KACD4T,EAAAA,EAAAA,GAAA,oBAEa,KAEZ,GAAItW,KAAKuW,YAAcvW,KAAK4W,aAAe5W,KAAK4W,YAAY5U,GAAI,CAC9D,IAAI6U,EACFb,GAAgBD,GAAQ/V,KAAK4W,YAAY5U,IAAIqN,qBAE/CrP,KAAK8H,MAAMiG,OAAO1M,SAAQwH,IACxB7I,KAAK8H,MAAMgP,OAAO,GAAGC,eAAexP,KAAKsB,GACzC7I,KAAK8H,MAAMgP,OAAO,GAAGE,mBAAmBzP,KAAKsB,GAG/B,WAAZA,EAAK7G,IACO,UAAZ6G,EAAK7G,IACO,WAAZ6G,EAAK7G,KACqB,eAAxBhC,KAAK4W,YAAY5U,IACO,SAAxBhC,KAAK4W,YAAY5U,IACO,SAAxBhC,KAAK4W,YAAY5U,IACO,cAAxBhC,KAAK4W,YAAY5U,IACO,UAAxBhC,KAAK4W,YAAY5U,IACO,aAAxBhC,KAAK4W,YAAY5U,IACO,UAAxBhC,KAAK4W,YAAY5U,IACO,eAAxBhC,KAAK4W,YAAY5U,KACL,UAAZ6G,EAAK7G,GAEP6G,EAAKoO,gBAAiB,EAGjBpO,EAAK7G,GAAGkV,MAAM,gBACjBjB,GAAckB,gBAAgBtO,GAAM,GAKb,aAAxB7I,KAAK4W,YAAY5U,IACQ,kBAAxBhC,KAAK4W,YAAY5U,IACP,iBAAZ6G,EAAK7G,GAImB,cAAxBhC,KAAK4W,YAAY5U,IACL,kBAAZ6G,EAAK7G,IAImB,mBAAxBhC,KAAK4W,YAAY5U,IACL,kBAAZ6G,EAAK7G,GAHLhC,KAAKoX,iBAAiBvO,GAOE,SAAxB7I,KAAK4W,YAAY5U,IACL,kBAAZ6G,EAAK7G,IAImB,cAAxBhC,KAAK4W,YAAY5U,IACL,kBAAZ6G,EAAK7G,GAHLhC,KAAKoX,iBAAiBvO,EAAM,YAOH,kBAAxB7I,KAAK4W,YAAY5U,IACQ,uBAAxBhC,KAAK4W,YAAY5U,IACO,UAAxBhC,KAAK4W,YAAY5U,IACO,eAAxBhC,KAAK4W,YAAY5U,IACO,UAAxBhC,KAAK4W,YAAY5U,IACO,UAAxBhC,KAAK4W,YAAY5U,IACP,iBAAZ6G,EAAK7G,GAImB,aAAxBhC,KAAK4W,YAAY5U,IACL,iBAAZ6G,EAAK7G,GAELhC,KAAKoX,iBAAiBvO,GAEG,aAAxB7I,KAAK4W,YAAY5U,IACQ,aAAxBhC,KAAK4W,YAAY5U,IACN,oBAAZ6G,EAAK7G,IAAwC,oBAAZ6G,EAAK7G,GAIf,WAAxBhC,KAAK4W,YAAY5U,IACL,iBAAZ6G,EAAK7G,GAELhC,KAAKoX,iBAAiBvO,IAEG,SAAxB7I,KAAK4W,YAAY5U,IACQ,cAAxBhC,KAAK4W,YAAY5U,IACN,qBAAZ6G,EAAK7G,IAAyC,qBAAZ6G,EAAK7G,MAIhB,UAAxBhC,KAAK4W,YAAY5U,IACJ,8BAAZ6G,EAAK7G,IACQ,+BAAZ6G,EAAK7G,IAIiB,UAAxBhC,KAAK4W,YAAY5U,IACJ,2BAAZ6G,EAAK7G,IACQ,4BAAZ6G,EAAK7G,KAEP6G,EAAKwO,WAAa,GAZlBrX,KAAKoX,iBAAiBvO,GAXtB7I,KAAKoX,iBAAiBvO,GAXtB7I,KAAKoX,iBAAiBvO,EAAM,WA9B5B7I,KAAKoX,iBAAiBvO,EAAM,WAiE9B,IAEEgO,GACFA,EAAY9I,OAAO1M,SAAQwH,IACT,WAAZA,EAAK7G,IAA+B,UAAZ6G,EAAK7G,KAE/B6G,EAAKyO,WAAY,EACnB,GAGN,MACDhB,EAAAA,EAAAA,GAAA,uBAEgB,KACXtW,KAAK4W,YAAY5U,IACnBhC,KAAK8H,MAAMiG,OAAO1M,SAAQwH,IAEV,WAAZA,EAAK7G,IACO,UAAZ6G,EAAK7G,IACO,WAAZ6G,EAAK7G,IACO,UAAZ6G,EAAK7G,KAEL6G,EAAKoO,gBAAiB,GAExBhB,GAAcsB,mBAAmB1O,GAAM,EAAK,GAEhD,KACDyN,EAAAA,EAAAA,GAAA,yBAEkB,CAACzN,EAAM2O,KACxB3O,EAAK4O,SAAWzX,KAAK0X,eAEO,SAAxB1X,KAAK4W,YAAY5U,IAA6B,qBAAZ6G,EAAK7G,IACpChC,KAAK2X,qBACR3X,KAAK2X,mBAAqB,IAAIC,EAAAA,QAC5B,yDACA5X,KAAK8H,OAEP9H,KAAK2X,mBAAmBE,KAAOC,KAAKC,IAEtClP,EAAK4O,SAASO,eAAiBhY,KAAK2X,oBAEZ,SAAxB3X,KAAK4W,YAAY5U,IACL,qBAAZ6G,EAAK7G,IAEAhC,KAAKiY,qBACRjY,KAAKiY,mBAAqB,IAAIL,EAAAA,QAC5B,kDACA5X,KAAK8H,OAEP9H,KAAKiY,mBAAmBJ,KAAOC,KAAKC,IAEjC/X,KAAKkY,uBACRlY,KAAKkY,qBAAuB,IAAIC,EAAAA,iBAC9B,wBACAnY,KAAK8H,OAEP9H,KAAKkY,qBAAqBE,cAAgB,IAAIC,EAAAA,OAAOC,MACrDtY,KAAKkY,qBAAqBF,eAAiBhY,KAAKuY,wBAChDvY,KAAKkY,qBAAqBM,cAAgB,IAC1CxY,KAAKkY,qBAAqBO,cAAgB,IAAIJ,EAAAA,OAAOK,cACnD,YAGJ7P,EAAK4O,SAAWzX,KAAKkY,qBACrBrP,EAAK4O,SAASO,eAAiBhY,KAAKiY,oBAEZ,cAAxBjY,KAAK4W,YAAY5U,IACL,qBAAZ6G,EAAK7G,IAEAhC,KAAK2Y,0BACR3Y,KAAK2Y,wBAA0B,IAAIf,EAAAA,QACjC,gDACA5X,KAAK8H,OAEP9H,KAAK2Y,wBAAwBd,KAAOC,KAAKC,IAE3ClP,EAAK4O,SAASO,eAAiBhY,KAAK2Y,yBAEZ,cAAxB3Y,KAAK4W,YAAY5U,IACL,qBAAZ6G,EAAK7G,IAEAhC,KAAK4Y,0BACR5Y,KAAK4Y,wBAA0B,IAAIhB,EAAAA,QACjC,iDACA5X,KAAK8H,OAEP9H,KAAK4Y,wBAAwBf,KAAOC,KAAKC,IAEtC/X,KAAKkY,uBACRlY,KAAKkY,qBAAuB,IAAIC,EAAAA,iBAC9B,wBACAnY,KAAK8H,OAEP9H,KAAKkY,qBAAqBE,cAAgB,IAAIC,EAAAA,OAAOC,MACrDtY,KAAKkY,qBAAqBF,eAAiBhY,KAAKuY,wBAChDvY,KAAKkY,qBAAqBM,cAAgB,IAC1CxY,KAAKkY,qBAAqBO,cAAgB,IAAIJ,EAAAA,OAAOK,cACnD,YAGJ7P,EAAK4O,SAAWzX,KAAKkY,qBACrBrP,EAAK4O,SAASO,eAAiBhY,KAAK4Y,yBACH,UAAxB5Y,KAAK4W,YAAY5U,IACrBhC,KAAK6Y,mBACR7Y,KAAK6Y,iBAAmB,IAAIjB,EAAAA,QAC1B,0CACA5X,KAAK8H,OAEP9H,KAAK6Y,iBAAiBhB,KAAOC,KAAKC,IAEpClP,EAAK4O,SAASO,eAAiBhY,KAAK6Y,kBAGZ,UAAxB7Y,KAAK4W,YAAY5U,IACO,eAAxBhC,KAAK4W,YAAY5U,IACO,UAAxBhC,KAAK4W,YAAY5U,IACO,UAAxBhC,KAAK4W,YAAY5U,IACO,SAAxBhC,KAAK4W,YAAY5U,IACO,cAAxBhC,KAAK4W,YAAY5U,IAEZhC,KAAK8Y,6BACR9Y,KAAK8Y,2BAA6B,IAAIlB,EAAAA,QACpC,uDACA5X,KAAK8H,QAGT9H,KAAK8Y,2BAA2BC,KACL,SAAxB/Y,KAAK4W,YAAY5U,GAA0C,cAAxBhC,KAAK4W,YAAY5U,GACjDhC,KAAKgZ,uBACL,EACNhZ,KAAK8Y,2BAA2BG,KACL,SAAxBjZ,KAAK4W,YAAY5U,GAA0C,cAAxBhC,KAAK4W,YAAY5U,GACjD,EACA8V,KAAKC,GAEX/X,KAAKuY,wBAAwBU,KACH,SAAxBjZ,KAAK4W,YAAY5U,IAAyC,cAAxBhC,KAAK4W,YAAY5U,GAC/C,EACA8V,KAAKC,GAEXlP,EAAK4O,SAASO,eAAiBhY,KAAKuY,yBACH,aAAxBvY,KAAK4W,YAAY5U,IACrBhC,KAAKkZ,oCACRlZ,KAAKkZ,kCAAoC,IAAItB,EAAAA,QAC3C,+CACA5X,KAAK8H,QAGT9H,KAAKmZ,+BAAiC,IAAIvB,EAAAA,QACxC,+CACA5X,KAAK8H,OAEP9H,KAAKmZ,+BAA+BtB,KAAOC,KAAKC,GAGhDlP,EAAK4O,SAASO,eAAiBhY,KAAKmZ,gCAEL,aAAxBnZ,KAAK4W,YAAY5U,IACnBhC,KAAKoZ,wBACRpZ,KAAKoZ,sBAAwB,IAAIxB,EAAAA,QAC/B,+CACA5X,KAAK8H,QAET9H,KAAKoZ,sBAAsBvB,KAAOC,KAAKC,GACvC/X,KAAK0X,eAAeM,eAAiBhY,KAAKoZ,wBAE1CvQ,EAAK4O,SAASO,eAAiBhY,KAAKuY,wBACpCvY,KAAKuY,wBAAwBU,KAAO,GAGpCpQ,EAAK4O,SAASO,eAAee,KADnB,aAARvB,EACkCxX,KAAKqZ,iBACxB,oBAAR7B,EAC2BxX,KAAKgZ,uBACxB,YAARxB,EAC2BM,KAAKC,GAEL,CACtC,KACDzB,EAAAA,EAAAA,GAAA,eAEQ,KACPtW,KAAKyB,MAAMsE,OAAO,yBAAyB,GAE3C/F,KAAKsZ,iBACLtD,GAAgBD,GAAQ/V,KAAK4W,YAAY5U,IAAIqI,UAAUkP,qBAEvDvZ,KAAK8H,MAAMiG,OAAO1M,SAAQwH,IACnBA,EAAK2Q,SACRxZ,KAAK8H,MAAM2R,WAAW5Q,EACxB,IAGF7I,KAAK0Z,cAAc,cAEnB1Z,KAAK8H,MAAM6R,WAAa,IAAItB,EAAAA,OAAOK,cAAc,WACjD1Y,KAAK8H,MAAM8R,mBAAqB5Z,KAAK6Z,cACrC7Z,KAAK8H,MAAMgS,qBAAuB,IAGlC9Z,KAAK8H,MAAMiS,SAAW,KACtB/Z,KAAK8H,MAAMkS,OAAS,KAEhBjE,GAAQ/V,KAAK4W,YAAY5U,IAAIqN,qBAC/B0G,GAAQ/V,KAAK4W,YAAY5U,IAAIqN,oBAAoBhO,SAAQgJ,IACvD2L,GAAgB3L,GAAUkP,oBAAoB,IAGlDvD,GAAgB,sBAAsBiE,gBACtCja,KAAKuW,YAAa,EAClBvW,KAAKyB,MAAMsE,OAAO,uBAAwB,IAC1C/F,KAAKyB,MAAMsE,OAAO,4BAA6B,IAE/C/F,KAAK+H,OAAOmS,cAAcla,KAAKJ,QAAQ,GAEvCI,KAAKma,aACLna,KAAK8H,MAAMsS,uBAAuBpa,KAAKqa,8BACvCra,KAAK8H,MAAMgP,OAAO,GAAGwD,WAAWC,GAAK,GACrCva,KAAK8H,MAAMgP,OAAO,GAAGwD,WAAWE,IAAM,EACtCxa,KAAK8H,MAAMgP,OAAO,GAAGwD,WAAWG,GAAK,EAEjCza,KAAK0a,gCACP1a,KAAK8H,MAAMsS,uBAAuBpa,KAAK0a,+BACvC1a,KAAK0a,+BAAgC,GAEnC1a,KAAK2a,8BACP3a,KAAK8H,MAAMsS,uBAAuBpa,KAAK2a,6BACvC3a,KAAK2a,6BAA8B,GAEjC3a,KAAK4a,qCACP5a,KAAK8H,MAAMsS,uBACTpa,KAAK4a,oCAEP5a,KAAK4a,oCAAqC,GAExC5a,KAAK6a,yCACP7a,KAAK8H,MAAMsS,uBACTpa,KAAK6a,wCAEP7a,KAAK6a,wCAAyC,GAG5C7a,KAAK8H,MAAMgT,cAAc,oBAAoB,IAC/C9a,KAAK8H,MAAMgT,cAAc,oBAAoB,GAAGC,UAE9C/a,KAAK8H,MAAMgT,cAAc,uBAAuB,IAClD9a,KAAK8H,MAAMgT,cAAc,uBAAuB,GAAGC,UAGrD/a,KAAKgb,aAAe,CAClBtP,QAAS,EACT+D,UAAW,GAEbzP,KAAKib,mBACLjb,KAAKkb,8BAA+B,EAEpClb,KAAKmb,OAAOC,QAAQ,CAClB3W,KAAM,IAAMzE,KAAKyB,MAAMgE,MAAM4V,aAG/Brb,KAAKsb,gBAAkB,KAEvBC,YAAW,KACTvb,KAAKyB,MAAMsE,OAAO,yBAAyB,EAAM,GAChD,IAAI,KACRuQ,EAAAA,EAAAA,GAAA,gBAES,KACJtW,KAAK+H,QAAQ/H,KAAK+H,OAAOgT,UAC7B/a,KAAK8H,MAAMiT,UACX/a,KAAKwb,OAAOT,UACZ/a,KAAKyB,MAAMsE,OAAO,0BAA0B,GAC5C7E,OAAOJ,oBAAoB,YAAad,KAAKyb,cAAc,GAC3Dnb,GAAAA,EAAQO,IAAI,eAAgBb,KAAK0b,SAAS,KAC3CpF,EAAAA,EAAAA,GAAA,qBAEc,CAACqF,EAAOC,EAAIC,KAChBF,EAAQC,EAAG,KAAOC,EAAG,GAAKA,EAAG,KAAQD,EAAG,GAAKA,EAAG,IAAMC,EAAG,MACnEvF,EAAAA,EAAAA,GAAA,sBAEetL,IACd,MAAM,UAAE8Q,EAAS,SAAElT,EAAQ,OAAEgH,EAAM,kBAAE4B,GAAsBxG,EAE3D,IAAI+Q,EAAgB/b,KAAK+H,OAAOiU,OAC5BC,EAAqBjc,KAAK+H,OAAOmU,iBAEhC1K,IACHxR,KAAK+H,OAAOmU,iBAAmBH,GAG7BnT,GACF5I,KAAK+H,OAAOoU,aACV,WACA,IAAIxS,EAAAA,QAAQf,EAASqC,OAAO,GAAIrC,EAASqC,OAAO,GAAIrC,EAASqC,OAAO,IACpErC,EAASiH,OAASjH,EAASiH,OAAS,CAAEC,IAAK,GAAIC,MAAO,KACtD,KACE/P,KAAKyB,MAAM2a,SAAS,uBAAwBN,GAC5C9b,KAAK+H,OAAOmU,iBAAmBD,CAAkB,IAInDrM,GACF5P,KAAK+H,OAAOoU,aACV,SACA,IAAIxS,EAAAA,QAAQiG,EAAO3E,OAAO,GAAI2E,EAAO3E,OAAO,GAAI2E,EAAO3E,OAAO,IAC9D2E,EAAOC,OAASD,EAAOC,OAAS,CAAEC,IAAK,GAAIC,MAAO,KAClD,KACE/P,KAAK+H,OAAOmU,iBAAmBD,CAAkB,IAKlDrT,GAAagH,IAChB5P,KAAK+H,OAAOmU,iBAAmBD,EACjC,KACD3F,EAAAA,EAAAA,GAAA,oBAEahF,IACRtR,KAAKqc,cACPrc,KAAKqc,YAAYC,KAAKtc,KAAKqc,YAAYzQ,UACvC5L,KAAKqc,YAAYE,QACjBvc,KAAKqc,YAAc,MAGrB,IAuJIG,EAAYC,EAvJZC,EAAa3G,GAAQ/V,KAAK4W,YAAY5U,IAS1C,GAPAhC,KAAK8H,MAAM6U,oBACP3c,KAAK8H,MAAM8U,iBACb5c,KAAK8H,MAAM8U,gBAAgBvb,SAAQwb,IACjCA,EAAMC,MAAK,GAAOP,OAAO,IAIzBG,EAAW3Q,OAAS2Q,EAAW3Q,MAAMuF,GAAO,CAC9C,IAAI1F,EAAW,IACf,GAAI8Q,EAAW3Q,MAAMuF,GAAMrF,gBAAiB,CAC1C,IAAI8Q,EAAkBL,EAAW3Q,MAAMuF,GAAMrF,gBACzC+Q,EAAiBD,EAAgBjR,SAKrC,GACEiR,EAAgB7Q,UAChB6Q,EAAgB7Q,SAASlM,KAAKid,oBAC9B,CACA,IAAIC,EAAeH,EAAgB7Q,SAASlM,KAAKid,oBAUjD,GARIC,EAAatR,WACfA,EAAWsR,EAAatR,UAGtBsR,EAAaC,YACfH,EAAiBE,EAAaC,WAG5BD,EAAajJ,cAAe,CAC9B,IAAImJ,EAAiBpd,KAAK8H,MAAMuV,wBAC9BH,EAAajJ,oBAGiB9M,IAA5B+V,EAAarR,YACfuR,EAAeE,UAAUJ,EAAarR,YAGxC7L,KAAKud,gBAAkBH,CACzB,MAEgCjW,IAA5B+V,EAAarR,aACf7L,KAAKgb,aAAatP,QAAUwR,EAAarR,iBAGb1E,IAA1B+V,EAAapR,WACfkR,EAAiBE,EAAapR,SAElC,CAEA,IAAI0R,GAAoB,EACpBC,EACFf,EAAW3Q,MAAMuF,GAAMtG,YACvB0R,EAAW3Q,MAAMuF,GAAMtG,WAAW2E,kBAC9B+M,EAAW3Q,MAAMuF,GAAMtG,WAAW2E,kBAClC,GACFoN,EAAgBlR,aAClB7L,KAAKgb,aAAatP,QAAUqR,EAAgBlR,YAG9C7L,KAAKqc,aAAcqB,EAAAA,EAAAA,GAAM,CACvBC,QAAS3d,KAAKgb,aACdpP,SAAUA,EACVF,QAASsR,EACTY,OAAQ,iBACR1U,OAAQ2U,IAEJ/F,KAAKgG,MAAMD,EAAKE,WAAaN,IAC5BD,IAEGd,EAAW3Q,MAAMuF,GAAMtG,YACzBhL,KAAKge,cAActB,EAAW3Q,MAAMuF,GAAMtG,YAE5CwS,GAAoB,GAElB1F,KAAKgG,MAAMD,EAAKE,UAAY,MAC1BhB,EAAgBzJ,YAClByJ,EAAgBzJ,WAAWjS,SAAQ4c,IAC7Bje,KAAK8H,MAAMoW,YAAYD,KACzBje,KAAK8H,MAAMoW,YAAYD,GAAU5G,WAAa,EAChD,IAGA0F,EAAgB5K,YAClB4K,EAAgB5K,WAAW9Q,SAAQ4c,IAC7Bje,KAAK8H,MAAMoW,YAAYD,KACzBje,KAAK8H,MAAMoW,YAAYD,GAAU5G,WAAa,EAChD,KAMwB,YAA5BrX,KAAKid,oBACuB,aAA5Bjd,KAAKid,qBAGLjd,KAAK8H,MAAMqW,kBAAkB,uBAAuBC,WACpDpe,KAAK8H,MACFqW,kBAAkB,6BAClBC,WACHpe,KAAK8H,MAAMqW,kBAAkB,sBAAsBC,WACnDpe,KAAK8H,MACFqW,kBAAkB,4BAClBC,WACL,EAGFC,SAAUA,KACRre,KAAKse,wBAAwB5B,GAIC,YAA5B1c,KAAKid,oBACuB,aAA5Bjd,KAAKid,qBAELjd,KAAK8H,MAAMqW,kBAAkB,uBAAuBI,SACpDve,KAAK8H,MACFqW,kBAAkB,6BAClBI,SACHve,KAAK8H,MAAMqW,kBAAkB,sBAAsBI,SACnDve,KAAK8H,MAAMqW,kBAAkB,4BAA4BI,SAC3D,GAGN,CACA,GAAI7B,EAAW3Q,MAAMuF,GAAM5B,kBAAmB,CAC5C,IAAI8O,EAAoB9B,EAAW3Q,MAAMuF,GAAM5B,kBAG7C8O,EAAkBtS,UAClBsS,EAAkBtS,SAASlM,KAAKid,sBAEhCrR,EACE4S,EAAkBtS,SAASlM,KAAKid,oBAAoBrR,WAExD8R,EAAAA,EAAAA,GAAM,CACJC,QAAS3d,KAAKgb,aACdpP,SAAUA,EACV6D,UAAW+O,EAAkB1S,SAC7B8R,OAAQ,kBAEZ,CACF,CACA5d,KAAKid,mBAAqBjd,KAAKyB,MAAMgE,MAAMgZ,qBAK3CjC,EAAaxc,KAAK8H,MAAM4W,YAAY,YACpCjC,EAAgBzc,KAAK8H,MAAM4W,YAAY,eAYvC,IAAIC,EAAmB,CACrB,WAAY3e,KAAK4e,iBAAiB,YAClC,cAAe5e,KAAK4e,iBAAiB,eACrC,qBAAsB5e,KAAK4e,iBAAiB,sBAC5C,qBAAsB5e,KAAK4e,iBAAiB,sBAG5C,aAAc5e,KAAK4e,iBAAiB,cACpC,0BAA2B5e,KAAK4e,iBAC9B,2BAEF,aAAc5e,KAAK4e,iBAAiB,cACpC,uBAAwB5e,KAAK4e,iBAAiB,yBAEhB,YAA5B5e,KAAKid,oBACP0B,EAAiB,YAAYpf,KAAKuL,OAAO,GAAK,EAC9C6T,EAAiB,YAAYpf,KAAKuL,OAAO,GAAK,EAC9C6T,EAAiB,eAAepf,KAAKuL,OAAO,GAAK,EACjD6T,EAAiB,eAAepf,KAAKuL,OAAO,GAAK,EACjD6T,EAAiB,sBAAsBpf,KAAKuL,OAAO,GAAK,EACxD6T,EAAiB,sBAAsBpf,KAAKuL,OAAO,GAAK,EACxDyQ,YAAW,WACTiB,EAAW5T,SAASuB,EAAI,MACxBsS,EAAc7T,SAASuB,EAAI,MAC3BwU,EAAiB,YAAYpf,KAAKuL,OAAO,GAAK,GAC9C6T,EAAiB,YAAYpf,KAAKuL,OAAO,GAAK,IAC9C6T,EAAiB,eAAepf,KAAKuL,OAAO,GAAK,GACjD6T,EAAiB,eAAepf,KAAKuL,OAAO,GAAK,IACjD6T,EAAiB,sBAAsBpf,KAAKuL,OAAO,GAAK,IACxD6T,EAAiB,sBAAsBpf,KAAKuL,OAAO,GAAK,GAC1D,GAAG,MAGH6T,EAAiB,cAAcpf,KAAKsL,YACV,aAAxB7K,KAAK4W,YAAY5U,GACb,0DACA,0DACN2c,EAAiB,2BAA2Bpf,KAAKsL,YACvB,aAAxB7K,KAAK4W,YAAY5U,GACb,uEACA,uEACN2c,EAAiB,cAAcpf,KAAKsL,YACV,aAAxB7K,KAAK4W,YAAY5U,GACb,0DACA,0DACN2c,EAAiB,wBAAwBpf,KAAKsL,YACpB,aAAxB7K,KAAK4W,YAAY5U,GACb,oEACA,qEAC+B,aAA5BhC,KAAKid,qBACd0B,EAAiB,YAAYpf,KAAKuL,OAAO,GAAK,EAC9C6T,EAAiB,YAAYpf,KAAKuL,OAAO,GAAK,EAC9C6T,EAAiB,eAAepf,KAAKuL,OAAO,GAAK,EACjD6T,EAAiB,eAAepf,KAAKuL,OAAO,GAAK,EACjD6T,EAAiB,sBAAsBpf,KAAKuL,OAAO,GAAK,EACxD6T,EAAiB,sBAAsBpf,KAAKuL,OAAO,GAAK,EACxDyQ,YAAW,WACTiB,EAAW5T,SAASuB,EAAI,KACxBsS,EAAc7T,SAASuB,EAAI,KAC3BwU,EAAiB,YAAYpf,KAAKuL,OAAO,GAAK,GAC9C6T,EAAiB,YAAYpf,KAAKuL,OAAO,GAAK,IAC9C6T,EAAiB,eAAepf,KAAKuL,OAAO,GAAK,GACjD6T,EAAiB,eAAepf,KAAKuL,OAAO,GAAK,IACjD6T,EAAiB,sBAAsBpf,KAAKuL,OAAO,GAAK,IACxD6T,EAAiB,sBAAsBpf,KAAKuL,OAAO,GAAK,GAC1D,GAAG,MAGH6T,EAAiB,cAAcpf,KAAKsL,YACV,aAAxB7K,KAAK4W,YAAY5U,GACb,uDACA,uDACN2c,EAAiB,2BAA2Bpf,KAAKsL,YACvB,aAAxB7K,KAAK4W,YAAY5U,GACb,oEACA,oEACN2c,EAAiB,cAAcpf,KAAKsL,YACV,aAAxB7K,KAAK4W,YAAY5U,GACb,uDACA,uDACN2c,EAAiB,wBAAwBpf,KAAKsL,YACpB,aAAxB7K,KAAK4W,YAAY5U,GACb,iEACA,iEACR,KACDsU,EAAAA,EAAAA,GAAA,0BAEmBuI,IAElB7e,KAAKyB,MAAMsE,OAAO,2BAA4B8Y,GAC9C5I,GAAc6I,eAAeC,YAAc,EAMA,kBAAvC/e,KAAKyB,MAAMgE,MAAMuZ,qBACnBhf,KAAKif,YAAY,UAEjBjf,KAAKyB,MAAMsE,OAAO,6BAA8B,WAIlD,IAAI2W,EAAa3G,GAAQ/V,KAAK4W,YAAY5U,IAC1C,IAAK0a,EAAW/N,aAAa2B,mBAAoB,CAC/C,IAAI,SAAE3F,GAAayJ,GAAUpU,KAAK4W,YAAY5U,IAAI8G,MAChDhB,GAASA,EAAMyM,OAASmI,EAAWrS,WAGrCrK,KAAK4e,iBAAmB,CAAC,EACzB5e,KAAKyB,MAAMsE,OAAO,2BAA2B,GAE7C4E,EAAStJ,SAAQ6d,IAEbxC,EAAW/R,SAASuU,KACqC,IAAzDxC,EAAW/R,SAASuU,GAAS3f,KAAKmP,YAAYmQ,KAE9C7e,KAAK4e,iBAAiBM,GAAW,CAC/BlW,KAAM0T,EAAW/R,SAASuU,GAASlW,KACnCzJ,KAAMmd,EAAW/R,SAASuU,GAAS3f,KACnCwJ,OAAQ2T,EAAW/R,SAASuU,GAASnW,OACjC2T,EAAW/R,SAASuU,GAASnW,OAC7BY,EAAAA,QAAQwV,QAEhB,GAEJ,CAEIzC,EAAW/N,aAAakQ,MAC1BnB,EAAAA,EAAAA,GAAM,CACJC,QAAS3d,KAAKsb,gBACd1P,SAAU,OACP8Q,EAAW/N,aAAakQ,GAAO5Q,KAClC2P,OAAQ,iBACRS,SAAUA,KACH3B,EAAW/N,aAAa2B,qBAC3BtQ,KAAKof,oBACLpf,KAAKqf,yBACP,KAGJ3B,EAAAA,EAAAA,GAAM,CACJC,QAAS3d,KAAKsb,gBACd1P,SAAU,IACV0T,MAAO,OACJ5C,EAAW/N,aAAakQ,GAAO7Q,KAClC4P,OAAQ,iBACRS,SAAUA,KAERpI,GAAc6I,eAAeC,YAAc,EACtCrC,EAAW/N,aAAa2B,oBAC3BtQ,KAAKyB,MAAMsE,OAAO,2BAA2B,EAC/C,IAGN,KAWDuQ,EAAAA,EAAAA,GAAA,yBAoGkB,KACbtW,KAAKuf,aACPvf,KAAKuf,YAAYnW,QAEnBpJ,KAAK4e,iBAAmB,CAAC,EACzB5e,KAAKwf,yBAA2B,CAAC,CAAC,KACnClJ,EAAAA,EAAAA,GAAA,0BAEmB,KAClBtW,KAAK8H,MAAMsS,uBAAuBpa,KAAKqa,8BACnCra,KAAKuf,aACPvf,KAAKuf,YAAYnW,QAEnBpJ,KAAKyf,iBAAiB,KACvBnJ,EAAAA,EAAAA,GAAA,+BAEwB,KACnBtW,KAAKuf,cACPvf,KAAKuf,YAAYzX,MAAQ9H,KAAK8H,MAC9B9H,KAAKuf,YAAYxX,OAAS/H,KAAK+H,OAC/B/H,KAAKuf,YAAYvX,QAAUhI,KAAKwb,OAAOkE,gBAAe,GACtD1f,KAAKuf,YAAYtX,QAAUjI,KAAKwb,OAAOmE,iBAAgB,GACvD3f,KAAKuf,YAAYrX,aAAelI,KAAK8H,MAAMiG,OAC3C/N,KAAKuf,YAAYpX,MAAQnI,KAAK4e,iBAC9B5e,KAAKuf,YAAY9d,MAAQzB,KAAKyB,MAC9BzB,KAAKuf,YAAYK,OAAS5f,KAAKwf,yBACjC,KACDlJ,EAAAA,EAAAA,GAAA,kBAEWuJ,IACVC,QAAQC,IACN,cAAc/f,KAAK+H,OAAOa,SAASsB,MAAMlK,KAAK+H,OAAOa,SAASuB,MAAMnK,KAAK+H,OAAOa,SAAS2D,OAEvFsT,GACFG,UAAUC,UACPC,UACC,IAAIlgB,KAAK+H,OAAOa,SAASsB,MAAMlK,KAAK+H,OAAOa,SAASuB,MAAMnK,KAAK+H,OAAOa,SAAS2D,OAEhF4T,MACC,WAAY,IACZ,WAAY,GAElB,KACD7J,EAAAA,EAAAA,GAAA,sBAEexO,IAEd7H,SAASmgB,cAAc,iBAAiBC,MAAQnf,OAAOof,WACvDrgB,SAASmgB,cAAc,iBAAiBG,OAASrf,OAAOsf,YACxDvgB,SAASmgB,cAAc,iBAAiBK,UAAY,EAEhDzgB,KAAKwb,OAAOkE,kBAAoB,KAClC1f,KAAK8H,MACFQ,YACAoY,wBACC1gB,KAAK2gB,QAAQC,SAAS5gB,KAAKyB,MAAMgE,MAAMkb,UAG7B,eAAV7Y,QAAoCX,IAAVW,EAC5B9H,KAAK8H,MACFQ,YACAoY,wBACC1gB,KAAK2gB,QAAQE,WAAW7gB,KAAKyB,MAAMgE,MAAMkb,UAG7C3gB,KAAK8H,MACFQ,YACAoY,wBACC1gB,KAAK2gB,QAAQG,cAAc9gB,KAAKyB,MAAMgE,MAAMkb,UAKpD3gB,KAAKqf,wBAAwB,KAG/B/I,EAAAA,EAAAA,GAAA,qBAIeyK,IACb/gB,KAAKghB,MAAQD,EAAEE,QAAUjhB,KAAKkhB,YAAc,IAC5ClhB,KAAKmhB,MAAQJ,EAAEK,QAAUphB,KAAKqhB,aAAe,IAE7CrhB,KAAKshB,cAAc,KAGrBhL,EAAAA,EAAAA,GAAA,gBAGU,KAERtW,KAAKuB,SAAU,CAAK,KAGtB+U,EAAAA,EAAAA,GAAA,qBAIe,KACRtW,KAAKuB,UACRJ,sBAAsBnB,KAAKuhB,SAC3BvhB,KAAKuB,SAAU,EACjB,KACD+U,EAAAA,EAAAA,GAAA,qCAE8B,KACzBtW,KAAKwhB,MAAM/c,OAAS,IAAMzE,KAAKyB,MAAMgE,MAAM4V,YAC7Crb,KAAKuf,YAAYrW,SAIflJ,KAAKud,kBAELvd,KAAKud,gBAAgBkE,WACrBzhB,KAAKud,gBAAgBmE,YAAY,GAAGC,aAAexL,IAE/CD,KACFA,IAAO,EACPD,GAAc6I,eAAeC,YAAc,GAE7C5I,GAAgBnW,KAAKud,gBAAgBmE,YAAY,GAAGC,aAE/CzL,KACHA,IAAO,EACPD,GAAc6I,eAAeC,YAAc,GAGjD,KA8gCFzI,EAAAA,EAAAA,GAAA,mBACa,CAACsL,EAAK/U,EAAOC,EAAOC,EAAQC,IAChC8K,KAAK+J,IACV/J,KAAKgK,KACDF,EAAM/U,IAAUG,EAASD,IAAYD,EAAQD,GAASE,EACxDC,GAEFD,MAEHuJ,EAAAA,EAAAA,GAAA,qBAEcyL,MAAOzN,EAAMC,EAAMzM,IACzB,IAAIka,SAAQC,IACjBC,EAAAA,YAAYC,mBAAmB7N,EAAMC,EAAMzM,GAAO,SAASsa,GACzDA,EAAUrU,OAAO1M,SAAQwH,IACP,aAAZA,EAAK7G,KACP6G,EAAKwZ,QAAU,IAAI1Y,EAAAA,SAAS,GAAK,GAAK,IACxC,IAEFsY,EAAIG,EACN,GAAE,OAEL9L,EAAAA,EAAAA,GAAA,qBAEc,KACb,IAAIjP,EAAMG,WAAWxH,KAAK8H,OAC1B9H,KAAK8H,MAAMwa,WAAWtU,OACtBhO,KAAKyB,MAAMsE,OAAO,iBAAiB,EAAK,KAEzCuQ,EAAAA,EAAAA,GAAA,iBAeU,MACTiM,EAAAA,EAAAA,KAAS,KAEPviB,KAAKwiB,eACAxiB,KAAKuW,YACRvW,KAAKma,YACP,GACA,IApzGFna,KAAK8D,aAAeA,EACpB9D,KAAKqW,WAAaA,EAClBrW,KAAKwhB,OAAQiB,EAAAA,GAAAA,MACbziB,KAAKmb,QAASuH,EAAAA,GAAAA,MACd1iB,KAAKyB,MAAQA,EACbzB,KAAKgE,WAAaA,EAClBhE,KAAKuW,YAAa,EAClBvW,KAAK2iB,aAAe,GAIpB3iB,KAAKghB,MAAQ,EACbhhB,KAAKmhB,MAAQ,EACbnhB,KAAKqZ,iBAAmBvB,KAAKC,GAAK,EAClC/X,KAAKgZ,wBAA0BlB,KAAKC,GAAK,EACzC/X,KAAKid,mBAAqB,SAC1Bjd,KAAKgb,aAAe,CAClBtP,QAAS,EACT+D,UAAW,GAGbzP,KAAKkb,8BAA+B,EACpClb,KAAK0a,+BAAgC,EACrC1a,KAAK2a,6BAA8B,EACnC3a,KAAK4a,oCAAqC,EAC1C5a,KAAK6a,wCAAyC,EAE9C7a,KAAKyW,WAAa,CAChBmM,KAAM,QACNC,MAAO,QACPC,MAAO,WACP1S,KAAM,aACN2S,aAAc,qBACdC,cAAe,gBACfC,QAAS,UAETC,IAAK,YACLC,IAAK,OAELC,WAAY,aACZC,gBAAiB,OACjBC,QAAS,WACTC,QAAS,WACTC,QAAS,WACTC,QAAS,gBAETC,UAAW,YACXC,UAAW,iBAEXC,YAAa,SACbC,KAAM,OACNC,MAAO,YACPC,KAAM,QACNC,KAAM,SAERhkB,KAAKikB,aAAexb,OAAOwC,OAAOjL,KAAKyW,YAEvCzW,KAAK2gB,QAAU,CACbC,SAAU,CACRsD,GAAI,KACJC,GAAI,EACJC,GAAI,KAENvD,WAAY,CACVqD,GAAI,EACJC,GAAI,IACJC,GAAI,IAENtD,cAAe,CACboD,GAAI,IACJC,GAAI,EACJC,GAAI,KAIRpkB,KAAKsb,gBAAkB,IACzB,CAEA,WAAM+I,GAEJrkB,KAAKJ,OAASK,SAASmgB,cAAc,iBAGrCpgB,KAAKwb,OAAS,IAAI8I,EAAAA,EAAOtkB,KAAKJ,QAAQ,EAAM,CAAE2kB,cAAc,IAAS,GACrEvkB,KAAKwb,OAAOgJ,gBAAkB,EAE9BxkB,KAAKgI,QAAUhI,KAAKwb,OAAOkE,gBAAe,GAC1C1f,KAAKiI,QAAUjI,KAAKwb,OAAOmE,iBAAgB,GAE3C3f,KAAKqhB,aAAengB,OAAOsf,YAC3BxgB,KAAKkhB,YAAchgB,OAAOof,WAE1BtgB,KAAKuB,SAAU,EAEfvB,KAAKykB,0BAELzkB,KAAK8H,MAAQ9H,KAAK0kB,eAClB1kB,KAAK4e,iBAAmB,CAAC,EACzB5e,KAAKwf,yBAA2B,CAAC,EACjCxf,KAAK2kB,qBAAuB,KAE5B3kB,KAAK4kB,iBAAmB,KAIxB5kB,KAAKyB,MAAMsE,OAAO,0BAA0B,GAE5C8e,EAAAA,gBAAgBC,UAAU3I,aAAe,SACvC4I,EACAC,EACAnV,EACAoV,GAEA,IAAIC,EAAO,IAAIC,EAAAA,UACfD,EAAKE,cAAcC,EAAAA,eAAeC,sBAClC,IAAIxV,EAAMD,GAAUA,EAAOC,IAAMD,EAAOC,IAAM,IAC1CyV,EAAc1V,GAAUA,EAAOE,MAAQF,EAAOE,MAAQ,IAE1DyV,EAAAA,UAAUC,wBACR,MACAzlB,KACA+kB,EACAjV,EACAyV,EACAvlB,KAAK+kB,GACLC,EACA,EACAE,EACAD,EAEJ,EAGAjlB,KAAKuY,wBAA0B,IAAIX,EAAAA,QACjC,uDACA5X,KAAK8H,OAGP9H,KAAKuY,wBAAwBV,KAAOC,KAAKC,GACzC/X,KAAK0X,eAAiB,IAAIS,EAAAA,iBAAiB,kBAAmBnY,KAAK8H,OACnE9H,KAAK0X,eAAeU,cAAgB,IAAIC,EAAAA,OAAOC,MAC/CtY,KAAK0X,eAAeM,eAAiBhY,KAAKuY,wBAC1CvY,KAAK0X,eAAec,cAAgB,IACpCxY,KAAK0X,eAAee,cAAgB,IAAIJ,EAAAA,OAAOK,cAAc,WAE7D,IAAI9H,EAAc5Q,KAAK0lB,oBACrB1lB,KAAKyB,MAAMgE,MAAMkgB,WAAWC,eAC5BC,MACElV,EAAa3Q,KAAK0lB,oBACpB1lB,KAAKyB,MAAMgE,MAAMkgB,WAAWC,eAC5BE,KACEtb,EAAexK,KAAK0lB,oBACtB1lB,KAAKyB,MAAMgE,MAAMkgB,WAAWC,eAC5B5J,OAEFhc,KAAK+H,OAAS,IAAI8c,EAAAA,gBAChB,GACAjU,EACAD,EACAnG,EACAxK,KAAK0lB,oBACH1lB,KAAKyB,MAAMgE,MAAMkgB,WAAWC,eAC5Bhd,SACF5I,KAAK8H,OAEP9H,KAAK+H,OAAOge,IAAM,KAClB/lB,KAAK+H,OAAOie,KAAO,EACnBhmB,KAAK+H,OAAOke,KAAO,IACnBjmB,KAAK+H,OAAOme,qBAAuB,KAEnC,IAAIC,QAAqBnmB,KAAKomB,aAC5BhS,GAAUC,SAAS,GAAGC,KACtBF,GAAUC,SAAS,GAAGE,MAGpB8R,QAA6BrmB,KAAKomB,aACpChS,GAAUI,iBAAiB,GAAGF,KAC9BF,GAAUI,iBAAiB,GAAGD,MAGhCyB,GAAgB5B,GAAUC,SAAS,GAAGE,MAAQ4R,EAC9CnQ,GAAgB5B,GAAUI,iBAAiB,GAAGD,MAAQ8R,EAGtDF,EAAatY,UAAUxM,SAAQoW,IACT,0BAAhBA,EAASzV,KACXyV,EAAS6O,cAAgBtmB,KAAKuY,yBAKZ,yBAAhBd,EAASzV,KACXyV,EAAS8O,iBAAkB,EAE7B,IAGDvQ,GAAgB,sBAAsBiE,gBAItC,IAAInI,EAAOkE,GAAgB,sBAAsBc,OAAO,GACxD9W,KAAK8H,MAAM0e,SAAS1U,GAEpB,IAAI2U,EAAMzmB,KAAK8H,MAAM4e,aAAa,aAClCD,EAAI1U,UAAY,IAAIpI,EAAAA,QAAQ,EAAK,GAAM,GACvC8c,EAAIE,uBAAwB,EAE7B,IAAIC,EAAkB,IAAIC,EAAAA,gBAAgB,IAAKJ,GA6D/C,GA5DAG,EAAgBE,8BAA+B,EAC/CF,EAAgBG,KAAO,KACvBH,EAAgBI,WAAa,IAC7BJ,EAAgBK,SAAW,GAG3BL,EAAgB9H,eAAeC,YAAc,EAE7CoH,EAAapY,OAAO1M,SAAQwH,IAC1B+d,EAAgB9H,eAAeoI,WAAW3f,KAAKsB,GAEjC,UAAXA,EAAK7G,IACO,QAAX6G,EAAK7G,IACM,UAAX6G,EAAK7G,IACM,UAAX6G,EAAK7G,IACM,QAAX6G,EAAK7G,IACM,QAAX6G,EAAK7G,IACM,SAAX6G,EAAK7G,IACM,WAAX6G,EAAK7G,KACP6G,EAAK2Q,UAEL3Q,EAAKoO,gBAAiB,GAGR,gBAAdpO,EAAKnG,MACS,aAAdmG,EAAKnG,MACS,aAAdmG,EAAKnG,MACS,aAAdmG,EAAKnG,MACS,aAAdmG,EAAKnG,MACS,aAAdmG,EAAKnG,MACS,aAAdmG,EAAKnG,MACS,gBAAdmG,EAAKnG,MACS,gBAAdmG,EAAKnG,MACS,aAAdmG,EAAKnG,MACS,iBAAdmG,EAAKnG,MACS,iBAAdmG,EAAKnG,MACS,cAAdmG,EAAKnG,MACS,aAAdmG,EAAKnG,KAELmG,EAAKwO,WAAa,EAElBuP,EAAgB9H,eAAeoI,WAAW3f,KAAKsB,GAGjD7I,KAAK8H,MAAMgP,OAAO,GAAGE,mBAAmBzP,KAAKsB,GAC7C7I,KAAK8H,MAAMgP,OAAO,GAAGC,eAAexP,KAAKsB,GAGvB,mBAAdA,EAAKnG,MAA2C,WAAdmG,EAAKnG,OACzCmG,EAAKwO,WAAa,EACpB,IASFrX,KAAKmnB,oBAAoBnnB,KAAK8H,OACzB9H,KAAKwhB,MAAM4F,OAAO9hB,OAchB,CACLtF,KAAK4kB,iBAAmB5kB,KAAKyW,WAAWzW,KAAKwhB,MAAM4F,OAAO9hB,QAC1D,IAAI+hB,QAAmBrnB,KAAKsnB,WAC1BtnB,KAAKyW,WAAWzW,KAAKwhB,MAAM4F,OAAO9hB,QAEtC,MAlBEoY,EAAAA,EAAM6J,IAAI,sBAAuB,CAC/BC,QAAS,IAEXjM,YAAW,KACTvb,KAAKwb,OAAOiM,iBACZ/J,EAAAA,EAAAA,GAAM,CACJC,QAAS,sBACT6J,QAAS,EACT5b,SAAU,IACVgS,OAAQ,iBACR,GACD,KACH5d,KAAK0Z,cAAc,cAQrB,IAAIgO,GAAM,EACV1nB,KAAKwb,OAAOmM,eAAc,KACxB,GAAID,EAAK,CACP,IAAK1nB,KAAKuW,YAAcvW,KAAK+H,OAAQ,CAKnC,IAAI8d,EAAQjV,EAA2B,IAAb5Q,KAAKghB,MAE3B8E,EAAOnV,EAAa,IAAoB,IAAb3Q,KAAKmhB,MACpCnhB,KAAK+H,OAAO8d,OAAQ+B,EAAAA,EAAAA,IAAK5nB,KAAK+H,OAAO8d,MAAOA,EAAO,KACnD7lB,KAAK+H,OAAO+d,MAAO8B,EAAAA,EAAAA,IAAK5nB,KAAK+H,OAAO+d,KAAMA,EAAM,IAClD,CACA9lB,KAAK8H,MAAM+f,QACb,CACAH,GAAOA,CAAG,IAGZznB,SAAS6nB,UAAYC,IACfA,EAAIC,UAAYD,EAAIE,SAAuB,MAAZF,EAAI9lB,KACrCjC,KAAKkoB,cACP,EAIFhnB,OAAOP,iBAAiB,YAAaX,KAAKyb,cAAc,GAiBxDzb,KAAKmoB,cAAgB,IAAIvQ,EAAAA,QACvB,6CACA5X,KAAK8H,OAIP9H,KAAK0F,cAAgB,CACnB,CACE0iB,IAAK,QACL9iB,OAAQtF,KAAK8H,MAAMugB,cAAc,cACjCC,MAAOtoB,KAAK8H,MAAMugB,cAAc,eAChCE,QAAQ,EACRC,OAAQ,CAAC,uBAEX,CACEJ,IAAK,SACL9iB,OAAQtF,KAAK8H,MAAMugB,cAAc,SACjCC,MAAOtoB,KAAK8H,MAAMugB,cAAc,eAChCE,QAAQ,EACRC,OAAQ,CAAC,uBAEX,CACEJ,IAAK,SACL9iB,OAAQtF,KAAK8H,MAAMugB,cAAc,YACjCC,MAAOtoB,KAAK8H,MAAMugB,cAAc,kBAChCE,QAAQ,EACRC,OAAQ,CAAC,0BAEX,CACEJ,IAAK,QACL9iB,OAAQtF,KAAK8H,MAAMugB,cAAc,SACjCC,MAAOtoB,KAAK8H,MAAMugB,cAAc,eAChCE,QAAQ,EACRC,OAAQ,CAAC,uBAEX,CACEJ,IAAK,QACL9iB,OAAQtF,KAAK8H,MAAMugB,cAAc,SACjCC,MAAOtoB,KAAK8H,MAAMugB,cAAc,gBAChCE,QAAQ,EACRC,OAAQ,CAAC,wBAGX,CACEJ,IAAK,OACL9iB,OAAQtF,KAAK8H,MAAMugB,cAAc,QACjCC,MAAOtoB,KAAK8H,MAAMugB,cAAc,YAChCE,QAAQ,EACRC,OAAQ,CAAC,oBAGX,CACEJ,IAAK,OACL9iB,OAAQtF,KAAK8H,MAAMugB,cAAc,aACjCC,MAAOtoB,KAAK8H,MAAMugB,cAAc,YAChCE,QAAQ,EACRC,OAAQ,CAAC,oBAEX,CACEJ,IAAK,QACL9iB,OAAQtF,KAAK8H,MAAMugB,cAAc,SACjCC,MAAOtoB,KAAK8H,MAAMugB,cAAc,YAChCE,QAAQ,EACRC,OAAQ,CAAC,4BAA6B,+BAExC,CACEJ,IAAK,WACL9iB,OAAQtF,KAAK8H,MAAMugB,cAAc,UACjCC,MAAOtoB,KAAK8H,MAAMugB,cAAc,YAChCE,QAAQ,EACRC,OAAQ,CAAC,oBAGX,CACEJ,IAAK,aACL9iB,OAAQtF,KAAK8H,MAAMugB,cAAc,aACjCC,MAAOtoB,KAAK8H,MAAMugB,cAAc,YAChCE,QAAQ,EACRC,OAAQ,CAAC,oBAGX,CACEJ,IAAK,YACL9iB,OAAQtF,KAAK8H,MAAMugB,cAAc,kBACjCC,MAAOtoB,KAAK8H,MAAMugB,cAAc,YAChCE,QAAQ,EACRC,OAAQ,CAAC,oBAGX,CACEJ,IAAK,YACL9iB,OAAQtF,KAAK8H,MAAMugB,cAAc,iBACjCC,MAAOtoB,KAAK8H,MAAMugB,cAAc,eAChCE,QAAQ,EACRC,OAAQ,CAAC,iBAEX,CACEJ,IAAK,WACL9iB,OAAQtF,KAAK8H,MAAMugB,cAAc,sBACjCC,MAAOtoB,KAAK8H,MAAMugB,cAAc,eAChCE,QAAQ,EACRC,OAAQ,CAAC,iBAGX,CACEJ,IAAK,WACL9iB,OAAQtF,KAAK8H,MAAMugB,cAAc,YACjCC,MAAOtoB,KAAK8H,MAAMugB,cAAc,YAChCE,QAAQ,EACRC,OAAQ,CAAC,oBAEX,CACEJ,IAAK,WACL9iB,OAAQtF,KAAK8H,MAAMugB,cAAc,iBACjCC,MAAOtoB,KAAK8H,MAAMugB,cAAc,YAChCE,QAAQ,EACRC,OAAQ,CAAC,oBAEX,CACEJ,IAAK,WACL9iB,OAAQtF,KAAK8H,MAAMugB,cAAc,YACjCC,MAAOtoB,KAAK8H,MAAMugB,cAAc,YAChCE,QAAQ,EACRC,OAAQ,CAAC,oBAEX,CACEJ,IAAK,WACL9iB,OAAQtF,KAAK8H,MAAMugB,cAAc,YACjCC,MAAOtoB,KAAK8H,MAAMugB,cAAc,kBAChCE,QAAQ,EACRC,OAAQ,CAAC,0BAEX,CACEJ,IAAK,SACL9iB,OAAQtF,KAAK8H,MAAMugB,cAAc,cACjCC,MAAOtoB,KAAK8H,MAAMugB,cAAc,YAChCE,QAAQ,EACRC,QAAQ,GAEV,CACEJ,IAAK,mBACL9iB,OAAQtF,KAAK8H,MAAMugB,cAAc,QACjCC,MAAOtoB,KAAK8H,MAAMugB,cAAc,cAChCE,QAAQ,EACRC,QAAQ,GAEV,CACEJ,IAAK,OACL9iB,OAAQtF,KAAK8H,MAAMugB,cAAc,WACjCC,MAAOtoB,KAAK8H,MAAMugB,cAAc,YAChCE,QAAQ,EACRC,QAAQ,GAEV,CACEJ,IAAK,UACL9iB,OAAQtF,KAAK8H,MAAMugB,cAAc,QACjCC,MAAOtoB,KAAK8H,MAAMugB,cAAc,aAChCE,QAAQ,EACRC,OAAQ,CAAC,qBAEX,CACEJ,IAAK,UACL9iB,OAAQtF,KAAK8H,MAAMugB,cAAc,UACjCC,MAAOtoB,KAAK8H,MAAMugB,cAAc,gBAChCE,QAAQ,GAEV,CACEH,IAAK,SACL9iB,OAAQtF,KAAK8H,MAAMugB,cAAc,aACjCC,MAAOtoB,KAAK8H,MAAMugB,cAAc,aAChCE,QAAQ,EACRC,OAAQ,CAAC,qBAEX,CACEJ,IAAK,QACL9iB,OAAQtF,KAAK8H,MAAMugB,cAAc,eACjCC,MAAOtoB,KAAK8H,MAAMugB,cAAc,gBAChCE,QAAQ,IAIZvoB,KAAKyoB,gBAELzoB,KAAK8H,MAAM4gB,cAAgB,KACzB,IAAIC,EAAM3oB,KAAK8H,MAAM8gB,iBACnB5oB,KAAK8H,MAAM+gB,SACX7oB,KAAK8H,MAAMghB,SACXjf,EAAAA,OAAOC,WACP9J,KAAK+H,QAEHghB,EAAM/oB,KAAK8H,MAAMkhB,YAAYL,GAE/BI,EAAIE,YACJF,EAAIE,WAAWtS,aACf3W,KAAKikB,aAAaiF,SAASH,EAAIE,WAAWtS,YAAYjU,OACtDqmB,EAAIE,WAAWvmB,KAAKwmB,SAAS,WAE7BlpB,KAAKJ,OAAOa,MAAM0oB,OAAS,UAC7B,EAGFnpB,KAAK8H,MAAMshB,cAAgB,KACzB,GAAIppB,KAAKuW,WAIP,YAHIvW,KAAKyB,MAAMgE,MAAM4jB,gBACnBrpB,KAAKyB,MAAMsE,OAAO,uBAAwB,KAK9C,IAAI4iB,EAAM3oB,KAAK8H,MAAM8gB,iBACnB5oB,KAAK8H,MAAM+gB,SACX7oB,KAAK8H,MAAMghB,SACXjf,EAAAA,OAAOC,WACP9J,KAAK+H,QAGHghB,EAAM/oB,KAAK8H,MAAMkhB,YAAYL,GAEjC,GAAII,EAAIE,YAEJjpB,KAAKikB,aAAaiF,SAASH,EAAIE,WAAWtS,YAAYjU,OACtDqmB,EAAIE,WAAWvmB,KAAKwmB,SAAS,SAC7B,CACA,IAAII,EAAe,CACjBrU,MAAO,IAAIjV,KAAKyB,MAAMgE,MAAM4V,yBAC5BnG,SAAU,IAAIlV,KAAKyB,MAAMgE,MAAM4V,0BAC/BlG,MAAO,IAAInV,KAAKyB,MAAMgE,MAAM4V,0BAC5BjG,WAAY,IAAIpV,KAAKyB,MAAMgE,MAAM4V,yBACjC5G,SAAU,IAAIzU,KAAKyB,MAAMgE,MAAM4V,4BAC/B1G,SAAU,IAAI3U,KAAKyB,MAAMgE,MAAM4V,4BAC/B3G,SAAU,IAAI1U,KAAKyB,MAAMgE,MAAM4V,4BAC/BzG,cAAe,IAAI5U,KAAKyB,MAAMgE,MAAM4V,4BAEpCxG,UAAW,IAAI7U,KAAKyB,MAAMgE,MAAM4V,8BAChCvG,eAAgB,IAAI9U,KAAKyB,MAAMgE,MAAM4V,8BAGrCtG,KAAM,IAAI/U,KAAKyB,MAAMgE,MAAM4V,wBAC3BrG,UAAW,IAAIhV,KAAKyB,MAAMgE,MAAM4V,wBAEhChG,OAAQ,IAAIrV,KAAKyB,MAAMgE,MAAM4V,gCAE7B/F,cAAe,IAAItV,KAAKyB,MAAMgE,MAAM4V,kCACpC9F,mBAAoB,IAAIvV,KAAKyB,MAAMgE,MAAM4V,iCAEzC7F,WAAY,IAAIxV,KAAKyB,MAAMgE,MAAM4V,+BACjC5F,KAAM,IAAIzV,KAAKyB,MAAMgE,MAAM4V,oCAC3B3F,QAAS,IAAI1V,KAAKyB,MAAMgE,MAAM4V,4BAC9B1F,KAAM,IAAI3V,KAAKyB,MAAMgE,MAAM4V,yBAC3BzF,UAAW,IAAI5V,KAAKyB,MAAMgE,MAAM4V,0BAChCvF,MAAO,IAAI9V,KAAKyB,MAAMgE,MAAM4V,yBAC5BxF,MAAO,IAAI7V,KAAKyB,MAAMgE,MAAM4V,0BAE9Brb,KAAK0W,kBAAkBqS,EAAIE,YAE3BjpB,KAAKmb,OAAOC,QAAQ,CAClB3W,KAAM6kB,EAAaP,EAAIE,WAAWtS,YAAYjU,OAElD,CACF,EAGE2kB,GACFrnB,KAAKupB,oBAAoBvpB,KAAKwhB,MAAM4F,OAAO9hB,QAI7CtF,KAAKud,gBAAkBvd,KAAK8H,MAAM8U,gBAAgB,EACpD,CAEA4M,SAAAA,CAAUlkB,EAAQmkB,EAAMnB,GAEF,eAAhBhjB,EAAO5C,MACT4C,EAAOmS,SAASiS,6BAA+B,IAAIC,EAAAA,6BACnDrkB,EAAOmS,SAASmS,0BAA4B5pB,KAAKmoB,cACrC,YAARsB,GACFnkB,EAAOmS,SAASoS,2BAA4B,EAC5CvB,EAAMwB,YAAa,IAEnBxkB,EAAOmS,SAASoS,2BAA4B,EAC5CvB,EAAMwB,YAAa,IAGrBxkB,EAAOykB,gBAAe,GAAOC,IAE3B,GAAIA,EAAMvS,SAAU,CAKlB,GAAIuS,EAAMvS,SAASwS,kBAAkB7oB,OAAS,EAAG,CAC/C,MAAM8oB,EAAYF,EAAMvS,SAAS0S,MAAM,YAAcH,EAAMtnB,MAC3DsnB,EAAMvS,SAAWyS,CACnB,CACY,YAART,GACFO,EAAMvS,SAASoS,2BAA4B,EAC3CvB,EAAMwB,YAAa,IAEnBE,EAAMvS,SAASiS,6BAA+B,IAAIC,EAAAA,6BAClDK,EAAMvS,SAASmS,0BAA4B5pB,KAAKmoB,cAChD6B,EAAMvS,SAASoS,2BAA4B,EAC3CvB,EAAMwB,YAAa,EAEvB,IAGN,CAEArB,aAAAA,GAEE,MAAM1S,EAAU/V,KAAKyB,MAAMgE,MAAMC,cAEjC,IAAK,MAAMJ,KAAUyQ,EAAS,CAC5B,IAAIqU,EAAepqB,KAAK0F,cAAcoD,MAAKuhB,GAAQA,EAAKjC,KAAO9iB,IAE3D8kB,EAAa7B,QAAUxS,EAAQzQ,KAE5ByQ,EAAQzQ,GAGXtF,KAAKwpB,UAAUY,EAAa9kB,OAAQ,WAAY8kB,EAAa9B,OAF7DtoB,KAAKwpB,UAAUY,EAAa9kB,OAAQ,SAAU8kB,EAAa9B,OAI7D8B,EAAa7B,OAASxS,EAAQzQ,GAElC,CACF,CAEAglB,iBAAAA,CAAkBhlB,EAAQmkB,GACxBnkB,EAAOykB,gBAAe,GAAOC,IACf,YAARP,EACFO,EAAMO,eAAgB,GAEtBP,EAAMQ,aAAe,IAAInS,EAAAA,OAAO,GAAK,GAAK,IAC1C2R,EAAMO,eAAgB,EACxB,GAEJ,CAEAE,qBAAAA,CAAsBC,GAEpB,MAAM3U,EAAU/V,KAAKyB,MAAMgE,MAAMC,cAEjC,IAAK,MAAMJ,KAAUyQ,EAAS,CAC5B,IAAI4U,EAAgB3qB,KAAK0F,cAAcoD,MAAKuhB,GAAQA,EAAKjC,KAAO9iB,IAC5DolB,GAAaplB,IAAWolB,GAC1B1qB,KAAKsqB,kBAAkBK,EAAcrlB,OAAQ,UAC9B,WAAXA,GACFtF,KAAKsqB,kBACHtqB,KAAK8H,MAAM8iB,uBAAuB,cAClC,YAIJ5qB,KAAKsqB,kBAAkBK,EAAcrlB,OAAQ,YAC9B,WAAXA,GACFtF,KAAKsqB,kBACHtqB,KAAK8H,MAAM8iB,uBAAuB,cAClC,YAIR,CACF,CAEAzD,mBAAAA,CAAoBrf,GAIlB,IAAI+iB,EAAe,CACjB,QAAS,CAaP,CACEnoB,KAAM,sBACNkG,SAAU,IAAIe,EAAAA,SAAS,GAAK,MAAO,KACnCmhB,KAAM,MASR,CACEpoB,KAAM,0BACNkG,SAAU,IAAIe,EAAAA,SAAS,GAAK,KAAM,MAClCmhB,KAAM,MAaR,CACEpoB,KAAM,mBACNkG,SAAU,IAAIe,EAAAA,SAAS,GAAK,KAAM,KAClCmhB,KAAM,MAQR,CACEpoB,KAAM,iBACNkG,SAAU,IAAIe,EAAAA,QAAQ,MAAO,MAAO,IACpCmhB,KAAM,MAER,CACEpoB,KAAM,eACNkG,SAAU,IAAIe,EAAAA,QAAQ,MAAO,MAAO,GACpCmhB,KAAM,MAER,CACEpoB,KAAM,cACNkG,SAAU,IAAIe,EAAAA,QAAQ,MAAO,OAAQ,GACrCmhB,KAAM,MAER,CACEpoB,KAAM,iBACNkG,SAAU,IAAIe,EAAAA,SAAS,GAAK,MAAO,MACnCmhB,KAAM,MAyCR,CACEpoB,KAAM,oBACNkG,SAAU,IAAIe,EAAAA,QAAQ,GAAI,MAAO,MACjCmhB,KAAM,OAER,CACEpoB,KAAM,oBACNkG,SAAU,IAAIe,EAAAA,QAAQ,KAAM,MAAO,MACnCmhB,KAAM,MAkBRC,EAAgB,SAAS5f,EAAM2C,EAAOkd,EAAWC,GACnD,IAAIC,EAAQ,IAAIC,EAAAA,YAAYC,YAC1B,QACA,CAAE/K,MAAO2K,EAAWzK,OAAQyK,EAAY,GACxCljB,GAGEujB,EAAkB,IAAIC,EAAAA,uBAAuBC,cAC/CL,EAEAD,EAAW,GAEXA,EAAW,GACX,GAGExqB,EAAQ4qB,EAAgBG,cAC5B/qB,EAAMgrB,UAAY,SAClBhrB,EAAMirB,WAAa,sBACnBjrB,EAAMkrB,WAAa,UAEnB,IAAI/gB,EAAQ,IAAIghB,EAAAA,UAchB,OAbAhhB,EAAMO,KAAOA,EACbP,EAAMkD,MAAQA,EACdlD,EAAMnK,MAAQA,EAEd4qB,EAAgBQ,WAAWjhB,GAI3BygB,EAAgBS,cAAcC,OACkB,IAA9CjkB,EAAMQ,YAAYC,0BACpB8iB,EAAgBS,cAAcE,OACkB,IAA9ClkB,EAAMQ,YAAYC,0BAEb2iB,CACT,EAGA,IAAK,IAAIe,EAAI,EAAGA,EAAIpB,EAAa,SAASzpB,OAAQ6qB,IAAK,CACrD,IAAIC,EAAYnB,EACdF,EAAa,SAASoB,GAAGvpB,KACzB,UACAmoB,EAAa,SAASoB,GAAGnB,KACzB,KAEFoB,EAAUtjB,SAAWiiB,EAAa,SAASoB,GAAGrjB,SAC9CsjB,EAAUC,SAAShiB,EAAInK,KAAKqZ,iBAC5BrD,GAAgB,sBAAsBjI,OAAOxG,KAAK2kB,EACpD,CACF,CAEA,gBAAM5E,CAAW5kB,GACf,IAAK,IAAIupB,EAAI,EAAGA,EAAI7X,GAAU1R,GAAMtB,OAAQ6qB,IAAK,CAC/C,IAAIG,QAAepsB,KAAKomB,aACtBhS,GAAU1R,GAAMupB,GAAG3X,KACnBF,GAAU1R,GAAMupB,GAAG1X,MAIR,eAAT7R,GACF0pB,EAAOre,OAAO1M,SAAQwH,IACpB,GAAgB,aAAZA,EAAK7G,GAAmB,CAC1B,IAAIqqB,EAAkBxjB,EAAKyjB,eAAe,cAC1CD,EAAgBzjB,SAAW,IAAIe,EAAAA,QAAQ,GAAK,EAAK,IACjD0iB,EAAgBE,OAAS1jB,EACzBujB,EAAOre,OAAOxG,KAAK8kB,GAEnB,IAAIG,EAAkB3jB,EAAKyjB,eAAe,kBAC1CE,EAAgB5jB,SAAW,IAAIe,EAAAA,QAAQ,IAAM,IAAK,KAClD6iB,EAAgBD,OAAS1jB,EACzBujB,EAAOre,OAAOxG,KAAKilB,GAEnB,IAAIC,EAAkB5jB,EAAKyjB,eAAe,cAC1CG,EAAgB7jB,SAAW,IAAIe,EAAAA,QAAQ,GAAM,EAAK,GAClD8iB,EAAgBF,OAAS1jB,EACzBujB,EAAOre,OAAOxG,KAAKklB,GAEnB,IAAIC,EAAkB7jB,EAAKyjB,eAAe,eAC1CI,EAAgB9jB,SAAW,IAAIe,EAAAA,QAAQ,GAAM,EAAK,IAClD+iB,EAAgBH,OAAS1jB,EACzBujB,EAAOre,OAAOxG,KAAKmlB,EACrB,KAIJN,EAAOre,OAAO1M,SAAQwH,IAChBA,EAAK7G,GAAGkV,MAAM,iBACZyV,MAAMC,QAAQxY,GAAU1R,GAAMupB,GAAGthB,UACnCyJ,GAAU1R,GAAMupB,GAAGthB,SAASpD,KAAKsB,EAAK7G,IAEtCoS,GAAU1R,GAAMupB,GAAGthB,SAAW,CAAC9B,EAAK7G,IAEtC6G,EAAKyO,WAAY,GAGD,WAAdzO,EAAKnG,MAAmC,aAAdmG,EAAKnG,OACjCmG,EAAKyO,WAAY,EACnB,IAGFtB,GAAgB5B,GAAU1R,GAAMupB,GAAG1X,MAAQ6X,EAG3CA,EAAOve,UAAUxM,SAAQoW,IAEvB,IAAIpN,EAAW+J,GAAU1R,GAAMupB,GAAG1X,OAEjB,0CAAblK,GACa,oBAAbA,GACa,qBAAbA,GACa,qBAAbA,GACa,qBAAbA,GACa,8BAAbA,GACa,0CAAbA,GACa,wCAAbA,GACa,0CAAbA,GACa,eAAbA,GACa,wCAAbA,GACa,qBAAbA,GACa,6BAAbA,GACa,wBAAbA,GACa,4BAAbA,GACa,4BAAbA,KACiB,0BAAhBoN,EAASzV,IACQ,4BAAhByV,EAASzV,KACC,+BAAbqI,GACiB,WAAhBoN,EAASzV,IACG,oBAAbqI,GAAkD,UAAhBoN,EAASzV,IAC9B,oBAAbqI,GAAkD,UAAhBoN,EAASzV,MAE5CyV,EAASoV,SAAW,EACpBpV,EAASqV,YAAc,IAAIzU,EAAAA,OAAOK,cAAc,WAChDjB,EAASqC,qBAAuB,GAChCrC,EAASsV,kBAAoB,EAC7BtV,EAASuV,kBAAoB,EAC7BvV,EAASwV,gBAAkB,GAGhB,aAATvqB,IAEgB,wBAAhB+U,EAASzV,IACO,8BAAhByV,EAASzV,KAETyV,EAASyV,iBAAmB,GAEV,sBAAhBzV,EAASzV,KACXyV,EAAS0V,UAAY,MAGZ,kBAATzqB,IAEgB,wBAAhB+U,EAASzV,IACO,8BAAhByV,EAASzV,KAETyV,EAASyV,iBAAmB,GAEV,sBAAhBzV,EAASzV,KACXyV,EAAS0V,UAAY,IACrB1V,EAASqC,qBAAuB,GAChCrC,EAASsV,kBAAoB,KAIb,kBAAhBtV,EAASzV,IACO,oBAAhByV,EAASzV,IACO,uBAAhByV,EAASzV,IACO,6BAAhByV,EAASzV,KAETyV,EAASoV,SAAW,GACpBpV,EAAS0V,UAAY,GACrB1V,EAASqC,qBAAuB,IAChCrC,EAASsV,kBAAoB,IAC7BtV,EAASyV,iBAAmB,KAEV,wBAAhBzV,EAASzV,KACXyV,EAASoV,SAAW,EACpBpV,EAAS0V,UAAY,EACrB1V,EAASqC,qBAAuB,MAIvB,aAATpX,IAOkB,oBAAhB+U,EAASzV,KACXyV,EAAS0V,UAAY,EACrB1V,EAASoV,SAAW,IACpBpV,EAASqC,qBAAuB,GAChCrC,EAASsV,kBAAoB,KAEX,iBAAhBtV,EAASzV,KACXyV,EAASqC,qBAAuB,IAChCrC,EAASsV,kBAAoB,GAC7BtV,EAAS0V,UAAY,IAIL,kBAAhB1V,EAASzV,IACO,iBAAhByV,EAASzV,KAETyV,EAASoV,SAAW,GACpBpV,EAAS0V,UAAY,GACrB1V,EAASqC,qBAAuB,IAChCrC,EAASsV,kBAAoB,KAGX,iBAAhBtV,EAASzV,KACXyV,EAASoV,SAAW,EACpBpV,EAAS0V,UAAY,EACrB1V,EAASqC,qBAAuB,MAIvB,aAATpX,IAOkB,oBAAhB+U,EAASzV,KACXyV,EAAS0V,UAAY,EACrB1V,EAASoV,SAAW,IACpBpV,EAASqC,qBAAuB,GAChCrC,EAASsV,kBAAoB,KAEX,iBAAhBtV,EAASzV,KACXyV,EAASqC,qBAAuB,GAChCrC,EAASsV,kBAAoB,GAC7BtV,EAAS0V,UAAY,GAIL,kBAAhB1V,EAASzV,IACO,iBAAhByV,EAASzV,KAETyV,EAASoV,SAAW,GACpBpV,EAAS0V,UAAY,GACrB1V,EAASqC,qBAAuB,IAChCrC,EAASsV,kBAAoB,KAGX,iBAAhBtV,EAASzV,KACXyV,EAASoV,SAAW,EACpBpV,EAAS0V,UAAY,EACrB1V,EAASqC,qBAAuB,MAIvB,UAATpX,GAA6B,eAATA,GAAkC,aAATA,IAE7B,oBAAhB+U,EAASzV,IACO,gBAAhByV,EAASzV,KAETyV,EAASoV,SAAW,IACpBpV,EAAS0V,UAAY,IAEH,wBAAhB1V,EAASzV,KACXyV,EAASoV,SAAW,EACpBpV,EAAS0V,UAAY,EACrB1V,EAASqC,qBAAuB,KAEd,uBAAhBrC,EAASzV,KACXyV,EAASqC,qBAAuB,GAChCrC,EAASsV,kBAAoB,MAIpB,WAATrqB,IACkB,oBAAhB+U,EAASzV,KACXyV,EAASqV,YAAc,IAAIzU,EAAAA,OAAOK,cAChC,WACA0U,gBACF3V,EAASW,cAAgB,IAAIC,EAAAA,OAAOK,cAClC,WACA0U,gBACF3V,EAASsV,kBAAoB,GAC7BtV,EAASoV,SAAW,GACpBpV,EAAS0V,UAAY,IAEH,mBAAhB1V,EAASzV,KACXyV,EAASqV,YAAc,IAAIzU,EAAAA,OAAOK,cAChC,WACA0U,gBACF3V,EAASW,cAAgB,IAAIC,EAAAA,OAAOK,cAClC,WACA0U,gBACF3V,EAASoV,SAAW,GACpBpV,EAAS0V,UAAY,IACrB1V,EAASqC,qBAAuB,IAEd,kBAAhBrC,EAASzV,KACXyV,EAASqV,YAAc,IAAIzU,EAAAA,OAAOK,cAChC,WACA0U,iBAEgB,wBAAhB3V,EAASzV,KACXyV,EAASqV,YAAc,IAAIzU,EAAAA,OAAOK,cAChC,WACA0U,gBACF3V,EAAS4V,aAAe,IAAIhV,EAAAA,OAAOK,cACjC,WACA0U,gBACF3V,EAASqC,qBAAuB,IAChCrC,EAASoV,SAAW,IACpBpV,EAAS0V,UAAY,KAEH,kBAAhB1V,EAASzV,KACXyV,EAASqV,YAAc,IAAIzU,EAAAA,OAAOK,cAChC,WACA0U,gBACF3V,EAASW,cAAgB,IAAIC,EAAAA,OAAOK,cAClC,WACA0U,gBACF3V,EAASoV,SAAW,GACpBpV,EAAS0V,UAAY,GACrB1V,EAASqC,qBAAuB,KAGhB,sBAAhBrC,EAASzV,IACO,6BAAhByV,EAASzV,IACO,iBAAhByV,EAASzV,KAETyV,EAASqV,YAAc,IAAIzU,EAAAA,OAAOK,cAChC,WACA0U,gBACF3V,EAASoV,SAAW,IAEF,WAAhBpV,EAASzV,KACXyV,EAASqV,YAAc,IAAIzU,EAAAA,OAAOK,cAChC,WACA0U,iBAEgB,UAAhB3V,EAASzV,KACXyV,EAASqV,YAAc,IAAIzU,EAAAA,OAAOK,cAChC,WACA0U,iBAEgB,2BAAhB3V,EAASzV,KACXyV,EAASqV,YAAc,IAAIzU,EAAAA,OAAOK,cAChC,WACA0U,gBACF3V,EAASoV,SAAW,IACpBpV,EAAS0V,UAAY,KAEH,qBAAhB1V,EAASzV,KACXyV,EAASqV,YAAc,IAAIzU,EAAAA,OAAOK,cAChC,WACA0U,gBACF3V,EAASoV,SAAW,IACpBpV,EAAS0V,UAAY,MAIZ,kBAATzqB,GAAqC,uBAATA,IACV,wBAAhB+U,EAASzV,KACXyV,EAASqC,qBAAuB,IAChCrC,EAASoV,SAAW,IACpBpV,EAAS0V,UAAY,KAEH,oBAAhB1V,EAASzV,KACXyV,EAASqV,YAAc,IAAIzU,EAAAA,OAAOK,cAChC,WACA0U,gBACF3V,EAASW,cAAgB,IAAIC,EAAAA,OAAOK,cAClC,WACA0U,gBACF3V,EAASoV,SAAW,GACpBpV,EAAS0V,UAAY,GACrB1V,EAASqC,qBAAuB,IAChCrC,EAASsV,kBAAoB,KAEX,YAAhBtV,EAASzV,KACXyV,EAAS0V,UAAY,IACrB1V,EAASyV,iBAAmB,KAInB,YAATxqB,IAEgB,6BAAhB+U,EAASzV,IACO,8BAAhByV,EAASzV,KAETyV,EAASoV,SAAW,KAEF,qBAAhBpV,EAASzV,KACXyV,EAASoV,SAAW,IACpBpV,EAASyV,iBAAmB,GAEhC,GAIJ,CAEA,MAAO,QACT,CAyzBA9oB,WAAAA,CAAYwJ,EAAcG,GACpB/N,KAAK8H,OAAS8F,GAAgBA,EAAaxM,OAAS,GACtDwM,EAAavM,SAAQisB,IAEjBA,EAAOzf,WACP7N,KAAK8H,MAAMqW,kBAAkBmP,EAAOzf,UAAU,KAE9Cyf,EAAOzf,UAAUxM,SAAQoW,IACnBzX,KAAK8H,MAAMqW,kBAAkB1G,KAC/BzX,KAAK8H,MAAMqW,kBAAkB1G,GAAU2G,WACvCpe,KAAK8H,MAAMqW,kBACT1G,GACAqV,YAAc,IAAIzU,EAAAA,OAAOK,cACzB4U,EAAOxf,OACPsf,gBACEE,EAAOve,mBACT/O,KAAK8H,MAAMqW,kBACT1G,GACAW,cAAgB,IAAIC,EAAAA,OAAOK,cAC3B4U,EAAOve,kBACPqe,iBAEJ7R,YAAW,QAER,KAC+C,GAIxD,IAGAxN,IACEA,EAAOC,MACTD,EAAOC,KAAK3M,SAAQ8M,IAClBnO,KAAK8H,MAAM4W,YAAYvQ,GAAQkJ,WAAa,CAAC,IAG7CtJ,EAAOE,MACTF,EAAOE,KAAK5M,SAAQ8M,IAClBnO,KAAK8H,MAAM4W,YAAYvQ,GAAQkJ,WAAa,CAAC,IAG7CtJ,EAAOG,uBACTH,EAAOG,sBAAsB7M,SAAQisB,IACnCttB,KAAK8H,MACF4W,YAAY4O,EAAOnf,QACnBof,gBAAgBD,EAAOlf,WAAW,IAI7C,CAEAkQ,uBAAAA,CAAwB5B,GACtB,GAAIA,EAAWtQ,UAAW,CAEtBpM,KAAK8H,OACL9H,KAAK8H,MAAMgT,cAAc,qBACzB4B,EAAWtQ,UAAUC,iBAErBrM,KAAK8H,MAAMgT,cACT,oBACA,GAAGlS,SAAW5I,KAAKwtB,iBACnB9Q,EAAWtQ,UAAUC,iBAKzB,IAAIohB,EAAuBztB,KAAK8H,MAAM4lB,cAAc,oBAER,WAA1C1tB,KAAKyB,MAAMgE,MAAMgZ,sBACjBgP,EAGAA,EAAqB,GAAG3D,YAAa,EAGrC2D,EAAqB,GAAG3D,YAAa,CAGzC,CACF,CAEArK,eAAAA,GACEzf,KAAKuf,YAAc,IAAI3X,EAAY,CACjCE,MAAO9H,KAAK8H,MACZC,OAAQ/H,KAAK+H,OACbC,QAAShI,KAAKwb,OAAOkE,gBAAe,GACpCzX,QAASjI,KAAKwb,OAAOmE,iBAAgB,GACrCzX,aAAclI,KAAK8H,MAAMiG,OACzB5F,MAAOnI,KAAK4e,iBACZnd,MAAOzB,KAAKyB,MACZme,OAAQ5f,KAAKwf,2BAGfxf,KAAK8H,MAAM6lB,qBAAqB3tB,KAAKqa,6BACvC,CAqIAmT,gBAAAA,CAAiBrf,GACf,IAAI,GAAEoM,EAAE,GAAEC,EAAE,GAAEC,GAAOza,KAAK8H,MAAM4W,YAAYvQ,GAAQyf,sBAEpD,OAAO,IAAIjkB,EAAAA,QAAQ4Q,EAAIC,EAAIC,EAC7B,CAEAoT,cAAAA,CAAenR,GACb,IAAI,SAAE/R,GAAayJ,GAAUpU,KAAK4W,YAAY5U,IAAI8G,MAChDhB,GAASA,EAAMyM,OAASmI,EAAWrS,WAIjCqS,EAAWrN,qBACbqN,EAAWrN,oBAAoBhO,SAAQgJ,IACrC,IAAIyjB,EAAa1Z,GAAUpU,KAAK4W,YAAY5U,IAAI8G,MAC9ChB,GAASA,EAAMyM,OAASlK,IAE1BM,EAAW,IAAIA,KAAamjB,EAAWnjB,SAAS,IAIpD3K,KAAK4e,iBAAmB,CAAC,EAEvBlC,EAAW/N,eACV+N,EAAW/N,aAAa2B,mBAEzB3F,EAAStJ,SAAQ6d,IAEbxC,EAAW/R,SAASuU,KAGd,IAFNxC,EAAW/R,SAASuU,GAAS3f,KAAKmP,YAChC1O,KAAKyB,MAAMgE,MAAMuZ,sBAGnBhf,KAAK4e,iBAAiBM,GAAW,CAC/BlW,KAAM0T,EAAW/R,SAASuU,GAASlW,KACnCzJ,KAAMmd,EAAW/R,SAASuU,GAAS3f,KACnCwJ,OAAQ2T,EAAW/R,SAASuU,GAASnW,OACjC2T,EAAW/R,SAASuU,GAASnW,OAC7BY,EAAAA,QAAQwV,QAEhB,IAGFxU,EAAStJ,SAAQ6d,IACXxC,EAAW/R,SAASuU,KACtBlf,KAAK4e,iBAAiBM,GAAW,CAC/BlW,KAAM0T,EAAW/R,SAASuU,GAASlW,KACnCzJ,KAAMmd,EAAW/R,SAASuU,GAAS3f,KACnCwJ,OAAQY,EAAAA,QAAQwV,SAMI,qBAApBzC,EAAWha,OACG,uBAAZwc,IACFxC,EAAW/R,SAASuU,GAAS3f,KAAKuL,OAAO,GAAK,IAC9C4R,EAAW/R,SAASuU,GAAS3f,KAAKuL,OAAO,GAAK,KAEhC,uBAAZoU,IACFxC,EAAW/R,SAASuU,GAAS3f,KAAKuL,OAAO,GAAK,EAC9C4R,EAAW/R,SAASuU,GAAS3f,KAAKuL,OAAO,GAAK,GAkBlD,IAGJ9K,KAAKwf,yBAA2B9C,EAAWqR,cAC3C/tB,KAAKyf,iBACP,CAEA,uBAAM/I,CAAkBuS,GACtBjpB,KAAK4W,YAAcqS,EACnB,IAAI+E,GAAY,EAEhBhuB,KAAK0Z,cAAc,iBAGnB1Z,KAAK8H,MAAM6R,WAAa,IAAItB,EAAAA,OAAOK,cAAc,WAEjD1Y,KAAK8H,MAAMiS,SAAW,GACtB/Z,KAAK8H,MAAMkS,OAAS,GAEpBha,KAAK8H,MAAM8R,mBAAqB5Z,KAAKiuB,gBACrCjuB,KAAK8H,MAAMgS,qBAAuB,KAElC,MAAO9Z,KAAK4W,YAAYD,cAAgBqX,EAGtC,GAFAhuB,KAAK4W,YAAc5W,KAAK4W,YAAYD,YAEhCZ,GAAQ/V,KAAK4W,YAAY5U,IAAK,CAChC,IAAI0a,EAAa3G,GAAQ/V,KAAK4W,YAAY5U,IAE1ChC,KAAKyB,MAAMsE,OACT,6BACA2W,EAAWpS,mBACPoS,EAAWpS,mBACX,UAENtK,KAAKid,mBAAqBjd,KAAKyB,MAAMgE,MAAMgZ,qBAEvC/B,GAAcA,EAAW/N,eAC3B3O,KAAKsb,gBAAkB,IAClBoB,EAAW/N,aAAa+N,EAAW/N,aAAahM,SAASsL,QACzDyO,EAAW/N,aAAa+N,EAAW/N,aAAahM,SAASqL,MAE9DhO,KAAKyB,MAAMsE,OACT,2BACA2W,EAAW/N,aAAahM,QACpB+Z,EAAW/N,aAAahM,QACxB,KAIR3C,KAAKyB,MAAMsE,OAAO,uBAAwB,IAE1C2X,EAAAA,EAAM6J,IAAI,sBAAuB,CAC/BC,QAAS,IAEXxnB,KAAKwb,OAAO0S,yBACNluB,KAAKsnB,WAAWtnB,KAAK4W,YAAY5U,IACvCuZ,YAAW,KACTvb,KAAKwb,OAAOiM,iBACZ/J,EAAAA,EAAAA,GAAM,CACJC,QAAS,sBACT6J,QAAS,EACT5b,SAAU,IACVgS,OAAQ,iBACR,GACD,KAEH5d,KAAKmuB,mBAAmBzR,GAExB1G,GAAgB,sBAAsBuD,qBAEtCvZ,KAAK8H,MAAMiG,OAAO1M,SAAQwH,IACnBA,EAAK2Q,SACRxZ,KAAK8H,MAAM2R,WAAW5Q,EACxB,IAEFmN,GAAgB0G,EAAWrS,UAAU4P,gBAEjCyC,EAAWrN,qBACbqN,EAAWrN,oBAAoBhO,SAAQgJ,IACrC2L,GAAgB3L,GAAU4P,eAAe,IAI7C+T,GAAY,EACZhuB,KAAKuW,YAAa,EAGM,cAApB0S,EAAWvmB,KACb1C,KAAKouB,kBAAkB,SACM,cAApBnF,EAAWvmB,MACpB1C,KAAKouB,kBAAkB,cAGzBpuB,KAAKquB,cAED3R,EAAW7L,MACb6L,EAAW7L,IAAIC,QACV9Q,KAAK8H,MAAMiS,SAAW2C,EAAW7L,IAAIC,OAE1C4L,EAAW7L,IAAIE,MAAO/Q,KAAK8H,MAAMkS,OAAS0C,EAAW7L,IAAIE,MAGvD2L,EAAWvK,YACbuK,EAAWvK,WAAW9Q,SAAQitB,IACxBtuB,KAAK8H,MAAM4W,YAAY4P,KACzBtuB,KAAK8H,MAAM4W,YAAY4P,GAAQhX,WAAY,EAC7C,IAIJtX,KAAKma,WAAWuC,GAEhB1c,KAAKqW,WAAWrW,KAAK4W,YAAY5U,IAEjC,IAAIusB,GAAgB,EAsFpB,GApFAvuB,KAAK8H,MAAM6U,oBACPD,EAAWjR,YACbzL,KAAKgb,aAAatP,QAAU,EACxB1L,KAAK8H,MAAM8U,gBAAgB,IAAMF,EAAWjR,WAAWC,UAEvDgR,EAAWjR,WAAWC,QAAQC,OAC9B+Q,EAAWjR,WAAWC,QAAQC,MAAME,aAEpC7L,KAAKgb,aAAatP,QAChBgR,EAAWjR,WAAWC,QAAQC,MAAME,WAClC6Q,EAAWjR,WAAWC,SAASC,OAAOwG,YACxCuK,EAAWjR,WAAWC,QAAQC,MAAMwG,WAAW9Q,SAC7C4c,IACEje,KAAK8H,MAAM4W,YAAYT,GAAU5G,WAAa,CAAC,KAMnDqF,EAAWjR,WAAWC,SAASC,OAAOsI,cACxCjU,KAAKud,gBAAkBvd,KAAK8H,MAAMuV,wBAChCX,EAAWjR,WAAWC,QAAQC,MAAMsI,eAGtCjU,KAAKud,gBAAkBvd,KAAK8H,MAAM8U,gBAAgB,GAGpD5c,KAAKud,gBAAgBT,MAAK,GAAOP,SAEjCmB,EAAAA,EAAAA,GAAM,CACJC,QAAS3d,KAAKgb,aACdpP,SAAU8Q,EAAWjR,WAAWC,QAAQC,MAAMC,SAC9CF,QAASgR,EAAWjR,WAAWC,QAAQC,MAAMG,SAC7C8R,OAAQ,iBACRS,SAAUA,KACRkQ,GAAgB,CAAI,KAOxBvuB,KAAK8H,MAAM8U,gBAAgB,IAC3BF,EAAWjR,WAAWgE,YAIpBiN,EAAWjR,WAAWgE,UAAU9D,OAChC+Q,EAAWjR,WAAWgE,UAAU9D,MAAME,aAEtC7L,KAAKgb,aAAavL,UAChBiN,EAAWjR,WAAWgE,UAAU9D,MAAME,YAI1C7L,KAAK8H,MAAM8U,gBAAgB,GAAGE,MAAK,GAAOP,SAC1CmB,EAAAA,EAAAA,GAAM,CACJC,QAAS3d,KAAKgb,aACdpP,SAAU8Q,EAAWjR,WAAWgE,UAAU9D,MAAMC,SAChD6D,UAAWiN,EAAWjR,WAAWgE,UAAU9D,MAAMG,SACjD8R,OAAQ,sBAIZ3H,GAAc6I,eAAeC,YAAc,EAC3CxD,YAAW,KACTtF,GAAc6I,eAAeC,YAAc,CAAC,GAC3C,MAGDrC,EAAW/R,UACb3K,KAAK6tB,eAAenR,GAGlBA,EAAW8R,eACb9R,EAAW8R,cAAcntB,SAAQotB,KAC/BC,EAAAA,EAAAA,IAAaD,EAAM,IAInBzuB,KAAK8H,MAAM6mB,YAAY,QACzB3uB,KAAK8H,MAAM6mB,YAAY,OAAO5T,UAG5B2B,EAAWtQ,UAAW,CACxB,IAAIwiB,EAAazD,EAAAA,YAAY0D,aAC3B,mBACA,CAEEC,SAAU,KAEZ9uB,KAAK8H,OAEP8mB,EAAWvX,WAAa,EAExB,IAAI/K,EAAiB6e,EAAAA,YAAY0D,aAC/B,sBACA,CACEC,SAAU,IAEZ9uB,KAAK8H,OAEPwE,EAAe+K,WAAa,EAC5B/K,EAAe1D,SAASsB,EAAIwS,EAAWtQ,UAAUE,eAAepC,EAChEoC,EAAe1D,SAASuB,EAAIuS,EAAWtQ,UAAUE,eAAenC,EAChEmC,EAAe1D,SAAS2D,EAAImQ,EAAWtQ,UAAUE,eAAeC,EAEhE,IAyCIwiB,EACAC,EA1CAC,EAAevS,EAAWtQ,UAAUI,SACpC0iB,EAAsB,IAAIC,EAAAA,oBAAoB,CAChD3iB,SAAU,IAAI7C,EAAAA,WAAWslB,KAG3BC,EAAoBE,aAAeC,IACjC,GAAI3S,EAAWtQ,UAAUM,QAAS,CAKhC,GAJI2iB,EAAe9iB,EAAImQ,EAAWtQ,UAAUM,QAAQ,KAClD2iB,EAAe9iB,EAAImQ,EAAWtQ,UAAUM,QAAQ,MAG9C2iB,EAAe9iB,EAAImQ,EAAWtQ,UAAUM,QAAQ,IAGlD,OAAO,EAFP2iB,EAAe9iB,EAAImQ,EAAWtQ,UAAUM,QAAQ,EAIpD,CACA,GAAIgQ,EAAWtQ,UAAU+E,QAAS,CAKhC,GAJIke,EAAellB,EAAIuS,EAAWtQ,UAAU+E,QAAQ,KAClDke,EAAellB,EAAIuS,EAAWtQ,UAAU+E,QAAQ,MAG9Cke,EAAellB,EAAIuS,EAAWtQ,UAAU+E,QAAQ,IAGlD,OAAO,EAFPke,EAAellB,EAAIuS,EAAWtQ,UAAU+E,QAAQ,EAIpD,CACA,OAAO,CAAI,EAGb+d,EAAoBI,iCAAkC,EAEtDJ,EAAoBK,sBAAsB9lB,KAAI,KACxCzJ,KAAKwvB,oBACPZ,EAAWhmB,SAAW5I,KAAKwvB,mBAE7BxvB,KAAKyvB,WAAY,EACjBxvB,SAASC,eAAe,eAAewvB,UAAUjmB,IAAI,aAAa,IAKpEylB,EAAoBS,iBAAiBlmB,KAAI,KACvC,GACsB,qBAApBiT,EAAWha,MACS,wBAApBga,EAAWha,MAES,wBAApBga,EAAWha,KAEX,CACA,IAAIktB,EAAS,CAAC,EAAG,IACjB,OAAQlT,EAAWha,MACjB,IAAK,mBAC2C,aAA1C1C,KAAKyB,MAAMgE,MAAMgZ,uBACnBsQ,EAAS,KACTC,EAAU,OAEkC,YAA1ChvB,KAAKyB,MAAMgE,MAAMgZ,uBACnBsQ,EAAS,MACTC,EAAU,OAEZ,MAEF,IAAK,sBACHD,EAAS,MACTC,EAAU,MACV,MAEF,IAAK,sBACHD,EAAS,MACTC,EAAU,MACV,MAIJ/uB,SACG4vB,iBAAiB,4CACjBxuB,SAAQyuB,IACPA,EAAOrvB,MAAMC,UACX,UACAqvB,EAAAA,OAAOC,KACLJ,EAAO,GACPA,EAAO,IACN5vB,KAAKgb,aAAatP,QAAUqjB,IAAWC,EAAUD,IAEpD,MAAM,GAGd,KAGFG,EAAoBe,oBAAoBxmB,KAAI,KAC1CzJ,KAAKyvB,WAAY,EACjBxvB,SACGC,eAAe,eACfwvB,UAAUQ,OAAO,cACpBlwB,KAAKwvB,kBAAoB,KASzBZ,EAAWhmB,SAAW5I,KAAKwtB,iBACzB9Q,EAAWtQ,UAAUC,gBAGqB,WAA1CrM,KAAKyB,MAAMgE,MAAMgZ,sBACQ,UAAxBze,KAAK4W,YAAY5U,IACQ,eAAxBhC,KAAK4W,YAAY5U,IACO,aAAxBhC,KAAK4W,YAAY5U,IAEnBhC,KAAKge,cAAc,CACjBpO,OAAQ,CACN3E,OAAQ,CAAC,EAAG,IAAK,GACjBklB,MAAO,KAGb,IAGFvB,EAAWwB,YAAYlB,GAEvB,IAAImB,EAAqB,IAAIC,EAAAA,cAActwB,KAAK8H,OAChD8mB,EAAW2B,cAAgBF,EAE3B,IAAIG,GAAY,EAChBH,EAAmBI,eACjB,IAAIC,EAAAA,kBACFJ,EAAAA,cAAcK,sBACd,WACOH,IACHvwB,SACGC,eAAe,eACfwvB,UAAUjmB,IAAI,aACjB+mB,GAAY,EAEhB,KAGJH,EAAmBI,eACjB,IAAIC,EAAAA,kBACFJ,EAAAA,cAAcM,qBACd,WACMJ,IACFvwB,SACGC,eAAe,eACfwvB,UAAUQ,OAAO,aACpBM,GAAY,EAEhB,KAIJ,MAAMK,EAAuB7wB,KAAK8H,MAAMgpB,cACtC,oBAEIC,EAA0B/wB,KAAK8H,MAAM4W,YACzC,uBAEF1e,KAAK0a,8BAAgC,KAYnC,GAVEgC,EAAWtQ,UAAUa,wBACpB+jB,EAAAA,EAAAA,IACCtU,EAAWtQ,UAAUa,qBACrBjN,KAAKyB,MAAMgE,MAAMwrB,QAGnBrC,EAAW9E,YAAa,EAExB8E,EAAW9E,YAAa,EAEtB9pB,KAAKkb,8BAAgClb,KAAKyvB,UAAW,CAGvD,IAAIyB,EAEFA,EADExU,EAAWtQ,UAAU8E,MAErB2f,EAAqBjD,sBAAsBpT,GAC3CuW,EAAwBnD,sBAAsBpT,GACvCkC,EAAWtQ,UAAUK,MAE5BokB,EAAqBjD,sBAAsBnT,GAC3CsW,EAAwBnD,sBAAsBnT,GAErC9Q,EAAAA,QAAQwnB,SACjBN,EAAqBjD,sBACrBmD,EAAwBnD,uBAI5B,IAAI9iB,EAAS4R,EAAWtQ,UAAUtB,OAC9B4R,EAAWtQ,UAAUtB,OACrB,KACA4R,EAAWtQ,UAAUQ,eACvB9B,EACE4R,EAAWtQ,UAAUQ,aACnB5M,KAAKyB,MAAMgE,MAAMgZ,uBAGvB,IAAI2S,EAAQpxB,KAAKqxB,WACf3U,EAAWtQ,UAAUc,iBAA8B,EAAZgkB,EAAgBA,EACvDpmB,EAAO+B,MACP/B,EAAOgC,MACPhC,EAAOiC,OACPjC,EAAOkC,QAKL0P,EAAWtQ,UAAUe,eACvBnN,KAAKwvB,kBAAoBZ,EAAWhmB,UAElC8T,EAAWtQ,UAAUO,QACvBiiB,EAAWhmB,SAASuB,EAAIuS,EAAWtQ,UAAUO,OAE/C3M,KAAKgb,aAAatP,QAAU0lB,EAC5BpxB,KAAKgb,aAAavL,UAAY2hB,EAE1B1U,EAAWtQ,UAAUgF,eACvBsL,EAAWtQ,UAAUgF,cAAc/P,SAAQiwB,IAEvCtxB,KAAKgb,aAAatP,SAAW4lB,EAAUjgB,MAAM,IAC7CrR,KAAKgb,aAAatP,SAAW4lB,EAAUjgB,MAAM,KAE7CrR,KAAKyB,MAAMsE,OACT,6BACAurB,EAAUhgB,MAEZtR,KAAKid,mBAAqBqU,EAAUhgB,KACtC,GAGN,EAEKtR,KAAKkb,8BAAgCqT,GACpCvuB,MAAQ0c,EAAWtQ,UAAUC,iBAC/BkW,EAAAA,EAAAA,KAAS,KACPqM,EAAWhmB,SAAW5I,KAAKwtB,iBACzB9Q,EAAWtQ,UAAUC,eACtB,GAGP,EAGFrM,KAAK8H,MAAM6lB,qBAAqB3tB,KAAK0a,8BACvC,CAGA1a,KAAK8H,MAAMiG,OAAO1M,SAAQwH,IACpBA,EAAK2Q,SAAW3Q,EAAK4O,WACvB5O,EAAK4O,SAAS8Z,kBAAmB,EACnC,IAGF,IAAIC,EAAmB,EACnBC,EAAiB,EACjBC,EAAiC,EACjCC,EAAmC,EA6CvC,GA3CA3xB,KAAK2a,4BAA8B,KACjC,IAAIiX,EAAe9Z,KAAKgG,MACtBhG,KAAK+Z,IAAIC,EAAAA,MAAMC,UAAU/xB,KAAK+H,OAAO8d,OAAS,MAE5ClV,EAAa3Q,KAAK+H,OAAO+d,KAAKkM,QAAQ,GAExCJ,IAAiBJ,GACjB7gB,IAAe8gB,IAEfzxB,KAAKyB,MAAMsE,OAAO,YAAa,CAC7BksB,IAAKL,EACL9L,KAAMnV,IAER6gB,EAAmBI,EACnBH,EAAiB9gB,GAGjB3Q,KAAKud,iBACLmU,EAA+BM,QAAQ,KACrChyB,KAAKgb,aAAatP,QAAQsmB,QAAQ,KAEpChyB,KAAKud,gBAAgBD,UAAUtd,KAAKgb,aAAatP,SACjDgmB,EAAiC1xB,KAAKgb,aAAatP,SAInD1L,KAAK8H,MAAM8U,gBAAgB,IACK,IAAhC5c,KAAKgb,aAAavL,WAClBkiB,EAAiCK,QAAQ,KACvChyB,KAAKgb,aAAavL,UAAUuiB,QAAQ,KAEtChyB,KAAK8H,MAAM8U,gBAAgB,GAAGU,UAC5Btd,KAAKgb,aAAavL,WAEpBkiB,EAAmC3xB,KAAKgb,aAAavL,YAElDzP,KAAKkb,8BAAgCqT,IACxCvuB,KAAKkb,8BAA+B,EACtC,EAEFlb,KAAK8H,MAAM6lB,qBAAqB3tB,KAAK2a,6BAErC3a,KAAK4a,oCAAqC,EAEhB,UAAxB5a,KAAK4W,YAAY5U,IACO,UAAxBhC,KAAK4W,YAAY5U,IAEO,UAAxBhC,KAAK4W,YAAY5U,IACO,eAAxBhC,KAAK4W,YAAY5U,IACO,SAAxBhC,KAAK4W,YAAY5U,IACO,cAAxBhC,KAAK4W,YAAY5U,GACjB,CACA,IAAIkwB,EAAgC,EACpClyB,KAAK4a,mCAAqC,KAGtC5a,KAAKgb,aAAatP,QAAQsmB,QAAQ,KAClCE,EAA8BF,QAAQ,KAEtCE,EAAgClyB,KAAKgb,aAAatP,QAEhD1L,KAAKgb,aAAatP,QAAU,IAC5B1L,KAAK8H,MAAMqqB,gBAAgB,mBAAmBna,iBAC5ChY,KAAK8Y,2BAEP9Y,KAAK8H,MAAMqqB,gBACT,mBACAna,eAAiBhY,KAAK8Y,2BAExB9Y,KAAKgb,aAAatP,SAAW,IAC7B1L,KAAK8H,MAAMqqB,gBAAgB,mBAAmBna,iBAC5ChY,KAAKuY,0BAEPvY,KAAK8H,MAAMqqB,gBACT,mBACAna,eAAiBhY,KAAKuY,yBAE5B,CAKJ,MAAO,GAA4B,aAAxBvY,KAAK4W,YAAY5U,GAAmB,CAC7C,IAAIkwB,EAAgC,EACpClyB,KAAK4a,mCAAqC,KAGtC5a,KAAKgb,aAAatP,QAAQsmB,QAAQ,KAClCE,EAA8BF,QAAQ,KAEtCE,EAAgClyB,KAAKgb,aAAatP,QAEhD1L,KAAKgb,aAAatP,QAAU,IAC5B1L,KAAK8H,MAAMqqB,gBAAgB,mBAAmBna,iBAC5ChY,KAAKkZ,kCAEPlZ,KAAK8H,MAAMqqB,gBACT,mBACAna,eAAiBhY,KAAKkZ,kCAExBlZ,KAAKgb,aAAatP,SAAW,IAC7B1L,KAAK8H,MAAMqqB,gBAAgB,mBAAmBna,iBAC5ChY,KAAKmZ,iCAEPnZ,KAAK8H,MAAMqqB,gBACT,mBACAna,eAAiBhY,KAAKmZ,gCAE5B,CAEJ,MAAO,GAA4B,UAAxBnZ,KAAK4W,YAAY5U,GAAgB,CAC1C,IAAIkwB,EAAgC,EACpClyB,KAAK4a,mCAAqC,KAGtC5a,KAAKgb,aAAatP,QAAQsmB,QAAQ,KAClCE,EAA8BF,QAAQ,KAEtCE,EAAgClyB,KAAKgb,aAAatP,QAEhD1L,KAAKgb,aAAatP,QAAU,QAC5B1L,KAAKgb,aAAatP,QAAU,OAE5B1L,KAAK8H,MAAMsqB,gBACT,mBACApa,eAAee,KAAO/Y,KAAKgZ,uBAE7BhZ,KAAK8H,MAAMsqB,gBACT,mBACApa,eAAee,KAAO,EAE5B,CAEJ,MAAO,GAA2B,QAAvB/Y,KAAK4W,YAAY5U,GAAc,CACxC,IAAIkwB,EAAgC,EAChCG,EAAmB3V,EAAW3Q,MAAM,YAAYE,gBAChDqmB,EAAoB5V,EAAW3Q,MAAM,aAAaE,gBAClDsmB,EAAmBvyB,KAAK8H,MAAMoW,YAAY,oBAC9Cle,KAAK4a,mCAAqC,KAEtC5a,KAAKgb,aAAatP,QAAQsmB,QAAQ,KAClCE,EAA8BF,QAAQ,KAEtCE,EAAgClyB,KAAKgb,aAAatP,QACN,UAAxC1L,KAAKyB,MAAMgE,MAAMuZ,oBACnBsT,EAAkBngB,WAAW9Q,SAAQ4c,IAC/Bje,KAAK8H,MAAMoW,YAAYD,KAGzBje,KAAK8H,MAAMoW,YAAYD,GAAU5G,WAAa,EAChD,IAEFgb,EAAiBlgB,WAAW9Q,SAAQ4c,IAC9Bje,KAAK8H,MAAMoW,YAAYD,KAGzBje,KAAK8H,MAAMoW,YAAYD,GAAU5G,WAAa,EAChD,KAEOrX,KAAKgb,aAAatP,QAAU,IACrC4mB,EAAkBngB,WAAW9Q,SAAQ4c,IAC/Bje,KAAK8H,MAAMoW,YAAYD,KAGzBje,KAAK8H,MAAMoW,YAAYD,GAAU5G,WAAa,EAChD,IAEFib,EAAkBhf,WAAWjS,SAAQ4c,IAC/Bje,KAAK8H,MAAMoW,YAAYD,KAGzBje,KAAK8H,MAAMoW,YAAYD,GAAU5G,WAAa,EAChD,IAEErX,KAAKyvB,WACPzvB,KAAKyB,MAAMsE,OAAO,6BAA8B,aAElD/F,KAAK2X,mBAAqB,IAAIC,EAAAA,QAC5B,iDACA5X,KAAK8H,OAEP9H,KAAK2X,mBAAmBE,KAAOC,KAAKC,GACpCwa,EAAiB9a,SAASO,eAAiBhY,KAAK2X,qBAEhD0a,EAAiB/e,WAAWjS,SAAQ4c,IAC9Bje,KAAK8H,MAAMoW,YAAYD,KAGzBje,KAAK8H,MAAMoW,YAAYD,GAAU5G,WAAa,EAChD,IAEFgb,EAAiBlgB,WAAW9Q,SAAQ4c,IAC9Bje,KAAK8H,MAAMoW,YAAYD,KAGzBje,KAAK8H,MAAMoW,YAAYD,GAAU5G,WAAa,EAChD,IAEErX,KAAKyvB,WACPzvB,KAAKyB,MAAMsE,OAAO,6BAA8B,YAElD/F,KAAK2X,mBAAqB,IAAIC,EAAAA,QAC5B,yDACA5X,KAAK8H,OAEP9H,KAAK2X,mBAAmBE,KAAOC,KAAKC,GACpCwa,EAAiB9a,SAASO,eAAiBhY,KAAK2X,oBAEpD,CAEJ,CAGA,GADA3X,KAAK6a,wCAAyC,EAC1C6B,GAAcA,EAAW/N,aAAc,CACzC,IAAI6jB,EAAa/pB,OAAOnB,KAAKtH,KAAKsb,iBAC9BmX,EAAO,CAAC,EACRjiB,EAAe,CAAEkiB,IAAK,IAE1B,GAAI1yB,KAAKsb,gBAAiB,CACxBkX,EAAWnxB,SAAQsxB,IACA,YAAbA,IACFF,EAAKE,GAAY,GAChBniB,EAAamiB,KAAaniB,EAAamiB,GAAY,IAElDjW,EAAW/N,aAAagkB,GAAU/jB,6BAElC8N,EAAW/N,aACTgkB,GACA/jB,6BAA6BvN,SAAQkrB,IACrC/b,EAAamiB,GAAUprB,QAClBvH,KAAK8H,MAAM8qB,YAAYrG,GAAQsG,gBAAe,IAEnDriB,EAAakiB,IAAInrB,QACZvH,KAAK8H,MAAM8qB,YAAYrG,GAAQsG,gBAAe,GAClD,IAEMnW,EAAW/N,aAAagkB,GAAUniB,cAC3CkM,EAAW/N,aAAagkB,GAAUniB,aAAanP,SAC7CyxB,IAUEtiB,EAAamiB,GAAUprB,KAAKvH,KAAK8H,MAAM8qB,YAAYE,IACnDtiB,EAAakiB,IAAInrB,KAAKvH,KAAK8H,MAAM8qB,YAAYE,GAAM,IAO3D,IAGGpW,EAAW/N,cAAc4B,qBAC5BC,EAAakiB,IAAIrxB,SAAQwH,IACnBA,EAAK2Q,SAAW3Q,EAAK4O,WACvB5O,EAAK4O,SAAS8Z,kBAAmB,EACnC,IAIJ,IAAIc,EACqB,QAAvBryB,KAAK4W,YAAY5U,GACb0a,EAAW3Q,MAAM,YAAYE,gBAAgBkG,WAC7C,KACFmgB,EACqB,QAAvBtyB,KAAK4W,YAAY5U,GACb0a,EAAW3Q,MAAM,aAAaE,gBAAgBkG,WAC9C,KACFogB,EAAmBvyB,KAAK8H,MAAMoW,YAAY,oBAC9Cle,KAAK6a,uCAAyC,KAC5C2X,EAAWnxB,SAAQY,IACbjC,KAAKsb,gBAAgBrZ,KAASwwB,EAAKxwB,KACrCuO,EAAavO,GAAKZ,SAAQwH,IACpBA,EAAK2Q,UAEkB,QAAvBxZ,KAAK4W,YAAY5U,IACwB,YAAzChC,KAAKyB,MAAMgE,MAAMgZ,sBAEb4T,EAAiBnJ,SAASrgB,EAAK7G,IACjC6G,EAAKwO,WAAa,EAElBxO,EAAKwO,WAAarX,KAAKsb,gBAAgBrZ,GAEzCjC,KAAK2X,mBAAqB,IAAIC,EAAAA,QAC5B,yDACA5X,KAAK8H,OAEP9H,KAAK2X,mBAAmBE,KAAOC,KAAKC,GACpCwa,EAAiB9a,SAASO,eAAiBhY,KAAK2X,oBAEzB,QAAvB3X,KAAK4W,YAAY5U,IACwB,aAAzChC,KAAKyB,MAAMgE,MAAMgZ,sBAEb6T,EAAkBpJ,SAASrgB,EAAK7G,IAClC6G,EAAKwO,WAAa,EAElBxO,EAAKwO,WAAarX,KAAKsb,gBAAgBrZ,GAEzCjC,KAAK2X,mBAAqB,IAAIC,EAAAA,QAC5B,iDACA5X,KAAK8H,OAEP9H,KAAK2X,mBAAmBE,KAAOC,KAAKC,GACpCwa,EAAiB9a,SAASO,eAAiBhY,KAAK2X,oBAEhD9O,EAAKwO,WAAarX,KAAKsb,gBAAgBrZ,GAE3C,IAEFwwB,EAAKxwB,GAAOjC,KAAKsb,gBAAgBrZ,GACnC,GACA,CAEN,CACF,CAEIjC,KAAK4a,oCACP5a,KAAK8H,MAAM6lB,qBACT3tB,KAAK4a,oCAGL5a,KAAK6a,wCACP7a,KAAK8H,MAAM6lB,qBACT3tB,KAAK6a,uCAGX,CAEF7a,KAAKwiB,cACP,CAEAiC,uBAAAA,GACEzkB,KAAK0lB,oBAAsB,CACzBqN,UAAW,CACTlN,MAAO,MACPC,KAAM,MACN9J,OAAQhc,KAAKgzB,aACXhzB,KAAKyB,MAAMgE,MAAMkgB,WAAWsN,YAC5B,CAAC,IAAK,KACN,CAAC,IAAK,MAERrqB,SAAU,IAAIe,EAAAA,QAAQ,GAAI,KAAM,IAElCupB,KAAM,CACJrN,MAAO,MACPC,KAAM,MACN9J,OAAQhc,KAAKgzB,aACXhzB,KAAKyB,MAAMgE,MAAMkgB,WAAWsN,YAC5B,CAAC,IAAK,KACN,CAAC,IAAK,MAERrqB,SAAU,IAAIe,EAAAA,QAAQ,GAAI,KAAM,IAElCwpB,SAAU,CACRtN,MAAO,MACPC,KAAM,MACN9J,OAAQhc,KAAKgzB,aACXhzB,KAAKyB,MAAMgE,MAAMkgB,WAAWsN,YAC5B,CAAC,IAAK,MACN,CAAC,IAAK,MAERrqB,SAAU,IAAIe,EAAAA,QAAQ,GAAI,KAAM,IAGtC,CAEAwQ,UAAAA,CAAWuC,GACLA,GACEA,EAAWnS,oBACbvK,KAAK+H,OAAOqrB,UAAU,IAAIzpB,EAAAA,WAAW+S,EAAWnS,sBAEhDvK,KAAK+H,OAAOqrB,UAAU,IAAIzpB,EAAAA,QAAQ,EAAG,IAAK,IAK5C3J,KAAK+H,OAAO8d,OAAS,SACrB7lB,KAAK+H,OAAOiU,OAAS,GACrBhc,KAAK+H,OAAOmU,iBAAmB,GAC/Blc,KAAK+H,OAAOsrB,iBAAmB,GAC/BrzB,KAAK+H,OAAOurB,eAAiB,GAC7BtzB,KAAK+H,OAAOwrB,eAAiB,IAC7BvzB,KAAK+H,OAAOge,IAAM,GAClB/lB,KAAK+H,OAAOie,KAAO,EACnBhmB,KAAK+H,OAAOke,KAAO,IAEfvJ,EAAW9L,cACb5Q,KAAK+H,OAAO8d,MAAQnJ,EAAW9L,aAG7B8L,EAAWlS,eACTkS,EAAWlS,aAAa7H,UAC1B3C,KAAK+H,OAAOiU,OAASU,EAAWlS,aAAa7H,SAC3C+Z,EAAWlS,aAAaC,aAC1BzK,KAAK+H,OAAOmU,iBAAmBQ,EAAWlS,aAAaC,YACrDiS,EAAWlS,aAAaE,aAC1B1K,KAAK+H,OAAOsrB,iBAAmB3W,EAAWlS,aAAaE,aAGvDgS,EAAW/L,aACT+L,EAAW/L,WAAWhO,UACxB3C,KAAK+H,OAAO+d,KAAOpJ,EAAW/L,WAAWhO,SACvC+Z,EAAW/L,WAAWlG,aACxBzK,KAAK+H,OAAOurB,eAAiB5W,EAAW/L,WAAWlG,YACjDiS,EAAWlS,aAAaE,aAC1B1K,KAAK+H,OAAOwrB,eAAiB7W,EAAW/L,WAAWjG,aAGvD1K,KAAK+H,OAAOyrB,cAAcxzB,KAAKJ,QAAQ,KAEvCI,KAAKykB,0BACLzkB,KAAK+H,OAAOqrB,UAAU,IAAIzpB,EAAAA,QAAQ,GAAI,KAAM,IAC5C3J,KAAK+H,OAAOmU,sBAAmB/U,EAC/BnH,KAAK+H,OAAOsrB,sBAAmBlsB,EAC/BnH,KAAK+H,OAAOurB,oBAAiBnsB,EAC7BnH,KAAK+H,OAAOwrB,oBAAiBpsB,EAC7BnH,KAAK+H,OAAO8d,MAAQ7lB,KAAK0lB,oBACvB1lB,KAAKyB,MAAMgE,MAAMkgB,WAAWC,eAC5BC,MACF7lB,KAAK+H,OAAO+d,KAAO9lB,KAAK0lB,oBACtB1lB,KAAKyB,MAAMgE,MAAMkgB,WAAWC,eAC5BE,KACF9lB,KAAK+H,OAAOiU,OAAShc,KAAK0lB,oBACxB1lB,KAAKyB,MAAMgE,MAAMkgB,WAAWC,eAC5B5J,OACFhc,KAAK+H,OAAOge,IAAM,KAClB/lB,KAAK+H,OAAOie,KAAO,EACnBhmB,KAAK+H,OAAOke,KAAO,IAEvB,CAEAkI,kBAAAA,CAAmBzR,GACjB,GAAIA,EAAW5K,MAAO,CACpB,IAAI,SAAElJ,EAAQ,UAAEmJ,EAAS,UAAEC,GAAc0K,EAAW5K,MAChDlJ,IACF5I,KAAK8H,MAAMgP,OAAO,GAAGlO,SAAW,IAAIe,EAAAA,WAAWf,IAE7CmJ,IACF/R,KAAK8H,MAAMgP,OAAO,GAAG/E,UAAY,IAAIpI,EAAAA,WAAWoI,IAE9CC,IACFhS,KAAK8H,MAAMgP,OAAO,GAAG9E,UAAYA,EAErC,MAEEhS,KAAK8H,MAAMgP,OAAO,GAAG9E,UAAY,EACjChS,KAAK8H,MAAMgP,OAAO,GAAGlO,SAAW,IAAIe,EAAAA,QAAQ,EAAG,IAAK,IACpD3J,KAAK8H,MAAMgP,OAAO,GAAGwD,WAAWC,IAAM,EACtCva,KAAK8H,MAAMgP,OAAO,GAAGwD,WAAWE,IAAM,EACtCxa,KAAK8H,MAAMgP,OAAO,GAAGwD,WAAWG,GAAK,EAIrCza,KAAK4W,cACoB,SAAxB5W,KAAK4W,YAAY5U,IACQ,cAAxBhC,KAAK4W,YAAY5U,IAChBhC,KAAK4W,aAAuC,WAAxB5W,KAAK4W,YAAY5U,MAExChC,KAAK8H,MAAMgS,qBAAuB,EAEtC,CAiCA0I,YAAAA,GACExiB,KAAKwb,OAAOiY,SACZzzB,KAAKgI,QAAUhI,KAAKwb,OAAOkE,gBAAe,GAC1C1f,KAAKiI,QAAUjI,KAAKwb,OAAOmE,iBAAgB,GAC3C3f,KAAKqhB,aAAengB,OAAOsf,YAC3BxgB,KAAKkhB,YAAchgB,OAAOof,WAC1BtgB,KAAKof,oBAELpf,KAAK0Z,cACH1Z,KAAK8H,MAAM4rB,kBAAkBtyB,OAAS,GAAK,aAAe,gBAE9D,CAYAsjB,YAAAA,GACE,IAAI5c,EAAQ,IAAI6rB,EAAAA,EAAM3zB,KAAKwb,QAE3B1T,EAAM6R,WAAa,IAAItB,EAAAA,OAAOK,cAAc,WAC5C5Q,EAAMulB,aAAehV,EAAAA,OAAOC,QAG5BtY,KAAKwb,OAAOoY,cAAgB,IAAIC,EAAAA,EAE5B7zB,KAAKwhB,MAAM4F,OAAO9hB,QACpBtF,KAAKyB,MAAMsE,OACT,4BACAgQ,GAAQ/V,KAAKyW,WAAWzW,KAAKwhB,MAAM4F,OAAO9hB,SAAS5C,MAGvD1C,KAAKwb,OAAO0S,mBAEZluB,KAAKiuB,gBAAkB,IAAI6F,EAAAA,YAAYC,0BACrC,2DACAjsB,GAEF9H,KAAK6Z,cAAgB,IAAIia,EAAAA,YAAYC,0BACnC,yCACAjsB,GAEF9H,KAAKiuB,gBAAgB+F,YAAa,EAClCh0B,KAAK6Z,cAAcma,YAAa,EAChClsB,EAAM8R,mBAAqB5Z,KAAK6Z,cAChC/R,EAAMgS,qBAAuB,IAO7B,MAAMhI,EAAQ,IAAImiB,EAAAA,iBAAiB,QAAS,IAAItqB,EAAAA,QAAQ,IAAK,EAAG,GAAI7B,GACpEgK,EAAMlJ,SAAW,IAAIe,EAAAA,QAAQ,EAAG,IAAK,IACrCmI,EAAME,UAAY,EAGlB,MAAMkiB,EAAqB,IAAID,EAAAA,iBAC7B,QACA,IAAItqB,EAAAA,SAAS,GAAI,EAAG,GACpB7B,GAEFosB,EAAmBtrB,SAAW,IAAIe,EAAAA,QAAQ,EAAG,IAAK,IAClDuqB,EAAmBliB,UAAY,EAC/BkiB,EAAmBvN,uBAAwB,EAG3C,MAAMC,EAAkB,IAAIC,EAAAA,gBAAgB,KAAMqN,GAmBlD,OAlBAtN,EAAgBuN,2BAA4B,EAC5CvN,EAAgBwN,iBAAmBvN,EAAAA,gBAAgBwN,aACnDzN,EAAgB0N,iCAAmC,KACnD1N,EAAgB2N,YAAY,KAC5B3N,EAAgBG,KAAO,IACvB9Q,GAAgB2Q,EAEhB9e,EAAM4hB,6BAA6B8K,SAAW,MAG9C1sB,EAAM2sB,QAAUd,EAAAA,EAAMe,eACtB5sB,EAAM6sB,SAAW,IAAItc,EAAAA,OAAOK,cAAc,WAC1C5Q,EAAMiS,SAAW,KACjBjS,EAAMkS,OAAS,KAGf1Z,GAAAA,EAAQC,GAAG,eAAgBP,KAAK0b,UAEzB5T,CACT,E,0BCp7GK/F,MAAM,Y,IACJA,MAAM,qB,IACLA,MAAM,sB,IAmDPA,MAAM,kB,2CArDbG,EAAAA,EAAAA,IAyDM,MAzDNM,GAyDM,EAxDJV,EAAAA,EAAAA,IAuDM,MAvDNkD,GAuDM,EAtDJlD,EAAAA,EAAAA,IAkDK,KAlDLmD,GAkDK,EArDX2vB,EAAAA,EAAAA,KAAAC,EAAAA,EAAAA,IAIWtwB,EAAA0B,GAAG,mCAAoC,IAC1C,IAAAnE,EAAAA,EAAAA,IA+CM,OA9CJC,OANVI,EAAAA,EAAAA,IAAA,CAMgB,qBAAoB,4BACY2yB,EAAAC,kBACrCC,aAAUpxB,EAAA,KAAAA,EAAA,OAAAqxB,IAAEC,EAAAC,SAAAD,EAAAC,WAAAF,IACZG,aAAUxxB,EAAA,KAAAA,EAAA,OAAAqxB,IAAEC,EAAAG,WAAAH,EAAAG,aAAAJ,K,EASbnzB,EAAAA,EAAAA,IAiBM,aAhBJA,EAAAA,EAAAA,IAA2D,aAAA+yB,EAAAA,EAAAA,IAAlDtwB,EAAA0B,GAAG,uCAAD,aAmCjBnE,EAAAA,EAAAA,IAEI,IAFJoD,IAEI2vB,EAAAA,EAAAA,IADCtwB,EAAA0B,GAAG,6BAAD,M,CAOb,IAAIqvB,GAAqB,KACzB,QACE/1B,IAAAA,GACE,MAAO,CACLw1B,gBAAgB,EAEpB,EACAl1B,QAAS,CACPw1B,SAAAA,GACMC,IACFC,aAAaD,IAEfA,GAAqB/Z,YAAW,KAC9Bvb,KAAK+0B,gBAAiB,CAAK,GAC1B,IACL,EACAI,OAAAA,GACMG,IACFC,aAAaD,GAEjB,I,YC3EJ,MAAME,IAA2B,QAAgB,GAAQ,CAAC,CAAC,SAAS,IAAQ,CAAC,YAAY,qBAEzF,U,2GCTA,e,YAOY1zB,EAAAA,EAAAA,IAAkD,OAA7C4Q,IAAA+iB,GAAoC7iB,IAAI,I,eAG5C7Q,MAAM,sC,IACHA,MAAM,oB,IAXtBE,IAAA,EAYeF,MAAM,mB,IACJA,MAAM,yB,GAbvB,sB,GAAA,e,IAAAE,IAAA,EAwBiBF,MAAM,uC,IACJA,MAAM,wB,IAGLA,MAAM,uB,IA5B1BE,IAAA,EAoCiBF,MAAM,mB,IACJA,MAAM,wB,IACLA,MAAM,uB,GAtC1B,yB,IAAAE,IAAA,EAqDiBF,MAAM,mB,IACJA,MAAM,wB,IACLA,MAAM,uB,GAvD1B,yB,IAAAE,IAAA,G,GAAA,c,IA0EyBF,MAAM,yB,GA1E/B,yB,IA4FiCse,MAAM,KAAKE,OAAO,KAAKmV,QAAQ,YAAYC,KAAK,OACjDC,MAAM,8B,GA7FtC,S,IAmG2B7zB,MAAM,uB,2CAlG7BG,EAAAA,EAAAA,IAyGM,OAzGDH,OADTI,EAAAA,EAAAA,IAAA,CACe,SAAQ,CAAU0zB,EAAAryB,aAAe,eAAgB,WAAWqyB,EAAA5yB,kB,EACnEnB,EAAAA,EAAAA,IAOS,UAPDC,MAAM,eAAgB6D,QAAKhC,EAAA,KAAAA,EAAA,QAAuBW,EAAAuxB,MAAK,QAAuBvxB,EAAAuxB,MAAK,mBAIxF,aAAYvxB,EAAA0B,GAAG,sBAAuBwa,SAAS,K,CAC9Czb,IAPZ4vB,EAAAA,EAAAA,IAO8D,KAClDC,EAAAA,EAAAA,IAAGtwB,EAAA0B,GAAG,sBAAD,MARjBzD,KAUQV,EAAAA,EAAAA,IA+FM,MA/FNmD,GA+FM,EA9FFnD,EAAAA,EAAAA,IAAsD,KAAtDoD,IAAsD2vB,EAAAA,EAAAA,IAAA,GAAnBtwB,EAAA0B,GAAG7D,EAAAwI,UAAK,GACVxI,EAAAyP,UAAO,WAAxC3P,EAAAA,EAAAA,IAA+D,IAA/DgE,IAA+D2uB,EAAAA,EAAAA,IAAlBtwB,EAAA0B,GAAG7D,EAAAyP,UAAO,KAZnEzO,EAAAA,EAAAA,IAAA,QAaYtB,EAAAA,EAAAA,IAUM,MAVNi0B,GAUM,CATO3zB,EAAAiL,MAAG,WAAZnL,EAAAA,EAAAA,IAGS,KAjBzBD,IAAA,EAc+B+zB,KAAM5zB,EAAAiL,IAAKtL,MAAM,cAAc6N,OAAO,SAChD,aAAYrL,EAAA0B,GAAG,0BAA2B,CAA5BX,OAAsCf,EAAA0B,GAAG7D,EAAAwI,W,QACrDrG,EAAA0B,GAAG,sBAAuB,KAC5B,EAjBrBgwB,MAAA7yB,EAAAA,EAAAA,IAAA,OAkB8BhB,EAAAkL,gBAAa,WAA3BpL,EAAAA,EAAAA,IAIS,UAtBzBD,IAAA,EAkB6CF,MAAM,yCAC9B6D,QAAKhC,EAAA,KAAAA,EAAA,GAAAC,GAAEU,EAAAiB,OAAOO,OAAO,oBAAoB,IAAQ,aAAYxB,EAAA0B,GAAG,2B,QAC9D1B,EAAA0B,GAAG,0BAA2B,MAErC,EAtBhBiwB,MAAA9yB,EAAAA,EAAAA,IAAA,SAwBmEhB,EAAA+zB,eAAY,WAAnEj0B,EAAAA,EAAAA,IAWM,MAXNk0B,GAWM,EAVFt0B,EAAAA,EAAAA,IAEI,IAFJu0B,IAEIxB,EAAAA,EAAAA,IADGtwB,EAAA0B,GAAG7D,EAAA+zB,aAAa5oB,SAAM,IAE7BzL,EAAAA,EAAAA,IAMK,KANLw0B,GAMK,gBALDp0B,EAAAA,EAAAA,IAIKiD,EAAAA,GAAA,MAjCzBC,EAAAA,EAAAA,IA6BiFhD,EAAA+zB,aAAalrB,QA7B9F,CA6B4DsrB,EAAat0B,M,WAArDC,EAAAA,EAAAA,IAIK,MAJDH,OA7BxBI,EAAAA,EAAAA,IAAA,CA6B8B,sBAAqB,C,8BAAgHC,EAAA+zB,aAAaxzB,UAAYV,KAArFA,IAAKA,I,QAGjFsC,EAAA0B,GAAGswB,IAAW,M,YAhCzCnzB,EAAAA,EAAAA,IAAA,OAoC+ChB,EAAAyM,SAAM,WAAzC3M,EAAAA,EAAAA,IAgBM,MAhBNs0B,GAgBM,EAfF10B,EAAAA,EAAAA,IAA2D,IAA3D20B,IAA2D5B,EAAAA,EAAAA,IAAxBtwB,EAAA0B,GAAG7D,EAAAyM,OAAOtB,SAAM,IACnDzL,EAAAA,EAAAA,IAaK,KAbL40B,GAaK,gBAZDx0B,EAAAA,EAAAA,IAWKiD,EAAAA,GAAA,MAlDzBC,EAAAA,EAAAA,IAuC2EhD,EAAAyM,OAAO5D,QAvClF,CAuC4D4T,EAAO5c,M,WAA/CC,EAAAA,EAAAA,IAWK,MAXDH,OAvCxBI,EAAAA,EAAAA,IAAA,CAuC8B,sBAAqB,C,8BAAoGF,IAAQ4zB,EAAAnyB,gBAApEzB,IAAKA,G,EAGxEH,EAAAA,EAAAA,IAOS,UAPA8D,QAAKA,KAAuBrB,EAAAiB,OAAOO,OAAM,2BAA6B9D,GAAmBsC,EAAAuxB,MAAK,eAAiB7zB,GAAmBsC,EAAAuxB,MAAK,kBAK7J,aAAYvxB,EAAA0B,GAAG4Y,K,QACKta,EAAA0B,GAAG4Y,IAAK,EAhDvC8X,KAAA,M,YAAAvzB,EAAAA,EAAAA,IAAA,OAqD+ChB,EAAA2J,QAAK,WAAxC7J,EAAAA,EAAAA,IAgBM,MAhBN00B,GAgBM,EAfF90B,EAAAA,EAAAA,IAA0D,IAA1D+0B,IAA0DhC,EAAAA,EAAAA,IAAvBtwB,EAAA0B,GAAG7D,EAAA2J,MAAMwB,SAAM,IAClDzL,EAAAA,EAAAA,IAaK,KAbLg1B,GAaK,gBAZD50B,EAAAA,EAAAA,IAWKiD,EAAAA,GAAA,MAnEzBC,EAAAA,EAAAA,IAwD0EhD,EAAA2J,MAAMd,QAxDhF,CAwD4DqG,EAAMrP,M,WAA9CC,EAAAA,EAAAA,IAWK,MAXDH,OAxDxBI,EAAAA,EAAAA,IAAA,CAwD8B,sBAAqB,C,8BAAkGF,IAAQ4zB,EAAApyB,sBAApExB,IAAKA,G,EAGtEH,EAAAA,EAAAA,IAOS,UAPA8D,QAAKA,KAAuBrB,EAAAiB,OAAOO,OAAM,6BAA+B9D,GAAmBsC,EAAAuxB,MAAK,cAAgB7zB,GAAmBsC,EAAAuxB,MAAK,kBAK9J,aAAYvxB,EAAA0B,GAAGqL,K,QACK/M,EAAA0B,GAAGqL,IAAI,EAjEtCylB,KAAA,M,YAAA3zB,EAAAA,EAAAA,IAAA,OAuEuBhB,EAAA+M,SAAM,WAAjBjN,EAAAA,EAAAA,IAiCM,MAxGlB80B,GAAA,gBAwEgB90B,EAAAA,EAAAA,IA+BMiD,EAAAA,GAAA,MAvGtBC,EAAAA,EAAAA,IAwEmDhD,EAAA+M,QAxEnD,CAwE6B8nB,EAAYC,M,WAAzBh1B,EAAAA,EAAAA,IA+BM,OA/BqCH,MAAM,gBAAiBE,IAAKg1B,EAAW1xB,K,EAC9EzD,EAAAA,EAAAA,IAA4E,KAAzEC,MAAM,uBAAuBo1B,UAAQ5yB,EAAA6yB,UAAU7yB,EAAA0B,GAAGgxB,EAAW1pB,U,OAzEpF8pB,KA0EoBv1B,EAAAA,EAAAA,IA4BM,MA5BNw1B,GA4BM,gBA3BFp1B,EAAAA,EAAAA,IAuBSiD,EAAAA,GAAA,MAlGjCC,EAAAA,EAAAA,IA2EgD6xB,EAAWxpB,aAApBK,K,WAAf5L,EAAAA,EAAAA,IAuBS,UAvBwCD,IAAK6L,EAAMvI,IAAMK,QAAKA,KAAuBrB,EAAAuxB,MAAK,gB,aAAkDhoB,EAAMF,a,OAAuCE,EAAMC,SAAsC3L,EAAAm1B,aAAaL,GAASppB,EAAMpL,KAAmB6B,EAAAuxB,MAAK,kBAQ/Sr1B,OAnFX+2B,EAAAA,EAAAA,IAAA,C,MAmFoC1pB,EAAMH,Y,OAA8BG,EAAMoG,aAAY,GAAmBpG,EAAMoG,yBAAY,SAKvHnS,OAxFRI,EAAAA,EAAAA,IAAA,C,gBAwF2CC,EAAAm1B,aAAaL,KAAWppB,EAAMpL,OAEjE,aAAU,UAAY6B,EAAA0B,GAAGgxB,EAAW1pB,cAAchJ,EAAA0B,GAAG6H,EAAMpL,S,cAEvCR,EAAAA,EAAAA,IAKM,MALNu1B,GAKM,EAHF31B,EAAAA,EAAAA,IAE8C,QAD1C41B,EAAE,0GACD/B,KAAM7nB,EAAMoE,gBAAkB,S,OAhGnEylB,QAAA,GAAAC,O,OAmGwB91B,EAAAA,EAAAA,IAEI,IAFJ+1B,IAEIhD,EAAAA,EAAAA,IADGtwB,EAAA0B,GAAG7D,EAAAm1B,aAAaL,KAAK,U,UApGpD9zB,EAAAA,EAAAA,IAAA,Y,CAkHA,QACI00B,MAAO,CACH70B,YAAa,CACT+F,KAAM+uB,OACNC,UAAU,GAEdv0B,mBAAoB,CAChBuF,KAAM+uB,OACNC,UAAU,GAEdt0B,aAAc,CACVsF,KAAM+uB,OACNp1B,QAAS,IAEba,YAAa,CACTwF,KAAMivB,QACNt1B,SAAS,IAGjBu1B,MAAO,CACH,cACA,eACA,eACA,gBACA,QAEJ7T,KAAAA,CAAMyT,EAAOK,GAET,MAAMZ,GAAenxB,EAAAA,EAAAA,IAAI,IAEnBsW,GAAa0b,EAAAA,EAAAA,KAAS,IACjBriB,GAAQ+hB,EAAM70B,aAAamK,mBAGhCxC,GAAQwtB,EAAAA,EAAAA,KAAS,IACZ1b,EAAWf,MAAQe,EAAWf,MAAM/Q,MAAQ,KAEjDyC,GAAM+qB,EAAAA,EAAAA,KAAS,IACV1b,EAAWf,MAAQe,EAAWf,MAAMtO,IAAM,KAE/CC,GAAgB8qB,EAAAA,EAAAA,KAAS,MACpB1b,EAAWf,OAAQe,EAAWf,MAAMrO,gBAEzCuE,GAAUumB,EAAAA,EAAAA,KAAS,IACd1b,EAAWf,MAAQe,EAAWf,MAAM9J,QAAU,KAEnD9F,GAAQqsB,EAAAA,EAAAA,KAAS,IAIf1b,EAAWf,OAASe,EAAWf,MAAMpI,aAC9BmJ,EAAWf,MAAMpI,aAAaukB,EAAMp0B,cACrCgZ,EAAWf,MAAMpI,aAAaukB,EAAMp0B,cACpC,KACCgZ,EAAWf,OAASe,EAAWf,MAAM5P,MACrC2Q,EAAWf,MAAM5P,MAErB,OAEL8C,GAASupB,EAAAA,EAAAA,KAAS,IACb1b,EAAWf,OAASe,EAAWf,MAAM9M,OACtC6N,EAAWf,MAAM9M,OACjB,OAEJsnB,GAAeiC,EAAAA,EAAAA,KAAS,IACnB1b,EAAWf,OAASe,EAAWf,MAAMwa,aACtCzZ,EAAWf,MAAMwa,aACjB,OAEJhnB,GAASipB,EAAAA,EAAAA,KAAS,IAChB1b,EAAWf,OAASe,EAAWf,MAAM7M,cAC9B4N,EAAWf,MAAM7M,cAAcgpB,EAAMp0B,cACrCgZ,EAAWf,OAASe,EAAWf,MAAMnO,gBACrCkP,EAAWf,MAAMnO,gBAAgBsqB,EAAMr0B,oBACvCiZ,EAAWf,OAASe,EAAWf,MAAMxM,OACrCuN,EAAWf,MAAMxM,OAErB,OAqCX,OAvBAkpB,EAAAA,EAAAA,KAAY,KACRd,EAAa5b,MAAQ,GACjBe,EAAWf,OAASxM,EAAOwM,OAE3BxM,EAAOwM,MAAMta,SAAQ41B,IAEbA,EAAWt0B,SACXs0B,EAAWxpB,aACXwpB,EAAWxpB,YAAYwpB,EAAWt0B,SAASiL,eAE3C2pB,EAAa5b,MAAMpU,KACf0vB,EAAWxpB,YAAYwpB,EAAWt0B,SAASD,MAE/Cy1B,EAAQG,KAAK,eAAgB,CACzB1qB,aACIqpB,EAAWxpB,YAAYwpB,EAAWt0B,SAASiL,aAC/CG,OAAQkpB,EAAWxpB,YAAYwpB,EAAWt0B,SAASoL,SAE3D,GAER,IAGG,CACH+pB,QACAltB,QACAyC,MACAC,gBACAvB,QACA8C,SACAsnB,eACAhnB,SACAooB,eACA1lB,UAER,GCzOJ,MAAM,IAA2B,QAAgB,GAAQ,CAAC,CAAC,SAAS,IAAQ,CAAC,YAAY,qBAEzF,U,8CCPS9P,MAAM,wB,GAFf,yB,GAAA,c,2CACEG,EAAAA,EAAAA,IAqCM,OArCDH,OADPI,EAAAA,EAAAA,IAAA,CACa,cAAsB0zB,EAAAnxB,cAAgB,uB,EAC/C5C,EAAAA,EAAAA,IAmCM,MAnCNU,GAmCM,gBAlCJN,EAAAA,EAAAA,IAiCMiD,EAAAA,GAAA,MApCZC,EAAAA,EAAAA,IAGoChD,EAAAm2B,aAHpC,CAGmBrZ,EAASjd,M,WAAtBC,EAAAA,EAAAA,IAiCM,OAjCsCD,IAAKid,EAAQ3Z,K,CAErB,cAAZ2Z,EAAQlW,MAAuCzE,EAAAiB,OAAOC,MAAM8Z,YAAYpX,MAAMlG,KAAyFwc,IAAlES,GAAS/O,iBAAiB+Y,SAA2B3kB,EAAAiB,OAAOC,MAAMgZ,wBAAAA,EAAAA,EAAAA,OAD7Lvc,EAAAA,EAAAA,IA+BS,UAnCjBD,IAAA,EAYUF,OAZVI,EAAAA,EAAAA,IAAA,CAYgB,oBAAmB,C,8BAC6BoC,EAAAiB,OAAOC,MAAM+yB,kBAAkBtP,SAAyBjnB,MAK7G2D,QAAK/B,GAAEzB,EAAAq2B,gBAAgBvZ,EAASjd,GAChC,aAAYsC,EAAA0B,GAAGiZ,EAAQ3f,KAAKqL,OAASsU,EAAQ3f,KAAK4L,O,EAEnDrJ,EAAAA,EAAAA,IAYE,OAXA4Q,IAAA+iB,GACA1zB,OAvBZI,EAAAA,EAAAA,IAAA,CAuBkB,yBAAwB,C,iCAC8CoC,EAAAiB,OAAOC,MAAM+yB,kBAAkBtP,SAASjnB,IAA0Bid,EAAQ1M,oBAAyCjO,EAAAiB,OAAOC,MAAM+yB,kBAAkBtP,SAA+BhK,EAAQ1M,uBAQrQI,IAAI,I,SAEN9Q,EAAAA,EAAAA,IAA0D,KAAvDq1B,UAAQ5yB,EAAA0B,GAAGiZ,EAAQ3f,KAAKqL,OAASsU,EAAQ3f,KAAK4L,O,OAlC3DlG,KAAA,GAAAD,MAAA5B,EAAAA,EAAAA,IAAA,Y,wCA+CA,IACE00B,MAAO,CACL70B,YAAa,CACX+F,KAAM+uB,OACNC,UAAU,GAEZtzB,aAAc,CACZsE,KAAMivB,QACNt1B,SAAS,IAGbu1B,MAAO,CAAC,4BAA6B,kBACrC7T,KAAAA,CAAMyT,GAAO,KAAEQ,IACb,MAAM72B,GAAQi3B,EAAAA,GAAAA,OACR,EAAEC,IAAMC,EAAAA,GAAAA,MAERL,GAAcH,EAAAA,EAAAA,KAAS,KAC3B,GAAIriB,GAAQ+hB,EAAM70B,aAAc,CAC9B,IAAI0H,EAAW,GACXkuB,EAAY,CAAC,EACbC,EAAM/iB,GAAQ+hB,EAAM70B,aAAa0H,SA8BrC,OA3BAlC,OAAOC,QAAQowB,GAAKz3B,SAAQ03B,IAC1B,MAAO92B,EAAK0Z,GAASod,EACrBpd,EAAM1Z,IAAMA,EACZ0I,EAASpD,KAAKoU,EAAM,IAItBhR,EAAWA,EAASquB,MAAK,SAASC,EAAGC,GACnC,IAAIC,EAAQF,EAAE15B,KAAKqL,MACf+tB,EAAEM,EAAE15B,KAAKqL,OAAOwuB,cAChBH,EAAE15B,KAAK4L,KACPwtB,EAAEM,EAAE15B,KAAK4L,MAAMiuB,cACf,GACAC,EAAQH,EAAE35B,KAAKqL,MACf+tB,EAAEO,EAAE35B,KAAKqL,OAAOwuB,cAChBF,EAAE35B,KAAK4L,KACPwtB,EAAEO,EAAE35B,KAAK4L,MAAMiuB,cACf,GAEJ,OAAOD,EAAQE,GAAS,EAAIF,EAAQE,EAAQ,EAAI,CAClD,IAGA1uB,EAAStJ,SAAQ6d,IACf2Z,EAAU3Z,EAAQjd,KAAOid,CAAO,IAG3B2Z,CACT,CACA,MAAO,CAAC,CAAC,KAGXn3B,EAAAA,EAAAA,KACE,IAAMo2B,EAAM70B,cACZ,KACExB,EAAMsE,OAAO,yBAAyB,IAI1C,MAAM0yB,EAAkBA,CAACvZ,EAASjd,KAChCq2B,EAAK,kBACDpZ,GAASlU,YAAYgJ,SAASvS,EAAMgE,MAAMgZ,sBAC5C6Z,EAAK,4BAA6B,CAChCxc,UAAW7Z,KACRid,EAAQlU,WAAWgJ,OAAOvS,EAAMgE,MAAMgZ,wBAG3CS,GAASlU,YAAYgJ,SAASvS,EAAMgE,MAAMuZ,oBAE1CsZ,EAAK,4BAA6B,CAChCxc,UAAW7Z,KACRid,EAAQlU,WAAWgJ,OAAOvS,EAAMgE,MAAMuZ,sBAElCE,GAASlU,YAClBstB,EAAK,4BAA6B,CAChCxc,UAAW7Z,KACRid,EAAQlU,YAEf,EAGF,MAAO,CAAEvJ,QAAO82B,cAAaI,IAAGF,kBAClC,GC7HF,MAAM,IAA2B,QAAgB,GAAQ,CAAC,CAAC,SAAS,MAEpE,U,6ECHW12B,MAAM,oB,GANjB,a,IAgBaA,MAAM,0B,GAhBnB,0B,YAwBYD,EAAAA,EAAAA,IAAyC,OAApC4Q,IAAA+iB,GAA2B7iB,IAAI,I,eAApC1M,I,GAxBZ,a,IAAAjE,IAAA,G,GAAA,c,yEACEc,EAAAA,EAAAA,IAmCYu2B,EAAA,CAnCA/Q,OAAQnmB,EAAAm3B,YAAc,gBAAaC,IAAQj1B,EAAAk1B,MAAMC,U,CAD/D/2B,SAAAC,EAAAA,EAAAA,KAEI,IAiCM,EAjCNd,EAAAA,EAAAA,IAiCM,OAhCJC,OAHNI,EAAAA,EAAAA,IAAA,CAGY,gBAAe,yBACcC,EAAAm3B,gB,EAEnCz3B,EAAAA,EAAAA,IAQM,MARNU,GAQM,WAPJV,EAAAA,EAAAA,IAMS,UAJN8D,QAAKhC,EAAA,KAAAA,EAAA,OAAAqxB,IAAE7yB,EAAAu3B,aAAAv3B,EAAAu3B,eAAA1E,IACPxU,SAAUre,EAAAm3B,aAAe,EAAI,I,QAE3Bh1B,EAAA0B,GAAG,0BAAD,EAZfjB,IAAA,OAQkB5C,EAAAw3B,KAAKx4B,OAAS,QAO1BU,EAAAA,EAAAA,IAmBM,OAnBDC,MAAM,iCAAkC6D,QAAKhC,EAAA,KAAAA,EAAA,IAfxDi2B,EAAAA,EAAAA,KAAA,IAAA5E,IAe+D7yB,EAAAu3B,aAAAv3B,EAAAu3B,eAAA1E,IAAW,Y,EAClEnzB,EAAAA,EAAAA,IAiBM,MAjBNmD,GAiBM,EAhBJnD,EAAAA,EAAAA,IAQS,UAPPC,MAAM,uBACL6D,QAAKhC,EAAA,KAAAA,EAAA,OAAAqxB,IAAE7yB,EAAAu3B,aAAAv3B,EAAAu3B,eAAA1E,IACP,aAAY1wB,EAAA0B,GAAG,4BAChBG,IAAI,WACHqa,SAAUre,EAAAm3B,YAAc,GAAK,GAtB1CxD,GAAA,EAAA7wB,KA0BUpD,EAAAA,EAAAA,IAMM,OANDC,MAAM,sBAAuB0e,SAAUre,EAAAm3B,YAAc,GAAK,G,CAClDn3B,EAAAw3B,OAAI,WAAf13B,EAAAA,EAAAA,IAIM,MA/BlBg0B,GAAA,gBA4Bch0B,EAAAA,EAAAA,IAEMiD,EAAAA,GAAA,MA9BpBC,EAAAA,EAAAA,IA4BuChD,EAAAw3B,MAAbE,K,WAAZ53B,EAAAA,EAAAA,IAEM,OAF0BD,IAAK63B,EAAUv0B,K,EAC7CzD,EAAAA,EAAAA,IAA4B,KAAzBq1B,UAAQ5yB,EAAA0B,GAAG6zB,I,OA7B9B1D,S,UAAAhzB,EAAAA,EAAAA,IAAA,UAAA6yB,SAAA,MAAA5yB,EAAA,G,6CA4CA,IACE02B,WAAY,CAAEC,UAASA,GAAAA,GACvBlC,MAAO,CACL70B,YAAa,CACX+F,KAAM+uB,OACNp1B,QAAS,IAEXe,aAAc,CACZsF,KAAM+uB,OACNp1B,QAAS,KAGb0hB,KAAAA,CAAMyT,GACJ,MAAMyB,GAAcnzB,EAAAA,EAAAA,KAAI,GAElBwzB,GAAOxB,EAAAA,EAAAA,KAAS,KACpB,IAAI6B,EAeJ,OAREA,EALAlkB,GAAQ+hB,EAAM70B,cACd8S,GAAQ+hB,EAAM70B,aAAai3B,sBAC3BpC,EAAMp0B,cACNqS,GAAQ+hB,EAAM70B,aAAai3B,qBAAqBpC,EAAMp0B,cAGpDqS,GAAQ+hB,EAAM70B,aAAai3B,qBAAqBpC,EAAMp0B,cAGtDqS,GAAQ+hB,EAAM70B,cAAgB8S,GAAQ+hB,EAAM70B,aAAak3B,cACrDpkB,GAAQ+hB,EAAM70B,aAAak3B,cAC3B,GAEDF,CAAU,IAGnB,SAASN,IACPJ,EAAY5d,OAAS4d,EAAY5d,KACnC,CAEA,MAAO,CAAEmc,QAAO6B,cAAaJ,cAAaK,OAC5C,GC5EF,MAAM,IAA2B,QAAgB,GAAQ,CAAC,CAAC,SAAS,IAAQ,CAAC,YAAY,qBAEzF,U,iECNW73B,MAAM,oB,GAHjB,c,GAAA,a,IAkBaA,MAAM,uB,GAlBnB,0B,YA0BYD,EAAAA,EAAAA,IAAyC,OAApC4Q,IAAA+iB,GAA2B7iB,IAAI,I,eAApCmjB,I,GA1BZ,a,IAAA9zB,IAAA,G,GAAA,c,yEACEc,EAAAA,EAAAA,IAyCYu2B,EAAA,CAzCA/Q,OAAQnmB,EAAAm3B,YAAc,gBAAaC,IAAQj1B,EAAAk1B,MAAMC,U,CAD/D/2B,SAAAC,EAAAA,EAAAA,KAEI,IAuCM,EAvCNd,EAAAA,EAAAA,IAuCM,OAvCDC,OAFTI,EAAAA,EAAAA,IAAA,CAEe,aAAY,sBAAiCC,EAAAm3B,gB,EACtDz3B,EAAAA,EAAAA,IAaM,MAbNU,GAaM,CAXIJ,EAAAoR,kBAAe,WADvBtR,EAAAA,EAAAA,IAIE,OARVD,IAAA,EAMUF,MAAM,+BACNo1B,UAAQ5yB,EAAA0B,GAAG7D,EAAAoR,kB,OAPrBxO,MAAA5B,EAAAA,EAAAA,IAAA,iBASQtB,EAAAA,EAAAA,IAMS,UAJN8D,QAAKhC,EAAA,KAAAA,EAAA,OAAAqxB,IAAE7yB,EAAAu3B,aAAAv3B,EAAAu3B,eAAA1E,IACPxU,SAAUre,EAAAm3B,aAAe,EAAI,I,QAE3Bh1B,EAAA0B,GAAG,wBAAD,EAdfhB,IAAA,OAUkB7C,EAAAw3B,KAAKx4B,OAAS,QAO1BU,EAAAA,EAAAA,IAuBM,OAvBDC,MAAM,8BAA+B6D,QAAKhC,EAAA,KAAAA,EAAA,IAjBrDi2B,EAAAA,EAAAA,KAAA,IAAA5E,IAiB4D7yB,EAAAu3B,aAAAv3B,EAAAu3B,eAAA1E,IAAW,Y,EAC/DnzB,EAAAA,EAAAA,IAqBM,MArBNoD,GAqBM,EApBJpD,EAAAA,EAAAA,IAQS,UAPPC,MAAM,oBACL6D,QAAKhC,EAAA,KAAAA,EAAA,OAAAqxB,IAAE7yB,EAAAu3B,aAAAv3B,EAAAu3B,eAAA1E,IACP,aAAY1wB,EAAA0B,GAAG,4BAChBG,IAAI,WACHqa,SAAUre,EAAAm3B,YAAc,GAAK,GAxB1CtD,GAAA,EAAA/vB,KAAA,SA4BUpE,EAAAA,EAAAA,IAUM,OARJC,MAAM,mBACL0e,SAAUre,EAAAm3B,YAAc,GAAK,G,CAEnBn3B,EAAAw3B,OAAI,WAAf13B,EAAAA,EAAAA,IAIM,MArClBk0B,GAAA,gBAkCcl0B,EAAAA,EAAAA,IAEMiD,EAAAA,GAAA,MApCpBC,EAAAA,EAAAA,IAkCuChD,EAAAw3B,MAAbE,K,WAAZ53B,EAAAA,EAAAA,IAEM,OAF0BD,IAAK63B,EAAUv0B,K,EAC7CzD,EAAAA,EAAAA,IAA4B,KAAzBq1B,UAAQ5yB,EAAA0B,GAAG6zB,I,OAnC9BzD,S,UAAAjzB,EAAAA,EAAAA,IAAA,UAAA8yB,IAAA,OA6BoB9zB,EAAAm3B,oBAAW,MA7B/Bl2B,EAAA,G,8BAkDA,QACE02B,WAAY,CAAEC,UAASA,GAAAA,GACvBlC,MAAO,CACL70B,YAAa,CACX+F,KAAM+uB,OACNp1B,QAAS,IAEXe,aAAc,CACZsF,KAAM+uB,OACNp1B,QAAS,KAGb0hB,KAAAA,CAAMyT,GACJ,MAAMyB,GAAcnzB,EAAAA,EAAAA,KAAI,GAElBwzB,GAAOxB,EAAAA,EAAAA,KAAS,KACpB,IAAI6B,EAeJ,OAREA,EALAlkB,GAAQ+hB,EAAM70B,cACd8S,GAAQ+hB,EAAM70B,aAAam3B,mBAC3BtC,EAAMp0B,cACNqS,GAAQ+hB,EAAM70B,aAAam3B,kBAAkBtC,EAAMp0B,cAGjDqS,GAAQ+hB,EAAM70B,aAAam3B,kBAAkBtC,EAAMp0B,cAGnDqS,GAAQ+hB,EAAM70B,cAAgB8S,GAAQ+hB,EAAM70B,aAAawL,WACrDsH,GAAQ+hB,EAAM70B,aAAawL,WAC3B,GAEDwrB,CAAU,IAGbzmB,GAAkB4kB,EAAAA,EAAAA,KAAS,IACxBriB,GAAQ+hB,EAAM70B,cACnB8S,GAAQ+hB,EAAM70B,aAAauQ,gBACzBuC,GAAQ+hB,EAAM70B,aAAauQ,gBAC3B,OAGN,SAASmmB,IACPJ,EAAY5d,OAAS4d,EAAY5d,KACnC,CAEA,MAAO,CAAEmc,QAAO6B,cAAaJ,cAAaK,OAAMpmB,kBAClD,GCzFF,MAAM,IAA2B,QAAgB,GAAQ,CAAC,CAAC,SAAS,IAAQ,CAAC,YAAY,qBAEzF,U,UCROzR,MAAM,sB,oFAAXG,EAAAA,EAAAA,IAEM,MAFNM,GAEM,EADJF,EAAAA,EAAAA,IAAiE+3B,EAAA,CAA3CC,iBAAA,GAAkB,WAAUl4B,EAAAm4B,a,uCAQtD,IACER,WAAY,CACVS,qBAAoBA,GAAAA,GAEtBnW,KAAAA,GACE,MAAM5iB,GAAQi3B,EAAAA,GAAAA,MACR6B,EAAcxZ,IACH,YAAXA,EAAE/X,MACJvH,EAAM2a,SAAS,uBAAwB2E,EAAE/e,GAC3C,EAGF,MAAO,CAAEu4B,cACX,GChBF,MAAM,IAA2B,QAAgB,GAAQ,CAAC,CAAC,SAAS,MAEpE,U,iECTAt4B,IAAA,EACmCF,MAAM,O,YAMnCD,EAAAA,EAAAA,IAAkC,OAA7B4Q,IAAA+iB,IAA0B,W,IAA/BzwB,I,wBANOT,EAAAiB,OAAOC,MAAMg1B,UAAO,WAA/Bv4B,EAAAA,EAAAA,IAQM,MARNM,GAQM,EAPJV,EAAAA,EAAAA,IAES,UAFA8D,QAAKhC,EAAA,KAAAA,EAAA,GAAAC,GAAEU,EAAAuxB,MAAM,aAAY,iBAFtClB,EAAAA,EAAAA,IAIa,aACDC,EAAAA,EAAAA,IAAGtwB,EAAAiB,OAAOC,MAAMwrB,QAAS,iBAAa4D,EAAAA,EAAAA,IAAGtwB,EAAAiB,OAAOC,MAAMi1B,SAAU,IACxE,IAAA54B,EAAAA,EAAAA,IAES,UAFA8D,QAAKhC,EAAA,KAAAA,EAAA,GAAAC,GAAEU,EAAAiB,OAAOO,OAAO,iBAAiB,KANnDd,QAAA7B,EAAAA,EAAAA,IAAA,M,CCCA,MAAMu3B,GAAS,CAAC,EAKV,IAA2B,QAAgBA,GAAQ,CAAC,CAAC,SAAS,IAAQ,CAAC,YAAY,qBAEzF,U,UCRA14B,IAAA,EACOF,MAAM,e,+BAAoC,oBAAhBwC,EAAAC,OAAO9B,OAAI,WAA1CR,EAAAA,EAAAA,IAOM,MAPNM,GAOM,EANJV,EAAAA,EAAAA,IAES,UAFA8D,QAAKhC,EAAA,KAAAA,EAAA,GAAAC,GAAEU,EAAAuxB,MAAM,kB,EACpBh0B,EAAAA,EAAAA,IAAmD,aAAA+yB,EAAAA,EAAAA,IAA1CtwB,EAAA0B,GAAG,+BAAD,MAEbnE,EAAAA,EAAAA,IAES,UAFA8D,QAAKhC,EAAA,KAAAA,EAAA,GAAAC,GAAEU,EAAAuxB,MAAM,mB,EACpBh0B,EAAAA,EAAAA,IAAoD,aAAA+yB,EAAAA,EAAAA,IAA3CtwB,EAAA0B,GAAG,gCAAD,SANjB7C,EAAAA,EAAAA,IAAA,M,CAWA,QACE80B,MAAO,CAAC,eAAgB,kBCL1B,MAAM,IAA2B,QAAgB,GAAQ,CAAC,CAAC,SAAS,IAAQ,CAAC,YAAY,qBAEzF,U,gECTA,e,YAeUp2B,EAAAA,EAAAA,IAAyC,OAApC4Q,IAAA+iB,GAA2B7iB,IAAI,I,eAApC5N,I,IAGGjD,MAAM,sBAAsB0e,SAAS,K,IAlBlDxe,IAAA,EAqBYF,MAAM,yBACNtB,MAAA,0B,GAtBZ,Q,IAAAwB,IAAA,EA0B+BF,MAAM,0B,IAEvBtB,MAAA,6BACA4f,MAAM,OACNE,OAAO,MACPqa,SAAA,GACAC,MAAA,GACAC,KAAA,I,GAjCd,Q,IAuCe/4B,MAAM,6B,GAvCrB,c,IAyCiBA,MAAM,mC,IAzCvBE,IAAA,G,IA4CuBF,MAAM,mB,IA5C7BE,IAAA,G,GAAA,c,IAAAA,IAAA,EAoD4CF,MAAM,2B,GApDlD,c,GAAA,c,GAAA,c,GAAA,c,yEACEG,EAAAA,EAAAA,IA4EM,OA3EJH,OAFJI,EAAAA,EAAAA,IAAA,CAEU,aAAY,sBAEcC,EAAA01B,MAAMz1B,eADrCuD,QAAKhC,EAAA,KAAAA,EAAA,IAHVi2B,EAAAA,EAAAA,KAAAh2B,GAGiBU,EAAAuxB,MAAM,gBAAD,WAElBrV,SAAS,K,EAETne,EAAAA,EAAAA,IAqEYg3B,EAAA,CArEAyB,mBAAmB,GAAK,CAPxCp4B,SAAAC,EAAAA,EAAAA,KAQM,IAmEM,EAnENd,EAAAA,EAAAA,IAmEM,aAlEJA,EAAAA,EAAAA,IAOS,UANPC,MAAM,oBACL6D,QAAKhC,EAAA,KAAAA,EAAA,GAAAC,GAAEU,EAAAuxB,MAAM,gBACb,aAAYvxB,EAAA0B,GAAG,4BAChBwa,SAAS,KAbnBxb,GAAA,EAAAzC,KAkBQV,EAAAA,EAAAA,IAwDM,MAxDNoD,GAwDM,CAtDI9C,EAAA44B,SAAM,WADd94B,EAAAA,EAAAA,IAMM,MANNgE,GAMM,EADJpE,EAAAA,EAAAA,IAA4B,OAAtB4Q,IAAKtQ,EAAA44B,OAAQpoB,IAAI,I,OAxBnCmjB,QAAA3yB,EAAAA,EAAAA,IAAA,OA0BqBhB,EAAA64B,WAAQ,WAAnB/4B,EAAAA,EAAAA,IAYM,MAZN+zB,GAYM,EAXJn0B,EAAAA,EAAAA,IAUQ,QAVRo0B,GAUQ,EAFNp0B,EAAAA,EAAAA,IAA2C,UAAlC4Q,IAAKtQ,EAAA64B,SAAUjyB,KAAK,a,OAnC3CotB,KAAAxB,EAAAA,EAAAA,IAmCyD,wDAnCzDxxB,EAAAA,EAAAA,IAAA,QAuCUtB,EAAAA,EAAAA,IAkCM,MAlCNu0B,GAkCM,EAjCJv0B,EAAAA,EAAAA,IAAyB,MAArBq1B,UAAQ5yB,EAAA0B,GAAG7D,EAAAwI,Q,OAxC3B0rB,KAyCYx0B,EAAAA,EAAAA,IA+BM,MA/BN00B,GA+BM,CA9BOp0B,EAAAsP,MAAQib,MAAMC,QAAQxqB,EAAAsP,QAAI,WAArCxP,EAAAA,EAAAA,IAuBM,MAjEpBu0B,GAAA,gBA2CgBv0B,EAAAA,EAAAA,IAqBMiD,EAAAA,GAAA,MAhEtBC,EAAAA,EAAAA,IA2CmChD,EAAAsP,MAAPwpB,K,WAAZh5B,EAAAA,EAAAA,IAqBM,OArBoBD,IAAKi5B,EAAI31B,K,EACjCzD,EAAAA,EAAAA,IAmBM,MAnBN40B,GAmBM,CAlBOwE,EAAIvpB,MAAG,WAAlBzP,EAAAA,EAAAA,IAMM,MAnD1By0B,GAAA,EA8CsB70B,EAAAA,EAAAA,IAIE,OAHC4Q,IAAKwoB,EAAIvpB,IAAIe,IACbE,IAAKsoB,EAAIvpB,IAAIiB,IACd7Q,MAAM,uB,OAjD9B60B,QAAAxzB,EAAAA,EAAAA,IAAA,OAoD+B83B,EAAIroB,UAAO,WAAtB3Q,EAAAA,EAAAA,IAUM,MAVN20B,GAUM,EATJ/0B,EAAAA,EAAAA,IAGE,MAFArB,MAAA,4BACA02B,UAAQ5yB,EAAA6yB,UAAU7yB,EAAA0B,GAAGi1B,EAAIroB,QAAQjI,S,OAvDzDksB,IA0D8BoE,EAAIroB,QAAQC,WAAQ,WAD5B5Q,EAAAA,EAAAA,IAIE,OA7DxBD,IAAA,EA2DwBF,MAAM,0BACNo1B,UAAQ5yB,EAAA6yB,UAAU7yB,EAAA0B,GAAGi1B,EAAIroB,QAAQC,Y,OA5DzDikB,MAAA3zB,EAAAA,EAAAA,IAAA,WAAAA,EAAAA,EAAAA,IAAA,c,SAkE8BhB,EAAAsP,OAAI,WAApBxP,EAAAA,EAAAA,IAAqD,OAlEnED,IAAA,EAkEoCk1B,UAAQ5yB,EAAA6yB,UAAU7yB,EAAA0B,GAAG7D,EAAAsP,Q,OAlEzDslB,MAAA5zB,EAAAA,EAAAA,IAAA,OAoEsBhB,EAAAqM,aAAU,WADlBvM,EAAAA,EAAAA,IAIE,OAvEhBD,IAAA,EAqEgBF,MAAM,yBACNo1B,UAAQ5yB,EAAA6yB,UAAU7yB,EAAA0B,GAAG7D,EAAAqM,c,OAtErC4oB,MAAAj0B,EAAAA,EAAAA,IAAA,kBAAAC,EAAA,K,GAqFA,QACE02B,WAAY,CAAEC,UAASA,GAAAA,GACvBlC,MAAO,CACL70B,YAAa,CACX+F,KAAM+uB,OACNC,UAAU,GAEZmD,QAAS,CACPnyB,KAAM+uB,OACNp1B,QAAS,IAEXN,YAAa,CACX2G,KAAMivB,QACNt1B,SAAS,IAGbu1B,MAAO,CAAC,eACR7T,KAAAA,CAAMyT,GACJ,MAAMltB,GAAQwtB,EAAAA,EAAAA,KAAS,IACdN,EAAMqD,SACXplB,GAAQ+hB,EAAM70B,cACd8S,GAAQ+hB,EAAM70B,aAAa0H,SAASmtB,EAAMqD,UAC1CplB,GAAQ+hB,EAAM70B,aAAa0H,SAASmtB,EAAMqD,SAAS1pB,KACjDsE,GAAQ+hB,EAAM70B,aAAa0H,SAASmtB,EAAMqD,SAAS1pB,KAAK7G,MACxD,KAGA8G,GAAO0mB,EAAAA,EAAAA,KAAS,IACbN,EAAMqD,SACXplB,GAAQ+hB,EAAM70B,cACd8S,GAAQ+hB,EAAM70B,aAAa0H,SAASmtB,EAAMqD,UAC1CplB,GAAQ+hB,EAAM70B,aAAa0H,SAASmtB,EAAMqD,SAAS1pB,KACjDsE,GAAQ+hB,EAAM70B,aAAa0H,SAASmtB,EAAMqD,SAAS1pB,KAAKC,KACxD,KAGAspB,GAAS5C,EAAAA,EAAAA,KAAS,IACfN,EAAMqD,SACXplB,GAAQ+hB,EAAM70B,cACd8S,GAAQ+hB,EAAM70B,aAAa0H,SAASmtB,EAAMqD,UAC1CplB,GAAQ+hB,EAAM70B,aAAa0H,SAASmtB,EAAMqD,SAAS1pB,KACjDsE,GAAQ+hB,EAAM70B,aAAa0H,SAASmtB,EAAMqD,SAAS1pB,KAAKE,IACxD,KAGAspB,GAAW7C,EAAAA,EAAAA,KAAS,IACjBN,EAAMqD,SACXplB,GAAQ+hB,EAAM70B,cACd8S,GAAQ+hB,EAAM70B,aAAa0H,SAASmtB,EAAMqD,UAC1CplB,GAAQ+hB,EAAM70B,aAAa0H,SAASmtB,EAAMqD,SAAS1pB,KACjDsE,GAAQ+hB,EAAM70B,aAAa0H,SAASmtB,EAAMqD,SAAS1pB,KAAKgd,MACxD,KAGAhgB,GAAa2pB,EAAAA,EAAAA,KAAS,IACnBN,EAAMqD,SACXplB,GAAQ+hB,EAAM70B,cACd8S,GAAQ+hB,EAAM70B,aAAa0H,SAASmtB,EAAMqD,UAC1CplB,GAAQ+hB,EAAM70B,aAAa0H,SAASmtB,EAAMqD,SAAS1pB,MACnDsE,GAAQ+hB,EAAM70B,aAAa0H,SAASmtB,EAAMqD,SAAS1pB,KAAKhD,WACtDsH,GAAQ+hB,EAAM70B,aAAa0H,SAASmtB,EAAMqD,SAAS1pB,KAAKhD,WACxD,KAGN,MAAO,CACLqpB,QACAltB,QACA8G,OACAspB,SACAC,WACAxsB,aAEJ,GCtJF,MAAM,IAA2B,QAAgB,GAAQ,CAAC,CAAC,SAAS,IAAQ,CAAC,YAAY,qBAEzF,U,wB5C2GA,IACE2sB,QAASC,GAAAA,EACTtB,WAAY,CACVuB,UAAS,GACTC,iBAAgB,GAChBC,qBAAoB,GACpBC,0BAAyB,GACzBC,uBAAsB,GACtBC,cAAa,KACbC,WAAU,GACVC,cAAa,GACbC,kBAAiB,GACjBC,iBAAgBA,IAElB1X,KAAAA,GACE,MAAM5iB,GAAQi3B,EAAAA,GAAAA,MACRvd,GAASuH,EAAAA,GAAAA,MACTpiB,GAAU07B,EAAAA,GAAAA,KACV/4B,GAAcmD,EAAAA,EAAAA,IAAI,YAClBvD,GAAcuD,EAAAA,EAAAA,KAAI,GAClB61B,GAAqB71B,EAAAA,EAAAA,IAAI,MAE/B,IAAI5C,GAAc4C,EAAAA,EAAAA,KAAI,GAClB1B,GAAe0B,EAAAA,EAAAA,KAAI,GAEvB,MAAMiQ,EAAa6lB,IACjBj5B,EAAY0Y,MAAQugB,CAAM,EAGtBp4B,EAAeA,KACnBrC,EAAMsE,OAAO,4BAA6B,IAC1Ce,EAAe0P,SACfvT,EAAY0Y,MAAQ,UAAU,EAG1B3X,EAAasN,IACjBxK,EAAemY,YAAY3N,GAC3B7P,EAAMsE,OAAO,uBAAwB,GAAG,EAGpC7B,EAAc2a,IAClB/X,EAAesnB,kBAAkBvP,GACjCpd,EAAMsE,OAAO,uBAAwB,GAAG,EAGpCe,EAAiB,IAAIsP,GACzBtS,EACAuS,EACA5U,EACAuC,GAGIlB,GAAYs1B,EAAAA,EAAAA,KAAS,IAClB32B,EAAMgE,MAAM4jB,iBAGfhnB,GAAc+1B,EAAAA,EAAAA,KAAS,IAEzBriB,IACAA,GAAQ9S,EAAY0Y,QACpB5F,GAAQ9S,EAAY0Y,OAAOhR,SAAS7H,EAAU6Y,QAC9C5F,GAAQ9S,EAAY0Y,OAAOhR,SAAS7H,EAAU6Y,OAAOlK,MACrDkb,MAAMC,QACJ7W,GAAQ9S,EAAY0Y,OAAOhR,SAAS7H,EAAU6Y,OAAOlK,KAAKC,SAKhEhQ,EAAAA,EAAAA,KACE,IAAMoB,EAAU6Y,QAChB,KAEI7Y,EAAU6Y,OACV5F,GAAQ9S,EAAY0Y,OAAOhR,SAAS7H,EAAU6Y,QAE5C,YADF5F,GAAQ9S,EAAY0Y,OAAOhR,SAAS7H,EAAU6Y,OAAO3S,OAGjDizB,EAAmBtgB,QACrB4Z,aAAa0G,EAAmBtgB,OAChCsgB,EAAmBtgB,MAAQ,MAE7BsgB,EAAmBtgB,MAAQJ,YAAW,KACpC1Y,EAAY8Y,OAAQ,CAAI,GACvB,KACL,IAIJ,MAAMjW,GAAgB0yB,EAAAA,EAAAA,KAAS,IACtB32B,EAAMgE,MAAMC,iBAGrBhE,EAAAA,EAAAA,KACE,IAAMgE,EAAciW,QACpB,KACE7U,EAAe2hB,eAAe,GAEhC,CAAE0T,MAAM,IAGV,MAAMC,GAAgBhE,EAAAA,EAAAA,KAAS,IACtB32B,EAAMgE,MAAM22B,iBAGrB16B,EAAAA,EAAAA,KACE,IAAM06B,EAAczgB,QACpB0gB,IACEv1B,EAAe2jB,sBAAsB4R,EAAO,GAE9C,CAAEF,MAAM,IAGV,MAAM92B,EAAmB,CACvB,CACEM,WAAY,UACZ22B,WAAY,IAAI76B,EAAMgE,MAAM4V,yBAC5B3Y,KAAM,2BAER,CACEiD,WAAY,SACZ22B,WAAY,IAAI76B,EAAMgE,MAAM4V,0BAC5B3Y,KAAM,0BAER,CACEiD,WAAY,WACZ22B,WAAY,IAAI76B,EAAMgE,MAAM4V,gCAC5B3Y,KAAM,6BAGR,CACEiD,WAAY,YACZ22B,WAAY,IAAI76B,EAAMgE,MAAM4V,kCAC5B3Y,KAAM,mCAGR,CACEiD,WAAY,WACZ22B,WAAY,IAAI76B,EAAMgE,MAAM4V,iCAC5B3Y,KAAM,kCAER,CACEiD,WAAY,WACZ22B,WAAY,IAAI76B,EAAMgE,MAAM4V,4BAC5B3Y,KAAM,6BAER,CACEiD,WAAY,WACZ22B,WAAY,IAAI76B,EAAMgE,MAAM4V,4BAC5B3Y,KAAM,6BAER,CACEiD,WAAY,WACZ22B,WAAY,IAAI76B,EAAMgE,MAAM4V,4BAC5B3Y,KAAM,6BAER,CACEiD,WAAY,WACZ22B,WAAY,IAAI76B,EAAMgE,MAAM4V,4BAC5B3Y,KAAM,6BAGR,CACEiD,WAAY,aACZ22B,WAAY,IAAI76B,EAAMgE,MAAM4V,8BAC5B3Y,KAAM,+BAGR,CACEiD,WAAY,YACZ22B,WAAY,IAAI76B,EAAMgE,MAAM4V,8BAC5B3Y,KAAM,8BAER,CACEiD,WAAY,QACZ22B,WAAY,IAAI76B,EAAMgE,MAAM4V,yBAC5B3Y,KAAM,yBAER,CACEiD,WAAY,QACZ22B,WAAY,IAAI76B,EAAMgE,MAAM4V,yBAC5B3Y,KAAM,0BAER,CACEiD,WAAY,QACZ22B,WAAY,IAAI76B,EAAMgE,MAAM4V,yBAC5B3Y,KAAM,0BAER,CACEiD,WAAY,SACZ22B,WAAY,IAAI76B,EAAMgE,MAAM4V,0BAC5B3Y,KAAM,2BAER,CACEiD,WAAY,SACZ22B,WAAY,IAAI76B,EAAMgE,MAAM4V,0BAC5B3Y,KAAM,2BAER,CACEiD,WAAY,QACZ22B,WAAY,IAAI76B,EAAMgE,MAAM4V,yBAC5B3Y,KAAM,0BAGR,CACEiD,WAAY,OACZ22B,WAAY,IAAI76B,EAAMgE,MAAM4V,wBAC5B3Y,KAAM,yBAGR,CACEiD,WAAY,OACZ22B,WAAY,IAAI76B,EAAMgE,MAAM4V,wBAC5B3Y,KAAM,yBAER,CACEiD,WAAY,SACZ22B,WAAY,IAAI76B,EAAMgE,MAAM4V,+BAC5B3Y,KAAM,gCAER,CACEiD,WAAY,mBACZ22B,WAAY,IAAI76B,EAAMgE,MAAM4V,oCAC5B3Y,KAAM,qCAER,CACEiD,WAAY,OACZ22B,WAAY,IAAI76B,EAAMgE,MAAM4V,4BAC5B3Y,KAAM,8BAIV,SAASmD,EAAwBP,GAC/B,IAAIb,EAAOa,EAAOg3B,WAClB/gB,YAAW,KACL9W,EAAK83B,MAAM,KAAKC,QAAU,GAAG/6B,EAAMgE,MAAM4V,aAC3C/a,EAAQg4B,KAAK,yBAA0B,KAEvCh4B,EAAQg4B,KAAK,yBAA0B7zB,EAAK83B,MAAM,KAAKC,OACvDrhB,EAAOC,QAAQ,CAAE3W,KAAMA,KAEzB0W,EAAO5T,KAAK,CAAE9C,QAAO,GACpB,IACL,CAEA,MAAMhB,GAAqB20B,EAAAA,EAAAA,KAAS,IAC3B32B,EAAMgE,MAAMgZ,uBAGf/a,GAAe00B,EAAAA,EAAAA,KAAS,IACrB32B,EAAMgE,MAAMuZ,qBAGf2B,GAAUyX,EAAAA,EAAAA,KAAS,IAChB32B,EAAMgE,MAAMkb,UASrB,SAASxd,IACH84B,EAAmBtgB,QACrB4Z,aAAa0G,EAAmBtgB,OAChCsgB,EAAmBtgB,MAAQ,MAE7B9Y,EAAY8Y,OAAQ,EACpBsgB,EAAmBtgB,MAAQJ,YAAW,KACpC9Z,EAAM2a,SAAS,uBAAwB,GAAG,GACzC,IACL,CAEA,SAASrX,IACPL,EAAaiX,OAAQ,CACvB,CAEA,SAASpV,IACP7B,EAAaiX,OAAQ,CACvB,CAEA,SAAS9W,IACPrB,EAAYmY,OAAQ,CACtB,CAEA,SAASrX,IACPd,EAAYmY,OAAQ,CACtB,CAEA,SAAS8gB,EAAiBh4B,GACX,KAATA,EACFX,IAEAgD,EAAeyiB,oBAAoB9kB,EAEvC,CAeA,SAASL,EAAY7E,GACnBuH,EAAe1C,YACb7E,EAAKqO,aACLrO,EAAKwO,OAASxO,EAAKwO,OAAS,KAEhC,CACA,SAAStH,EAAuBuE,GAC9BvJ,EAAM2a,SAAS,uBAAwB,IACvCtV,EAAekX,cAAchT,EAC/B,CAEA,OAlEAtJ,EAAAA,EAAAA,KACE,IAAMif,EAAQhF,QACd,KACE7U,EAAe4S,eAAe,KAuClCgjB,EAAAA,EAAAA,KAAU,KACR51B,EAAeud,QACf/jB,EAAQC,GAAG,yBAA0Bk8B,EAAiB,KAGxDE,EAAAA,EAAAA,KAAgB,KACd71B,EAAeiU,UACXkhB,EAAmBtgB,OACrB4Z,aAAa0G,EAAmBtgB,OAElCrb,EAAQO,IAAI,yBAA0B47B,EAAiB,IAclD,CACLx5B,cACAa,eACAhB,YACAD,cACAM,aACAa,aACAE,cACAE,cACAqC,yBACAK,iBACArD,qBACAC,eACA6C,gBACA1B,cACAP,eACAS,eACAvB,cACAkB,eACArC,cACAqD,gBACA02B,gBACA/2B,mBACAQ,0BAEJ,G6CtcF,MAAM,IAA2B,QAAgB,GAAQ,CAAC,CAAC,SAASgiB,GAAQ,CAAC,YAAY,qBAEzF,S","sources":["webpack://surface/./src/mixins/ScrollWatcher.js","webpack://surface/./src/modules/familyExplorer/FamilyExplorer.vue","webpack://surface/./node_modules/@babylonjs/core/Legacy/legacy.js","webpack://surface/./src/js/webgl/famExpMeshOverlay.js","webpack://surface/./src/modules/familyExplorer/devicesData/laptop4.js","webpack://surface/./src/modules/familyExplorer/devicesData/laptop7.js","webpack://surface/./src/modules/familyExplorer/devicesData/laptop6.js","webpack://surface/./src/modules/familyExplorer/devicesData/laptop5.js","webpack://surface/./src/modules/familyExplorer/devicesData/laptopGo3.js","webpack://surface/./src/modules/familyExplorer/devicesData/laptopGo.js","webpack://surface/./src/modules/familyExplorer/devicesData/go3.js","webpack://surface/./src/modules/familyExplorer/devicesData/go4.js","webpack://surface/./src/modules/familyExplorer/devicesData/pro8.js","webpack://surface/./src/modules/familyExplorer/devicesData/pro10.js","webpack://surface/./src/modules/familyExplorer/devicesData/pro11new.js","webpack://surface/./src/modules/familyExplorer/devicesData/pro9.js","webpack://surface/./src/modules/familyExplorer/devicesData/studio.js","webpack://surface/./src/modules/familyExplorer/devicesData/laptopStudio2.js","webpack://surface/./src/modules/familyExplorer/devicesData/laptopStudio.js","webpack://surface/./src/modules/familyExplorer/devicesData/headphones.js","webpack://surface/./src/modules/familyExplorer/devicesData/proFlexKeyboard.js","webpack://surface/./src/modules/familyExplorer/devicesData/earbuds.js","webpack://surface/./src/modules/familyExplorer/devicesData/hubs3.js","webpack://surface/./src/modules/familyExplorer/devicesData/hubs.js","webpack://surface/./src/modules/familyExplorer/devicesData/proX.js","webpack://surface/./src/modules/familyExplorer/devicesData/duo2.js","webpack://surface/./src/modules/familyExplorer/familyExplorer-data.js","webpack://surface/./src/modules/familyExplorer/familyExplorer-main.js","webpack://surface/./src/components/FamilyExplorerOverview.vue","webpack://surface/./src/components/FamilyExplorerOverview.vue?f862","webpack://surface/./src/components/FamilyExplorerDetail.vue","webpack://surface/./src/components/FamilyExplorerDetail.vue?f773","webpack://surface/./src/modules/familyExplorer/FamilyExplorerBreadcrumbs.vue","webpack://surface/./src/modules/familyExplorer/FamilyExplorerBreadcrumbs.vue?9fb1","webpack://surface/./src/components/common/Compatibility.vue","webpack://surface/./src/components/common/Compatibility.vue?53d1","webpack://surface/./src/components/common/Disclaimer.vue","webpack://surface/./src/components/common/Disclaimer.vue?c851","webpack://surface/./src/modules/familyExplorer/FamilyExplorer_UI.vue","webpack://surface/./src/modules/familyExplorer/FamilyExplorer_UI.vue?b0b7","webpack://surface/./src/modules/familyExplorer/FamilyExplorerDev.vue","webpack://surface/./src/modules/familyExplorer/FamilyExplorerDev.vue?ebf2","webpack://surface/./src/components/MobileDetailsNav.vue","webpack://surface/./src/components/MobileDetailsNav.vue?9cf4","webpack://surface/./src/modules/familyExplorer/XrayModal.vue","webpack://surface/./src/modules/familyExplorer/XrayModal.vue?b010","webpack://surface/./src/modules/familyExplorer/FamilyExplorer.vue?71b4"],"sourcesContent":["import { store } from \"../../src/data/store.js\";\r\nimport { emitter } from \"@/js/emitter\";\r\n\r\nexport default {\r\n data() {\r\n return {\r\n scrollElement: null,\r\n meshContainer: null,\r\n pageWidth: 0,\r\n iframe: null,\r\n canvas: null,\r\n };\r\n },\r\n methods: {\r\n handleMeshTranslation(val) {\r\n if (val === \"add\") {\r\n this.scrollElement = document.getElementById(\"scrollContainer\");\r\n this.pageWidth = document.documentElement.scrollWidth;\r\n let scroll = false;\r\n\r\n if (this.scrollElement) {\r\n emitter.on(\"globalResize\", this.handleResize);\r\n if (this.pageWidth < 600) {\r\n this.scrollElement.scroll(this.pageWidth / 0.96, 0);\r\n scroll = true;\r\n } else if (this.pageWidth < 900) {\r\n this.scrollElement.scroll(this.pageWidth / 2, 0);\r\n scroll = true;\r\n } else if (this.pageWidth < 1300) {\r\n this.scrollElement.scroll(this.pageWidth / 3, 0);\r\n scroll = true;\r\n } else {\r\n this.meshContainer = document.getElementById(\"meshOverlay\");\r\n if (this.meshContainer) {\r\n this.meshContainer.style.transform = \"translateX(0px)\";\r\n }\r\n }\r\n if (scroll) {\r\n this.scrollElement.addEventListener(\"scroll\", this.handleScroll);\r\n }\r\n }\r\n } else {\r\n if (this.scrollElement) {\r\n emitter.off(\"globalResize\", this.handleResize);\r\n this.scrollElement.removeEventListener(\"scroll\", this.handleScroll);\r\n }\r\n }\r\n },\r\n handleResize() {\r\n this.scrollElement = document.getElementById(\"scrollContainer\");\r\n this.iframe = document.getElementsByClassName(\"css-container\");\r\n this.pageWidth = document.documentElement.scrollWidth;\r\n this.meshContainer = document.getElementById(\"meshOverlay\");\r\n\r\n let tickingResize = false;\r\n let scrollLeft;\r\n\r\n if (!tickingResize) {\r\n window.requestAnimationFrame(() => {\r\n if (scrollLeft !== this.scrollElement.scrollLeft) {\r\n scrollLeft = this.scrollElement.scrollLeft;\r\n if (this.meshContainer) {\r\n this.meshContainer.style.transform = `translateX(${-scrollLeft}px)`;\r\n }\r\n if (this.iframe.length) {\r\n this.iframe.forEach(element => {\r\n element.style.transform = `translateX(${-scrollLeft}px)`;\r\n });\r\n }\r\n }\r\n\r\n this.pageWidth = document.documentElement.scrollWidth;\r\n\r\n if (this.pageWidth < 1300) {\r\n this.scrollElement.scroll(this.pageWidth / 3, 0);\r\n if (this.pageWidth < 600) {\r\n this.scrollElement.scroll(this.pageWidth / 0.96, 0);\r\n } else if (this.pageWidth < 900) {\r\n this.scrollElement.scroll(this.pageWidth / 2, 0);\r\n }\r\n } else {\r\n this.scrollElement.scroll(0, 0);\r\n if (this.meshContainer) {\r\n this.meshContainer.style.transform = \"translateX(0px)\";\r\n }\r\n }\r\n tickingResize = false;\r\n });\r\n tickingResize = true;\r\n }\r\n },\r\n handleScroll() {\r\n this.scrollElement = document.getElementById(\"scrollContainer\");\r\n this.meshContainer = document.getElementById(\"meshOverlay\");\r\n this.iframe = document.getElementsByClassName(\"css-container\");\r\n this.pageWidth = document.documentElement.scrollWidth;\r\n let ticking = false;\r\n let scrollLeft;\r\n\r\n if (!ticking) {\r\n window.requestAnimationFrame(() => {\r\n if (scrollLeft !== this.scrollElement.scrollLeft) {\r\n scrollLeft = this.scrollElement.scrollLeft;\r\n if (this.meshContainer) {\r\n this.meshContainer.style.transform = `translateX(${-scrollLeft}px)`;\r\n }\r\n if (this.iframe.length) {\r\n this.iframe.forEach(element => {\r\n element.style.transform = `translateX(${-scrollLeft}px)`;\r\n });\r\n }\r\n }\r\n ticking = false;\r\n });\r\n ticking = true;\r\n }\r\n },\r\n },\r\n mounted() {\r\n store.watch(\r\n () => store.getters.pageIndex,\r\n () => {\r\n this.scrollElement.scroll(this.scrollElement.scrollLeft + 2, 0);\r\n }\r\n );\r\n this.handleMeshTranslation(\"add\");\r\n },\r\n unmounted() {\r\n this.handleMeshTranslation(\"remove\");\r\n },\r\n};\r\n","<template>\r\n <div\r\n class=\"page\"\r\n :class=\"{\r\n 'page--largeXrayOpen': isLargeXray,\r\n }\"\r\n >\r\n <LoadingScreen />\r\n <div class=\"page__overlay-fade\"></div>\r\n <transition name=\"xray-modal\">\r\n <XrayModal\r\n v-if=\"isModalOpen && xrayModal\"\r\n :modal-id=\"xrayModal\"\r\n :current-view=\"currentView\"\r\n :is-large-xray=\"isLargeXray\"\r\n @closeModal=\"closeModal\"\r\n />\r\n </transition>\r\n <div\r\n class=\"page__family-explorer-container\"\r\n :class=\"{\r\n 'page__family-explorer-container--active': isModalOpen && xrayModal,\r\n }\"\r\n >\r\n <FamilyExplorerOverview v-show=\"currentView === 'overview'\" />\r\n <FamilyExplorerDetail\r\n v-if=\"currentView !== 'overview'\"\r\n :current-view=\"currentView\"\r\n :showDetails=\"showDetails\"\r\n :current-posture-mode=\"currentPostureMode\"\r\n :current-model=\"currentModel\"\r\n @back=\"showOverview()\"\r\n @updateMode=\"updateMode\"\r\n @updateModel=\"updateModel\"\r\n @updateColor=\"updateColor\"\r\n @closeDetails=\"closeDetails\"\r\n />\r\n <MobileDetailsNav\r\n v-if=\"$route.path != '/' && !showDetails && !showExplorer\"\r\n @openDetails=\"openDetails\"\r\n @openExplorer=\"openExplorer\"\r\n />\r\n <div class=\"page__canvas-container\" id=\"scrollContainer\">\r\n <canvas class=\"page__canvas\" id=\"renderCanvas\"></canvas>\r\n <div v-if=\"currentView === 'overview'\" class=\"sr-only\">\r\n <template v-for=\"device in screenReaderMenu\" :key=\"device._id\">\r\n <button\r\n v-if=\"$store.state?.activeDevices[device.deviceCode]\"\r\n @click=\"ScreenReaderMenuClicked(device)\"\r\n @focus=\"$store.commit('updateFocusedDevice', device.deviceCode)\"\r\n @blur=\"$store.commit('updateFocusedDevice', null)\"\r\n >\r\n {{\r\n $t(\"accessibility.deviceExplorer\", {\r\n device: $t(device.name),\r\n })\r\n }}\r\n </button>\r\n </template>\r\n </div>\r\n </div>\r\n <FamilyExplorerUI\r\n ref=\"ui-container\"\r\n v-show=\"currentView !== 'overview'\"\r\n />\r\n <FamilyExplorerBreadcrumbs\r\n v-show=\"currentView !== 'overview'\"\r\n :current-view=\"currentView\"\r\n :show-explorer=\"showExplorer\"\r\n @close-explorer=\"closeExplorer\"\r\n @animateCameraToTooltip=\"animateCameraToTooltip\"\r\n />\r\n <Compatibility\r\n v-show=\"currentView !== 'overview'\"\r\n :current-view=\"currentView\"\r\n :current-model=\"currentModel\"\r\n />\r\n <Disclaimer :current-view=\"currentView\" :current-model=\"currentModel\" />\r\n <FamilyExplorerDev\r\n @logCam=\"\r\n () => {\r\n familyExplorer.logCamera();\r\n }\r\n \"\r\n @copyCam=\"\r\n () => {\r\n familyExplorer.logCamera(true);\r\n }\r\n \"\r\n />\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport { onMounted, ref, onBeforeUnmount, computed, watch } from \"vue\";\r\n\r\nimport FamilyExplorer from \"@/modules/familyExplorer/familyExplorer-main\";\r\n\r\nimport LoadingScreen from \"@/components/LoadingScreen\";\r\n\r\nimport FamilyExplorerOverview from \"@/components/FamilyExplorerOverview\";\r\nimport FamilyExplorerDetail from \"@/components/FamilyExplorerDetail\";\r\nimport FamilyExplorerBreadcrumbs from \"@/modules/familyExplorer/FamilyExplorerBreadcrumbs\";\r\nimport Compatibility from \"@/components/common/Compatibility\";\r\nimport Disclaimer from \"@/components/common/Disclaimer\";\r\nimport FamilyExplorerUI from \"@/modules/familyExplorer/FamilyExplorer_UI\";\r\nimport FamilyExplorerDev from \"@/modules/familyExplorer/FamilyExplorerDev\";\r\nimport MobileDetailsNav from \"@/components/MobileDetailsNav\";\r\nimport { devices } from \"./familyExplorer-data\";\r\nimport { useStore } from \"vuex\";\r\nimport { useRouter } from \"vue-router\";\r\nimport XrayModal from \"@/modules/familyExplorer/XrayModal\";\r\nimport Watchers from \"@/mixins/ScrollWatcher.js\";\r\nimport useEmitter from \"@/js/composables/useEmitter\";\r\n\r\nexport default {\r\n extends: Watchers,\r\n components: {\r\n XrayModal,\r\n FamilyExplorerUI,\r\n FamilyExplorerDetail,\r\n FamilyExplorerBreadcrumbs,\r\n FamilyExplorerOverview,\r\n LoadingScreen,\r\n Disclaimer,\r\n Compatibility,\r\n FamilyExplorerDev,\r\n MobileDetailsNav,\r\n },\r\n setup() {\r\n const store = useStore();\r\n const router = useRouter();\r\n const emitter = useEmitter();\r\n const currentView = ref(\"overview\");\r\n const isModalOpen = ref(false);\r\n const toggleModalTimeout = ref(null);\r\n\r\n let showDetails = ref(false);\r\n let showExplorer = ref(false);\r\n\r\n const showDetail = detail => {\r\n currentView.value = detail;\r\n };\r\n\r\n const showOverview = () => {\r\n store.commit(\"updateFamExpDeviceLoading\", \"\");\r\n familyExplorer.goBack();\r\n currentView.value = \"overview\";\r\n };\r\n\r\n const updateMode = mode => {\r\n familyExplorer.animateMode(mode);\r\n store.commit(\"updateCurrentTooltip\", \"\");\r\n };\r\n\r\n const updateModel = model => {\r\n familyExplorer.changeActiveModel(model);\r\n store.commit(\"updateCurrentTooltip\", \"\");\r\n };\r\n\r\n const familyExplorer = new FamilyExplorer(\r\n showOverview,\r\n showDetail,\r\n store,\r\n updateMode\r\n );\r\n\r\n const xrayModal = computed(() => {\r\n return store.state.currentTooltip;\r\n });\r\n\r\n const isLargeXray = computed(() => {\r\n return (\r\n devices &&\r\n devices[currentView.value] &&\r\n devices[currentView.value].tooltips[xrayModal.value] &&\r\n devices[currentView.value].tooltips[xrayModal.value].xray &&\r\n Array.isArray(\r\n devices[currentView.value].tooltips[xrayModal.value].xray.body\r\n )\r\n );\r\n });\r\n\r\n watch(\r\n () => xrayModal.value,\r\n () => {\r\n if (\r\n xrayModal.value &&\r\n devices[currentView.value].tooltips[xrayModal.value] &&\r\n devices[currentView.value].tooltips[xrayModal.value].type ===\r\n \"magnify\"\r\n ) {\r\n if (toggleModalTimeout.value) {\r\n clearTimeout(toggleModalTimeout.value);\r\n toggleModalTimeout.value = null;\r\n }\r\n toggleModalTimeout.value = setTimeout(() => {\r\n isModalOpen.value = true;\r\n }, 100);\r\n }\r\n }\r\n );\r\n\r\n const activeDevices = computed(() => {\r\n return store.state.activeDevices;\r\n });\r\n\r\n watch(\r\n () => activeDevices.value,\r\n () => {\r\n familyExplorer.callGrayedOut();\r\n },\r\n { deep: true }\r\n );\r\n\r\n const focusedDevice = computed(() => {\r\n return store.state.focusedDevice;\r\n });\r\n\r\n watch(\r\n () => focusedDevice.value,\r\n newVal => {\r\n familyExplorer.callSelectedGrayedOut(newVal);\r\n },\r\n { deep: true }\r\n );\r\n\r\n const screenReaderMenu = [\r\n {\r\n deviceCode: \"shub385\",\r\n devicePath: `/${store.state.actualLang}/device/hub3`,\r\n name: \"general.menu.hubs3.name\",\r\n },\r\n {\r\n deviceCode: \"shub2s\",\r\n devicePath: `/${store.state.actualLang}/device/hub2s`,\r\n name: \"general.menu.hubs.name\",\r\n },\r\n {\r\n deviceCode: \"sstudio2\",\r\n devicePath: `/${store.state.actualLang}/device/studio2plus`,\r\n name: \"general.menu.studio2.name\",\r\n },\r\n // New change for 9/21 ----\r\n {\r\n deviceCode: \"slaptops2\",\r\n devicePath: `/${store.state.actualLang}/device/laptopStudio2`,\r\n name: \"general.menu.laptopStudio2.name\",\r\n },\r\n // ----\r\n {\r\n deviceCode: \"slaptops\",\r\n devicePath: `/${store.state.actualLang}/device/laptopStudio`,\r\n name: \"general.menu.laptopStudio.name\",\r\n },\r\n {\r\n deviceCode: \"slaptop4\",\r\n devicePath: `/${store.state.actualLang}/device/laptop4`,\r\n name: \"general.menu.laptop4.name\",\r\n },\r\n {\r\n deviceCode: \"slaptop5\",\r\n devicePath: `/${store.state.actualLang}/device/laptop5`,\r\n name: \"general.menu.laptop5.name\",\r\n },\r\n {\r\n deviceCode: \"slaptop6\",\r\n devicePath: `/${store.state.actualLang}/device/laptop6`,\r\n name: \"general.menu.laptop6.name\",\r\n },\r\n {\r\n deviceCode: \"slaptop7\",\r\n devicePath: `/${store.state.actualLang}/device/laptop7`,\r\n name: \"general.menu.laptop7.name\",\r\n },\r\n // New change for 9/21 ----\r\n {\r\n deviceCode: \"slaptopgo3\",\r\n devicePath: `/${store.state.actualLang}/device/laptopGo3`,\r\n name: \"general.menu.laptopGo3.name\",\r\n },\r\n // ----\r\n {\r\n deviceCode: \"slaptopgo\",\r\n devicePath: `/${store.state.actualLang}/device/laptopGo2`,\r\n name: \"general.menu.laptopGo.name\",\r\n },\r\n {\r\n deviceCode: \"sduo2\",\r\n devicePath: `/${store.state.actualLang}/device/duo2`,\r\n name: \"general.menu.duo.name\",\r\n },\r\n {\r\n deviceCode: \"sprox\",\r\n devicePath: `/${store.state.actualLang}/device/proX`,\r\n name: \"general.menu.proX.name\",\r\n },\r\n {\r\n deviceCode: \"spro9\",\r\n devicePath: `/${store.state.actualLang}/device/pro9`,\r\n name: \"general.menu.pro9.name\",\r\n },\r\n {\r\n deviceCode: \"spro10\",\r\n devicePath: `/${store.state.actualLang}/device/pro10`,\r\n name: \"general.menu.pro10.name\",\r\n },\r\n {\r\n deviceCode: \"spro11\",\r\n devicePath: `/${store.state.actualLang}/device/pro11`,\r\n name: \"general.menu.pro11.name\",\r\n },\r\n {\r\n deviceCode: \"spro8\",\r\n devicePath: `/${store.state.actualLang}/device/pro8`,\r\n name: \"general.menu.pro8.name\",\r\n },\r\n // New change for 9/21 ----\r\n {\r\n deviceCode: \"sgo4\",\r\n devicePath: `/${store.state.actualLang}/device/go4`,\r\n name: \"general.menu.go4.name\",\r\n },\r\n // ----\r\n {\r\n deviceCode: \"sgo3\",\r\n devicePath: `/${store.state.actualLang}/device/go3`,\r\n name: \"general.menu.go3.name\",\r\n },\r\n {\r\n deviceCode: \"shead2\",\r\n devicePath: `/${store.state.actualLang}/device/headphones`,\r\n name: \"general.menu.headphones.name\",\r\n },\r\n {\r\n deviceCode: \"sproFlexKeyboard\",\r\n devicePath: `/${store.state.actualLang}/device/proFlexKeyboard`,\r\n name: \"general.menu.proFlexKeyboard.name\",\r\n },\r\n {\r\n deviceCode: \"sear\",\r\n devicePath: `/${store.state.actualLang}/device/earbuds`,\r\n name: \"general.menu.earbuds.name\",\r\n },\r\n ];\r\n\r\n function ScreenReaderMenuClicked(device) {\r\n let path = device.devicePath;\r\n setTimeout(() => {\r\n if (path.split(\"/\").pop() === `${store.state.actualLang}`) {\r\n emitter.emit(\"famExpGoToExplorerPath\", \"\");\r\n } else {\r\n emitter.emit(\"famExpGoToExplorerPath\", path.split(\"/\").pop());\r\n router.replace({ path: path });\r\n }\r\n router.push({ path });\r\n }, 200);\r\n }\r\n\r\n const currentPostureMode = computed(() => {\r\n return store.state.famExpCurrentPosture;\r\n });\r\n\r\n const currentModel = computed(() => {\r\n return store.state.famExpCurrentModel;\r\n });\r\n\r\n const quality = computed(() => {\r\n return store.state.quality;\r\n });\r\n watch(\r\n () => quality.value,\r\n () => {\r\n familyExplorer.updateQuality();\r\n }\r\n );\r\n\r\n function closeModal() {\r\n if (toggleModalTimeout.value) {\r\n clearTimeout(toggleModalTimeout.value);\r\n toggleModalTimeout.value = null;\r\n }\r\n isModalOpen.value = false;\r\n toggleModalTimeout.value = setTimeout(() => {\r\n store.dispatch(\"updateCurrentTooltip\", \"\");\r\n }, 300);\r\n }\r\n\r\n function openExplorer() {\r\n showExplorer.value = true;\r\n }\r\n\r\n function closeExplorer() {\r\n showExplorer.value = false;\r\n }\r\n\r\n function openDetails() {\r\n showDetails.value = true;\r\n }\r\n\r\n function closeDetails() {\r\n showDetails.value = false;\r\n }\r\n\r\n function goToExplorerPath(path) {\r\n if (path === \"\") {\r\n showOverview();\r\n } else {\r\n familyExplorer.openDeviceFromRoute(path);\r\n }\r\n }\r\n\r\n onMounted(() => {\r\n familyExplorer.setup();\r\n emitter.on(\"famExpGoToExplorerPath\", goToExplorerPath);\r\n });\r\n\r\n onBeforeUnmount(() => {\r\n familyExplorer.dispose();\r\n if (toggleModalTimeout.value) {\r\n clearTimeout(toggleModalTimeout.value);\r\n }\r\n emitter.off(\"famExpGoToExplorerPath\", goToExplorerPath);\r\n });\r\n\r\n function updateColor(data) {\r\n familyExplorer.updateColor(\r\n data.colorChanges,\r\n data.meshes ? data.meshes : null\r\n );\r\n }\r\n function animateCameraToTooltip(cameraData) {\r\n store.dispatch(\"updateCurrentTooltip\", \"\");\r\n familyExplorer.animateCamera(cameraData);\r\n }\r\n\r\n return {\r\n currentView,\r\n showOverview,\r\n xrayModal,\r\n isModalOpen,\r\n closeModal,\r\n updateMode,\r\n updateModel,\r\n updateColor,\r\n animateCameraToTooltip,\r\n familyExplorer,\r\n currentPostureMode,\r\n currentModel,\r\n closeExplorer,\r\n openDetails,\r\n closeDetails,\r\n openExplorer,\r\n showDetails,\r\n showExplorer,\r\n isLargeXray,\r\n activeDevices,\r\n focusedDevice,\r\n screenReaderMenu,\r\n ScreenReaderMenuClicked,\r\n };\r\n },\r\n};\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n@import \"../../styles/shared\";\r\n</style>\r\n\r\n<style lang=\"scss\" scoped>\r\n:deep(.buttonCircularOverlay) {\r\n &,\r\n * {\r\n pointer-events: none !important;\r\n touch-action: none !important;\r\n }\r\n}\r\n.page {\r\n &__overlay-fade {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100vw;\r\n height: 100vh;\r\n background: #e6e6e6;\r\n z-index: 98;\r\n opacity: 1;\r\n pointer-events: none;\r\n touch-action: none;\r\n }\r\n &__family-explorer-container {\r\n transition: all 0.25s ease-in-out;\r\n transform: translateX(0);\r\n &--active {\r\n transition: all 0.25s 0.015s ease-in-out;\r\n transform: translateX(clamp(-650px, -28vw, -375px));\r\n }\r\n }\r\n\r\n &--largeXrayOpen .page__family-explorer-container--active {\r\n transform: translateX(clamp(-900px, -100vw, -500px));\r\n }\r\n}\r\n</style>\r\n","import * as Babylon from \"../index.js\";\r\nimport * as DebugImport from \"../Debug/index.js\";\r\n/**\r\n * Legacy support, defining window.BABYLON (global variable).\r\n *\r\n * This is the entry point for the UMD module.\r\n * The entry point for a future ESM package should be index.ts\r\n */\r\nvar globalObject = (typeof global !== 'undefined') ? global : ((typeof window !== 'undefined') ? window : undefined);\r\nif (typeof globalObject !== \"undefined\") {\r\n globalObject.BABYLON = BABYLON;\r\n globalObject.BABYLON = globalObject.BABYLON || {};\r\n var BABYLON = globalObject.BABYLON;\r\n BABYLON.Debug = BABYLON.Debug || {};\r\n var keys = [];\r\n for (var key in DebugImport) {\r\n BABYLON.Debug[key] = DebugImport[key];\r\n keys.push(key);\r\n }\r\n for (var key in Babylon) {\r\n BABYLON[key] = Babylon[key];\r\n }\r\n}\r\nexport * from \"../index.js\";\r\nexport var Debug = {\r\n AxesViewer: DebugImport.AxesViewer,\r\n BoneAxesViewer: DebugImport.BoneAxesViewer,\r\n PhysicsViewer: DebugImport.PhysicsViewer,\r\n SkeletonViewer: DebugImport.SkeletonViewer,\r\n};\r\n//# sourceMappingURL=legacy.js.map","import { Matrix, Vector3 } from \"@babylonjs/core\";\r\n\r\n// A class to track objects position in 3D and render dom element in corresponding 2D position on the screen\r\n// Items are a dict/object of metadata items which describe the type of UI element to overlay (button+label, icon/text)\r\n\r\nexport default class MeshOverlay {\r\n constructor({ scene, camera, renderW, renderH, loadedMeshes, items, store }) {\r\n this.scene = scene;\r\n this.camera = camera;\r\n this.renderW = renderW;\r\n this.renderH = renderH;\r\n this.loadedMeshes = loadedMeshes;\r\n this.items = items;\r\n this.store = store;\r\n\r\n // ***********************\r\n // TODO: optimize this!\r\n // ***********************\r\n\r\n // eslint-disable-next-line no-unused-vars\r\n let itemsToStore = {};\r\n let hardwareScalingLevel = this.scene.getEngine().getHardwareScalingLevel();\r\n for (const [key, item] of Object.entries(this.items)) {\r\n let projectionDeps = {\r\n scene,\r\n camera,\r\n renderW,\r\n renderH,\r\n hardwareScalingLevel,\r\n };\r\n\r\n // Either take a meshId to track, or use explicitly supplied 3D point\r\n if (!item.position) {\r\n const mesh = this.loadedMeshes.find(mesh => mesh.id === key);\r\n if (!mesh) {\r\n return; //TOFIX\r\n }\r\n projectionDeps = {\r\n ...projectionDeps,\r\n mesh,\r\n offset: item.offset,\r\n };\r\n } else if (item.position) {\r\n projectionDeps = {\r\n ...projectionDeps,\r\n position: item.position,\r\n };\r\n }\r\n\r\n itemsToStore[key] = {\r\n id: key,\r\n type: item.type,\r\n position: this.project3Dto2D(projectionDeps),\r\n data: item.data,\r\n };\r\n }\r\n this.store.commit(\"meshOverlayUpdateItems\", itemsToStore);\r\n }\r\n\r\n update() {\r\n const { scene, camera, renderW, renderH } = this;\r\n\r\n let itemsPosToStore = {};\r\n let hardwareScalingLevel = this.scene.getEngine().getHardwareScalingLevel();\r\n for (const [key, item] of Object.entries(this.items)) {\r\n let projectionDeps = {\r\n scene,\r\n camera,\r\n renderW,\r\n renderH,\r\n hardwareScalingLevel,\r\n };\r\n\r\n const mesh = this.loadedMeshes.find(mesh => mesh.id === key);\r\n\r\n if (!mesh) {\r\n //console.log(\"key not found\",key);\r\n return; //TOFIX\r\n }\r\n projectionDeps = { ...projectionDeps, mesh, offset: item.offset };\r\n\r\n itemsPosToStore[key] = this.project3Dto2D(projectionDeps);\r\n }\r\n this.store.commit(\"meshOverlayUpdateItemsPos\", itemsPosToStore);\r\n }\r\n\r\n reset() {\r\n this.store.commit(\"meshOverlayResetItems\");\r\n }\r\n\r\n project3Dto2D({\r\n scene,\r\n camera,\r\n renderW,\r\n renderH,\r\n hardwareScalingLevel,\r\n mesh,\r\n offset,\r\n position,\r\n }) {\r\n // .centerWorld seems to give a slightly more convincing result than mesh.absolutePosition\r\n let position3D;\r\n\r\n if (mesh) {\r\n position3D = mesh.getBoundingInfo().boundingBox.centerWorld.add(offset);\r\n } else if (position) {\r\n position3D = position;\r\n }\r\n\r\n let pos = Vector3.Project(\r\n position3D,\r\n Matrix.Identity(),\r\n scene.getTransformMatrix(),\r\n camera.viewport.toGlobal(renderW, renderH)\r\n );\r\n\r\n return {\r\n x: pos.x * hardwareScalingLevel,\r\n y: pos.y * hardwareScalingLevel,\r\n };\r\n }\r\n}\r\n","export default {\r\n name: \"Surface Laptop 4\",\r\n displayName: \"general.menu.laptop4.name\",\r\n filename: \"03_Laptop_3_E_Export14-processed.gltf\",\r\n defaultPostureMode: \"thirteen\",\r\n initialCameraTarget: [0, 1.5, 3.2],\r\n cameraRadius: {\r\n default: 13,\r\n lowerLimit: 9,\r\n upperLimit: 13,\r\n },\r\n // light: {\r\n // position: [0, 15, 4],\r\n // direction: [-0.5, -1, 0.3],\r\n // intensity: 3.1,\r\n // },\r\n tooltips: {\r\n \"09_Battery\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptop4.data.tooltips.09_Battery.title\",\r\n description: \"devices.laptop4.data.tooltips.09_Battery.description\",\r\n ranges: [330, 210],\r\n top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-3.7741560245697863, 9.042255213513556, -6.692933467704672],\r\n },\r\n },\r\n },\r\n \"04_Camera_A\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptop4.data.tooltips.04_Camera_A.title\",\r\n description: \"devices.laptop4.data.tooltips.04_Camera_A.description\",\r\n ranges: [10, 170],\r\n },\r\n cameraData: {\r\n position: {\r\n values: [0.02210430189546551, 10.848187076954034, -5.833875678473073],\r\n },\r\n },\r\n },\r\n \"06_Connection_Ports\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptop4.data.tooltips.06_Connection_Ports.title\",\r\n description:\r\n \"devices.laptop4.data.tooltips.06_Connection_Ports.description\",\r\n ranges: [110, 240],\r\n top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-12.735498117906621, 3.7148271204552383, 1.8210045267322663],\r\n },\r\n },\r\n },\r\n \"05_Keyboard_Trackpad\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptop4.data.tooltips.05_Keyboard_Trackpad.title\",\r\n description:\r\n \"devices.laptop4.data.tooltips.05_Keyboard_Trackpad.description\",\r\n ranges: [320, 210],\r\n top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [6.677069984915586, 3.781971049286846, -7.718303189908037],\r\n },\r\n },\r\n },\r\n \"03_Mic_B\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptop4.data.tooltips.03_Mic_B.title\",\r\n description: \"devices.laptop4.data.tooltips.03_Mic_B.description\",\r\n ranges: [25, 155],\r\n },\r\n cameraData: {\r\n position: {\r\n values: [3.971041391424262, 12.184570108562403, -3.0506633138259867],\r\n },\r\n },\r\n },\r\n \"08_Performance_Thermals\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptop4.data.tooltips.08_Performance_Thermals.title\",\r\n description:\r\n \"devices.laptop4.data.tooltips.08_Performance_Thermals.description\",\r\n ranges: [350, 190],\r\n top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [0.0384916846096036, 8.490054527393497, -4.9852763144920305],\r\n },\r\n },\r\n },\r\n \"01_Display\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptop4.data.tooltips.01_Display.title\",\r\n description: \"devices.laptop4.data.tooltips.01_Display.description\",\r\n ranges: [10, 170],\r\n top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-3.539642806993153, 8.042880127353014, -7.461221714137204],\r\n },\r\n },\r\n },\r\n \"07_Removeable_SSD\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptop4.data.tooltips.07_Removeable_SSD.title\",\r\n description:\r\n \"devices.laptop4.data.tooltips.07_Removeable_SSD.description\",\r\n ranges: [55, 225],\r\n top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-9.405273212580164, 7.2390491060612305, -3.6995761576302497],\r\n },\r\n },\r\n },\r\n \"02_Speakers\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptop4.data.tooltips.02_Speakers.title\",\r\n description: \"devices.laptop4.data.tooltips.02_Speakers.description\",\r\n ranges: [350, 130],\r\n top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [8.114626969523194, 8.580998829110257, -4.0809535589527],\r\n },\r\n },\r\n },\r\n \"10_Dimensions_Weight\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptop4.data.tooltips.10_Dimensions_Weight.title\",\r\n description:\r\n \"devices.laptop4.data.tooltips.10_Dimensions_Weight.description\",\r\n ranges: [20, 230],\r\n top: true,\r\n drawerWidth: \"380px\",\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-5.842489763355528, 6.891449400660279, -7.085795386123805],\r\n },\r\n },\r\n },\r\n // \"11_Buttons\": {\r\n // type: \"tooltip\",\r\n // data: {\r\n // title: \"Buttons\",\r\n // description: \"<p>Volume up/down and power</p>\",\r\n // ranges: [0, 140],\r\n // top: true,\r\n // },\r\n // cameraData: {\r\n // position: {\r\n // values: [7.504344007292941, 9.301147687836924, -3.9990913157677834],\r\n // frames: {\r\n // fps: 90,\r\n // total: 90,\r\n // },\r\n // },\r\n // },\r\n // },\r\n \"12_Screen_Handle_A\": {\r\n type: \"actionDot\",\r\n data: {\r\n text: \"devices.laptop4.data.tooltips.12_Screen_Handle_A.text\",\r\n camDegOffset: null,\r\n arrows: {\r\n left: true,\r\n right: true,\r\n },\r\n ranges: [170, 200],\r\n rotate: -35,\r\n },\r\n },\r\n \"12_Screen_Handle_B\": {\r\n type: \"actionDot\",\r\n data: {\r\n text: \"devices.laptop4.data.tooltips.12_Screen_Handle_B.text\",\r\n camDegOffset: null,\r\n arrows: {\r\n left: true,\r\n right: true,\r\n },\r\n ranges: [0, 0],\r\n rotate: -35,\r\n },\r\n },\r\n },\r\n animations: {\r\n primary: {\r\n intro: {\r\n duration: 3500,\r\n startFrame: 0,\r\n endFrame: 1.2212,\r\n },\r\n },\r\n },\r\n modes: {\r\n thirteen: {\r\n primaryModeAnim: {\r\n endFrame: 3.5802,\r\n duration: 3000,\r\n fromMode: {\r\n fifteen: {\r\n duration: 2000,\r\n },\r\n },\r\n },\r\n },\r\n fifteen: {\r\n primaryModeAnim: {\r\n startFrame: 3.5595,\r\n endFrame: 5.2942,\r\n duration: 3000,\r\n fromMode: {\r\n thirteen: {\r\n duration: 2000,\r\n },\r\n },\r\n },\r\n },\r\n },\r\n draggable: {\r\n touchpointMesh: \"12_Screen_Handle_A\",\r\n referencePoint: {\r\n x: -3.064,\r\n y: 4.323,\r\n z: 0.033,\r\n },\r\n dragAxis: [0, 0, 1],\r\n zDiff: true,\r\n zLimits: [0.033, 5.69],\r\n lockY: 4.323,\r\n rangesByMode: {\r\n thirteen: {\r\n inMin: -5.664,\r\n inMax: 0,\r\n outMin: 1.4884,\r\n outMax: 3.1795,\r\n },\r\n fifteen: {\r\n inMin: -5.664,\r\n inMax: 0,\r\n outMin: 5.2837,\r\n outMax: 7.0562,\r\n },\r\n },\r\n isPickableInDegRange: [170, 200],\r\n reverseDistance: true,\r\n savePosition: true,\r\n },\r\n sidePanelDetails: {\r\n title: \"general.menu.laptop4.name\",\r\n cta: \"https://www.microsoft.com/en-us/surface/business/surface-laptop-4\",\r\n seeItInAction: false,\r\n modes: {\r\n header: \"general.explorerDetailHeader.screenSize\",\r\n default: \"thirteen\",\r\n values: {\r\n thirteen: \"general.postures.thirteen\",\r\n fifteen: \"general.postures.fifteen\",\r\n },\r\n },\r\n colorsByPosture: {\r\n thirteen: [\r\n {\r\n header: \"general.explorerDetailHeader.deviceColor\",\r\n default: \"platinumFabric\",\r\n colorValues: {\r\n platinumFabric: {\r\n name: \"general.color.platinumAlcantara\",\r\n swatchColor: \"#86888a\",\r\n colorChanges: [\r\n {\r\n materials: [\"FE_03_L3_Keys\", \"FE_03_L3_Trackpad\"],\r\n color: \"#585858\",\r\n },\r\n {\r\n materials: [\r\n \"FE_03_L3_Top_Metal\",\r\n \"FE_03_L3_Key_Inset_Metal\",\r\n \"FE_03_L3_Top_Fabric\",\r\n \"FE_03_L3_Key_Inset_Fabric\",\r\n ],\r\n color: \"#716F73\",\r\n },\r\n {\r\n materials: [\r\n \"FE_03_L3_Back\",\r\n \"FE_03_L3_Bottom\",\r\n \"FE_03_L3_Hinge\",\r\n ],\r\n color: \"#a6a6a6\",\r\n },\r\n ],\r\n meshes: {\r\n show: [\"Top_Fabric\"],\r\n hide: [\"Top_Metal\"],\r\n changeActiveMaterials: [\r\n {\r\n meshId: \"Key_Inset\",\r\n materialId: \"FE_03_L3_Key_Inset_Fabric\",\r\n },\r\n ],\r\n },\r\n },\r\n black: {\r\n name: \"general.color.blackMetal\",\r\n swatchColor: \"#272727\",\r\n colorChanges: [\r\n {\r\n materials: [\"FE_03_L3_Keys\", \"FE_03_L3_Trackpad\"],\r\n color: \"#0d0d0d\",\r\n },\r\n {\r\n materials: [\r\n \"FE_03_L3_Back\",\r\n \"FE_03_L3_Bottom\",\r\n \"FE_03_L3_Top_Metal\",\r\n \"FE_03_L3_Key_Inset_Metal\",\r\n \"FE_03_L3_Top_Fabric\",\r\n \"FE_03_L3_Key_Inset_Fabric\",\r\n \"FE_03_L3_Hinge\",\r\n ],\r\n color: \"#262626\",\r\n },\r\n ],\r\n meshes: {\r\n show: [\"Top_Metal\"],\r\n hide: [\"Top_Fabric\"],\r\n changeActiveMaterials: [\r\n {\r\n meshId: \"Key_Inset\",\r\n materialId: \"FE_03_L3_Key_Inset_Metal\",\r\n },\r\n ],\r\n },\r\n },\r\n sandstoneMetal: {\r\n name: \"general.color.sandStoneMetal\",\r\n swatchColor: \"#cbb1a0\",\r\n colorChanges: [\r\n {\r\n materials: [\"FE_03_L3_Keys\", \"FE_03_L3_Trackpad\"],\r\n color: \"#c9ae9c\",\r\n },\r\n {\r\n materials: [\r\n \"FE_03_L3_Back\",\r\n \"FE_03_L3_Bottom\",\r\n \"FE_03_L3_Top_Metal\",\r\n \"FE_03_L3_Key_Inset_Metal\",\r\n \"FE_03_L3_Top_Fabric\",\r\n \"FE_03_L3_Key_Inset_Fabric\",\r\n \"FE_03_L3_Hinge\",\r\n ],\r\n color: \"#d2bcad\",\r\n },\r\n ],\r\n meshes: {\r\n show: [\"Top_Metal\"],\r\n hide: [\"Top_Fabric\"],\r\n changeActiveMaterials: [\r\n {\r\n meshId: \"Key_Inset\",\r\n materialId: \"FE_03_L3_Key_Inset_Metal\",\r\n },\r\n ],\r\n },\r\n },\r\n iceBlue: {\r\n name: \"general.color.iceBlueAlcantaraMaterial\",\r\n swatchColor: \"#a2acc0\",\r\n colorChanges: [\r\n {\r\n materials: [\r\n \"FE_03_L3_Keys\",\r\n \"FE_03_L3_Trackpad\",\r\n \"FE_03_L3_Key_Inset_Metal\",\r\n ],\r\n color: \"#6B737F\",\r\n },\r\n {\r\n materials: [\r\n \"FE_03_L3_Top_Fabric\",\r\n \"FE_03_L3_Key_Inset_Fabric\",\r\n ],\r\n color: \"#8C99AD\",\r\n },\r\n {\r\n materials: [\r\n \"FE_03_L3_Back\",\r\n \"FE_03_L3_Bottom\",\r\n \"FE_03_L3_Top_Metal\",\r\n \"FE_03_L3_Hinge\",\r\n ],\r\n color: \"#A5AEBB\",\r\n },\r\n ],\r\n meshes: {\r\n show: [\"Top_Fabric\"],\r\n hide: [\"Top_Metal\"],\r\n changeActiveMaterials: [\r\n {\r\n meshId: \"Key_Inset\",\r\n materialId: \"FE_03_L3_Key_Inset_Fabric\",\r\n },\r\n ],\r\n },\r\n },\r\n },\r\n },\r\n ],\r\n fifteen: [\r\n {\r\n header: \"general.explorerDetailHeader.deviceColor\",\r\n default: \"platinumMetal\",\r\n colorValues: {\r\n platinumMetal: {\r\n name: \"general.color.platinumMetal\",\r\n swatchColor: \"#86888a\",\r\n colorChanges: [\r\n {\r\n materials: [\"FE_03_L3_Keys\", \"FE_03_L3_Trackpad\"],\r\n color: \"#999999\",\r\n },\r\n {\r\n materials: [\r\n \"FE_03_L3_Back\",\r\n \"FE_03_L3_Bottom\",\r\n \"FE_03_L3_Top_Metal\",\r\n \"FE_03_L3_Key_Inset_Metal\",\r\n \"FE_03_L3_Top_Fabric\",\r\n \"FE_03_L3_Key_Inset_Fabric\",\r\n \"FE_03_L3_Hinge\",\r\n ],\r\n color: \"#a6a6a6\",\r\n },\r\n ],\r\n meshes: {\r\n show: [\"Top_Metal\"],\r\n hide: [\"Top_Fabric\"],\r\n changeActiveMaterials: [\r\n {\r\n meshId: \"Key_Inset\",\r\n materialId: \"FE_03_L3_Key_Inset_Metal\",\r\n },\r\n ],\r\n },\r\n },\r\n black: {\r\n name: \"general.color.blackMetal\",\r\n swatchColor: \"#272727\",\r\n colorChanges: [\r\n {\r\n materials: [\"FE_03_L3_Keys\", \"FE_03_L3_Trackpad\"],\r\n color: \"#0d0d0d\",\r\n },\r\n {\r\n materials: [\r\n \"FE_03_L3_Back\",\r\n \"FE_03_L3_Bottom\",\r\n \"FE_03_L3_Top_Metal\",\r\n \"FE_03_L3_Key_Inset_Metal\",\r\n \"FE_03_L3_Top_Fabric\",\r\n \"FE_03_L3_Key_Inset_Fabric\",\r\n \"FE_03_L3_Hinge\",\r\n ],\r\n color: \"#262626\",\r\n },\r\n ],\r\n meshes: {\r\n show: [\"Top_Metal\"],\r\n hide: [\"Top_Fabric\"],\r\n changeActiveMaterials: [\r\n {\r\n meshId: \"Key_Inset\",\r\n materialId: \"FE_03_L3_Key_Inset_Metal\",\r\n },\r\n ],\r\n },\r\n },\r\n },\r\n },\r\n ],\r\n },\r\n },\r\n disclaimer: [\r\n \"devices.laptop4.data.disclaimer.1\",\r\n \"devices.laptop4.data.disclaimer.2\",\r\n \"devices.laptop4.data.disclaimer.3\",\r\n \"devices.laptop4.data.disclaimer.4\",\r\n ],\r\n};\r\n","// import { Vector3 } from \"@babylonjs/core\";\r\n\r\nexport default {\r\n name: \"Surface Laptop\",\r\n displayName: \"general.menu.laptop7.name\",\r\n filename: \"Hartwell_07E.glb\",\r\n initialCameraTarget: [0, 1.5, 3.2],\r\n defaultPostureMode: \"\",\r\n cameraRadius: {\r\n default: 13, //13\r\n lowerLimit: 9, //9\r\n upperLimit: 13, //13\r\n },\r\n // cameraAlpha: -1007.272,\r\n // cameraBeta: {\r\n // default: 1.3,\r\n // lowerLimit: 0.25,\r\n // upperLimit: 1.7,\r\n // },\r\n // fog: {\r\n // start: 40,\r\n // end: 70,\r\n // },\r\n // light: {\r\n // direction: [-0.9, -1.5, 1.5],\r\n // intensity: 3.7,\r\n // },\r\n // hideMeshes: [],\r\n tooltips: {\r\n \"09_Battery_15\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptop7.data.tooltips.09_Battery_15.title\",\r\n description: \"devices.laptop7.data.tooltips.09_Battery_15.description\",\r\n // ranges: {\r\n // thirteen: [0, 360],\r\n // fifteen: [0, 360],\r\n // },\r\n modelRanges: {\r\n thirteen: false,\r\n fifteen: [330, 210],\r\n },\r\n // ranges: [330, 210],\r\n // top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-3.7741560245697863, 9.042255213513556, -6.692933467704672],\r\n },\r\n },\r\n },\r\n \"09_Battery_13\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptop7.data.tooltips.09_Battery_13.title\",\r\n description: \"devices.laptop7.data.tooltips.09_Battery_13.description\",\r\n // ranges: {\r\n // thirteen: [0, 360],\r\n // fifteen: [0, 360],\r\n // },\r\n modelRanges: {\r\n thirteen: [330, 210],\r\n fifteen: false,\r\n },\r\n // ranges: [330, 210],\r\n // top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-3.7741560245697863, 9.042255213513556, -6.692933467704672],\r\n },\r\n },\r\n },\r\n \"04_Camera_15\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptop7.data.tooltips.04_Camera.title\",\r\n description: \"devices.laptop7.data.tooltips.04_Camera.description\",\r\n // ranges: {\r\n // thirteen: [0, 360],\r\n // fifteen: [0, 360],\r\n // },\r\n modelRanges: {\r\n thirteen: false,\r\n fifteen: [25, 155],\r\n },\r\n // ranges: [10, 170],\r\n },\r\n cameraData: {\r\n position: {\r\n values: [0.02210430189546551, 10.848187076954034, -5.833875678473073],\r\n },\r\n },\r\n },\r\n \"04_Camera_13\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptop7.data.tooltips.04_Camera.title\",\r\n description: \"devices.laptop7.data.tooltips.04_Camera.description\",\r\n // ranges: {\r\n // thirteen: [0, 360],\r\n // fifteen: [0, 360],\r\n // },\r\n modelRanges: {\r\n thirteen: [25, 155],\r\n fifteen: false,\r\n },\r\n // ranges: [10, 170],\r\n },\r\n cameraData: {\r\n position: {\r\n values: [0.02210430189546551, 10.848187076954034, -5.833875678473073],\r\n },\r\n },\r\n },\r\n \"06_Connection_Ports_15\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptop7.data.tooltips.06_Connection_Ports_15.title\",\r\n description:\r\n \"devices.laptop7.data.tooltips.06_Connection_Ports_15.description\",\r\n // ranges: {\r\n // thirteen: [0, 360],\r\n // fifteen: [0, 360],\r\n // },\r\n modelRanges: {\r\n thirteen: false,\r\n fifteen: [110, 240],\r\n },\r\n // ranges: [110, 240],\r\n // top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-12.735498117906621, 3.7148271204552383, 1.8210045267322663],\r\n },\r\n },\r\n },\r\n \"06_Connection_Ports_13\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptop7.data.tooltips.06_Connection_Ports_13.title\",\r\n description:\r\n \"devices.laptop7.data.tooltips.06_Connection_Ports_13.description\",\r\n // ranges: {\r\n // thirteen: [0, 360],\r\n // fifteen: [0, 360],\r\n // },\r\n modelRanges: {\r\n thirteen: [110, 240],\r\n fifteen: false,\r\n },\r\n // ranges: [110, 240],\r\n // top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-12.735498117906621, 3.7148271204552383, 1.8210045267322663],\r\n },\r\n },\r\n },\r\n \"05_Keyboard_Trackpad\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptop7.data.tooltips.05_Keyboard_Trackpad.title\",\r\n description:\r\n \"devices.laptop7.data.tooltips.05_Keyboard_Trackpad.description\",\r\n // ranges: {\r\n // thirteen: [0, 360],\r\n // fifteen: [0, 360],\r\n // },\r\n modelRanges: {\r\n thirteen: [350, 130],\r\n fifteen: [350, 130],\r\n },\r\n // ranges: [320, 210],\r\n // top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [6.677069984915586, 3.781971049286846, -7.718303189908037],\r\n },\r\n },\r\n },\r\n \"03_Sensors_Cams_15\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptop7.data.tooltips.03_Sensors_Cams.title\",\r\n description:\r\n \"devices.laptop7.data.tooltips.03_Sensors_Cams.description\",\r\n // ranges: {\r\n // thirteen: [0, 360],\r\n // fifteen: [0, 360],\r\n // },\r\n modelRanges: {\r\n thirteen: false,\r\n fifteen: [25, 155],\r\n },\r\n // ranges: [25, 155],\r\n },\r\n cameraData: {\r\n position: {\r\n values: [3.971041391424262, 12.184570108562403, -3.0506633138259867],\r\n },\r\n },\r\n },\r\n \"03_Sensors_Cams_13\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptop7.data.tooltips.03_Sensors_Cams.title\",\r\n description:\r\n \"devices.laptop7.data.tooltips.03_Sensors_Cams.description\",\r\n // ranges: {\r\n // thirteen: [0, 360],\r\n // fifteen: [0, 360],\r\n // },\r\n modelRanges: {\r\n thirteen: [25, 155],\r\n fifteen: false,\r\n },\r\n // ranges: [25, 155],\r\n },\r\n cameraData: {\r\n position: {\r\n values: [3.971041391424262, 12.184570108562403, -3.0506633138259867],\r\n },\r\n },\r\n },\r\n \"08_Performance_Thermals_13\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptop7.data.tooltips.08_Performance_Thermals_13.title\",\r\n description:\r\n \"devices.laptop7.data.tooltips.08_Performance_Thermals_13.description\",\r\n // ranges: {\r\n // thirteen: [0, 360],\r\n // fifteen: [0, 360],\r\n // },\r\n modelRanges: {\r\n thirteen: [350, 190],\r\n fifteen: false,\r\n },\r\n // ranges: [350, 190],\r\n // top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [0.0384916846096036, 8.490054527393497, -4.9852763144920305],\r\n },\r\n },\r\n },\r\n \"08_Performance_Thermals_15\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptop7.data.tooltips.08_Performance_Thermals_15.title\",\r\n description:\r\n \"devices.laptop7.data.tooltips.08_Performance_Thermals_15.description\",\r\n // ranges: {\r\n // thirteen: [0, 360],\r\n // fifteen: [0, 360],\r\n // },\r\n modelRanges: {\r\n thirteen: false,\r\n fifteen: [350, 190],\r\n },\r\n // ranges: [350, 190],\r\n // top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [0.0384916846096036, 8.490054527393497, -4.9852763144920305],\r\n },\r\n },\r\n },\r\n \"01_Display_15\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptop7.data.tooltips.01_Display_15.title\",\r\n description: \"devices.laptop7.data.tooltips.01_Display_15.description\",\r\n // ranges: {\r\n // thirteen: [0, 360],\r\n // fifteen: [0, 360],\r\n // },\r\n modelRanges: {\r\n thirteen: false,\r\n fifteen: [10, 170],\r\n },\r\n // ranges: [10, 170],\r\n // top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-3.539642806993153, 8.042880127353014, -7.461221714137204],\r\n },\r\n },\r\n },\r\n \"01_Display_13\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptop7.data.tooltips.01_Display_13.title\",\r\n description: \"devices.laptop7.data.tooltips.01_Display_13.description\",\r\n // ranges: {\r\n // thirteen: [0, 360],\r\n // fifteen: [0, 360],\r\n // },\r\n modelRanges: {\r\n thirteen: [10, 170],\r\n fifteen: false,\r\n },\r\n // ranges: [10, 170],\r\n // top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-3.539642806993153, 8.042880127353014, -7.461221714137204],\r\n },\r\n },\r\n },\r\n \"15_Security\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptop7.data.tooltips.15_Security.title\",\r\n description: \"devices.laptop7.data.tooltips.15_Security.description\",\r\n // ranges: {\r\n // thirteen: [0, 360],\r\n // fifteen: [0, 360],\r\n // },\r\n modelRanges: {\r\n thirteen: [55, 225],\r\n fifteen: [55, 225],\r\n },\r\n // ranges: [55, 225],\r\n // top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-9.405273212580164, 7.2390491060612305, -3.6995761576302497],\r\n },\r\n },\r\n },\r\n \"07_Removeable_SSD\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptop7.data.tooltips.07_Removeable_SSD.title\",\r\n description:\r\n \"devices.laptop7.data.tooltips.07_Removeable_SSD.description\",\r\n // ranges: {\r\n // thirteen: [0, 360],\r\n // fifteen: [0, 360],\r\n // },\r\n modelRanges: {\r\n thirteen: [55, 225],\r\n fifteen: [55, 225],\r\n },\r\n // ranges: [55, 225],\r\n // top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-9.405273212580164, 7.2390491060612305, -3.6995761576302497],\r\n },\r\n },\r\n },\r\n \"02_Speakers\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptop7.data.tooltips.02_Speakers.title\",\r\n description: \"devices.laptop7.data.tooltips.02_Speakers.description\",\r\n // ranges: {\r\n // thirteen: [0, 360],\r\n // fifteen: [0, 360],\r\n // },\r\n modelRanges: {\r\n thirteen: [350, 130],\r\n fifteen: [350, 130],\r\n },\r\n // ranges: [350, 130],\r\n // top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [8.114626969523194, 8.580998829110257, -4.0809535589527],\r\n },\r\n },\r\n },\r\n \"10_Dimensions_Weight_15\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptop7.data.tooltips.10_Dimensions_Weight_15.title\",\r\n description:\r\n \"devices.laptop7.data.tooltips.10_Dimensions_Weight_15.description\",\r\n // ranges: {\r\n // thirteen: [0, 360],\r\n // fifteen: [0, 360],\r\n // },\r\n modelRanges: {\r\n thirteen: false,\r\n fifteen: [20, 230],\r\n },\r\n // ranges: [20, 230],\r\n // top: true,\r\n // drawerWidth: \"380px\",\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-5.842489763355528, 6.891449400660279, -7.085795386123805],\r\n },\r\n },\r\n },\r\n \"10_Dimensions_Weight_13\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptop7.data.tooltips.10_Dimensions_Weight_13.title\",\r\n description:\r\n \"devices.laptop7.data.tooltips.10_Dimensions_Weight_13.description\",\r\n // ranges: {\r\n // thirteen: [0, 360],\r\n // fifteen: [0, 360],\r\n // },\r\n modelRanges: {\r\n thirteen: [20, 230],\r\n fifteen: false,\r\n },\r\n // ranges: [20, 230],\r\n // top: true,\r\n // drawerWidth: \"380px\",\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-5.842489763355528, 6.891449400660279, -7.085795386123805],\r\n },\r\n },\r\n },\r\n \"12_Screen_Handle_13\": {\r\n type: \"actionDot\",\r\n data: {\r\n text: \"devices.laptop7.data.tooltips.12_Screen_Handle_A.text\",\r\n camDegOffset: null,\r\n arrows: {\r\n left: true,\r\n right: true,\r\n },\r\n // ranges: [0, 0],\r\n modelRanges: {\r\n thirteen: [170, 200],\r\n fifteen: false,\r\n },\r\n rotate: -35,\r\n },\r\n },\r\n \"12_Screen_Handle_15\": {\r\n type: \"actionDot\",\r\n data: {\r\n text: \"devices.laptop7.data.tooltips.12_Screen_Handle_B.text\",\r\n camDegOffset: null,\r\n arrows: {\r\n left: true,\r\n right: true,\r\n },\r\n modelRanges: {\r\n thirteen: false,\r\n fifteen: [170, 200],\r\n },\r\n // ranges: [170, 200],\r\n rotate: -35,\r\n },\r\n },\r\n },\r\n animations: {\r\n primary: {\r\n intro: {\r\n duration: 3000,\r\n startFrame: 0, // 0.30\r\n endFrame: 1, // 2.496\r\n },\r\n },\r\n },\r\n draggable: {\r\n touchpointMesh: \"12_Screen_Handle_15\",\r\n referencePoint: {\r\n x: -45.03, //-3.064,\r\n y: 13.94, //4.323,\r\n z: 0.0, //0.033,\r\n },\r\n dragAxis: [0, 0, 1],\r\n zDiff: true,\r\n zLimits: [0.033, 5.69],\r\n lockY: 4.323,\r\n ranges: { inMin: -5.8, inMax: 0, outMin: 1, outMax: 2.5 },\r\n isPickableInDegRange: [170, 200],\r\n reverseDistance: true,\r\n savePosition: true,\r\n },\r\n changeModels: {\r\n default: \"thirteen\",\r\n thirteen: {\r\n hide: {\r\n fifteen: 0,\r\n },\r\n show: {\r\n thirteen: 1,\r\n },\r\n parentNodesToHideDescendants: [\"Bottom_13\", \"Parts_13\", \"Top_Hinge_13\"],\r\n },\r\n fifteen: {\r\n hide: {\r\n thirteen: 0,\r\n },\r\n show: {\r\n fifteen: 1,\r\n },\r\n parentNodesToHideDescendants: [\"Bottom_15\", \"Parts_15\", \"Top_Hinge_15\"],\r\n },\r\n },\r\n sidePanelDetails: {\r\n title: \"general.menu.laptop7.menuName\",\r\n cta: \"https://aka.ms/ExploreSurfaceBRL\",\r\n seeItInAction: false,\r\n models: {\r\n header: \"general.explorerDetailHeader.screenSize\",\r\n default: \"thirteen\",\r\n values: {\r\n thirteen: \"general.postures.thirteenPointEight\",\r\n fifteen: \"general.postures.fifteen\",\r\n },\r\n },\r\n colorsByModel: {\r\n thirteen: [\r\n {\r\n header: \"general.explorerDetailHeader.deviceColor\",\r\n default: \"platinumMetal\",\r\n colorValues: {\r\n black: {\r\n name: \"general.color.black\",\r\n swatchColor: \"#272727\",\r\n colorChanges: [\r\n {\r\n materials: [\"Surface_Plastic\"],\r\n color: \"#0d0d0d\",\r\n setEmissiveColor: \"#0a0a0a\",\r\n },\r\n {\r\n materials: [\"Metal_Shiney\", \"Surface_Metal\"],\r\n color: \"#262626\",\r\n setEmissiveColor: \"#000000\",\r\n },\r\n {\r\n materials: [\"Surface_Gray\"],\r\n color: \"#323232\",\r\n setEmissiveColor: \"#000000\",\r\n },\r\n ],\r\n },\r\n platinumMetal: {\r\n name: \"general.color.platinum\",\r\n swatchColor: \"#86888a\",\r\n colorChanges: [\r\n {\r\n materials: [\"Surface_Plastic\"],\r\n color: \"#B9B9B9\", //939393\r\n setEmissiveColor: \"#0a0a0a\", //0a0a0a\r\n },\r\n {\r\n materials: [\"Metal_Shiney\", \"Surface_Metal\"],\r\n color: \"#8A8A8A\",\r\n setEmissiveColor: \"#A4A4A4\",\r\n },\r\n {\r\n materials: [\"Surface_Gray\"],\r\n color: \"#323232\",\r\n setEmissiveColor: \"#000000\",\r\n },\r\n ],\r\n },\r\n },\r\n },\r\n ],\r\n fifteen: [\r\n {\r\n header: \"general.explorerDetailHeader.deviceColor\",\r\n default: \"platinumMetal\",\r\n colorValues: {\r\n black: {\r\n name: \"general.color.black\",\r\n swatchColor: \"#272727\",\r\n colorChanges: [\r\n {\r\n materials: [\"Surface_Plastic\"],\r\n color: \"#0d0d0d\",\r\n setEmissiveColor: \"#000000\",\r\n },\r\n {\r\n materials: [\"Metal_Shiney\", \"Surface_Metal\"],\r\n color: \"#262626\",\r\n setEmissiveColor: \"#000000\",\r\n },\r\n {\r\n materials: [\"Surface_Gray\"],\r\n color: \"#323232\",\r\n setEmissiveColor: \"#000000\",\r\n },\r\n ],\r\n },\r\n platinumMetal: {\r\n name: \"general.color.platinum\",\r\n swatchColor: \"#86888a\",\r\n colorChanges: [\r\n {\r\n materials: [\"Surface_Plastic\"],\r\n color: \"#B9B9B9\", //939393\r\n setEmissiveColor: \"#0a0a0a\", //0a0a0a\r\n },\r\n {\r\n materials: [\"Metal_Shiney\", \"Surface_Metal\"],\r\n color: \"#8A8A8A\",\r\n setEmissiveColor: \"#A4A4A4\",\r\n },\r\n {\r\n materials: [\"Surface_Gray\"],\r\n color: \"#323232\",\r\n setEmissiveColor: \"#000000\",\r\n },\r\n ],\r\n },\r\n },\r\n },\r\n ],\r\n },\r\n },\r\n disclaimer: [\r\n \"devices.laptop7.data.disclaimer.1\",\r\n \"devices.laptop7.data.disclaimer.2\",\r\n \"devices.laptop7.data.disclaimer.3\",\r\n \"devices.laptop7.data.disclaimer.4\",\r\n \"devices.laptop7.data.disclaimer.5\",\r\n \"devices.laptop7.data.disclaimer.6\",\r\n \"devices.laptop7.data.disclaimer.7\",\r\n \"devices.laptop7.data.disclaimer.8\",\r\n \"devices.laptop7.data.disclaimer.9\",\r\n \"devices.laptop7.data.disclaimer.10\",\r\n \"devices.laptop7.data.disclaimer.11\",\r\n \"devices.laptop7.data.disclaimer.12\",\r\n \"devices.laptop7.data.disclaimer.13\",\r\n \"devices.laptop7.data.disclaimer.14\",\r\n ],\r\n};\r\n","// import { Vector3 } from \"@babylonjs/core\";\r\n\r\nexport default {\r\n name: \"Surface Laptop 6\",\r\n displayName: \"general.menu.laptop6.name\",\r\n filename: \"Laptop_5_1L.glb\",\r\n initialCameraTarget: [0, 1.5, 3.2],\r\n defaultPostureMode: \"\",\r\n cameraRadius: {\r\n default: 13, //13\r\n lowerLimit: 9, //9\r\n upperLimit: 13, //13\r\n },\r\n // cameraAlpha: -1007.272,\r\n // cameraBeta: {\r\n // default: 1.3,\r\n // lowerLimit: 0.25,\r\n // upperLimit: 1.7,\r\n // },\r\n // fog: {\r\n // start: 40,\r\n // end: 70,\r\n // },\r\n // light: {\r\n // direction: [-0.9, -1.5, 1.5],\r\n // intensity: 3.7,\r\n // },\r\n // hideMeshes: [],\r\n tooltips: {\r\n \"09_Battery_15\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptop6.data.tooltips.09_Battery_15.title\",\r\n description: \"devices.laptop6.data.tooltips.09_Battery_15.description\",\r\n // ranges: {\r\n // thirteen: [0, 360],\r\n // fifteen: [0, 360],\r\n // },\r\n modelRanges: {\r\n thirteen: false,\r\n fifteen: [330, 210],\r\n },\r\n // ranges: [330, 210],\r\n // top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-3.7741560245697863, 9.042255213513556, -6.692933467704672],\r\n },\r\n },\r\n },\r\n \"09_Battery_13\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptop6.data.tooltips.09_Battery_13.title\",\r\n description: \"devices.laptop6.data.tooltips.09_Battery_13.description\",\r\n // ranges: {\r\n // thirteen: [0, 360],\r\n // fifteen: [0, 360],\r\n // },\r\n modelRanges: {\r\n thirteen: [330, 210],\r\n fifteen: false,\r\n },\r\n // ranges: [330, 210],\r\n // top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-3.7741560245697863, 9.042255213513556, -6.692933467704672],\r\n },\r\n },\r\n },\r\n \"04_Camera_15\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptop6.data.tooltips.04_Camera.title\",\r\n description: \"devices.laptop6.data.tooltips.04_Camera.description\",\r\n // ranges: {\r\n // thirteen: [0, 360],\r\n // fifteen: [0, 360],\r\n // },\r\n modelRanges: {\r\n thirteen: false,\r\n fifteen: [25, 155],\r\n },\r\n // ranges: [10, 170],\r\n },\r\n cameraData: {\r\n position: {\r\n values: [0.02210430189546551, 10.848187076954034, -5.833875678473073],\r\n },\r\n },\r\n },\r\n \"04_Camera_13\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptop6.data.tooltips.04_Camera.title\",\r\n description: \"devices.laptop6.data.tooltips.04_Camera.description\",\r\n // ranges: {\r\n // thirteen: [0, 360],\r\n // fifteen: [0, 360],\r\n // },\r\n modelRanges: {\r\n thirteen: [25, 155],\r\n fifteen: false,\r\n },\r\n // ranges: [10, 170],\r\n },\r\n cameraData: {\r\n position: {\r\n values: [0.02210430189546551, 10.848187076954034, -5.833875678473073],\r\n },\r\n },\r\n },\r\n \"06_Connection_Ports_15\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptop6.data.tooltips.06_Connection_Ports_15.title\",\r\n description:\r\n \"devices.laptop6.data.tooltips.06_Connection_Ports_15.description\",\r\n // ranges: {\r\n // thirteen: [0, 360],\r\n // fifteen: [0, 360],\r\n // },\r\n modelRanges: {\r\n thirteen: false,\r\n fifteen: [110, 240],\r\n },\r\n // ranges: [110, 240],\r\n // top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-12.735498117906621, 3.7148271204552383, 1.8210045267322663],\r\n },\r\n },\r\n },\r\n \"06_Connection_Ports_13\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptop6.data.tooltips.06_Connection_Ports_13.title\",\r\n description:\r\n \"devices.laptop6.data.tooltips.06_Connection_Ports_13.description\",\r\n // ranges: {\r\n // thirteen: [0, 360],\r\n // fifteen: [0, 360],\r\n // },\r\n modelRanges: {\r\n thirteen: [110, 240],\r\n fifteen: false,\r\n },\r\n // ranges: [110, 240],\r\n // top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-12.735498117906621, 3.7148271204552383, 1.8210045267322663],\r\n },\r\n },\r\n },\r\n \"13_Copilot\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptop6.data.tooltips.13_Copilot.title\",\r\n description: \"devices.laptop6.data.tooltips.13_Copilot.description\",\r\n // ranges: {\r\n // thirteen: [0, 360],\r\n // fifteen: [0, 360],\r\n // },\r\n modelRanges: {\r\n thirteen: [350, 130],\r\n fifteen: [350, 130],\r\n },\r\n // ranges: [320, 210],\r\n // top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [6.677069984915586, 3.781971049286846, -7.718303189908037],\r\n },\r\n },\r\n },\r\n \"05_Keyboard_Trackpad\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptop6.data.tooltips.05_Keyboard_Trackpad.title\",\r\n description:\r\n \"devices.laptop6.data.tooltips.05_Keyboard_Trackpad.description\",\r\n // ranges: {\r\n // thirteen: [0, 360],\r\n // fifteen: [0, 360],\r\n // },\r\n modelRanges: {\r\n thirteen: [350, 130],\r\n fifteen: [350, 130],\r\n },\r\n // ranges: [320, 210],\r\n // top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [6.677069984915586, 3.781971049286846, -7.718303189908037],\r\n },\r\n },\r\n },\r\n \"03_Sensors_Cams_15\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptop6.data.tooltips.03_Sensors_Cams.title\",\r\n description:\r\n \"devices.laptop6.data.tooltips.03_Sensors_Cams.description\",\r\n // ranges: {\r\n // thirteen: [0, 360],\r\n // fifteen: [0, 360],\r\n // },\r\n modelRanges: {\r\n thirteen: false,\r\n fifteen: [25, 155],\r\n },\r\n // ranges: [25, 155],\r\n },\r\n cameraData: {\r\n position: {\r\n values: [3.971041391424262, 12.184570108562403, -3.0506633138259867],\r\n },\r\n },\r\n },\r\n \"03_Sensors_Cams_13\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptop6.data.tooltips.03_Sensors_Cams.title\",\r\n description:\r\n \"devices.laptop6.data.tooltips.03_Sensors_Cams.description\",\r\n // ranges: {\r\n // thirteen: [0, 360],\r\n // fifteen: [0, 360],\r\n // },\r\n modelRanges: {\r\n thirteen: [25, 155],\r\n fifteen: false,\r\n },\r\n // ranges: [25, 155],\r\n },\r\n cameraData: {\r\n position: {\r\n values: [3.971041391424262, 12.184570108562403, -3.0506633138259867],\r\n },\r\n },\r\n },\r\n \"08_Performance_Thermals\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptop6.data.tooltips.08_Performance_Thermals.title\",\r\n description:\r\n \"devices.laptop6.data.tooltips.08_Performance_Thermals.description\",\r\n // ranges: {\r\n // thirteen: [0, 360],\r\n // fifteen: [0, 360],\r\n // },\r\n modelRanges: {\r\n thirteen: [350, 190],\r\n fifteen: [350, 190],\r\n },\r\n // ranges: [350, 190],\r\n // top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [0.0384916846096036, 8.490054527393497, -4.9852763144920305],\r\n },\r\n },\r\n },\r\n \"01_Display_15\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptop6.data.tooltips.01_Display_15.title\",\r\n description: \"devices.laptop6.data.tooltips.01_Display_15.description\",\r\n // ranges: {\r\n // thirteen: [0, 360],\r\n // fifteen: [0, 360],\r\n // },\r\n modelRanges: {\r\n thirteen: false,\r\n fifteen: [10, 170],\r\n },\r\n // ranges: [10, 170],\r\n // top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-3.539642806993153, 8.042880127353014, -7.461221714137204],\r\n },\r\n },\r\n },\r\n \"01_Display_13\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptop6.data.tooltips.01_Display_13.title\",\r\n description: \"devices.laptop6.data.tooltips.01_Display_13.description\",\r\n // ranges: {\r\n // thirteen: [0, 360],\r\n // fifteen: [0, 360],\r\n // },\r\n modelRanges: {\r\n thirteen: [10, 170],\r\n fifteen: false,\r\n },\r\n // ranges: [10, 170],\r\n // top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-3.539642806993153, 8.042880127353014, -7.461221714137204],\r\n },\r\n },\r\n },\r\n \"14_Security\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptop6.data.tooltips.14_Security.title\",\r\n description: \"devices.laptop6.data.tooltips.14_Security.description\",\r\n // ranges: {\r\n // thirteen: [0, 360],\r\n // fifteen: [0, 360],\r\n // },\r\n modelRanges: {\r\n thirteen: [55, 225],\r\n fifteen: [55, 225],\r\n },\r\n // ranges: [55, 225],\r\n // top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-9.405273212580164, 7.2390491060612305, -3.6995761576302497],\r\n },\r\n },\r\n },\r\n \"07_Removeable_SSD\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptop6.data.tooltips.07_Removeable_SSD.title\",\r\n description:\r\n \"devices.laptop6.data.tooltips.07_Removeable_SSD.description\",\r\n // ranges: {\r\n // thirteen: [0, 360],\r\n // fifteen: [0, 360],\r\n // },\r\n modelRanges: {\r\n thirteen: [55, 225],\r\n fifteen: [55, 225],\r\n },\r\n // ranges: [55, 225],\r\n // top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-9.405273212580164, 7.2390491060612305, -3.6995761576302497],\r\n },\r\n },\r\n },\r\n \"02_Speakers\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptop6.data.tooltips.02_Speakers.title\",\r\n description: \"devices.laptop6.data.tooltips.02_Speakers.description\",\r\n // ranges: {\r\n // thirteen: [0, 360],\r\n // fifteen: [0, 360],\r\n // },\r\n modelRanges: {\r\n thirteen: [350, 130],\r\n fifteen: [350, 130],\r\n },\r\n // ranges: [350, 130],\r\n // top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [8.114626969523194, 8.580998829110257, -4.0809535589527],\r\n },\r\n },\r\n },\r\n \"10_Dimensions_Weight_15\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptop6.data.tooltips.10_Dimensions_Weight_15.title\",\r\n description:\r\n \"devices.laptop6.data.tooltips.10_Dimensions_Weight_15.description\",\r\n // ranges: {\r\n // thirteen: [0, 360],\r\n // fifteen: [0, 360],\r\n // },\r\n modelRanges: {\r\n thirteen: false,\r\n fifteen: [20, 230],\r\n },\r\n // ranges: [20, 230],\r\n // top: true,\r\n // drawerWidth: \"380px\",\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-5.842489763355528, 6.891449400660279, -7.085795386123805],\r\n },\r\n },\r\n },\r\n \"10_Dimensions_Weight_13\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptop6.data.tooltips.10_Dimensions_Weight_13.title\",\r\n description:\r\n \"devices.laptop6.data.tooltips.10_Dimensions_Weight_13.description\",\r\n // ranges: {\r\n // thirteen: [0, 360],\r\n // fifteen: [0, 360],\r\n // },\r\n modelRanges: {\r\n thirteen: [20, 230],\r\n fifteen: false,\r\n },\r\n // ranges: [20, 230],\r\n // top: true,\r\n // drawerWidth: \"380px\",\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-5.842489763355528, 6.891449400660279, -7.085795386123805],\r\n },\r\n },\r\n },\r\n \"12_Screen_Handle_13\": {\r\n type: \"actionDot\",\r\n data: {\r\n text: \"devices.laptop6.data.tooltips.12_Screen_Handle_A.text\",\r\n camDegOffset: null,\r\n arrows: {\r\n left: true,\r\n right: true,\r\n },\r\n // ranges: [0, 0],\r\n modelRanges: {\r\n thirteen: [170, 200],\r\n fifteen: false,\r\n },\r\n rotate: -35,\r\n },\r\n },\r\n \"12_Screen_Handle_15\": {\r\n type: \"actionDot\",\r\n data: {\r\n text: \"devices.laptop6.data.tooltips.12_Screen_Handle_B.text\",\r\n camDegOffset: null,\r\n arrows: {\r\n left: true,\r\n right: true,\r\n },\r\n modelRanges: {\r\n thirteen: false,\r\n fifteen: [170, 200],\r\n },\r\n // ranges: [170, 200],\r\n rotate: -35,\r\n },\r\n },\r\n },\r\n animations: {\r\n primary: {\r\n intro: {\r\n duration: 3000,\r\n startFrame: 0, // 0.30\r\n endFrame: 2.5, // 2.496\r\n },\r\n },\r\n },\r\n // modes: {\r\n // thirteen: {\r\n // primaryModeAnim: {\r\n // endFrame: 3.5802,\r\n // duration: 3000,\r\n // fromMode: {\r\n // fifteen: {\r\n // duration: 2000,\r\n // },\r\n // },\r\n // },\r\n // },\r\n // fifteen: {\r\n // primaryModeAnim: {\r\n // startFrame: 3.5595,\r\n // endFrame: 5.2942,\r\n // duration: 3000,\r\n // fromMode: {\r\n // thirteen: {\r\n // duration: 2000,\r\n // },\r\n // },\r\n // },\r\n // },\r\n // },\r\n draggable: {\r\n touchpointMesh: \"12_Screen_Handle_15\",\r\n referencePoint: {\r\n x: -45.03, //-3.064,\r\n y: 13.94, //4.323,\r\n z: 0.0, //0.033,\r\n },\r\n dragAxis: [0, 0, 1],\r\n zDiff: true,\r\n zLimits: [0.033, 5.69],\r\n lockY: 4.323,\r\n ranges: { inMin: -5.8, inMax: 0, outMin: 2.5, outMax: 4.2 },\r\n isPickableInDegRange: [170, 200],\r\n reverseDistance: true,\r\n savePosition: true,\r\n },\r\n changeModels: {\r\n default: \"fifteen\",\r\n thirteen: {\r\n hide: {\r\n fifteen: 0,\r\n },\r\n show: {\r\n thirteen: 1,\r\n },\r\n parentNodesToHideDescendants: [\"Top_13\", \"Base_13\"],\r\n // meshesToBeHidden: [\"16_Card\", \"Card\"],\r\n },\r\n fifteen: {\r\n hide: {\r\n thirteen: 0,\r\n },\r\n show: {\r\n fifteen: 1,\r\n },\r\n parentNodesToHideDescendants: [\"Top_15\", \"Base_15\"],\r\n // meshesToBeShown: [\"16_Card\", \"Card\"],\r\n },\r\n },\r\n sidePanelDetails: {\r\n title: \"general.menu.laptop6.name\",\r\n cta: \"https://aka.ms/exploresurfacelml\",\r\n seeItInAction: false,\r\n models: {\r\n header: \"general.explorerDetailHeader.screenSize\",\r\n default: \"fifteen\",\r\n values: {\r\n fifteen: \"general.postures.fifteen\",\r\n thirteen: \"general.postures.thirteen\",\r\n },\r\n },\r\n colorsByModel: {\r\n thirteen: [\r\n {\r\n header: \"general.explorerDetailHeader.deviceColor\",\r\n default: \"black\",\r\n colorValues: {\r\n black: {\r\n name: \"general.color.blackMetal\",\r\n swatchColor: \"#272727\",\r\n colorChanges: [\r\n {\r\n materials: [\"Surface_Plastic\"],\r\n color: \"#0d0d0d\",\r\n setEmissiveColor: \"#0a0a0a\",\r\n },\r\n {\r\n materials: [\"Metal_Shiney\", \"Surface_Metal\"],\r\n color: \"#262626\",\r\n setEmissiveColor: \"#000000\",\r\n },\r\n {\r\n materials: [\"Surface_Gray\"],\r\n color: \"#323232\",\r\n setEmissiveColor: \"#000000\",\r\n },\r\n ],\r\n meshes: {\r\n // show: [\"Top_Metal\"],\r\n hide: [\"16_Card\", \"Card\"],\r\n // changeActiveMaterials: [\r\n // {\r\n // meshId: \"Key_Inset\",\r\n // materialId: \"FE_03_L3_Key_Inset_Metal\",\r\n // },\r\n // ],\r\n },\r\n },\r\n platinumMetal: {\r\n name: \"general.color.platinumMetal\",\r\n swatchColor: \"#86888a\",\r\n colorChanges: [\r\n {\r\n materials: [\"Surface_Plastic\"],\r\n color: \"#B9B9B9\", //939393\r\n setEmissiveColor: \"#0a0a0a\", //0a0a0a\r\n },\r\n {\r\n materials: [\"Metal_Shiney\", \"Surface_Metal\"],\r\n color: \"#8A8A8A\",\r\n setEmissiveColor: \"#A4A4A4\",\r\n },\r\n {\r\n materials: [\"Surface_Gray\"],\r\n color: \"#323232\",\r\n setEmissiveColor: \"#000000\",\r\n },\r\n ],\r\n meshes: {\r\n // show: [\"Top_Fabric\"],\r\n hide: [\"16_Card\", \"Card\"],\r\n // changeActiveMaterials: [\r\n // {\r\n // meshId: \"Key_Inset\",\r\n // materialId: \"FE_03_L3_Key_Inset_Fabric\",\r\n // },\r\n // ],\r\n },\r\n },\r\n },\r\n },\r\n ],\r\n fifteen: [\r\n {\r\n header: \"general.explorerDetailHeader.deviceColor\",\r\n default: \"black\",\r\n colorValues: {\r\n black: {\r\n name: \"general.color.blackMetal\",\r\n swatchColor: \"#272727\",\r\n colorChanges: [\r\n {\r\n materials: [\"Surface_Plastic\", \"Surface_Gray_Card\"],\r\n color: \"#0d0d0d\",\r\n setEmissiveColor: \"#000000\",\r\n },\r\n {\r\n materials: [\"Metal_Shiney\", \"Surface_Metal\"],\r\n color: \"#262626\",\r\n setEmissiveColor: \"#000000\",\r\n },\r\n {\r\n materials: [\"Surface_Gray\"],\r\n color: \"#323232\",\r\n setEmissiveColor: \"#000000\",\r\n },\r\n ],\r\n meshes: {\r\n show: [\"16_Card\", \"Card\", \"Bottom_15_Black\"],\r\n hide: [\"Bottom_15_White\"],\r\n // changeActiveMaterials: [\r\n // {\r\n // meshId: \"Key_Inset\",\r\n // materialId: \"FE_03_L3_Key_Inset_Metal\",\r\n // },\r\n // ],\r\n },\r\n },\r\n platinumMetal: {\r\n name: \"general.color.platinumMetal\",\r\n swatchColor: \"#86888a\",\r\n colorChanges: [\r\n {\r\n materials: [\"Surface_Plastic\"],\r\n color: \"#B9B9B9\", //939393\r\n setEmissiveColor: \"#0a0a0a\", //0a0a0a\r\n },\r\n {\r\n materials: [\"Metal_Shiney\", \"Surface_Metal\"],\r\n color: \"#8A8A8A\",\r\n setEmissiveColor: \"#A4A4A4\",\r\n },\r\n {\r\n materials: [\"Surface_Gray\"],\r\n color: \"#323232\",\r\n setEmissiveColor: \"#000000\",\r\n },\r\n ],\r\n meshes: {\r\n show: [\"Bottom_15_White\"],\r\n hide: [\"16_Card\", \"Card\", \"Bottom_15_Black\"],\r\n // changeActiveMaterials: [\r\n // {\r\n // meshId: \"Key_Inset\",\r\n // materialId: \"FE_03_L3_Key_Inset_Metal\",\r\n // },\r\n // ],\r\n },\r\n },\r\n },\r\n },\r\n ],\r\n },\r\n // modes: {\r\n // header: \"general.explorerDetailHeader.screenSize\",\r\n // default: \"fifteen\",\r\n // values: {\r\n // fifteen: \"general.postures.fifteen\",\r\n // thirteen: \"general.postures.thirteen\",\r\n // },\r\n // },\r\n },\r\n disclaimer: [\r\n \"devices.laptop6.data.disclaimer.1\",\r\n \"devices.laptop6.data.disclaimer.2\",\r\n \"devices.laptop6.data.disclaimer.3\",\r\n \"devices.laptop6.data.disclaimer.4\",\r\n \"devices.laptop6.data.disclaimer.5\",\r\n \"devices.laptop6.data.disclaimer.6\",\r\n \"devices.laptop6.data.disclaimer.7\",\r\n \"devices.laptop6.data.disclaimer.8\",\r\n \"devices.laptop6.data.disclaimer.9\",\r\n \"devices.laptop6.data.disclaimer.10\",\r\n \"devices.laptop6.data.disclaimer.11\",\r\n // \"devices.laptop6.data.disclaimer.12\",\r\n ],\r\n};\r\n","export default {\r\n name: \"Surface Laptop 5\",\r\n displayName: \"general.menu.laptop5.name\",\r\n filename: \"03_Laptop_3_E_Export14-processed.gltf\",\r\n defaultPostureMode: \"thirteen\",\r\n initialCameraTarget: [0, 1.5, 3.2],\r\n cameraRadius: {\r\n default: 13,\r\n lowerLimit: 9,\r\n upperLimit: 13,\r\n },\r\n // light: {\r\n // position: [0, 15, 4],\r\n // direction: [-0.5, -1, 0.3],\r\n // intensity: 3.1,\r\n // },\r\n tooltips: {\r\n \"09_Battery\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptop5.data.tooltips.09_Battery.title\",\r\n description: \"devices.laptop5.data.tooltips.09_Battery.description\",\r\n ranges: [330, 210],\r\n top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-3.7741560245697863, 9.042255213513556, -6.692933467704672],\r\n },\r\n },\r\n },\r\n \"04_Camera_A\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptop5.data.tooltips.04_Camera_A.title\",\r\n description: \"devices.laptop5.data.tooltips.04_Camera_A.description\",\r\n ranges: [10, 170],\r\n },\r\n cameraData: {\r\n position: {\r\n values: [0.02210430189546551, 10.848187076954034, -5.833875678473073],\r\n },\r\n },\r\n },\r\n \"06_Connection_Ports\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptop5.data.tooltips.06_Connection_Ports.title\",\r\n description:\r\n \"devices.laptop5.data.tooltips.06_Connection_Ports.description\",\r\n ranges: [110, 240],\r\n top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-12.735498117906621, 3.7148271204552383, 1.8210045267322663],\r\n },\r\n },\r\n },\r\n \"05_Keyboard_Trackpad\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptop5.data.tooltips.05_Keyboard_Trackpad.title\",\r\n description:\r\n \"devices.laptop5.data.tooltips.05_Keyboard_Trackpad.description\",\r\n ranges: [320, 210],\r\n top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [6.677069984915586, 3.781971049286846, -7.718303189908037],\r\n },\r\n },\r\n },\r\n \"03_Mic_B\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptop5.data.tooltips.03_Mic_B.title\",\r\n description: \"devices.laptop5.data.tooltips.03_Mic_B.description\",\r\n ranges: [25, 155],\r\n },\r\n cameraData: {\r\n position: {\r\n values: [3.971041391424262, 12.184570108562403, -3.0506633138259867],\r\n },\r\n },\r\n },\r\n \"08_Performance_Thermals\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptop5.data.tooltips.08_Performance_Thermals.title\",\r\n description:\r\n \"devices.laptop5.data.tooltips.08_Performance_Thermals.description\",\r\n ranges: [350, 190],\r\n top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [0.0384916846096036, 8.490054527393497, -4.9852763144920305],\r\n },\r\n },\r\n },\r\n \"01_Display\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptop5.data.tooltips.01_Display.title\",\r\n description: \"devices.laptop5.data.tooltips.01_Display.description\",\r\n ranges: [10, 170],\r\n top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-3.539642806993153, 8.042880127353014, -7.461221714137204],\r\n },\r\n },\r\n },\r\n \"07_Removeable_SSD\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptop5.data.tooltips.07_Removeable_SSD.title\",\r\n description:\r\n \"devices.laptop5.data.tooltips.07_Removeable_SSD.description\",\r\n ranges: [55, 225],\r\n top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-9.405273212580164, 7.2390491060612305, -3.6995761576302497],\r\n },\r\n },\r\n },\r\n \"02_Speakers\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptop5.data.tooltips.02_Speakers.title\",\r\n description: \"devices.laptop5.data.tooltips.02_Speakers.description\",\r\n ranges: [350, 130],\r\n top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [8.114626969523194, 8.580998829110257, -4.0809535589527],\r\n },\r\n },\r\n },\r\n \"10_Dimensions_Weight\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptop5.data.tooltips.10_Dimensions_Weight.title\",\r\n description:\r\n \"devices.laptop5.data.tooltips.10_Dimensions_Weight.description\",\r\n ranges: [20, 230],\r\n top: true,\r\n drawerWidth: \"380px\",\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-5.842489763355528, 6.891449400660279, -7.085795386123805],\r\n },\r\n },\r\n },\r\n // \"11_Buttons\": {\r\n // type: \"tooltip\",\r\n // data: {\r\n // title: \"Buttons\",\r\n // description: \"<p>Volume up/down and power</p>\",\r\n // ranges: [0, 140],\r\n // top: true,\r\n // },\r\n // cameraData: {\r\n // position: {\r\n // values: [7.504344007292941, 9.301147687836924, -3.9990913157677834],\r\n // frames: {\r\n // fps: 90,\r\n // total: 90,\r\n // },\r\n // },\r\n // },\r\n // },\r\n \"12_Screen_Handle_A\": {\r\n type: \"actionDot\",\r\n data: {\r\n text: \"devices.laptop5.data.tooltips.12_Screen_Handle_A.text\",\r\n camDegOffset: null,\r\n arrows: {\r\n left: true,\r\n right: true,\r\n },\r\n ranges: [170, 200],\r\n rotate: -35,\r\n },\r\n },\r\n \"12_Screen_Handle_B\": {\r\n type: \"actionDot\",\r\n data: {\r\n text: \"devices.laptop5.data.tooltips.12_Screen_Handle_B.text\",\r\n camDegOffset: null,\r\n arrows: {\r\n left: true,\r\n right: true,\r\n },\r\n ranges: [0, 0],\r\n rotate: -35,\r\n },\r\n },\r\n },\r\n animations: {\r\n primary: {\r\n intro: {\r\n duration: 3500,\r\n startFrame: 0,\r\n endFrame: 1.2212,\r\n },\r\n },\r\n },\r\n modes: {\r\n thirteen: {\r\n primaryModeAnim: {\r\n endFrame: 3.5802,\r\n duration: 3000,\r\n fromMode: {\r\n fifteen: {\r\n duration: 2000,\r\n },\r\n },\r\n },\r\n },\r\n fifteen: {\r\n primaryModeAnim: {\r\n startFrame: 3.5595,\r\n endFrame: 5.2942,\r\n duration: 3000,\r\n fromMode: {\r\n thirteen: {\r\n duration: 2000,\r\n },\r\n },\r\n },\r\n },\r\n },\r\n draggable: {\r\n touchpointMesh: \"12_Screen_Handle_A\",\r\n referencePoint: {\r\n x: -3.064,\r\n y: 4.323,\r\n z: 0.033,\r\n },\r\n dragAxis: [0, 0, 1],\r\n zDiff: true,\r\n zLimits: [0.033, 5.69],\r\n lockY: 4.323,\r\n rangesByMode: {\r\n thirteen: {\r\n inMin: -5.664,\r\n inMax: 0,\r\n outMin: 1.4884,\r\n outMax: 3.1795,\r\n },\r\n fifteen: {\r\n inMin: -5.664,\r\n inMax: 0,\r\n outMin: 5.2837,\r\n outMax: 7.0562,\r\n },\r\n },\r\n isPickableInDegRange: [170, 200],\r\n reverseDistance: true,\r\n savePosition: true,\r\n },\r\n sidePanelDetails: {\r\n title: \"general.menu.laptop5.name\",\r\n cta: \"https://www.microsoft.com/en-us/surface/business/surface-laptop-5\",\r\n modes: {\r\n header: \"general.explorerDetailHeader.screenSize\",\r\n default: \"thirteen\",\r\n values: {\r\n thirteen: \"general.postures.thirteen\",\r\n fifteen: \"general.postures.fifteen\",\r\n },\r\n },\r\n colorsByPosture: {\r\n thirteen: [\r\n {\r\n header: \"general.explorerDetailHeader.deviceColor\",\r\n default: \"black\",\r\n colorValues: {\r\n black: {\r\n name: \"general.color.blackMetal\",\r\n swatchColor: \"#272727\",\r\n colorChanges: [\r\n {\r\n materials: [\"FE_03_L3_Keys\", \"FE_03_L3_Trackpad\"],\r\n color: \"#0d0d0d\",\r\n setEmissiveColor: \"#0a0a0a\",\r\n },\r\n {\r\n materials: [\r\n \"FE_03_L3_Back\",\r\n \"FE_03_L3_Bottom\",\r\n \"FE_03_L3_Top_Metal\",\r\n \"FE_03_L3_Key_Inset_Metal\",\r\n \"FE_03_L3_Top_Fabric\",\r\n \"FE_03_L3_Key_Inset_Fabric\",\r\n \"FE_03_L3_Hinge\",\r\n ],\r\n color: \"#262626\",\r\n setEmissiveColor: \"#000000\",\r\n },\r\n ],\r\n meshes: {\r\n show: [\"Top_Metal\"],\r\n hide: [\"Top_Fabric\"],\r\n changeActiveMaterials: [\r\n {\r\n meshId: \"Key_Inset\",\r\n materialId: \"FE_03_L3_Key_Inset_Metal\",\r\n },\r\n ],\r\n },\r\n },\r\n platinumFabric: {\r\n name: \"general.color.platinumAlcantara\",\r\n swatchColor: \"#86888a\",\r\n colorChanges: [\r\n {\r\n materials: [\"FE_03_L3_Keys\", \"FE_03_L3_Trackpad\"],\r\n color: \"#585858\",\r\n setEmissiveColor: \"#0a0a0a\",\r\n },\r\n {\r\n materials: [\r\n \"FE_03_L3_Top_Metal\",\r\n \"FE_03_L3_Key_Inset_Metal\",\r\n \"FE_03_L3_Top_Fabric\",\r\n \"FE_03_L3_Key_Inset_Fabric\",\r\n ],\r\n color: \"#818082\",\r\n setEmissiveColor: \"#000000\",\r\n },\r\n {\r\n materials: [\r\n \"FE_03_L3_Back\",\r\n \"FE_03_L3_Bottom\",\r\n \"FE_03_L3_Hinge\",\r\n ],\r\n color: \"#a6a6a6\",\r\n setEmissiveColor: \"#000000\",\r\n },\r\n ],\r\n meshes: {\r\n show: [\"Top_Fabric\"],\r\n hide: [\"Top_Metal\"],\r\n changeActiveMaterials: [\r\n {\r\n meshId: \"Key_Inset\",\r\n materialId: \"FE_03_L3_Key_Inset_Fabric\",\r\n },\r\n ],\r\n },\r\n },\r\n sandstoneMetal: {\r\n name: \"general.color.sandStoneMetal\",\r\n swatchColor: \"#cbb1a0\",\r\n colorChanges: [\r\n {\r\n materials: [\"FE_03_L3_Keys\", \"FE_03_L3_Trackpad\"],\r\n color: \"#B09883\",\r\n setEmissiveColor: \"#434343\",\r\n },\r\n {\r\n materials: [\r\n \"FE_03_L3_Back\",\r\n \"FE_03_L3_Bottom\",\r\n \"FE_03_L3_Top_Metal\",\r\n \"FE_03_L3_Key_Inset_Metal\",\r\n \"FE_03_L3_Top_Fabric\",\r\n \"FE_03_L3_Key_Inset_Fabric\",\r\n \"FE_03_L3_Hinge\",\r\n ],\r\n color: \"#AD9E86\",\r\n setEmissiveColor: \"#C2A492\",\r\n },\r\n ],\r\n meshes: {\r\n show: [\"Top_Metal\"],\r\n hide: [\"Top_Fabric\"],\r\n changeActiveMaterials: [\r\n {\r\n meshId: \"Key_Inset\",\r\n materialId: \"FE_03_L3_Key_Inset_Metal\",\r\n },\r\n ],\r\n },\r\n },\r\n sage: {\r\n name: \"general.color.sageMetal\",\r\n swatchColor: \"#90a6a1\",\r\n colorChanges: [\r\n {\r\n materials: [\"FE_03_L3_Keys\", \"FE_03_L3_Trackpad\"],\r\n color: \"#8d948f\",\r\n setEmissiveColor: \"#434343\",\r\n },\r\n {\r\n materials: [\r\n \"FE_03_L3_Back\",\r\n \"FE_03_L3_Bottom\",\r\n \"FE_03_L3_Top_Metal\",\r\n \"FE_03_L3_Key_Inset_Metal\",\r\n \"FE_03_L3_Top_Fabric\",\r\n \"FE_03_L3_Key_Inset_Fabric\",\r\n \"FE_03_L3_Hinge\",\r\n ],\r\n color: \"#888D8B\",\r\n setEmissiveColor: \"#8B928E\",\r\n },\r\n ],\r\n meshes: {\r\n show: [\"Top_Metal\"],\r\n hide: [\"Top_Fabric\"],\r\n changeActiveMaterials: [\r\n {\r\n meshId: \"Key_Inset\",\r\n materialId: \"FE_03_L3_Key_Inset_Metal\",\r\n },\r\n ],\r\n },\r\n },\r\n },\r\n },\r\n ],\r\n fifteen: [\r\n {\r\n header: \"general.explorerDetailHeader.deviceColor\",\r\n default: \"black\",\r\n colorValues: {\r\n black: {\r\n name: \"general.color.blackMetal\",\r\n swatchColor: \"#272727\",\r\n colorChanges: [\r\n {\r\n materials: [\"FE_03_L3_Keys\", \"FE_03_L3_Trackpad\"],\r\n color: \"#0d0d0d\",\r\n setEmissiveColor: \"#0a0a0a\",\r\n },\r\n {\r\n materials: [\r\n \"FE_03_L3_Back\",\r\n \"FE_03_L3_Bottom\",\r\n \"FE_03_L3_Top_Metal\",\r\n \"FE_03_L3_Key_Inset_Metal\",\r\n \"FE_03_L3_Top_Fabric\",\r\n \"FE_03_L3_Key_Inset_Fabric\",\r\n \"FE_03_L3_Hinge\",\r\n ],\r\n color: \"#262626\",\r\n setEmissiveColor: \"#000000\",\r\n },\r\n ],\r\n meshes: {\r\n show: [\"Top_Metal\"],\r\n hide: [\"Top_Fabric\"],\r\n changeActiveMaterials: [\r\n {\r\n meshId: \"Key_Inset\",\r\n materialId: \"FE_03_L3_Key_Inset_Metal\",\r\n },\r\n ],\r\n },\r\n },\r\n platinumMetal: {\r\n name: \"general.color.platinumMetal\",\r\n swatchColor: \"#86888a\",\r\n colorChanges: [\r\n {\r\n materials: [\"FE_03_L3_Keys\", \"FE_03_L3_Trackpad\"],\r\n color: \"#939393\",\r\n setEmissiveColor: \"#0a0a0a\",\r\n },\r\n {\r\n materials: [\r\n \"FE_03_L3_Back\",\r\n \"FE_03_L3_Bottom\",\r\n \"FE_03_L3_Top_Metal\",\r\n \"FE_03_L3_Key_Inset_Metal\",\r\n \"FE_03_L3_Top_Fabric\",\r\n \"FE_03_L3_Key_Inset_Fabric\",\r\n \"FE_03_L3_Hinge\",\r\n ],\r\n color: \"#8A8A8A\",\r\n setEmissiveColor: \"#A4A4A4\",\r\n },\r\n ],\r\n meshes: {\r\n show: [\"Top_Metal\"],\r\n hide: [\"Top_Fabric\"],\r\n changeActiveMaterials: [\r\n {\r\n meshId: \"Key_Inset\",\r\n materialId: \"FE_03_L3_Key_Inset_Metal\",\r\n },\r\n ],\r\n },\r\n },\r\n },\r\n },\r\n ],\r\n },\r\n },\r\n disclaimer: [\r\n \"devices.laptop5.data.disclaimer.1\",\r\n \"devices.laptop5.data.disclaimer.2\",\r\n \"devices.laptop5.data.disclaimer.3\",\r\n \"devices.laptop5.data.disclaimer.4\",\r\n \"devices.laptop5.data.disclaimer.5\",\r\n \"devices.laptop5.data.disclaimer.6\",\r\n ],\r\n};\r\n","export default {\r\n name: \"Surface Laptop Go 3\",\r\n displayName: \"general.menu.laptopGo3.name\",\r\n filename: \"08_Laptop_Go_08_Export-processed.gltf\",\r\n cameraRadius: {\r\n default: 13,\r\n lowerLimit: 9,\r\n upperLimit: 13,\r\n },\r\n initialCameraTarget: [0, 1.5, -1],\r\n tooltips: {\r\n \"10_Battery\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptopGo3.data.tooltips.10_Battery.title\",\r\n description: \"devices.laptopGo3.data.tooltips.10_Battery.description\",\r\n ranges: [330, 210],\r\n top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-2.6758604129969505, 6.921628459532568, -11.508506240904694],\r\n },\r\n },\r\n },\r\n \"04_Camera\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptopGo3.data.tooltips.04_Camera.title\",\r\n description: \"devices.laptopGo3.data.tooltips.04_Camera.description\",\r\n ranges: [10, 170],\r\n },\r\n cameraData: {\r\n position: {\r\n values: [0.14157412691795884, 9.578133503185557, -10.184484074870877],\r\n },\r\n },\r\n },\r\n \"07_Connections_Ports\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptopGo3.data.tooltips.07_Connections_Ports.title\",\r\n description:\r\n \"devices.laptopGo3.data.tooltips.07_Connections_Ports.description\",\r\n ranges: [110, 240],\r\n top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [\r\n -12.668715204750473,\r\n 3.7095728577031335,\r\n -1.9030088931546683,\r\n ],\r\n },\r\n },\r\n },\r\n \"01_Display\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptopGo3.data.tooltips.01_Display.title\",\r\n description: \"devices.laptopGo3.data.tooltips.01_Display.description\",\r\n ranges: [10, 170],\r\n top: false,\r\n changeTopBaseOnScreenWidth: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-5.9396770127151495, 4.937771946347099, -11.040922109567303],\r\n },\r\n },\r\n },\r\n \"06_Fingerprint\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptopGo3.data.tooltips.06_Fingerprint.title\",\r\n description:\r\n \"devices.laptopGo3.data.tooltips.06_Fingerprint.description\",\r\n ranges: [345, 130],\r\n top: true,\r\n left: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [11.095295435082802, 7.406175912489676, -3.318358826130397],\r\n },\r\n },\r\n },\r\n \"05_Keyboard_and_Trackpad\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptopGo3.data.tooltips.05_Keyboard_and_Trackpad.title\",\r\n description:\r\n \"devices.laptopGo3.data.tooltips.05_Keyboard_and_Trackpad.description\",\r\n ranges: [320, 200],\r\n top: false,\r\n changeTopBaseOnScreenWidth: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [6.628142346393896, 4.223785216578447, -10.846599611393826],\r\n },\r\n },\r\n },\r\n \"03_Mic\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptopGo3.data.tooltips.03_Mic.title\",\r\n description: \"devices.laptopGo3.data.tooltips.03_Mic.description\",\r\n ranges: [15, 165],\r\n },\r\n cameraData: {\r\n position: {\r\n values: [4.688582351922353, 9.74453346029442, -8.890717831048736],\r\n },\r\n },\r\n },\r\n \"09_Performance\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptopGo3.data.tooltips.09_Performance.title\",\r\n description:\r\n \"devices.laptopGo3.data.tooltips.09_Performance.description\",\r\n ranges: [350, 190],\r\n },\r\n cameraData: {\r\n position: {\r\n values: [0.06770851975577978, 7.600460237264011, -11.479538337838907],\r\n },\r\n },\r\n },\r\n \"12_Buttons\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptopGo3.data.tooltips.12_Buttons.title\",\r\n description: \"devices.laptopGo3.data.tooltips.12_Buttons.description\",\r\n ranges: [0, 140],\r\n },\r\n cameraData: {\r\n position: {\r\n values: [5.551478323961955, 8.583691321233305, -9.38095974216202],\r\n },\r\n },\r\n },\r\n \"02_Speakers\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptopGo3.data.tooltips.02_Speakers.title\",\r\n description: \"devices.laptopGo3.data.tooltips.02_Speakers.description\",\r\n ranges: [315, 125],\r\n top: false,\r\n left: false,\r\n changeTopBaseOnScreenWidth: true,\r\n changeLeftBaseOnScreenWidth: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [9.002537754472579, 6.370776714329512, -8.01435263626709],\r\n },\r\n },\r\n },\r\n \"11_Weight\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptopGo3.data.tooltips.11_Weight.title\",\r\n description: \"devices.laptopGo3.data.tooltips.11_Weight.description\",\r\n ranges: [55, 230],\r\n top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-7.839554446355814, 3.7095728577031335, -10.132086353220862],\r\n },\r\n },\r\n },\r\n // \"12_Buttons\": {\r\n // type: \"tooltip\",\r\n // data: {\r\n // title: \"Buttons\",\r\n // description: \"<p>Volume up/down and power</p>\",\r\n // ranges: [0, 140],\r\n // },\r\n // cameraData: {\r\n // position: {\r\n // values: [5.551478323961955, 8.583691321233305, -9.38095974216202],\r\n // frames: {\r\n // fps: 90,\r\n // total: 90,\r\n // },\r\n // },\r\n // },\r\n // },\r\n \"13_Screem_Grab\": {\r\n type: \"actionDot\",\r\n data: {\r\n text: \"devices.laptopGo3.data.tooltips.13_Screem_Grab.text\",\r\n camDegOffset: null,\r\n arrows: {\r\n left: true,\r\n right: true,\r\n },\r\n ranges: [170, 200],\r\n rotate: -35,\r\n },\r\n },\r\n },\r\n draggable: {\r\n touchpointMesh: \"13_Screem_Grab\",\r\n referencePoint: {\r\n x: -3.064,\r\n y: 4.315,\r\n z: -3.964,\r\n },\r\n dragAxis: [0, 0, 1],\r\n zDiff: true,\r\n zLimits: [-3.964, 1.788],\r\n lockY: 4.315,\r\n ranges: {\r\n inMin: -5.752,\r\n inMax: 0,\r\n outMin: 1.9878,\r\n outMax: 3.6455,\r\n },\r\n isPickableInDegRange: [170, 200],\r\n reverseDistance: true,\r\n savePosition: true,\r\n },\r\n animations: {\r\n primary: {\r\n intro: {\r\n duration: 3500,\r\n startFrame: 0.2787,\r\n endFrame: 1.722,\r\n },\r\n },\r\n },\r\n sidePanelDetails: {\r\n title: \"general.menu.laptopGo3.name\",\r\n cta: \"https://www.microsoft.com/surface/business/surface-laptop-go-3\",\r\n seeItInAction: false,\r\n colors: [\r\n {\r\n header: \"general.explorerDetailHeader.deviceColor\",\r\n default: \"platinum\",\r\n colorValues: {\r\n platinum: {\r\n name: \"general.color.platinum\",\r\n swatchColor: \"#86888a\",\r\n colorChanges: [\r\n {\r\n materials: [\r\n \"FE_08_LG_Bottom\",\r\n \"FE_08_LG_Key_Inset\",\r\n \"FE_08_LG_Hinge\",\r\n \"FE_08_LG_Back\",\r\n \"FE_08_LG_Top\",\r\n ],\r\n color: \"#E9E9E9\",\r\n },\r\n {\r\n materials: [\"FE_08_LG_Keys\"],\r\n color: \"#D7D7D7\",\r\n },\r\n ],\r\n },\r\n // sandstoneMetal: {\r\n // name: \"general.color.sandStone\",\r\n // swatchColor: \"#cbb1a0\",\r\n // colorChanges: [\r\n // {\r\n // materials: [\r\n // \"FE_08_LG_Bottom\",\r\n // \"FE_08_LG_Key_Inset\",\r\n // \"FE_08_LG_Back\",\r\n // \"FE_08_LG_Hinge\",\r\n // \"FE_08_LG_Top\",\r\n // ],\r\n // color: \"#ECD4C3\",\r\n // },\r\n // {\r\n // materials: [\"FE_08_LG_Keys\"],\r\n // color: \"#DFC3AF\",\r\n // },\r\n // ],\r\n // },\r\n // iceBlue: {\r\n // name: \"general.color.iceBlue\",\r\n // swatchColor: \"#a2acc0\",\r\n // colorChanges: [\r\n // {\r\n // materials: [\r\n // \"FE_08_LG_Bottom\",\r\n // \"FE_08_LG_Key_Inset\",\r\n // \"FE_08_LG_Hinge\",\r\n // \"FE_08_LG_Back\",\r\n // \"FE_08_LG_Top\",\r\n // ],\r\n // color: \"#C9D5E1\",\r\n // },\r\n // {\r\n // materials: [\"FE_08_LG_Keys\"],\r\n // color: \"#B5C2CF\",\r\n // },\r\n // ],\r\n // },\r\n // sage: {\r\n // name: \"general.color.sage\",\r\n // swatchColor: \"#9ca29f\",\r\n // colorChanges: [\r\n // {\r\n // materials: [\r\n // \"FE_08_LG_Bottom\",\r\n // \"FE_08_LG_Key_Inset\",\r\n // \"FE_08_LG_Hinge\",\r\n // \"FE_08_LG_Back\",\r\n // \"FE_08_LG_Top\",\r\n // ],\r\n // color: \"#cad0cd\",\r\n // },\r\n // {\r\n // materials: [\"FE_08_LG_Keys\"],\r\n // color: \"#b9bdbb\",\r\n // },\r\n // ],\r\n // },\r\n },\r\n },\r\n ],\r\n },\r\n disclaimer: [\r\n \"devices.laptopGo3.data.disclaimer.1\",\r\n \"devices.laptopGo3.data.disclaimer.2\",\r\n \"devices.laptopGo3.data.disclaimer.3\",\r\n ],\r\n};\r\n","export default {\r\n name: \"Surface Laptop Go 2\",\r\n displayName: \"general.menu.laptopGo.name\",\r\n filename: \"08_Laptop_Go_08_Export-processed.gltf\",\r\n cameraRadius: {\r\n default: 13,\r\n lowerLimit: 9,\r\n upperLimit: 13,\r\n },\r\n initialCameraTarget: [0, 1.5, -1],\r\n tooltips: {\r\n \"10_Battery\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptopGo.data.tooltips.10_Battery.title\",\r\n description: \"devices.laptopGo.data.tooltips.10_Battery.description\",\r\n ranges: [330, 210],\r\n top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-2.6758604129969505, 6.921628459532568, -11.508506240904694],\r\n },\r\n },\r\n },\r\n \"04_Camera\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptopGo.data.tooltips.04_Camera.title\",\r\n description: \"devices.laptopGo.data.tooltips.04_Camera.description\",\r\n ranges: [10, 170],\r\n },\r\n cameraData: {\r\n position: {\r\n values: [0.14157412691795884, 9.578133503185557, -10.184484074870877],\r\n },\r\n },\r\n },\r\n \"07_Connections_Ports\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptopGo.data.tooltips.07_Connections_Ports.title\",\r\n description:\r\n \"devices.laptopGo.data.tooltips.07_Connections_Ports.description\",\r\n ranges: [110, 240],\r\n top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [\r\n -12.668715204750473,\r\n 3.7095728577031335,\r\n -1.9030088931546683,\r\n ],\r\n },\r\n },\r\n },\r\n \"01_Display\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptopGo.data.tooltips.01_Display.title\",\r\n description: \"devices.laptopGo.data.tooltips.01_Display.description\",\r\n ranges: [10, 170],\r\n top: false,\r\n changeTopBaseOnScreenWidth: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-5.9396770127151495, 4.937771946347099, -11.040922109567303],\r\n },\r\n },\r\n },\r\n \"06_Fingerprint\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptopGo.data.tooltips.06_Fingerprint.title\",\r\n description:\r\n \"devices.laptopGo.data.tooltips.06_Fingerprint.description\",\r\n ranges: [345, 130],\r\n top: true,\r\n left: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [11.095295435082802, 7.406175912489676, -3.318358826130397],\r\n },\r\n },\r\n },\r\n \"05_Keyboard_and_Trackpad\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptopGo.data.tooltips.05_Keyboard_and_Trackpad.title\",\r\n description:\r\n \"devices.laptopGo.data.tooltips.05_Keyboard_and_Trackpad.description\",\r\n ranges: [320, 200],\r\n top: false,\r\n changeTopBaseOnScreenWidth: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [6.628142346393896, 4.223785216578447, -10.846599611393826],\r\n },\r\n },\r\n },\r\n \"03_Mic\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptopGo.data.tooltips.03_Mic.title\",\r\n description: \"devices.laptopGo.data.tooltips.03_Mic.description\",\r\n ranges: [15, 165],\r\n },\r\n cameraData: {\r\n position: {\r\n values: [4.688582351922353, 9.74453346029442, -8.890717831048736],\r\n },\r\n },\r\n },\r\n \"09_Performance\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptopGo.data.tooltips.09_Performance.title\",\r\n description:\r\n \"devices.laptopGo.data.tooltips.09_Performance.description\",\r\n ranges: [350, 190],\r\n },\r\n cameraData: {\r\n position: {\r\n values: [0.06770851975577978, 7.600460237264011, -11.479538337838907],\r\n },\r\n },\r\n },\r\n \"12_Buttons\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptopGo.data.tooltips.12_Buttons.title\",\r\n description: \"devices.laptopGo.data.tooltips.12_Buttons.description\",\r\n ranges: [0, 140],\r\n },\r\n cameraData: {\r\n position: {\r\n values: [5.551478323961955, 8.583691321233305, -9.38095974216202],\r\n },\r\n },\r\n },\r\n \"02_Speakers\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptopGo.data.tooltips.02_Speakers.title\",\r\n description: \"devices.laptopGo.data.tooltips.02_Speakers.description\",\r\n ranges: [315, 125],\r\n top: false,\r\n left: false,\r\n changeTopBaseOnScreenWidth: true,\r\n changeLeftBaseOnScreenWidth: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [9.002537754472579, 6.370776714329512, -8.01435263626709],\r\n },\r\n },\r\n },\r\n \"11_Weight\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptopGo.data.tooltips.11_Weight.title\",\r\n description: \"devices.laptopGo.data.tooltips.11_Weight.description\",\r\n ranges: [55, 230],\r\n top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-7.839554446355814, 3.7095728577031335, -10.132086353220862],\r\n },\r\n },\r\n },\r\n // \"12_Buttons\": {\r\n // type: \"tooltip\",\r\n // data: {\r\n // title: \"Buttons\",\r\n // description: \"<p>Volume up/down and power</p>\",\r\n // ranges: [0, 140],\r\n // },\r\n // cameraData: {\r\n // position: {\r\n // values: [5.551478323961955, 8.583691321233305, -9.38095974216202],\r\n // frames: {\r\n // fps: 90,\r\n // total: 90,\r\n // },\r\n // },\r\n // },\r\n // },\r\n \"13_Screem_Grab\": {\r\n type: \"actionDot\",\r\n data: {\r\n text: \"devices.laptopGo.data.tooltips.13_Screem_Grab.text\",\r\n camDegOffset: null,\r\n arrows: {\r\n left: true,\r\n right: true,\r\n },\r\n ranges: [170, 200],\r\n rotate: -35,\r\n },\r\n },\r\n },\r\n draggable: {\r\n touchpointMesh: \"13_Screem_Grab\",\r\n referencePoint: {\r\n x: -3.064,\r\n y: 4.315,\r\n z: -3.964,\r\n },\r\n dragAxis: [0, 0, 1],\r\n zDiff: true,\r\n zLimits: [-3.964, 1.788],\r\n lockY: 4.315,\r\n ranges: {\r\n inMin: -5.752,\r\n inMax: 0,\r\n outMin: 1.9878,\r\n outMax: 3.6455,\r\n },\r\n isPickableInDegRange: [170, 200],\r\n reverseDistance: true,\r\n savePosition: true,\r\n },\r\n animations: {\r\n primary: {\r\n intro: {\r\n duration: 3500,\r\n startFrame: 0.2787,\r\n endFrame: 1.722,\r\n },\r\n },\r\n },\r\n sidePanelDetails: {\r\n title: \"general.menu.laptopGo.name\",\r\n cta: \"https://www.microsoft.com/surface/business/surface-laptop-go-2\",\r\n seeItInAction: false,\r\n colors: [\r\n {\r\n header: \"general.explorerDetailHeader.deviceColor\",\r\n default: \"sage\",\r\n colorValues: {\r\n platinum: {\r\n name: \"general.color.platinum\",\r\n swatchColor: \"#86888a\",\r\n colorChanges: [\r\n {\r\n materials: [\r\n \"FE_08_LG_Bottom\",\r\n \"FE_08_LG_Key_Inset\",\r\n \"FE_08_LG_Hinge\",\r\n \"FE_08_LG_Back\",\r\n \"FE_08_LG_Top\",\r\n ],\r\n color: \"#E9E9E9\",\r\n },\r\n {\r\n materials: [\"FE_08_LG_Keys\"],\r\n color: \"#D7D7D7\",\r\n },\r\n ],\r\n },\r\n sandstoneMetal: {\r\n name: \"general.color.sandStone\",\r\n swatchColor: \"#cbb1a0\",\r\n colorChanges: [\r\n {\r\n materials: [\r\n \"FE_08_LG_Bottom\",\r\n \"FE_08_LG_Key_Inset\",\r\n \"FE_08_LG_Back\",\r\n \"FE_08_LG_Hinge\",\r\n \"FE_08_LG_Top\",\r\n ],\r\n color: \"#ECD4C3\",\r\n },\r\n {\r\n materials: [\"FE_08_LG_Keys\"],\r\n color: \"#DFC3AF\",\r\n },\r\n ],\r\n },\r\n iceBlue: {\r\n name: \"general.color.iceBlue\",\r\n swatchColor: \"#a2acc0\",\r\n colorChanges: [\r\n {\r\n materials: [\r\n \"FE_08_LG_Bottom\",\r\n \"FE_08_LG_Key_Inset\",\r\n \"FE_08_LG_Hinge\",\r\n \"FE_08_LG_Back\",\r\n \"FE_08_LG_Top\",\r\n ],\r\n color: \"#C9D5E1\",\r\n },\r\n {\r\n materials: [\"FE_08_LG_Keys\"],\r\n color: \"#B5C2CF\",\r\n },\r\n ],\r\n },\r\n sage: {\r\n name: \"general.color.sage\",\r\n swatchColor: \"#9ca29f\",\r\n colorChanges: [\r\n {\r\n materials: [\r\n \"FE_08_LG_Bottom\",\r\n \"FE_08_LG_Key_Inset\",\r\n \"FE_08_LG_Hinge\",\r\n \"FE_08_LG_Back\",\r\n \"FE_08_LG_Top\",\r\n ],\r\n color: \"#cad0cd\",\r\n },\r\n {\r\n materials: [\"FE_08_LG_Keys\"],\r\n color: \"#b9bdbb\",\r\n },\r\n ],\r\n },\r\n },\r\n },\r\n ],\r\n },\r\n disclaimer: [\r\n \"devices.laptopGo.data.disclaimer.1\",\r\n \"devices.laptopGo.data.disclaimer.2\",\r\n \"devices.laptopGo.data.disclaimer.3\",\r\n ],\r\n};\r\n","export default {\r\n name: \"Surface Go 3\",\r\n displayName: \"general.menu.go3.name\",\r\n filename: \"07_Go_2_Export_Tab_9-processed.gltf\",\r\n additionalFilenames: [\"07_Go_2_Export_KeyB_8-processed.gltf\"],\r\n cameraRadius: {\r\n default: 13,\r\n lowerLimit: 9,\r\n upperLimit: 13,\r\n },\r\n tooltips: {\r\n \"12_Battery\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.go3.data.tooltips.12_Battery.title\",\r\n description: \"devices.go3.data.tooltips.12_Battery.description\",\r\n ranges: {\r\n laptop: [205, 280],\r\n studio: false,\r\n tablet: [210, 320],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-0.5184918149629175, 3.7095728577031335, 12.80034976179628],\r\n },\r\n },\r\n },\r\n \"14_Buttons\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.go3.data.tooltips.14_Buttons.title\",\r\n description: \"devices.go3.data.tooltips.14_Buttons.description\",\r\n ranges: {\r\n laptop: [130, 285],\r\n studio: [130, 285],\r\n tablet: [270, 70],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-6.038620648386762, 8.487783827973113, 9.149094919083224],\r\n },\r\n },\r\n },\r\n \"04_Camera\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.go3.data.tooltips.04_Camera.title\",\r\n description: \"devices.go3.data.tooltips.04_Camera.description\",\r\n ranges: {\r\n laptop: [\r\n [20, 160],\r\n [200, 340],\r\n ],\r\n studio: [\r\n [20, 160],\r\n [200, 340],\r\n ],\r\n tablet: [\r\n [15, 90],\r\n [230, 340],\r\n ],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [0.07390945629612844, 8.93193328157027, -10.665875730129157],\r\n },\r\n },\r\n },\r\n \"08_Connections\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.go3.data.tooltips.08_Connections.title\",\r\n description: \"devices.go3.data.tooltips.08_Connections.description\",\r\n top: true,\r\n left: true,\r\n ranges: {\r\n laptop: [300, 35],\r\n studio: [300, 35],\r\n tablet: false,\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [12.333284952488249, 4.321557375632742, 2.9881258769903605],\r\n },\r\n },\r\n },\r\n \"01_Display\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.go3.data.tooltips.01_Display.title\",\r\n description: \"devices.go3.data.tooltips.01_Display.description\",\r\n ranges: {\r\n laptop: [30, 150],\r\n studio: [30, 150],\r\n tablet: [30, 130],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-5.353560819941777, 5.689392076223348, -9.441056165120735],\r\n },\r\n },\r\n },\r\n \"10_Kick_Stand\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.go3.data.tooltips.10_Kick_Stand.title\",\r\n description: \"devices.go3.data.tooltips.10_Kick_Stand.description\",\r\n ranges: {\r\n laptop: [320, 17],\r\n studio: [320, 17],\r\n tablet: false,\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [12.208251285258747, 3.7095728577031335, 3.8828325153784027],\r\n },\r\n },\r\n },\r\n \"07_LTE_Advanced\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.go3.data.tooltips.07_LTE_Advanced.title\",\r\n description: \"devices.go3.data.tooltips.07_LTE_Advanced.description\",\r\n ranges: {\r\n laptop: [220, 310],\r\n studio: false,\r\n tablet: [225, 340],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-6.0352047592479074, 4.159624689160718, 11.202798758647686],\r\n },\r\n },\r\n },\r\n \"03_Mic\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.go3.data.tooltips.03_Mic.title\",\r\n description: \"devices.go3.data.tooltips.03_Mic.description\",\r\n ranges: {\r\n laptop: [5, 145],\r\n studio: [5, 145],\r\n tablet: [10, 160],\r\n },\r\n left: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [2.2210888193096747, 8.728347229144855, -10.574391745705823],\r\n },\r\n },\r\n },\r\n \"06_NFC\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.go3.data.tooltips.06_NFC.title\",\r\n description: \"devices.go3.data.tooltips.06_NFC.description\",\r\n ranges: {\r\n laptop: [40, 110],\r\n studio: [40, 110],\r\n tablet: [40, 110],\r\n },\r\n left: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [2.850218463937224, 7.713770808662017, -11.057364380595002],\r\n },\r\n },\r\n },\r\n \"11_Performance_and_Thermals\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.go3.data.tooltips.11_Performance_and_Thermals.title\",\r\n description:\r\n \"devices.go3.data.tooltips.11_Performance_and_Thermals.description\",\r\n ranges: {\r\n laptop: [210, 290],\r\n studio: false,\r\n tablet: [215, 330],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-2.0591582950272147, 6.200703709990553, 11.944172292247867],\r\n },\r\n },\r\n },\r\n \"02_Speakers\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.go3.data.tooltips.02_Speakers.title\",\r\n description: \"devices.go3.data.tooltips.02_Speakers.description\",\r\n ranges: {\r\n laptop: [0, 125],\r\n studio: [0, 125],\r\n tablet: [10, 160],\r\n },\r\n left: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [6.261672289744414, 8.981605163164396, -8.59168460305421],\r\n },\r\n },\r\n },\r\n \"05_Type_Cover\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.go3.data.tooltips.05_Type_Cover.title\",\r\n description: \"devices.go3.data.tooltips.05_Type_Cover.description\",\r\n ranges: {\r\n laptop: [10, 180],\r\n studio: false,\r\n tablet: false,\r\n },\r\n top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [6.8787050486908425, 3.788750408373798, -10.79097022613277],\r\n },\r\n },\r\n },\r\n \"09_Surface_Pen\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.go3.data.tooltips.09_Surface_Pen.title\",\r\n description: \"devices.go3.data.tooltips.09_Surface_Pen.description\",\r\n ranges: {\r\n laptop: [70, 240],\r\n studio: false,\r\n tablet: false,\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-10.398977972285248, 6.35903963072717, -6.103358993124111],\r\n },\r\n },\r\n },\r\n \"13_Weight\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.go3.data.tooltips.13_Weight.title\",\r\n description: \"devices.go3.data.tooltips.13_Weight.description\",\r\n ranges: {\r\n laptop: [230, 340],\r\n studio: [230, 340],\r\n tablet: [0, 360],\r\n },\r\n top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [6.606400150104543, 3.722532698257716, 10.973414485103255],\r\n },\r\n },\r\n },\r\n \"15_Kick_Stand_Grab_B\": {\r\n type: \"actionDot\",\r\n data: {\r\n text: \"devices.go3.data.tooltips.15_Kick_Stand_Grab_B.text\",\r\n ranges: {\r\n laptop: [160, 210],\r\n studio: [160, 210],\r\n tablet: false,\r\n },\r\n arrows: {\r\n left: true,\r\n right: true,\r\n },\r\n },\r\n },\r\n },\r\n draggable: {\r\n touchpointMesh: \"15_Kick_Stand_Grab_B\",\r\n referencePoint: {\r\n x: -2.93,\r\n y: 0.3,\r\n z: 0.09,\r\n },\r\n dragAxis: [0, 0, 1],\r\n zDiff: true,\r\n zLimits: [0.09, 3.86],\r\n ranges: { inMin: 0, inMax: 3.86, outMin: 2.4558, outMax: 8.2573 },\r\n isPickableInDegRange: [160, 210],\r\n },\r\n animations: {\r\n primary: {\r\n intro: {\r\n duration: 3500,\r\n startFrame: 0.844,\r\n endFrame: 4.4949,\r\n },\r\n },\r\n secondary: {\r\n intro: {\r\n duration: 3500,\r\n startFrame: 0.844,\r\n endFrame: 4.4949,\r\n },\r\n },\r\n },\r\n modes: {\r\n laptop: {\r\n primaryModeAnim: {\r\n endFrame: 4.4949,\r\n duration: 3000,\r\n fromMode: {\r\n laptop: {\r\n duration: 250,\r\n },\r\n tablet: {\r\n duration: 1500,\r\n },\r\n studio: {\r\n duration: 1500,\r\n },\r\n },\r\n },\r\n secondaryModeAnim: {\r\n endFrame: 4.4949,\r\n duration: 3000,\r\n fromMode: {\r\n laptop: {\r\n duration: 250,\r\n },\r\n tablet: {\r\n duration: 1500,\r\n },\r\n studio: {\r\n duration: 1500,\r\n },\r\n },\r\n },\r\n cameraData: {\r\n startAtPercentage: 30,\r\n target: {\r\n values: [0, 1.5, 0],\r\n frames: {\r\n fps: 120,\r\n total: 120,\r\n },\r\n },\r\n },\r\n },\r\n tablet: {\r\n primaryModeAnim: {\r\n endFrame: 0,\r\n duration: 3000,\r\n fromMode: {\r\n laptop: {\r\n duration: 1500,\r\n },\r\n tablet: {\r\n duration: 250,\r\n },\r\n studio: {\r\n duration: 3000,\r\n },\r\n },\r\n },\r\n secondaryModeAnim: {\r\n endFrame: 9.7666,\r\n duration: 3000,\r\n fromMode: {\r\n laptop: {\r\n duration: 1500,\r\n },\r\n tablet: {\r\n duration: 250,\r\n },\r\n studio: {\r\n duration: 3000,\r\n },\r\n },\r\n },\r\n cameraData: {\r\n startAtPercentage: 30,\r\n target: {\r\n values: [0, 2.5, 0.085],\r\n frames: {\r\n fps: 120,\r\n total: 120,\r\n },\r\n },\r\n },\r\n },\r\n studio: {\r\n primaryModeAnim: {\r\n endFrame: 8.2573,\r\n duration: 3000,\r\n fromMode: {\r\n laptop: {\r\n duration: 1500,\r\n },\r\n tablet: {\r\n duration: 3000,\r\n },\r\n studio: {\r\n duration: 250,\r\n },\r\n },\r\n },\r\n secondaryModeAnim: {\r\n endFrame: 9.7666,\r\n duration: 3000,\r\n fromMode: {\r\n laptop: {\r\n duration: 1500,\r\n },\r\n tablet: {\r\n duration: 3000,\r\n },\r\n studio: {\r\n duration: 250,\r\n },\r\n },\r\n },\r\n cameraData: {\r\n startAtPercentage: 40,\r\n target: {\r\n values: [0, 1.5, 2],\r\n frames: {\r\n fps: 120,\r\n total: 120,\r\n },\r\n },\r\n },\r\n },\r\n },\r\n sidePanelDetails: {\r\n title: \"general.menu.go3.name\",\r\n cta: \"https://www.microsoft.com/surface/business/surface-go-3\",\r\n seeItInAction: false,\r\n modes: {\r\n header: \"general.explorerDetailHeader.postures\",\r\n default: \"laptop\",\r\n values: {\r\n laptop: \"general.postures.laptop\",\r\n studio: \"general.postures.studio\",\r\n tablet: \"general.postures.tablet\",\r\n },\r\n },\r\n colors: [\r\n {\r\n header: \"general.explorerDetailHeader.deviceColor\",\r\n default: \"platinum\",\r\n colorValues: {\r\n platinum: {\r\n name: \"general.color.platinum\",\r\n swatchColor: \"#86888a\",\r\n colorChanges: [\r\n {\r\n materials: [\"07_Go_2_Base\", \"07_Go_2_Buttons_Misc\"],\r\n color: \"#E4E4E4\",\r\n },\r\n ],\r\n },\r\n },\r\n },\r\n {\r\n header: \"general.explorerDetailHeader.surfaceGoTypeCoverColor\",\r\n default: \"iceBlue\",\r\n colorValues: {\r\n platinum: {\r\n name: \"general.color.platinum\",\r\n swatchColor: \"#86888a\",\r\n colorChanges: [\r\n {\r\n materials: [\"07_Go_2_Board_Fabric\", \"07_Go_2_Board_Plastic\"],\r\n color: \"#DFDFDF\",\r\n },\r\n {\r\n materials: [\"07_Go_2_Trackpad\", \"07_Go_2_Keys\"],\r\n color: \"#8E8E8F\",\r\n },\r\n ],\r\n },\r\n poppyRed: {\r\n name: \"general.color.poppyRed\",\r\n swatchColor: \"#8e3c31\",\r\n colorChanges: [\r\n {\r\n materials: [\"07_Go_2_Board_Fabric\", \"07_Go_2_Board_Plastic\"],\r\n color: \"#FF8E76\",\r\n },\r\n {\r\n materials: [\"07_Go_2_Trackpad\", \"07_Go_2_Keys\"],\r\n color: \"#A45342\",\r\n },\r\n ],\r\n },\r\n iceBlue: {\r\n name: \"general.color.iceBlue\",\r\n swatchColor: \"#a2acc0\",\r\n colorChanges: [\r\n {\r\n materials: [\"07_Go_2_Board_Fabric\", \"07_Go_2_Board_Plastic\"],\r\n color: \"#E3EFFF\",\r\n },\r\n {\r\n materials: [\"07_Go_2_Trackpad\", \"07_Go_2_Keys\"],\r\n color: \"#A0A8B4\",\r\n },\r\n ],\r\n },\r\n black: {\r\n name: \"general.color.black\",\r\n swatchColor: \"#272727\",\r\n colorChanges: [\r\n {\r\n materials: [\"07_Go_2_Board_Fabric\", \"07_Go_2_Board_Plastic\"],\r\n color: \"#4E4E4E\",\r\n },\r\n {\r\n materials: [\"07_Go_2_Trackpad\", \"07_Go_2_Keys\"],\r\n color: \"#2A2A2A\",\r\n },\r\n ],\r\n },\r\n },\r\n },\r\n {\r\n header: \"general.explorerDetailHeader.surfacePenColor\",\r\n default: \"platinum\",\r\n colorValues: {\r\n platinum: {\r\n name: \"general.color.platinum\",\r\n swatchColor: \"#86888a\",\r\n colorChanges: [\r\n {\r\n materials: [\"05_Pro_7_P2_Base\"],\r\n color: \"#F0F0F0\",\r\n },\r\n {\r\n materials: [\r\n \"05_Pro_7_P2_Base_End\",\r\n \"05_Pro_7_P2_Base_Tip\",\r\n \"05_Pro_7_P2_Button\",\r\n \"05_Pro_7_P2_Eraser\",\r\n ],\r\n color: \"#FFFEFE\",\r\n },\r\n ],\r\n },\r\n poppyRed: {\r\n name: \"general.color.poppyRed\",\r\n swatchColor: \"#90362E\",\r\n colorChanges: [\r\n {\r\n materials: [\"05_Pro_7_P2_Base\"],\r\n color: \"#EC7361\",\r\n },\r\n {\r\n materials: [\r\n \"05_Pro_7_P2_Base_End\",\r\n \"05_Pro_7_P2_Base_Tip\",\r\n \"05_Pro_7_P2_Button\",\r\n \"05_Pro_7_P2_Eraser\",\r\n ],\r\n color: \"#FF826F\",\r\n },\r\n ],\r\n },\r\n iceBlue: {\r\n name: \"general.color.iceBlue\",\r\n swatchColor: \"#a2acc0\",\r\n colorChanges: [\r\n {\r\n materials: [\"05_Pro_7_P2_Base\"],\r\n color: \"#95BCDB\",\r\n },\r\n {\r\n materials: [\r\n \"05_Pro_7_P2_Base_End\",\r\n \"05_Pro_7_P2_Base_Tip\",\r\n \"05_Pro_7_P2_Button\",\r\n \"05_Pro_7_P2_Eraser\",\r\n ],\r\n color: \"#A3CCED\",\r\n },\r\n ],\r\n },\r\n black: {\r\n name: \"general.color.black\",\r\n swatchColor: \"#272727\",\r\n colorChanges: [\r\n {\r\n materials: [\r\n \"05_Pro_7_P2_Base\",\r\n \"05_Pro_7_P2_Base_End\",\r\n \"05_Pro_7_P2_Base_Tip\",\r\n \"05_Pro_7_P2_Button\",\r\n \"05_Pro_7_P2_Eraser\",\r\n ],\r\n color: \"#656565\",\r\n },\r\n ],\r\n },\r\n },\r\n },\r\n ],\r\n },\r\n disclaimer: [\r\n \"devices.go3.data.disclaimer.1\",\r\n \"devices.go3.data.disclaimer.2\",\r\n \"devices.go3.data.disclaimer.3\",\r\n \"devices.go3.data.disclaimer.4\",\r\n ],\r\n};\r\n","export default {\r\n name: \"Surface Go 4\",\r\n displayName: \"general.menu.go4.name\",\r\n filename: \"07_Go_2_Export_Tab_9-processed.gltf\",\r\n additionalFilenames: [\"07_Go_2_Export_KeyB_8-processed.gltf\"],\r\n cameraRadius: {\r\n default: 13,\r\n lowerLimit: 9,\r\n upperLimit: 13,\r\n },\r\n tooltips: {\r\n \"12_Battery\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.go4.data.tooltips.12_Battery.title\",\r\n description: \"devices.go4.data.tooltips.12_Battery.description\",\r\n ranges: {\r\n laptop: [205, 280],\r\n studio: false,\r\n tablet: [210, 320],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-0.5184918149629175, 3.7095728577031335, 12.80034976179628],\r\n },\r\n },\r\n },\r\n \"14_Buttons\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.go4.data.tooltips.14_Buttons.title\",\r\n description: \"devices.go4.data.tooltips.14_Buttons.description\",\r\n ranges: {\r\n laptop: [130, 285],\r\n studio: [130, 285],\r\n tablet: [270, 70],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-6.038620648386762, 8.487783827973113, 9.149094919083224],\r\n },\r\n },\r\n },\r\n \"04_Camera\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.go4.data.tooltips.04_Camera.title\",\r\n description: \"devices.go4.data.tooltips.04_Camera.description\",\r\n ranges: {\r\n laptop: [\r\n [20, 160],\r\n [200, 340],\r\n ],\r\n studio: [\r\n [20, 160],\r\n [200, 340],\r\n ],\r\n tablet: [\r\n [15, 90],\r\n [230, 340],\r\n ],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [0.07390945629612844, 8.93193328157027, -10.665875730129157],\r\n },\r\n },\r\n },\r\n \"08_Connections\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.go4.data.tooltips.08_Connections.title\",\r\n description: \"devices.go4.data.tooltips.08_Connections.description\",\r\n top: true,\r\n left: true,\r\n ranges: {\r\n laptop: [300, 35],\r\n studio: [300, 35],\r\n tablet: false,\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [12.333284952488249, 4.321557375632742, 2.9881258769903605],\r\n },\r\n },\r\n },\r\n \"01_Display\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.go4.data.tooltips.01_Display.title\",\r\n description: \"devices.go4.data.tooltips.01_Display.description\",\r\n ranges: {\r\n laptop: [30, 150],\r\n studio: [30, 150],\r\n tablet: [30, 130],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-5.353560819941777, 5.689392076223348, -9.441056165120735],\r\n },\r\n },\r\n },\r\n \"10_Kick_Stand\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.go4.data.tooltips.10_Kick_Stand.title\",\r\n description: \"devices.go4.data.tooltips.10_Kick_Stand.description\",\r\n ranges: {\r\n laptop: [320, 17],\r\n studio: [320, 17],\r\n tablet: false,\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [12.208251285258747, 3.7095728577031335, 3.8828325153784027],\r\n },\r\n },\r\n },\r\n \"07_LTE_Advanced\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.go4.data.tooltips.07_LTE_Advanced.title\",\r\n description: \"devices.go4.data.tooltips.07_LTE_Advanced.description\",\r\n ranges: {\r\n laptop: [220, 310],\r\n studio: false,\r\n tablet: [225, 340],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-6.0352047592479074, 4.159624689160718, 11.202798758647686],\r\n },\r\n },\r\n },\r\n \"03_Mic\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.go4.data.tooltips.03_Mic.title\",\r\n description: \"devices.go4.data.tooltips.03_Mic.description\",\r\n ranges: {\r\n laptop: [5, 145],\r\n studio: [5, 145],\r\n tablet: [10, 160],\r\n },\r\n left: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [2.2210888193096747, 8.728347229144855, -10.574391745705823],\r\n },\r\n },\r\n },\r\n \"06_NFC\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.go4.data.tooltips.06_NFC.title\",\r\n description: \"devices.go4.data.tooltips.06_NFC.description\",\r\n ranges: {\r\n laptop: [40, 110],\r\n studio: [40, 110],\r\n tablet: [40, 110],\r\n },\r\n left: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [2.850218463937224, 7.713770808662017, -11.057364380595002],\r\n },\r\n },\r\n },\r\n \"11_Performance_and_Thermals\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.go4.data.tooltips.11_Performance_and_Thermals.title\",\r\n description:\r\n \"devices.go4.data.tooltips.11_Performance_and_Thermals.description\",\r\n ranges: {\r\n laptop: [210, 290],\r\n studio: false,\r\n tablet: [215, 330],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-2.0591582950272147, 6.200703709990553, 11.944172292247867],\r\n },\r\n },\r\n },\r\n \"02_Speakers\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.go4.data.tooltips.02_Speakers.title\",\r\n description: \"devices.go4.data.tooltips.02_Speakers.description\",\r\n ranges: {\r\n laptop: [0, 125],\r\n studio: [0, 125],\r\n tablet: [10, 160],\r\n },\r\n left: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [6.261672289744414, 8.981605163164396, -8.59168460305421],\r\n },\r\n },\r\n },\r\n \"05_Type_Cover\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.go4.data.tooltips.05_Type_Cover.title\",\r\n description: \"devices.go4.data.tooltips.05_Type_Cover.description\",\r\n ranges: {\r\n laptop: [10, 180],\r\n studio: false,\r\n tablet: false,\r\n },\r\n top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [6.8787050486908425, 3.788750408373798, -10.79097022613277],\r\n },\r\n },\r\n },\r\n \"09_Surface_Pen\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.go4.data.tooltips.09_Surface_Pen.title\",\r\n description: \"devices.go4.data.tooltips.09_Surface_Pen.description\",\r\n ranges: {\r\n laptop: [70, 240],\r\n studio: false,\r\n tablet: false,\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-10.398977972285248, 6.35903963072717, -6.103358993124111],\r\n },\r\n },\r\n },\r\n \"13_Weight\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.go4.data.tooltips.13_Weight.title\",\r\n description: \"devices.go4.data.tooltips.13_Weight.description\",\r\n ranges: {\r\n laptop: [230, 340],\r\n studio: [230, 340],\r\n tablet: [0, 360],\r\n },\r\n top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [6.606400150104543, 3.722532698257716, 10.973414485103255],\r\n },\r\n },\r\n },\r\n \"15_Kick_Stand_Grab_B\": {\r\n type: \"actionDot\",\r\n data: {\r\n text: \"devices.go4.data.tooltips.15_Kick_Stand_Grab_B.text\",\r\n ranges: {\r\n laptop: [160, 210],\r\n studio: [160, 210],\r\n tablet: false,\r\n },\r\n arrows: {\r\n left: true,\r\n right: true,\r\n },\r\n },\r\n },\r\n },\r\n draggable: {\r\n touchpointMesh: \"15_Kick_Stand_Grab_B\",\r\n referencePoint: {\r\n x: -2.93,\r\n y: 0.3,\r\n z: 0.09,\r\n },\r\n dragAxis: [0, 0, 1],\r\n zDiff: true,\r\n zLimits: [0.09, 3.86],\r\n ranges: { inMin: 0, inMax: 3.86, outMin: 2.4558, outMax: 8.2573 },\r\n isPickableInDegRange: [160, 210],\r\n },\r\n animations: {\r\n primary: {\r\n intro: {\r\n duration: 3500,\r\n startFrame: 0.844,\r\n endFrame: 4.4949,\r\n },\r\n },\r\n secondary: {\r\n intro: {\r\n duration: 3500,\r\n startFrame: 0.844,\r\n endFrame: 4.4949,\r\n },\r\n },\r\n },\r\n modes: {\r\n laptop: {\r\n primaryModeAnim: {\r\n endFrame: 4.4949,\r\n duration: 3000,\r\n fromMode: {\r\n laptop: {\r\n duration: 250,\r\n },\r\n tablet: {\r\n duration: 1500,\r\n },\r\n studio: {\r\n duration: 1500,\r\n },\r\n },\r\n },\r\n secondaryModeAnim: {\r\n endFrame: 4.4949,\r\n duration: 3000,\r\n fromMode: {\r\n laptop: {\r\n duration: 250,\r\n },\r\n tablet: {\r\n duration: 1500,\r\n },\r\n studio: {\r\n duration: 1500,\r\n },\r\n },\r\n },\r\n cameraData: {\r\n startAtPercentage: 30,\r\n target: {\r\n values: [0, 1.5, 0],\r\n frames: {\r\n fps: 120,\r\n total: 120,\r\n },\r\n },\r\n },\r\n },\r\n tablet: {\r\n primaryModeAnim: {\r\n endFrame: 0,\r\n duration: 3000,\r\n fromMode: {\r\n laptop: {\r\n duration: 1500,\r\n },\r\n tablet: {\r\n duration: 250,\r\n },\r\n studio: {\r\n duration: 3000,\r\n },\r\n },\r\n },\r\n secondaryModeAnim: {\r\n endFrame: 9.7666,\r\n duration: 3000,\r\n fromMode: {\r\n laptop: {\r\n duration: 1500,\r\n },\r\n tablet: {\r\n duration: 250,\r\n },\r\n studio: {\r\n duration: 3000,\r\n },\r\n },\r\n },\r\n cameraData: {\r\n startAtPercentage: 30,\r\n target: {\r\n values: [0, 2.5, 0.085],\r\n frames: {\r\n fps: 120,\r\n total: 120,\r\n },\r\n },\r\n },\r\n },\r\n studio: {\r\n primaryModeAnim: {\r\n endFrame: 8.2573,\r\n duration: 3000,\r\n fromMode: {\r\n laptop: {\r\n duration: 1500,\r\n },\r\n tablet: {\r\n duration: 3000,\r\n },\r\n studio: {\r\n duration: 250,\r\n },\r\n },\r\n },\r\n secondaryModeAnim: {\r\n endFrame: 9.7666,\r\n duration: 3000,\r\n fromMode: {\r\n laptop: {\r\n duration: 1500,\r\n },\r\n tablet: {\r\n duration: 3000,\r\n },\r\n studio: {\r\n duration: 250,\r\n },\r\n },\r\n },\r\n cameraData: {\r\n startAtPercentage: 40,\r\n target: {\r\n values: [0, 1.5, 2],\r\n frames: {\r\n fps: 120,\r\n total: 120,\r\n },\r\n },\r\n },\r\n },\r\n },\r\n sidePanelDetails: {\r\n title: \"general.menu.go4.name\",\r\n cta: \"https://www.microsoft.com/surface/business/surface-go-4\",\r\n seeItInAction: false,\r\n modes: {\r\n header: \"general.explorerDetailHeader.postures\",\r\n default: \"laptop\",\r\n values: {\r\n laptop: \"general.postures.laptop\",\r\n studio: \"general.postures.studio\",\r\n tablet: \"general.postures.tablet\",\r\n },\r\n },\r\n colors: [\r\n {\r\n header: \"general.explorerDetailHeader.deviceColor\",\r\n default: \"platinum\",\r\n colorValues: {\r\n platinum: {\r\n name: \"general.color.platinum\",\r\n swatchColor: \"#86888a\",\r\n colorChanges: [\r\n {\r\n materials: [\"07_Go_2_Base\", \"07_Go_2_Buttons_Misc\"],\r\n color: \"#E4E4E4\",\r\n },\r\n ],\r\n },\r\n },\r\n },\r\n {\r\n header: \"general.explorerDetailHeader.surfaceGoTypeCoverColor\",\r\n default: \"platinum\",\r\n colorValues: {\r\n platinum: {\r\n name: \"general.color.platinum\",\r\n swatchColor: \"#86888a\",\r\n colorChanges: [\r\n {\r\n materials: [\"07_Go_2_Board_Fabric\", \"07_Go_2_Board_Plastic\"],\r\n color: \"#DFDFDF\",\r\n },\r\n {\r\n materials: [\"07_Go_2_Trackpad\", \"07_Go_2_Keys\"],\r\n color: \"#8E8E8F\",\r\n },\r\n ],\r\n },\r\n poppyRed: {\r\n name: \"general.color.poppyRed\",\r\n swatchColor: \"#8e3c31\",\r\n colorChanges: [\r\n {\r\n materials: [\"07_Go_2_Board_Fabric\", \"07_Go_2_Board_Plastic\"],\r\n color: \"#FF8E76\",\r\n },\r\n {\r\n materials: [\"07_Go_2_Trackpad\", \"07_Go_2_Keys\"],\r\n color: \"#A45342\",\r\n },\r\n ],\r\n },\r\n iceBlue: {\r\n name: \"general.color.iceBlue\",\r\n swatchColor: \"#a2acc0\",\r\n colorChanges: [\r\n {\r\n materials: [\"07_Go_2_Board_Fabric\", \"07_Go_2_Board_Plastic\"],\r\n color: \"#E3EFFF\",\r\n },\r\n {\r\n materials: [\"07_Go_2_Trackpad\", \"07_Go_2_Keys\"],\r\n color: \"#A0A8B4\",\r\n },\r\n ],\r\n },\r\n black: {\r\n name: \"general.color.black\",\r\n swatchColor: \"#272727\",\r\n colorChanges: [\r\n {\r\n materials: [\"07_Go_2_Board_Fabric\", \"07_Go_2_Board_Plastic\"],\r\n color: \"#4E4E4E\",\r\n },\r\n {\r\n materials: [\"07_Go_2_Trackpad\", \"07_Go_2_Keys\"],\r\n color: \"#2A2A2A\",\r\n },\r\n ],\r\n },\r\n },\r\n },\r\n {\r\n header: \"general.explorerDetailHeader.surfacePenColor\",\r\n default: \"platinum\",\r\n colorValues: {\r\n platinum: {\r\n name: \"general.color.platinum\",\r\n swatchColor: \"#86888a\",\r\n colorChanges: [\r\n {\r\n materials: [\"05_Pro_7_P2_Base\"],\r\n color: \"#F0F0F0\",\r\n },\r\n {\r\n materials: [\r\n \"05_Pro_7_P2_Base_End\",\r\n \"05_Pro_7_P2_Base_Tip\",\r\n \"05_Pro_7_P2_Button\",\r\n \"05_Pro_7_P2_Eraser\",\r\n ],\r\n color: \"#FFFEFE\",\r\n },\r\n ],\r\n },\r\n poppyRed: {\r\n name: \"general.color.poppyRed\",\r\n swatchColor: \"#90362E\",\r\n colorChanges: [\r\n {\r\n materials: [\"05_Pro_7_P2_Base\"],\r\n color: \"#EC7361\",\r\n },\r\n {\r\n materials: [\r\n \"05_Pro_7_P2_Base_End\",\r\n \"05_Pro_7_P2_Base_Tip\",\r\n \"05_Pro_7_P2_Button\",\r\n \"05_Pro_7_P2_Eraser\",\r\n ],\r\n color: \"#FF826F\",\r\n },\r\n ],\r\n },\r\n iceBlue: {\r\n name: \"general.color.iceBlue\",\r\n swatchColor: \"#a2acc0\",\r\n colorChanges: [\r\n {\r\n materials: [\"05_Pro_7_P2_Base\"],\r\n color: \"#95BCDB\",\r\n },\r\n {\r\n materials: [\r\n \"05_Pro_7_P2_Base_End\",\r\n \"05_Pro_7_P2_Base_Tip\",\r\n \"05_Pro_7_P2_Button\",\r\n \"05_Pro_7_P2_Eraser\",\r\n ],\r\n color: \"#A3CCED\",\r\n },\r\n ],\r\n },\r\n black: {\r\n name: \"general.color.black\",\r\n swatchColor: \"#272727\",\r\n colorChanges: [\r\n {\r\n materials: [\r\n \"05_Pro_7_P2_Base\",\r\n \"05_Pro_7_P2_Base_End\",\r\n \"05_Pro_7_P2_Base_Tip\",\r\n \"05_Pro_7_P2_Button\",\r\n \"05_Pro_7_P2_Eraser\",\r\n ],\r\n color: \"#656565\",\r\n },\r\n ],\r\n },\r\n },\r\n },\r\n ],\r\n },\r\n disclaimer: [\r\n \"devices.go4.data.disclaimer.1\",\r\n \"devices.go4.data.disclaimer.2\",\r\n \"devices.go4.data.disclaimer.3\",\r\n \"devices.go4.data.disclaimer.4\",\r\n \"devices.go4.data.disclaimer.5\"\r\n ],\r\n};\r\n","export default {\r\n name: \"Surface Pro 8\",\r\n displayName: \"general.menu.pro8.name\",\r\n filename: \"Delia_Exp_08C_Tablet.glb\",\r\n additionalFilenames: [\"Delia_Exp_08_Keyboard.glb\"],\r\n cameraRadius: {\r\n default: 13,\r\n lowerLimit: 9,\r\n upperLimit: 13,\r\n },\r\n tooltips: {\r\n \"01_Display\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.pro8.data.tooltips.01_Display.title\",\r\n description: \"devices.pro8.data.tooltips.01_Display.description\",\r\n ranges: {\r\n laptop: [15, 165],\r\n studio: [15, 165],\r\n tablet: [15, 165],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [\r\n -0.055235553474025825,\r\n 6.398323386000843,\r\n -12.04173480192076,\r\n ],\r\n },\r\n },\r\n },\r\n \"02_Camera\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.pro8.data.tooltips.02_Camera.title\",\r\n description: \"devices.pro8.data.tooltips.02_Camera.description\",\r\n ranges: {\r\n laptop: [0, 360],\r\n studio: [0, 360],\r\n tablet: [0, 360],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [1.8585153426935157, 6.782916263394854, -11.731867561259417],\r\n },\r\n },\r\n },\r\n \"03_Microphones\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.pro8.data.tooltips.03_Microphones.title\",\r\n description: \"devices.pro8.data.tooltips.03_Microphones.description\",\r\n ranges: {\r\n laptop: [10, 150],\r\n studio: [10, 150],\r\n tablet: [10, 150],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [7.934031795332894, 7.411107102555453, -8.432671717360114],\r\n },\r\n },\r\n },\r\n \"04_Speakers\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.pro8.data.tooltips.04_Speakers.title\",\r\n description: \"devices.pro8.data.tooltips.04_Speakers.description\",\r\n ranges: {\r\n laptop: [125, 235],\r\n studio: [125, 235],\r\n tablet: [125, 235],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-12.14049686492806, 4.358976421366894, -3.665322590815173],\r\n },\r\n },\r\n },\r\n \"05_Weight\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.pro8.data.tooltips.05_Weight.title\",\r\n description: \"devices.pro8.data.tooltips.05_Weight.description\",\r\n ranges: {\r\n laptop: [5, 110],\r\n studio: [5, 110],\r\n tablet: [5, 110],\r\n },\r\n top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [7.15751254072625, 3.7095728577031335, -10.624867152856458],\r\n },\r\n },\r\n },\r\n \"06_Kickstand\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.pro8.data.tooltips.06_Kickstand.title\",\r\n description: \"devices.pro8.data.tooltips.06_Kickstand.description\",\r\n ranges: {\r\n laptop: [305, 40],\r\n studio: [305, 40],\r\n tablet: [305, 40],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [11.920208318229358, 3.7134830967080297, 4.6913885184029995],\r\n },\r\n },\r\n },\r\n // \"07_Camera\": {\r\n // type: \"tooltip\",\r\n // data: {\r\n // title: \"devices.pro8.data.tooltips.07_Camera.title\",\r\n // description: \"devices.pro8.data.tooltips.07_Camera.description\",\r\n // ranges: {\r\n // laptop: [5, 360],\r\n // studio: [5, 360],\r\n // tablet: [5, 360],\r\n // },\r\n // },\r\n // cameraData: {\r\n // position: {\r\n // values: [0.4648044734409642, 4.383886556594912, -12.667563109381394],\r\n // },\r\n // },\r\n // },\r\n \"08_Removeable_SSD\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.pro8.data.tooltips.08_Removeable_SSD.title\",\r\n description: \"devices.pro8.data.tooltips.08_Removeable_SSD.description\",\r\n ranges: {\r\n laptop: [315, 345],\r\n studio: [315, 345],\r\n tablet: [315, 345],\r\n },\r\n top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [10.785233042682563, 3.7095728577031335, 6.913503887431455],\r\n },\r\n },\r\n },\r\n \"09_LTE_Advanced\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.pro8.data.tooltips.09_LTE_Advanced.title\",\r\n description: \"devices.pro8.data.tooltips.09_LTE_Advanced.description\",\r\n ranges: {\r\n laptop: [200, 310],\r\n studio: [200, 310],\r\n tablet: [200, 310],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-5.239034999961931, 4.9377525639745725, 11.39009962985663],\r\n },\r\n },\r\n },\r\n \"10_Colors\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.pro8.data.tooltips.10_Colors.title\",\r\n description: \"devices.pro8.data.tooltips.10_Colors.description\",\r\n ranges: {\r\n laptop: [230, 340],\r\n studio: [230, 340],\r\n tablet: [230, 340],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [5.7085752326319295, 3.7752455130402365, 11.455803187414299],\r\n },\r\n },\r\n },\r\n // \"11_Card_Slot\": {\r\n // type: \"tooltip\",\r\n // data: {\r\n // title: \"devices.pro8.data.tooltips.11_Card_Slot.title\",\r\n // description: \"devices.pro8.data.tooltips.11_Card_Slot.description\",\r\n // ranges: {\r\n // laptop: [300, 15],\r\n // studio: [300, 15],\r\n // tablet: [300, 15],\r\n // },\r\n // },\r\n // cameraData: {\r\n // position: {\r\n // values: [12.038151902919225, 4.1735537013773385, 4.1152168069366395],\r\n // },\r\n // },\r\n // },\r\n \"12_Connections\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.pro8.data.tooltips.12_Connections.title\",\r\n description: \"devices.pro8.data.tooltips.12_Connections.description\",\r\n ranges: {\r\n laptop: [305, 50],\r\n studio: [305, 50],\r\n tablet: [305, 50],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [12.766168453786767, 3.7095728577031335, -1.0689858727042],\r\n },\r\n },\r\n },\r\n \"13_Battery\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.pro8.data.tooltips.13_Battery.title\",\r\n description: \"devices.pro8.data.tooltips.13_Battery.description\",\r\n ranges: {\r\n laptop: [220, 320],\r\n studio: [220, 320],\r\n tablet: [220, 320],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-2.3389930474945566, 4.764959933435861, 12.364026373185663],\r\n },\r\n },\r\n },\r\n \"14_Performance\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.pro8.data.tooltips.14_Performance.title\",\r\n description: \"devices.pro8.data.tooltips.14_Performance.description\",\r\n ranges: {\r\n laptop: [225, 315],\r\n studio: [225, 315],\r\n tablet: [225, 315],\r\n },\r\n ght: \"300px\",\r\n },\r\n cameraData: {\r\n position: {\r\n values: [2.876055124427362, 4.195104731810104, 12.388087721913738],\r\n },\r\n },\r\n },\r\n \"15_Pen\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.pro8.data.tooltips.15_Pen.title\",\r\n description: \"devices.pro8.data.tooltips.15_Pen.description\",\r\n ranges: {\r\n laptop: [35, 170],\r\n studio: [35, 170],\r\n tablet: [35, 170],\r\n },\r\n top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-2.437376545096348, 6.611801534242716, -11.701652902557315],\r\n },\r\n },\r\n },\r\n \"16_Type_Cover\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.pro8.data.tooltips.16_Type_Cover.title\",\r\n description: \"devices.pro8.data.tooltips.16_Type_Cover.description\",\r\n ranges: {\r\n laptop: [45, 195],\r\n studio: [45, 195],\r\n tablet: [45, 195],\r\n },\r\n top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-2.421588401289955, 6.2953218400199, -11.838107875220858],\r\n },\r\n },\r\n },\r\n \"17_Buttons\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.pro8.data.tooltips.17_Buttons.title\",\r\n description: \"devices.pro8.data.tooltips.17_Buttons.description\",\r\n ranges: {\r\n laptop: [135, 245],\r\n studio: [135, 245],\r\n tablet: [135, 245],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-12.585808448063567, 4.739763217819103, 0.31837085469330717],\r\n },\r\n },\r\n },\r\n \"18_Move_B\": {\r\n type: \"actionDot\",\r\n data: {\r\n text: \"general.kickstand\",\r\n camDegOffset: null,\r\n arrows: {\r\n left: true,\r\n right: true,\r\n },\r\n ranges: {\r\n laptop: [160, 210],\r\n studio: [160, 210],\r\n tablet: false,\r\n },\r\n },\r\n },\r\n },\r\n animations: {\r\n primary: {\r\n intro: {\r\n duration: 3500,\r\n startFrame: 0.844,\r\n endFrame: 4.4949,\r\n },\r\n },\r\n secondary: {\r\n intro: {\r\n duration: 3500,\r\n startFrame: 0.844,\r\n endFrame: 4.4949,\r\n },\r\n },\r\n },\r\n modes: {\r\n laptop: {\r\n primaryModeAnim: {\r\n endFrame: 4.4949,\r\n duration: 3000,\r\n fromMode: {\r\n laptop: {\r\n duration: 250,\r\n },\r\n tablet: {\r\n duration: 1500,\r\n },\r\n studio: {\r\n duration: 1500,\r\n },\r\n },\r\n },\r\n secondaryModeAnim: {\r\n endFrame: 4.4949,\r\n duration: 3000,\r\n fromMode: {\r\n laptop: {\r\n duration: 250,\r\n },\r\n tablet: {\r\n duration: 1500,\r\n },\r\n studio: {\r\n duration: 1500,\r\n },\r\n },\r\n },\r\n cameraData: {\r\n startAtPercentage: 30,\r\n target: {\r\n values: [0, 1.5, 0],\r\n frames: {\r\n fps: 120,\r\n total: 120,\r\n },\r\n },\r\n },\r\n },\r\n tablet: {\r\n primaryModeAnim: {\r\n endFrame: 0,\r\n duration: 3000,\r\n fromMode: {\r\n laptop: {\r\n duration: 1500,\r\n },\r\n tablet: {\r\n duration: 250,\r\n },\r\n studio: {\r\n duration: 3000,\r\n },\r\n },\r\n },\r\n secondaryModeAnim: {\r\n endFrame: 9.7666,\r\n duration: 3000,\r\n fromMode: {\r\n laptop: {\r\n duration: 1500,\r\n },\r\n tablet: {\r\n duration: 250,\r\n },\r\n studio: {\r\n duration: 3000,\r\n },\r\n },\r\n },\r\n cameraData: {\r\n startAtPercentage: 30,\r\n target: {\r\n values: [0, 2.5, 0.085],\r\n frames: {\r\n fps: 120,\r\n total: 120,\r\n },\r\n },\r\n },\r\n },\r\n studio: {\r\n primaryModeAnim: {\r\n endFrame: 8.2573,\r\n duration: 3000,\r\n fromMode: {\r\n laptop: {\r\n duration: 1500,\r\n },\r\n tablet: {\r\n duration: 3000,\r\n },\r\n studio: {\r\n duration: 250,\r\n },\r\n },\r\n },\r\n secondaryModeAnim: {\r\n endFrame: 9.7666,\r\n duration: 3000,\r\n fromMode: {\r\n laptop: {\r\n duration: 1500,\r\n },\r\n tablet: {\r\n duration: 3000,\r\n },\r\n studio: {\r\n duration: 250,\r\n },\r\n },\r\n },\r\n cameraData: {\r\n startAtPercentage: 40,\r\n target: {\r\n values: [0, 1.5, 2],\r\n frames: {\r\n fps: 120,\r\n total: 120,\r\n },\r\n },\r\n },\r\n },\r\n },\r\n draggable: {\r\n touchpointMesh: \"18_Move_B\",\r\n referencePoint: {\r\n x: -2.93,\r\n y: 0.3,\r\n z: 0.09,\r\n },\r\n zDiff: true,\r\n dragAxis: [0, 0, 1],\r\n zLimits: [0.09, 3.94],\r\n ranges: { inMin: 0, inMax: 3.86, outMin: 2.4558, outMax: 8.2573 },\r\n isPickableInDegRange: [160, 210],\r\n },\r\n sidePanelDetails: {\r\n title: \"general.menu.pro8.name\",\r\n cta: \"https://www.microsoft.com/en-us/surface/business/surface-pro-8\",\r\n seeItInAction: false,\r\n modes: {\r\n header: \"general.explorerDetailHeader.postures\",\r\n default: \"laptop\",\r\n values: {\r\n laptop: \"general.postures.laptop\",\r\n studio: \"general.postures.studio\",\r\n tablet: \"general.postures.tablet\",\r\n },\r\n },\r\n colors: [\r\n {\r\n header: \"general.explorerDetailHeader.deviceColor\",\r\n default: \"platinum\",\r\n colorValues: {\r\n platinum: {\r\n name: \"general.color.platinum\",\r\n swatchColor: \"#c3c3c3\",\r\n colorChanges: [\r\n {\r\n materials: [\"Surface_Metal_2\", \"Surface_SSD\"],\r\n color: \"#ACACAC\",\r\n },\r\n {\r\n materials: [\r\n \"Surface_Gray\",\r\n \"Surface_Metal_Shine\",\r\n \"Surface_Metal_2_Vent\",\r\n \"Surface_Metal_2_Buttons\",\r\n ],\r\n color: \"#747474\",\r\n },\r\n ],\r\n },\r\n graphite: {\r\n name: \"general.color.graphite\",\r\n swatchColor: \"#3c3c3c\",\r\n colorChanges: [\r\n {\r\n materials: [\r\n \"Surface_Metal_2\",\r\n \"Surface_Metal_Shine\",\r\n \"Surface_SSD\",\r\n ],\r\n color: \"#272727\",\r\n },\r\n {\r\n materials: [\r\n \"Surface_Gray\",\r\n \"Surface_Metal_2_Vent\",\r\n \"Surface_Metal_2_Buttons\",\r\n ],\r\n color: \"#515151\",\r\n },\r\n ],\r\n },\r\n },\r\n },\r\n {\r\n header: \"general.explorerDetailHeader.surfacePro_KeyBoardColor\",\r\n default: \"black\",\r\n colorValues: {\r\n platinum: {\r\n name: \"general.color.platinum\",\r\n swatchColor: \"#86888a\",\r\n colorChanges: [\r\n {\r\n materials: [\"Surface_Board\"],\r\n color: \"#7E7E7E\",\r\n },\r\n {\r\n materials: [\"Surface_Keys_Track\"],\r\n color: \"#6E6F6F\",\r\n },\r\n ],\r\n },\r\n poppyRed: {\r\n name: \"general.color.poppyRed\",\r\n swatchColor: \"#8e3c31\",\r\n colorChanges: [\r\n {\r\n materials: [\"Surface_Board\"],\r\n color: \"#B15E4F\",\r\n },\r\n {\r\n materials: [\"Surface_Keys_Track\"],\r\n color: \"#904D41\",\r\n },\r\n ],\r\n },\r\n iceBlue: {\r\n name: \"general.color.iceBlue\",\r\n swatchColor: \"#a2acc0\",\r\n colorChanges: [\r\n {\r\n materials: [\"Surface_Board\"],\r\n color: \"#7F8D97\",\r\n },\r\n {\r\n materials: [\"Surface_Keys_Track\"],\r\n color: \"#6A767F\",\r\n },\r\n ],\r\n },\r\n black: {\r\n name: \"general.color.black\",\r\n swatchColor: \"#272727\",\r\n colorChanges: [\r\n {\r\n materials: [\"Surface_Board\"],\r\n color: \"#2E2E2E\",\r\n },\r\n {\r\n materials: [\"Surface_Keys_Track\"],\r\n color: \"#303030\",\r\n },\r\n ],\r\n },\r\n },\r\n },\r\n ],\r\n },\r\n disclaimer: [\r\n \"devices.pro8.data.disclaimer.1\",\r\n \"devices.pro8.data.disclaimer.2\",\r\n \"devices.pro8.data.disclaimer.3\",\r\n \"devices.pro8.data.disclaimer.4\",\r\n \"devices.pro8.data.disclaimer.5\",\r\n \"devices.pro8.data.disclaimer.6\",\r\n \"devices.pro8.data.disclaimer.7\",\r\n \"devices.pro8.data.disclaimer.8\",\r\n \"devices.pro8.data.disclaimer.9\",\r\n ],\r\n};\r\n","export default {\r\n name: \"Surface Pro 10\",\r\n displayName: \"general.menu.pro10.name\",\r\n filename: \"Pro_9_Exp_06_Tablet.glb\",\r\n additionalFilenames: [\"Pro_9_Exp_06_Keyboard.glb\"],\r\n cameraRadius: {\r\n default: 13,\r\n lowerLimit: 9,\r\n upperLimit: 13,\r\n },\r\n tooltips: {\r\n \"01_Display\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.pro10.data.tooltips.01_Display.title\",\r\n description: \"devices.pro10.data.tooltips.01_Display.description\",\r\n // modelRanges: {\r\n // pro10: [15, 165],\r\n // pro9_5G: [15, 165],\r\n // },\r\n ranges: {\r\n laptop: [15, 165],\r\n studio: [15, 165],\r\n tablet: [15, 165],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [\r\n -0.055235553474025825,\r\n 6.398323386000843,\r\n -12.04173480192076,\r\n ],\r\n },\r\n },\r\n },\r\n \"02_Camera\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.pro10.data.tooltips.02_Camera.title\",\r\n description: \"devices.pro10.data.tooltips.02_Camera.description\",\r\n // modelRanges: {\r\n // pro10: [0, 360],\r\n // pro9_5G: [0, 360],\r\n // },\r\n ranges: {\r\n laptop: [0, 360],\r\n studio: [0, 360],\r\n tablet: [0, 360],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [1.8585153426935157, 6.782916263394854, -11.731867561259417],\r\n },\r\n },\r\n },\r\n \"03_Microphones\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.pro10.data.tooltips.03_Microphones.title\",\r\n description: \"devices.pro10.data.tooltips.03_Microphones.description\",\r\n // modelRanges: {\r\n // pro10: [10, 150],\r\n // pro9_5G: [10, 150],\r\n // },\r\n ranges: {\r\n laptop: [10, 150],\r\n studio: [10, 150],\r\n tablet: [10, 150],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [7.934031795332894, 7.411107102555453, -8.432671717360114],\r\n },\r\n },\r\n },\r\n \"04_Speakers\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.pro10.data.tooltips.04_Speakers.title\",\r\n description: \"devices.pro10.data.tooltips.04_Speakers.description\",\r\n // modelRanges: {\r\n // pro10: [125, 235],\r\n // pro9_5G: [125, 235],\r\n // },\r\n ranges: {\r\n laptop: [125, 235],\r\n studio: [125, 235],\r\n tablet: [125, 235],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-12.14049686492806, 4.358976421366894, -3.665322590815173],\r\n },\r\n },\r\n },\r\n \"05_Weight\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.pro10.data.tooltips.05_Weight.title\",\r\n description: \"devices.pro10.data.tooltips.05_Weight.description\",\r\n // modelRanges: {\r\n // pro10: [5, 110],\r\n // pro9_5G: [5, 110],\r\n // },\r\n ranges: {\r\n laptop: [5, 110],\r\n studio: [5, 110],\r\n tablet: [5, 110],\r\n },\r\n top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [7.15751254072625, 3.7095728577031335, -10.624867152856458],\r\n },\r\n },\r\n },\r\n \"06_Kickstand\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.pro10.data.tooltips.06_Kickstand.title\",\r\n description: \"devices.pro10.data.tooltips.06_Kickstand.description\",\r\n // modelRanges: {\r\n // pro10: [305, 40],\r\n // pro9_5G: [305, 40],\r\n // },\r\n ranges: {\r\n laptop: [305, 40],\r\n studio: [305, 40],\r\n tablet: [305, 40],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [11.920208318229358, 3.7134830967080297, 4.6913885184029995],\r\n },\r\n },\r\n },\r\n \"08_Removeable_SSD\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.pro10.data.tooltips.08_Removeable_SSD.title\",\r\n description:\r\n \"devices.pro10.data.tooltips.08_Removeable_SSD.description\",\r\n // modelRanges: {\r\n // pro10: [315, 345],\r\n // pro9_5G: [315, 345],\r\n // },\r\n ranges: {\r\n laptop: [315, 345],\r\n studio: [315, 345],\r\n tablet: [315, 345],\r\n },\r\n top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [10.785233042682563, 3.7095728577031335, 6.913503887431455],\r\n },\r\n },\r\n },\r\n \"12_Connections\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.pro10.data.tooltips.12_Connections.title\",\r\n description: \"devices.pro10.data.tooltips.12_Connections.description\",\r\n // modelRanges: {\r\n // pro10: [305, 50],\r\n // pro9_5G: [305, 50],\r\n // },\r\n ranges: {\r\n laptop: [305, 50],\r\n studio: [305, 50],\r\n tablet: [305, 50],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [12.766168453786767, 3.7095728577031335, -1.0689858727042],\r\n },\r\n },\r\n },\r\n \"13_Battery\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.pro10.data.tooltips.13_Battery.title\",\r\n description: \"devices.pro10.data.tooltips.13_Battery.description\",\r\n // modelRanges: {\r\n // pro10: [220, 320],\r\n // pro9_5G: [220, 320],\r\n // },\r\n ranges: {\r\n laptop: [220, 320],\r\n studio: [220, 320],\r\n tablet: [220, 320],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-2.3389930474945566, 4.764959933435861, 12.364026373185663],\r\n },\r\n },\r\n },\r\n \"14_Performance\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.pro10.data.tooltips.14_Performance.title\",\r\n description: \"devices.pro10.data.tooltips.14_Performance.description\",\r\n // modelRanges: {\r\n // pro10: [225, 315],\r\n // pro9_5G: [225, 315],\r\n // },\r\n ranges: {\r\n laptop: [225, 315],\r\n studio: [225, 315],\r\n tablet: [225, 315],\r\n },\r\n ght: \"300px\",\r\n },\r\n cameraData: {\r\n position: {\r\n values: [2.876055124427362, 4.195104731810104, 12.388087721913738],\r\n },\r\n },\r\n },\r\n \"15_Pen\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.pro10.data.tooltips.15_Pen.title\",\r\n description: \"devices.pro10.data.tooltips.15_Pen.description\",\r\n // modelRanges: {\r\n // pro10: [35, 170],\r\n // pro9_5G: [35, 170],\r\n // },\r\n ranges: {\r\n laptop: [35, 170],\r\n studio: false,\r\n tablet: false,\r\n },\r\n top: true,\r\n },\r\n hideForPostures: [\"studio\", \"tablet\"],\r\n cameraData: {\r\n position: {\r\n values: [-2.437376545096348, 6.611801534242716, -11.701652902557315],\r\n },\r\n },\r\n },\r\n \"16_Type_Cover\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.pro10.data.tooltips.16_Type_Cover.title\",\r\n description: \"devices.pro10.data.tooltips.16_Type_Cover.description\",\r\n // modelRanges: {\r\n // pro10: [45, 195],\r\n // pro9_5G: [45, 195],\r\n // },\r\n ranges: {\r\n laptop: [45, 195],\r\n studio: false,\r\n tablet: false,\r\n },\r\n top: true,\r\n },\r\n hideForPostures: [\"studio\", \"tablet\"],\r\n cameraData: {\r\n position: {\r\n values: [-2.421588401289955, 6.2953218400199, -11.838107875220858],\r\n },\r\n },\r\n },\r\n \"17_Buttons\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.pro10.data.tooltips.17_Buttons.title\",\r\n description: \"devices.pro10.data.tooltips.17_Buttons.description\",\r\n // modelRanges: {\r\n // pro10: [135, 245],\r\n // pro9_5G: [135, 245],\r\n // },\r\n ranges: {\r\n laptop: [135, 245],\r\n studio: [135, 245],\r\n tablet: [135, 245],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-12.585808448063567, 4.739763217819103, 0.31837085469330717],\r\n },\r\n },\r\n },\r\n \"17_CoPilot\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.pro10.data.tooltips.17_CoPilot.title\",\r\n description: \"devices.pro10.data.tooltips.17_CoPilot.description\",\r\n // modelRanges: {\r\n // pro10: [135, 245],\r\n // pro9_5G: [135, 245],\r\n // },\r\n ranges: {\r\n laptop: [5, 110],\r\n studio: false,\r\n tablet: false,\r\n },\r\n },\r\n hideForPostures: [\"studio\", \"tablet\"],\r\n cameraData: {\r\n position: {\r\n values: [7.15751254072625, 3.7095728577031335, -10.624867152856458],\r\n },\r\n },\r\n },\r\n \"18_Move_B\": {\r\n type: \"actionDot\",\r\n data: {\r\n text: \"general.kickstand\",\r\n camDegOffset: null,\r\n arrows: {\r\n left: true,\r\n right: true,\r\n },\r\n // modelRanges: {\r\n // pro10: [160, 210],\r\n // pro9_5G: [160, 210],\r\n // },\r\n ranges: {\r\n laptop: [160, 210],\r\n studio: [160, 210],\r\n tablet: false,\r\n },\r\n },\r\n },\r\n \"09_LTE_Advanced\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.pro10.data.tooltips.09_LTE_Advanced.title\",\r\n description: \"devices.pro10.data.tooltips.09_LTE_Advanced.description\",\r\n // modelRanges: {\r\n // pro10: false,\r\n // pro9_5G: [210, 320],\r\n // },\r\n ranges: {\r\n laptop: [210, 320],\r\n studio: [210, 320],\r\n tablet: [210, 320],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [2.876055124427362, 4.195104731810104, 12.388087721913738],\r\n },\r\n },\r\n },\r\n \"20_Security\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.pro10.data.tooltips.20_Security.title\",\r\n description: \"devices.pro10.data.tooltips.20_Security.description\",\r\n ranges: {\r\n laptop: [225, 315],\r\n studio: [225, 315],\r\n tablet: [225, 315],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [2.876055124427362, 4.195104731810104, 12.388087721913738],\r\n },\r\n },\r\n },\r\n \"21_NFC\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.pro10.data.tooltips.21_NFC.title\",\r\n description: \"devices.pro10.data.tooltips.21_NFC.description\",\r\n // modelRanges: {\r\n // pro10: [135, 245],\r\n // pro9_5G: [135, 245],\r\n // },\r\n ranges: {\r\n laptop: [135, 245],\r\n studio: [135, 245],\r\n tablet: [135, 245],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-12.585808448063567, 4.739763217819103, 0.31837085469330717],\r\n },\r\n },\r\n },\r\n },\r\n animations: {\r\n primary: {\r\n intro: {\r\n duration: 3500,\r\n startFrame: 0.844,\r\n endFrame: 4.4949,\r\n },\r\n },\r\n secondary: {\r\n intro: {\r\n duration: 3500,\r\n startFrame: 0.844,\r\n endFrame: 4.4949,\r\n },\r\n },\r\n },\r\n modes: {\r\n laptop: {\r\n primaryModeAnim: {\r\n endFrame: 4.4949,\r\n duration: 3000,\r\n fromMode: {\r\n laptop: {\r\n duration: 250,\r\n },\r\n tablet: {\r\n duration: 1500,\r\n },\r\n studio: {\r\n duration: 1500,\r\n },\r\n },\r\n },\r\n secondaryModeAnim: {\r\n endFrame: 4.4949,\r\n duration: 3000,\r\n fromMode: {\r\n laptop: {\r\n duration: 250,\r\n },\r\n tablet: {\r\n duration: 1500,\r\n },\r\n studio: {\r\n duration: 1500,\r\n },\r\n },\r\n },\r\n cameraData: {\r\n startAtPercentage: 30,\r\n target: {\r\n values: [0, 1.5, 0],\r\n frames: {\r\n fps: 120,\r\n total: 120,\r\n },\r\n },\r\n },\r\n },\r\n tablet: {\r\n primaryModeAnim: {\r\n endFrame: 0,\r\n duration: 3000,\r\n fromMode: {\r\n laptop: {\r\n duration: 1500,\r\n },\r\n tablet: {\r\n duration: 250,\r\n },\r\n studio: {\r\n duration: 3000,\r\n },\r\n },\r\n },\r\n secondaryModeAnim: {\r\n endFrame: 9.4,\r\n duration: 3000,\r\n fromMode: {\r\n laptop: {\r\n duration: 1500,\r\n },\r\n tablet: {\r\n duration: 250,\r\n },\r\n studio: {\r\n duration: 3000,\r\n },\r\n },\r\n },\r\n cameraData: {\r\n startAtPercentage: 30,\r\n target: {\r\n values: [0, 2.5, 0.085],\r\n frames: {\r\n fps: 120,\r\n total: 120,\r\n },\r\n },\r\n },\r\n },\r\n studio: {\r\n primaryModeAnim: {\r\n endFrame: 8.2573,\r\n duration: 3000,\r\n fromMode: {\r\n laptop: {\r\n duration: 1500,\r\n },\r\n tablet: {\r\n duration: 3000,\r\n },\r\n studio: {\r\n duration: 250,\r\n },\r\n },\r\n },\r\n secondaryModeAnim: {\r\n endFrame: 9.4,\r\n duration: 3000,\r\n fromMode: {\r\n laptop: {\r\n duration: 1500,\r\n },\r\n tablet: {\r\n duration: 3000,\r\n },\r\n studio: {\r\n duration: 250,\r\n },\r\n },\r\n },\r\n cameraData: {\r\n startAtPercentage: 40,\r\n target: {\r\n values: [0, 1.5, 2],\r\n frames: {\r\n fps: 120,\r\n total: 120,\r\n },\r\n },\r\n },\r\n },\r\n },\r\n draggable: {\r\n touchpointMesh: \"18_Move_B\",\r\n referencePoint: {\r\n x: -2.93,\r\n y: 0.3,\r\n z: 0.09,\r\n },\r\n zDiff: true,\r\n dragAxis: [0, 0, 1],\r\n zLimits: [0.09, 3.94],\r\n ranges: { inMin: 0, inMax: 3.86, outMin: 2.4558, outMax: 8.2573 },\r\n isPickableInDegRange: [160, 210],\r\n },\r\n // changeModels: {\r\n // default: \"pro10\",\r\n // dontChangeTooltips: false,\r\n // dontChangeMaterials: true,\r\n // pro10: {\r\n // hide: {\r\n // pro9_5G: 0,\r\n // },\r\n // show: {\r\n // pro10: 1,\r\n // },\r\n // meshesToHide: [],\r\n // },\r\n // pro9_5G: {\r\n // hide: {\r\n // pro10: 0,\r\n // },\r\n // show: {\r\n // pro9_5G: 1,\r\n // },\r\n // meshesToHide: [\"Antenna\"],\r\n // },\r\n // },\r\n sidePanelDetails: {\r\n title: \"general.menu.pro10.name\",\r\n cta: \"https://aka.ms/exploresurfacelmp\",\r\n seeItInAction: false,\r\n modes: {\r\n header: \"general.explorerDetailHeader.postures\",\r\n default: \"laptop\",\r\n values: {\r\n laptop: \"general.postures.laptop\",\r\n studio: \"general.postures.studio\",\r\n tablet: \"general.postures.tablet\",\r\n },\r\n },\r\n // meshToggles: {\r\n // },\r\n // models: {\r\n // header: \"general.explorerDetailHeader.models\",\r\n // default: \"pro10\",\r\n // values: {\r\n // pro10: \"general.menu.pro10.name\",\r\n // pro9_5G: \"general.menu.pro10.name5G\",\r\n // },\r\n // },\r\n colors: [\r\n {\r\n header: \"general.explorerDetailHeader.deviceColor\",\r\n default: \"platinum\",\r\n colorValues: {\r\n platinum: {\r\n name: \"general.color.platinum\",\r\n swatchColor: \"#c3c3c3\",\r\n colorChanges: [\r\n {\r\n materials: [\"Surface_Metal_2\", \"Surface_SSD\"],\r\n color: \"#ACACAC\",\r\n },\r\n {\r\n materials: [\"Surface_Metal_Shine\"],\r\n color: \"#747474\",\r\n setEmissiveColor: \"#545454\",\r\n },\r\n {\r\n materials: [\"Surface_Gray_Ant\"],\r\n color: \"#a1a1a1\",\r\n },\r\n {\r\n materials: [\"Surface_Gray\", \"Surface_Metal_2_Vent\"],\r\n color: \"#747474\",\r\n },\r\n {\r\n materials: [\"Surface_Gray_Ports\"],\r\n color: \"#545454\",\r\n },\r\n ],\r\n },\r\n black: {\r\n name: \"general.color.black\",\r\n swatchColor: \"#3c3c3c\",\r\n colorChanges: [\r\n {\r\n materials: [\"Surface_Metal_2\", \"Surface_SSD\"],\r\n color: \"#272727\",\r\n },\r\n {\r\n materials: [\"Surface_Metal_Shine\"],\r\n color: \"#272727\",\r\n setEmissiveColor: \"#111\",\r\n },\r\n {\r\n materials: [\"Surface_Gray_Ant\"],\r\n color: \"#383838\",\r\n },\r\n {\r\n materials: [\"Surface_Gray\", \"Surface_Metal_2_Vent\"],\r\n color: \"#515151\",\r\n },\r\n {\r\n materials: [\"Surface_Gray_Ports\"],\r\n color: \"#111\",\r\n },\r\n ],\r\n },\r\n },\r\n },\r\n {\r\n header: \"general.explorerDetailHeader.surfacePro10_KeyboardColor\",\r\n default: \"black\",\r\n colorValues: {\r\n platinum: {\r\n name: \"general.color.platinum\",\r\n swatchColor: \"#86888a\",\r\n colorChanges: [\r\n {\r\n materials: [\"Surface_Board\"],\r\n color: \"#686869\",\r\n },\r\n {\r\n materials: [\"Pen_Barrel\", \"Pen_Tips\"],\r\n color: \"#272727\",\r\n },\r\n {\r\n materials: [\"Pen_WIndows\"],\r\n color: \"#E6E6E6\",\r\n },\r\n {\r\n materials: [\"Surface_Keys_Track\"],\r\n color: \"#9a9a9a\",\r\n },\r\n ],\r\n },\r\n black: {\r\n name: \"general.color.black\",\r\n swatchColor: \"#272727\",\r\n colorChanges: [\r\n {\r\n materials: [\"Surface_Board\", \"Pen_Barrel\", \"Pen_Tips\"],\r\n color: \"#272727\",\r\n },\r\n {\r\n materials: [\"Pen_WIndows\"],\r\n color: \"#E6E6E6\",\r\n },\r\n {\r\n materials: [\"Surface_Keys_Track\"],\r\n color: \"#303030\",\r\n },\r\n ],\r\n },\r\n },\r\n },\r\n ],\r\n },\r\n disclaimer: [\r\n \"devices.pro10.data.disclaimer.1\",\r\n \"devices.pro10.data.disclaimer.2\",\r\n \"devices.pro10.data.disclaimer.3\",\r\n \"devices.pro10.data.disclaimer.4\",\r\n \"devices.pro10.data.disclaimer.5\",\r\n \"devices.pro10.data.disclaimer.6\",\r\n \"devices.pro10.data.disclaimer.7\",\r\n \"devices.pro10.data.disclaimer.8\",\r\n \"devices.pro10.data.disclaimer.9\",\r\n \"devices.pro10.data.disclaimer.10\",\r\n // \"devices.pro10.data.disclaimer.11\",\r\n ],\r\n};\r\n","export default {\r\n name: \"Surface Pro\",\r\n displayName: \"general.menu.pro11.name\",\r\n filename: \"Pro_10_6_Tablet.glb\",\r\n additionalFilenames: [\"Pro_10_5_Keyboard.glb\"],\r\n cameraRadius: {\r\n default: 13,\r\n lowerLimit: 9,\r\n upperLimit: 13,\r\n },\r\n tooltips: {\r\n \"01_Display\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.pro11.data.tooltips.01_Display.title\",\r\n description: \"devices.pro11.data.tooltips.01_Display.description\",\r\n // modelRanges: {\r\n // pro11: [15, 165],\r\n // pro11_keyboard: [15, 165],\r\n // },\r\n ranges: {\r\n laptop: [15, 165],\r\n studio: [15, 165],\r\n tablet: [15, 165],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [\r\n -0.055235553474025825,\r\n 6.398323386000843,\r\n -12.04173480192076,\r\n ],\r\n },\r\n },\r\n },\r\n \"02_Camera\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.pro11.data.tooltips.02_Camera.title\",\r\n description: \"devices.pro11.data.tooltips.02_Camera.description\",\r\n // modelRanges: {\r\n // pro11: [0, 360],\r\n // pro11_keyboard: [0, 360],\r\n // },\r\n ranges: {\r\n laptop: [0, 360],\r\n studio: [0, 360],\r\n tablet: [0, 360],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [1.8585153426935157, 6.782916263394854, -11.731867561259417],\r\n },\r\n },\r\n },\r\n \"03_Microphones\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.pro11.data.tooltips.03_Microphones.title\",\r\n description: \"devices.pro11.data.tooltips.03_Microphones.description\",\r\n // modelRanges: {\r\n // pro11: [10, 150],\r\n // pro11_keyboard: [10, 150],\r\n // },\r\n ranges: {\r\n laptop: [10, 150],\r\n studio: [10, 150],\r\n tablet: [10, 150],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [7.934031795332894, 7.411107102555453, -8.432671717360114],\r\n },\r\n },\r\n },\r\n \"04_Speakers\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.pro11.data.tooltips.04_Speakers.title\",\r\n description: \"devices.pro11.data.tooltips.04_Speakers.description\",\r\n // modelRanges: {\r\n // pro11: [125, 235],\r\n // pro11_keyboard: [125, 235],\r\n // },\r\n ranges: {\r\n laptop: [125, 235],\r\n studio: [125, 235],\r\n tablet: [125, 235],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-12.14049686492806, 4.358976421366894, -3.665322590815173],\r\n },\r\n },\r\n },\r\n \"05_Weight\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.pro11.data.tooltips.05_Weight.title\",\r\n description: \"devices.pro11.data.tooltips.05_Weight.description\",\r\n // modelRanges: {\r\n // pro11: [5, 110],\r\n // pro11_keyboard: [5, 110],\r\n // },\r\n ranges: {\r\n laptop: [5, 110],\r\n studio: [5, 110],\r\n tablet: [5, 110],\r\n },\r\n top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [7.15751254072625, 3.7095728577031335, -10.624867152856458],\r\n },\r\n },\r\n },\r\n \"06_Kickstand\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.pro11.data.tooltips.06_Kickstand.title\",\r\n description: \"devices.pro11.data.tooltips.06_Kickstand.description\",\r\n // modelRanges: {\r\n // pro11: [305, 40],\r\n // pro11_keyboard: [305, 40],\r\n // },\r\n ranges: {\r\n laptop: [305, 40],\r\n studio: [305, 40],\r\n tablet: [305, 40],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [11.920208318229358, 3.7134830967080297, 4.6913885184029995],\r\n },\r\n },\r\n },\r\n \"08_Removeable_SSD\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.pro11.data.tooltips.08_Removeable_SSD.title\",\r\n description: \"devices.pro11.data.tooltips.08_Removeable_SSD.description\",\r\n // modelRanges: {\r\n // pro11: [315, 345],\r\n // pro11_keyboard: [315, 345],\r\n // },\r\n ranges: {\r\n laptop: [315, 345],\r\n studio: [315, 345],\r\n tablet: [315, 345],\r\n },\r\n top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [10.785233042682563, 3.7095728577031335, 6.913503887431455],\r\n },\r\n },\r\n },\r\n \"12_Connections\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.pro11.data.tooltips.12_Connections.title\",\r\n description: \"devices.pro11.data.tooltips.12_Connections.description\",\r\n // modelRanges: {\r\n // pro11: [305, 50],\r\n // pro11_keyboard: [305, 50],\r\n // },\r\n ranges: {\r\n laptop: [305, 50],\r\n studio: [305, 50],\r\n tablet: [305, 50],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [12.766168453786767, 3.7095728577031335, -1.0689858727042],\r\n },\r\n },\r\n },\r\n \"13_Battery\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.pro11.data.tooltips.13_Battery.title\",\r\n description: \"devices.pro11.data.tooltips.13_Battery.description\",\r\n // modelRanges: {\r\n // pro11: [220, 320],\r\n // pro11_keyboard: [220, 320],\r\n // },\r\n ranges: {\r\n laptop: [220, 320],\r\n studio: [220, 320],\r\n tablet: [220, 320],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-2.3389930474945566, 4.764959933435861, 12.364026373185663],\r\n },\r\n },\r\n },\r\n \"14_Performance\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.pro11.data.tooltips.14_Performance.title\",\r\n description: \"devices.pro11.data.tooltips.14_Performance.description\",\r\n // modelRanges: {\r\n // pro11: [225, 315],\r\n // pro11_keyboard: [225, 315],\r\n // },\r\n ranges: {\r\n laptop: [225, 315],\r\n studio: [225, 315],\r\n tablet: [225, 315],\r\n },\r\n ght: \"300px\",\r\n },\r\n cameraData: {\r\n position: {\r\n values: [2.876055124427362, 4.195104731810104, 12.388087721913738],\r\n },\r\n },\r\n },\r\n \"01_Touch_Toba\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.pro11.data.tooltips.15_Pen.title\",\r\n description: \"devices.pro11.data.tooltips.15_Pen.description\",\r\n // modelRanges: {\r\n // pro11: false,\r\n // pro11_keyboard: [35, 170],\r\n // },\r\n ranges: {\r\n laptop: [35, 170],\r\n studio: false,\r\n tablet: false,\r\n },\r\n top: true,\r\n },\r\n hideForPostures: [\"studio\", \"tablet\"],\r\n cameraData: {\r\n position: {\r\n values: [-2.437376545096348, 6.611801534242716, -11.701652902557315],\r\n },\r\n },\r\n },\r\n \"02_Touch_Toba\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.pro11.data.tooltips.16_Type_Cover.title\",\r\n description: \"devices.pro11.data.tooltips.16_Type_Cover.description\",\r\n // modelRanges: {\r\n // pro11: false,\r\n // pro11_keyboard: [45, 195],\r\n // },\r\n ranges: {\r\n laptop: [45, 195],\r\n studio: false,\r\n tablet: false,\r\n },\r\n top: true,\r\n },\r\n hideForPostures: [\"studio\", \"tablet\"],\r\n cameraData: {\r\n position: {\r\n values: [-2.421588401289955, 6.2953218400199, -11.838107875220858],\r\n },\r\n },\r\n },\r\n \"17_Buttons\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.pro11.data.tooltips.17_Buttons.title\",\r\n description: \"devices.pro11.data.tooltips.17_Buttons.description\",\r\n // modelRanges: {\r\n // pro11: [135, 245],\r\n // pro11_keyboard: [135, 245],\r\n // },\r\n ranges: {\r\n laptop: [135, 245],\r\n studio: [135, 245],\r\n tablet: [135, 245],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-12.585808448063567, 4.739763217819103, 0.31837085469330717],\r\n },\r\n },\r\n },\r\n \"18_Move_B\": {\r\n type: \"actionDot\",\r\n data: {\r\n text: \"general.kickstand\",\r\n camDegOffset: null,\r\n arrows: {\r\n left: true,\r\n right: true,\r\n },\r\n // modelRanges: {\r\n // pro11: [160, 210],\r\n // pro11_keyboard: [160, 210],\r\n // },\r\n ranges: {\r\n laptop: [161, 210], // 160, 210\r\n studio: [161, 210], // 160, 210\r\n tablet: false,\r\n },\r\n },\r\n },\r\n // \"19_Antenna\": {\r\n // type: \"tooltip\",\r\n // data: {\r\n // title: \"devices.pro11.data.tooltips.19_Antenna.title\",\r\n // description: \"devices.pro11.data.tooltips.19_Antenna.description\",\r\n // modelRanges: {\r\n // pro11: false,\r\n // pro11_keyboard: [210, 320],\r\n // },\r\n // ranges: {\r\n // laptop: [210, 320],\r\n // studio: [210, 320],\r\n // tablet: [210, 320],\r\n // },\r\n // },\r\n // cameraData: {\r\n // position: {\r\n // values: [-2.01759963782811, 10.055539945840565, 9.577683850313827],\r\n // },\r\n // },\r\n // },\r\n \"20_Security\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.pro11.data.tooltips.20_Security.title\",\r\n description: \"devices.pro11.data.tooltips.20_Security.description\",\r\n // modelRanges: {\r\n // pro11: [225, 315],\r\n // pro11_keyboard: [225, 315],\r\n // },\r\n ranges: {\r\n laptop: [225, 315],\r\n studio: [225, 315],\r\n tablet: [225, 315],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [2.876055124427362, 4.195104731810104, 12.388087721913738],\r\n },\r\n },\r\n },\r\n \"21_NFC\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.pro11.data.tooltips.21_NFC.title\",\r\n description: \"devices.pro11.data.tooltips.21_NFC.description\",\r\n // modelRanges: {\r\n // pro11: [135, 245],\r\n // pro11_keyboard: [135, 245],\r\n // },\r\n ranges: {\r\n laptop: [135, 245],\r\n studio: [135, 245],\r\n tablet: [135, 245],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-12.585808448063567, 4.739763217819103, 0.31837085469330717],\r\n },\r\n },\r\n },\r\n },\r\n animations: {\r\n primary: {\r\n intro: {\r\n duration: 3500,\r\n startFrame: 0.844,\r\n endFrame: 4.4949,\r\n },\r\n },\r\n secondary: {\r\n intro: {\r\n duration: 3500,\r\n startFrame: 0.844,\r\n endFrame: 5.050, // 4.4949\r\n },\r\n },\r\n },\r\n modes: {\r\n laptop: {\r\n primaryModeAnim: {\r\n endFrame: 4.4949,\r\n duration: 3000,\r\n fromMode: {\r\n laptop: {\r\n duration: 250,\r\n },\r\n tablet: {\r\n duration: 1500,\r\n },\r\n studio: {\r\n duration: 1500,\r\n },\r\n },\r\n },\r\n secondaryModeAnim: {\r\n endFrame: 5.050, //4.4949\r\n duration: 3000,\r\n fromMode: {\r\n laptop: {\r\n duration: 250,\r\n },\r\n tablet: {\r\n duration: 1500,\r\n },\r\n studio: {\r\n duration: 1500,\r\n },\r\n },\r\n },\r\n cameraData: {\r\n startAtPercentage: 30,\r\n target: {\r\n values: [0, 1.5, 0],\r\n frames: {\r\n fps: 120,\r\n total: 120,\r\n },\r\n },\r\n },\r\n },\r\n tablet: {\r\n primaryModeAnim: {\r\n endFrame: 0,\r\n duration: 3000,\r\n fromMode: {\r\n laptop: {\r\n duration: 1500,\r\n },\r\n tablet: {\r\n duration: 250,\r\n },\r\n studio: {\r\n duration: 3000,\r\n },\r\n },\r\n },\r\n secondaryModeAnim: {\r\n endFrame: 11, // 9.4\r\n duration: 3000,\r\n fromMode: {\r\n laptop: {\r\n duration: 1500,\r\n },\r\n tablet: {\r\n duration: 250,\r\n },\r\n studio: {\r\n duration: 3000,\r\n },\r\n },\r\n },\r\n cameraData: {\r\n startAtPercentage: 30,\r\n target: {\r\n values: [0, 2.5, 0.085],\r\n frames: {\r\n fps: 120,\r\n total: 120,\r\n },\r\n },\r\n },\r\n },\r\n studio: {\r\n primaryModeAnim: {\r\n endFrame: 9.0000, // 8.2573\r\n duration: 3000,\r\n fromMode: {\r\n laptop: {\r\n duration: 1500,\r\n },\r\n tablet: {\r\n duration: 3000,\r\n },\r\n studio: {\r\n duration: 250,\r\n },\r\n },\r\n },\r\n secondaryModeAnim: {\r\n endFrame: 11, // 9.4\r\n duration: 3000,\r\n fromMode: {\r\n laptop: {\r\n duration: 1500,\r\n },\r\n tablet: {\r\n duration: 3000,\r\n },\r\n studio: {\r\n duration: 250,\r\n },\r\n },\r\n },\r\n cameraData: {\r\n startAtPercentage: 40,\r\n target: {\r\n values: [0, 1.5, 2],\r\n frames: {\r\n fps: 120,\r\n total: 120,\r\n },\r\n },\r\n },\r\n },\r\n },\r\n draggable: {\r\n touchpointMesh: \"18_Move_B\",\r\n referencePoint: {\r\n x: -2.93,\r\n y: 0.3,\r\n z: 0.09,\r\n },\r\n zDiff: true,\r\n dragAxis: [0, 0, 1],\r\n zLimits: [0.09, 3.94],\r\n ranges: { inMin: 0, inMax: 3.86, outMin: 1.700, outMax: 9.000 }, // outMin 2.4558 outMax 8.2573\r\n isPickableInDegRange: [160, 210],\r\n },\r\n // changeModels: {\r\n // default: \"pro10\",\r\n // dontChangeTooltips: false,\r\n // dontChangeMaterials: true,\r\n // pro10: {\r\n // hide: {\r\n // pro9_5G: 0,\r\n // },\r\n // show: {\r\n // pro10: 1,\r\n // },\r\n // meshesToHide: [],\r\n // },\r\n // pro9_5G: {\r\n // hide: {\r\n // pro10: 0,\r\n // },\r\n // show: {\r\n // pro9_5G: 1,\r\n // },\r\n // meshesToHide: [\"Antenna\"],\r\n // },\r\n // },\r\n sidePanelDetails: {\r\n title: \"general.menu.pro11.menuName\",\r\n cta: \"https://aka.ms/ExploreSurfaceBRP\",\r\n seeItInAction: false,\r\n modes: {\r\n header: \"general.explorerDetailHeader.postures\",\r\n default: \"laptop\",\r\n values: {\r\n laptop: \"general.postures.laptop\",\r\n studio: \"general.postures.studio\",\r\n tablet: \"general.postures.tablet\",\r\n },\r\n },\r\n // meshToggles: {\r\n // },\r\n // models: {\r\n // header: \"general.explorerDetailHeader.models\",\r\n // default: \"pro10\",\r\n // values: {\r\n // pro10: \"general.menu.pro10.name\",\r\n // pro9_5G: \"general.menu.pro10.name5G\",\r\n // },\r\n // },\r\n colors: [\r\n {\r\n header: \"general.explorerDetailHeader.deviceColor\",\r\n default: \"platinum\",\r\n colorValues: {\r\n platinum: {\r\n name: \"general.color.platinum\",\r\n swatchColor: \"#c3c3c3\",\r\n colorChanges: [\r\n {\r\n materials: [\"Surface_Metal_2\", \"Surface_SSD\"],\r\n color: \"#ACACAC\",\r\n },\r\n {\r\n materials: [\"Surface_Metal_Shine\"],\r\n color: \"#747474\",\r\n setEmissiveColor: \"#545454\",\r\n },\r\n {\r\n materials: [\"Surface_Gray_Ant\"],\r\n color: \"#a1a1a1\",\r\n },\r\n {\r\n materials: [\"Surface_Gray\", \"Surface_Metal_2_Vent\"],\r\n color: \"#747474\",\r\n },\r\n {\r\n materials: [\"Surface_Gray_Ports\"],\r\n color: \"#545454\",\r\n },\r\n ],\r\n },\r\n black: {\r\n name: \"general.color.black\",\r\n swatchColor: \"#3c3c3c\",\r\n colorChanges: [\r\n {\r\n materials: [\"Surface_Metal_2\", \"Surface_SSD\"],\r\n color: \"#272727\",\r\n },\r\n {\r\n materials: [\"Surface_Metal_Shine\"],\r\n color: \"#272727\",\r\n setEmissiveColor: \"#111\",\r\n },\r\n {\r\n materials: [\"Surface_Gray_Ant\"],\r\n color: \"#383838\",\r\n },\r\n {\r\n materials: [\"Surface_Gray\", \"Surface_Metal_2_Vent\"],\r\n color: \"#515151\",\r\n },\r\n {\r\n materials: [\"Surface_Gray_Ports\"],\r\n color: \"#111\",\r\n },\r\n ],\r\n },\r\n },\r\n },\r\n {\r\n header: \"general.explorerDetailHeader.surfaceTobaColor\",\r\n default: \"black\",\r\n colorValues: {\r\n black: {\r\n name: \"general.color.black\",\r\n swatchColor: \"#272727\",\r\n colorChanges: [\r\n ],\r\n },\r\n },\r\n },\r\n ],\r\n },\r\n disclaimer: [\r\n \"devices.pro11.data.disclaimer.1\",\r\n \"devices.pro11.data.disclaimer.2\",\r\n \"devices.pro11.data.disclaimer.3\",\r\n \"devices.pro11.data.disclaimer.4\",\r\n \"devices.pro11.data.disclaimer.5\",\r\n \"devices.pro11.data.disclaimer.6\",\r\n \"devices.pro11.data.disclaimer.7\",\r\n \"devices.pro11.data.disclaimer.8\",\r\n \"devices.pro11.data.disclaimer.9\",\r\n \"devices.pro11.data.disclaimer.10\",\r\n \"devices.pro11.data.disclaimer.11\",\r\n \"devices.pro11.data.disclaimer.12\",\r\n \"devices.pro11.data.disclaimer.13\",\r\n \"devices.pro11.data.disclaimer.14\",\r\n \"devices.pro11.data.disclaimer.15\",\r\n \"devices.pro11.data.disclaimer.16\",\r\n \"devices.pro11.data.disclaimer.17\",\r\n \"devices.pro11.data.disclaimer.18\",\r\n \"devices.pro11.data.disclaimer.19\",\r\n \"devices.pro11.data.disclaimer.20\",\r\n ],\r\n};\r\n","export default {\r\n name: \"Surface Pro 9\",\r\n displayName: \"general.menu.pro9.name\",\r\n filename: \"Pro_9_Exp_04_Tablet.glb\",\r\n additionalFilenames: [\"Pro_9_Exp_04_Keyboard.glb\"],\r\n cameraRadius: {\r\n default: 13,\r\n lowerLimit: 9,\r\n upperLimit: 13,\r\n },\r\n tooltips: {\r\n \"01_Display\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.pro9.data.tooltips.01_Display.title\",\r\n description: \"devices.pro9.data.tooltips.01_Display.description\",\r\n modelRanges: {\r\n pro9: [15, 165],\r\n pro9_5G: [15, 165],\r\n },\r\n ranges: {\r\n laptop: [15, 165],\r\n studio: [15, 165],\r\n tablet: [15, 165],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [\r\n -0.055235553474025825,\r\n 6.398323386000843,\r\n -12.04173480192076,\r\n ],\r\n },\r\n },\r\n },\r\n \"02_Camera\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.pro9.data.tooltips.02_Camera.title\",\r\n description: \"devices.pro9.data.tooltips.02_Camera.description\",\r\n modelRanges: {\r\n pro9: [0, 360],\r\n pro9_5G: [0, 360],\r\n },\r\n ranges: {\r\n laptop: [0, 360],\r\n studio: [0, 360],\r\n tablet: [0, 360],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [1.8585153426935157, 6.782916263394854, -11.731867561259417],\r\n },\r\n },\r\n },\r\n \"03_Microphones\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.pro9.data.tooltips.03_Microphones.title\",\r\n description: \"devices.pro9.data.tooltips.03_Microphones.description\",\r\n modelRanges: {\r\n pro9: [10, 150],\r\n pro9_5G: [10, 150],\r\n },\r\n ranges: {\r\n laptop: [10, 150],\r\n studio: [10, 150],\r\n tablet: [10, 150],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [7.934031795332894, 7.411107102555453, -8.432671717360114],\r\n },\r\n },\r\n },\r\n \"04_Speakers\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.pro9.data.tooltips.04_Speakers.title\",\r\n description: \"devices.pro9.data.tooltips.04_Speakers.description\",\r\n modelRanges: {\r\n pro9: [125, 235],\r\n pro9_5G: [125, 235],\r\n },\r\n ranges: {\r\n laptop: [125, 235],\r\n studio: [125, 235],\r\n tablet: [125, 235],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-12.14049686492806, 4.358976421366894, -3.665322590815173],\r\n },\r\n },\r\n },\r\n \"05_Weight\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.pro9.data.tooltips.05_Weight.title\",\r\n description: \"devices.pro9.data.tooltips.05_Weight.description\",\r\n modelRanges: {\r\n pro9: [5, 110],\r\n pro9_5G: [5, 110],\r\n },\r\n ranges: {\r\n laptop: [5, 110],\r\n studio: [5, 110],\r\n tablet: [5, 110],\r\n },\r\n top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [7.15751254072625, 3.7095728577031335, -10.624867152856458],\r\n },\r\n },\r\n },\r\n \"06_Kickstand\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.pro9.data.tooltips.06_Kickstand.title\",\r\n description: \"devices.pro9.data.tooltips.06_Kickstand.description\",\r\n modelRanges: {\r\n pro9: [305, 40],\r\n pro9_5G: [305, 40],\r\n },\r\n ranges: {\r\n laptop: [305, 40],\r\n studio: [305, 40],\r\n tablet: [305, 40],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [11.920208318229358, 3.7134830967080297, 4.6913885184029995],\r\n },\r\n },\r\n },\r\n \"08_Removeable_SSD\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.pro9.data.tooltips.08_Removeable_SSD.title\",\r\n description: \"devices.pro9.data.tooltips.08_Removeable_SSD.description\",\r\n modelRanges: {\r\n pro9: [315, 345],\r\n pro9_5G: [315, 345],\r\n },\r\n ranges: {\r\n laptop: [315, 345],\r\n studio: [315, 345],\r\n tablet: [315, 345],\r\n },\r\n top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [10.785233042682563, 3.7095728577031335, 6.913503887431455],\r\n },\r\n },\r\n },\r\n \"12_Connections\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.pro9.data.tooltips.12_Connections.title\",\r\n description: \"devices.pro9.data.tooltips.12_Connections.description\",\r\n modelRanges: {\r\n pro9: [305, 50],\r\n pro9_5G: [305, 50],\r\n },\r\n ranges: {\r\n laptop: [305, 50],\r\n studio: [305, 50],\r\n tablet: [305, 50],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [12.766168453786767, 3.7095728577031335, -1.0689858727042],\r\n },\r\n },\r\n },\r\n \"13_Battery\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.pro9.data.tooltips.13_Battery.title\",\r\n description: \"devices.pro9.data.tooltips.13_Battery.description\",\r\n modelRanges: {\r\n pro9: [220, 320],\r\n pro9_5G: [220, 320],\r\n },\r\n ranges: {\r\n laptop: [220, 320],\r\n studio: [220, 320],\r\n tablet: [220, 320],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-2.3389930474945566, 4.764959933435861, 12.364026373185663],\r\n },\r\n },\r\n },\r\n \"14_Performance\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.pro9.data.tooltips.14_Performance.title\",\r\n description: \"devices.pro9.data.tooltips.14_Performance.description\",\r\n modelRanges: {\r\n pro9: [225, 315],\r\n pro9_5G: [225, 315],\r\n },\r\n ranges: {\r\n laptop: [225, 315],\r\n studio: [225, 315],\r\n tablet: [225, 315],\r\n },\r\n ght: \"300px\",\r\n },\r\n cameraData: {\r\n position: {\r\n values: [2.876055124427362, 4.195104731810104, 12.388087721913738],\r\n },\r\n },\r\n },\r\n \"15_Pen\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.pro9.data.tooltips.15_Pen.title\",\r\n description: \"devices.pro9.data.tooltips.15_Pen.description\",\r\n modelRanges: {\r\n pro9: [35, 170],\r\n pro9_5G: [35, 170],\r\n },\r\n ranges: {\r\n laptop: [35, 170],\r\n studio: false,\r\n tablet: false,\r\n },\r\n top: true,\r\n },\r\n hideForPostures: [\"studio\", \"tablet\"],\r\n cameraData: {\r\n position: {\r\n values: [-2.437376545096348, 6.611801534242716, -11.701652902557315],\r\n },\r\n },\r\n },\r\n \"16_Type_Cover\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.pro9.data.tooltips.16_Type_Cover.title\",\r\n description: \"devices.pro9.data.tooltips.16_Type_Cover.description\",\r\n modelRanges: {\r\n pro9: [45, 195],\r\n pro9_5G: [45, 195],\r\n },\r\n ranges: {\r\n laptop: [45, 195],\r\n studio: false,\r\n tablet: false,\r\n },\r\n top: true,\r\n },\r\n hideForPostures: [\"studio\", \"tablet\"],\r\n cameraData: {\r\n position: {\r\n values: [-2.421588401289955, 6.2953218400199, -11.838107875220858],\r\n },\r\n },\r\n },\r\n \"17_Buttons\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.pro9.data.tooltips.17_Buttons.title\",\r\n description: \"devices.pro9.data.tooltips.17_Buttons.description\",\r\n modelRanges: {\r\n pro9: [135, 245],\r\n pro9_5G: [135, 245],\r\n },\r\n ranges: {\r\n laptop: [135, 245],\r\n studio: [135, 245],\r\n tablet: [135, 245],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-12.585808448063567, 4.739763217819103, 0.31837085469330717],\r\n },\r\n },\r\n },\r\n \"18_Move_B\": {\r\n type: \"actionDot\",\r\n data: {\r\n text: \"general.kickstand\",\r\n camDegOffset: null,\r\n arrows: {\r\n left: true,\r\n right: true,\r\n },\r\n modelRanges: {\r\n pro9: [160, 210],\r\n pro9_5G: [160, 210],\r\n },\r\n ranges: {\r\n laptop: [160, 210],\r\n studio: [160, 210],\r\n tablet: false,\r\n },\r\n },\r\n },\r\n \"19_Antenna\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.pro9.data.tooltips.19_Antenna.title\",\r\n description: \"devices.pro9.data.tooltips.19_Antenna.description\",\r\n modelRanges: {\r\n pro9: false,\r\n pro9_5G: [210, 320],\r\n },\r\n ranges: {\r\n laptop: [210, 320],\r\n studio: [210, 320],\r\n tablet: [210, 320],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-2.01759963782811, 10.055539945840565, 9.577683850313827],\r\n },\r\n },\r\n },\r\n },\r\n animations: {\r\n primary: {\r\n intro: {\r\n duration: 3500,\r\n startFrame: 0.844,\r\n endFrame: 4.4949,\r\n },\r\n },\r\n secondary: {\r\n intro: {\r\n duration: 3500,\r\n startFrame: 0.844,\r\n endFrame: 4.4949,\r\n },\r\n },\r\n },\r\n modes: {\r\n laptop: {\r\n primaryModeAnim: {\r\n endFrame: 4.4949,\r\n duration: 3000,\r\n fromMode: {\r\n laptop: {\r\n duration: 250,\r\n },\r\n tablet: {\r\n duration: 1500,\r\n },\r\n studio: {\r\n duration: 1500,\r\n },\r\n },\r\n },\r\n secondaryModeAnim: {\r\n endFrame: 4.4949,\r\n duration: 3000,\r\n fromMode: {\r\n laptop: {\r\n duration: 250,\r\n },\r\n tablet: {\r\n duration: 1500,\r\n },\r\n studio: {\r\n duration: 1500,\r\n },\r\n },\r\n },\r\n cameraData: {\r\n startAtPercentage: 30,\r\n target: {\r\n values: [0, 1.5, 0],\r\n frames: {\r\n fps: 120,\r\n total: 120,\r\n },\r\n },\r\n },\r\n },\r\n tablet: {\r\n primaryModeAnim: {\r\n endFrame: 0,\r\n duration: 3000,\r\n fromMode: {\r\n laptop: {\r\n duration: 1500,\r\n },\r\n tablet: {\r\n duration: 250,\r\n },\r\n studio: {\r\n duration: 3000,\r\n },\r\n },\r\n },\r\n secondaryModeAnim: {\r\n endFrame: 9.4,\r\n duration: 3000,\r\n fromMode: {\r\n laptop: {\r\n duration: 1500,\r\n },\r\n tablet: {\r\n duration: 250,\r\n },\r\n studio: {\r\n duration: 3000,\r\n },\r\n },\r\n },\r\n cameraData: {\r\n startAtPercentage: 30,\r\n target: {\r\n values: [0, 2.5, 0.085],\r\n frames: {\r\n fps: 120,\r\n total: 120,\r\n },\r\n },\r\n },\r\n },\r\n studio: {\r\n primaryModeAnim: {\r\n endFrame: 8.2573,\r\n duration: 3000,\r\n fromMode: {\r\n laptop: {\r\n duration: 1500,\r\n },\r\n tablet: {\r\n duration: 3000,\r\n },\r\n studio: {\r\n duration: 250,\r\n },\r\n },\r\n },\r\n secondaryModeAnim: {\r\n endFrame: 9.4,\r\n duration: 3000,\r\n fromMode: {\r\n laptop: {\r\n duration: 1500,\r\n },\r\n tablet: {\r\n duration: 3000,\r\n },\r\n studio: {\r\n duration: 250,\r\n },\r\n },\r\n },\r\n cameraData: {\r\n startAtPercentage: 40,\r\n target: {\r\n values: [0, 1.5, 2],\r\n frames: {\r\n fps: 120,\r\n total: 120,\r\n },\r\n },\r\n },\r\n },\r\n },\r\n draggable: {\r\n touchpointMesh: \"18_Move_B\",\r\n referencePoint: {\r\n x: -2.93,\r\n y: 0.3,\r\n z: 0.09,\r\n },\r\n zDiff: true,\r\n dragAxis: [0, 0, 1],\r\n zLimits: [0.09, 3.94],\r\n ranges: { inMin: 0, inMax: 3.86, outMin: 2.4558, outMax: 8.2573 },\r\n isPickableInDegRange: [160, 210],\r\n },\r\n changeModels: {\r\n default: \"pro9\",\r\n dontChangeTooltips: false,\r\n dontChangeMaterials: true,\r\n pro9: {\r\n hide: {\r\n pro9_5G: 0,\r\n },\r\n show: {\r\n pro9: 1,\r\n },\r\n meshesToHide: [],\r\n },\r\n pro9_5G: {\r\n hide: {\r\n pro9: 0,\r\n },\r\n show: {\r\n pro9_5G: 1,\r\n },\r\n meshesToHide: [\"Antenna\"],\r\n },\r\n },\r\n sidePanelDetails: {\r\n title: \"general.menu.pro9.name\",\r\n cta: \"https://www.microsoft.com/en-us/surface/business/surface-pro-9\",\r\n seeItInAction: false,\r\n modes: {\r\n header: \"general.explorerDetailHeader.postures\",\r\n default: \"laptop\",\r\n values: {\r\n laptop: \"general.postures.laptop\",\r\n studio: \"general.postures.studio\",\r\n tablet: \"general.postures.tablet\",\r\n },\r\n },\r\n // meshToggles: {\r\n // },\r\n models: {\r\n header: \"general.explorerDetailHeader.models\",\r\n default: \"pro9\",\r\n values: {\r\n pro9: \"general.menu.pro9.name\",\r\n pro9_5G: \"general.menu.pro9.name5G\",\r\n },\r\n },\r\n colorsByModel: {\r\n pro9: [\r\n {\r\n header: \"general.explorerDetailHeader.deviceColor\",\r\n default: \"platinum\",\r\n colorValues: {\r\n platinum: {\r\n name: \"general.color.platinum\",\r\n swatchColor: \"#c3c3c3\",\r\n colorChanges: [\r\n {\r\n materials: [\"Surface_Metal_2\", \"Surface_SSD\"],\r\n color: \"#ACACAC\",\r\n },\r\n {\r\n materials: [\"Surface_Metal_Shine\"],\r\n color: \"#747474\",\r\n setEmissiveColor: \"#545454\",\r\n },\r\n {\r\n materials: [\"Surface_Gray_Ant\"],\r\n color: \"#a1a1a1\",\r\n },\r\n {\r\n materials: [\"Surface_Gray\", \"Surface_Metal_2_Vent\"],\r\n color: \"#747474\",\r\n },\r\n {\r\n materials: [\"Surface_Gray_Ports\"],\r\n color: \"#545454\",\r\n },\r\n ],\r\n },\r\n graphite: {\r\n name: \"general.color.graphite\",\r\n swatchColor: \"#3c3c3c\",\r\n colorChanges: [\r\n {\r\n materials: [\"Surface_Metal_2\", \"Surface_SSD\"],\r\n color: \"#272727\",\r\n },\r\n {\r\n materials: [\"Surface_Metal_Shine\"],\r\n color: \"#272727\",\r\n setEmissiveColor: \"#111\",\r\n },\r\n {\r\n materials: [\"Surface_Gray_Ant\"],\r\n color: \"#383838\",\r\n },\r\n {\r\n materials: [\"Surface_Gray\", \"Surface_Metal_2_Vent\"],\r\n color: \"#515151\",\r\n },\r\n {\r\n materials: [\"Surface_Gray_Ports\"],\r\n color: \"#111\",\r\n },\r\n ],\r\n },\r\n forest: {\r\n name: \"general.color.forest\",\r\n swatchColor: \"#858d77\",\r\n colorChanges: [\r\n {\r\n materials: [\"Surface_Metal_2\", \"Surface_SSD\"],\r\n color: \"#565947\",\r\n },\r\n {\r\n materials: [\"Surface_Metal_Shine\"],\r\n color: \"#565947\",\r\n setEmissiveColor: \"#414436\",\r\n },\r\n {\r\n materials: [\"Surface_Gray\", \"Surface_Metal_2_Vent\"],\r\n color: \"#565947\",\r\n },\r\n {\r\n materials: [\"Surface_Gray_Ports\"],\r\n color: \"#434537\",\r\n },\r\n ],\r\n },\r\n sapphire: {\r\n name: \"general.color.sapphire\",\r\n swatchColor: \"#6e98c0\",\r\n colorChanges: [\r\n {\r\n materials: [\"Surface_Metal_2\", \"Surface_SSD\"],\r\n color: \"#687694\",\r\n },\r\n {\r\n materials: [\"Surface_Metal_Shine\"],\r\n color: \"#687694\",\r\n setEmissiveColor: \"#232e45\",\r\n },\r\n {\r\n materials: [\"Surface_Gray\", \"Surface_Metal_2_Vent\"],\r\n color: \"#5b6982\",\r\n },\r\n {\r\n materials: [\"Surface_Gray_Ports\"],\r\n color: \"#464f63\",\r\n },\r\n ],\r\n },\r\n },\r\n },\r\n {\r\n header: \"general.explorerDetailHeader.surfacePro_KeyBoardColor\",\r\n default: \"black\",\r\n colorValues: {\r\n platinum: {\r\n name: \"general.color.platinum\",\r\n swatchColor: \"#86888a\",\r\n colorChanges: [\r\n {\r\n materials: [\"Surface_Board\"],\r\n color: \"#686869\",\r\n },\r\n {\r\n materials: [\"Surface_Keys_Track\"],\r\n color: \"#9a9a9a\",\r\n },\r\n ],\r\n },\r\n black: {\r\n name: \"general.color.black\",\r\n swatchColor: \"#272727\",\r\n colorChanges: [\r\n {\r\n materials: [\"Surface_Board\"],\r\n color: \"#272727\",\r\n },\r\n {\r\n materials: [\"Surface_Keys_Track\"],\r\n color: \"#303030\",\r\n },\r\n ],\r\n },\r\n forest: {\r\n name: \"general.color.forest\",\r\n swatchColor: \"#858d77\",\r\n colorChanges: [\r\n {\r\n materials: [\"Surface_Board\"],\r\n color: \"#4B5640\",\r\n },\r\n {\r\n materials: [\"Surface_Keys_Track\"],\r\n color: \"#6C7C5C\",\r\n },\r\n ],\r\n },\r\n sapphire: {\r\n name: \"general.color.sapphire\",\r\n swatchColor: \"#6e98c0\",\r\n colorChanges: [\r\n {\r\n materials: [\"Surface_Board\"],\r\n color: \"#52607d\",\r\n },\r\n {\r\n materials: [\"Surface_Keys_Track\"],\r\n color: \"#6C7D9D\",\r\n },\r\n ],\r\n },\r\n },\r\n },\r\n ],\r\n pro9_5G: [\r\n {\r\n header: \"general.explorerDetailHeader.deviceColor\",\r\n default: \"platinum\",\r\n colorValues: {\r\n platinum: {\r\n name: \"general.color.platinum\",\r\n swatchColor: \"#c3c3c3\",\r\n colorChanges: [\r\n {\r\n materials: [\"Surface_Metal_2\", \"Surface_SSD\"],\r\n color: \"#ACACAC\",\r\n },\r\n {\r\n materials: [\"Surface_Metal_Shine\"],\r\n color: \"#747474\",\r\n setEmissiveColor: \"#545454\",\r\n },\r\n {\r\n materials: [\"Surface_Gray_Ant\"],\r\n color: \"#a1a1a1\",\r\n },\r\n {\r\n materials: [\"Surface_Gray\", \"Surface_Metal_2_Vent\"],\r\n color: \"#747474\",\r\n },\r\n {\r\n materials: [\"Surface_Gray_Ports\"],\r\n color: \"#545454\",\r\n },\r\n ],\r\n },\r\n },\r\n },\r\n {\r\n header: \"general.explorerDetailHeader.surfacePro_KeyBoardColor\",\r\n default: \"black\",\r\n colorValues: {\r\n platinum: {\r\n name: \"general.color.platinum\",\r\n swatchColor: \"#86888a\",\r\n colorChanges: [\r\n {\r\n materials: [\"Surface_Board\"],\r\n color: \"#686869\",\r\n },\r\n {\r\n materials: [\"Surface_Keys_Track\"],\r\n color: \"#9a9a9a\",\r\n },\r\n ],\r\n },\r\n black: {\r\n name: \"general.color.black\",\r\n swatchColor: \"#272727\",\r\n colorChanges: [\r\n {\r\n materials: [\"Surface_Board\"],\r\n color: \"#272727\",\r\n },\r\n {\r\n materials: [\"Surface_Keys_Track\"],\r\n color: \"#303030\",\r\n },\r\n ],\r\n },\r\n forest: {\r\n name: \"general.color.forest\",\r\n swatchColor: \"#858d77\",\r\n colorChanges: [\r\n {\r\n materials: [\"Surface_Board\"],\r\n color: \"#4B5640\",\r\n },\r\n {\r\n materials: [\"Surface_Keys_Track\"],\r\n color: \"#6C7C5C\",\r\n },\r\n ],\r\n },\r\n sapphire: {\r\n name: \"general.color.sapphire\",\r\n swatchColor: \"#6e98c0\",\r\n colorChanges: [\r\n {\r\n materials: [\"Surface_Board\"],\r\n color: \"#52607d\",\r\n },\r\n {\r\n materials: [\"Surface_Keys_Track\"],\r\n color: \"#6C7D9D\",\r\n },\r\n ],\r\n },\r\n },\r\n },\r\n ],\r\n },\r\n },\r\n disclaimer: [\r\n \"devices.pro9.data.disclaimer.1\",\r\n \"devices.pro9.data.disclaimer.2\",\r\n \"devices.pro9.data.disclaimer.3\",\r\n \"devices.pro9.data.disclaimer.4\",\r\n \"devices.pro9.data.disclaimer.5\",\r\n \"devices.pro9.data.disclaimer.6\",\r\n \"devices.pro9.data.disclaimer.7\",\r\n \"devices.pro9.data.disclaimer.8\",\r\n \"devices.pro9.data.disclaimer.9\",\r\n \"devices.pro9.data.disclaimer.10\",\r\n \"devices.pro9.data.disclaimer.11\",\r\n ],\r\n};\r\n","export default {\r\n name: \"Surface Studio 2+\",\r\n displayName: \"general.menu.studio2.name\",\r\n filename: \"Surface_Studio_2_EX_17.glb\",\r\n defaultPostureMode: \"desktop\",\r\n cameraRadius: {\r\n default: 26,\r\n lowerLimit: 18,\r\n upperLimit: 26,\r\n },\r\n initialCameraTarget: [0, 2.5, 0],\r\n cameraBeta: {\r\n default: 1.4,\r\n lowerLimit: 0.3,\r\n upperLimit: 1.4,\r\n },\r\n cameraAlpha: -1007.7716,\r\n fog: {\r\n start: 50,\r\n end: 90,\r\n },\r\n tooltips: {\r\n \"10_Buttons\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.studio.data.tooltips.10_Buttons.title\",\r\n description: \"devices.studio.data.tooltips.10_Buttons.description\",\r\n ranges: [300, 75],\r\n top: true,\r\n right: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [24.674809347506624, 8.419145715406266, -6.901082147765387],\r\n },\r\n },\r\n },\r\n \"04_Camera\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.studio.data.tooltips.04_Camera.title\",\r\n description: \"devices.studio.data.tooltips.04_Camera.description\",\r\n ranges: [20, 160],\r\n },\r\n cameraData: {\r\n position: {\r\n values: [0.18370177093419135, 19.13777331851838, -21.13797702280208],\r\n },\r\n },\r\n },\r\n \"06_Connections\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.studio.data.tooltips.06_Connections.title\",\r\n description: \"devices.studio.data.tooltips.06_Connections.description\",\r\n ranges: [190, 350],\r\n top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-0.40245217356506724, 8.419145715406266, 25.618532030426707],\r\n },\r\n },\r\n },\r\n \"08_Battery\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.studio.data.tooltips.08_Battery.title\",\r\n description: \"devices.studio.data.tooltips.08_Battery.description\",\r\n ranges: {\r\n desktop: [25, 215],\r\n studio: false,\r\n },\r\n changeTopBaseOnScreenWidth: true,\r\n top: false,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-22.46117622064949, 8.419145715406266, -12.327478003668727],\r\n },\r\n },\r\n },\r\n \"01_Display\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.studio.data.tooltips.01_Display.title\",\r\n description: \"devices.studio.data.tooltips.01_Display.description\",\r\n ranges: [20, 170],\r\n top: true,\r\n right: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [\r\n -11.697430721680119,\r\n 11.633676309536426,\r\n -21.929366167600847,\r\n ],\r\n },\r\n },\r\n },\r\n \"03_Mic \": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.studio.data.tooltips.03_Mic.title\",\r\n description: \"devices.studio.data.tooltips.03_Mic.description\",\r\n ranges: [15, 150],\r\n },\r\n cameraData: {\r\n position: {\r\n values: [4.926556445504174, 8.419145715406266, -25.14359148441741],\r\n },\r\n },\r\n },\r\n \"07_Performance_and_Weight\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.studio.data.tooltips.07_Performance_and_Weight.title\",\r\n description:\r\n \"devices.studio.data.tooltips.07_Performance_and_Weight.description\",\r\n ranges: {\r\n desktop: [330, 170],\r\n studio: false,\r\n },\r\n drawerWidth: \"432px\",\r\n changeTopBaseOnScreenWidth: true,\r\n top: false,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [13.378041643804737, 15.836354486792242, -18.892557112249776],\r\n },\r\n },\r\n },\r\n \"11_Screen_Handle\": {\r\n type: \"actionDot\",\r\n data: {\r\n text: \"devices.studio.data.tooltips.11_Screen_Handle.text\",\r\n camDegOffset: null,\r\n arrows: {\r\n top: true,\r\n bottom: true,\r\n },\r\n ranges: [90, 270],\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-12.79723516849872, 3.7095728577031335, 0.5903895566836647],\r\n },\r\n },\r\n },\r\n \"02_Speakers\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.studio.data.tooltips.02_Speakers.title\",\r\n description: \"devices.studio.data.tooltips.02_Speakers.description\",\r\n ranges: {\r\n desktop: [340, 200],\r\n studio: false,\r\n },\r\n changeTopBaseOnScreenWidth: true,\r\n top: false,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [4.926556445504174, 8.419145715406266, -25.14359148441741],\r\n },\r\n },\r\n },\r\n \"12_Keyboard\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.studio.data.tooltips.12_Keyboard.title\",\r\n description: \"devices.studio.data.tooltips.12_Keyboard.description\",\r\n ranges: [20, 160],\r\n top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [0.07688498458339216, 8.103761739604208, -25.388815314324802],\r\n },\r\n },\r\n },\r\n \"15_Pen\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.studio.data.tooltips.15_Pen.title\",\r\n description: \"devices.studio.data.tooltips.15_Pen.description\",\r\n ranges: [290, 90],\r\n top: true,\r\n left: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [21.877619883442623, 8.710780120567753, -12.601426844986895],\r\n },\r\n },\r\n },\r\n \"14_Mouse\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.studio.data.tooltips.14_Mouse.title\",\r\n description: \"devices.studio.data.tooltips.14_Mouse.description\",\r\n ranges: [340, 110],\r\n top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [13.60612645896262, 6.919145715406267, -21.710469224056943],\r\n },\r\n },\r\n },\r\n \"09_Weight\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.studio.data.tooltips.09_Weight.title\",\r\n description: \"devices.studio.data.tooltips.09_Weight.description\",\r\n ranges: [30, 160],\r\n top: true,\r\n right: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-9.896174522969575, 9.711558566695915, -23.354738888502485],\r\n },\r\n },\r\n },\r\n \"05_Zero_Gravity\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.studio.data.tooltips.05_Zero_Gravity.title\",\r\n description: \"devices.studio.data.tooltips.05_Zero_Gravity.description\",\r\n ranges: {\r\n desktop: [280, 355],\r\n studio: false,\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [25.47843471376018, 8.419145715406266, 2.7056451509144286],\r\n },\r\n },\r\n },\r\n },\r\n ////////////////////////////////////////////////////////////\r\n /////// The values below are evaluated getting the \"current frame\"\r\n /////// of .glb 3D file animation and dividing by 60\r\n ///////\r\n /////// inMax:\r\n /////// outMin:\r\n /////// outMax:\r\n /////// range: [ ]\r\n /////// startFrame:\r\n /////// endFrame:\r\n ///////\r\n /////// The 'duration' values are in miliseconds, so 1000 = 1s\r\n ////////////////////////////////////////////////////////////\r\n\r\n draggable: {\r\n touchpointMesh: \"11_Screen_Handle\",\r\n referencePoint: {\r\n x: -7.049,\r\n y: 1.91,\r\n z: 1.897,\r\n },\r\n dragAxis: [0, 1, 0],\r\n yDiff: true,\r\n yLimits: [1.91, 9.7548],\r\n ranges: {\r\n inMin: 0,\r\n inMax: 4.666,\r\n outMin: 3.0,\r\n outMax: 5.333,\r\n },\r\n isPickableInDegRange: [90, 270],\r\n isInModeRange: [\r\n {\r\n range: [3.0, 4.166],\r\n mode: \"studio\",\r\n },\r\n {\r\n range: [0.0, 1.0],\r\n mode: \"desktop\",\r\n },\r\n ],\r\n },\r\n animations: {\r\n primary: {\r\n intro: {\r\n duration: 3000,\r\n startFrame: 0.0,\r\n endFrame: 1.0,\r\n },\r\n },\r\n },\r\n modes: {\r\n desktop: {\r\n primaryModeAnim: {\r\n endFrame: 5.333,\r\n duration: 3000,\r\n fromMode: {\r\n studio: {\r\n duration: 1500,\r\n },\r\n },\r\n },\r\n },\r\n studio: {\r\n primaryModeAnim: {\r\n endFrame: 3.0,\r\n duration: 3000,\r\n fromMode: {\r\n studio: {\r\n duration: 1500,\r\n },\r\n },\r\n },\r\n },\r\n },\r\n sidePanelDetails: {\r\n title: \"general.menu.studio2.name\",\r\n cta: \"https://www.microsoft.com/surface/business/surface-studio-2-plus\",\r\n seeItInAction: false,\r\n modes: {\r\n header: \"general.explorerDetailHeader.postures\",\r\n default: \"desktop\",\r\n values: {\r\n desktop: \"general.postures.desktop\",\r\n studio: \"general.postures.studio\",\r\n },\r\n },\r\n },\r\n disclaimer: [\r\n \"devices.studio.data.disclaimer.1\",\r\n \"devices.studio.data.disclaimer.2\",\r\n ],\r\n};\r\n","export default {\r\n name: \"Surface Laptop Studio 2\",\r\n displayName: \"general.menu.laptopStudio2.name\",\r\n filename: \"Rowen_Exp_12.glb\",\r\n initialCameraTarget: [0, 1.5, 1.4],\r\n cameraRadius: {\r\n default: 14,\r\n lowerLimit: 11,\r\n upperLimit: 15,\r\n },\r\n tooltips: {\r\n \"01_Display\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptopStudio2.data.tooltips.01_Display.title\",\r\n description:\r\n \"devices.laptopStudio2.data.tooltips.01_Display.description\",\r\n ranges: {\r\n laptop: [20, 185],\r\n stage: [20, 185],\r\n studio: [20, 185],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [0.08035305841512144, 5.534034886406901, -12.357997650155765],\r\n },\r\n },\r\n },\r\n \"02_Camera\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptopStudio2.data.tooltips.02_Camera.title\",\r\n description:\r\n \"devices.laptopStudio2.data.tooltips.02_Camera.description\",\r\n ranges: {\r\n laptop: [5, 170],\r\n stage: [5, 170],\r\n studio: [5, 170],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [0.055364619564799364, 9.750985708579085, -10.04580358138283],\r\n },\r\n },\r\n },\r\n \"03_Microphones\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptopStudio2.data.tooltips.03_Microphones.title\",\r\n description:\r\n \"devices.laptopStudio2.data.tooltips.03_Microphones.description\",\r\n ranges: {\r\n laptop: [350, 165],\r\n stage: [350, 165],\r\n studio: [350, 165],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [3.329018281455854, 6.65877763106637, -11.458824138407133],\r\n },\r\n },\r\n },\r\n // \"04_Kickstand\": {\r\n // type: \"tooltip\",\r\n // data: {\r\n // title: \"devices.laptopStudio2.data.tooltips.04_Kickstand.title\",\r\n // description:\r\n // \"devices.laptopStudio2.data.tooltips.04_Kickstand.description\",\r\n // ranges: {\r\n // laptop: [305, 30],\r\n // stage: [305, 30],\r\n // studio: [300, 50],\r\n // },\r\n // top: true,\r\n // },\r\n // cameraData: {\r\n // position: {\r\n // values: [12.54348448844866, 3.7095728577031335, 0.6036099313356118],\r\n // },\r\n // },\r\n // },\r\n \"05_Hinge\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptopStudio2.data.tooltips.05_Hinge.title\",\r\n description: \"devices.laptopStudio2.data.tooltips.05_Hinge.description\",\r\n ranges: {\r\n laptop: [310, 40],\r\n stage: [310, 40],\r\n studio: [310, 40],\r\n },\r\n top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [12.008308407953725, 4.938229390041292, -3.6026528893197822],\r\n },\r\n },\r\n },\r\n \"06_Battery\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptopStudio2.data.tooltips.06_Battery.title\",\r\n description:\r\n \"devices.laptopStudio2.data.tooltips.06_Battery.description\",\r\n ranges: {\r\n laptop: [345, 100],\r\n stage: [355, 35],\r\n studio: false,\r\n },\r\n top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [12.35627708999961, 5.167453084291582, -1.6947579029675386],\r\n },\r\n },\r\n },\r\n \"07_Performance\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptopStudio2.data.tooltips.07_Performance.title\",\r\n description:\r\n \"devices.laptopStudio2.data.tooltips.07_Performance.description\",\r\n ranges: {\r\n laptop: [40, 130],\r\n stage: [0, 15],\r\n studio: false,\r\n },\r\n top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-2.9901779293133677, 7.616429268735574, -11.074661572779641],\r\n },\r\n },\r\n },\r\n \"08_Connections\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptopStudio2.data.tooltips.08_Connections.title\",\r\n description:\r\n \"devices.laptopStudio2.data.tooltips.08_Connections.description\",\r\n ranges: {\r\n laptop: [120, 240],\r\n stage: [120, 240],\r\n studio: [120, 240],\r\n },\r\n top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-12.779493401915035, 3.7095728577031335, 0.1042677984399049],\r\n },\r\n },\r\n },\r\n \"09_Pen_Storage\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptopStudio2.data.tooltips.09_Pen_Storage.title\",\r\n description:\r\n \"devices.laptopStudio2.data.tooltips.09_Pen_Storage.description\",\r\n ranges: {\r\n laptop: [40, 140],\r\n stage: [40, 140],\r\n studio: [40, 140],\r\n },\r\n top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [0.3382015993392712, 3.7252110113971293, -12.803673521023617],\r\n },\r\n },\r\n },\r\n \"10_Weight\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptopStudio2.data.tooltips.10_Weight.title\",\r\n description:\r\n \"devices.laptopStudio2.data.tooltips.10_Weight.description\",\r\n ranges: {\r\n laptop: [0, 135],\r\n stage: [0, 135],\r\n studio: [0, 135],\r\n },\r\n top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [9.121753816113321, 6.081956525281901, -8.049800104266483],\r\n },\r\n },\r\n },\r\n \"11_Speakers\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptopStudio2.data.tooltips.11_Speakers.title\",\r\n description:\r\n \"devices.laptopStudio2.data.tooltips.11_Speakers.description\",\r\n ranges: {\r\n laptop: [320, 60],\r\n stage: [320, 60],\r\n studio: [320, 60],\r\n },\r\n top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [12.212740122719286, 3.903330249467671, -3.751397393894204],\r\n },\r\n },\r\n },\r\n \"12_Animation\": {\r\n type: \"actionDot\",\r\n data: {\r\n text: \"devices.laptopStudio2.data.tooltips.11_Speakers.title\",\r\n camDegOffset: null,\r\n arrows: {\r\n left: true,\r\n right: true,\r\n },\r\n ranges: {\r\n laptop: [160, 200],\r\n stage: [160, 200],\r\n studio: [160, 200],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [12.212740122719286, 3.903330249467671, -3.751397393894204],\r\n },\r\n },\r\n },\r\n },\r\n draggable: {\r\n touchpointMesh: \"12_Animation\",\r\n referencePoint: {\r\n x: -3.52,\r\n y: 0.7,\r\n z: -1.99,\r\n },\r\n dragAxis: [0, 0, 1],\r\n zDiff: true,\r\n zLimits: [-1.99, 2.594],\r\n lockY: 0.7,\r\n ranges: {\r\n inMin: 4.584,\r\n inMax: 0,\r\n outMin: 1.6095,\r\n outMax: 4.4613,\r\n },\r\n isPickableInDegRange: [160, 200],\r\n // reverseDistance: true,\r\n savePosition: true,\r\n },\r\n animations: {\r\n primary: {\r\n intro: {\r\n duration: 2500,\r\n startFrame: 1.0719,\r\n endFrame: 1.6095,\r\n },\r\n },\r\n },\r\n modes: {\r\n laptop: {\r\n primaryModeAnim: {\r\n endFrame: 1.6095,\r\n duration: 3000,\r\n fromMode: {\r\n stage: {\r\n duration: 2000,\r\n },\r\n studio: {\r\n duration: 4000,\r\n },\r\n },\r\n },\r\n cameraData: {\r\n startAtPercentage: 40,\r\n target: {\r\n values: [0, 1.5, 1.4],\r\n frames: {\r\n fps: 120,\r\n total: 120,\r\n },\r\n },\r\n },\r\n },\r\n stage: {\r\n primaryModeAnim: {\r\n endFrame: 3.0182,\r\n duration: 2000,\r\n },\r\n cameraData: {\r\n startAtPercentage: 40,\r\n target: {\r\n values: [0, 1.5, 0.75],\r\n frames: {\r\n fps: 120,\r\n total: 120,\r\n },\r\n },\r\n },\r\n },\r\n studio: {\r\n primaryModeAnim: {\r\n endFrame: 4.5483,\r\n duration: 3000,\r\n fromMode: {\r\n laptop: {\r\n duration: 4000,\r\n },\r\n stage: {\r\n duration: 2000,\r\n },\r\n },\r\n },\r\n cameraData: {\r\n startAtPercentage: 40,\r\n target: {\r\n values: [0, 1.5, 0],\r\n frames: {\r\n fps: 120,\r\n total: 120,\r\n },\r\n },\r\n },\r\n },\r\n },\r\n sidePanelDetails: {\r\n title: \"general.menu.laptopStudio2.name\",\r\n cta:\r\n \"https://www.microsoft.com/en-us/surface/business/surface-laptop-studio-2\",\r\n seeItInAction: false,\r\n modes: {\r\n header: \"general.explorerDetailHeader.postures\",\r\n default: \"laptop\",\r\n values: {\r\n laptop: \"general.postures.laptop\",\r\n stage: \"general.postures.stage\",\r\n studio: \"general.postures.studio\",\r\n },\r\n },\r\n colors: [\r\n {\r\n header: \"general.explorerDetailHeader.deviceColor\",\r\n default: \"platinum\",\r\n colorValues: {\r\n platinum: {\r\n name: \"general.color.platinum\",\r\n swatchColor: \"#c3c3c3\",\r\n colorChanges: [\r\n {\r\n materials: [\r\n \"Surface_Metal_2\",\r\n \"Surface_Metal_Vent\",\r\n \"Surface_Metal_Shine\",\r\n \"Surface_Gray\",\r\n ],\r\n color: \"#E5E5E5\",\r\n setEmissiveColor: \"#898989\",\r\n },\r\n {\r\n materials: [\"Plastic\"],\r\n color: \"#919191\",\r\n setEmissiveColor: \"#7E7E7E\", // #555555\r\n },\r\n {\r\n materials: [\"Surface_Dark\"],\r\n color: \"#919191\",\r\n setEmissiveColor: \"#6E6E6E\",\r\n },\r\n {\r\n materials: [\"Surface_Dark\"],\r\n color: \"#232323\",\r\n },\r\n ],\r\n },\r\n },\r\n },\r\n ],\r\n },\r\n disclaimer: [\r\n \"devices.laptopStudio2.data.disclaimer.0\",\r\n \"devices.laptopStudio2.data.disclaimer.1\",\r\n \"devices.laptopStudio2.data.disclaimer.2\",\r\n \"devices.laptopStudio2.data.disclaimer.3\",\r\n \"devices.laptopStudio2.data.disclaimer.4\",\r\n \"devices.laptopStudio2.data.disclaimer.5\",\r\n ],\r\n};\r\n","export default {\r\n name: \"Surface Laptop Studio\",\r\n displayName: \"general.menu.laptopStudio.name\",\r\n filename: \"Rowen_Exp_11.glb\",\r\n initialCameraTarget: [0, 1.5, 1.4],\r\n cameraRadius: {\r\n default: 14,\r\n lowerLimit: 11,\r\n upperLimit: 15,\r\n },\r\n tooltips: {\r\n \"01_Display\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptopStudio.data.tooltips.01_Display.title\",\r\n description:\r\n \"devices.laptopStudio.data.tooltips.01_Display.description\",\r\n ranges: {\r\n laptop: [20, 185],\r\n stage: [20, 185],\r\n studio: [20, 185],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [0.08035305841512144, 5.534034886406901, -12.357997650155765],\r\n },\r\n },\r\n },\r\n \"02_Camera\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptopStudio.data.tooltips.02_Camera.title\",\r\n description: \"devices.laptopStudio.data.tooltips.02_Camera.description\",\r\n ranges: {\r\n laptop: [5, 170],\r\n stage: [5, 170],\r\n studio: [5, 170],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [0.055364619564799364, 9.750985708579085, -10.04580358138283],\r\n },\r\n },\r\n },\r\n \"03_Microphones\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptopStudio.data.tooltips.03_Microphones.title\",\r\n description:\r\n \"devices.laptopStudio.data.tooltips.03_Microphones.description\",\r\n ranges: {\r\n laptop: [350, 165],\r\n stage: [350, 165],\r\n studio: [350, 165],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [3.329018281455854, 6.65877763106637, -11.458824138407133],\r\n },\r\n },\r\n },\r\n // \"04_Kickstand\": {\r\n // type: \"tooltip\",\r\n // data: {\r\n // title: \"devices.laptopStudio.data.tooltips.04_Kickstand.title\",\r\n // description:\r\n // \"devices.laptopStudio.data.tooltips.04_Kickstand.description\",\r\n // ranges: {\r\n // laptop: [305, 30],\r\n // stage: [305, 30],\r\n // studio: [300, 50],\r\n // },\r\n // top: true,\r\n // },\r\n // cameraData: {\r\n // position: {\r\n // values: [12.54348448844866, 3.7095728577031335, 0.6036099313356118],\r\n // },\r\n // },\r\n // },\r\n \"05_Hinge\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptopStudio.data.tooltips.05_Hinge.title\",\r\n description: \"devices.laptopStudio.data.tooltips.05_Hinge.description\",\r\n ranges: {\r\n laptop: [310, 40],\r\n stage: [310, 40],\r\n studio: [310, 40],\r\n },\r\n top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [12.008308407953725, 4.938229390041292, -3.6026528893197822],\r\n },\r\n },\r\n },\r\n \"06_Battery\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptopStudio.data.tooltips.06_Battery.title\",\r\n description:\r\n \"devices.laptopStudio.data.tooltips.06_Battery.description\",\r\n ranges: {\r\n laptop: [345, 100],\r\n stage: [355, 35],\r\n studio: false,\r\n },\r\n top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [12.35627708999961, 5.167453084291582, -1.6947579029675386],\r\n },\r\n },\r\n },\r\n \"07_Performance\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptopStudio.data.tooltips.07_Performance.title\",\r\n description:\r\n \"devices.laptopStudio.data.tooltips.07_Performance.description\",\r\n ranges: {\r\n laptop: [40, 130],\r\n stage: [0, 15],\r\n studio: false,\r\n },\r\n top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-2.9901779293133677, 7.616429268735574, -11.074661572779641],\r\n },\r\n },\r\n },\r\n \"08_Connections\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptopStudio.data.tooltips.08_Connections.title\",\r\n description:\r\n \"devices.laptopStudio.data.tooltips.08_Connections.description\",\r\n ranges: {\r\n laptop: [120, 240],\r\n stage: [120, 240],\r\n studio: [120, 240],\r\n },\r\n top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-12.779493401915035, 3.7095728577031335, 0.1042677984399049],\r\n },\r\n },\r\n },\r\n \"09_Pen_Storage\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptopStudio.data.tooltips.09_Pen_Storage.title\",\r\n description:\r\n \"devices.laptopStudio.data.tooltips.09_Pen_Storage.description\",\r\n ranges: {\r\n laptop: [40, 140],\r\n stage: [40, 140],\r\n studio: [40, 140],\r\n },\r\n top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [0.3382015993392712, 3.7252110113971293, -12.803673521023617],\r\n },\r\n },\r\n },\r\n \"10_Weight\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptopStudio.data.tooltips.10_Weight.title\",\r\n description: \"devices.laptopStudio.data.tooltips.10_Weight.description\",\r\n ranges: {\r\n laptop: [0, 135],\r\n stage: [0, 135],\r\n studio: [0, 135],\r\n },\r\n top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [9.121753816113321, 6.081956525281901, -8.049800104266483],\r\n },\r\n },\r\n },\r\n \"11_Speakers\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.laptopStudio.data.tooltips.11_Speakers.title\",\r\n description:\r\n \"devices.laptopStudio.data.tooltips.11_Speakers.description\",\r\n ranges: {\r\n laptop: [320, 60],\r\n stage: [320, 60],\r\n studio: [320, 60],\r\n },\r\n top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [12.212740122719286, 3.903330249467671, -3.751397393894204],\r\n },\r\n },\r\n },\r\n \"12_Animation\": {\r\n type: \"actionDot\",\r\n data: {\r\n text: \"devices.laptopStudio.data.tooltips.11_Speakers.title\",\r\n camDegOffset: null,\r\n arrows: {\r\n left: true,\r\n right: true,\r\n },\r\n ranges: {\r\n laptop: [160, 200],\r\n stage: [160, 200],\r\n studio: [160, 200],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [12.212740122719286, 3.903330249467671, -3.751397393894204],\r\n },\r\n },\r\n },\r\n },\r\n draggable: {\r\n touchpointMesh: \"12_Animation\",\r\n referencePoint: {\r\n x: -3.52,\r\n y: 0.7,\r\n z: -1.99,\r\n },\r\n dragAxis: [0, 0, 1],\r\n zDiff: true,\r\n zLimits: [-1.99, 2.594],\r\n lockY: 0.7,\r\n ranges: {\r\n inMin: 4.584,\r\n inMax: 0,\r\n outMin: 1.6095,\r\n outMax: 4.4613,\r\n },\r\n isPickableInDegRange: [160, 200],\r\n // reverseDistance: true,\r\n savePosition: true,\r\n },\r\n animations: {\r\n primary: {\r\n intro: {\r\n duration: 2500,\r\n startFrame: 1.0719,\r\n endFrame: 1.6095,\r\n },\r\n },\r\n },\r\n modes: {\r\n laptop: {\r\n primaryModeAnim: {\r\n endFrame: 1.6095,\r\n duration: 3000,\r\n fromMode: {\r\n stage: {\r\n duration: 2000,\r\n },\r\n studio: {\r\n duration: 4000,\r\n },\r\n },\r\n },\r\n cameraData: {\r\n startAtPercentage: 40,\r\n target: {\r\n values: [0, 1.5, 1.4],\r\n frames: {\r\n fps: 120,\r\n total: 120,\r\n },\r\n },\r\n },\r\n },\r\n stage: {\r\n primaryModeAnim: {\r\n endFrame: 3.0182,\r\n duration: 2000,\r\n },\r\n cameraData: {\r\n startAtPercentage: 40,\r\n target: {\r\n values: [0, 1.5, 0.75],\r\n frames: {\r\n fps: 120,\r\n total: 120,\r\n },\r\n },\r\n },\r\n },\r\n studio: {\r\n primaryModeAnim: {\r\n endFrame: 4.5483,\r\n duration: 3000,\r\n fromMode: {\r\n laptop: {\r\n duration: 4000,\r\n },\r\n stage: {\r\n duration: 2000,\r\n },\r\n },\r\n },\r\n cameraData: {\r\n startAtPercentage: 40,\r\n target: {\r\n values: [0, 1.5, 0],\r\n frames: {\r\n fps: 120,\r\n total: 120,\r\n },\r\n },\r\n },\r\n },\r\n },\r\n sidePanelDetails: {\r\n title: \"general.menu.laptopStudio.name\",\r\n cta:\r\n \"https://www.microsoft.com/en-us/surface/business/surface-laptop-studio\",\r\n seeItInAction: false,\r\n modes: {\r\n header: \"general.explorerDetailHeader.postures\",\r\n default: \"laptop\",\r\n values: {\r\n laptop: \"general.postures.laptop\",\r\n stage: \"general.postures.stage\",\r\n studio: \"general.postures.studio\",\r\n },\r\n },\r\n colors: [\r\n {\r\n header: \"general.explorerDetailHeader.deviceColor\",\r\n default: \"platinum\",\r\n colorValues: {\r\n platinum: {\r\n name: \"general.color.platinum\",\r\n swatchColor: \"#c3c3c3\",\r\n colorChanges: [\r\n {\r\n materials: [\r\n \"Surface_Metal_2\",\r\n \"Surface_Metal_Vent\",\r\n \"Surface_Metal_Shine\",\r\n \"Surface_Gray\",\r\n ],\r\n color: \"#E5E5E5\",\r\n setEmissiveColor: \"#898989\",\r\n },\r\n {\r\n materials: [\"Plastic\"],\r\n color: \"#919191\",\r\n setEmissiveColor: \"#555555\",\r\n },\r\n {\r\n materials: [\"Surface_Dark\"],\r\n color: \"#232323\",\r\n },\r\n ],\r\n },\r\n },\r\n },\r\n ],\r\n },\r\n disclaimer: [\r\n \"devices.laptopStudio.data.disclaimer.0\",\r\n \"devices.laptopStudio.data.disclaimer.1\",\r\n \"devices.laptopStudio.data.disclaimer.2\",\r\n \"devices.laptopStudio.data.disclaimer.3\",\r\n \"devices.laptopStudio.data.disclaimer.4\",\r\n \"devices.laptopStudio.data.disclaimer.5\",\r\n \"devices.laptopStudio.data.disclaimer.6\",\r\n ],\r\n};\r\n","import headphonesCertTeams from \"@/assets/explorer/Teams-Certified.jpg\";\r\n\r\nexport default {\r\n name: \"Surface Headphones 2+\",\r\n displayName: \"general.menu.accessories.name\",\r\n filename: \"09_Headphones_Export16-processed.gltf\",\r\n initialCameraTarget: [0, 2, 0],\r\n cameraRadius: {\r\n default: 7.7,\r\n lowerLimit: 4,\r\n upperLimit: 7.7,\r\n },\r\n cameraBeta: {\r\n default: 1.3,\r\n lowerLimit: 0.3,\r\n upperLimit: 1.8,\r\n },\r\n tooltips: {\r\n \"07_Battery\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.headphones.data.tooltips.07_Battery.title\",\r\n description: \"devices.headphones.data.tooltips.07_Battery.description\",\r\n ranges: [300, 60],\r\n left: false,\r\n changeLeftBaseOnScreenWidth: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [4.849227819723238, 1.6193007464228384, -2.77991508652197],\r\n },\r\n allowRadiusChange: true,\r\n },\r\n },\r\n \"05_Buttons\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.headphones.data.tooltips.05_Buttons.title\",\r\n description: \"devices.headphones.data.tooltips.05_Buttons.description\",\r\n ranges: [170, 280],\r\n left: false,\r\n changeLeftBaseOnScreenWidth: true,\r\n top: false,\r\n changeTopBaseOnScreenWidth: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-3.085207165680495, 1.1400028069217978, 3.249749183880442],\r\n },\r\n allowRadiusChange: true,\r\n },\r\n },\r\n \"04_Teams\": {\r\n type: \"magnify\",\r\n data: {\r\n text: \"devices.headphones.data.tooltips.04_Teams.text\",\r\n ranges: [130, 260],\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-3.4552639564097944, 1.0249962703418056, 2.0280720589356376],\r\n },\r\n allowRadiusChange: true,\r\n },\r\n xray: {\r\n title: \"devices.headphones.data.tooltips.04_Teams.xray.title\",\r\n body: \"devices.headphones.data.tooltips.04_Teams.xray.body\",\r\n img: headphonesCertTeams,\r\n },\r\n },\r\n \"08_Charging\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.headphones.data.tooltips.08_Charging.title\",\r\n description: \"devices.headphones.data.tooltips.08_Charging.description\",\r\n ranges: [290, 100],\r\n },\r\n cameraData: {\r\n position: {\r\n values: [4.3172072727510855, 1.9804269785837145, -2.2684994634984053],\r\n },\r\n },\r\n allowRadiusChange: true,\r\n },\r\n \"06_Connections\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.headphones.data.tooltips.06_Connections.title\",\r\n description:\r\n \"devices.headphones.data.tooltips.06_Connections.description\",\r\n ranges: [150, 205],\r\n top: false,\r\n changeTopBaseOnScreenWidth: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-3.808006850392449, 1.0911916212276516, -0.8204578953470759],\r\n },\r\n },\r\n allowRadiusChange: true,\r\n },\r\n \"03_Noise_Cancel\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.headphones.data.tooltips.03_Noise_Cancel.title\",\r\n description:\r\n \"devices.headphones.data.tooltips.03_Noise_Cancel.description\",\r\n ranges: [100, 260],\r\n top: false,\r\n changeTopBaseOnScreenWidth: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-12.48286339487943, 4.970799046578586, -2.0862584906063053],\r\n },\r\n },\r\n },\r\n \"01_Speaker_A\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.headphones.data.tooltips.01_Speaker_A.title\",\r\n description:\r\n \"devices.headphones.data.tooltips.01_Speaker_A.description\",\r\n ranges: [285, 325],\r\n },\r\n cameraData: {\r\n position: {\r\n values: [9.652278736671269, 4.209572857703133, -8.423259640786654],\r\n },\r\n },\r\n },\r\n \"02_Volume_Dial\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.headphones.data.tooltips.02_Volume_Dial.title\",\r\n description:\r\n \"devices.headphones.data.tooltips.02_Volume_Dial.description\",\r\n ranges: [280, 65],\r\n top: false,\r\n changeTopBaseOnScreenWidth: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [10.737261801941488, 4.209572857703133, 6.987774809126997],\r\n },\r\n },\r\n },\r\n },\r\n animations: {\r\n primary: {\r\n intro: {\r\n duration: 3500,\r\n startFrame: 3.681,\r\n endFrame: 6.3932,\r\n },\r\n },\r\n },\r\n sidePanelDetails: {\r\n title: \"general.menu.headphones.name\",\r\n subHead: \"general.menu.headphones.subTitle\",\r\n cta:\r\n \"https://www.microsoft.com/en-us/surface/business/surface-headphones-2-plus\",\r\n colors: [\r\n {\r\n header: \"general.explorerDetailHeader.color\",\r\n default: \"black\",\r\n colorValues: {\r\n black: {\r\n name: \"general.color.blackMatte\",\r\n swatchColor: \"#272727\",\r\n colorChanges: [],\r\n meshes: {\r\n changeActiveMaterials: [\r\n {\r\n meshId: \"L_Bar\",\r\n materialId: \"09_HP_L_Bar_Dark\",\r\n },\r\n {\r\n meshId: \"L_Housing\",\r\n materialId: \"09_HP_L_Housing_Dark\",\r\n },\r\n {\r\n meshId: \"L_Muff\",\r\n materialId: \"09_HP_L_Muff_Dark\",\r\n },\r\n {\r\n meshId: \"Headband\",\r\n materialId: \"09_HP_Headband_Dark\",\r\n },\r\n {\r\n meshId: \"R-Bar\",\r\n materialId: \"09_HP_R_Bar_Dark\",\r\n },\r\n {\r\n meshId: \"R_Housing\",\r\n materialId: \"09_HP_R_Housing_Dark\",\r\n },\r\n {\r\n meshId: \"R_Muff\",\r\n materialId: \"09_HP_R_Muff_Dark\",\r\n },\r\n ],\r\n },\r\n },\r\n /*\r\n lightGray: {\r\n name: \"Light Gray\",\r\n swatchColor: \"#e3e3e3\",\r\n checkmarkColor: \"black\",\r\n colorChanges: [],\r\n meshes: {\r\n changeActiveMaterials: [\r\n {\r\n meshId: \"L_Bar\",\r\n materialId: \"09_HP_L_Bar_Light\",\r\n },\r\n {\r\n meshId: \"L_Housing\",\r\n materialId: \"09_HP_L_Housing_Light\",\r\n },\r\n {\r\n meshId: \"L_Muff\",\r\n materialId: \"09_HP_L_Muff_Light\",\r\n },\r\n {\r\n meshId: \"Headband\",\r\n materialId: \"09_HP_Headband_Light\",\r\n },\r\n {\r\n meshId: \"R-Bar\",\r\n materialId: \"09_HP_R_Bar_Light\",\r\n },\r\n {\r\n meshId: \"R_Housing\",\r\n materialId: \"09_HP_R_Housing_Light\",\r\n },\r\n {\r\n meshId: \"R_Muff\",\r\n materialId: \"09_HP_R_Muff_Light\",\r\n },\r\n ],\r\n },\r\n },\r\n */\r\n },\r\n },\r\n ],\r\n },\r\n disclaimer: [\r\n \"devices.headphones.data.disclaimer.1\",\r\n \"devices.headphones.data.disclaimer.2\",\r\n \"devices.headphones.data.disclaimer.3\",\r\n ],\r\n};\r\n","export default {\r\n name: \"Surface Pro Flex Keyboard\",\r\n displayName: \"general.menu.proFlexKeyboard.name\",\r\n filename: \"Toba_3.glb\",\r\n // initialCameraTarget: [0, 2, 0],\r\n cameraRadius: {\r\n default: 10, //13,\r\n lowerLimit: 5, //9,\r\n upperLimit: 12, //13,\r\n },\r\n tooltips: {\r\n \"06_Touch_Toba\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.proFlexKeyboard.data.tooltips.06_Touch_Toba.title\",\r\n description: \"devices.proFlexKeyboard.data.tooltips.06_Touch_Toba.description\",\r\n ranges: [0, 360]\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-0.016409718885706304, 11.04146768769451, -2.9933468034639223],\r\n },\r\n },\r\n },\r\n \"04_Touch_Toba\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.proFlexKeyboard.data.tooltips.04_Touch_Toba.title\",\r\n description: \"devices.proFlexKeyboard.data.tooltips.04_Touch_Toba.description\",\r\n ranges: [0, 360]\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-0.12954639463761625, 6.83765589782476, -8.455332474128557],\r\n },\r\n },\r\n },\r\n \"01_Touch_Toba\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.proFlexKeyboard.data.tooltips.01_Touch_Toba.title\",\r\n description: \"devices.proFlexKeyboard.data.tooltips.01_Touch_Toba.description\",\r\n ranges: [0, 360]\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-0.016409718885706304, 11.04146768769451, -2.9933468034639223],\r\n },\r\n },\r\n },\r\n \"05_Touch_Toba\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.proFlexKeyboard.data.tooltips.05_Touch_Toba.title\",\r\n description: \"devices.proFlexKeyboard.data.tooltips.05_Touch_Toba.description\",\r\n ranges: [0, 360]\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-7.953640228284124, 5.222057392419508, 4.7839205560456115],\r\n },\r\n },\r\n },\r\n },\r\n sidePanelDetails: {\r\n title: \"general.menu.proFlexKeyboard.name\",\r\n cta: \"https://aka.ms/ExploreSurfaceBRT\",\r\n seeItInAction: false,\r\n colors: [\r\n {\r\n header: \"general.explorerDetailHeader.deviceColor\",\r\n default: \"black\",\r\n colorValues: {\r\n black: {\r\n name: \"general.color.black\",\r\n swatchColor: \"#3c3c3c\",\r\n colorChanges: [\r\n ],\r\n },\r\n },\r\n },\r\n ],\r\n },\r\n disclaimer: [\r\n \"devices.proFlexKeyboard.data.disclaimer.1\",\r\n \"devices.proFlexKeyboard.data.disclaimer.2\",\r\n \"devices.proFlexKeyboard.data.disclaimer.3\",\r\n \"devices.proFlexKeyboard.data.disclaimer.4\"\r\n ],\r\n };\r\n ","export default {\r\n name: \"Surface Earbuds\",\r\n displayName: \"general.menu.earbuds.name\",\r\n filename: \"09B_Earbuds_Export10-processed.gltf\",\r\n cameraRadius: {\r\n default: 8,\r\n lowerLimit: 5,\r\n upperLimit: 8,\r\n },\r\n fog: {\r\n start: 15,\r\n end: 20,\r\n },\r\n light: {\r\n position: [2, 15, -4],\r\n direction: [1.7, -1.1, 0.65],\r\n intensity: 3.75,\r\n },\r\n tooltips: {\r\n \"01_Intuitive_Gestures\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.earbuds.data.tooltips.01_Intuitive_Gestures.title\",\r\n description:\r\n \"devices.earbuds.data.tooltips.01_Intuitive_Gestures.description\",\r\n ranges: [105, 240],\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-7.327675676565073, 4.338476037509057, -1.4994075375172307],\r\n },\r\n },\r\n },\r\n \"03_Microphone\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.earbuds.data.tooltips.03_Microphone.title\",\r\n description: \"devices.earbuds.data.tooltips.03_Microphone.description\",\r\n ranges: [130, 255],\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-7.359331167483433, 2.8597371432019285, -2.8268993028942475],\r\n },\r\n },\r\n },\r\n \"02_Speaker\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.earbuds.data.tooltips.02_Speaker.title\",\r\n description: \"devices.earbuds.data.tooltips.02_Speaker.description\",\r\n ranges: [120, 230],\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-5.519502245713909, 6.972493963311513, 1.8939125589842216],\r\n },\r\n },\r\n },\r\n },\r\n animations: {\r\n primary: {\r\n intro: {\r\n duration: 3500,\r\n startFrame: 0,\r\n endFrame: 2.5432,\r\n },\r\n },\r\n },\r\n sidePanelDetails: {\r\n title: \"general.menu.earbuds.name\",\r\n cta: \"https://www.microsoft.com/en-us/p/surface-earbuds/8r9cpq146064\",\r\n colors: [\r\n {\r\n header: \"general.explorerDetailHeader.color\",\r\n default: \"glacier\",\r\n colorValues: {\r\n glacier: {\r\n name: \"general.color.glacier\",\r\n swatchColor: \"#e3e3e3\",\r\n checkmarkColor: \"black\",\r\n colorChanges: [\r\n {\r\n materials: [\r\n \"09B_Earbuds_Left_Ear_Bud\",\r\n \"09B_Earbuds_Right_Ear_Bud\",\r\n ],\r\n color: \"#F4F4F4\",\r\n },\r\n {\r\n materials: [\"09B_Earbuds_Case\"],\r\n color: \"#D7D7D7\",\r\n },\r\n {\r\n materials: [\"09B_Earbuds_Lid\"],\r\n color: \"#eaeaea\",\r\n },\r\n ],\r\n },\r\n graphite: {\r\n name: \"general.color.graphite\",\r\n swatchColor: \"#86888a\",\r\n colorChanges: [\r\n {\r\n materials: [\r\n \"09B_Earbuds_Lid\",\r\n \"09B_Earbuds_Left_Ear_Bud\",\r\n \"09B_Earbuds_Right_Ear_Bud\",\r\n ],\r\n color: \"#858585\",\r\n },\r\n {\r\n materials: [\"09B_Earbuds_Case\"],\r\n color: \"#656565\",\r\n },\r\n ],\r\n },\r\n },\r\n },\r\n ],\r\n },\r\n};\r\n","import camera_50 from \"@/assets/explorer/hub/surface-hub-camera.gif\";\r\nimport camera_85 from \"@/assets/explorer/hub/surface-hub-camera.gif\";\r\nimport floorWallMount from \"@/assets/explorer/hub/HUB385-floor.png\";\r\nimport modularCartridge from \"@/assets/explorer/hub/modular-compute-cartridge.gif\";\r\nimport wallMount from \"@/assets/explorer/hub/HUB385-wall.png\";\r\nimport mobileStand from \"@/assets/explorer/hub/HUB385-stand.png\";\r\nimport mobileStand50 from \"@/assets/explorer/hub/HUB350-stand.png\";\r\nimport battery from \"@/assets/explorer/hub/mobile-battery.gif\";\r\nimport connection from \"@/assets/explorer/hub/buttons-and-connections-Hub.png\";\r\n\r\nimport { Vector3 } from \"@babylonjs/core\";\r\n\r\nexport default {\r\n name: \"Surface Hubs\",\r\n displayName: \"general.menu.hubs3.name\",\r\n filename: \"Exp_HUBs_32.glb\",\r\n initialCameraTarget: [0, 9.5, 0],\r\n defaultPostureMode: \"portrait\",\r\n cameraRadius: {\r\n default: 30,\r\n lowerLimit: 26.5,\r\n upperLimit: 34,\r\n },\r\n cameraAlpha: -1007.272,\r\n cameraBeta: {\r\n default: 1.3,\r\n lowerLimit: 0.25,\r\n upperLimit: 1.7,\r\n },\r\n fog: {\r\n start: 40,\r\n end: 70,\r\n },\r\n light: {\r\n direction: [-0.9, -1.5, 1.5],\r\n intensity: 3.7,\r\n },\r\n hideMeshes: [\"Cord_50\"],\r\n tooltips: {\r\n \"01_Camera_50\": {\r\n type: \"magnify\",\r\n data: {\r\n text: \"devices.hubs3.data.tooltips.01_Camera_50.text\",\r\n modelRanges: {\r\n fifty: [0, 360],\r\n eightyFive: false,\r\n },\r\n ranges: {\r\n portrait: false,\r\n landscape: [0, 360],\r\n },\r\n },\r\n hideForPostures: [\"portrait\"],\r\n duplicateTooltipId: \"16_Cam_B_50\",\r\n xray: {\r\n title: \"devices.hubs3.data.tooltips.01_Camera_50.xray.title\",\r\n body: \"devices.hubs3.data.tooltips.01_Camera_50.xray.body\",\r\n img: camera_50,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [15.589139382871691, 21.847783648349314, -20.87990928807585],\r\n },\r\n },\r\n },\r\n \"16_Cam_B_50\": {\r\n type: \"magnify\",\r\n data: {\r\n text: \"devices.hubs3.data.tooltips.01_Camera_50.text\",\r\n modelRanges: {\r\n fifty: [0, 360],\r\n eightyFive: false,\r\n },\r\n ranges: {\r\n portrait: [0, 360],\r\n landscape: false,\r\n },\r\n },\r\n hideForPostures: [\"landscape\"],\r\n duplicateTooltipId: \"01_Camera_50\",\r\n xray: {\r\n title: \"devices.hubs3.data.tooltips.01_Camera_50.xray.title\",\r\n body: \"devices.hubs3.data.tooltips.01_Camera_50.xray.body\",\r\n img: camera_50,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [15.589139382871691, 21.847783648349314, -20.87990928807585],\r\n },\r\n },\r\n },\r\n \"02_Speakers_50\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.hubs3.data.tooltips.02_Speakers_50.title\",\r\n description: \"devices.hubs3.data.tooltips.02_Speakers_50.description\",\r\n modelRanges: {\r\n fifty: [310, 55],\r\n eightyFive: false,\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [32.98090667698, 23.743938844298967, -8.817494326703084],\r\n },\r\n },\r\n },\r\n \"03_Pen_50\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.hubs3.data.tooltips.03_Pen_50.title\",\r\n description: \"devices.hubs3.data.tooltips.03_Pen_50.description\",\r\n modelRanges: {\r\n fifty: [285, 75],\r\n eightyFive: false,\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [38.45191789238999, 17.966773988507942, -18.16742902295718],\r\n },\r\n },\r\n },\r\n \"04_Fingerprint__50\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.hubs3.data.tooltips.04_Fingerprint_50.title\",\r\n description: \"devices.hubs3.data.tooltips.04_Fingerprint_50.description\",\r\n modelRanges: {\r\n fifty: [315, 50],\r\n eightyFive: false,\r\n },\r\n top: true,\r\n left: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [24.25850670883453, 13.508883819656955, -17.188766761403297],\r\n },\r\n },\r\n },\r\n \"05_Buttons_50\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.hubs3.data.tooltips.05_Buttons_50.title\",\r\n description: \"devices.hubs3.data.tooltips.05_Buttons_50.description\",\r\n modelRanges: {\r\n fifty: [330, 30],\r\n eightyFive: false,\r\n },\r\n top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [41.27727435088751, 5.213842745662236, -0.730490811033075],\r\n },\r\n },\r\n },\r\n \"06_Wireless_50\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.hubs3.data.tooltips.06_Wireless_50.title\",\r\n description: \"devices.hubs3.data.tooltips.06_Wireless_50.description\",\r\n modelRanges: {\r\n fifty: [45, 135],\r\n eightyFive: false,\r\n },\r\n top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [8.281645775406133, 1.2865647236266753, -25.983722201921246],\r\n },\r\n },\r\n },\r\n \"07_Display_50\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.hubs3.data.tooltips.07_Display_50.title\",\r\n description: \"devices.hubs3.data.tooltips.07_Display_50.description\",\r\n modelRanges: {\r\n fifty: [65, 150],\r\n eightyFive: false,\r\n },\r\n top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [15.469883805108413, 14.27051195674053, -27.98545194443386],\r\n },\r\n },\r\n },\r\n \"08_Microphones_50\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.hubs3.data.tooltips.08_Microphones_50.title\",\r\n description: \"devices.hubs3.data.tooltips.08_Microphones_50.description\",\r\n modelRanges: {\r\n fifty: [140, 220],\r\n eightyFive: false,\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-14.45339013716406, 13.164985353547406, -1.357821350017266],\r\n },\r\n },\r\n },\r\n \"09_Partner_50\": {\r\n type: \"magnify\",\r\n data: {\r\n title: \"devices.hubs3.data.tooltips.09_Partner_50.text\",\r\n modelRanges: {\r\n fifty: [70, 290],\r\n eightyFive: false,\r\n },\r\n },\r\n xray: {\r\n title: \"devices.hubs3.data.tooltips.09_Partner_50.xray.title\",\r\n body: [\r\n {\r\n img: {\r\n src: wallMount,\r\n alt: \"\",\r\n },\r\n details: {\r\n title:\r\n \"devices.hubs3.data.tooltips.09_Partner_50.xray.body.wallMount.title\",\r\n bodyText:\r\n \"devices.hubs3.data.tooltips.09_Partner_50.xray.body.wallMount.body\",\r\n },\r\n },\r\n {\r\n img: {\r\n src: mobileStand50,\r\n alt: \"\",\r\n },\r\n details: {\r\n title:\r\n \"devices.hubs3.data.tooltips.09_Partner_50.xray.body.mobileStand.title\",\r\n bodyText:\r\n \"devices.hubs3.data.tooltips.09_Partner_50.xray.body.mobileStand.body\",\r\n },\r\n },\r\n ],\r\n disclaimer: \"devices.hubs3.data.tooltips.09_Partner_50.xray.disclaimer\",\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-5.869431032510917, 8.42021896843509, -20.20199933804863],\r\n },\r\n },\r\n },\r\n \"10_Dimensions_50\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.hubs3.data.tooltips.10_Dimensions_50.title\",\r\n description: \"devices.hubs3.data.tooltips.10_Dimensions_50.description\",\r\n modelRanges: {\r\n fifty: [195, 280],\r\n eightyFive: false,\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-3.1721657514940667, 23.296925126206368, 21.05352118234919],\r\n },\r\n },\r\n },\r\n \"11_Weight_50\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.hubs3.data.tooltips.11_Weight_50.title\",\r\n description: \"devices.hubs3.data.tooltips.11_Weight_50.description\",\r\n modelRanges: {\r\n fifty: [250, 340],\r\n eightyFive: false,\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [38.01666480497987, 22.115214705328754, 16.293229300546344],\r\n },\r\n },\r\n },\r\n \"12_Compute_50\": {\r\n type: \"magnify\",\r\n data: {\r\n text: \"devices.hubs3.data.tooltips.12_Compute_50.text\",\r\n modelRanges: {\r\n fifty: [200, 340],\r\n eightyFive: false,\r\n },\r\n },\r\n xray: {\r\n title: \"devices.hubs3.data.tooltips.12_Compute_50.xray.title\",\r\n body: \"devices.hubs3.data.tooltips.12_Compute_50.xray.body\",\r\n img: modularCartridge,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [16.25870609609436, 14.836425452230605, 27.501250738006696],\r\n },\r\n },\r\n },\r\n \"13_Connections_50\": {\r\n type: \"magnify\",\r\n data: {\r\n title: \"devices.hubs3.data.tooltips.13_Connections_50.title\",\r\n description: \"devices.hubs3.data.tooltips.13_Connections_50.description\",\r\n modelRanges: {\r\n fifty: [220, 320],\r\n eightyFive: false,\r\n },\r\n },\r\n xray: {\r\n title: \"devices.hubs3.data.tooltips.13_Connections_50.title\",\r\n body: \"devices.hubs3.data.tooltips.13_Connections_50.description\",\r\n img: connection,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-1.52967046135268, 2.029969728300731, 18.83872517411451],\r\n },\r\n },\r\n },\r\n \"14_Battery\": {\r\n type: \"magnify\",\r\n data: {\r\n text: \"devices.hubs3.data.tooltips.14_Battery.text\",\r\n modelRanges: {\r\n fifty: [70, 290],\r\n eightyFive: false,\r\n },\r\n },\r\n offset: new Vector3(0, 0, 0),\r\n xray: {\r\n title: \"devices.hubs3.data.tooltips.14_Battery.xray.title\",\r\n body: \"devices.hubs3.data.tooltips.14_Battery.xray.body\",\r\n img: battery,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [0.5462049746550345, 11.573171658961334, -29.923295597212242],\r\n },\r\n },\r\n },\r\n \"01_Camera_85\": {\r\n type: \"magnify\",\r\n data: {\r\n title: \"devices.hubs3.data.tooltips.01_Camera_85.text\",\r\n modelRanges: {\r\n fifty: false,\r\n eightyFive: [0, 360],\r\n },\r\n },\r\n xray: {\r\n title: \"devices.hubs3.data.tooltips.01_Camera_85.xray.title\",\r\n body: \"devices.hubs3.data.tooltips.01_Camera_85.xray.body\",\r\n img: camera_85,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [15.589139382871691, 21.847783648349314, -20.87990928807585],\r\n },\r\n },\r\n },\r\n \"02_Speakers_85\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.hubs3.data.tooltips.02_Speakers_85.title\",\r\n description: \"devices.hubs3.data.tooltips.02_Speakers_85.description\",\r\n modelRanges: {\r\n fifty: false,\r\n eightyFive: [310, 55],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [32.98090667698, 23.743938844298967, -8.817494326703084],\r\n },\r\n },\r\n },\r\n \"03_Pen_85\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.hubs3.data.tooltips.03_Pen_85.title\",\r\n description: \"devices.hubs3.data.tooltips.03_Pen_85.description\",\r\n modelRanges: {\r\n fifty: false,\r\n eightyFive: [285, 75],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [38.45191789238999, 17.966773988507942, -18.16742902295718],\r\n },\r\n },\r\n },\r\n \"04_Fingerprint_85\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.hubs3.data.tooltips.04_Fingerprint_85.title\",\r\n description: \"devices.hubs3.data.tooltips.04_Fingerprint_85.description\",\r\n modelRanges: {\r\n fifty: false,\r\n eightyFive: [315, 50],\r\n },\r\n top: true,\r\n left: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [24.25850670883453, 13.508883819656955, -17.188766761403297],\r\n },\r\n },\r\n },\r\n \"05_Buttons_85\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.hubs3.data.tooltips.05_Buttons_85.title\",\r\n description: \"devices.hubs3.data.tooltips.05_Buttons_85.description\",\r\n modelRanges: {\r\n fifty: false,\r\n eightyFive: [330, 30],\r\n },\r\n top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [41.27727435088751, 5.213842745662236, -0.730490811033075],\r\n },\r\n },\r\n },\r\n \"06_Wireless_85\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.hubs3.data.tooltips.06_Wireless_85.title\",\r\n description: \"devices.hubs3.data.tooltips.06_Wireless_85.description\",\r\n modelRanges: {\r\n fifty: false,\r\n eightyFive: [45, 135],\r\n },\r\n top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [8.281645775406133, 1.2865647236266753, -25.983722201921246],\r\n },\r\n },\r\n },\r\n \"07_Display_85\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.hubs3.data.tooltips.07_Display_85.title\",\r\n description: \"devices.hubs3.data.tooltips.07_Display_85.description\",\r\n modelRanges: {\r\n fifty: false,\r\n eightyFive: [65, 150],\r\n },\r\n top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [15.469883805108413, 14.27051195674053, -27.98545194443386],\r\n },\r\n },\r\n },\r\n \"08_Microphones_85\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.hubs3.data.tooltips.08_Microphones_85.title\",\r\n description: \"devices.hubs3.data.tooltips.08_Microphones_85.description\",\r\n modelRanges: {\r\n fifty: false,\r\n eightyFive: [140, 220],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-14.45339013716406, 13.164985353547406, -1.357821350017266],\r\n },\r\n },\r\n },\r\n \"09_Partner_85\": {\r\n type: \"magnify\",\r\n data: {\r\n text: \"devices.hubs3.data.tooltips.09_Partner_85.text\",\r\n modelRanges: {\r\n fifty: false,\r\n eightyFive: [70, 290],\r\n },\r\n },\r\n xray: {\r\n title: \"devices.hubs3.data.tooltips.09_Partner_85.xray.title\",\r\n body: [\r\n {\r\n img: {\r\n src: wallMount,\r\n alt: \"\",\r\n },\r\n details: {\r\n title:\r\n \"devices.hubs3.data.tooltips.09_Partner_85.xray.body.wallMount.title\",\r\n bodyText:\r\n \"devices.hubs3.data.tooltips.09_Partner_85.xray.body.wallMount.body\",\r\n },\r\n },\r\n {\r\n img: {\r\n src: floorWallMount,\r\n alt: \"\",\r\n },\r\n details: {\r\n title:\r\n \"devices.hubs3.data.tooltips.09_Partner_85.xray.body.floorMount.title\",\r\n bodyText:\r\n \"devices.hubs3.data.tooltips.09_Partner_85.xray.body.floorMount.body\",\r\n },\r\n },\r\n {\r\n img: {\r\n src: mobileStand,\r\n alt: \"\",\r\n },\r\n details: {\r\n title:\r\n \"devices.hubs3.data.tooltips.09_Partner_85.xray.body.mobileStand.title\",\r\n bodyText:\r\n \"devices.hubs3.data.tooltips.09_Partner_85.xray.body.mobileStand.body\",\r\n },\r\n },\r\n ],\r\n disclaimer: \"devices.hubs3.data.tooltips.09_Partner_85.xray.disclaimer\",\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-5.869431032510917, 8.42021896843509, -20.20199933804863],\r\n },\r\n },\r\n },\r\n \"10_Dimensions_85\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.hubs3.data.tooltips.10_Dimensions_85.title\",\r\n description: \"devices.hubs3.data.tooltips.10_Dimensions_85.description\",\r\n modelRanges: {\r\n fifty: false,\r\n eightyFive: [195, 280],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-3.1721657514940667, 23.296925126206368, 21.05352118234919],\r\n },\r\n },\r\n },\r\n \"11_Weight_85\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.hubs3.data.tooltips.11_Weight_85.title\",\r\n description: \"devices.hubs3.data.tooltips.11_Weight_85.description\",\r\n modelRanges: {\r\n fifty: false,\r\n eightyFive: [250, 340],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [38.01666480497987, 22.115214705328754, 16.293229300546344],\r\n },\r\n },\r\n },\r\n \"12_Compute_85\": {\r\n type: \"magnify\",\r\n data: {\r\n text: \"devices.hubs3.data.tooltips.12_Compute_85.text\",\r\n modelRanges: {\r\n fifty: false,\r\n eightyFive: [200, 340],\r\n },\r\n },\r\n xray: {\r\n title: \"devices.hubs3.data.tooltips.12_Compute_85.xray.title\",\r\n body: \"devices.hubs3.data.tooltips.12_Compute_85.xray.body\",\r\n img: modularCartridge,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [16.25870609609436, 14.836425452230605, 27.501250738006696],\r\n },\r\n },\r\n },\r\n \"13_Connections_85\": {\r\n type: \"magnify\",\r\n data: {\r\n title: \"devices.hubs3.data.tooltips.13_Connections_85.title\",\r\n modelRanges: {\r\n fifty: false,\r\n eightyFive: [220, 320],\r\n },\r\n },\r\n xray: {\r\n title: \"devices.hubs3.data.tooltips.13_Connections_85.title\",\r\n body: \"devices.hubs3.data.tooltips.13_Connections_85.description\",\r\n img: connection,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-1.52967046135268, 2.029969728300731, 18.83872517411451],\r\n },\r\n },\r\n },\r\n \"15_Rotation_Handle_50\": {\r\n type: \"actionDot\",\r\n data: {\r\n text: \"general.kickstand\",\r\n camDegOffset: null,\r\n modelRanges: {\r\n fifty: [280, 115],\r\n eightyFive: false,\r\n },\r\n // arrows: {\r\n // left: true,\r\n // right: true,\r\n // },\r\n // rotate: 90,\r\n },\r\n },\r\n },\r\n modes: {\r\n portrait: {\r\n primaryModeAnim: {\r\n endFrame: 2.5,\r\n duration: 3000,\r\n fromMode: {\r\n portrait: {\r\n duration: 250,\r\n },\r\n landscape: {\r\n duration: 1500,\r\n },\r\n },\r\n showMeshes: [\r\n \"Cam_Body_Smart_50_B\",\r\n \"Cam_Glass_Smart_50_B\",\r\n \"Cam_Lens_Smart_50_B\",\r\n \"Cam_Matte_Smart_50_B\",\r\n ],\r\n hideMeshes: [\r\n \"Cam_Body_Smart_50_A\",\r\n \"Cam_Glass_Smart_50_A\",\r\n \"Cam_Lens_Smart_50_A\",\r\n \"Cam_Matte_Smart_50_A\",\r\n ],\r\n },\r\n secondaryModeAnim: {\r\n endFrame: 2.5,\r\n duration: 3000,\r\n fromMode: {\r\n portrait: {\r\n duration: 250,\r\n },\r\n landscape: {\r\n duration: 1500,\r\n },\r\n },\r\n },\r\n cameraData: {\r\n startAtPercentage: 0, //30\r\n target: {\r\n values: [0, 9.5, 0],\r\n frames: {\r\n fps: 120,\r\n total: 120, // 120\r\n },\r\n },\r\n },\r\n },\r\n landscape: {\r\n primaryModeAnim: {\r\n endFrame: 0,\r\n duration: 3000,\r\n fromMode: {\r\n portrait: {\r\n duration: 1500,\r\n },\r\n landscape: {\r\n duration: 250,\r\n },\r\n },\r\n showMeshes: [\r\n \"Cam_Body_Smart_50_A\",\r\n \"Cam_Glass_Smart_50_A\",\r\n \"Cam_Lens_Smart_50_A\",\r\n \"Cam_Matte_Smart_50_A\",\r\n ],\r\n hideMeshes: [\r\n \"Cam_Body_Smart_50_B\",\r\n \"Cam_Glass_Smart_50_B\",\r\n \"Cam_Lens_Smart_50_B\",\r\n \"Cam_Matte_Smart_50_B\",\r\n ],\r\n },\r\n secondaryModeAnim: {\r\n endFrame: 0,\r\n duration: 3000,\r\n fromMode: {\r\n portrait: {\r\n duration: 1500,\r\n },\r\n landscape: {\r\n duration: 250,\r\n },\r\n },\r\n },\r\n cameraData: {\r\n startAtPercentage: 0, //30\r\n target: {\r\n values: [0, 9.5, 0],\r\n frames: {\r\n fps: 120,\r\n total: 120, // 120\r\n },\r\n },\r\n },\r\n },\r\n },\r\n draggable: {\r\n touchpointMesh: \"15_Rotation_Handle_50\",\r\n referencePoint: {\r\n x: 3.47,\r\n y: 7.34,\r\n z: -1.95,\r\n },\r\n yDiff: true,\r\n dragAxis: [0, 1, 0],\r\n zLimits: [-1.95, 0.18],\r\n ranges: { inMin: 10.5679, inMax: 0.0, outMin: 0.0, outMax: 3.0 }, //0, 3.86, 2.4558, 8.2573\r\n isPickableInDegRange: [280, 115],\r\n },\r\n animations: {\r\n primary: {\r\n intro: {\r\n duration: 3000,\r\n startFrame: 2.1, // 0.30\r\n endFrame: 2.5, // 0.00\r\n },\r\n },\r\n },\r\n changeModels: {\r\n default: \"fifty\",\r\n fifty: {\r\n hide: {\r\n eightyFive: 0,\r\n },\r\n show: {\r\n fifty: 1,\r\n },\r\n parentNodesToHideDescendants: [\"Unit_50\", \"Stand_50\"],\r\n },\r\n eightyFive: {\r\n hide: {\r\n fifty: 0,\r\n },\r\n show: {\r\n eightyFive: 1,\r\n },\r\n parentNodesToHideDescendants: [\"Back_85\", \"Unit_85\", \"Stand_85\"],\r\n },\r\n },\r\n sidePanelDetails: {\r\n title: \"general.menu.hubs3.name\",\r\n cta: \"https://www.microsoft.com/en-us/surface/business/surface-hub-3\",\r\n seeItInAction: false,\r\n models: {\r\n header: \"general.explorerDetailHeader.models\",\r\n default: \"fifty\",\r\n values: {\r\n fifty: \"general.postures.fifty\",\r\n eightyFive: \"general.postures.eightyFive\",\r\n },\r\n },\r\n modesByModel: {\r\n fifty: {\r\n header: \"general.explorerDetailHeader.postures\",\r\n default: \"portrait\",\r\n values: {\r\n portrait: \"general.postures.portrait\",\r\n landscape: \"general.postures.landscape\",\r\n },\r\n }\r\n },\r\n // modes: {\r\n // header: \"general.explorerDetailHeader.postures\",\r\n // default: \"portrait\",\r\n // values: {\r\n // portrait: \"general.postures.portrait\",\r\n // landscape: \"general.postures.landscape\",\r\n // },\r\n // },\r\n },\r\n disclaimer: [\r\n \"devices.hubs3.data.disclaimer.1\",\r\n \"devices.hubs3.data.disclaimer.2\",\r\n \"devices.hubs3.data.disclaimer.3\",\r\n \"devices.hubs3.data.disclaimer.4\",\r\n ],\r\n extraDisclaimer: \"devices.hubs3.data.extraDisclaimer\",\r\n};\r\n","import camera_50 from \"@/assets/explorer/hub/hub-camera-new.gif\";\r\nimport camera_85 from \"@/assets/explorer/hub/hub-camera-85-new.gif\";\r\nimport floorWallMount from \"@/assets/explorer/hub/85-floor-assisted-wall-mount.jpg\";\r\nimport modularCartridge from \"@/assets/explorer/hub/modular-compute-cartridge.gif\";\r\nimport wallMount from \"@/assets/explorer/hub/85-wall-mount.jpg\";\r\nimport mobileStand from \"@/assets/explorer/hub/85-mobile-stand.jpg\";\r\nimport battery from \"@/assets/explorer/hub/mobile-battery.gif\";\r\nimport connection from \"@/assets/explorer/hub/buttons-and-connections-Hub.png\";\r\n\r\nimport { Vector3 } from \"@babylonjs/core\";\r\n\r\nexport default {\r\n name: \"Surface Hubs\",\r\n displayName: \"general.menu.hubs.name\",\r\n filename: \"Exp_HUBs_27.glb\",\r\n initialCameraTarget: [0, 9.5, 0],\r\n defaultPostureMode: \"\",\r\n cameraRadius: {\r\n default: 30,\r\n lowerLimit: 26.5,\r\n upperLimit: 34,\r\n },\r\n cameraAlpha: -1007.272,\r\n cameraBeta: {\r\n default: 1.3,\r\n lowerLimit: 0.25,\r\n upperLimit: 1.7,\r\n },\r\n fog: {\r\n start: 40,\r\n end: 70,\r\n },\r\n light: {\r\n direction: [-0.9, -1.5, 1.5],\r\n intensity: 3.7,\r\n },\r\n hideMeshes: [\"Cord_50\"],\r\n tooltips: {\r\n \"01_Camera_50\": {\r\n type: \"magnify\",\r\n data: {\r\n text: \"devices.hubs.data.tooltips.01_Camera_50.text\",\r\n modelRanges: {\r\n fifty: [0, 360],\r\n eightyFive: false,\r\n },\r\n },\r\n xray: {\r\n title: \"devices.hubs.data.tooltips.01_Camera_50.xray.title\",\r\n body: \"devices.hubs.data.tooltips.01_Camera_50.xray.body\",\r\n img: camera_50,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [15.589139382871691, 21.847783648349314, -20.87990928807585],\r\n },\r\n },\r\n },\r\n \"02_Speakers_50\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.hubs.data.tooltips.02_Speakers_50.title\",\r\n description: \"devices.hubs.data.tooltips.02_Speakers_50.description\",\r\n modelRanges: {\r\n fifty: [310, 55],\r\n eightyFive: false,\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [32.98090667698, 23.743938844298967, -8.817494326703084],\r\n },\r\n },\r\n },\r\n \"03_Pen_50\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.hubs.data.tooltips.03_Pen_50.title\",\r\n description: \"devices.hubs.data.tooltips.03_Pen_50.description\",\r\n modelRanges: {\r\n fifty: [285, 75],\r\n eightyFive: false,\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [38.45191789238999, 17.966773988507942, -18.16742902295718],\r\n },\r\n },\r\n },\r\n \"04_Fingerprint__50\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.hubs.data.tooltips.04_Fingerprint_50.title\",\r\n description: \"devices.hubs.data.tooltips.04_Fingerprint_50.description\",\r\n modelRanges: {\r\n fifty: [315, 50],\r\n eightyFive: false,\r\n },\r\n top: true,\r\n left: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [24.25850670883453, 13.508883819656955, -17.188766761403297],\r\n },\r\n },\r\n },\r\n \"05_Buttons_50\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.hubs.data.tooltips.05_Buttons_50.title\",\r\n description: \"devices.hubs.data.tooltips.05_Buttons_50.description\",\r\n modelRanges: {\r\n fifty: [330, 30],\r\n eightyFive: false,\r\n },\r\n top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [41.27727435088751, 5.213842745662236, -0.730490811033075],\r\n },\r\n },\r\n },\r\n \"06_Wireless_50\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.hubs.data.tooltips.06_Wireless_50.title\",\r\n description: \"devices.hubs.data.tooltips.06_Wireless_50.description\",\r\n modelRanges: {\r\n fifty: [45, 135],\r\n eightyFive: false,\r\n },\r\n top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [8.281645775406133, 1.2865647236266753, -25.983722201921246],\r\n },\r\n },\r\n },\r\n \"07_Display_50\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.hubs.data.tooltips.07_Display_50.title\",\r\n description: \"devices.hubs.data.tooltips.07_Display_50.description\",\r\n modelRanges: {\r\n fifty: [65, 150],\r\n eightyFive: false,\r\n },\r\n top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [15.469883805108413, 14.27051195674053, -27.98545194443386],\r\n },\r\n },\r\n },\r\n \"08_Microphones_50\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.hubs.data.tooltips.08_Microphones_50.title\",\r\n description: \"devices.hubs.data.tooltips.08_Microphones_50.description\",\r\n modelRanges: {\r\n fifty: [140, 220],\r\n eightyFive: false,\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-14.45339013716406, 13.164985353547406, -1.357821350017266],\r\n },\r\n },\r\n },\r\n \"09_Partner_50\": {\r\n type: \"magnify\",\r\n data: {\r\n title: \"devices.hubs.data.tooltips.09_Partner_50.text\",\r\n modelRanges: {\r\n fifty: [70, 290],\r\n eightyFive: false,\r\n },\r\n },\r\n xray: {\r\n title: \"devices.hubs.data.tooltips.09_Partner_50.xray.title\",\r\n body: [\r\n {\r\n img: {\r\n src: wallMount,\r\n alt: \"\",\r\n },\r\n details: {\r\n title:\r\n \"devices.hubs.data.tooltips.09_Partner_50.xray.body.wallMount.title\",\r\n bodyText:\r\n \"devices.hubs.data.tooltips.09_Partner_50.xray.body.wallMount.body\",\r\n },\r\n },\r\n {\r\n img: {\r\n src: mobileStand,\r\n alt: \"\",\r\n },\r\n details: {\r\n title:\r\n \"devices.hubs.data.tooltips.09_Partner_50.xray.body.mobileStand.title\",\r\n bodyText:\r\n \"devices.hubs.data.tooltips.09_Partner_50.xray.body.mobileStand.body\",\r\n },\r\n },\r\n ],\r\n disclaimer: \"devices.hubs.data.tooltips.09_Partner_50.xray.disclaimer\",\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-5.869431032510917, 8.42021896843509, -20.20199933804863],\r\n },\r\n },\r\n },\r\n \"10_Dimensions_50\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.hubs.data.tooltips.10_Dimensions_50.title\",\r\n description: \"devices.hubs.data.tooltips.10_Dimensions_50.description\",\r\n modelRanges: {\r\n fifty: [195, 280],\r\n eightyFive: false,\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-3.1721657514940667, 23.296925126206368, 21.05352118234919],\r\n },\r\n },\r\n },\r\n \"11_Weight_50\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.hubs.data.tooltips.11_Weight_50.title\",\r\n description: \"devices.hubs.data.tooltips.11_Weight_50.description\",\r\n modelRanges: {\r\n fifty: [250, 340],\r\n eightyFive: false,\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [38.01666480497987, 22.115214705328754, 16.293229300546344],\r\n },\r\n },\r\n },\r\n \"12_Compute_50\": {\r\n type: \"magnify\",\r\n data: {\r\n text: \"devices.hubs.data.tooltips.12_Compute_50.text\",\r\n modelRanges: {\r\n fifty: [200, 340],\r\n eightyFive: false,\r\n },\r\n },\r\n xray: {\r\n title: \"devices.hubs.data.tooltips.12_Compute_50.xray.title\",\r\n body: \"devices.hubs.data.tooltips.12_Compute_50.xray.body\",\r\n img: modularCartridge,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [16.25870609609436, 14.836425452230605, 27.501250738006696],\r\n },\r\n },\r\n },\r\n \"13_Connections_50\": {\r\n type: \"magnify\",\r\n data: {\r\n title: \"devices.hubs.data.tooltips.13_Connections_50.title\",\r\n description: \"devices.hubs.data.tooltips.13_Connections_50.description\",\r\n modelRanges: {\r\n fifty: [220, 320],\r\n eightyFive: false,\r\n },\r\n },\r\n xray: {\r\n title: \"devices.hubs.data.tooltips.13_Connections_50.title\",\r\n body: \"devices.hubs.data.tooltips.13_Connections_50.description\",\r\n img: connection,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-1.52967046135268, 2.029969728300731, 18.83872517411451],\r\n },\r\n },\r\n },\r\n \"14_Battery\": {\r\n type: \"magnify\",\r\n data: {\r\n text: \"devices.hubs.data.tooltips.14_Battery.text\",\r\n modelRanges: {\r\n fifty: [70, 290],\r\n eightyFive: false,\r\n },\r\n },\r\n offset: new Vector3(0, 0, 0),\r\n xray: {\r\n title: \"devices.hubs.data.tooltips.14_Battery.xray.title\",\r\n body: \"devices.hubs.data.tooltips.14_Battery.xray.body\",\r\n img: battery,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [0.5462049746550345, 11.573171658961334, -29.923295597212242],\r\n },\r\n },\r\n },\r\n \"01_Camera_85\": {\r\n type: \"magnify\",\r\n data: {\r\n title: \"devices.hubs.data.tooltips.01_Camera_85.text\",\r\n modelRanges: {\r\n fifty: false,\r\n eightyFive: [0, 360],\r\n },\r\n },\r\n xray: {\r\n title: \"devices.hubs.data.tooltips.01_Camera_85.xray.title\",\r\n body: \"devices.hubs.data.tooltips.01_Camera_85.xray.body\",\r\n img: camera_85,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [15.589139382871691, 21.847783648349314, -20.87990928807585],\r\n },\r\n },\r\n },\r\n \"02_Speakers_85\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.hubs.data.tooltips.02_Speakers_85.title\",\r\n description: \"devices.hubs.data.tooltips.02_Speakers_85.description\",\r\n modelRanges: {\r\n fifty: false,\r\n eightyFive: [310, 55],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [32.98090667698, 23.743938844298967, -8.817494326703084],\r\n },\r\n },\r\n },\r\n \"03_Pen_85\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.hubs.data.tooltips.03_Pen_85.title\",\r\n description: \"devices.hubs.data.tooltips.03_Pen_85.description\",\r\n modelRanges: {\r\n fifty: false,\r\n eightyFive: [285, 75],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [38.45191789238999, 17.966773988507942, -18.16742902295718],\r\n },\r\n },\r\n },\r\n \"04_Fingerprint_85\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.hubs.data.tooltips.04_Fingerprint_85.title\",\r\n description: \"devices.hubs.data.tooltips.04_Fingerprint_85.description\",\r\n modelRanges: {\r\n fifty: false,\r\n eightyFive: [315, 50],\r\n },\r\n top: true,\r\n left: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [24.25850670883453, 13.508883819656955, -17.188766761403297],\r\n },\r\n },\r\n },\r\n \"05_Buttons_85\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.hubs.data.tooltips.05_Buttons_85.title\",\r\n description: \"devices.hubs.data.tooltips.05_Buttons_85.description\",\r\n modelRanges: {\r\n fifty: false,\r\n eightyFive: [330, 30],\r\n },\r\n top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [41.27727435088751, 5.213842745662236, -0.730490811033075],\r\n },\r\n },\r\n },\r\n \"06_Wireless_85\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.hubs.data.tooltips.06_Wireless_85.title\",\r\n description: \"devices.hubs.data.tooltips.06_Wireless_85.description\",\r\n modelRanges: {\r\n fifty: false,\r\n eightyFive: [45, 135],\r\n },\r\n top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [8.281645775406133, 1.2865647236266753, -25.983722201921246],\r\n },\r\n },\r\n },\r\n \"07_Display_85\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.hubs.data.tooltips.07_Display_85.title\",\r\n description: \"devices.hubs.data.tooltips.07_Display_85.description\",\r\n modelRanges: {\r\n fifty: false,\r\n eightyFive: [65, 150],\r\n },\r\n top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [15.469883805108413, 14.27051195674053, -27.98545194443386],\r\n },\r\n },\r\n },\r\n \"08_Microphones_85\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.hubs.data.tooltips.08_Microphones_85.title\",\r\n description: \"devices.hubs.data.tooltips.08_Microphones_85.description\",\r\n modelRanges: {\r\n fifty: false,\r\n eightyFive: [140, 220],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-14.45339013716406, 13.164985353547406, -1.357821350017266],\r\n },\r\n },\r\n },\r\n \"09_Partner_85\": {\r\n type: \"magnify\",\r\n data: {\r\n text: \"devices.hubs.data.tooltips.09_Partner_85.text\",\r\n modelRanges: {\r\n fifty: false,\r\n eightyFive: [70, 290],\r\n },\r\n },\r\n xray: {\r\n title: \"devices.hubs.data.tooltips.09_Partner_85.xray.title\",\r\n body: [\r\n {\r\n img: {\r\n src: wallMount,\r\n alt: \"\",\r\n },\r\n details: {\r\n title:\r\n \"devices.hubs.data.tooltips.09_Partner_85.xray.body.wallMount.title\",\r\n bodyText:\r\n \"devices.hubs.data.tooltips.09_Partner_85.xray.body.wallMount.body\",\r\n },\r\n },\r\n {\r\n img: {\r\n src: floorWallMount,\r\n alt: \"\",\r\n },\r\n details: {\r\n title:\r\n \"devices.hubs.data.tooltips.09_Partner_85.xray.body.floorMount.title\",\r\n bodyText:\r\n \"devices.hubs.data.tooltips.09_Partner_85.xray.body.floorMount.body\",\r\n },\r\n },\r\n {\r\n img: {\r\n src: mobileStand,\r\n alt: \"\",\r\n },\r\n details: {\r\n title:\r\n \"devices.hubs.data.tooltips.09_Partner_85.xray.body.mobileStand.title\",\r\n bodyText:\r\n \"devices.hubs.data.tooltips.09_Partner_85.xray.body.mobileStand.body\",\r\n },\r\n },\r\n ],\r\n disclaimer: \"devices.hubs.data.tooltips.09_Partner_85.xray.disclaimer\",\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-5.869431032510917, 8.42021896843509, -20.20199933804863],\r\n },\r\n },\r\n },\r\n \"10_Dimensions_85\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.hubs.data.tooltips.10_Dimensions_85.title\",\r\n description: \"devices.hubs.data.tooltips.10_Dimensions_85.description\",\r\n modelRanges: {\r\n fifty: false,\r\n eightyFive: [195, 280],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-3.1721657514940667, 23.296925126206368, 21.05352118234919],\r\n },\r\n },\r\n },\r\n \"11_Weight_85\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.hubs.data.tooltips.11_Weight_85.title\",\r\n description: \"devices.hubs.data.tooltips.11_Weight_85.description\",\r\n modelRanges: {\r\n fifty: false,\r\n eightyFive: [250, 340],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [38.01666480497987, 22.115214705328754, 16.293229300546344],\r\n },\r\n },\r\n },\r\n \"12_Compute_85\": {\r\n type: \"magnify\",\r\n data: {\r\n text: \"devices.hubs.data.tooltips.12_Compute_85.text\",\r\n modelRanges: {\r\n fifty: false,\r\n eightyFive: [200, 340],\r\n },\r\n },\r\n xray: {\r\n title: \"devices.hubs.data.tooltips.12_Compute_85.xray.title\",\r\n body: \"devices.hubs.data.tooltips.12_Compute_85.xray.body\",\r\n img: modularCartridge,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [16.25870609609436, 14.836425452230605, 27.501250738006696],\r\n },\r\n },\r\n },\r\n \"13_Connections_85\": {\r\n type: \"magnify\",\r\n data: {\r\n title: \"devices.hubs.data.tooltips.13_Connections_85.title\",\r\n modelRanges: {\r\n fifty: false,\r\n eightyFive: [220, 320],\r\n },\r\n },\r\n xray: {\r\n title: \"devices.hubs.data.tooltips.13_Connections_85.title\",\r\n body: \"devices.hubs.data.tooltips.13_Connections_85.description\",\r\n img: connection,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-1.52967046135268, 2.029969728300731, 18.83872517411451],\r\n },\r\n },\r\n },\r\n },\r\n animations: {\r\n primary: {\r\n intro: {\r\n duration: 3500,\r\n startFrame: 3.75,\r\n endFrame: 3.75,\r\n },\r\n },\r\n },\r\n changeModels: {\r\n default: \"fifty\",\r\n fifty: {\r\n hide: {\r\n eightyFive: 0,\r\n },\r\n show: {\r\n fifty: 1,\r\n },\r\n parentNodesToHideDescendants: [\"Unit_50\", \"Stand_50\"],\r\n },\r\n eightyFive: {\r\n hide: {\r\n fifty: 0,\r\n },\r\n show: {\r\n eightyFive: 1,\r\n },\r\n parentNodesToHideDescendants: [\"Back_85\", \"Unit_85\", \"Stand_85\"],\r\n },\r\n },\r\n sidePanelDetails: {\r\n title: \"general.menu.hubs.name\",\r\n cta: \"https://www.microsoft.com/surface/business/surface-hub-2\",\r\n seeItInAction: false,\r\n models: {\r\n header: \"general.explorerDetailHeader.models\",\r\n default: \"fifty\",\r\n values: {\r\n fifty: \"general.postures.fifty\",\r\n eightyFive: \"general.postures.eightyFive\",\r\n },\r\n },\r\n },\r\n disclaimer: [\r\n \"devices.hubs.data.disclaimer.1\",\r\n \"devices.hubs.data.disclaimer.2\",\r\n \"devices.hubs.data.disclaimer.3\",\r\n \"devices.hubs.data.disclaimer.4\",\r\n \"devices.hubs.data.disclaimer.5\",\r\n \"devices.hubs.data.disclaimer.6\",\r\n ],\r\n extraDisclaimer: \"devices.hubs.data.extraDisclaimer\",\r\n};\r\n","export default {\r\n name: \"Surface Pro X\",\r\n displayName: \"general.menu.proX.name\",\r\n filename: \"Harris_Exp_08A_Tablet.glb\",\r\n additionalFilenames: [\"Harris_Exp_08_Keyboard.glb\"],\r\n cameraRadius: {\r\n default: 13,\r\n lowerLimit: 9,\r\n upperLimit: 13,\r\n },\r\n tooltips: {\r\n \"01_Display\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.proX.data.tooltips.01_Display.title\",\r\n description: \"devices.proX.data.tooltips.01_Display.description\",\r\n ranges: {\r\n laptop: [15, 165],\r\n studio: [15, 165],\r\n tablet: [15, 165],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-0.055235553474025825, 6.398323386000843, -12.0417348019208],\r\n },\r\n },\r\n },\r\n \"02_Camera\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.proX.data.tooltips.02_Camera.title\",\r\n description: \"devices.proX.data.tooltips.02_Camera.description\",\r\n ranges: {\r\n laptop: [0, 360],\r\n studio: [0, 360],\r\n tablet: [0, 360],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [1.8585153426935157, 6.782916263394854, -11.731867561259417],\r\n },\r\n },\r\n },\r\n \"03_Speaker_Mic\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.proX.data.tooltips.03_Speaker_Mic.title\",\r\n description: \"devices.proX.data.tooltips.03_Speaker_Mic.description\",\r\n ranges: {\r\n laptop: [10, 150],\r\n studio: [10, 150],\r\n tablet: [10, 150],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [7.934031795332894, 7.411107102555453, -8.432671717360114],\r\n },\r\n },\r\n },\r\n \"04_Weight\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.proX.data.tooltips.04_Weight.title\",\r\n description: \"devices.proX.data.tooltips.04_Weight.description\",\r\n ranges: {\r\n laptop: [5, 110],\r\n studio: [5, 110],\r\n tablet: [5, 110],\r\n },\r\n changeLeftBaseOnScreenWidth: true,\r\n left: false,\r\n top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [7.15751254072625, 3.7095728577031335, -10.624867152856458],\r\n },\r\n },\r\n },\r\n // \"05_Camera\": {\r\n // type: \"tooltip\",\r\n // data: {\r\n // title: \"devices.proX.data.tooltips.05_Camera.title\",\r\n // description: \"devices.proX.data.tooltips.05_Camera.description\",\r\n // ranges: {\r\n // laptop: [210, 330],\r\n // studio: [220, 330],\r\n // tablet: [210, 330],\r\n // },\r\n // },\r\n // cameraData: {\r\n // position: {\r\n // values: [0.4648044734409642, 4.383886556594912, -12.667563109381394],\r\n // frames: {\r\n // fps: 90,\r\n // total: 90,\r\n // },\r\n // },\r\n // },\r\n // },\r\n \"06_Connections\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.proX.data.tooltips.06_Connections.title\",\r\n description: \"devices.proX.data.tooltips.06_Connections.description\",\r\n ranges: {\r\n laptop: [140, 250],\r\n studio: [140, 250],\r\n tablet: [140, 250],\r\n },\r\n top: false,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-12.810139653627711, 3.7134830967080297, 0.0285418139352262],\r\n },\r\n },\r\n },\r\n \"07_LTE_Advanced\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.proX.data.tooltips.07_LTE_Advanced.title\",\r\n description: \"devices.proX.data.tooltips.07_LTE_Advanced.description\",\r\n ranges: {\r\n laptop: [205, 315],\r\n studio: [205, 315],\r\n tablet: [205, 315],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-5.239034999961931, 4.9377525639745725, 11.39009962985663],\r\n },\r\n },\r\n },\r\n \"08_Colors\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.proX.data.tooltips.08_Colors.title\",\r\n description: \"devices.proX.data.tooltips.08_Colors.description\",\r\n ranges: {\r\n laptop: [225, 335],\r\n studio: [225, 335],\r\n tablet: [225, 335],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [5.7085752326319295, 3.7752455130402365, 11.455803187414299],\r\n },\r\n },\r\n },\r\n // \"09_Card_Slot\": {\r\n // type: \"tooltip\",\r\n // data: {\r\n // title: \"devices.proX.data.tooltips.09_Card_Slot.title\",\r\n // description: \"devices.proX.data.tooltips.09_Card_Slot.description\",\r\n // ranges: {\r\n // laptop: [300, 15],\r\n // studio: [300, 15],\r\n // tablet: [300, 15],\r\n // },\r\n // },\r\n // cameraData: {\r\n // position: {\r\n // values: [12.038151902919225, 4.1735537013773385, 4.1152168069366395],\r\n // },\r\n // },\r\n // },\r\n \"10_Battery\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.proX.data.tooltips.10_Battery.title\",\r\n description: \"devices.proX.data.tooltips.10_Battery.description\",\r\n ranges: {\r\n laptop: [220, 320],\r\n studio: [220, 320],\r\n tablet: [220, 320],\r\n },\r\n top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-2.3389930474945566, 4.764959933435861, 12.364026373185663],\r\n },\r\n },\r\n },\r\n \"11_Kickstand\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.proX.data.tooltips.11_Kickstand.title\",\r\n description: \"devices.proX.data.tooltips.11_Kickstand.description\",\r\n ranges: {\r\n laptop: [305, 40],\r\n studio: [305, 40],\r\n tablet: [305, 40],\r\n },\r\n top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [11.920208318229358, 3.7134830967080297, 4.6913885184029995],\r\n },\r\n },\r\n },\r\n \"12_Type_Cover\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.proX.data.tooltips.12_Type_Cover.title\",\r\n description: \"devices.proX.data.tooltips.12_Type_Cover.description\",\r\n ranges: {\r\n laptop: [45, 195],\r\n studio: [45, 195],\r\n tablet: [45, 195],\r\n },\r\n top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-2.421588401289955, 6.2953218400199, -11.838107875220858],\r\n },\r\n },\r\n },\r\n \"13_Surface_Pen\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.proX.data.tooltips.13_Surface_Pen.title\",\r\n description: \"devices.proX.data.tooltips.13_Surface_Pen.description\",\r\n ranges: {\r\n laptop: [35, 170],\r\n studio: [35, 170],\r\n tablet: [35, 170],\r\n },\r\n top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-2.437376545096348, 6.611801534242716, -11.70165290255732],\r\n },\r\n },\r\n },\r\n \"16_Move_B\": {\r\n type: \"actionDot\",\r\n data: {\r\n text: \"general.kickstand\",\r\n camDegOffset: null,\r\n arrows: {\r\n left: true,\r\n right: true,\r\n },\r\n ranges: {\r\n laptop: [160, 210],\r\n studio: [160, 210],\r\n tablet: false,\r\n },\r\n },\r\n },\r\n },\r\n animations: {\r\n primary: {\r\n intro: {\r\n duration: 3500,\r\n startFrame: 0.844,\r\n endFrame: 4.4949,\r\n },\r\n },\r\n secondary: {\r\n intro: {\r\n duration: 3500,\r\n startFrame: 0.844,\r\n endFrame: 4.4949,\r\n },\r\n },\r\n },\r\n modes: {\r\n laptop: {\r\n primaryModeAnim: {\r\n endFrame: 4.4949,\r\n duration: 3000,\r\n fromMode: {\r\n laptop: {\r\n duration: 250,\r\n },\r\n tablet: {\r\n duration: 1500,\r\n },\r\n studio: {\r\n duration: 1500,\r\n },\r\n },\r\n },\r\n secondaryModeAnim: {\r\n endFrame: 4.4949,\r\n duration: 3000,\r\n fromMode: {\r\n laptop: {\r\n duration: 250,\r\n },\r\n tablet: {\r\n duration: 1500,\r\n },\r\n studio: {\r\n duration: 1500,\r\n },\r\n },\r\n },\r\n cameraData: {\r\n startAtPercentage: 30,\r\n target: {\r\n values: [0, 1.5, 0],\r\n frames: {\r\n fps: 120,\r\n total: 120,\r\n },\r\n },\r\n },\r\n },\r\n tablet: {\r\n primaryModeAnim: {\r\n endFrame: 0,\r\n duration: 3000,\r\n fromMode: {\r\n laptop: {\r\n duration: 1500,\r\n },\r\n tablet: {\r\n duration: 250,\r\n },\r\n studio: {\r\n duration: 3000,\r\n },\r\n },\r\n },\r\n secondaryModeAnim: {\r\n endFrame: 9.7666,\r\n duration: 3000,\r\n fromMode: {\r\n laptop: {\r\n duration: 1500,\r\n },\r\n tablet: {\r\n duration: 250,\r\n },\r\n studio: {\r\n duration: 3000,\r\n },\r\n },\r\n },\r\n cameraData: {\r\n startAtPercentage: 30,\r\n target: {\r\n values: [0, 2.5, 0.085],\r\n frames: {\r\n fps: 120,\r\n total: 120,\r\n },\r\n },\r\n },\r\n },\r\n studio: {\r\n primaryModeAnim: {\r\n endFrame: 8.2573,\r\n duration: 3000,\r\n fromMode: {\r\n laptop: {\r\n duration: 1500,\r\n },\r\n tablet: {\r\n duration: 3000,\r\n },\r\n studio: {\r\n duration: 250,\r\n },\r\n },\r\n },\r\n secondaryModeAnim: {\r\n endFrame: 9.7666,\r\n duration: 3000,\r\n fromMode: {\r\n laptop: {\r\n duration: 1500,\r\n },\r\n tablet: {\r\n duration: 3000,\r\n },\r\n studio: {\r\n duration: 250,\r\n },\r\n },\r\n },\r\n cameraData: {\r\n startAtPercentage: 40,\r\n target: {\r\n values: [0, 1.5, 2],\r\n frames: {\r\n fps: 120,\r\n total: 120,\r\n },\r\n },\r\n },\r\n },\r\n },\r\n draggable: {\r\n touchpointMesh: \"16_Move_B\",\r\n referencePoint: {\r\n x: -2.93,\r\n y: 0.3,\r\n z: 0.09,\r\n },\r\n zDiff: true,\r\n dragAxis: [0, 0, 1],\r\n zLimits: [0.09, 3.94],\r\n ranges: { inMin: 0, inMax: 3.86, outMin: 2.4558, outMax: 8.2573 },\r\n isPickableInDegRange: [160, 210],\r\n },\r\n sidePanelDetails: {\r\n title: \"general.menu.proX.name\",\r\n cta: \"https://www.microsoft.com/en-us/surface/business/surface-pro-x\",\r\n seeItInAction: false,\r\n modes: {\r\n header: \"general.explorerDetailHeader.postures\",\r\n default: \"laptop\",\r\n values: {\r\n laptop: \"general.postures.laptop\",\r\n studio: \"general.postures.studio\",\r\n tablet: \"general.postures.tablet\",\r\n },\r\n },\r\n colors: [\r\n {\r\n header: \"general.explorerDetailHeader.deviceColor\",\r\n default: \"platinum\",\r\n colorValues: {\r\n platinum: {\r\n name: \"general.color.platinum\",\r\n swatchColor: \"#c3c3c3\",\r\n colorChanges: [\r\n {\r\n materials: [\"Surface_Metal_2\", \"Surface_SSD\"],\r\n color: \"#ACACAC\",\r\n },\r\n {\r\n materials: [\r\n \"Surface_Gray\",\r\n \"Surface_Metal_Shine\",\r\n \"Surface_Metal_2_Buttons\",\r\n ],\r\n color: \"#AFAFAF\",\r\n },\r\n ],\r\n },\r\n matteBlack: {\r\n name: \"general.color.blackMatte\",\r\n swatchColor: \"#3c3c3c\",\r\n colorChanges: [\r\n {\r\n materials: [\r\n \"Surface_Metal_2\",\r\n \"Surface_Metal_Shine\",\r\n \"Surface_SSD\",\r\n ],\r\n color: \"#272727\",\r\n },\r\n {\r\n materials: [\"Surface_Gray\", \"Surface_Metal_2_Buttons\"],\r\n color: \"#313131\",\r\n },\r\n ],\r\n },\r\n },\r\n },\r\n {\r\n header: \"general.explorerDetailHeader.surfacePro_KeyBoardColor\",\r\n default: \"black\",\r\n colorValues: {\r\n platinum: {\r\n name: \"general.color.platinum\",\r\n swatchColor: \"#86888a\",\r\n colorChanges: [\r\n {\r\n materials: [\"Surface_Board\"],\r\n color: \"#7E7E7E\",\r\n },\r\n {\r\n materials: [\"Surface_Keys_Track\"],\r\n color: \"#6E6F6F\",\r\n },\r\n ],\r\n },\r\n poppyRed: {\r\n name: \"general.color.poppyRed\",\r\n swatchColor: \"#8e3c31\",\r\n colorChanges: [\r\n {\r\n materials: [\"Surface_Board\"],\r\n color: \"#B15E4F\",\r\n },\r\n {\r\n materials: [\"Surface_Keys_Track\"],\r\n color: \"#904D41\",\r\n },\r\n ],\r\n },\r\n iceBlue: {\r\n name: \"general.color.iceBlue\",\r\n swatchColor: \"#a2acc0\",\r\n colorChanges: [\r\n {\r\n materials: [\"Surface_Board\"],\r\n color: \"#7F8D97\",\r\n },\r\n {\r\n materials: [\"Surface_Keys_Track\"],\r\n color: \"#6A767F\",\r\n },\r\n ],\r\n },\r\n black: {\r\n name: \"general.color.black\",\r\n swatchColor: \"#272727\",\r\n colorChanges: [\r\n {\r\n materials: [\"Surface_Board\"],\r\n color: \"#2E2E2E\",\r\n },\r\n {\r\n materials: [\"Surface_Keys_Track\"],\r\n color: \"#303030\",\r\n },\r\n ],\r\n },\r\n },\r\n },\r\n ],\r\n },\r\n disclaimer: [\r\n \"devices.proX.data.disclaimer.0\",\r\n \"devices.proX.data.disclaimer.1\",\r\n \"devices.proX.data.disclaimer.2\",\r\n \"devices.proX.data.disclaimer.3\",\r\n \"devices.proX.data.disclaimer.4\",\r\n \"devices.proX.data.disclaimer.5\",\r\n \"devices.proX.data.disclaimer.6\",\r\n ],\r\n};\r\n","export default {\r\n name: \"Surface Duo 2\",\r\n displayName: \"general.menu.duo.name\",\r\n filename: \"Duo_2_Exp_17.glb\",\r\n defaultPostureMode: \"book\",\r\n cameraRadius: {\r\n default: 5,\r\n lowerLimit: 4,\r\n upperLimit: 6,\r\n },\r\n initialCameraTarget: [0, 0.5, 0],\r\n cameraAlpha: -1000.892,\r\n cameraBeta: {\r\n upperLimit: 1.48,\r\n },\r\n fog: {\r\n start: 7,\r\n end: 15,\r\n },\r\n tooltips: {\r\n \"01_Hinge\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.duo2.data.tooltips.01_Hinge.title\",\r\n description: \"devices.duo2.data.tooltips.01_Hinge.description\",\r\n ranges: {\r\n book: [\r\n [50, 130],\r\n [200, 340],\r\n ],\r\n tent: [90, 270],\r\n compose: [90, 270],\r\n dualLandscape: [90, 270],\r\n singleScreen: [120, 280],\r\n peek: [160, 260],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-4.703752497872429, 1.8237843188930047, 1.312135539972289],\r\n },\r\n byMode: {\r\n book: {\r\n position: {\r\n values: [\r\n -0.735974376128709,\r\n 2.710295147091174,\r\n 4.540438817336134,\r\n ],\r\n },\r\n },\r\n dualLandscape: {\r\n position: {\r\n values: [\r\n -3.7639084613544025,\r\n 1.5480381366147515,\r\n -3.1200335188497275,\r\n ],\r\n },\r\n },\r\n },\r\n },\r\n },\r\n \"02_Glance_Bar\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.duo2.data.tooltips.02_Glance_Bar.title\",\r\n description: \"devices.duo2.data.tooltips.02_Glance_Bar.description\",\r\n ranges: {\r\n book: [220, 320],\r\n tent: [60, 120],\r\n compose: [245, 305],\r\n dualLandscape: [245, 305],\r\n singleScreen: [140, 200],\r\n peek: [120, 230],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-0.14365147221075839, 1.960059972668659, 4.779915180287458],\r\n },\r\n byMode: {\r\n tent: {\r\n position: {\r\n values: [\r\n 0.033094974298459846,\r\n 3.524572989889065,\r\n -3.9813142241613773,\r\n ],\r\n },\r\n },\r\n singleScreen: {\r\n position: {\r\n values: [\r\n -4.8347051454004575,\r\n 1.612608728865103,\r\n -0.622678065690061,\r\n ],\r\n },\r\n },\r\n peek: {\r\n position: {\r\n values: [\r\n -4.8347051454004575,\r\n 1.612608728865103,\r\n -0.622678065690061,\r\n ],\r\n },\r\n },\r\n },\r\n },\r\n },\r\n // \"04_Display\": {\r\n // type: \"tooltip\",\r\n // data: {\r\n // title: \"devices.duo2.data.tooltips.04_Display.title\",\r\n // description: \"devices.duo2.data.tooltips.04_Display.description\",\r\n // ranges: {\r\n // book: [40, 130],\r\n // tent: [40, 150],\r\n // compose: [30, 110],\r\n // dualLandscape: [30, 110],\r\n // singleScreen: [240, 290],\r\n // peek: false,\r\n // },\r\n // drawerWidth: \"450px\",\r\n // },\r\n // cameraData: {\r\n // position: {\r\n // values: [1.1996683325832493, 2.564241521555608, -4.393142705681517],\r\n // },\r\n // byMode: {\r\n // tent: {\r\n // position: {\r\n // values: [\r\n // 1.0706368026308333,\r\n // 0.9533581223215484,\r\n // -4.862941830803398,\r\n // ],\r\n // },\r\n // },\r\n // singleScreen: {\r\n // position: {\r\n // values: [\r\n // -2.404948416635692,\r\n // 0.9533581223215484,\r\n // 4.360124943880228,\r\n // ],\r\n // },\r\n // },\r\n // peek: {\r\n // position: {\r\n // values: [\r\n // 1.7013936807536998,\r\n // 3.935376675247692,\r\n // -3.2098982292676337,\r\n // ],\r\n // },\r\n // },\r\n // },\r\n // },\r\n // },\r\n \"05_Performance\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.duo2.data.tooltips.05_Performance.title\",\r\n description: \"devices.duo2.data.tooltips.05_Performance.description\",\r\n ranges: {\r\n book: [160, 310],\r\n tent: [188, 205],\r\n compose: [75, 140],\r\n dualLandscape: [200, 310],\r\n singleScreen: [70, 150],\r\n peek: [200, 360],\r\n },\r\n drawerWidth: \"400px\",\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-4.291987373700164, 1.658071690664789, 2.3988018235384847],\r\n },\r\n byMode: {\r\n tent: {\r\n position: {\r\n values: [\r\n -4.779861079159582,\r\n 0.9533581223215484,\r\n 1.3954907655948379,\r\n ],\r\n },\r\n },\r\n compose: {\r\n position: {\r\n values: [\r\n -0.8587566585151888,\r\n 2.2480983980991422,\r\n -4.605072094117425,\r\n ],\r\n },\r\n },\r\n dualLandscape: {\r\n position: {\r\n values: [\r\n -1.806664857897776,\r\n 0.9741704046865514,\r\n 4.638008680301989,\r\n ],\r\n },\r\n },\r\n singleScreen: {\r\n position: {\r\n values: [\r\n -1.9479664131643954,\r\n 2.3253485973902865,\r\n -4.227709705170017,\r\n ],\r\n },\r\n },\r\n peek: {\r\n position: {\r\n values: [\r\n 1.1032269599687474,\r\n 2.6395595840055845,\r\n 4.382370940631106,\r\n ],\r\n },\r\n },\r\n },\r\n },\r\n },\r\n \"06_Sim\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.duo2.data.tooltips.06_Sim.title\",\r\n description: \"devices.duo2.data.tooltips.06_Sim.description\",\r\n ranges: {\r\n book: [60, 120],\r\n tent: [315, 60],\r\n compose: [315, 60],\r\n dualLandscape: [315, 60],\r\n singleScreen: [30, 145],\r\n peek: [30, 145],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [3.9512609725850507, 1.681208787111556, -2.8270625263295273],\r\n },\r\n byMode: {\r\n book: {\r\n position: {\r\n values: [\r\n -0.19733252974079632,\r\n 0.9533581223215484,\r\n -4.975492567136562,\r\n ],\r\n },\r\n },\r\n singleScreen: {\r\n position: {\r\n values: [\r\n 1.5482149722213172,\r\n 2.1748337616170357,\r\n -4.449490113567787,\r\n ],\r\n },\r\n },\r\n peek: {\r\n position: {\r\n values: [\r\n 1.5482149722213172,\r\n 2.1748337616170357,\r\n -4.449490113567787,\r\n ],\r\n },\r\n },\r\n },\r\n },\r\n },\r\n \"07_Weight\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.duo2.data.tooltips.07_Weight.title\",\r\n description: \"devices.duo2.data.tooltips.07_Weight.description\",\r\n ranges: {\r\n book: [180, 300],\r\n tent: [335, 355],\r\n compose: [330, 15],\r\n dualLandscape: [225, 335],\r\n singleScreen: [90, 145],\r\n peek: [100, 150],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-2.5735420241008176, 1.0225677806582338, 4.254856562189258],\r\n },\r\n byMode: {\r\n tent: {\r\n position: {\r\n values: [\r\n 4.750831955903778,\r\n 0.954877694760647,\r\n 1.4908661943892614,\r\n ],\r\n },\r\n },\r\n compose: {\r\n position: {\r\n values: [\r\n 4.750831955903778,\r\n 0.954877694760647,\r\n 1.4908661943892614,\r\n ],\r\n },\r\n },\r\n singleScreen: {\r\n position: {\r\n values: [\r\n -1.6705932137947834,\r\n 2.845986776659927,\r\n -4.087231869830679,\r\n ],\r\n },\r\n },\r\n peek: {\r\n position: {\r\n values: [\r\n -1.1347365149648188,\r\n 3.9421130592362212,\r\n -3.4444492635312476,\r\n ],\r\n },\r\n },\r\n },\r\n },\r\n },\r\n \"08_Camera\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.duo2.data.tooltips.08_Camera.title\",\r\n description: \"devices.duo2.data.tooltips.08_Camera.description\",\r\n ranges: {\r\n book: [250, 360],\r\n tent: [130, 190],\r\n compose: [205, 325],\r\n dualLandscape: [205, 325],\r\n singleScreen: [335, 345],\r\n peek: [260, 360],\r\n },\r\n drawerWidth: \"450px\",\r\n },\r\n cameraData: {\r\n position: {\r\n values: [0.9904244973422602, 2.417123678190125, 4.510398665039166],\r\n },\r\n byMode: {\r\n tent: {\r\n position: {\r\n values: [\r\n -4.32262859679942,\r\n 0.9533581223215484,\r\n -2.471709616248835,\r\n ],\r\n },\r\n },\r\n singleScreen: {\r\n position: {\r\n values: [\r\n 0.9904244973422602,\r\n 2.417123678190125,\r\n 4.510398665039166,\r\n ],\r\n },\r\n },\r\n peek: {\r\n position: {\r\n values: [\r\n 1.1492874463100669,\r\n 0.9533581223215484,\r\n 4.844956633312537,\r\n ],\r\n },\r\n },\r\n },\r\n },\r\n },\r\n \"09_Battery\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.duo2.data.tooltips.09_Battery.title\",\r\n description: \"devices.duo2.data.tooltips.09_Battery.description\",\r\n ranges: {\r\n book: [50, 125],\r\n tent: [240, 340],\r\n compose: [15, 100],\r\n dualLandscape: [15, 100],\r\n singleScreen: [0, 30],\r\n peek: [330, 15],\r\n },\r\n top: true,\r\n },\r\n cameraData: {\r\n position: {\r\n values: [0.1143406391501905, 2.6358419982378325, -4.519414251515582],\r\n },\r\n byMode: {\r\n tent: {\r\n position: {\r\n values: [1.9705694734585872, 2.5475535488450793, 4.1139251834331],\r\n },\r\n },\r\n compose: {\r\n position: {\r\n values: [\r\n 2.444354909596646,\r\n 3.502269152203723,\r\n -3.1640968717244906,\r\n ],\r\n },\r\n },\r\n dualLandscape: {\r\n position: {\r\n values: [\r\n 2.444354909596646,\r\n 3.502269152203723,\r\n -3.1640968717244906,\r\n ],\r\n },\r\n },\r\n singleScreen: {\r\n position: {\r\n values: [\r\n 4.191567084589965,\r\n 3.1462458363439323,\r\n -0.6543304585714947,\r\n ],\r\n },\r\n },\r\n peek: {\r\n position: {\r\n values: [\r\n 4.191567084589965,\r\n 3.1462458363439323,\r\n -0.6543304585714947,\r\n ],\r\n },\r\n },\r\n },\r\n },\r\n },\r\n \"10_Buttons\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.duo2.data.tooltips.10_Buttons.title\",\r\n description: \"devices.duo2.data.tooltips.10_Buttons.description\",\r\n ranges: {\r\n book: [330, 90],\r\n tent: [250, 310],\r\n compose: [\r\n [45, 135],\r\n [225, 315],\r\n ],\r\n dualLandscape: [250, 310],\r\n singleScreen: [315, 40],\r\n peek: [315, 40],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [3.7109771369333493, 2.7414829261593168, -2.662802466523305],\r\n },\r\n byMode: {\r\n tent: {\r\n position: {\r\n values: [\r\n 0.640217920647896,\r\n 1.1989914075168082,\r\n 4.998764449454217,\r\n ],\r\n },\r\n },\r\n compose: {\r\n position: {\r\n values: [\r\n 0.6982807347247202,\r\n 4.348941626339219,\r\n 3.2533315796847213,\r\n ],\r\n },\r\n },\r\n dualLandscape: {\r\n position: {\r\n values: [\r\n 0.6982807347247202,\r\n 4.348941626339219,\r\n 3.2533315796847213,\r\n ],\r\n },\r\n },\r\n },\r\n },\r\n },\r\n \"11_Audio\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.duo2.data.tooltips.11_Audio.title\",\r\n description: \"devices.duo2.data.tooltips.11_Audio.description\",\r\n ranges: {\r\n book: [0, 70],\r\n tent: [235, 295],\r\n compose: [\r\n [60, 150],\r\n [210, 300],\r\n ],\r\n dualLandscape: [235, 295],\r\n singleScreen: [300, 25],\r\n peek: [300, 25],\r\n },\r\n drawerWidth: \"400px\",\r\n },\r\n cameraData: {\r\n position: {\r\n values: [4.516355408189571, 2.4014622957536687, -1.36860840256531],\r\n },\r\n byMode: {\r\n tent: {\r\n position: {\r\n values: [-1.47774398309939, 0.9533581223215484, 4.7550750922923],\r\n },\r\n },\r\n compose: {\r\n position: {\r\n values: [\r\n -0.8479804487948104,\r\n 3.5673139226657433,\r\n 4.042730688484642,\r\n ],\r\n },\r\n },\r\n dualLandscape: {\r\n position: {\r\n values: [\r\n -0.8479804487948104,\r\n 3.5673139226657433,\r\n 4.042730688484642,\r\n ],\r\n },\r\n },\r\n },\r\n },\r\n },\r\n \"12_Display\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.duo2.data.tooltips.12_Display.title\",\r\n description: \"devices.duo2.data.tooltips.12_Display.description\",\r\n ranges: {\r\n book: [60, 150],\r\n tent: [190, 290],\r\n compose: [25, 160],\r\n dualLandscape: [25, 160],\r\n singleScreen: [50, 130],\r\n peek: false,\r\n },\r\n drawerWidth: \"450px\",\r\n },\r\n cameraData: {\r\n position: {\r\n values: [-1.698331204382963, 2.5752121050511443, -4.2200907382742745],\r\n },\r\n byMode: {\r\n tent: {\r\n position: {\r\n values: [\r\n -1.4512733098728356,\r\n 0.9533581223215484,\r\n 4.763220779365136,\r\n ],\r\n },\r\n },\r\n peek: {\r\n position: {\r\n values: [\r\n -2.3036475591272834,\r\n 3.862861287051432,\r\n -2.895577988481349,\r\n ],\r\n },\r\n },\r\n },\r\n },\r\n },\r\n \"13_Security\": {\r\n type: \"tooltip\",\r\n data: {\r\n title: \"devices.duo2.data.tooltips.13_Security.title\",\r\n description: \"devices.duo2.data.tooltips.13_Security.description\",\r\n ranges: {\r\n book: [235, 10],\r\n tent: [10, 35],\r\n compose: [265, 340],\r\n dualLandscape: [265, 340],\r\n singleScreen: [35, 80],\r\n peek: [35, 50],\r\n },\r\n },\r\n cameraData: {\r\n position: {\r\n values: [2.2532020015449747, 0.9533581223215484, 4.44044447698187],\r\n },\r\n byMode: {\r\n tent: {\r\n position: {\r\n values: [\r\n 4.585812769381015,\r\n 0.9533581223215484,\r\n -1.9403060730480404,\r\n ],\r\n },\r\n },\r\n singleScreen: {\r\n position: {\r\n values: [\r\n 3.627983701944629,\r\n 2.3873036764360163,\r\n -2.876772339156375,\r\n ],\r\n },\r\n },\r\n peek: {\r\n position: {\r\n values: [\r\n 3.627983701944629,\r\n 2.3873036764360163,\r\n -2.876772339156375,\r\n ],\r\n },\r\n },\r\n },\r\n },\r\n },\r\n },\r\n animations: {\r\n primary: {\r\n intro: {\r\n duration: 2500,\r\n startFrame: 0.7125,\r\n endFrame: 1.53,\r\n animationName: \"00_Intro\",\r\n hideMeshes: [\"Message_1\", \"Message_2\", \"Message_3\", \"Time\"],\r\n },\r\n },\r\n },\r\n modes: {\r\n book: {\r\n primaryModeAnim: {\r\n // startFrame: 0,\r\n // endFrame: 1.1667,\r\n duration: 3000,\r\n fromMode: {\r\n compose: {\r\n startFrame: 1.53,\r\n endFrame: 0,\r\n animationName: \"06_Book_to_Compose\",\r\n },\r\n tent: {\r\n startFrame: 1.53,\r\n endFrame: 0,\r\n animationName: \"08_Book_to_Tent\",\r\n },\r\n singleScreen: {\r\n startFrame: 1.53,\r\n endFrame: 0,\r\n animationName: \"09_Book_to_Open\",\r\n },\r\n dualLandscape: {\r\n startFrame: 1.53,\r\n endFrame: 0,\r\n animationName: \"07_Book_to_Landscape\",\r\n },\r\n peek: {\r\n startFrame: 0,\r\n endFrame: 1.53,\r\n animationName: \"01_Closed_to_Book\",\r\n },\r\n },\r\n hideMeshes: [\"Message_1\", \"Message_2\", \"Message_3\", \"Time\"],\r\n },\r\n },\r\n tent: {\r\n primaryModeAnim: {\r\n // endFrame: 5.3295,\r\n duration: 3000,\r\n fromMode: {\r\n book: {\r\n startFrame: 0,\r\n endFrame: 1.53,\r\n animationName: \"08_Book_to_Tent\",\r\n },\r\n compose: {\r\n startFrame: 0,\r\n endFrame: 1.53,\r\n animationName: \"11_Compose_to_Tent\",\r\n },\r\n singleScreen: {\r\n startFrame: 1.53,\r\n endFrame: 0,\r\n animationName: \"15_Tent_to_Open\",\r\n },\r\n dualLandscape: {\r\n startFrame: 0,\r\n endFrame: 1.53,\r\n animationName: \"13_Landscape_to_Tent\",\r\n },\r\n peek: {\r\n startFrame: 0,\r\n endFrame: 1.53,\r\n animationName: \"04_Closed_to_Tent\",\r\n },\r\n },\r\n hideMeshes: [\"Message_1\", \"Message_2\", \"Message_3\", \"Time\"],\r\n },\r\n },\r\n compose: {\r\n primaryModeAnim: {\r\n // endFrame: 2.7984,\r\n duration: 3000,\r\n fromMode: {\r\n book: {\r\n startFrame: 0,\r\n endFrame: 1.53,\r\n animationName: \"06_Book_to_Compose\",\r\n },\r\n tent: {\r\n startFrame: 1.53,\r\n endFrame: 0,\r\n animationName: \"11_Compose_to_Tent\",\r\n },\r\n singleScreen: {\r\n startFrame: 1.53,\r\n endFrame: 0,\r\n animationName: \"12_Compose_to_Open\",\r\n },\r\n dualLandscape: {\r\n startFrame: 1.53,\r\n endFrame: 0,\r\n animationName: \"10_Compose_to_Landscape\",\r\n },\r\n peek: {\r\n startFrame: 0,\r\n endFrame: 1.53,\r\n animationName: \"02_Closed_to_Compose\",\r\n },\r\n },\r\n hideMeshes: [\"Message_1\", \"Message_2\", \"Message_3\", \"Time\"],\r\n },\r\n },\r\n dualLandscape: {\r\n primaryModeAnim: {\r\n // endFrame: 4.032,\r\n duration: 3000,\r\n fromMode: {\r\n book: {\r\n startFrame: 0,\r\n endFrame: 1.53,\r\n animationName: \"07_Book_to_Landscape\",\r\n },\r\n compose: {\r\n startFrame: 0,\r\n endFrame: 1.53,\r\n animationName: \"10_Compose_to_Landscape\",\r\n },\r\n tent: {\r\n startFrame: 1.53,\r\n endFrame: 0,\r\n animationName: \"13_Landscape_to_Tent\",\r\n },\r\n singleScreen: {\r\n startFrame: 1.53,\r\n endFrame: 0,\r\n animationName: \"14_Landscape_to_Open\",\r\n },\r\n peek: {\r\n startFrame: 0,\r\n endFrame: 1.53,\r\n animationName: \"03_Closed_to_Landscape\",\r\n },\r\n },\r\n hideMeshes: [\"Message_1\", \"Message_2\", \"Message_3\", \"Time\"],\r\n },\r\n },\r\n singleScreen: {\r\n primaryModeAnim: {\r\n // endFrame: 6.6308,\r\n duration: 3000,\r\n fromMode: {\r\n book: {\r\n startFrame: 0,\r\n endFrame: 1.53,\r\n animationName: \"09_Book_to_Open\",\r\n },\r\n compose: {\r\n startFrame: 0,\r\n endFrame: 1.53,\r\n animationName: \"12_Compose_to_Open\",\r\n },\r\n tent: {\r\n startFrame: 0,\r\n endFrame: 1.53,\r\n animationName: \"15_Tent_to_Open\",\r\n },\r\n dualLandscape: {\r\n startFrame: 0,\r\n endFrame: 1.53,\r\n animationName: \"14_Landscape_to_Open\",\r\n },\r\n peek: {\r\n startFrame: 0,\r\n endFrame: 1.53,\r\n animationName: \"05_Closed_to_Open\",\r\n },\r\n },\r\n hideMeshes: [\"Message_1\", \"Message_2\", \"Message_3\", \"Time\"],\r\n },\r\n },\r\n peek: {\r\n primaryModeAnim: {\r\n // endFrame: 0,\r\n duration: 3000,\r\n fromMode: {\r\n book: {\r\n startFrame: 1.53,\r\n endFrame: 0,\r\n animationName: \"01_Closed_to_Book\",\r\n },\r\n compose: {\r\n startFrame: 1.53,\r\n endFrame: 0,\r\n animationName: \"02_Closed_to_Compose\",\r\n },\r\n tent: {\r\n startFrame: 1.53,\r\n endFrame: 0,\r\n animationName: \"04_Closed_to_Tent\",\r\n },\r\n singleScreen: {\r\n startFrame: 1.53,\r\n endFrame: 0,\r\n animationName: \"05_Closed_to_Open\",\r\n },\r\n dualLandscape: {\r\n startFrame: 1.53,\r\n endFrame: 0,\r\n animationName: \"03_Closed_to_Landscape\",\r\n },\r\n },\r\n showMeshes: [\"Message_1\", \"Message_2\", \"Message_3\", \"Time\"],\r\n },\r\n },\r\n },\r\n sidePanelDetails: {\r\n title: \"general.menu.duo.name\",\r\n cta: \"https://www.microsoft.com/surface/business/surface-duo-2\",\r\n seeItInAction: false,\r\n modes: {\r\n header: \"general.explorerDetailHeader.postures\",\r\n default: \"book\",\r\n values: {\r\n book: \"general.postures.book\",\r\n tent: \"general.postures.tent\",\r\n compose: \"general.postures.compose\",\r\n dualLandscape: \"general.postures.dualLandscape\",\r\n singleScreen: \"general.postures.singleScreen\",\r\n peek: \"general.postures.peek\",\r\n },\r\n },\r\n colors: [\r\n {\r\n header: \"general.explorerDetailHeader.color\",\r\n default: \"glacier\",\r\n colorValues: {\r\n glacier: {\r\n name: \"general.color.glacier\",\r\n swatchColor: \"#e3e3e3\",\r\n swatchBorder: \"#cfcfcf\",\r\n checkmarkColor: \"black\",\r\n colorChanges: [\r\n {\r\n materials: [\"White_Shiny_Camera\", \"White_Shiny_Windows\"],\r\n color: \"#C0C0C0\",\r\n },\r\n {\r\n materials: [\"White_Painted_Metal\"],\r\n color: \"#c7c7c7\",\r\n },\r\n ],\r\n },\r\n obsidian: {\r\n name: \"general.color.obsidian\",\r\n swatchColor: \"#272727\",\r\n colorChanges: [\r\n {\r\n materials: [\r\n \"White_Shiny_Camera\",\r\n \"White_Shiny_Windows\",\r\n \"White_Painted_Metal\",\r\n ],\r\n color: \"#141414\",\r\n },\r\n ],\r\n },\r\n },\r\n },\r\n ],\r\n },\r\n disclaimer: [\r\n \"devices.duo2.data.disclaimer.1\",\r\n \"devices.duo2.data.disclaimer.2\",\r\n \"devices.duo2.data.disclaimer.3\",\r\n \"devices.duo2.data.disclaimer.4\",\r\n \"devices.duo2.data.disclaimer.5\",\r\n \"devices.duo2.data.disclaimer.6\",\r\n ],\r\n};\r\n","import Laptop_3 from \"./devicesData/laptop4.js\";\r\nimport Hartwell from \"./devicesData/laptop7.js\";\r\nimport Laptop_5 from \"./devicesData/laptop6.js\";\r\nimport Laptop_5_prev from \"./devicesData/laptop5.js\";\r\n//New change for 9/21 ----\r\nimport Laptop_Go from \"./devicesData/laptopGo3.js\";\r\nimport Laptop_Go_prev from \"./devicesData/laptopGo.js\";\r\n// ----\r\n// New change for 9/21 ----\r\nimport Go_2_prev from \"./devicesData/go3.js\";\r\nimport Go_2 from \"./devicesData/go4.js\";\r\n// ----\r\nimport Pro_8 from \"./devicesData/pro8.js\";\r\nimport Pro_9 from \"./devicesData/pro10.js\";\r\nimport Big_Rock from \"./devicesData/pro11new.js\";\r\nimport Pro_9_prev from \"./devicesData/pro9.js\";\r\nimport Studio from \"./devicesData/studio.js\";\r\n// New change for 9/21 ----\r\nimport Laptop_Studio from \"./devicesData/laptopStudio2.js\";\r\nimport Laptop_Studio_prev from \"./devicesData/laptopStudio.js\";\r\n// ----\r\nimport Headphones from \"./devicesData/headphones.js\";\r\nimport Toba from \"./devicesData/proFlexKeyboard.js\";\r\nimport Earbuds from \"./devicesData/earbuds.js\";\r\nimport Hubs from \"./devicesData/hubs3.js\";\r\nimport Hubs_prev from \"./devicesData/hubs.js\";\r\nimport Pro_X from \"./devicesData/proX.js\";\r\nimport Duo_2 from \"./devicesData/duo2.js\";\r\n\r\nconst allScenes = {\r\n Overview: [\r\n {\r\n root: \"/familyExplorer/models/Home/\",\r\n file: \"Exp_Landing_52.glb\",\r\n },\r\n ],\r\n PreviousOverview: [\r\n {\r\n root: \"/familyExplorer/models/Home/\",\r\n file: \"Exp_Landing_51.glb\",\r\n },\r\n ],\r\n Laptop_3: [\r\n {\r\n root: \"/familyExplorer/models/Laptop_3/\",\r\n file: \"03_Laptop_3_E_Export14-processed.gltf\",\r\n },\r\n ],\r\n Hartwell: [\r\n {\r\n root: \"/familyExplorer/models/Laptop_3/\",\r\n file: \"Hartwell_07E.glb\",\r\n },\r\n ],\r\n Laptop_5: [\r\n {\r\n root: \"/familyExplorer/models/Laptop_3/\",\r\n file: \"Laptop_5_1L.glb\",\r\n },\r\n ],\r\n Laptop_5_prev: [\r\n {\r\n root: \"/familyExplorer/models/Laptop_3/\",\r\n file: \"03_Laptop_3_E_Export14-processed.gltf\",\r\n },\r\n ],\r\n // New change for 9/21 ----\r\n Laptop_Go: [\r\n {\r\n root: \"/familyExplorer/models/Laptop_Go/\",\r\n file: \"08_Laptop_Go_08_Export-processed.gltf\",\r\n },\r\n ],\r\n Laptop_Go_prev: [\r\n {\r\n root: \"/familyExplorer/models/Laptop_Go/\",\r\n file: \"08_Laptop_Go_08_Export-processed.gltf\",\r\n },\r\n ],\r\n // ----\r\n // New change for 9/21 ----\r\n Go_2: [\r\n {\r\n root: \"/familyExplorer/models/Go_2/\",\r\n file: \"07_Go_2_Export_Tab_9-processed.gltf\",\r\n },\r\n {\r\n root: \"/familyExplorer/models/Go_2/\",\r\n file: \"07_Go_2_Export_KeyB_8-processed.gltf\",\r\n },\r\n ],\r\n Go_2_prev: [\r\n {\r\n root: \"/familyExplorer/models/Go_2/\",\r\n file: \"07_Go_2_Export_Tab_9-processed.gltf\",\r\n },\r\n {\r\n root: \"/familyExplorer/models/Go_2/\",\r\n file: \"07_Go_2_Export_KeyB_8-processed.gltf\",\r\n },\r\n ],\r\n // ----\r\n Pro_8: [\r\n {\r\n root: \"/familyExplorer/models/Pro_8/\",\r\n file: \"Delia_Exp_08C_Tablet.glb\",\r\n },\r\n {\r\n root: \"/familyExplorer/models/Pro_8/\",\r\n file: \"Delia_Exp_08_Keyboard.glb\",\r\n },\r\n ],\r\n Big_Rock: [\r\n {\r\n root: \"/familyExplorer/models/Pro_9/\",\r\n file: \"Pro_10_6_Tablet.glb\",\r\n },\r\n {\r\n root: \"/familyExplorer/models/Pro_9/\",\r\n file: \"Pro_10_5_Keyboard.glb\",\r\n },\r\n ],\r\n Pro_9: [\r\n {\r\n root: \"/familyExplorer/models/Pro_9/\",\r\n file: \"Pro_9_Exp_06_Tablet.glb\",\r\n },\r\n {\r\n root: \"/familyExplorer/models/Pro_9/\",\r\n file: \"Pro_9_Exp_06_Keyboard.glb\",\r\n },\r\n ],\r\n Pro_9_prev: [\r\n {\r\n root: \"/familyExplorer/models/Pro_9/\",\r\n file: \"Pro_9_Exp_04_Tablet.glb\",\r\n },\r\n {\r\n root: \"/familyExplorer/models/Pro_9/\",\r\n file: \"Pro_9_Exp_04_Keyboard.glb\",\r\n },\r\n ],\r\n Studio: [\r\n {\r\n root: \"/familyExplorer/models/Studio/\",\r\n file: \"Surface_Studio_2_EX_17.glb\",\r\n },\r\n ],\r\n // New change for 9/21 ----\r\n Laptop_Studio: [\r\n {\r\n root: \"/familyExplorer/models/LaptopStudio/\",\r\n file: \"Rowen_Exp_12.glb\",\r\n },\r\n ],\r\n Laptop_Studio_prev: [\r\n {\r\n root: \"/familyExplorer/models/LaptopStudio/\",\r\n file: \"Rowen_Exp_11.glb\",\r\n },\r\n ],\r\n // ----\r\n Headphones: [\r\n {\r\n root: \"/familyExplorer/models/Headphone_2/\",\r\n file: \"09_Headphones_Export16-processed.gltf\",\r\n },\r\n ],\r\n Toba: [\r\n {\r\n root: \"/familyExplorer/models/Toba/\",\r\n file: \"Toba_3.glb\",\r\n },\r\n ],\r\n Earbuds: [\r\n {\r\n root: \"/familyExplorer/models/Earbuds/\",\r\n file: \"09B_Earbuds_Export10-processed.gltf\",\r\n },\r\n ],\r\n Hubs: [\r\n {\r\n root: \"/familyExplorer/models/Hubs/\",\r\n file: \"Exp_HUBs_32.glb\",\r\n },\r\n ],\r\n Hubs_prev: [\r\n {\r\n root: \"/familyExplorer/models/Hubs/\",\r\n file: \"Exp_HUBs_27.glb\",\r\n },\r\n ],\r\n Duo_2: [\r\n {\r\n root: \"/familyExplorer/models/Duo_2/\",\r\n file: \"Duo_2_Exp_17.glb\",\r\n },\r\n ],\r\n Pro_X: [\r\n {\r\n root: \"/familyExplorer/models/Pro_X/\",\r\n file: \"Harris_Exp_08A_Tablet.glb\",\r\n },\r\n {\r\n root: \"/familyExplorer/models/Pro_X/\",\r\n file: \"Harris_Exp_08_Keyboard.glb\",\r\n },\r\n ],\r\n};\r\n\r\nconst devices = {\r\n Earbuds,\r\n // New change for 9/21 ----\r\n Go_2,\r\n Go_2_prev,\r\n // ----\r\n Headphones,\r\n Toba,\r\n Laptop_3,\r\n Laptop_5,\r\n Hartwell,\r\n Laptop_5_prev,\r\n // New change for 9/21 ----\r\n Laptop_Go,\r\n Laptop_Go_prev,\r\n // ----\r\n Studio,\r\n Hubs,\r\n Hubs_prev,\r\n // New change for 9/21 ----\r\n Laptop_Studio,\r\n Laptop_Studio_prev,\r\n // ----\r\n Big_Rock,\r\n Pro_9,\r\n Pro_9_prev,\r\n Pro_8,\r\n Pro_X,\r\n Duo_2,\r\n};\r\n\r\nexport { allScenes, devices };\r\n","import { Engine } from \"@babylonjs/core/Engines/engine\";\r\nimport { Scene } from \"@babylonjs/core/scene\";\r\nimport anime from \"animejs\";\r\nimport {\r\n ArcRotateCamera,\r\n Color3,\r\n CubeTexture,\r\n Matrix,\r\n MeshBuilder,\r\n PointerDragBehavior,\r\n ExecuteCodeAction,\r\n ActionManager,\r\n SceneLoader,\r\n Texture,\r\n Vector3,\r\n ShadowGenerator,\r\n DirectionalLight,\r\n StandardMaterial,\r\n Animation,\r\n EasingFunction,\r\n CubicEase,\r\n Tools,\r\n Scalar,\r\n ImageProcessingConfiguration,\r\n} from \"@babylonjs/core\";\r\n\r\nimport { AdvancedDynamicTexture, TextBlock } from \"@babylonjs/gui\";\r\n\r\nimport { Debug } from \"@babylonjs/core/Legacy/legacy\";\r\n\r\n// import \"@babylonjs/core/Materials/standardMaterial\";\r\n// import \"@babylonjs/core/Materials/Textures/texture\";\r\n// minor thing\r\nimport \"@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_variants\";\r\n\r\nimport \"@babylonjs/core/Debug/debugLayer\"; // Augments the scene with the debug methods\r\nimport \"@babylonjs/inspector\"; // Injects a local ES6 version of the inspector to prevent automatically relying on the none compatible version\r\n// Required side effects to populate the Create methods on the mesh class. Without this, the bundle would be smaller but the createXXX methods from mesh would not be accessible.\r\nimport \"@babylonjs/core/Meshes/meshBuilder\";\r\nimport CustomLoadingScreen from \"../../js/CustomLoadingScreen\";\r\n\r\nimport { lerp, isValueInRange, preloadVideo } from \"@/js/_helpers\";\r\nimport MeshOverlay from \"@/js/webgl/famExpMeshOverlay\";\r\n\r\nimport { devices, allScenes } from \"./familyExplorer-data\";\r\nimport { nextTick } from \"vue\";\r\nimport { useRoute, useRouter } from \"vue-router\";\r\nimport { emitter } from \"@/js/emitter\";\r\n\r\nconst assetContainers = {};\r\nlet shdwGenerator,\r\n flag = true,\r\n lastAnimFrame = 0;\r\n\r\nexport default class FamilyExplorer {\r\n constructor(showOverview, showDetail, store, updateMode) {\r\n this.showOverview = showOverview;\r\n this.showDetail = showDetail;\r\n this.route = useRoute();\r\n this.router = useRouter();\r\n this.store = store;\r\n this.updateMode = updateMode;\r\n this.detailView = false;\r\n this.visibleModal = \"\";\r\n\r\n //this.alphaStep = 0; //this value is always 0\r\n //this.betaStep = 0; //this value is always 0\r\n this.lastX = 0;\r\n this.lastY = 0;\r\n this.rotation_Half_PI = Math.PI / 2;\r\n this.rotation_Half_PI_minus = -Math.PI / 2;\r\n this.currentModePosture = \"laptop\";\r\n this.currentFrame = {\r\n primary: 0,\r\n secondary: 0,\r\n };\r\n\r\n this.detailIntroAnimationComplete = false;\r\n this.draggableRegisterBeforeRender = false;\r\n this.generalRegisterBeforeRender = false;\r\n this.deviceSpecificRegisterBeforeRender = false;\r\n this.deviceChangesModelRegisterBeforeRender = false;\r\n\r\n this.paramsToID = {\r\n pro8: \"Pro_8\",\r\n pro10: \"Pro_9\",\r\n pro11: \"Big_Rock\",\r\n pro9: \"Pro_9_prev\",\r\n laptopStudio: \"Laptop_Studio_prev\",\r\n laptopStudio2: \"Laptop_Studio\",\r\n earbuds: \"Earbuds\",\r\n // New change for 9/21 ----\r\n go3: \"Go_2_prev\",\r\n go4: \"Go_2\",\r\n // ----\r\n headphones: \"Headphones\",\r\n proFlexKeyboard: \"Toba\",\r\n laptop4: \"Laptop_3\",\r\n laptop6: \"Laptop_5\",\r\n laptop7: \"Hartwell\",\r\n laptop5: \"Laptop_5_prev\",\r\n // new change for 9/21\r\n laptopGo3: \"Laptop_Go\",\r\n laptopGo2: \"Laptop_Go_prev\",\r\n // ----\r\n studio2plus: \"Studio\",\r\n hub3: \"Hubs\",\r\n hub2s: \"Hubs_prev\",\r\n proX: \"Pro_X\",\r\n duo2: \"Duo_2\",\r\n };\r\n this.allDeviceIDs = Object.values(this.paramsToID);\r\n\r\n this.quality = {\r\n topLimit: {\r\n sd: 1.25,\r\n md: 1,\r\n hd: 0.75,\r\n },\r\n homeScreen: {\r\n sd: 1,\r\n md: 0.75,\r\n hd: 0.5,\r\n },\r\n singleDevices: {\r\n sd: 1.5,\r\n md: 1,\r\n hd: 0.5,\r\n },\r\n };\r\n\r\n this.modelVisibility = null;\r\n }\r\n\r\n async setup() {\r\n // Get the canvas element from the DOM.\r\n this.canvas = document.querySelector(\"#renderCanvas\");\r\n\r\n // Associate a Babylon Engine to it.\r\n this.engine = new Engine(this.canvas, true, { xrCompatible: false }, false);\r\n this.engine.canvasTabIndex = -1;\r\n\r\n this.renderW = this.engine.getRenderWidth(true);\r\n this.renderH = this.engine.getRenderHeight(true);\r\n\r\n this.screenHeight = window.innerHeight;\r\n this.screenWidth = window.innerWidth;\r\n\r\n this.ticking = false;\r\n\r\n this._setCameraPosScreenSize();\r\n\r\n this.scene = this._createScene();\r\n this.meshOverlayItems = {};\r\n this.meshOverlayTooltipConfig = {};\r\n this.animateCameraTimeout = null;\r\n\r\n this.firstSceneToLoad = null;\r\n\r\n // this.foregroundScene = this._createForegroundScene();\r\n\r\n this.store.commit(\"updateIsFamilyExplorer\", true);\r\n\r\n ArcRotateCamera.prototype.animateCamTo = function(\r\n whichprop,\r\n targetval,\r\n frames,\r\n callback\r\n ) {\r\n var ease = new CubicEase();\r\n ease.setEasingMode(EasingFunction.EASINGMODE_EASEINOUT);\r\n let fps = frames && frames.fps ? frames.fps : 120;\r\n let totalFrames = frames && frames.total ? frames.total : 120;\r\n // (name, node, targetProp, framePerSecond, totalFrame, from, to, loopMode, easingFunction, onAnimationEnd())\r\n Animation.CreateAndStartAnimation(\r\n \"at4\",\r\n this,\r\n whichprop,\r\n fps,\r\n totalFrames,\r\n this[whichprop],\r\n targetval,\r\n 0,\r\n ease,\r\n callback\r\n );\r\n };\r\n\r\n // Default Material and Texture for devices screens\r\n this.defaultWallpaperTexture = new Texture(\r\n \"/familyExplorer/models/defaultBloomWallpaper_3x2.jpg\",\r\n this.scene\r\n );\r\n //defaultWallpaperTexture.wAng = Math.PI;\r\n this.defaultWallpaperTexture.uAng = Math.PI;\r\n this.screenMaterial = new StandardMaterial(\"screenWallpaper\", this.scene);\r\n this.screenMaterial.emissiveColor = new Color3.White();\r\n this.screenMaterial.diffuseTexture = this.defaultWallpaperTexture;\r\n this.screenMaterial.specularPower = 128;\r\n this.screenMaterial.specularColor = new Color3.FromHexString(\"#0A0A0A\");\r\n\r\n var cameraAlpha = this.cameraPosScreenSize[\r\n this.store.state.windowSize.readableRatio\r\n ].alpha;\r\n var cameraBeta = this.cameraPosScreenSize[\r\n this.store.state.windowSize.readableRatio\r\n ].beta;\r\n var cameraRadius = this.cameraPosScreenSize[\r\n this.store.state.windowSize.readableRatio\r\n ].radius;\r\n\r\n this.camera = new ArcRotateCamera(\r\n \"\",\r\n cameraAlpha,\r\n cameraBeta,\r\n cameraRadius,\r\n this.cameraPosScreenSize[\r\n this.store.state.windowSize.readableRatio\r\n ].position,\r\n this.scene\r\n );\r\n this.camera.fov = 0.252;\r\n this.camera.minZ = 6;\r\n this.camera.maxZ = 10000;\r\n this.camera.wheelDeltaPercentage = 0.005;\r\n\r\n let familyAssets = await this._loadPromise(\r\n allScenes.Overview[0].root,\r\n allScenes.Overview[0].file\r\n );\r\n\r\n let previousFamilyAssets = await this._loadPromise(\r\n allScenes.PreviousOverview[0].root,\r\n allScenes.PreviousOverview[0].file\r\n );\r\n\r\n assetContainers[allScenes.Overview[0].file] = familyAssets;\r\n assetContainers[allScenes.PreviousOverview[0].file] = previousFamilyAssets;\r\n\r\n // Finding and applying texture on screens of devices in Surface Family Scene\r\n familyAssets.materials.forEach(material => {\r\n if (material.id === \"__GLTFLoader._default\") {\r\n material.albedoTexture = this.defaultWallpaperTexture;\r\n //material.albedoTexture.wAng = Math.PI;\r\n //material.albedoTexture.uScale = -1.0;\r\n //material.albedoTexture.vScale = 1.0;\r\n }\r\n if (material.id === \"FE_01_Gallery_Titles\") {\r\n material.disableLighting = true;\r\n // material.albedoColor = new Color3.FromHexString(\"#8E8E8E\");\r\n }\r\n });\r\n\r\n assetContainers[\"Exp_Landing_52.glb\"].addAllToScene();\r\n\r\n //Get the Sun_Light prop from old(previous) landing page, and add it to the current scene, \r\n // as there was difficulty in getting the light exported in new version\r\n var light= assetContainers[\"Exp_Landing_51.glb\"].lights[0];\r\n this.scene.addLight(light);\r\n \r\n let sun = this.scene.getLightByID(\"Sun_Light\");\r\n sun.direction = new Vector3(0.0, 0.0, -1.0);\r\n sun.autoCalcShadowZBounds = true;\r\n\r\n let shadowGenerator = new ShadowGenerator(512, sun);\r\n shadowGenerator.usePercentageCloserFiltering = true;\r\n shadowGenerator.bias = 0.005;\r\n shadowGenerator.normalBias = 1.1;\r\n shadowGenerator.darkness = 0.3;\r\n\r\n // Optimization of Realtime Shadow present in Holiday Launched Scenarios\r\n shadowGenerator.getShadowMap().refreshRate = 0;\r\n\r\n familyAssets.meshes.forEach(mesh => {\r\n shadowGenerator.getShadowMap().renderList.push(mesh);\r\n if (\r\n (mesh.id == \"Ground\" ||\r\n mesh.id == \"Back\" ||\r\n mesh.id == \"Back_1\" ||\r\n mesh.id == \"Back_2\" ||\r\n mesh.id == \"Main\" ||\r\n mesh.id == \"Side\" ||\r\n mesh.id == \"Floor\" ||\r\n mesh.id == \"SS_Base\") &&\r\n mesh._isMesh\r\n ) {\r\n mesh.receiveShadows = true;\r\n }\r\n if (\r\n mesh.name === \"Rowen_Field\" ||\r\n mesh.name === \"EB_Field\" ||\r\n mesh.name === \"G4_Field\" ||\r\n mesh.name === \"G2_Field\" ||\r\n mesh.name === \"HP_Field\" ||\r\n mesh.name === \"L5_Field\" ||\r\n mesh.name === \"LG_Field\" ||\r\n mesh.name === \"Pro_9_Field\" ||\r\n mesh.name === \"Deila_Field\" ||\r\n mesh.name === \"SS_Field\" ||\r\n mesh.name === \"Harris_Field\" ||\r\n mesh.name === \"HUB_50_Field\" ||\r\n mesh.name === \"H85_Field\" ||\r\n mesh.name === \"DO_Field\"\r\n ) {\r\n mesh.visibility = 0;\r\n } else {\r\n shadowGenerator.getShadowMap().renderList.push(mesh);\r\n }\r\n // Setting Meshes to Lights\r\n this.scene.lights[0].includedOnlyMeshes.push(mesh);\r\n this.scene.lights[1].excludedMeshes.push(mesh);\r\n\r\n // Hiding the Original Devices Titles (Textured in a mesh)\r\n if (mesh.name === \"Gallery_Titles\" || mesh.name === \"Titles\") {\r\n mesh.visibility = 0;\r\n }\r\n\r\n // if (mesh.name === \"H85_Field\") {\r\n // let field50 = mesh.clone(\"H50_Field\");\r\n // field50.id = \"H50_Field\";\r\n // field50.isPickable = false;\r\n // }\r\n });\r\n\r\n this.createDevicesTitles(this.scene);\r\n if (!this.route.params.device) {\r\n anime.set(\".page__overlay-fade\", {\r\n opacity: 1,\r\n });\r\n setTimeout(() => {\r\n this.engine.hideLoadingUI();\r\n anime({\r\n targets: \".page__overlay-fade\",\r\n opacity: 0,\r\n duration: 350,\r\n easing: \"easeInOutQuad\",\r\n });\r\n }, 500);\r\n this.updateQuality(\"homeScreen\");\r\n } else {\r\n this.firstSceneToLoad = this.paramsToID[this.route.params.device];\r\n var firstScene = await this._loadScene(\r\n this.paramsToID[this.route.params.device]\r\n );\r\n }\r\n // Render every frame\r\n let odd = false;\r\n this.engine.runRenderLoop(() => {\r\n if (odd) {\r\n if (!this.detailView && this.camera) {\r\n //\r\n //this.alphaStep += 0; //this value is always 0\r\n //this.betaStep += 0; //this value is always 0\r\n //let alpha = cameraAlpha + Math.sin(this.alphaStep) * 0.05 - this.lastX * 0.02; //Math sin (0) is always 0\r\n let alpha = cameraAlpha - this.lastX * 0.02;\r\n //let beta = cameraBeta + Math.cos(this.betaStep) * 0.05 + this.lastY * 0.01; // Math cos(0) is always 1\r\n let beta = cameraBeta + 0.05 + this.lastY * 0.01;\r\n this.camera.alpha = lerp(this.camera.alpha, alpha, 0.05);\r\n this.camera.beta = lerp(this.camera.beta, beta, 0.05);\r\n }\r\n this.scene.render();\r\n }\r\n odd = !odd;\r\n });\r\n\r\n document.onkeydown = evt => {\r\n if (evt.shiftKey && evt.ctrlKey && evt.key === \"D\") {\r\n this._createDebug();\r\n }\r\n };\r\n\r\n // only listen for scroll events\r\n window.addEventListener(\"mousemove\", this._onMousemove, false);\r\n\r\n // Grayed Out Effect /////////////////////////////////////////////////\r\n // Hack for Pro X Keyboard which originally is a instance\r\n // of Pro 8 Keyboard and can't has it material changed\r\n /*\r\n const kbdClone = this.scene\r\n .getNodeByName(\"Delia_Keyboard\")\r\n .clone(\"kbdClone\");\r\n kbdClone.material = this.scene\r\n .getMaterialByName(\"FE_01_PX_Keyboard\")\r\n .clone(\"kbdMatClone\");\r\n kbdClone.setParent(this.scene.getNodeByName(\"Pro_X\"));\r\n kbdClone.setPositionWithLocalVector(new Vector3(2.991, 0.95, 6.07));\r\n assetContainers[\"Exp_Landing_43.glb\"].meshes.push(kbdClone);\r\n this.scene.getNodeByName(\"Harris_Keyboard\").dispose();\r\n */\r\n this.textureGO_LUT = new Texture(\r\n \"/familyExplorer/models/Home/filt_lut_1.png\",\r\n this.scene\r\n );\r\n\r\n // eslint-disable-next-line no-unused-vars\r\n this.activeDevices = [\r\n {\r\n cod: \"spro9\",\r\n device: this.scene.getNodeByName(\"Pro_9_prev\"),\r\n field: this.scene.getNodeByName(\"Pro_9_Field\"),\r\n active: true,\r\n screen: [\"Pro_9_Screen_Proxy\"],\r\n },\r\n {\r\n cod: \"spro10\",\r\n device: this.scene.getNodeByName(\"Pro_9\"),\r\n field: this.scene.getNodeByName(\"Pro_9_Field\"),\r\n active: true,\r\n screen: [\"Pro_9_Screen_Proxy\"],\r\n },\r\n {\r\n cod: \"spro11\",\r\n device: this.scene.getNodeByName(\"Big_Rock\"),\r\n field: this.scene.getNodeByName(\"Big_Rock_Field\"),\r\n active: true,\r\n screen: [\"Big_Rock_Screen_Proxy\"],\r\n },\r\n {\r\n cod: \"spro8\",\r\n device: this.scene.getNodeByName(\"Pro_8\"),\r\n field: this.scene.getNodeByName(\"Deila_Field\"),\r\n active: true,\r\n screen: [\"Delia_Screen_Proxy\"],\r\n },\r\n {\r\n cod: \"sprox\",\r\n device: this.scene.getNodeByName(\"Pro_X\"),\r\n field: this.scene.getNodeByName(\"Harris_Field\"),\r\n active: true,\r\n screen: [\"Harris_Screen_Proxy\"],\r\n },\r\n // New change for 9/21 ----\r\n {\r\n cod: \"sgo4\",\r\n device: this.scene.getNodeByName(\"Go_2\"),\r\n field: this.scene.getNodeByName(\"G2_Field\"),\r\n active: true,\r\n screen: [\"G2_Screen_Proxy\"],\r\n },\r\n // ----\r\n {\r\n cod: \"sgo3\",\r\n device: this.scene.getNodeByName(\"Go_2_prev\"),\r\n field: this.scene.getNodeByName(\"G2_Field\"),\r\n active: true,\r\n screen: [\"G2_Screen_Proxy\"],\r\n },\r\n {\r\n cod: \"sduo2\",\r\n device: this.scene.getNodeByName(\"Duo_2\"),\r\n field: this.scene.getNodeByName(\"DO_Field\"),\r\n active: true,\r\n screen: [\"Screen_Proxy_Left_Stretch\", \"Screen_Proxy_Right_Stretch\"],\r\n },\r\n {\r\n cod: \"sstudio2\",\r\n device: this.scene.getNodeByName(\"Studio\"),\r\n field: this.scene.getNodeByName(\"SS_Field\"),\r\n active: true,\r\n screen: [\"SS_Screen_Proxy\"],\r\n },\r\n // New change for 9/21 ----\r\n {\r\n cod: \"slaptopgo3\",\r\n device: this.scene.getNodeByName(\"Laptop_Go\"),\r\n field: this.scene.getNodeByName(\"LG_Field\"),\r\n active: true,\r\n screen: [\"LG_Screen_Proxy\"],\r\n },\r\n // ----\r\n {\r\n cod: \"slaptopgo\",\r\n device: this.scene.getNodeByName(\"Laptop_Go_prev\"),\r\n field: this.scene.getNodeByName(\"LG_Field\"),\r\n active: true,\r\n screen: [\"LG_Screen_Proxy\"],\r\n },\r\n // New change for 9/21 ----\r\n {\r\n cod: \"slaptops2\",\r\n device: this.scene.getNodeByName(\"Laptop_Studio\"),\r\n field: this.scene.getNodeByName(\"Rowen_Field\"),\r\n active: true,\r\n screen: [\"Screen_Proxy\"],\r\n },\r\n {\r\n cod: \"slaptops\",\r\n device: this.scene.getNodeByName(\"Laptop_Studio_prev\"),\r\n field: this.scene.getNodeByName(\"Rowen_Field\"),\r\n active: true,\r\n screen: [\"Screen_Proxy\"],\r\n },\r\n // ----\r\n {\r\n cod: \"slaptop4\",\r\n device: this.scene.getNodeByName(\"Laptop_3\"),\r\n field: this.scene.getNodeByName(\"L3_Field\"),\r\n active: true,\r\n screen: [\"L3_Screen_Proxy\"],\r\n },\r\n {\r\n cod: \"slaptop5\",\r\n device: this.scene.getNodeByName(\"Laptop_5_prev\"),\r\n field: this.scene.getNodeByName(\"L5_Field\"),\r\n active: true,\r\n screen: [\"L5_Screen_Proxy\"],\r\n },\r\n {\r\n cod: \"slaptop6\",\r\n device: this.scene.getNodeByName(\"Laptop_5\"),\r\n field: this.scene.getNodeByName(\"L5_Field\"),\r\n active: true,\r\n screen: [\"L5_Screen_Proxy\"],\r\n },\r\n {\r\n cod: \"slaptop7\",\r\n device: this.scene.getNodeByName(\"Hartwell\"),\r\n field: this.scene.getNodeByName(\"Hartwell_Field\"),\r\n active: true,\r\n screen: [\"Screen_Proxy_Hartwell\"],\r\n },\r\n {\r\n cod: \"shead2\",\r\n device: this.scene.getNodeByName(\"Headphones\"),\r\n field: this.scene.getNodeByName(\"HP_Field\"),\r\n active: true,\r\n screen: false,\r\n },\r\n {\r\n cod: \"sproFlexKeyboard\",\r\n device: this.scene.getNodeByName(\"Toba\"),\r\n field: this.scene.getNodeByName(\"Toba_Field\"),\r\n active: true,\r\n screen: false,\r\n },\r\n {\r\n cod: \"sear\",\r\n device: this.scene.getNodeByName(\"Earbuds\"),\r\n field: this.scene.getNodeByName(\"EB_Field\"),\r\n active: true,\r\n screen: false,\r\n },\r\n {\r\n cod: \"shub385\",\r\n device: this.scene.getNodeByName(\"Hubs\"),\r\n field: this.scene.getNodeByName(\"H85_Field\"),\r\n active: true,\r\n screen: [\"H85_Screen_Proxy\"],\r\n },\r\n {\r\n cod: \"shub350\",\r\n device: this.scene.getNodeByName(\"Hub_50\"),\r\n field: this.scene.getNodeByName(\"HUB_50_Field\"),\r\n active: true,\r\n },\r\n {\r\n cod: \"shub2s\",\r\n device: this.scene.getNodeByName(\"Hubs_prev\"),\r\n field: this.scene.getNodeByName(\"H85_Field\"),\r\n active: true,\r\n screen: [\"H85_Screen_Proxy\"],\r\n },\r\n {\r\n cod: \"shubs\",\r\n device: this.scene.getNodeByName(\"Hub_50_prev\"),\r\n field: this.scene.getNodeByName(\"HUB_50_Field\"),\r\n active: true,\r\n },\r\n ];\r\n\r\n this.callGrayedOut();\r\n\r\n this.scene.onPointerMove = () => {\r\n let ray = this.scene.createPickingRay(\r\n this.scene.pointerX,\r\n this.scene.pointerY,\r\n Matrix.Identity(),\r\n this.camera\r\n );\r\n let hit = this.scene.pickWithRay(ray);\r\n if (\r\n hit.pickedMesh &&\r\n hit.pickedMesh._parentNode &&\r\n this.allDeviceIDs.includes(hit.pickedMesh._parentNode.name) &&\r\n hit.pickedMesh.name.includes(\"Field\")\r\n ) {\r\n this.canvas.style.cursor = \"pointer\";\r\n }\r\n };\r\n\r\n this.scene.onPointerDown = () => {\r\n if (this.detailView) {\r\n if (this.store.state.currentTooltip) {\r\n this.store.commit(\"updateCurrentTooltip\", \"\");\r\n }\r\n return;\r\n }\r\n\r\n let ray = this.scene.createPickingRay(\r\n this.scene.pointerX,\r\n this.scene.pointerY,\r\n Matrix.Identity(),\r\n this.camera\r\n );\r\n\r\n let hit = this.scene.pickWithRay(ray);\r\n\r\n if (hit.pickedMesh) {\r\n if (\r\n this.allDeviceIDs.includes(hit.pickedMesh._parentNode.name) &&\r\n hit.pickedMesh.name.includes(\"Field\")\r\n ) {\r\n let deviceRoutes = {\r\n Pro_8: `/${this.store.state.actualLang}/device/pro8`,\r\n Big_Rock: `/${this.store.state.actualLang}/device/pro11`,\r\n Pro_9: `/${this.store.state.actualLang}/device/pro10`,\r\n Pro_9_prev: `/${this.store.state.actualLang}/device/pro9`,\r\n Laptop_3: `/${this.store.state.actualLang}/device/laptop4`,\r\n Laptop_5: `/${this.store.state.actualLang}/device/laptop6`,\r\n Hartwell: `/${this.store.state.actualLang}/device/laptop7`,\r\n Laptop_5_prev: `/${this.store.state.actualLang}/device/laptop5`,\r\n // New change for 9/21 ----\r\n Laptop_Go: `/${this.store.state.actualLang}/device/laptopGo3`,\r\n Laptop_Go_prev: `/${this.store.state.actualLang}/device/laptopGo2`,\r\n // ----\r\n // New change for 9/21 ----\r\n Go_2: `/${this.store.state.actualLang}/device/go4`,\r\n Go_2_prev: `/${this.store.state.actualLang}/device/go3`,\r\n // ----\r\n Studio: `/${this.store.state.actualLang}/device/studio2plus`,\r\n // New change for 9/21 ----\r\n Laptop_Studio: `/${this.store.state.actualLang}/device/laptopStudio2`,\r\n Laptop_Studio_prev: `/${this.store.state.actualLang}/device/laptopStudio`,\r\n // ----\r\n Headphones: `/${this.store.state.actualLang}/device/headphones`,\r\n Toba: `/${this.store.state.actualLang}/device/proFlexKeyboard`,\r\n Earbuds: `/${this.store.state.actualLang}/device/earbuds`,\r\n Hubs: `/${this.store.state.actualLang}/device/hub3`,\r\n Hubs_prev: `/${this.store.state.actualLang}/device/hub2s`,\r\n Pro_X: `/${this.store.state.actualLang}/device/proX`,\r\n Duo_2: `/${this.store.state.actualLang}/device/duo2`,\r\n };\r\n this._enableDetailView(hit.pickedMesh);\r\n\r\n this.router.replace({\r\n path: deviceRoutes[hit.pickedMesh._parentNode.name],\r\n });\r\n }\r\n }\r\n };\r\n\r\n if (firstScene) {\r\n this.openDeviceFromRoute(this.route.params.device);\r\n // this.engine.hideLoadingUI();\r\n }\r\n\r\n this.masterAnimation = this.scene.animationGroups[0];\r\n }\r\n\r\n grayedOut(device, flow, field) {\r\n //\r\n if (device.name === \"Headphones\") {\r\n device.material.imageProcessingConfiguration = new ImageProcessingConfiguration();\r\n device.material.cameraColorGradingTexture = this.textureGO_LUT;\r\n if (flow == \"original\") {\r\n device.material.cameraColorGradingEnabled = false;\r\n field.isPickable = true;\r\n } else {\r\n device.material.cameraColorGradingEnabled = true;\r\n field.isPickable = false;\r\n }\r\n } else {\r\n device.getChildMeshes(false, child => {\r\n //\r\n if (child.material) {\r\n // console.log(\r\n // child.material.name,\r\n // child.material.getBindedMeshes().length\r\n // );\r\n if (child.material.getBindedMeshes().length > 1) {\r\n const matCloned = child.material.clone(\"cloneMat \" + child.name);\r\n child.material = matCloned;\r\n }\r\n if (flow == \"original\") {\r\n child.material.cameraColorGradingEnabled = false;\r\n field.isPickable = true;\r\n } else {\r\n child.material.imageProcessingConfiguration = new ImageProcessingConfiguration();\r\n child.material.cameraColorGradingTexture = this.textureGO_LUT;\r\n child.material.cameraColorGradingEnabled = true;\r\n field.isPickable = false;\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n callGrayedOut() {\r\n // Ticked devices list\r\n const devices = this.store.state.activeDevices;\r\n // Evaluation of Ticked Devices for Grayed Out\r\n for (const device in devices) {\r\n let activeDevice = this.activeDevices.find(elem => elem.cod == device);\r\n //\r\n if (activeDevice.active != devices[device]) {\r\n //\r\n if (!devices[device]) {\r\n this.grayedOut(activeDevice.device, \"grayed\", activeDevice.field);\r\n } else {\r\n this.grayedOut(activeDevice.device, \"original\", activeDevice.field);\r\n }\r\n activeDevice.active = devices[device];\r\n }\r\n }\r\n }\r\n\r\n selectedGrayedOut(device, flow) {\r\n device.getChildMeshes(false, child => {\r\n if (flow == \"original\") {\r\n child.renderOverlay = false;\r\n } else {\r\n child.overlayColor = new Color3(0.5, 0.5, 0.5);\r\n child.renderOverlay = true;\r\n }\r\n });\r\n }\r\n\r\n callSelectedGrayedOut(exception) {\r\n // Ticked devices list\r\n const devices = this.store.state.activeDevices;\r\n // Evaluation of Ticked Devices for Grayed Out\r\n for (const device in devices) {\r\n let currentDevice = this.activeDevices.find(elem => elem.cod == device);\r\n if (exception && device !== exception) {\r\n this.selectedGrayedOut(currentDevice.device, \"grayed\");\r\n if (device === \"shead2\") {\r\n this.selectedGrayedOut(\r\n this.scene.getTransformNodeByName(\"Headphones\"),\r\n \"grayed\"\r\n );\r\n }\r\n } else {\r\n this.selectedGrayedOut(currentDevice.device, \"original\");\r\n if (device === \"shead2\") {\r\n this.selectedGrayedOut(\r\n this.scene.getTransformNodeByName(\"Headphones\"),\r\n \"original\"\r\n );\r\n }\r\n }\r\n }\r\n }\r\n\r\n createDevicesTitles(scene) {\r\n // Titles TEXT and POSITION\r\n // the LAST VALUE of vector3 adjust the HORIZONTAL position of TITLE\r\n // the MIDDLE VALUE od vector3 adjust the VERTICAL position of TITLE\r\n let devicesNames = {\r\n \"en-us\": [\r\n // {\r\n // name: \"Surface Pro X\",\r\n // position: new Vector3(-0.4, 6.25, 24.4),\r\n // size: 12.5,\r\n // },\r\n // {\r\n // name: \"Surface Pro 9\",\r\n // position: new Vector3(14.09, 12.15, 7.8), // old 14.09, 12.15, 10.8\r\n // size: 12.5,\r\n // },\r\n \r\n // New change for 9/21 ----\r\n {\r\n name: \"Surface Laptop Go 3\",\r\n position: new Vector3(-0.4, 6.25, -3.5), // old -0.4, 6.25, -9.5\r\n size: 12.5,\r\n },\r\n // {\r\n // name: \"Surface Laptop Go 2\",\r\n // position: new Vector3(-0.4, 6.25, -3.5),\r\n // size: 12.5,\r\n // },\r\n // ----\r\n // New change for 9/21 ----\r\n {\r\n name: \"Surface Laptop Studio 2\",\r\n position: new Vector3(-0.4, 6.25, 22.8),\r\n size: 12.5,\r\n },\r\n // {\r\n // name: \"Surface Laptop Studio\",\r\n // position: new Vector3(-0.4, 6.25, 22.8),\r\n // size: 12.5,\r\n // },\r\n // ----\r\n // {\r\n // name: \"Surface Studio 2+\",\r\n // position: new Vector3(14.09, 12.15, 26.5),\r\n // size: 12.5,\r\n // },\r\n {\r\n name: \"Surface Laptop 6\",\r\n position: new Vector3(-0.4, 6.25, 8.4), // old -0.4, 6.25, 5.4\r\n size: 12.5,\r\n },\r\n // {\r\n // name: \"Surface Laptop 5\",\r\n // position: new Vector3(-0.4, 6.25, 5.4), // old -0.4, 6.25, 8.4\r\n // size: 12.5,\r\n // },\r\n // New change for 9/21 ----\r\n {\r\n name: \"Surface Pro 10\",\r\n position: new Vector3(14.09, 12.15, 18), // new 14.09, 12.15, 7.8, old 14.09, 12.15, 10.8\r\n size: 12.5,\r\n },\r\n {\r\n name: \"Surface Go 4\",\r\n position: new Vector3(14.09, 12.15, 6), // old 14.09, 12.15, -8.65, z old -2.65\r\n size: 12.5,\r\n },\r\n {\r\n name: \"Surface Pro\",\r\n position: new Vector3(14.09, 12.15, -5), // 14.09, 12.15, -15.65\r\n size: 12.5,\r\n },\r\n {\r\n name: \"Surface Laptop\",\r\n position: new Vector3(-0.4, 6.25, -14.5),\r\n size: 12.5,\r\n },\r\n \r\n // {\r\n // name: \"Surface Go 3\",\r\n // position: new Vector3(14.09, 12.15, -2.65),\r\n // size: 12.5,\r\n // },\r\n // ----\r\n // {\r\n // name: \"Surface Duo 2\",\r\n // position: new Vector3(-0.4, 6.25, -14.5),\r\n // size: 12.5,\r\n // },\r\n // {\r\n // name: \"Surface Headphones 2+\",\r\n // position: new Vector3(14.09, 12.15, -15.65),\r\n // size: 12.5,\r\n // },\r\n // {\r\n // name: \"Surface Earbuds\",\r\n // position: new Vector3(14.09, 11.15, -14.2),\r\n // size: 12.5,\r\n // },\r\n // New change for 9/21 ----\r\n // {\r\n // name: \"Surface Hub 3 50″\",\r\n // position: new Vector3(24, 33.6, -25.1), // x= 25, y=32.6, z=-25.1\r\n // size: 12.75, //12.75\r\n // },\r\n // {\r\n // name: \"(coming soon)\",\r\n // position: new Vector3(22, 32.8, -25.1), // x= 25, y=32.6, z=-25.1\r\n // size: 12.75, //12.75\r\n // },\r\n // {\r\n // name: \"Surface Hub 3 85″ (coming soon)\",\r\n // position: new Vector3(42.5, 40.95, 21.5), // 42.5, 40.95, 24.5\r\n // size: 14, // 14\r\n // },\r\n\r\n {\r\n name: \"Surface Hub 3 50″\",\r\n position: new Vector3(25, 32.6, -25.1),\r\n size: 12.75,\r\n },\r\n {\r\n name: \"Surface Hub 3 85″\",\r\n position: new Vector3(42.5, 40.95, 24.5),\r\n size: 14,\r\n },\r\n\r\n // {\r\n // name: \"Surface Hub 2S 50″\",\r\n // position: new Vector3(25, 32.6, -25.1),\r\n // size: 12.75,\r\n // },\r\n // {\r\n // name: \"Surface Hub 2S 85″\",\r\n // position: new Vector3(42.5, 40.95, 24.5),\r\n // size: 14,\r\n // },\r\n // ----\r\n ],\r\n };\r\n\r\n // Create the PLANES and TEXT DYNAMIC TEXTURES\r\n let makeTextPlane = function(text, color, planeSize, fontSize) {\r\n let plane = new MeshBuilder.CreatePlane(\r\n \"plane\",\r\n { width: planeSize, height: planeSize / 4 },\r\n scene\r\n );\r\n\r\n let advancedTexture = new AdvancedDynamicTexture.CreateForMesh(\r\n plane,\r\n // New change for 9/21 ----\r\n fontSize + 20,\r\n // ----\r\n fontSize / 4,\r\n false\r\n );\r\n\r\n let style = advancedTexture.createStyle();\r\n style.fontStyle = \"normal\";\r\n style.fontfamily = \"Segoe UI,sans-serif\";\r\n style.fontWeight = \"lighter\";\r\n\r\n let title = new TextBlock();\r\n title.text = text;\r\n title.color = color;\r\n title.style = style;\r\n\r\n advancedTexture.addControl(title);\r\n\r\n //advancedTexture.rootContainer.scaleX = window.devicePixelRatio * 3; // use to ADJUST SIZE\r\n //advancedTexture.rootContainer.scaleY = window.devicePixelRatio * 3; // use to ADJUST SIZE\r\n advancedTexture.rootContainer.scaleX =\r\n scene.getEngine().getHardwareScalingLevel() * 3.5; // use to ADJUST SIZE\r\n advancedTexture.rootContainer.scaleY =\r\n scene.getEngine().getHardwareScalingLevel() * 3.5; // use to ADJUST SIZE\r\n\r\n return plane;\r\n };\r\n\r\n // Generate the Devices Titles\r\n for (let i = 0; i < devicesNames[\"en-us\"].length; i++) {\r\n let textPlane = makeTextPlane(\r\n devicesNames[\"en-us\"][i].name,\r\n \"#4a4a4a\",\r\n devicesNames[\"en-us\"][i].size,\r\n 912\r\n );\r\n textPlane.position = devicesNames[\"en-us\"][i].position;\r\n textPlane.rotation.y = this.rotation_Half_PI;\r\n assetContainers[\"Exp_Landing_52.glb\"].meshes.push(textPlane);\r\n }\r\n }\r\n\r\n async _loadScene(name) {\r\n for (let i = 0; i < allScenes[name].length; i++) {\r\n let assets = await this._loadPromise(\r\n allScenes[name][i].root,\r\n allScenes[name][i].file\r\n );\r\n\r\n // Tooltip BOX's insertion on HEADPHONE 2+\r\n if (name === \"Headphones\") {\r\n assets.meshes.forEach(mesh => {\r\n if (mesh.id === \"04_Teams\") {\r\n let newTooltipBox_1 = mesh.createInstance(\"05_Buttons\");\r\n newTooltipBox_1.position = new Vector3(0.9, 1.0, 0.4);\r\n newTooltipBox_1.parent = mesh;\r\n assets.meshes.push(newTooltipBox_1);\r\n\r\n let newTooltipBox_2 = mesh.createInstance(\"06_Connections\");\r\n newTooltipBox_2.position = new Vector3(0.2, -2.7, 1.5);\r\n newTooltipBox_2.parent = mesh;\r\n assets.meshes.push(newTooltipBox_2);\r\n\r\n let newTooltipBox_3 = mesh.createInstance(\"07_Battery\");\r\n newTooltipBox_3.position = new Vector3(17.0, 0.0, 8.0);\r\n newTooltipBox_3.parent = mesh;\r\n assets.meshes.push(newTooltipBox_3);\r\n\r\n let newTooltipBox_4 = mesh.createInstance(\"08_Charging\");\r\n newTooltipBox_4.position = new Vector3(16.0, 0.0, 11.0);\r\n newTooltipBox_4.parent = mesh;\r\n assets.meshes.push(newTooltipBox_4);\r\n }\r\n });\r\n }\r\n\r\n assets.meshes.forEach(mesh => {\r\n if (mesh.id.match(/^[0-9]{2}_/g)) {\r\n if (Array.isArray(allScenes[name][i].tooltips)) {\r\n allScenes[name][i].tooltips.push(mesh.id);\r\n } else {\r\n allScenes[name][i].tooltips = [mesh.id];\r\n }\r\n mesh.isVisible = false;\r\n }\r\n\r\n if (mesh.name === \"Tablet\" || mesh.name === \"Keyboard\") {\r\n mesh.isVisible = false;\r\n }\r\n });\r\n\r\n assetContainers[allScenes[name][i].file] = assets;\r\n\r\n // Finding and applying texture on screens of devices in Surface Family Scene\r\n assets.materials.forEach(material => {\r\n // Adjusting Brightness/Metallic of Ground Material\r\n let filename = allScenes[name][i].file;\r\n if (\r\n ((filename === \"03_Laptop_3_E_Export14-processed.gltf\" ||\r\n filename === \"Laptop_5_1L.glb\" ||\r\n filename === \"Hartwell_07E.glb\" ||\r\n filename === \"Rowen_Exp_11.glb\" ||\r\n filename === \"Rowen_Exp_12.glb\" ||\r\n filename === \"Harris_Exp_08A_Tablet.glb\" ||\r\n filename === \"08_Laptop_Go_08_Export-processed.gltf\" ||\r\n filename === \"07_Go_2_Export_Tab_9-processed.gltf\" ||\r\n filename === \"09_Headphones_Export16-processed.gltf\" ||\r\n filename === \"Toba_3.glb\" ||\r\n filename === \"09B_Earbuds_Export10-processed.gltf\" ||\r\n filename === \"Duo_2_Exp_17.glb\" ||\r\n filename === \"Delia_Exp_08C_Tablet.glb\" ||\r\n filename === \"Pro_10_6_Tablet.glb\" ||\r\n filename === \"Pro_9_Exp_04_Tablet.glb\" ||\r\n filename === \"Pro_9_Exp_06_Tablet.glb\") &&\r\n (material.id === \"__GLTFLoader._default\" ||\r\n material.id === \"__GLTFLoader._default 1\")) ||\r\n (filename === \"Surface_Studio_2_EX_17.glb\" &&\r\n material.id === \"Ground\") ||\r\n (filename === \"Exp_HUBs_27.glb\" && material.id === \"Floor\") ||\r\n (filename === \"Exp_HUBs_32.glb\" && material.id === \"Floor\")\r\n ) {\r\n material.metallic = 0;\r\n material.albedoColor = new Color3.FromHexString(\"#ADADAD\");\r\n material.environmentIntensity = 0.2;\r\n material.specularIntensity = 0;\r\n material.emissiveIntensity = 0;\r\n material.directIntensity = 1;\r\n }\r\n\r\n if (name === \"Laptop_3\") {\r\n if (\r\n material.id === \"FE_03_L3_Top_Fabric\" ||\r\n material.id === \"FE_03_L3_Key_Inset_Fabric\"\r\n ) {\r\n material.metallicF0Factor = 0;\r\n }\r\n if (material.id === \"FE_08_LG_Key_Caps\") {\r\n material.roughness = 0.84;\r\n }\r\n }\r\n if (name === \"Laptop_5_prev\") {\r\n if (\r\n material.id === \"FE_03_L3_Top_Fabric\" ||\r\n material.id === \"FE_03_L3_Key_Inset_Fabric\"\r\n ) {\r\n material.metallicF0Factor = 0;\r\n }\r\n if (material.id === \"FE_08_LG_Key_Caps\") {\r\n material.roughness = 0.84;\r\n material.environmentIntensity = 0.3;\r\n material.specularIntensity = 0.42;\r\n }\r\n\r\n if (\r\n material.id === \"FE_03_L3_Back\" ||\r\n material.id === \"FE_03_L3_Bottom\" ||\r\n material.id === \"FE_03_L3_Top_Metal\" ||\r\n material.id === \"FE_03_L3_Key_Inset_Metal\"\r\n ) {\r\n material.metallic = 0.6;\r\n material.roughness = 0.3;\r\n material.environmentIntensity = 0.25;\r\n material.specularIntensity = 0.01;\r\n material.metallicF0Factor = 0.25;\r\n }\r\n if (material.id === \"Surface_Metal_Shine\") {\r\n material.metallic = 1;\r\n material.roughness = 0;\r\n material.environmentIntensity = 0.45;\r\n }\r\n }\r\n\r\n if (name === \"Laptop_5\") {\r\n // if (\r\n // material.id === \"FE_03_L3_Top_Fabric\" ||\r\n // material.id === \"FE_03_L3_Key_Inset_Fabric\"\r\n // ) {\r\n // material.metallicF0Factor = 0;\r\n // }\r\n if (material.id === \"Surface_Plastic\") {\r\n material.roughness = 1.0; //0.84\r\n material.metallic = 0.65;\r\n material.environmentIntensity = 0.3;\r\n material.specularIntensity = 0.42;\r\n }\r\n if (material.id === \"Screen_Bezel\") {\r\n material.environmentIntensity = 0.05; //0.2\r\n material.specularIntensity = 0.1; //0.3\r\n material.roughness = 0.2; //0.1\r\n }\r\n\r\n if (\r\n material.id === \"Surface_Metal\" ||\r\n material.id === \"Surface_Gray\"\r\n ) {\r\n material.metallic = 0.4; //0.4\r\n material.roughness = 0.7; //0.7\r\n material.environmentIntensity = 0.25;\r\n material.specularIntensity = 0.01;\r\n // material.metallicF0Factor = 0.25;\r\n }\r\n if (material.id === \"Metal_Shiney\") {\r\n material.metallic = 1;\r\n material.roughness = 0;\r\n material.environmentIntensity = 0.45;\r\n }\r\n }\r\n\r\n if (name === \"Hartwell\") {\r\n // if (\r\n // material.id === \"FE_03_L3_Top_Fabric\" ||\r\n // material.id === \"FE_03_L3_Key_Inset_Fabric\"\r\n // ) {\r\n // material.metallicF0Factor = 0;\r\n // }\r\n if (material.id === \"Surface_Plastic\") {\r\n material.roughness = 1.0; //0.84\r\n material.metallic = 0.65;\r\n material.environmentIntensity = 0.3;\r\n material.specularIntensity = 0.42;\r\n }\r\n if (material.id === \"Screen_Bezel\") {\r\n material.environmentIntensity = 0.2; //0.05; //0.2\r\n material.specularIntensity = 0.3; //0.1; //0.3\r\n material.roughness = 1; //0.1\r\n }\r\n\r\n if (\r\n material.id === \"Surface_Metal\" ||\r\n material.id === \"Surface_Gray\"\r\n ) {\r\n material.metallic = 0.6; //0.4\r\n material.roughness = 0.5; //0.7\r\n material.environmentIntensity = 0.25;\r\n material.specularIntensity = 0.01;\r\n // material.metallicF0Factor = 0.25;\r\n }\r\n if (material.id === \"Metal_Shiney\") {\r\n material.metallic = 1;\r\n material.roughness = 0;\r\n material.environmentIntensity = 0.45;\r\n }\r\n }\r\n\r\n if (name === \"Pro_9\" || name === \"Pro_9_prev\" || name === \"Big_Rock\") {\r\n if (\r\n material.id === \"Surface_Metal_2\" ||\r\n material.id === \"Surface_SSD\"\r\n ) {\r\n material.metallic = 0.15;\r\n material.roughness = 0.3;\r\n }\r\n if (material.id === \"Surface_Metal_Shine\") {\r\n material.metallic = 1;\r\n material.roughness = 0;\r\n material.environmentIntensity = 0.45;\r\n }\r\n if (material.id === \"Surface_Keys_Track\") {\r\n material.environmentIntensity = 0.3;\r\n material.specularIntensity = 0.42;\r\n }\r\n }\r\n\r\n if (name === \"Studio\") {\r\n if (material.id === \"Surface_Metal_2\") {\r\n material.albedoColor = new Color3.FromHexString(\r\n \"#A9A9A9\"\r\n ).toLinearSpace();\r\n material.emissiveColor = new Color3.FromHexString(\r\n \"#898989\"\r\n ).toLinearSpace();\r\n material.specularIntensity = 0.5;\r\n material.metallic = 0.9;\r\n material.roughness = 0.7;\r\n }\r\n if (material.id === \"Keyboard_Metal\") {\r\n material.albedoColor = new Color3.FromHexString(\r\n \"#ACACAC\"\r\n ).toLinearSpace();\r\n material.emissiveColor = new Color3.FromHexString(\r\n \"#676767\"\r\n ).toLinearSpace();\r\n material.metallic = 0.4;\r\n material.roughness = 0.85;\r\n material.environmentIntensity = 0.9;\r\n }\r\n if (material.id === \"Keyboard_Keys\") {\r\n material.albedoColor = new Color3.FromHexString(\r\n \"#5A5A5A\"\r\n ).toLinearSpace();\r\n }\r\n if (material.id === \"Surface_Metal_Shine\") {\r\n material.albedoColor = new Color3.FromHexString(\r\n \"#BCBCBC\"\r\n ).toLinearSpace();\r\n material.ambientColor = new Color3.FromHexString(\r\n \"#919191\"\r\n ).toLinearSpace();\r\n material.environmentIntensity = 0.81;\r\n material.metallic = 0.85;\r\n material.roughness = 0.05;\r\n }\r\n if (material.id === \"Keyboard_Gray\") {\r\n material.albedoColor = new Color3.FromHexString(\r\n \"#8F8F8F\"\r\n ).toLinearSpace();\r\n material.emissiveColor = new Color3.FromHexString(\r\n \"#787878\"\r\n ).toLinearSpace();\r\n material.metallic = 0.3;\r\n material.roughness = 0.9;\r\n material.environmentIntensity = 0.25;\r\n }\r\n if (\r\n material.id === \"Surface_Gray_Dark\" ||\r\n material.id === \"Surface_Gray_Light_Mouse\" ||\r\n material.id === \"Surface_Gray\"\r\n ) {\r\n material.albedoColor = new Color3.FromHexString(\r\n \"#C1C1C1\"\r\n ).toLinearSpace();\r\n material.metallic = 0.4;\r\n }\r\n if (material.id === \"Ground\") {\r\n material.albedoColor = new Color3.FromHexString(\r\n \"#C8C8C8\"\r\n ).toLinearSpace();\r\n }\r\n if (material.id === \"Black\") {\r\n material.albedoColor = new Color3.FromHexString(\r\n \"#000000\"\r\n ).toLinearSpace();\r\n }\r\n if (material.id === \"Surface_Gray_Light_Pen\") {\r\n material.albedoColor = new Color3.FromHexString(\r\n \"#B0B0B0\"\r\n ).toLinearSpace();\r\n material.metallic = 0.22;\r\n material.roughness = 0.56;\r\n }\r\n if (material.id === \"Surface_Gray_Pen\") {\r\n material.albedoColor = new Color3.FromHexString(\r\n \"#888888\"\r\n ).toLinearSpace();\r\n material.metallic = 0.22;\r\n material.roughness = 0.56;\r\n }\r\n }\r\n\r\n if (name === \"Laptop_Studio\" || name === \"Laptop_Studio_prev\") {\r\n if (material.id === \"Surface_Metal_Shine\") {\r\n material.environmentIntensity = 0.81;\r\n material.metallic = 0.85;\r\n material.roughness = 0.05;\r\n }\r\n if (material.id === \"Surface_Metal_2\") {\r\n material.albedoColor = new Color3.FromHexString(\r\n \"#E5E5E5\"\r\n ).toLinearSpace();\r\n material.emissiveColor = new Color3.FromHexString(\r\n \"#898989\"\r\n ).toLinearSpace();\r\n material.metallic = 0.5;\r\n material.roughness = 0.6;\r\n material.environmentIntensity = 0.35;\r\n material.specularIntensity = 0.01;\r\n }\r\n if (material.id === \"Plastic\") {\r\n material.roughness = 0.97;\r\n material.metallicF0Factor = 0.3;\r\n }\r\n }\r\n\r\n if (name === \"Earbuds\") {\r\n if (\r\n material.id === \"09B_Earbuds_Left_Ear_Bud\" ||\r\n material.id === \"09B_Earbuds_Right_Ear_Bud\"\r\n ) {\r\n material.metallic = 0.38;\r\n }\r\n if (material.id === \"09B_Earbuds_Case\") {\r\n material.metallic = 0.54;\r\n material.metallicF0Factor = 0;\r\n }\r\n }\r\n\r\n // material.freeze();\r\n });\r\n }\r\n\r\n return \"loaded\";\r\n }\r\n\r\n getTitleFromName = name => {\r\n switch (name) {\r\n case \"pro8\":\r\n return \"Surface Pro 8\";\r\n case \"pro9\":\r\n return \"Surface Pro 9\";\r\n case \"pro10\":\r\n return \"Surface Pro 10\";\r\n case \"pro11\":\r\n return \"Surface Pro\";\r\n // New change for 9/21 ----\r\n case \"laptopStudio2\":\r\n return \"Surface Laptop Studio 2\";\r\n // ----\r\n case \"laptopStudio\":\r\n return \"Surface Laptop Studio\";\r\n case \"proX\":\r\n return \"Surface Pro X\";\r\n case \"earbuds\":\r\n return \"Surface Earbuds\";\r\n // New change for 9/21 ----\r\n case \"go4\":\r\n return \"Surface Go 4\";\r\n // ----\r\n case \"go3\":\r\n return \"Surface Go 3\";\r\n case \"headphones\":\r\n return \"Surface Headphones 2+\";\r\n case \"proFlexKeyboard\":\r\n return \"Surface Pro Flex Keyboard\";\r\n case \"laptop4\":\r\n return \"Surface Laptop 4\";\r\n case \"laptop5\":\r\n return \"Surface Laptop 5\";\r\n case \"laptop6\":\r\n return \"Surface Laptop 6\";\r\n case \"laptop7\":\r\n return \"Surface Laptop\";\r\n // New change for 9/21 ----\r\n case \"laptopGo3\":\r\n return \"Surface Laptop Go 3\";\r\n // ----\r\n case \"laptopGo2\":\r\n return \"Surface Laptop Go 2\";\r\n case \"studio2\":\r\n return \"Surface Studio 2+\";\r\n case \"hub3\":\r\n return \"Surface Hub 3\";\r\n case \"hub2s\":\r\n return \"Surface Hub 2s\";\r\n }\r\n };\r\n\r\n openDeviceFromRoute = name => {\r\n if (this.detailView) {\r\n this.goBack();\r\n }\r\n\r\n if (name && !!this.paramsToID[name]) {\r\n // console.log(this.paramsToID[name]);\r\n this._enableDetailView({ _parentNode: { id: this.paramsToID[name] } });\r\n }\r\n };\r\n\r\n _addShadows = () => {\r\n // Adding Meshes to Shadow List\r\n if (this.detailView && this.currentMesh && this.currentMesh.id) {\r\n let extraAssets =\r\n assetContainers[devices[this.currentMesh.id].additionalFilenames];\r\n\r\n this.scene.meshes.forEach(mesh => {\r\n this.scene.lights[0].excludedMeshes.push(mesh);\r\n this.scene.lights[1].includedOnlyMeshes.push(mesh);\r\n // Setting GROUND to receive shadows\r\n if (\r\n mesh.id === \"Ground\" ||\r\n mesh.id === \"Floor\" ||\r\n mesh.id === \"Shadow\" ||\r\n ((this.currentMesh.id === \"Headphones\" ||\r\n this.currentMesh.id === \"Toba\" ||\r\n this.currentMesh.id === \"Hubs\" ||\r\n this.currentMesh.id === \"Hubs_prev\" ||\r\n this.currentMesh.id === \"Pro_8\" ||\r\n this.currentMesh.id === \"Big_Rock\" ||\r\n this.currentMesh.id === \"Pro_9\" ||\r\n this.currentMesh.id === \"Pro_9_prev\") &&\r\n mesh.id === \"Plane\")\r\n ) {\r\n mesh.receiveShadows = true;\r\n } else {\r\n // add shadows to all meshes that aren't named for tooltips\r\n if (!mesh.id.match(/^[0-9]{2}_/g)) {\r\n shdwGenerator.addShadowCaster(mesh, true);\r\n }\r\n }\r\n\r\n if (\r\n (this.currentMesh.id === \"Laptop_3\" ||\r\n this.currentMesh.id === \"Laptop_5_prev\") &&\r\n mesh.id === \"Screen_Video\"\r\n ) {\r\n this.__setScreenImage(mesh, \"vertical\");\r\n } else if (\r\n this.currentMesh.id === \"Laptop_Go\" &&\r\n mesh.id === \"Screen_Viewer\"\r\n ) {\r\n this.__setScreenImage(mesh);\r\n } else if (\r\n this.currentMesh.id === \"Laptop_Go_prev\" &&\r\n mesh.id === \"Screen_Viewer\"\r\n ) {\r\n this.__setScreenImage(mesh);\r\n } else if (\r\n this.currentMesh.id === \"Go_2\" &&\r\n mesh.id === \"Screen_Viewer\"\r\n ) {\r\n this.__setScreenImage(mesh, \"vertical\");\r\n } else if (\r\n this.currentMesh.id === \"Go_2_prev\" &&\r\n mesh.id === \"Screen_Viewer\"\r\n ) {\r\n this.__setScreenImage(mesh, \"vertical\");\r\n } else if (\r\n (this.currentMesh.id === \"Laptop_Studio\" ||\r\n this.currentMesh.id === \"Laptop_Studio_prev\" ||\r\n this.currentMesh.id === \"Pro_8\" ||\r\n this.currentMesh.id === \"Pro_9_prev\" ||\r\n this.currentMesh.id === \"Pro_9\" ||\r\n this.currentMesh.id === \"Pro_X\") &&\r\n mesh.id === \"Screen_Proxy\"\r\n ) {\r\n this.__setScreenImage(mesh, \"flipped\");\r\n } else if (\r\n this.currentMesh.id === \"Big_Rock\" &&\r\n mesh.id === \"Screen_Proxy\"\r\n ) {\r\n this.__setScreenImage(mesh);\r\n } else if (\r\n (this.currentMesh.id === \"Laptop_5\" ||\r\n this.currentMesh.id === \"Hartwell\") &&\r\n (mesh.id === \"Screen_Proxy_15\" || mesh.id === \"Screen_Proxy_13\")\r\n ) {\r\n this.__setScreenImage(mesh);\r\n } else if (\r\n this.currentMesh.id === \"Studio\" &&\r\n mesh.id === \"Screen_Proxy\"\r\n ) {\r\n this.__setScreenImage(mesh);\r\n } else if (\r\n (this.currentMesh.id === \"Hubs\" ||\r\n this.currentMesh.id === \"Hubs_prev\") &&\r\n (mesh.id === \"H50_Screen_Proxy\" || mesh.id === \"H85_Screen_Proxy\")\r\n ) {\r\n this.__setScreenImage(mesh);\r\n } else if (\r\n this.currentMesh.id === \"Duo_2\" &&\r\n (mesh.id === \"Screen_Proxy_Left_Stretch\" ||\r\n mesh.id === \"Screen_Proxy_Right_Stretch\")\r\n ) {\r\n this.__setScreenImage(mesh);\r\n } else if (\r\n this.currentMesh.id === \"Duo_2\" &&\r\n (mesh.id === \"Screen_Proxy_Left_Port\" ||\r\n mesh.id === \"Screen_Proxy_Right_Port\")\r\n ) {\r\n mesh.visibility = 0;\r\n }\r\n });\r\n if (extraAssets) {\r\n extraAssets.meshes.forEach(mesh => {\r\n if (mesh.id === \"Ground\" || mesh.id === \"Floor\") {\r\n // if there is a second file in the scene make its ground invisible\r\n mesh.isVisible = false;\r\n }\r\n });\r\n }\r\n }\r\n };\r\n\r\n _removeShadows = () => {\r\n if (this.currentMesh.id) {\r\n this.scene.meshes.forEach(mesh => {\r\n if (\r\n mesh.id === \"Ground\" ||\r\n mesh.id === \"Floor\" ||\r\n mesh.id === \"Shadow\" ||\r\n mesh.id === \"Plane\"\r\n ) {\r\n mesh.receiveShadows = false;\r\n }\r\n shdwGenerator.removeShadowCaster(mesh, true);\r\n });\r\n }\r\n };\r\n\r\n __setScreenImage = (mesh, dir) => {\r\n mesh.material = this.screenMaterial;\r\n\r\n if (this.currentMesh.id === \"Hubs\" && mesh.id === \"H50_Screen_Proxy\") {\r\n if (!this.hub50ScreenTexture) {\r\n this.hub50ScreenTexture = new Texture(\r\n \"/familyExplorer/models/hub350PortraitWallpaper_2x3.png\",\r\n this.scene\r\n );\r\n this.hub50ScreenTexture.uAng = Math.PI;\r\n }\r\n mesh.material.diffuseTexture = this.hub50ScreenTexture;\r\n } else if (\r\n this.currentMesh.id === \"Hubs\" &&\r\n mesh.id === \"H85_Screen_Proxy\"\r\n ) {\r\n if (!this.hub85ScreenTexture) {\r\n this.hub85ScreenTexture = new Texture(\r\n \"/familyExplorer/models/hub385Wallpaper_16x9.jpg\",\r\n this.scene\r\n );\r\n this.hub85ScreenTexture.uAng = Math.PI;\r\n }\r\n if (!this.screenMaterialModel2) {\r\n this.screenMaterialModel2 = new StandardMaterial(\r\n \"screenWallpaperModel2\",\r\n this.scene\r\n );\r\n this.screenMaterialModel2.emissiveColor = new Color3.White();\r\n this.screenMaterialModel2.diffuseTexture = this.defaultWallpaperTexture;\r\n this.screenMaterialModel2.specularPower = 128;\r\n this.screenMaterialModel2.specularColor = new Color3.FromHexString(\r\n \"#0A0A0A\"\r\n );\r\n }\r\n mesh.material = this.screenMaterialModel2;\r\n mesh.material.diffuseTexture = this.hub85ScreenTexture;\r\n } else if (\r\n this.currentMesh.id === \"Hubs_prev\" &&\r\n mesh.id === \"H50_Screen_Proxy\"\r\n ) {\r\n if (!this.hub50ScreenTexture_prev) {\r\n this.hub50ScreenTexture_prev = new Texture(\r\n \"/familyExplorer/models/hub50Wallpaper_3x2.jpg\",\r\n this.scene\r\n );\r\n this.hub50ScreenTexture_prev.uAng = Math.PI;\r\n }\r\n mesh.material.diffuseTexture = this.hub50ScreenTexture_prev;\r\n } else if (\r\n this.currentMesh.id === \"Hubs_prev\" &&\r\n mesh.id === \"H85_Screen_Proxy\"\r\n ) {\r\n if (!this.hub85ScreenTexture_prev) {\r\n this.hub85ScreenTexture_prev = new Texture(\r\n \"/familyExplorer/models/hub85Wallpaper_16x9.jpg\",\r\n this.scene\r\n );\r\n this.hub85ScreenTexture_prev.uAng = Math.PI;\r\n }\r\n if (!this.screenMaterialModel2) {\r\n this.screenMaterialModel2 = new StandardMaterial(\r\n \"screenWallpaperModel2\",\r\n this.scene\r\n );\r\n this.screenMaterialModel2.emissiveColor = new Color3.White();\r\n this.screenMaterialModel2.diffuseTexture = this.defaultWallpaperTexture;\r\n this.screenMaterialModel2.specularPower = 128;\r\n this.screenMaterialModel2.specularColor = new Color3.FromHexString(\r\n \"#0A0A0A\"\r\n );\r\n }\r\n mesh.material = this.screenMaterialModel2;\r\n mesh.material.diffuseTexture = this.hub85ScreenTexture_prev;\r\n } else if (this.currentMesh.id === \"Duo_2\") {\r\n if (!this.duoScreenTexture) {\r\n this.duoScreenTexture = new Texture(\r\n \"/familyExplorer/models/duoWallpaper.jpg\",\r\n this.scene\r\n );\r\n this.duoScreenTexture.uAng = Math.PI;\r\n }\r\n mesh.material.diffuseTexture = this.duoScreenTexture;\r\n } else if (\r\n // this.currentMesh.id === \"Big_Rock\" ||\r\n this.currentMesh.id === \"Pro_9\" ||\r\n this.currentMesh.id === \"Pro_9_prev\" ||\r\n this.currentMesh.id === \"Pro_8\" ||\r\n this.currentMesh.id === \"Pro_X\" ||\r\n this.currentMesh.id === \"Go_2\" ||\r\n this.currentMesh.id === \"Go_2_prev\"\r\n ) {\r\n if (!this.defaultWallpaper2x3Texture) {\r\n this.defaultWallpaper2x3Texture = new Texture(\r\n \"/familyExplorer/models/defaultBloomWallpaper_2x3.jpg\",\r\n this.scene\r\n );\r\n }\r\n this.defaultWallpaper2x3Texture.wAng =\r\n (this.currentMesh.id !== \"Go_2\") & (this.currentMesh.id !== \"Go_2_prev\")\r\n ? this.rotation_Half_PI_minus\r\n : 0;\r\n this.defaultWallpaper2x3Texture.vAng =\r\n (this.currentMesh.id !== \"Go_2\") & (this.currentMesh.id !== \"Go_2_prev\")\r\n ? 0\r\n : Math.PI;\r\n\r\n this.defaultWallpaperTexture.vAng =\r\n this.currentMesh.id === \"Go_2\" || this.currentMesh.id === \"Go_2_prev\"\r\n ? 0\r\n : Math.PI;\r\n\r\n mesh.material.diffuseTexture = this.defaultWallpaperTexture;\r\n } else if (this.currentMesh.id === \"Big_Rock\") {\r\n if (!this.defaultWallpaper2x3RainbowTexture) {\r\n this.defaultWallpaper2x3RainbowTexture = new Texture(\r\n \"/familyExplorer/models/newBloomImage_2x3.jpg\",\r\n this.scene\r\n );\r\n }\r\n this.defaultWallpaperTextureRainbow = new Texture(\r\n \"/familyExplorer/models/newBloomImage_3x2.jpg\",\r\n this.scene\r\n );\r\n this.defaultWallpaperTextureRainbow.uAng = Math.PI;\r\n // this.screenMaterial.diffuseTexture = this.defaultWallpaperTextureRainbowainbow;\r\n\r\n mesh.material.diffuseTexture = this.defaultWallpaperTextureRainbow;\r\n }\r\n else if (this.currentMesh.id === \"Hartwell\") {\r\n if (!this.hartwellScreenTexture) {\r\n this.hartwellScreenTexture = new Texture(\r\n \"/familyExplorer/models/newBloomImage_3x2.jpg\",\r\n this.scene);\r\n }\r\n this.hartwellScreenTexture.uAng = Math.PI;\r\n this.screenMaterial.diffuseTexture = this.hartwellScreenTexture;\r\n } else {\r\n mesh.material.diffuseTexture = this.defaultWallpaperTexture;\r\n this.defaultWallpaperTexture.vAng = 0;\r\n }\r\n if (dir === \"vertical\") {\r\n mesh.material.diffuseTexture.wAng = this.rotation_Half_PI;\r\n } else if (dir === \"verticalFlipped\") {\r\n mesh.material.diffuseTexture.wAng = this.rotation_Half_PI_minus;\r\n } else if (dir === \"flipped\") {\r\n mesh.material.diffuseTexture.wAng = Math.PI;\r\n } else {\r\n mesh.material.diffuseTexture.wAng = 0;\r\n }\r\n };\r\n\r\n goBack = () => {\r\n this.store.commit(\"updateLoaderIsShowing\", true);\r\n\r\n this._removeShadows();\r\n assetContainers[devices[this.currentMesh.id].filename].removeAllFromScene();\r\n // Remove an InstancedMesh\r\n this.scene.meshes.forEach(mesh => {\r\n if (!mesh._isMesh) {\r\n this.scene.removeMesh(mesh);\r\n }\r\n });\r\n\r\n this.updateQuality(\"homeScreen\");\r\n\r\n this.scene.clearColor = new Color3.FromHexString(\"#e6e6e6\");\r\n this.scene.environmentTexture = this.hubHdrTexture;\r\n this.scene.environmentIntensity = 0.45;\r\n\r\n // Extent Fog used to hide Ground Border on Detail Scenes\r\n this.scene.fogStart = 1026.0;\r\n this.scene.fogEnd = 1030.0;\r\n\r\n if (devices[this.currentMesh.id].additionalFilenames) {\r\n devices[this.currentMesh.id].additionalFilenames.forEach(filename => {\r\n assetContainers[filename].removeAllFromScene();\r\n });\r\n }\r\n assetContainers[\"Exp_Landing_52.glb\"].addAllToScene();\r\n this.detailView = false;\r\n this.store.commit(\"updateCurrentTooltip\", \"\");\r\n this.store.commit(\"updateFamExpDeviceLoading\", \"\");\r\n\r\n this.camera.detachControl(this.canvas, true);\r\n\r\n this._setCamera();\r\n this.scene.unregisterBeforeRender(this._registerBeforeRenderHandler);\r\n this.scene.lights[0]._direction._x = 12;\r\n this.scene.lights[0]._direction._y = -1;\r\n this.scene.lights[0]._direction._z = 0;\r\n\r\n if (this.draggableRegisterBeforeRender) {\r\n this.scene.unregisterBeforeRender(this.draggableRegisterBeforeRender);\r\n this.draggableRegisterBeforeRender = false;\r\n }\r\n if (this.generalRegisterBeforeRender) {\r\n this.scene.unregisterBeforeRender(this.generalRegisterBeforeRender);\r\n this.generalRegisterBeforeRender = false;\r\n }\r\n if (this.deviceSpecificRegisterBeforeRender) {\r\n this.scene.unregisterBeforeRender(\r\n this.deviceSpecificRegisterBeforeRender\r\n );\r\n this.deviceSpecificRegisterBeforeRender = false;\r\n }\r\n if (this.deviceChangesModelRegisterBeforeRender) {\r\n this.scene.unregisterBeforeRender(\r\n this.deviceChangesModelRegisterBeforeRender\r\n );\r\n this.deviceChangesModelRegisterBeforeRender = false;\r\n }\r\n\r\n if (this.scene.getMeshesByID(\"touchpointHandle\")[0]) {\r\n this.scene.getMeshesByID(\"touchpointHandle\")[0].dispose();\r\n }\r\n if (this.scene.getMeshesByID(\"touchpointReference\")[0]) {\r\n this.scene.getMeshesByID(\"touchpointReference\")[0].dispose();\r\n }\r\n\r\n this.currentFrame = {\r\n primary: 0,\r\n secondary: 0,\r\n };\r\n this.meshOverlayReset();\r\n this.detailIntroAnimationComplete = false;\r\n\r\n this.router.replace({\r\n path: \"/\" + this.store.state.actualLang,\r\n });\r\n\r\n this.modelVisibility = null;\r\n\r\n setTimeout(() => {\r\n this.store.commit(\"updateLoaderIsShowing\", false);\r\n }, 500);\r\n };\r\n\r\n dispose = () => {\r\n if (this.camera) this.camera.dispose();\r\n this.scene.dispose();\r\n this.engine.dispose();\r\n this.store.commit(\"updateIsFamilyExplorer\", false);\r\n window.removeEventListener(\"mousemove\", this._onMousemove, false);\r\n emitter.off(\"globalResize\", this.onResize);\r\n };\r\n\r\n convertRange = (value, r1, r2) => {\r\n return ((value - r1[0]) * (r2[1] - r2[0])) / (r1[1] - r1[0]) + r2[0];\r\n };\r\n\r\n animateCamera = cameraData => {\r\n const { tooltipId, position, target, allowRadiusChange } = cameraData;\r\n\r\n let currentRadius = this.camera.radius;\r\n let currentLowerRadius = this.camera.lowerRadiusLimit;\r\n\r\n if (!allowRadiusChange) {\r\n this.camera.lowerRadiusLimit = currentRadius;\r\n }\r\n\r\n if (position) {\r\n this.camera.animateCamTo(\r\n \"position\",\r\n new Vector3(position.values[0], position.values[1], position.values[2]),\r\n position.frames ? position.frames : { fps: 90, total: 90 },\r\n () => {\r\n this.store.dispatch(\"updateCurrentTooltip\", tooltipId);\r\n this.camera.lowerRadiusLimit = currentLowerRadius;\r\n }\r\n );\r\n }\r\n if (target) {\r\n this.camera.animateCamTo(\r\n \"target\",\r\n new Vector3(target.values[0], target.values[1], target.values[2]),\r\n target.frames ? target.frames : { fps: 90, total: 90 },\r\n () => {\r\n this.camera.lowerRadiusLimit = currentLowerRadius;\r\n }\r\n );\r\n }\r\n\r\n if (!position && !target) {\r\n this.camera.lowerRadiusLimit = currentLowerRadius;\r\n }\r\n };\r\n\r\n animateMode = mode => {\r\n if (this.animeMaster) {\r\n this.animeMaster.seek(this.animeMaster.duration);\r\n this.animeMaster.pause();\r\n this.animeMaster = null;\r\n }\r\n\r\n let deviceData = devices[this.currentMesh.id];\r\n\r\n this.scene.stopAllAnimations();\r\n if (this.scene.animationGroups) {\r\n this.scene.animationGroups.forEach(group => {\r\n group.play(false).pause();\r\n });\r\n }\r\n\r\n if (deviceData.modes && deviceData.modes[mode]) {\r\n let duration = 2000;\r\n if (deviceData.modes[mode].primaryModeAnim) {\r\n let primaryAnimData = deviceData.modes[mode].primaryModeAnim;\r\n let animateToValue = primaryAnimData.endFrame;\r\n\r\n // if (primaryAnimData.startFrame) {\r\n // this.currentFrame.primary = primaryAnimData.startFrame;\r\n // }\r\n if (\r\n primaryAnimData.fromMode &&\r\n primaryAnimData.fromMode[this.currentModePosture]\r\n ) {\r\n let fromModeData = primaryAnimData.fromMode[this.currentModePosture];\r\n\r\n if (fromModeData.duration) {\r\n duration = fromModeData.duration;\r\n }\r\n\r\n if (fromModeData.keyframes) {\r\n animateToValue = fromModeData.keyframes;\r\n }\r\n\r\n if (fromModeData.animationName) {\r\n let animationGroup = this.scene.getAnimationGroupByName(\r\n fromModeData.animationName\r\n );\r\n\r\n if (fromModeData.startFrame !== undefined) {\r\n animationGroup.goToFrame(fromModeData.startFrame);\r\n }\r\n\r\n this.masterAnimation = animationGroup;\r\n }\r\n\r\n if (fromModeData.startFrame !== undefined) {\r\n this.currentFrame.primary = fromModeData.startFrame;\r\n }\r\n\r\n if (fromModeData.endFrame !== undefined) {\r\n animateToValue = fromModeData.endFrame;\r\n }\r\n }\r\n\r\n let reachedPercentage = false;\r\n let stopAtPercentage =\r\n deviceData.modes[mode].cameraData &&\r\n deviceData.modes[mode].cameraData.startAtPercentage\r\n ? deviceData.modes[mode].cameraData.startAtPercentage\r\n : 50;\r\n if (primaryAnimData.startFrame) {\r\n this.currentFrame.primary = primaryAnimData.startFrame;\r\n }\r\n\r\n this.animeMaster = anime({\r\n targets: this.currentFrame,\r\n duration: duration,\r\n primary: animateToValue,\r\n easing: \"easeInOutQuint\",\r\n update: anim => {\r\n if (\r\n Math.round(anim.progress) >= stopAtPercentage &&\r\n !reachedPercentage\r\n ) {\r\n if (deviceData.modes[mode].cameraData) {\r\n this.animateCamera(deviceData.modes[mode].cameraData);\r\n }\r\n reachedPercentage = true;\r\n }\r\n if (Math.round(anim.progress >= 50)) {\r\n if (primaryAnimData.showMeshes) {\r\n primaryAnimData.showMeshes.forEach(meshName => {\r\n if (this.scene.getMeshById(meshName)) {\r\n this.scene.getMeshById(meshName).visibility = 1;\r\n }\r\n });\r\n }\r\n if (primaryAnimData.hideMeshes) {\r\n primaryAnimData.hideMeshes.forEach(meshName => {\r\n if (this.scene.getMeshById(meshName)) {\r\n this.scene.getMeshById(meshName).visibility = 0;\r\n }\r\n });\r\n }\r\n }\r\n // ADJUST FOR 13.5\" TO 15\" TEXTURE CHANGE ERROR ON LAPTOP 4 SINGLE DEVICE SCENE\r\n if (\r\n this.currentModePosture === \"fifteen\" ||\r\n this.currentModePosture === \"thirteen\"\r\n ) {\r\n //\r\n this.scene.getMaterialByName(\"FE_03_L3_Top_Fabric\").unfreeze();\r\n this.scene\r\n .getMaterialByName(\"FE_03_L3_Key_Inset_Fabric\")\r\n .unfreeze();\r\n this.scene.getMaterialByName(\"FE_03_L3_Top_Metal\").unfreeze();\r\n this.scene\r\n .getMaterialByName(\"FE_03_L3_Key_Inset_Metal\")\r\n .unfreeze();\r\n }\r\n //\r\n },\r\n complete: () => {\r\n this._resetDraggablePosition(deviceData);\r\n\r\n // ADJUST FOR 13.5\" TO 15\" TEXTURE CHANGE ERROR ON LAPTOP 4 SINGLE DEVICE SCENE\r\n if (\r\n this.currentModePosture === \"fifteen\" ||\r\n this.currentModePosture === \"thirteen\"\r\n ) {\r\n this.scene.getMaterialByName(\"FE_03_L3_Top_Fabric\").freeze();\r\n this.scene\r\n .getMaterialByName(\"FE_03_L3_Key_Inset_Fabric\")\r\n .freeze();\r\n this.scene.getMaterialByName(\"FE_03_L3_Top_Metal\").freeze();\r\n this.scene.getMaterialByName(\"FE_03_L3_Key_Inset_Metal\").freeze();\r\n }\r\n },\r\n });\r\n }\r\n if (deviceData.modes[mode].secondaryModeAnim) {\r\n let secondaryAnimData = deviceData.modes[mode].secondaryModeAnim;\r\n\r\n if (\r\n secondaryAnimData.fromMode &&\r\n secondaryAnimData.fromMode[this.currentModePosture]\r\n ) {\r\n duration =\r\n secondaryAnimData.fromMode[this.currentModePosture].duration;\r\n }\r\n anime({\r\n targets: this.currentFrame,\r\n duration: duration,\r\n secondary: secondaryAnimData.endFrame,\r\n easing: \"easeInOutQuint\",\r\n });\r\n }\r\n }\r\n this.currentModePosture = this.store.state.famExpCurrentPosture;\r\n\r\n // Change TOOLTIPs on Laptop 4 between 13.5\" and 15\"\r\n //Modified by Jonathan\r\n let mic_B_Mesh, camera_A_Mesh;\r\n mic_B_Mesh = this.scene.getMeshByID(\"03_Mic_B\");\r\n camera_A_Mesh = this.scene.getMeshByID(\"04_Camera_A\");\r\n /*\r\n this.scene.meshes.forEach(mesh => {\r\n if (mesh.id == \"03_Mic_B\") {\r\n mic_B_Mesh = mesh;\r\n }\r\n if (mesh.id == \"04_Camera_A\") {\r\n camera_A_Mesh = mesh;\r\n }\r\n });\r\n */\r\n\r\n let overlayItemsSwap = {\r\n \"03_Mic_B\": this.meshOverlayItems[\"03_Mic_B\"],\r\n \"04_Camera_A\": this.meshOverlayItems[\"04_Camera_A\"],\r\n \"12_Screen_Handle_A\": this.meshOverlayItems[\"12_Screen_Handle_A\"],\r\n \"12_Screen_Handle_B\": this.meshOverlayItems[\"12_Screen_Handle_B\"],\r\n\r\n // Laptop 4 13.5\" and 15\" Separate DESCRIPTIONS\r\n \"09_Battery\": this.meshOverlayItems[\"09_Battery\"],\r\n \"08_Performance_Thermals\": this.meshOverlayItems[\r\n \"08_Performance_Thermals\"\r\n ],\r\n \"01_Display\": this.meshOverlayItems[\"01_Display\"],\r\n \"10_Dimensions_Weight\": this.meshOverlayItems[\"10_Dimensions_Weight\"],\r\n };\r\n if (this.currentModePosture === \"fifteen\") {\r\n overlayItemsSwap[\"03_Mic_B\"].data.ranges[0] = 0;\r\n overlayItemsSwap[\"03_Mic_B\"].data.ranges[1] = 0;\r\n overlayItemsSwap[\"04_Camera_A\"].data.ranges[0] = 0;\r\n overlayItemsSwap[\"04_Camera_A\"].data.ranges[1] = 0;\r\n overlayItemsSwap[\"12_Screen_Handle_A\"].data.ranges[0] = 0;\r\n overlayItemsSwap[\"12_Screen_Handle_A\"].data.ranges[1] = 0;\r\n setTimeout(function() {\r\n mic_B_Mesh.position.y = 13.42;\r\n camera_A_Mesh.position.y = 13.42;\r\n overlayItemsSwap[\"03_Mic_B\"].data.ranges[0] = 15;\r\n overlayItemsSwap[\"03_Mic_B\"].data.ranges[1] = 165;\r\n overlayItemsSwap[\"04_Camera_A\"].data.ranges[0] = 15;\r\n overlayItemsSwap[\"04_Camera_A\"].data.ranges[1] = 165;\r\n overlayItemsSwap[\"12_Screen_Handle_B\"].data.ranges[0] = 170;\r\n overlayItemsSwap[\"12_Screen_Handle_B\"].data.ranges[1] = 200;\r\n }, 1500);\r\n\r\n // Laptop 4 15\" Separate Descriptions\r\n overlayItemsSwap[\"09_Battery\"].data.description =\r\n this.currentMesh.id === \"Laptop_3\"\r\n ? \"devices.laptop4.data.tooltips.09_Battery_15.description\"\r\n : \"devices.laptop5.data.tooltips.09_Battery_15.description\";\r\n overlayItemsSwap[\"08_Performance_Thermals\"].data.description =\r\n this.currentMesh.id === \"Laptop_3\"\r\n ? \"devices.laptop4.data.tooltips.08_Performance_Thermals_15.description\"\r\n : \"devices.laptop5.data.tooltips.08_Performance_Thermals_15.description\";\r\n overlayItemsSwap[\"01_Display\"].data.description =\r\n this.currentMesh.id === \"Laptop_3\"\r\n ? \"devices.laptop4.data.tooltips.01_Display_15.description\"\r\n : \"devices.laptop5.data.tooltips.01_Display_15.description\";\r\n overlayItemsSwap[\"10_Dimensions_Weight\"].data.description =\r\n this.currentMesh.id === \"Laptop_3\"\r\n ? \"devices.laptop4.data.tooltips.10_Dimensions_Weight_15.description\"\r\n : \"devices.laptop5.data.tooltips.10_Dimensions_Weight_15.description\";\r\n } else if (this.currentModePosture === \"thirteen\") {\r\n overlayItemsSwap[\"03_Mic_B\"].data.ranges[0] = 0;\r\n overlayItemsSwap[\"03_Mic_B\"].data.ranges[1] = 0;\r\n overlayItemsSwap[\"04_Camera_A\"].data.ranges[0] = 0;\r\n overlayItemsSwap[\"04_Camera_A\"].data.ranges[1] = 0;\r\n overlayItemsSwap[\"12_Screen_Handle_B\"].data.ranges[0] = 0;\r\n overlayItemsSwap[\"12_Screen_Handle_B\"].data.ranges[1] = 0;\r\n setTimeout(function() {\r\n mic_B_Mesh.position.y = 9.45;\r\n camera_A_Mesh.position.y = 9.45;\r\n overlayItemsSwap[\"03_Mic_B\"].data.ranges[0] = 15;\r\n overlayItemsSwap[\"03_Mic_B\"].data.ranges[1] = 165;\r\n overlayItemsSwap[\"04_Camera_A\"].data.ranges[0] = 15;\r\n overlayItemsSwap[\"04_Camera_A\"].data.ranges[1] = 165;\r\n overlayItemsSwap[\"12_Screen_Handle_A\"].data.ranges[0] = 170;\r\n overlayItemsSwap[\"12_Screen_Handle_A\"].data.ranges[1] = 200;\r\n }, 1500);\r\n\r\n // Laptop 4 13.5\" Separate Descriptions\r\n overlayItemsSwap[\"09_Battery\"].data.description =\r\n this.currentMesh.id === \"Laptop_3\"\r\n ? \"devices.laptop4.data.tooltips.09_Battery.description\"\r\n : \"devices.laptop5.data.tooltips.09_Battery.description\";\r\n overlayItemsSwap[\"08_Performance_Thermals\"].data.description =\r\n this.currentMesh.id === \"Laptop_3\"\r\n ? \"devices.laptop4.data.tooltips.08_Performance_Thermals.description\"\r\n : \"devices.laptop5.data.tooltips.08_Performance_Thermals.description\";\r\n overlayItemsSwap[\"01_Display\"].data.description =\r\n this.currentMesh.id === \"Laptop_3\"\r\n ? \"devices.laptop4.data.tooltips.01_Display.description\"\r\n : \"devices.laptop5.data.tooltips.01_Display.description\";\r\n overlayItemsSwap[\"10_Dimensions_Weight\"].data.description =\r\n this.currentMesh.id === \"Laptop_3\"\r\n ? \"devices.laptop4.data.tooltips.10_Dimensions_Weight.description\"\r\n : \"devices.laptop5.data.tooltips.10_Dimensions_Weight.description\";\r\n }\r\n };\r\n\r\n changeActiveModel = model => {\r\n // Optimization on Realtime Shadow\r\n this.store.commit(\"updateFamExpCurrentModel\", model);\r\n shdwGenerator.getShadowMap().refreshRate = 5;\r\n // console.log(\"change active model starts here\", model);\r\n // console.log(\"1. \", this.store.state.famExpCurrentModel)\r\n // console.log(\"2. \", this.store.state.famExpCurrentPosture)\r\n\r\n // New condition - Go back to laptop mode if big rock with proFlexKeyboard is selected.\r\n if (this.store.state.famExpCurrentModel == \"pro11_keyboard\") {\r\n this.animateMode(\"laptop\");\r\n // console.log(\"famExpCurrentPosture\", this.store.state.famExpCurrentPosture);\r\n this.store.commit(\"updateFamExpCurrentPosture\", \"laptop\");\r\n // console.log(\"famExpCurrentPosture\", this.store.state.famExpCurrentPosture);\r\n }\r\n\r\n let deviceData = devices[this.currentMesh.id];\r\n if (!deviceData.changeModels.dontChangeTooltips) {\r\n let { tooltips } = allScenes[this.currentMesh.id].find(\r\n scene => scene.file === deviceData.filename\r\n );\r\n\r\n this.meshOverlayItems = {};\r\n this.store.commit(\"updateMeshOverlayHidden\", true);\r\n\r\n tooltips.forEach(tooltip => {\r\n if (\r\n deviceData.tooltips[tooltip] &&\r\n deviceData.tooltips[tooltip].data.modelRanges[model] !== false\r\n ) {\r\n this.meshOverlayItems[tooltip] = {\r\n type: deviceData.tooltips[tooltip].type,\r\n data: deviceData.tooltips[tooltip].data,\r\n offset: deviceData.tooltips[tooltip].offset\r\n ? deviceData.tooltips[tooltip].offset\r\n : Vector3.Zero(),\r\n };\r\n }\r\n });\r\n }\r\n\r\n if (deviceData.changeModels[model]) {\r\n anime({\r\n targets: this.modelVisibility,\r\n duration: 350,\r\n ...deviceData.changeModels[model].hide,\r\n easing: \"easeInOutQuint\",\r\n complete: () => {\r\n if (!deviceData.changeModels.dontChangeTooltips) {\r\n this.meshOverlayReInit();\r\n this.meshOverlayRefreshData();\r\n }\r\n },\r\n });\r\n anime({\r\n targets: this.modelVisibility,\r\n duration: 350,\r\n delay: 250,\r\n ...deviceData.changeModels[model].show,\r\n easing: \"easeInOutQuint\",\r\n complete: () => {\r\n // Optimization on Realtime Shadow\r\n shdwGenerator.getShadowMap().refreshRate = 0;\r\n if (!deviceData.changeModels.dontChangeTooltips) {\r\n this.store.commit(\"updateMeshOverlayHidden\", false);\r\n }\r\n },\r\n });\r\n }\r\n // if (deviceData.changeModels[model].meshesToBeHidden) {\r\n // deviceData.changeModels[model].meshesToBeHidden.forEach(mehshh => {\r\n // this.scene.getMeshById(mehshh).visibility = 0;\r\n // })\r\n // }\r\n // if (deviceData.changeModels[model].meshesToBeShown) {\r\n // deviceData.changeModels[model].meshesToBeShown.forEach(mehshh => {\r\n // this.scene.getMeshById(mehshh).visibility = 1;\r\n // })\r\n // }\r\n };\r\n\r\n updateColor(colorChanges, meshes) {\r\n if (this.scene && colorChanges && colorChanges.length > 0) {\r\n colorChanges.forEach(change => {\r\n if (\r\n change.materials &&\r\n this.scene.getMaterialByName(change.materials[0])\r\n ) {\r\n change.materials.forEach(material => {\r\n if (this.scene.getMaterialByName(material)) {\r\n this.scene.getMaterialByName(material).unfreeze();\r\n this.scene.getMaterialByName(\r\n material\r\n ).albedoColor = new Color3.FromHexString(\r\n change.color\r\n ).toLinearSpace();\r\n if (change.setEmissiveColor) {\r\n this.scene.getMaterialByName(\r\n material\r\n ).emissiveColor = new Color3.FromHexString(\r\n change.setEmissiveColor\r\n ).toLinearSpace();\r\n }\r\n setTimeout(() => {\r\n // this.scene.getMaterialByName(material).freeze();\r\n }, 100);\r\n } else if (process.env.NODE_ENV === \"development\") {\r\n console.log();\r\n }\r\n });\r\n }\r\n });\r\n }\r\n if (meshes) {\r\n if (meshes.show) {\r\n meshes.show.forEach(meshId => {\r\n this.scene.getMeshByID(meshId).visibility = 1;\r\n });\r\n }\r\n if (meshes.hide) {\r\n meshes.hide.forEach(meshId => {\r\n this.scene.getMeshByID(meshId).visibility = 0;\r\n });\r\n }\r\n if (meshes.changeActiveMaterials) {\r\n meshes.changeActiveMaterials.forEach(change => {\r\n this.scene\r\n .getMeshByID(change.meshId)\r\n .setMaterialByID(change.materialId);\r\n });\r\n }\r\n }\r\n }\r\n\r\n _resetDraggablePosition(deviceData) {\r\n if (deviceData.draggable) {\r\n if (\r\n this.scene &&\r\n this.scene.getMeshesByID(\"touchpointHandle\") &&\r\n deviceData.draggable.touchpointMesh\r\n ) {\r\n this.scene.getMeshesByID(\r\n \"touchpointHandle\"\r\n )[0].position = this._getMeshPosition(\r\n deviceData.draggable.touchpointMesh\r\n );\r\n }\r\n\r\n //Modified by Jonathan\r\n let MeshTouchpointHandle = this.scene.getMeshesById(\"touchpointHandle\");\r\n if (\r\n this.store.state.famExpCurrentPosture === \"tablet\" &&\r\n MeshTouchpointHandle\r\n //this.scene.getMeshesByID(\"touchpointHandle\")\r\n ) {\r\n MeshTouchpointHandle[0].isPickable = false;\r\n //this.scene.getMeshesByID(\"touchpointHandle\")[0].isPickable = false;\r\n } else {\r\n MeshTouchpointHandle[0].isPickable = true;\r\n //this.scene.getMeshesByID(\"touchpointHandle\")[0].isPickable = true;\r\n }\r\n }\r\n }\r\n\r\n meshOverlayInit() {\r\n this.meshOverlay = new MeshOverlay({\r\n scene: this.scene,\r\n camera: this.camera,\r\n renderW: this.engine.getRenderWidth(true),\r\n renderH: this.engine.getRenderHeight(true),\r\n loadedMeshes: this.scene.meshes,\r\n items: this.meshOverlayItems,\r\n store: this.store,\r\n config: this.meshOverlayTooltipConfig,\r\n });\r\n\r\n this.scene.registerBeforeRender(this._registerBeforeRenderHandler);\r\n }\r\n\r\n meshOverlayReset = () => {\r\n if (this.meshOverlay) {\r\n this.meshOverlay.reset();\r\n }\r\n this.meshOverlayItems = {};\r\n this.meshOverlayTooltipConfig = {};\r\n };\r\n\r\n meshOverlayReInit = () => {\r\n this.scene.unregisterBeforeRender(this._registerBeforeRenderHandler);\r\n if (this.meshOverlay) {\r\n this.meshOverlay.reset();\r\n }\r\n this.meshOverlayInit();\r\n };\r\n\r\n meshOverlayRefreshData = () => {\r\n if (this.meshOverlay) {\r\n this.meshOverlay.scene = this.scene;\r\n this.meshOverlay.camera = this.camera;\r\n this.meshOverlay.renderW = this.engine.getRenderWidth(true);\r\n this.meshOverlay.renderH = this.engine.getRenderHeight(true);\r\n this.meshOverlay.loadedMeshes = this.scene.meshes;\r\n this.meshOverlay.items = this.meshOverlayItems;\r\n this.meshOverlay.store = this.store;\r\n this.meshOverlay.config = this.meshOverlayTooltipConfig;\r\n }\r\n };\r\n\r\n logCamera = andCopy => {\r\n console.log(\r\n `position: [${this.camera.position.x}, ${this.camera.position.y}, ${this.camera.position.z}],`\r\n );\r\n if (andCopy) {\r\n navigator.clipboard\r\n .writeText(\r\n `[${this.camera.position.x}, ${this.camera.position.y}, ${this.camera.position.z}],`\r\n )\r\n .then(\r\n function() {},\r\n function() {}\r\n );\r\n }\r\n };\r\n\r\n updateQuality = scene => {\r\n // LIMITING RENDERING RESOLUTION TO 4500 pixels (width)\r\n document.querySelector(\"#renderCanvas\").width = window.innerWidth;\r\n document.querySelector(\"#renderCanvas\").height = window.innerHeight;\r\n document.querySelector(\"#renderCanvas\").tabindex = -1;\r\n\r\n if (this.engine.getRenderWidth() >= 4500) {\r\n this.scene\r\n .getEngine()\r\n .setHardwareScalingLevel(\r\n this.quality.topLimit[this.store.state.quality]\r\n );\r\n } else {\r\n if (scene === \"homeScreen\" || scene === undefined) {\r\n this.scene\r\n .getEngine()\r\n .setHardwareScalingLevel(\r\n this.quality.homeScreen[this.store.state.quality]\r\n );\r\n } else {\r\n this.scene\r\n .getEngine()\r\n .setHardwareScalingLevel(\r\n this.quality.singleDevices[this.store.state.quality]\r\n );\r\n }\r\n }\r\n\r\n this.meshOverlayRefreshData();\r\n };\r\n\r\n /**\r\n * Callback for our mouse move event - just\r\n * keeps track of the last mouse position\r\n */\r\n _onMousemove = e => {\r\n this.lastX = e.clientX / this.screenWidth - 0.01;\r\n this.lastY = e.clientY / this.screenHeight - 0.01;\r\n\r\n this._requestTick();\r\n };\r\n\r\n /**\r\n * Our animation callback\r\n */\r\n _update = () => {\r\n // allow further rAFs to be called\r\n this.ticking = false;\r\n };\r\n\r\n /**\r\n * Calls rAF if it's not already\r\n * been done already\r\n */\r\n _requestTick = () => {\r\n if (!this.ticking) {\r\n requestAnimationFrame(this._update);\r\n this.ticking = true;\r\n }\r\n };\r\n\r\n _registerBeforeRenderHandler = () => {\r\n if (this.route.path !== \"/\" + this.store.state.actualLang) {\r\n this.meshOverlay.update();\r\n }\r\n\r\n // Optimization on Realtime Shadow\r\n if (this.masterAnimation) {\r\n if (\r\n this.masterAnimation.isPlaying ||\r\n this.masterAnimation.animatables[0].masterFrame != lastAnimFrame\r\n ) {\r\n if (flag) {\r\n flag = false;\r\n shdwGenerator.getShadowMap().refreshRate = 1;\r\n }\r\n lastAnimFrame = this.masterAnimation.animatables[0].masterFrame;\r\n } else {\r\n if (!flag) {\r\n flag = true;\r\n shdwGenerator.getShadowMap().refreshRate = 0;\r\n }\r\n }\r\n }\r\n };\r\n\r\n _getMeshPosition(meshId) {\r\n let { _x, _y, _z } = this.scene.getMeshByID(meshId).getAbsolutePosition();\r\n\r\n return new Vector3(_x, _y, _z);\r\n }\r\n\r\n _setupTooltips(deviceData) {\r\n let { tooltips } = allScenes[this.currentMesh.id].find(\r\n scene => scene.file === deviceData.filename\r\n );\r\n\r\n // if there are additional files, combine their \"scenes\" tooltips\r\n if (deviceData.additionalFilenames) {\r\n deviceData.additionalFilenames.forEach(filename => {\r\n let extraScene = allScenes[this.currentMesh.id].find(\r\n scene => scene.file === filename\r\n );\r\n tooltips = [...tooltips, ...extraScene.tooltips];\r\n });\r\n }\r\n\r\n this.meshOverlayItems = {};\r\n if (\r\n deviceData.changeModels &&\r\n !deviceData.changeModels.dontChangeTooltips\r\n ) {\r\n tooltips.forEach(tooltip => {\r\n if (\r\n deviceData.tooltips[tooltip] &&\r\n deviceData.tooltips[tooltip].data.modelRanges[\r\n this.store.state.famExpCurrentModel\r\n ] !== false\r\n ) {\r\n this.meshOverlayItems[tooltip] = {\r\n type: deviceData.tooltips[tooltip].type,\r\n data: deviceData.tooltips[tooltip].data,\r\n offset: deviceData.tooltips[tooltip].offset\r\n ? deviceData.tooltips[tooltip].offset\r\n : Vector3.Zero(),\r\n };\r\n }\r\n });\r\n } else {\r\n tooltips.forEach(tooltip => {\r\n if (deviceData.tooltips[tooltip]) {\r\n this.meshOverlayItems[tooltip] = {\r\n type: deviceData.tooltips[tooltip].type,\r\n data: deviceData.tooltips[tooltip].data,\r\n offset: Vector3.Zero(),\r\n };\r\n }\r\n\r\n // Reset of SCREEN HANDLE to 13.5\"\r\n // on Laptop 4 single device scene starting\r\n if (deviceData.name === \"Surface Laptop 4\") {\r\n if (tooltip === \"12_Screen_Handle_A\") {\r\n deviceData.tooltips[tooltip].data.ranges[0] = 170;\r\n deviceData.tooltips[tooltip].data.ranges[1] = 200;\r\n }\r\n if (tooltip === \"12_Screen_Handle_B\") {\r\n deviceData.tooltips[tooltip].data.ranges[0] = 0;\r\n deviceData.tooltips[tooltip].data.ranges[1] = 0;\r\n }\r\n // Reset of DESCRIPTIONS to 13.5\"\r\n // on Laptop 4 single device scene starting\r\n /* Modified by Jonathan\r\n if (tooltip === \"09_Battery\")\r\n deviceData.tooltips[tooltip].data.description =\r\n \"<ul><li>Up to 19 hours on <b>Surface Laptop 4 13.5â€</b> AMDâ„¢ Ryzenâ„¢ 5 Microsoft Surface Edition</li><li>Up to 17 hours on <b>Surface Laptop 4 13.5â€</b> Intel® Coreâ„¢ i5</li></ul>\";\r\n if (tooltip === \"08_Performance_Thermals\")\r\n deviceData.tooltips[tooltip].data.description =\r\n \"<ul><li>Quad Core 11th Gen Intel® Coreâ„¢ i5-1145G7 Processor</li> <li>Quad Core 11th Gen Intel® Coreâ„¢ i7-1185G7 Processor</li> <li>AMD Ryzenâ„¢ 5 4680U Mobile Processor with Radeonâ„¢ Graphics Microsoft Surface® Edition (6 cores)</li> </ul>\";\r\n if (tooltip === \"01_Display\")\r\n deviceData.tooltips[tooltip].data.description =\r\n \"<p>13.5†PixelSenseâ„¢ Display</p><ul><li>Resolution: 2256 x 1504 (201 PPI)</li><li>Aspect ratio: 3:2</li><li>Surface Pen* enabled </li><li>Touch: 10 point multi-touch</li></ul>\";\r\n if (tooltip === \"10_Dimensions_Weight\")\r\n deviceData.tooltips[tooltip].data.description =\r\n \"<ul><li><b>Surface Laptop 4 13.5â€</b> in Platinum and Ice Blue Alcantara: 2.79 lb (1,265 g)</li><li><b>Surface Laptop 4 13.5â€</b> in Matte Black and Sandstone metal: 2.84 lb (1,288 g)</li></ul>\";\r\n */\r\n }\r\n });\r\n }\r\n this.meshOverlayTooltipConfig = deviceData.tooltipConfig;\r\n this.meshOverlayInit();\r\n }\r\n\r\n async _enableDetailView(pickedMesh) {\r\n this.currentMesh = pickedMesh;\r\n let foundMesh = false;\r\n\r\n this.updateQuality(\"singleDevices\");\r\n\r\n // Changes default scene bg color to grey\r\n this.scene.clearColor = new Color3.FromHexString(\"#e6e6e6\");\r\n // Fog to hide Ground Border\r\n this.scene.fogStart = 26.0;\r\n this.scene.fogEnd = 30.0;\r\n\r\n this.scene.environmentTexture = this.basicHdrTexture;\r\n this.scene.environmentIntensity = 1.75;\r\n\r\n while (this.currentMesh._parentNode && !foundMesh) {\r\n this.currentMesh = this.currentMesh._parentNode;\r\n\r\n if (devices[this.currentMesh.id]) {\r\n let deviceData = devices[this.currentMesh.id];\r\n\r\n this.store.commit(\r\n \"updateFamExpCurrentPosture\",\r\n deviceData.defaultPostureMode\r\n ? deviceData.defaultPostureMode\r\n : \"laptop\"\r\n );\r\n this.currentModePosture = this.store.state.famExpCurrentPosture;\r\n\r\n if (deviceData && deviceData.changeModels) {\r\n this.modelVisibility = {\r\n ...deviceData.changeModels[deviceData.changeModels.default].hide,\r\n ...deviceData.changeModels[deviceData.changeModels.default].show,\r\n };\r\n this.store.commit(\r\n \"updateFamExpCurrentModel\",\r\n deviceData.changeModels.default\r\n ? deviceData.changeModels.default\r\n : \"\"\r\n );\r\n }\r\n\r\n this.store.commit(\"updateCurrentTooltip\", \"\");\r\n\r\n anime.set(\".page__overlay-fade\", {\r\n opacity: 1,\r\n });\r\n this.engine.displayLoadingUI();\r\n await this._loadScene(this.currentMesh.id);\r\n setTimeout(() => {\r\n this.engine.hideLoadingUI();\r\n anime({\r\n targets: \".page__overlay-fade\",\r\n opacity: 0,\r\n duration: 350,\r\n easing: \"easeInOutQuad\",\r\n });\r\n }, 500);\r\n\r\n this._setDeviceLighting(deviceData);\r\n\r\n assetContainers[\"Exp_Landing_52.glb\"].removeAllFromScene();\r\n // Remove an InstancedMesh\r\n this.scene.meshes.forEach(mesh => {\r\n if (!mesh._isMesh) {\r\n this.scene.removeMesh(mesh);\r\n }\r\n });\r\n assetContainers[deviceData.filename].addAllToScene();\r\n\r\n if (deviceData.additionalFilenames) {\r\n deviceData.additionalFilenames.forEach(filename => {\r\n assetContainers[filename].addAllToScene();\r\n });\r\n }\r\n\r\n foundMesh = true;\r\n this.detailView = true;\r\n\r\n // if it is Hubs device and the 85\" was clicked\r\n if (pickedMesh.name === \"H50_Field\") {\r\n this.changeActiveModel(\"fifty\");\r\n } else if (pickedMesh.name === \"H85_Field\") {\r\n this.changeActiveModel(\"eightyFive\");\r\n }\r\n\r\n this._addShadows();\r\n\r\n if (deviceData.fog) {\r\n deviceData.fog.start\r\n ? (this.scene.fogStart = deviceData.fog.start)\r\n : null;\r\n deviceData.fog.end ? (this.scene.fogEnd = deviceData.fog.end) : null;\r\n }\r\n\r\n if (deviceData.hideMeshes) {\r\n deviceData.hideMeshes.forEach(meshID => {\r\n if (this.scene.getMeshByID(meshID)) {\r\n this.scene.getMeshByID(meshID).isVisible = false;\r\n }\r\n });\r\n }\r\n\r\n this._setCamera(deviceData);\r\n\r\n this.showDetail(this.currentMesh.id);\r\n\r\n let introComplete = false;\r\n\r\n this.scene.stopAllAnimations();\r\n if (deviceData.animations) {\r\n this.currentFrame.primary = 0;\r\n if (this.scene.animationGroups[0] && deviceData.animations.primary) {\r\n if (\r\n deviceData.animations.primary.intro &&\r\n deviceData.animations.primary.intro.startFrame\r\n ) {\r\n this.currentFrame.primary =\r\n deviceData.animations.primary.intro.startFrame;\r\n if (deviceData.animations.primary?.intro?.hideMeshes) {\r\n deviceData.animations.primary.intro.hideMeshes.forEach(\r\n meshName => {\r\n this.scene.getMeshByID(meshName).visibility = 0;\r\n }\r\n );\r\n }\r\n }\r\n\r\n if (deviceData.animations.primary?.intro?.animationName) {\r\n this.masterAnimation = this.scene.getAnimationGroupByName(\r\n deviceData.animations.primary.intro.animationName\r\n );\r\n } else {\r\n this.masterAnimation = this.scene.animationGroups[0];\r\n }\r\n\r\n this.masterAnimation.play(false).pause();\r\n\r\n anime({\r\n targets: this.currentFrame,\r\n duration: deviceData.animations.primary.intro.duration,\r\n primary: deviceData.animations.primary.intro.endFrame,\r\n easing: \"easeInOutQuint\",\r\n complete: () => {\r\n introComplete = true;\r\n },\r\n });\r\n }\r\n\r\n // Two animationsGroups means there are two gltf files in the scene (for a detachable keyboard)\r\n if (\r\n this.scene.animationGroups[1] &&\r\n deviceData.animations.secondary\r\n ) {\r\n // Get intro starting frame if exists\r\n if (\r\n deviceData.animations.secondary.intro &&\r\n deviceData.animations.secondary.intro.startFrame\r\n ) {\r\n this.currentFrame.secondary =\r\n deviceData.animations.secondary.intro.startFrame;\r\n }\r\n\r\n // not sure why but if I do this, it allows me to goTooFrame to animate\r\n this.scene.animationGroups[1].play(false).pause();\r\n anime({\r\n targets: this.currentFrame,\r\n duration: deviceData.animations.secondary.intro.duration,\r\n secondary: deviceData.animations.secondary.intro.endFrame,\r\n easing: \"easeInOutQuint\",\r\n });\r\n }\r\n } else {\r\n shdwGenerator.getShadowMap().refreshRate = 5;\r\n setTimeout(() => {\r\n shdwGenerator.getShadowMap().refreshRate = 0;\r\n }, 500);\r\n }\r\n\r\n if (deviceData.tooltips) {\r\n this._setupTooltips(deviceData);\r\n }\r\n\r\n if (deviceData.preloadVideos) {\r\n deviceData.preloadVideos.forEach(video => {\r\n preloadVideo(video);\r\n });\r\n }\r\n\r\n if (this.scene.getNodeByID(\"Sun\")) {\r\n this.scene.getNodeByID(\"Sun\").dispose();\r\n }\r\n\r\n if (deviceData.draggable) {\r\n let touchPoint = MeshBuilder.CreateSphere(\r\n \"touchpointHandle\",\r\n {\r\n //diameter: 0.6,\r\n diameter: 1.2,\r\n },\r\n this.scene\r\n );\r\n touchPoint.visibility = 0;\r\n\r\n let referencePoint = MeshBuilder.CreateSphere(\r\n \"touchpointReference\",\r\n {\r\n diameter: 0.2,\r\n },\r\n this.scene\r\n );\r\n referencePoint.visibility = 0;\r\n referencePoint.position.x = deviceData.draggable.referencePoint.x;\r\n referencePoint.position.y = deviceData.draggable.referencePoint.y;\r\n referencePoint.position.z = deviceData.draggable.referencePoint.z;\r\n\r\n let dragAxisData = deviceData.draggable.dragAxis;\r\n let pointerDragBehavior = new PointerDragBehavior({\r\n dragAxis: new Vector3(...dragAxisData),\r\n });\r\n\r\n pointerDragBehavior.validateDrag = targetPosition => {\r\n if (deviceData.draggable.zLimits) {\r\n if (targetPosition.z < deviceData.draggable.zLimits[0]) {\r\n targetPosition.z = deviceData.draggable.zLimits[0];\r\n }\r\n\r\n if (targetPosition.z > deviceData.draggable.zLimits[1]) {\r\n targetPosition.z = deviceData.draggable.zLimits[1];\r\n } else {\r\n return true;\r\n }\r\n }\r\n if (deviceData.draggable.yLimits) {\r\n if (targetPosition.y < deviceData.draggable.yLimits[0]) {\r\n targetPosition.y = deviceData.draggable.yLimits[0];\r\n }\r\n\r\n if (targetPosition.y > deviceData.draggable.yLimits[1]) {\r\n targetPosition.y = deviceData.draggable.yLimits[1];\r\n } else {\r\n return true;\r\n }\r\n }\r\n return true;\r\n };\r\n\r\n pointerDragBehavior.useObjectOrientationForDragging = false;\r\n\r\n pointerDragBehavior.onDragStartObservable.add(() => {\r\n if (this.lastTouchpointPos) {\r\n touchPoint.position = this.lastTouchpointPos;\r\n }\r\n this.mouseDown = true;\r\n document.getElementById(\"meshOverlay\").classList.add(\"DragActive\");\r\n });\r\n\r\n let animIn;\r\n let animOut;\r\n pointerDragBehavior.onDragObservable.add(() => {\r\n if (\r\n deviceData.name === \"Surface Laptop 4\" ||\r\n deviceData.name === \"Surface Laptop Go 2\" ||\r\n // New change for 9/21 ----\r\n deviceData.name === \"Surface Laptop Go 3\"\r\n // ----\r\n ) {\r\n let angles = [0, 90];\r\n switch (deviceData.name) {\r\n case \"Surface Laptop 4\":\r\n if (this.store.state.famExpCurrentPosture === \"thirteen\") {\r\n animIn = 1.49;\r\n animOut = 3.179;\r\n }\r\n if (this.store.state.famExpCurrentPosture === \"fifteen\") {\r\n animIn = 5.284;\r\n animOut = 7.052;\r\n }\r\n break;\r\n // New change for 9/21 ----\r\n case \"Surface Laptop Go 3\":\r\n animIn = 1.988;\r\n animOut = 3.646;\r\n break;\r\n // ----\r\n case \"Surface Laptop Go 2\":\r\n animIn = 1.988;\r\n animOut = 3.646;\r\n break;\r\n }\r\n\r\n // Rotation of DRAGHANDLEs on SCREENs\r\n document\r\n .querySelectorAll(\".buttonCircularOverlay__arrows-container\")\r\n .forEach(button => {\r\n button.style.transform =\r\n \"rotate(\" +\r\n Scalar.Lerp(\r\n angles[0],\r\n angles[1],\r\n (this.currentFrame.primary - animIn) / (animOut - animIn)\r\n ) +\r\n \"deg)\";\r\n });\r\n //\r\n }\r\n });\r\n\r\n pointerDragBehavior.onDragEndObservable.add(() => {\r\n this.mouseDown = false;\r\n document\r\n .getElementById(\"meshOverlay\")\r\n .classList.remove(\"DragActive\");\r\n this.lastTouchpointPos = null;\r\n // if (deviceData.draggable.savePosition) {\r\n // this.lastTouchpointPos = touchPoint._absolutePosition;\r\n // console.log(\r\n // touchPoint._absolutePosition,\r\n // touchPoint,\r\n // touchPoint.position\r\n // );\r\n // }\r\n touchPoint.position = this._getMeshPosition(\r\n deviceData.draggable.touchpointMesh\r\n );\r\n if (\r\n this.store.state.famExpCurrentPosture === \"studio\" &&\r\n (this.currentMesh.id === \"Pro_9\" ||\r\n this.currentMesh.id === \"Pro_9_prev\" ||\r\n this.currentMesh.id === \"Big_Rock\")\r\n ) {\r\n this.animateCamera({\r\n target: {\r\n values: [0, 1.5, 0],\r\n speed: 80,\r\n },\r\n });\r\n }\r\n });\r\n\r\n touchPoint.addBehavior(pointerDragBehavior);\r\n\r\n let hoverActionManager = new ActionManager(this.scene);\r\n touchPoint.actionManager = hoverActionManager;\r\n\r\n let isHovered = false;\r\n hoverActionManager.registerAction(\r\n new ExecuteCodeAction(\r\n ActionManager.OnPointerOverTrigger,\r\n function() {\r\n if (!isHovered) {\r\n document\r\n .getElementById(\"meshOverlay\")\r\n .classList.add(\"DragHover\");\r\n isHovered = true;\r\n }\r\n }\r\n )\r\n );\r\n hoverActionManager.registerAction(\r\n new ExecuteCodeAction(\r\n ActionManager.OnPointerOutTrigger,\r\n function() {\r\n if (isHovered) {\r\n document\r\n .getElementById(\"meshOverlay\")\r\n .classList.remove(\"DragHover\");\r\n isHovered = false;\r\n }\r\n }\r\n )\r\n );\r\n\r\n const touchpointHandleMesh = this.scene.getMeshByName(\r\n \"touchpointHandle\"\r\n );\r\n const touchpointReferenceMesh = this.scene.getMeshByID(\r\n \"touchpointReference\"\r\n );\r\n this.draggableRegisterBeforeRender = () => {\r\n if (\r\n deviceData.draggable.isPickableInDegRange &&\r\n !isValueInRange(\r\n deviceData.draggable.isPickableInDegRange,\r\n this.store.state.camDeg\r\n )\r\n ) {\r\n touchPoint.isPickable = false;\r\n } else {\r\n touchPoint.isPickable = true;\r\n }\r\n if (this.detailIntroAnimationComplete && this.mouseDown) {\r\n // Measure the distance between the kickstand marker and the battery marker to determine how far apart they are.\r\n // That value then is used to scrub through the baked animation.\r\n let distance;\r\n if (deviceData.draggable.yDiff) {\r\n distance =\r\n touchpointHandleMesh.getAbsolutePosition()._y -\r\n touchpointReferenceMesh.getAbsolutePosition()._y;\r\n } else if (deviceData.draggable.zDiff) {\r\n distance =\r\n touchpointHandleMesh.getAbsolutePosition()._z -\r\n touchpointReferenceMesh.getAbsolutePosition()._z;\r\n } else {\r\n distance = Vector3.Distance(\r\n touchpointHandleMesh.getAbsolutePosition(),\r\n touchpointReferenceMesh.getAbsolutePosition()\r\n );\r\n }\r\n\r\n let ranges = deviceData.draggable.ranges\r\n ? deviceData.draggable.ranges\r\n : null;\r\n if (deviceData.draggable.rangesByMode) {\r\n ranges =\r\n deviceData.draggable.rangesByMode[\r\n this.store.state.famExpCurrentPosture\r\n ];\r\n }\r\n let frame = this._mapRanges(\r\n deviceData.draggable.reverseDistance ? distance * -1 : distance,\r\n ranges.inMin,\r\n ranges.inMax,\r\n ranges.outMin,\r\n ranges.outMax\r\n );\r\n // touchPoint.position.y = this._getMeshPosition(\r\n // deviceData.draggable.touchpointMesh\r\n // ).y;\r\n if (deviceData.draggable.savePosition) {\r\n this.lastTouchpointPos = touchPoint.position;\r\n }\r\n if (deviceData.draggable.lockY) {\r\n touchPoint.position.y = deviceData.draggable.lockY;\r\n }\r\n this.currentFrame.primary = frame;\r\n this.currentFrame.secondary = frame;\r\n\r\n if (deviceData.draggable.isInModeRange) {\r\n deviceData.draggable.isInModeRange.forEach(modeRange => {\r\n if (\r\n this.currentFrame.primary >= modeRange.range[0] &&\r\n this.currentFrame.primary <= modeRange.range[1]\r\n ) {\r\n this.store.commit(\r\n \"updateFamExpCurrentPosture\",\r\n modeRange.mode\r\n );\r\n this.currentModePosture = modeRange.mode;\r\n }\r\n });\r\n }\r\n }\r\n\r\n if (!this.detailIntroAnimationComplete && introComplete) {\r\n if (this && deviceData.draggable.touchpointMesh) {\r\n nextTick(() => {\r\n touchPoint.position = this._getMeshPosition(\r\n deviceData.draggable.touchpointMesh\r\n ); // 17_Kick_Stand for Pro 7\r\n });\r\n }\r\n }\r\n };\r\n\r\n this.scene.registerBeforeRender(this.draggableRegisterBeforeRender);\r\n }\r\n\r\n // This is to reset the setting for Hub. It was effecting other device's shadows\r\n this.scene.meshes.forEach(mesh => {\r\n if (mesh._isMesh && mesh.material) {\r\n mesh.material.needDepthPrePass = false;\r\n }\r\n });\r\n\r\n let lastCameraDegree = 0;\r\n let lastCameraBeta = 0;\r\n let lastCurrentFramePrimaryGeneral = 0;\r\n let lastCurrentFrameSecondaryGeneral = 0;\r\n\r\n this.generalRegisterBeforeRender = () => {\r\n let cameraDegree = Math.round(\r\n Math.abs(Tools.ToDegrees(this.camera.alpha) % 360)\r\n );\r\n let cameraBeta = this.camera.beta.toFixed(2);\r\n if (\r\n cameraDegree !== lastCameraDegree ||\r\n cameraBeta !== lastCameraBeta\r\n ) {\r\n this.store.commit(\"updateCam\", {\r\n deg: cameraDegree,\r\n beta: cameraBeta,\r\n });\r\n lastCameraDegree = cameraDegree;\r\n lastCameraBeta = cameraBeta;\r\n }\r\n if (\r\n this.masterAnimation &&\r\n lastCurrentFramePrimaryGeneral.toFixed(2) !==\r\n this.currentFrame.primary.toFixed(2)\r\n ) {\r\n this.masterAnimation.goToFrame(this.currentFrame.primary);\r\n lastCurrentFramePrimaryGeneral = this.currentFrame.primary;\r\n }\r\n\r\n if (\r\n this.scene.animationGroups[1] &&\r\n this.currentFrame.secondary !== 0 &&\r\n lastCurrentFrameSecondaryGeneral.toFixed(2) !==\r\n this.currentFrame.secondary.toFixed(2)\r\n ) {\r\n this.scene.animationGroups[1].goToFrame(\r\n this.currentFrame.secondary\r\n );\r\n lastCurrentFrameSecondaryGeneral = this.currentFrame.secondary;\r\n }\r\n if (!this.detailIntroAnimationComplete && introComplete) {\r\n this.detailIntroAnimationComplete = true;\r\n }\r\n };\r\n this.scene.registerBeforeRender(this.generalRegisterBeforeRender);\r\n\r\n this.deviceSpecificRegisterBeforeRender = false;\r\n if (\r\n this.currentMesh.id === \"Pro_X\" ||\r\n this.currentMesh.id === \"Pro_8\" ||\r\n // this.currentMesh.id === \"Big_Rock\" ||\r\n this.currentMesh.id === \"Pro_9\" ||\r\n this.currentMesh.id === \"Pro_9_prev\" ||\r\n this.currentMesh.id === \"Go_2\" ||\r\n this.currentMesh.id === \"Go_2_prev\"\r\n ) {\r\n let lastCurrentFramePrimaryDevice = 0;\r\n this.deviceSpecificRegisterBeforeRender = () => {\r\n // Rotate SCREEN of Pro X, Pro 8, Pro 9 & Go 3 (Go2) in Tablet/Laptop modes\r\n if (\r\n this.currentFrame.primary.toFixed(1) !==\r\n lastCurrentFramePrimaryDevice.toFixed(1)\r\n ) {\r\n lastCurrentFramePrimaryDevice = this.currentFrame.primary;\r\n if (\r\n this.currentFrame.primary < 0.8 &&\r\n this.scene.getMaterialById(\"screenWallpaper\").diffuseTexture !==\r\n this.defaultWallpaper2x3Texture\r\n ) {\r\n this.scene.getMaterialById(\r\n \"screenWallpaper\"\r\n ).diffuseTexture = this.defaultWallpaper2x3Texture;\r\n } else if (\r\n this.currentFrame.primary >= 0.8 &&\r\n this.scene.getMaterialById(\"screenWallpaper\").diffuseTexture !==\r\n this.defaultWallpaperTexture\r\n ) {\r\n this.scene.getMaterialById(\r\n \"screenWallpaper\"\r\n ).diffuseTexture = this.defaultWallpaperTexture;\r\n }\r\n }\r\n };\r\n // Inserted for Antenna Element\r\n // this.scene.getMeshByName(\"Antenna\").isVisible = false;\r\n // this.scene.getMeshByName(\"Base_Ant\").isVisible = false;\r\n } else if (this.currentMesh.id === \"Big_Rock\") {\r\n let lastCurrentFramePrimaryDevice = 0;\r\n this.deviceSpecificRegisterBeforeRender = () => {\r\n // Rotate SCREEN of Pro X, Pro 8, Pro 9 & Go 3 (Go2) in Tablet/Laptop modes\r\n if (\r\n this.currentFrame.primary.toFixed(1) !==\r\n lastCurrentFramePrimaryDevice.toFixed(1)\r\n ) {\r\n lastCurrentFramePrimaryDevice = this.currentFrame.primary;\r\n if (\r\n this.currentFrame.primary < 0.8 &&\r\n this.scene.getMaterialById(\"screenWallpaper\").diffuseTexture !==\r\n this.defaultWallpaper2x3RainbowTexture\r\n ) {\r\n this.scene.getMaterialById(\r\n \"screenWallpaper\"\r\n ).diffuseTexture = this.defaultWallpaper2x3RainbowTexture;\r\n } else if (\r\n this.currentFrame.primary >= 0.8 &&\r\n this.scene.getMaterialById(\"screenWallpaper\").diffuseTexture !==\r\n this.defaultWallpaperTextureRainbow\r\n ) {\r\n this.scene.getMaterialById(\r\n \"screenWallpaper\"\r\n ).diffuseTexture = this.defaultWallpaperTextureRainbow;\r\n }\r\n }\r\n };\r\n } else if (this.currentMesh.id === \"Duo_2\") {\r\n let lastCurrentFramePrimaryDevice = 0;\r\n this.deviceSpecificRegisterBeforeRender = () => {\r\n // Rotate SCREEN of Duo 2 in Tablet/Laptop modes\r\n if (\r\n this.currentFrame.primary.toFixed(1) !==\r\n lastCurrentFramePrimaryDevice.toFixed(1)\r\n ) {\r\n lastCurrentFramePrimaryDevice = this.currentFrame.primary;\r\n if (\r\n this.currentFrame.primary > 2.2902 &&\r\n this.currentFrame.primary < 6.1983\r\n ) {\r\n this.scene.getMaterialByID(\r\n \"screenWallpaper\"\r\n ).diffuseTexture.wAng = this.rotation_Half_PI_minus;\r\n } else {\r\n this.scene.getMaterialByID(\r\n \"screenWallpaper\"\r\n ).diffuseTexture.wAng = 0;\r\n }\r\n }\r\n };\r\n } else if (this.currentMesh.id == \"Hubs\") {\r\n let lastCurrentFramePrimaryDevice = 0;\r\n let portraitModeData = deviceData.modes[\"portrait\"].primaryModeAnim;\r\n let landscapeModeData = deviceData.modes[\"landscape\"].primaryModeAnim;\r\n let Hub350ScreenMesh = this.scene.getMeshById(\"H50_Screen_Proxy\");\r\n this.deviceSpecificRegisterBeforeRender = () => {\r\n if (\r\n this.currentFrame.primary.toFixed(1) !==\r\n lastCurrentFramePrimaryDevice.toFixed(1)\r\n ) {\r\n lastCurrentFramePrimaryDevice = this.currentFrame.primary;\r\n if (this.store.state.famExpCurrentModel !== \"fifty\") {\r\n landscapeModeData.hideMeshes.forEach(meshName => {\r\n if (this.scene.getMeshById(meshName)) {\r\n // console.log(meshName, this.scene.getMeshById(meshName));\r\n // console.log(this.currentModePosture)\r\n this.scene.getMeshById(meshName).visibility = 0;\r\n }\r\n });\r\n portraitModeData.hideMeshes.forEach(meshName => {\r\n if (this.scene.getMeshById(meshName)) {\r\n // console.log(meshName, this.scene.getMeshById(meshName));\r\n // console.log(this.currentModePosture)\r\n this.scene.getMeshById(meshName).visibility = 0;\r\n }\r\n });\r\n } else if (this.currentFrame.primary < 0.8) {\r\n landscapeModeData.hideMeshes.forEach(meshName => {\r\n if (this.scene.getMeshById(meshName)) {\r\n // console.log(meshName, this.scene.getMeshById(meshName));\r\n // console.log(this.currentModePosture)\r\n this.scene.getMeshById(meshName).visibility = 0;\r\n }\r\n });\r\n landscapeModeData.showMeshes.forEach(meshName => {\r\n if (this.scene.getMeshById(meshName)) {\r\n // console.log(meshName, this.scene.getMeshById(meshName));\r\n // console.log(this.currentModePosture)\r\n this.scene.getMeshById(meshName).visibility = 1;\r\n }\r\n });\r\n if (this.mouseDown) {\r\n this.store.commit(\"updateFamExpCurrentPosture\", \"landscape\");\r\n }\r\n this.hub50ScreenTexture = new Texture(\r\n \"/familyExplorer/models/hub350Wallpaper_3x2.jpg\",\r\n this.scene\r\n );\r\n this.hub50ScreenTexture.uAng = Math.PI;\r\n Hub350ScreenMesh.material.diffuseTexture = this.hub50ScreenTexture;\r\n } else {\r\n portraitModeData.showMeshes.forEach(meshName => {\r\n if (this.scene.getMeshById(meshName)) {\r\n // console.log(meshName, this.scene.getMeshById(meshName));\r\n // console.log(this.currentModePosture)\r\n this.scene.getMeshById(meshName).visibility = 1;\r\n }\r\n });\r\n portraitModeData.hideMeshes.forEach(meshName => {\r\n if (this.scene.getMeshById(meshName)) {\r\n // console.log(meshName, this.scene.getMeshById(meshName));\r\n // console.log(this.currentModePosture)\r\n this.scene.getMeshById(meshName).visibility = 0;\r\n }\r\n });\r\n if (this.mouseDown) {\r\n this.store.commit(\"updateFamExpCurrentPosture\", \"portrait\");\r\n }\r\n this.hub50ScreenTexture = new Texture(\r\n \"/familyExplorer/models/hub350PortraitWallpaper_2x3.png\",\r\n this.scene\r\n );\r\n this.hub50ScreenTexture.uAng = Math.PI;\r\n Hub350ScreenMesh.material.diffuseTexture = this.hub50ScreenTexture;\r\n }\r\n }\r\n };\r\n }\r\n\r\n this.deviceChangesModelRegisterBeforeRender = false;\r\n if (deviceData && deviceData.changeModels) {\r\n let modelNames = Object.keys(this.modelVisibility);\r\n let last = {};\r\n let meshesToHide = { all: [] };\r\n\r\n if (this.modelVisibility) {\r\n modelNames.forEach(modelKey => {\r\n if (modelKey !== \"default\") {\r\n last[modelKey] = 1;\r\n !meshesToHide[modelKey] ? (meshesToHide[modelKey] = []) : null;\r\n if (\r\n deviceData.changeModels[modelKey].parentNodesToHideDescendants\r\n ) {\r\n deviceData.changeModels[\r\n modelKey\r\n ].parentNodesToHideDescendants.forEach(parent => {\r\n meshesToHide[modelKey].push(\r\n ...this.scene.getNodeById(parent).getDescendants(false)\r\n );\r\n meshesToHide.all.push(\r\n ...this.scene.getNodeById(parent).getDescendants(false)\r\n );\r\n });\r\n } else if (deviceData.changeModels[modelKey].meshesToHide) {\r\n deviceData.changeModels[modelKey].meshesToHide.forEach(\r\n self => {\r\n if (process.env.NODE_ENV === \"development\") {\r\n console.log(\r\n \"self \",\r\n self,\r\n this.scene.getNodeById(self),\r\n this.scene.getNodeById(self)._isMesh\r\n );\r\n }\r\n\r\n meshesToHide[modelKey].push(this.scene.getNodeById(self));\r\n meshesToHide.all.push(this.scene.getNodeById(self));\r\n }\r\n );\r\n if (process.env.NODE_ENV === \"development\") {\r\n console.log(\"Meshes to hide\", meshesToHide);\r\n }\r\n }\r\n }\r\n });\r\n\r\n if (!deviceData.changeModels?.dontChangeMaterials) {\r\n meshesToHide.all.forEach(mesh => {\r\n if (mesh._isMesh && mesh.material) {\r\n mesh.material.needDepthPrePass = true;\r\n }\r\n });\r\n }\r\n\r\n let portraitModeData =\r\n this.currentMesh.id == \"Hubs\"\r\n ? deviceData.modes[\"portrait\"].primaryModeAnim.hideMeshes\r\n : null;\r\n let landscapeModeData =\r\n this.currentMesh.id == \"Hubs\"\r\n ? deviceData.modes[\"landscape\"].primaryModeAnim.hideMeshes\r\n : null;\r\n let Hub350ScreenMesh = this.scene.getMeshById(\"H50_Screen_Proxy\");\r\n this.deviceChangesModelRegisterBeforeRender = () => {\r\n modelNames.forEach(key => {\r\n if (this.modelVisibility[key] !== last[key]) {\r\n meshesToHide[key].forEach(mesh => {\r\n if (mesh._isMesh) {\r\n if (\r\n this.currentMesh.id == \"Hubs\" &&\r\n this.store.state.famExpCurrentPosture == \"portrait\"\r\n ) {\r\n if (portraitModeData.includes(mesh.id)) {\r\n mesh.visibility = 0;\r\n } else {\r\n mesh.visibility = this.modelVisibility[key];\r\n }\r\n this.hub50ScreenTexture = new Texture(\r\n \"/familyExplorer/models/hub350PortraitWallpaper_2x3.png\",\r\n this.scene\r\n );\r\n this.hub50ScreenTexture.uAng = Math.PI;\r\n Hub350ScreenMesh.material.diffuseTexture = this.hub50ScreenTexture;\r\n } else if (\r\n this.currentMesh.id == \"Hubs\" &&\r\n this.store.state.famExpCurrentPosture == \"landscape\"\r\n ) {\r\n if (landscapeModeData.includes(mesh.id)) {\r\n mesh.visibility = 0;\r\n } else {\r\n mesh.visibility = this.modelVisibility[key];\r\n }\r\n this.hub50ScreenTexture = new Texture(\r\n \"/familyExplorer/models/hub350Wallpaper_3x2.jpg\",\r\n this.scene\r\n );\r\n this.hub50ScreenTexture.uAng = Math.PI;\r\n Hub350ScreenMesh.material.diffuseTexture = this.hub50ScreenTexture;\r\n } else {\r\n mesh.visibility = this.modelVisibility[key];\r\n }\r\n }\r\n });\r\n last[key] = this.modelVisibility[key];\r\n }\r\n });\r\n };\r\n }\r\n }\r\n\r\n if (this.deviceSpecificRegisterBeforeRender) {\r\n this.scene.registerBeforeRender(\r\n this.deviceSpecificRegisterBeforeRender\r\n );\r\n }\r\n if (this.deviceChangesModelRegisterBeforeRender) {\r\n this.scene.registerBeforeRender(\r\n this.deviceChangesModelRegisterBeforeRender\r\n );\r\n }\r\n }\r\n }\r\n this._fittoScreen();\r\n }\r\n\r\n _setCameraPosScreenSize() {\r\n this.cameraPosScreenSize = {\r\n ultrawide: {\r\n alpha: 3.681,\r\n beta: 1.405,\r\n radius: this.convertRange(\r\n this.store.state.windowSize.aspectRatio,\r\n [3.6, 2.1],\r\n [187, 192]\r\n ),\r\n position: new Vector3(28, 19.8, 5),\r\n },\r\n wide: {\r\n alpha: 3.681,\r\n beta: 1.405,\r\n radius: this.convertRange(\r\n this.store.state.windowSize.aspectRatio,\r\n [2.1, 1.7],\r\n [192, 215]\r\n ),\r\n position: new Vector3(28, 19.8, 5),\r\n },\r\n standard: {\r\n alpha: 3.681,\r\n beta: 1.405,\r\n radius: this.convertRange(\r\n this.store.state.windowSize.aspectRatio,\r\n [1.7, 1.25],\r\n [215, 235]\r\n ),\r\n position: new Vector3(28, 19.8, 5),\r\n },\r\n };\r\n }\r\n\r\n _setCamera(deviceData) {\r\n if (deviceData) {\r\n if (deviceData.initialCameraTarget) {\r\n this.camera.setTarget(new Vector3(...deviceData.initialCameraTarget));\r\n } else {\r\n this.camera.setTarget(new Vector3(0, 1.5, 0));\r\n }\r\n\r\n // this is to make sure the alpha doesn't ever pass 0\r\n // to keep the conversion to degrees consistent\r\n this.camera.alpha = -1008.097;\r\n this.camera.radius = 13;\r\n this.camera.lowerRadiusLimit = 13;\r\n this.camera.upperRadiusLimit = 13;\r\n this.camera.lowerBetaLimit = 0.3;\r\n this.camera.upperBetaLimit = 1.4;\r\n this.camera.fov = 0.8;\r\n this.camera.minZ = 1;\r\n this.camera.maxZ = 1000;\r\n\r\n if (deviceData.cameraAlpha) {\r\n this.camera.alpha = deviceData.cameraAlpha;\r\n }\r\n\r\n if (deviceData.cameraRadius) {\r\n if (deviceData.cameraRadius.default)\r\n this.camera.radius = deviceData.cameraRadius.default;\r\n if (deviceData.cameraRadius.lowerLimit)\r\n this.camera.lowerRadiusLimit = deviceData.cameraRadius.lowerLimit;\r\n if (deviceData.cameraRadius.upperLimit)\r\n this.camera.upperRadiusLimit = deviceData.cameraRadius.upperLimit;\r\n }\r\n\r\n if (deviceData.cameraBeta) {\r\n if (deviceData.cameraBeta.default)\r\n this.camera.beta = deviceData.cameraBeta.default;\r\n if (deviceData.cameraBeta.lowerLimit)\r\n this.camera.lowerBetaLimit = deviceData.cameraBeta.lowerLimit;\r\n if (deviceData.cameraRadius.upperLimit)\r\n this.camera.upperBetaLimit = deviceData.cameraBeta.upperLimit;\r\n }\r\n\r\n this.camera.attachControl(this.canvas, true);\r\n } else {\r\n this._setCameraPosScreenSize();\r\n this.camera.setTarget(new Vector3(28, 19.8, 5));\r\n this.camera.lowerRadiusLimit = undefined;\r\n this.camera.upperRadiusLimit = undefined;\r\n this.camera.lowerBetaLimit = undefined;\r\n this.camera.upperBetaLimit = undefined;\r\n this.camera.alpha = this.cameraPosScreenSize[\r\n this.store.state.windowSize.readableRatio\r\n ].alpha;\r\n this.camera.beta = this.cameraPosScreenSize[\r\n this.store.state.windowSize.readableRatio\r\n ].beta;\r\n this.camera.radius = this.cameraPosScreenSize[\r\n this.store.state.windowSize.readableRatio\r\n ].radius;\r\n this.camera.fov = 0.252;\r\n this.camera.minZ = 6;\r\n this.camera.maxZ = 10000;\r\n }\r\n }\r\n\r\n _setDeviceLighting(deviceData) {\r\n if (deviceData.light) {\r\n let { position, direction, intensity } = deviceData.light;\r\n if (position) {\r\n this.scene.lights[1].position = new Vector3(...position);\r\n }\r\n if (direction) {\r\n this.scene.lights[1].direction = new Vector3(...direction);\r\n }\r\n if (intensity) {\r\n this.scene.lights[1].intensity = intensity;\r\n }\r\n } else {\r\n // Default Light for Shadow on Details Scene\r\n this.scene.lights[1].intensity = 4;\r\n this.scene.lights[1].position = new Vector3(0, 15, -10);\r\n this.scene.lights[1]._direction._x = -1;\r\n this.scene.lights[1]._direction._y = -1;\r\n this.scene.lights[1]._direction._z = 1;\r\n }\r\n\r\n if (\r\n this.currentMesh &&\r\n (this.currentMesh.id === \"Hubs\" ||\r\n this.currentMesh.id === \"Hubs_prev\" ||\r\n (this.currentMesh && this.currentMesh.id === \"Studio\"))\r\n ) {\r\n this.scene.environmentIntensity = 1;\r\n }\r\n }\r\n\r\n // Maps a value from one range to a value from another range\r\n _mapRanges = (num, inMin, inMax, outMin, outMax) => {\r\n return Math.max(\r\n Math.min(\r\n ((num - inMin) * (outMax - outMin)) / (inMax - inMin) + outMin,\r\n outMax\r\n ),\r\n outMin\r\n );\r\n };\r\n\r\n _loadPromise = async (root, file, scene) => {\r\n return new Promise(res => {\r\n SceneLoader.LoadAssetContainer(root, file, scene, function(container) {\r\n container.meshes.forEach(mesh => {\r\n if (mesh.id === \"__root__\") {\r\n mesh.scaling = new Vector3(-0.1, 0.1, 0.1);\r\n }\r\n });\r\n res(container);\r\n });\r\n });\r\n };\r\n\r\n _createDebug = () => {\r\n new Debug.AxesViewer(this.scene);\r\n this.scene.debugLayer.show();\r\n this.store.commit(\"updateShowDev\", true);\r\n // this.foregroundScene.debugLayer.show();\r\n };\r\n\r\n _fittoScreen() {\r\n this.engine.resize();\r\n this.renderW = this.engine.getRenderWidth(true);\r\n this.renderH = this.engine.getRenderHeight(true);\r\n this.screenHeight = window.innerHeight;\r\n this.screenWidth = window.innerWidth;\r\n this.meshOverlayReInit();\r\n\r\n this.updateQuality(\r\n this.scene.getActiveMeshes().length > 30 ? \"homeScreen\" : \"singleDevices\"\r\n );\r\n }\r\n\r\n onResize = () => {\r\n nextTick(() => {\r\n //\r\n this._fittoScreen();\r\n if (!this.detailView) {\r\n this._setCamera();\r\n }\r\n });\r\n };\r\n\r\n _createScene() {\r\n let scene = new Scene(this.engine);\r\n\r\n scene.clearColor = new Color3.FromHexString(\"#e6e6e6\");\r\n scene.ambientColor = Color3.White();\r\n\r\n // replace the default loading screen\r\n this.engine.loadingScreen = new CustomLoadingScreen();\r\n // show the loading screen\r\n if (this.route.params.device) {\r\n this.store.commit(\r\n \"updateFamExpDeviceLoading\",\r\n devices[this.paramsToID[this.route.params.device]].name\r\n );\r\n }\r\n this.engine.displayLoadingUI();\r\n\r\n this.basicHdrTexture = new CubeTexture.CreateFromPrefilteredData(\r\n \"/surfaceBook/Studio_Softbox_2Umbrellas_cube_specular.env\",\r\n scene\r\n );\r\n this.hubHdrTexture = new CubeTexture.CreateFromPrefilteredData(\r\n \"/surfaceHub/images/Blommer_7EnvHDR.env\",\r\n scene\r\n );\r\n this.basicHdrTexture.gammaSpace = false;\r\n this.hubHdrTexture.gammaSpace = false;\r\n scene.environmentTexture = this.hubHdrTexture;\r\n scene.environmentIntensity = 0.45;\r\n // scene.environmentIntensity = 1.75;\r\n\r\n // let light = new HemisphericLight(\"light\", new Vector3(0, 10, 0), scene);\r\n // light.intensity = 4;\r\n\r\n // Light for Home Menu\r\n const light = new DirectionalLight(\"dir01\", new Vector3(12, -1, 0), scene);\r\n light.position = new Vector3(0, 15, -10);\r\n light.intensity = 0;\r\n\r\n // Light for Shadows on Detail Scenes\r\n const light_detailScenes = new DirectionalLight(\r\n \"dir02\",\r\n new Vector3(-1, -1, 1),\r\n scene\r\n );\r\n light_detailScenes.position = new Vector3(0, 15, -10);\r\n light_detailScenes.intensity = 4;\r\n light_detailScenes.autoCalcShadowZBounds = true;\r\n\r\n // Shadow generator\r\n const shadowGenerator = new ShadowGenerator(1024, light_detailScenes);\r\n shadowGenerator.useContactHardeningShadow = true;\r\n shadowGenerator.filteringQuality = ShadowGenerator.QUALITY_HIGH;\r\n shadowGenerator.contactHardeningLightSizeUVRatio = 0.049; //Penumbra Ratio\r\n shadowGenerator.setDarkness(0.63);\r\n shadowGenerator.bias = 0.01;\r\n shdwGenerator = shadowGenerator;\r\n\r\n scene.imageProcessingConfiguration.contrast = 1.075;\r\n\r\n // Fog on Background of Detail Scenes\r\n scene.fogMode = Scene.FOGMODE_LINEAR;\r\n scene.fogColor = new Color3.FromHexString(\"#e6e6e6\");\r\n scene.fogStart = 1026.0;\r\n scene.fogEnd = 1030.0;\r\n\r\n // Watch for browser/canvas resize events\r\n emitter.on(\"globalResize\", this.onResize);\r\n\r\n return scene;\r\n }\r\n}\r\n","<template>\r\n <div class=\"overview\">\r\n <div class=\"overview__content\">\r\n <h1 class=\"overview__headline\">\r\n {{ $t(\"general.exploreSurfaceFor.main\") }}\r\n <div\r\n class=\"overview__dropdown\"\r\n :class=\"{ 'overview__dropdown--open': isDropdownOpen }\"\r\n @mouseenter=\"hovered\"\r\n @mouseleave=\"unhovered\"\r\n >\r\n <!-- <div\r\n role=\"button\"\r\n class=\"overview__dropdown-current\"\r\n @click=\"isDropdownOpen = !isDropdownOpen\"\r\n @keypress.enter=\"isDropdownOpen = !isDropdownOpen\"\r\n tabindex=\"0\"\r\n > -->\r\n <div>\r\n <span>{{ $t(\"general.exploreSurfaceFor.business\") }}</span>\r\n <!-- <div class=\"overview__dropdown-arrow\">\r\n <svg\r\n width=\"48\"\r\n height=\"15\"\r\n viewBox=\"0 0 24 15\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n d=\"M2 2L12 12L22 2\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"3\"\r\n />\r\n </svg>\r\n </div> -->\r\n </div>\r\n <!-- <div class=\"overview__dropdown-drawer\">\r\n <div class=\"overview__dropdown-drawer-inner\">\r\n <a\r\n href=\"https://exploresurface.com/\"\r\n class=\"overview__dropdown-link\"\r\n :tabindex=\"isDropdownOpen ? 0 : -1\"\r\n >{{ $t(\"general.exploreSurfaceFor.business\") }}</a\r\n >\r\n <a\r\n href=\"https://education.exploresurface.com/\"\r\n class=\"overview__dropdown-link\"\r\n :tabindex=\"isDropdownOpen ? 0 : -1\"\r\n >{{ $t(\"general.exploreSurfaceFor.education\") }}</a\r\n >\r\n </div>\r\n </div> -->\r\n </div>\r\n </h1>\r\n <p class=\"overview__body\">\r\n {{ $t(\"general.buildForBusiness\") }}\r\n </p>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nlet closeDrawerTimeout = null;\r\nexport default {\r\n data() {\r\n return {\r\n isDropdownOpen: false,\r\n };\r\n },\r\n methods: {\r\n unhovered() {\r\n if (closeDrawerTimeout) {\r\n clearTimeout(closeDrawerTimeout);\r\n }\r\n closeDrawerTimeout = setTimeout(() => {\r\n this.isDropdownOpen = false;\r\n }, 2000);\r\n },\r\n hovered() {\r\n if (closeDrawerTimeout) {\r\n clearTimeout(closeDrawerTimeout);\r\n }\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n.overview {\r\n $arrowWidth: 48px;\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n z-index: 10;\r\n @media all and (max-width: 1600px) {\r\n padding-left: 20px;\r\n padding-top: 20px;\r\n }\r\n @media all and (min-width: 1600px) {\r\n padding-left: 60px;\r\n padding-top: 60px;\r\n }\r\n\r\n @include breakpoint(\"mobile\") {\r\n padding-left: 0;\r\n padding-top: 0;\r\n }\r\n @include breakpoint(\"tablet\") {\r\n padding-left: 0;\r\n padding-top: 0;\r\n }\r\n\r\n &__headline {\r\n position: relative;\r\n font-size: 52px;\r\n font-weight: 600;\r\n line-height: 1.2em;\r\n color: $extraDarkGray;\r\n max-width: 425px;\r\n margin-top: 0;\r\n @include breakpoint(\"tablet\") {\r\n font-size: 40px;\r\n max-width: 325px;\r\n margin-block-end: 0.37em;\r\n }\r\n @include breakpoint(\"mobile\") {\r\n font-size: 30px;\r\n max-width: 325px;\r\n }\r\n }\r\n\r\n &__content {\r\n @include breakpoint(\"tablet\") {\r\n padding: 2rem;\r\n margin-top: 2rem;\r\n background: rgba(white, 0.9);\r\n }\r\n @include breakpoint(\"mobile\") {\r\n width: 100vw;\r\n }\r\n }\r\n\r\n &__body {\r\n position: relative;\r\n color: $extraDarkGray;\r\n max-width: 325px;\r\n font-size: 1em;\r\n line-height: 1.5em;\r\n }\r\n\r\n &__dropdown {\r\n display: inline-block;\r\n position: relative;\r\n\r\n z-index: 1;\r\n background-color: transparent;\r\n transition: background-color 0.1s ease-in-out;\r\n\r\n &-current {\r\n display: flex;\r\n cursor: pointer;\r\n\r\n span {\r\n position: relative;\r\n transition: color 0.1s ease-in-out;\r\n &:after {\r\n content: \"\";\r\n position: absolute;\r\n bottom: 0;\r\n left: 0;\r\n height: 3px;\r\n background-color: #3a3a3a;\r\n width: 100%;\r\n opacity: 1;\r\n transition: background-color 0.1s ease-in-out;\r\n }\r\n }\r\n }\r\n\r\n &-arrow {\r\n display: flex;\r\n align-items: center;\r\n padding-top: 6px;\r\n min-width: $arrowWidth;\r\n\r\n svg {\r\n transition: all 0.25s ease-in-out;\r\n transform-origin: center center;\r\n }\r\n }\r\n\r\n &-drawer {\r\n position: absolute;\r\n bottom: 0;\r\n transform: translate(0, 100%);\r\n overflow: hidden;\r\n min-height: 600px;\r\n width: calc(100% - #{$arrowWidth});\r\n pointer-events: none;\r\n touch-action: none;\r\n\r\n &-inner {\r\n transform: translate(0, -101%);\r\n background: #e6e6e6;\r\n // border-top: 2px solid #cccccd;\r\n font-size: 20px;\r\n width: 100%;\r\n padding: 0 12px;\r\n box-sizing: content-box;\r\n transition: transform 0.25s ease-in-out;\r\n }\r\n }\r\n\r\n &-link {\r\n display: block;\r\n font-size: 24px;\r\n line-height: 62px;\r\n cursor: pointer;\r\n text-decoration: none;\r\n color: $extraDarkGray;\r\n max-width: calc(100% - 24px);\r\n transition: color 0.2s ease-in-out;\r\n\r\n &:hover {\r\n color: $blue;\r\n }\r\n }\r\n\r\n &:hover {\r\n .overview__dropdown-current span {\r\n color: #272727;\r\n\r\n &:after {\r\n background-color: #272727;\r\n }\r\n }\r\n\r\n .overview__dropdown-arrow {\r\n color: #272727;\r\n }\r\n }\r\n\r\n &--open {\r\n // background: #e6e6e6;\r\n // transition: background-color 0.25s ease-in-out;\r\n\r\n .overview__dropdown {\r\n &-drawer {\r\n pointer-events: all;\r\n touch-action: auto;\r\n\r\n &-inner {\r\n transform: translate(0, 0);\r\n }\r\n }\r\n }\r\n .overview__dropdown-current span {\r\n color: #272727;\r\n &:after {\r\n background-color: #272727;\r\n }\r\n }\r\n .overview__dropdown-arrow {\r\n color: #272727;\r\n svg {\r\n transform: rotate(-180deg);\r\n }\r\n }\r\n }\r\n }\r\n}\r\n</style>\r\n","import { render } from \"./FamilyExplorerOverview.vue?vue&type=template&id=3ab7a711&scoped=true\"\nimport script from \"./FamilyExplorerOverview.vue?vue&type=script&lang=js\"\nexport * from \"./FamilyExplorerOverview.vue?vue&type=script&lang=js\"\n\nimport \"./FamilyExplorerOverview.vue?vue&type=style&index=0&id=3ab7a711&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-3ab7a711\"]])\n\nexport default __exports__","<template>\r\n <div class=\"detail\" :class=\"[showDetails && 'detail--show', `detail--${currentView}`]\">\r\n <button class=\"detail__back\" @click=\"() => {\r\n $emit('back');\r\n $emit('close-details');\r\n }\r\n \" :aria-label=\"$t('accessibility.home')\" tabindex=\"1\">\r\n <img src=\"@/assets/arrow-left-small.svg\" alt=\"\" />\r\n {{ $t(\"general.menu.home\") }}\r\n </button>\r\n <div class=\"detail__container custom-scrollbar\">\r\n <h1 class=\"detail__headline\">{{ `${$t(title)}` }}</h1>\r\n <p class=\"detail__subhead\" v-if=\"subHead\">{{ $t(subHead) }}</p>\r\n <div class=\"detail__cta-container\">\r\n <a v-if=\"cta\" :href=\"cta\" class=\"detail__cta\" target=\"_blank\"\r\n :aria-label=\"$t('accessibility.learnMore', { device: $t(title) })\">\r\n {{ $t(\"general.learnMore\") }}\r\n ></a>\r\n <button v-if=\"seeItInAction\" class=\"detail__cta detail__cta--see-in-action\"\r\n @click=\"$store.commit('updateIsMenuOpen', true)\" :aria-label=\"$t('general.seeItInAction')\">\r\n {{ $t(\"general.seeItInAction\") }}\r\n >\r\n </button>\r\n </div>\r\n <div class=\"detail__placeholder detail__posture\" v-if=\"placeholders\">\r\n <p class=\"detail__sectionLabel\">\r\n {{ $t(placeholders.header) }}\r\n </p>\r\n <ul class=\"detail__postureList\">\r\n <li class=\"detail__postureItem\" v-for=\"(placeholder, key) in placeholders.values\" :key=\"key\" :class=\"{\r\n 'detail__postureItem--active': placeholders.default === key,\r\n }\">\r\n {{ $t(placeholder) }}\r\n </li>\r\n </ul>\r\n </div>\r\n <nav class=\"detail__posture\" v-if=\"models\">\r\n <p class=\"detail__sectionLabel\">{{ $t(models.header) }}</p>\r\n <ul class=\"detail__postureList\">\r\n <li class=\"detail__postureItem\" v-for=\"(model, key) in models.values\" :key=\"key\" :class=\"{\r\n 'detail__postureItem--active': key === currentModel,\r\n }\">\r\n <button @click=\"() => {\r\n $store.commit('updateFamExpCurrentModel', key);\r\n $emit('update-model', key);\r\n $emit('close-details');\r\n }\r\n \" :aria-label=\"$t(model)\">\r\n {{ $t(model) }}\r\n </button>\r\n </li>\r\n </ul>\r\n </nav>\r\n <nav class=\"detail__posture\" v-if=\"modes\">\r\n <p class=\"detail__sectionLabel\">{{ $t(modes.header) }}</p>\r\n <ul class=\"detail__postureList\">\r\n <li class=\"detail__postureItem\" v-for=\"(mode, key) in modes.values\" :key=\"key\" :class=\"{\r\n 'detail__postureItem--active': key === currentPostureMode,\r\n }\">\r\n <button @click=\"() => {\r\n $store.commit('updateFamExpCurrentPosture', key);\r\n $emit('update-mode', key);\r\n $emit('close-details');\r\n }\r\n \" :aria-label=\"$t(mode)\">\r\n {{ $t(mode) }}\r\n </button>\r\n </li>\r\n </ul>\r\n </nav>\r\n\r\n <div v-if=\"colors\">\r\n <div v-for=\"(colorGroup, index) in colors\" class=\"detail__color\" :key=\"colorGroup._id\">\r\n <p class=\"detail__sectionLabel\" v-html=\"$sanitize($t(colorGroup.header))\" />\r\n <div class=\"detail__colorSwatches\">\r\n <button v-for=\"color in colorGroup.colorValues\" :key=\"color._id\" @click=\"() => {\r\n $emit('update-color', {\r\n colorChanges: color.colorChanges,\r\n meshes: color.meshes,\r\n });\r\n currentColor[index] = color.name;\r\n $emit('close-details');\r\n }\r\n \" :style=\"{\r\n color: color.swatchColor,\r\n border: color.swatchBorder\r\n ? `${color.swatchBorder} 1px solid`\r\n : 'none',\r\n }\" :class=\"{\r\n 'active-swatch': currentColor[index] === color.name,\r\n }\" :aria-label=\"`Change ${$t(colorGroup.header)} to ${$t(color.name)}`\r\n \">\r\n <svg width=\"14\" height=\"10\" viewBox=\"0 0 14 10\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M13.3516 1.35156L5 9.71094L0.648438 5.35156L1.35156 4.64844L5 8.28906L12.6484 0.648438L13.3516 1.35156Z\"\r\n :fill=\"color.checkmarkColor || 'white'\" />\r\n </svg>\r\n </button>\r\n <p class=\"active-swatch__name\">\r\n {{ $t(currentColor[index]) }}\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport { computed, ref, watchEffect } from \"vue\";\r\n// import { useStore } from \"vuex\";\r\nimport { devices } from \"@/modules/familyExplorer/familyExplorer-data\";\r\n\r\nexport default {\r\n props: {\r\n currentView: {\r\n type: String,\r\n required: true,\r\n },\r\n currentPostureMode: {\r\n type: String,\r\n required: true,\r\n },\r\n currentModel: {\r\n type: String,\r\n default: \"\",\r\n },\r\n showDetails: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n emits: [\r\n \"update-mode\",\r\n \"update-model\",\r\n \"update-color\",\r\n \"close-details\",\r\n \"back\",\r\n ],\r\n setup(props, context) {\r\n // const store = useStore();\r\n const currentColor = ref([]);\r\n\r\n const deviceData = computed(() => {\r\n return devices[props.currentView].sidePanelDetails;\r\n });\r\n\r\n const title = computed(() => {\r\n return deviceData.value ? deviceData.value.title : \"\";\r\n });\r\n const cta = computed(() => {\r\n return deviceData.value ? deviceData.value.cta : \"\";\r\n });\r\n const seeItInAction = computed(() => {\r\n return deviceData.value ? deviceData.value.seeItInAction : false;\r\n });\r\n const subHead = computed(() => {\r\n return deviceData.value ? deviceData.value.subHead : \"\";\r\n });\r\n const modes = computed(() => {\r\n // return deviceData.value && deviceData.value.modes\r\n // ? deviceData.value.modes\r\n // : null;\r\n if (deviceData.value && deviceData.value.modesByModel) {\r\n return deviceData.value.modesByModel[props.currentModel]\r\n ? deviceData.value.modesByModel[props.currentModel]\r\n : null;\r\n } else if (deviceData.value && deviceData.value.modes) {\r\n return deviceData.value.modes;\r\n }\r\n return null;\r\n });\r\n const models = computed(() => {\r\n return deviceData.value && deviceData.value.models\r\n ? deviceData.value.models\r\n : null;\r\n });\r\n const placeholders = computed(() => {\r\n return deviceData.value && deviceData.value.placeholders\r\n ? deviceData.value.placeholders\r\n : null;\r\n });\r\n const colors = computed(() => {\r\n if (deviceData.value && deviceData.value.colorsByModel) {\r\n return deviceData.value.colorsByModel[props.currentModel];\r\n } else if (deviceData.value && deviceData.value.colorsByPosture) {\r\n return deviceData.value.colorsByPosture[props.currentPostureMode];\r\n } else if (deviceData.value && deviceData.value.colors) {\r\n return deviceData.value.colors;\r\n }\r\n return null;\r\n });\r\n\r\n // watchEffect(() => {\r\n // if (\r\n // props.currentView !== \"Hubs_prev\" &&\r\n // deviceData.value &&\r\n // deviceData.value.modes\r\n // // (deviceData.value.modes || deviceData.value.modesByModel)\r\n // ) {\r\n // store.commit(\"updateFamExpCurrentPosture\", modes.value.default);\r\n // }\r\n // });\r\n\r\n watchEffect(() => {\r\n currentColor.value = [];\r\n if (deviceData.value && colors.value) {\r\n // Set each default color as default & update scene with default color on meshes\r\n colors.value.forEach(colorGroup => {\r\n if (\r\n colorGroup.default &&\r\n colorGroup.colorValues &&\r\n colorGroup.colorValues[colorGroup.default].colorChanges\r\n ) {\r\n currentColor.value.push(\r\n colorGroup.colorValues[colorGroup.default].name\r\n );\r\n context.emit(\"update-color\", {\r\n colorChanges:\r\n colorGroup.colorValues[colorGroup.default].colorChanges,\r\n meshes: colorGroup.colorValues[colorGroup.default].meshes,\r\n });\r\n }\r\n });\r\n }\r\n });\r\n\r\n return {\r\n props,\r\n title,\r\n cta,\r\n seeItInAction,\r\n modes,\r\n models,\r\n placeholders,\r\n colors,\r\n currentColor,\r\n subHead,\r\n };\r\n },\r\n};\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n.detail {\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n z-index: 20;\r\n height: 100vh;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: flex-start;\r\n pointer-events: none;\r\n touch-action: none;\r\n transform: translateZ(0);\r\n will-change: transform;\r\n pointer-events: all;\r\n touch-action: auto;\r\n\r\n @include backgroundBlur(#fff, 0.975, 0.5, 4px);\r\n\r\n @include breakpoint(\"tablet\") {\r\n height: 98vh;\r\n }\r\n\r\n &__back {\r\n pointer-events: all;\r\n touch-action: auto;\r\n appearance: none;\r\n border: none;\r\n background: none;\r\n font-size: 16px;\r\n font-family: \"Segoe UI\", Arial, sans-serif;\r\n color: $extraDarkGray;\r\n cursor: pointer;\r\n margin: $absoluteOuterPadding $absoluteOuterPadding 50px;\r\n\r\n img {\r\n transition: all 0.25s ease-in-out;\r\n width: 17px;\r\n height: 12px;\r\n }\r\n\r\n &:hover img,\r\n &:focus img {\r\n transform: translateX(-3px);\r\n }\r\n }\r\n\r\n &__container {\r\n display: flex;\r\n align-items: flex-start;\r\n flex-flow: column;\r\n max-height: calc(100% - clamp(20px, 50vw, 204px));\r\n overflow: auto;\r\n pointer-events: all;\r\n touch-action: auto;\r\n padding: 0 $absoluteOuterPadding;\r\n\r\n @media all and (min-width: 1024px) and (max-height: 775px) {\r\n margin-bottom: 77px;\r\n }\r\n }\r\n\r\n @include breakpoint(\"mobile\") {\r\n display: none;\r\n\r\n &--show {\r\n display: flex;\r\n }\r\n }\r\n\r\n @include breakpoint(\"tablet\") {\r\n display: none;\r\n\r\n &--show {\r\n display: flex;\r\n }\r\n }\r\n\r\n &__headline {\r\n font-size: 36px;\r\n font-weight: 600;\r\n line-height: 1;\r\n color: $extraDarkGray;\r\n margin-top: 0;\r\n margin-bottom: 16px;\r\n max-width: 300px;\r\n }\r\n\r\n &__subhead {\r\n color: $extraDarkGray;\r\n margin: 0 0 1em 0;\r\n font-weight: 400;\r\n // font-style: italic;\r\n }\r\n\r\n &__cta-container {\r\n margin: 0 0 34px;\r\n display: flex;\r\n align-items: flex-start;\r\n flex-flow: column;\r\n }\r\n\r\n &__cta {\r\n position: relative;\r\n pointer-events: all;\r\n touch-action: auto;\r\n margin: 0 0 2px;\r\n cursor: pointer;\r\n color: $blue;\r\n display: inline-block;\r\n align-items: center;\r\n text-decoration: none;\r\n background: none;\r\n\r\n &:after {\r\n content: \"\";\r\n position: absolute;\r\n width: 100%;\r\n transform: scaleX(0);\r\n height: 2px;\r\n bottom: 0;\r\n left: 0;\r\n background-color: $blue;\r\n transform-origin: bottom right;\r\n transition: transform 0.25s ease-out;\r\n }\r\n\r\n &--active,\r\n &:hover {\r\n &:after {\r\n transform: scaleX(1);\r\n transform-origin: bottom left;\r\n }\r\n }\r\n\r\n &--see-in-action {\r\n margin: 0;\r\n padding: 0;\r\n border: none;\r\n line-height: 22px;\r\n }\r\n }\r\n\r\n &__sectionLabel {\r\n @include text(bodyBold);\r\n color: $extraDarkGray;\r\n padding-bottom: 8px;\r\n }\r\n\r\n &__posture {\r\n padding-bottom: 20px;\r\n\r\n &List {\r\n padding: 0;\r\n }\r\n\r\n &Item {\r\n position: relative;\r\n pointer-events: all;\r\n touch-action: auto;\r\n margin: 0 0 15px 0;\r\n cursor: pointer;\r\n list-style: none;\r\n transition: all 0.25s ease;\r\n color: $logoGray;\r\n\r\n button {\r\n background: transparent;\r\n border: none;\r\n padding: 0;\r\n color: inherit;\r\n @include text(body);\r\n line-height: 1;\r\n text-align: left;\r\n display: inline-block;\r\n position: relative;\r\n cursor: pointer;\r\n\r\n &:after {\r\n content: \"\";\r\n height: 1px;\r\n width: 100%;\r\n position: absolute;\r\n left: 0;\r\n bottom: -4px;\r\n background: $logoGray;\r\n transform: scaleX(0);\r\n transform-origin: left center;\r\n transition: all 0.25s ease;\r\n }\r\n }\r\n\r\n &--active,\r\n &:hover {\r\n color: $extraDarkGray;\r\n\r\n button:after {\r\n background-color: $extraDarkGray;\r\n transform: scaleX(1);\r\n }\r\n }\r\n\r\n &:last-child {\r\n margin-bottom: 0;\r\n }\r\n }\r\n }\r\n\r\n &__placeholder {\r\n .detail__postureItem {\r\n pointer-events: none;\r\n touch-action: none;\r\n color: #b9b9b9;\r\n\r\n &--active {\r\n pointer-events: all;\r\n touch-action: auto;\r\n color: #4a4a4a;\r\n max-width: 96px;\r\n white-space: nowrap;\r\n }\r\n }\r\n }\r\n\r\n &__color {\r\n padding-bottom: 20px;\r\n\r\n &Swatches {\r\n >button {\r\n position: relative;\r\n pointer-events: all;\r\n touch-action: auto;\r\n border-radius: 100%;\r\n width: 38px;\r\n height: 38px;\r\n box-sizing: border-box;\r\n display: inline-flex;\r\n justify-content: center;\r\n align-items: center;\r\n margin: 0px 4px;\r\n cursor: pointer;\r\n padding: 0;\r\n background: transparent;\r\n border: none;\r\n\r\n svg {\r\n opacity: 0;\r\n position: absolute;\r\n top: 50%;\r\n left: 50%;\r\n width: 20px;\r\n transform: translate(-48%, -52%);\r\n transition: opacity 0.15s ease;\r\n }\r\n\r\n &.active-swatch,\r\n &:focus {\r\n border: 1px solid #000000;\r\n }\r\n\r\n &.active-swatch {\r\n svg {\r\n opacity: 1;\r\n }\r\n }\r\n\r\n &:first-child {\r\n margin: 0 4px 0 0;\r\n }\r\n\r\n &:last-child {\r\n margin: 0 0 0 4px;\r\n }\r\n\r\n &:after {\r\n content: \"\";\r\n width: 32px;\r\n height: 32px;\r\n background-color: currentColor;\r\n border-radius: 100%;\r\n }\r\n }\r\n }\r\n\r\n .active-swatch__name {\r\n display: block;\r\n white-space: nowrap;\r\n margin: 0 0;\r\n padding-top: 5px;\r\n color: $extraDarkGray;\r\n font-size: 14px;\r\n }\r\n }\r\n\r\n &--Big_Rock {\r\n .detail__headline {\r\n max-width: 270px;\r\n }\r\n }\r\n\r\n &--Toba {\r\n .detail__headline {\r\n max-width: 260px;\r\n }\r\n }\r\n}\r\n</style>\r\n","import { render } from \"./FamilyExplorerDetail.vue?vue&type=template&id=fdfaa9fa&scoped=true\"\nimport script from \"./FamilyExplorerDetail.vue?vue&type=script&lang=js\"\nexport * from \"./FamilyExplorerDetail.vue?vue&type=script&lang=js\"\n\nimport \"./FamilyExplorerDetail.vue?vue&type=style&index=0&id=fdfaa9fa&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-fdfaa9fa\"]])\n\nexport default __exports__","<template>\r\n <div class=\"breadcrumbs\" :class=\"showExplorer && 'breadcrumbs--show'\">\r\n <div class=\"breadcrumbsContainer\">\r\n <div v-for=\"(tooltip, key) in tooltipData\" :key=\"tooltip._id\">\r\n <button\r\n v-if=\"\r\n tooltip.type !== 'actionDot' &&\r\n $store.state.meshOverlay.items[key] &&\r\n tooltip?.hideForPostures?.includes(\r\n $store.state.famExpCurrentPosture\r\n ) !== true\r\n \"\r\n class=\"breadcrumbs__item\"\r\n :class=\"{\r\n 'breadcrumbs__item--complete': $store.state.famExpBreadcrumbs.includes(\r\n key\r\n ),\r\n }\"\r\n @click=\"breadcrumbClick(tooltip, key)\"\r\n :aria-label=\"$t(tooltip.data.title || tooltip.data.text)\"\r\n >\r\n <img\r\n src=\"@/assets/checkmark.svg\"\r\n class=\"breadcrumbs__checkmark\"\r\n :class=\"{\r\n 'breadcrumbs__checkmark--active':\r\n $store.state.famExpBreadcrumbs.includes(key) ||\r\n (tooltip.duplicateTooltipId &&\r\n $store.state.famExpBreadcrumbs.includes(\r\n tooltip.duplicateTooltipId\r\n )),\r\n }\"\r\n alt=\"\"\r\n />\r\n <p v-html=\"$t(tooltip.data.title || tooltip.data.text)\" />\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport { computed, watch } from \"vue\";\r\nimport { useStore } from \"vuex\";\r\nimport { devices } from \"./familyExplorer-data\";\r\nimport { useI18n } from \"vue-i18n\";\r\n\r\nexport default {\r\n props: {\r\n currentView: {\r\n type: String,\r\n required: true,\r\n },\r\n showExplorer: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n emits: [\"animate-camera-to-tooltip\", \"close-explorer\"],\r\n setup(props, { emit }) {\r\n const store = useStore();\r\n const { t } = useI18n();\r\n\r\n const tooltipData = computed(() => {\r\n if (devices[props.currentView]) {\r\n let tooltips = [];\r\n let returnObj = {};\r\n let obj = devices[props.currentView].tooltips;\r\n\r\n // loop tooltip object, store the key in the object and add to array\r\n Object.entries(obj).forEach(entry => {\r\n const [key, value] = entry;\r\n value.key = key;\r\n tooltips.push(value);\r\n });\r\n\r\n // sort the array by the tooltip title\r\n tooltips = tooltips.sort(function(a, b) {\r\n let textA = a.data.title\r\n ? t(a.data.title).toUpperCase()\r\n : a.data.text\r\n ? t(a.data.text).toUpperCase()\r\n : \"\";\r\n let textB = b.data.title\r\n ? t(b.data.title).toUpperCase()\r\n : b.data.text\r\n ? t(b.data.text).toUpperCase()\r\n : \"\";\r\n\r\n return textA < textB ? -1 : textA > textB ? 1 : 0;\r\n });\r\n\r\n // loop the sorted array and convert it back to an object using the stored key\r\n tooltips.forEach(tooltip => {\r\n returnObj[tooltip.key] = tooltip;\r\n });\r\n\r\n return returnObj;\r\n }\r\n return {};\r\n });\r\n\r\n watch(\r\n () => props.currentView,\r\n () => {\r\n store.commit(\"resetFamExpBreadcrumbs\");\r\n }\r\n );\r\n\r\n const breadcrumbClick = (tooltip, key) => {\r\n emit(\"close-explorer\");\r\n if (tooltip?.cameraData?.byMode?.[store.state.famExpCurrentPosture]) {\r\n emit(\"animate-camera-to-tooltip\", {\r\n tooltipId: key,\r\n ...tooltip.cameraData.byMode[store.state.famExpCurrentPosture],\r\n });\r\n } else if (\r\n tooltip?.cameraData?.byMode?.[store.state.famExpCurrentModel]\r\n ) {\r\n emit(\"animate-camera-to-tooltip\", {\r\n tooltipId: key,\r\n ...tooltip.cameraData.byMode[store.state.famExpCurrentModel],\r\n });\r\n } else if (tooltip?.cameraData) {\r\n emit(\"animate-camera-to-tooltip\", {\r\n tooltipId: key,\r\n ...tooltip.cameraData,\r\n });\r\n }\r\n };\r\n\r\n return { store, tooltipData, t, breadcrumbClick };\r\n },\r\n};\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n.breadcrumbsContainer {\r\n @include breakpoint(\"tablet\") {\r\n overflow: auto !important;\r\n max-height: 72vh !important;\r\n }\r\n @include breakpoint(\"mobile\") {\r\n overflow: auto !important;\r\n max-height: 72vh !important;\r\n }\r\n\r\n\r\n @media all and (min-height: 500px) and (max-height: 675px) {\r\n max-height: 60vh;\r\n overflow-y: auto;\r\n padding-left: 26px;\r\n padding-right: 8px;\r\n }\r\n}\r\n.breadcrumbs {\r\n position: absolute;\r\n right: 0;\r\n top: 0;\r\n height: 100vh;\r\n display: flex;\r\n align-items: center;\r\n padding-right: $absoluteOuterPadding;\r\n\r\n\r\n @media all and (min-height: 500px) and (max-height: 675px) {\r\n max-height: 90vh;\r\n }\r\n\r\n @include breakpoint(\"tablet\") {\r\n height: 98vh;\r\n padding-left: 5%;\r\n z-index: 100;\r\n background: rgba(255, 255, 255, 0.8);\r\n display: none;\r\n &--show {\r\n display: flex;\r\n }\r\n }\r\n\r\n @include breakpoint(\"mobile\") {\r\n display: none;\r\n &--show {\r\n display: flex;\r\n }\r\n }\r\n\r\n &__item {\r\n position: relative;\r\n @include text(body);\r\n color: $logoGray;\r\n margin-bottom: 8px;\r\n cursor: pointer;\r\n transition: all 0.25s ease-in-out;\r\n padding: 0;\r\n background: transparent;\r\n border: none;\r\n\r\n &--complete {\r\n color: $extraDarkGray;\r\n }\r\n &:hover {\r\n color: $extraDarkGray;\r\n }\r\n &:active,\r\n &:focus {\r\n color: $extraDarkGray;\r\n }\r\n\r\n &:focus-visible {\r\n outline: none;\r\n\r\n p {\r\n outline: -webkit-focus-ring-color auto 1px;\r\n outline-offset: 2px;\r\n }\r\n }\r\n\r\n sup {\r\n display: none;\r\n }\r\n }\r\n\r\n &__checkmark {\r\n pointer-events: none;\r\n touch-action: none;\r\n opacity: 0;\r\n transition: opacity 0.25s ease-in-out;\r\n position: absolute;\r\n top: 50%;\r\n left: 0;\r\n transform: translate(calc(-100% - 8px), -50%);\r\n &--active {\r\n opacity: 1;\r\n }\r\n }\r\n}\r\n</style>\r\n","import { render } from \"./FamilyExplorerBreadcrumbs.vue?vue&type=template&id=94e07f32\"\nimport script from \"./FamilyExplorerBreadcrumbs.vue?vue&type=script&lang=js\"\nexport * from \"./FamilyExplorerBreadcrumbs.vue?vue&type=script&lang=js\"\n\nimport \"./FamilyExplorerBreadcrumbs.vue?vue&type=style&index=0&id=94e07f32&lang=scss\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\r\n <FocusTrap :active=\"modalIsOpen\" :initial-focus=\"() => $refs.closeBtn\">\r\n <div\r\n class=\"compatibility\"\r\n :class=\"{ 'compatibility--active': modalIsOpen }\"\r\n >\r\n <div class=\"button-container\">\r\n <button\r\n v-show=\"copy.length > 0\"\r\n @click=\"toggleModal\"\r\n :tabindex=\"modalIsOpen ? -1 : 0\"\r\n >\r\n {{ $t(\"general.compatibility\") }}\r\n </button>\r\n </div>\r\n <div class=\"compatibility__modal-container\" @click.self=\"toggleModal\">\r\n <div class=\"compatibility__content\">\r\n <button\r\n class=\"compatibility__close\"\r\n @click=\"toggleModal\"\r\n :aria-label=\"$t('general.closeDisclaimers')\"\r\n ref=\"closeBtn\"\r\n :tabindex=\"modalIsOpen ? 0 : -1\"\r\n >\r\n <img src=\"@/assets/close-x.svg\" alt=\"\" />\r\n </button>\r\n <div class=\"compatibility__body\" :tabindex=\"modalIsOpen ? 0 : -1\">\r\n <div v-if=\"copy\">\r\n <div v-for=\"paragraph in copy\" :key=\"paragraph._id\">\r\n <p v-html=\"$t(paragraph)\" />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </FocusTrap>\r\n</template>\r\n\r\n<script>\r\nimport { ref, computed } from \"vue\";\r\nimport { devices } from \"@/modules/familyExplorer/familyExplorer-data\";\r\nimport { FocusTrap } from \"focus-trap-vue\";\r\n\r\nexport default {\r\n components: { FocusTrap },\r\n props: {\r\n currentView: {\r\n type: String,\r\n default: \"\",\r\n },\r\n currentModel: {\r\n type: String,\r\n default: \"\",\r\n },\r\n },\r\n setup(props) {\r\n const modalIsOpen = ref(false);\r\n\r\n const copy = computed(() => {\r\n let returnCopy;\r\n if (\r\n devices[props.currentView] &&\r\n devices[props.currentView].compatibilityByModel &&\r\n props.currentModel &&\r\n devices[props.currentView].compatibilityByModel[props.currentModel]\r\n ) {\r\n returnCopy =\r\n devices[props.currentView].compatibilityByModel[props.currentModel];\r\n } else {\r\n returnCopy =\r\n devices[props.currentView] && devices[props.currentView].compatibility\r\n ? devices[props.currentView].compatibility\r\n : [];\r\n }\r\n return returnCopy;\r\n });\r\n\r\n function toggleModal() {\r\n modalIsOpen.value = !modalIsOpen.value;\r\n }\r\n\r\n return { props, toggleModal, modalIsOpen, copy };\r\n },\r\n};\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n.compatibility {\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n background: rgba(0, 0, 0, 0);\r\n height: 100vh;\r\n width: 100%;\r\n user-select: none;\r\n pointer-events: none;\r\n touch-action: none;\r\n\r\n &__modal-container {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n height: 100vh;\r\n width: 100%;\r\n background: rgba(0, 0, 0, 0);\r\n transition: all 0.25s ease-in-out;\r\n z-index: 100;\r\n }\r\n\r\n &__content {\r\n position: relative;\r\n width: calc(100% - 140px);\r\n max-width: 60%;\r\n max-height: 90%;\r\n background: #e5e5e5;\r\n box-shadow: 0px 4px 44px 4px rgba(0, 0, 0, 0.25);\r\n border-radius: 4px;\r\n padding-top: 3.14%;\r\n box-sizing: border-box;\r\n opacity: 0;\r\n transition: all 0.25s ease-in-out;\r\n display: flex;\r\n flex-direction: column;\r\n\r\n @include breakpoint(\"tablet\") {\r\n max-width: 600px;\r\n }\r\n }\r\n\r\n &__body {\r\n overflow: auto;\r\n padding: 0 6.94% 3.47%; // ~ 0 100px 50px on a 1440px screen;\r\n\r\n p {\r\n padding: 8px 0;\r\n }\r\n }\r\n\r\n &__close {\r\n position: absolute;\r\n top: 25px;\r\n right: 25px;\r\n cursor: pointer;\r\n padding: 4px;\r\n background: transparent;\r\n border: none;\r\n }\r\n\r\n .button-container {\r\n position: absolute;\r\n margin-bottom: 30px;\r\n bottom: $absoluteOuterPadding;\r\n right: $absoluteOuterPadding;\r\n z-index: 0;\r\n\r\n button {\r\n pointer-events: all;\r\n touch-action: auto;\r\n z-index: 0;\r\n border: none;\r\n background: none;\r\n cursor: pointer;\r\n padding: 0;\r\n transition: all 0.25s 0.1s ease-in-out;\r\n color: $logoGray;\r\n font-size: 12px;\r\n\r\n &:after {\r\n content: \"\";\r\n height: 1px;\r\n width: 100%;\r\n position: absolute;\r\n left: 0;\r\n bottom: -4px;\r\n background: currentColor;\r\n transform: scaleX(1);\r\n transform-origin: left center;\r\n transition: all 0.25s ease-out;\r\n }\r\n &:hover {\r\n color: $extraDarkGray;\r\n }\r\n }\r\n }\r\n\r\n &--active {\r\n pointer-events: all;\r\n touch-action: auto;\r\n\r\n .compatibility__modal-container {\r\n background: rgba(0, 0, 0, 0.66);\r\n }\r\n\r\n .compatibility__content {\r\n opacity: 1;\r\n }\r\n\r\n button: {\r\n opacity: 0;\r\n }\r\n }\r\n}\r\n</style>\r\n","import { render } from \"./Compatibility.vue?vue&type=template&id=5f5fe133&scoped=true\"\nimport script from \"./Compatibility.vue?vue&type=script&lang=js\"\nexport * from \"./Compatibility.vue?vue&type=script&lang=js\"\n\nimport \"./Compatibility.vue?vue&type=style&index=0&id=5f5fe133&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-5f5fe133\"]])\n\nexport default __exports__","<template>\r\n <FocusTrap :active=\"modalIsOpen\" :initial-focus=\"() => $refs.closeBtn\">\r\n <div class=\"disclaimer\" :class=\"{ 'disclaimer--active': modalIsOpen }\">\r\n <div class=\"button-container\">\r\n <div\r\n v-if=\"extraDisclaimer\"\r\n class=\"disclaimer__extra-disclaimer\"\r\n v-html=\"$t(extraDisclaimer)\"\r\n />\r\n <button\r\n v-show=\"copy.length > 0\"\r\n @click=\"toggleModal\"\r\n :tabindex=\"modalIsOpen ? -1 : 0\"\r\n >\r\n {{ $t(\"general.disclaimers\") }}\r\n </button>\r\n </div>\r\n <div class=\"disclaimer__modal-container\" @click.self=\"toggleModal\">\r\n <div class=\"disclaimer__content\">\r\n <button\r\n class=\"disclaimer__close\"\r\n @click=\"toggleModal\"\r\n :aria-label=\"$t('general.closeDisclaimers')\"\r\n ref=\"closeBtn\"\r\n :tabindex=\"modalIsOpen ? 0 : -1\"\r\n >\r\n <img src=\"@/assets/close-x.svg\" alt=\"\" />\r\n </button>\r\n <div\r\n v-show=\"modalIsOpen\"\r\n class=\"disclaimer__body\"\r\n :tabindex=\"modalIsOpen ? 0 : -1\"\r\n >\r\n <div v-if=\"copy\">\r\n <div v-for=\"paragraph in copy\" :key=\"paragraph._id\">\r\n <p v-html=\"$t(paragraph)\" />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </FocusTrap>\r\n</template>\r\n\r\n<script>\r\nimport { ref, computed } from \"vue\";\r\nimport { devices } from \"@/modules/familyExplorer/familyExplorer-data\";\r\nimport { FocusTrap } from \"focus-trap-vue\";\r\n\r\nexport default {\r\n components: { FocusTrap },\r\n props: {\r\n currentView: {\r\n type: String,\r\n default: \"\",\r\n },\r\n currentModel: {\r\n type: String,\r\n default: \"\",\r\n },\r\n },\r\n setup(props) {\r\n const modalIsOpen = ref(false);\r\n\r\n const copy = computed(() => {\r\n let returnCopy;\r\n if (\r\n devices[props.currentView] &&\r\n devices[props.currentView].disclaimerByModel &&\r\n props.currentModel &&\r\n devices[props.currentView].disclaimerByModel[props.currentModel]\r\n ) {\r\n returnCopy =\r\n devices[props.currentView].disclaimerByModel[props.currentModel];\r\n } else {\r\n returnCopy =\r\n devices[props.currentView] && devices[props.currentView].disclaimer\r\n ? devices[props.currentView].disclaimer\r\n : [];\r\n }\r\n return returnCopy;\r\n });\r\n\r\n const extraDisclaimer = computed(() => {\r\n return devices[props.currentView] &&\r\n devices[props.currentView].extraDisclaimer\r\n ? devices[props.currentView].extraDisclaimer\r\n : null;\r\n });\r\n\r\n function toggleModal() {\r\n modalIsOpen.value = !modalIsOpen.value;\r\n }\r\n\r\n return { props, toggleModal, modalIsOpen, copy, extraDisclaimer };\r\n },\r\n};\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n.disclaimer {\r\n position: absolute;\r\n top: -30px;\r\n left: 0;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n background: rgba(0, 0, 0, 0);\r\n height: 100vh;\r\n width: 100%;\r\n user-select: none;\r\n pointer-events: none;\r\n touch-action: none;\r\n\r\n &__modal-container {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n height: 100vh;\r\n width: 100%;\r\n background: rgba(0, 0, 0, 0);\r\n transition: all 0.25s ease-in-out;\r\n z-index: 100;\r\n }\r\n\r\n &__content {\r\n position: relative;\r\n width: calc(100% - 140px);\r\n max-width: 60%;\r\n max-height: 90%;\r\n background: #e5e5e5;\r\n box-shadow: 0px 4px 44px 4px rgba(0, 0, 0, 0.25);\r\n border-radius: 4px;\r\n padding-top: 3.14%;\r\n box-sizing: border-box;\r\n opacity: 0;\r\n transition: all 0.25s ease-in-out;\r\n display: flex;\r\n flex-direction: column;\r\n\r\n @include breakpoint(\"tablet\") {\r\n max-width: 600px;\r\n }\r\n }\r\n\r\n &__body {\r\n overflow: auto;\r\n padding: 0 6.94% 3.47%; // ~ 0 100px 50px on a 1440px screen;\r\n\r\n p {\r\n padding: 8px 0;\r\n }\r\n }\r\n\r\n &__close {\r\n position: absolute;\r\n top: 25px;\r\n right: 25px;\r\n cursor: pointer;\r\n padding: 4px;\r\n background: transparent;\r\n border: none;\r\n }\r\n\r\n .button-container {\r\n position: absolute;\r\n bottom: clamp(10px, 1.805vw, 25px);\r\n @include breakpoint(\"tablet\") {\r\n bottom: clamp(27px, 2.43vw, 35px);\r\n }\r\n right: $absoluteOuterPadding;\r\n z-index: 0;\r\n\r\n button {\r\n pointer-events: all;\r\n touch-action: auto;\r\n z-index: 0;\r\n border: none;\r\n background: none;\r\n cursor: pointer;\r\n padding: 0;\r\n transition: all 0.25s 0.1s ease-in-out;\r\n color: $logoGray;\r\n font-size: 12px;\r\n\r\n &:after {\r\n content: \"\";\r\n height: 1px;\r\n width: 100%;\r\n position: absolute;\r\n left: 0;\r\n bottom: -4px;\r\n background: currentColor;\r\n transform: scaleX(1);\r\n transform-origin: left center;\r\n transition: all 0.25s ease-out;\r\n }\r\n &:hover {\r\n color: $extraDarkGray;\r\n }\r\n }\r\n }\r\n\r\n &__extra-disclaimer {\r\n position: absolute;\r\n right: 0;\r\n top: 0;\r\n transform: translateY(-100%);\r\n text-align: right;\r\n width: 100vw;\r\n max-width: 350px;\r\n font-size: 12px;\r\n color: $extraDarkGray;\r\n }\r\n\r\n &--active {\r\n pointer-events: all;\r\n touch-action: auto;\r\n\r\n .disclaimer__modal-container {\r\n background: rgba(0, 0, 0, 0.66);\r\n }\r\n\r\n .disclaimer__content {\r\n opacity: 1;\r\n }\r\n\r\n button: {\r\n opacity: 0;\r\n }\r\n }\r\n}\r\n</style>\r\n","import { render } from \"./Disclaimer.vue?vue&type=template&id=0186f1fe&scoped=true\"\nimport script from \"./Disclaimer.vue?vue&type=script&lang=js\"\nexport * from \"./Disclaimer.vue?vue&type=script&lang=js\"\n\nimport \"./Disclaimer.vue?vue&type=style&index=0&id=0186f1fe&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-0186f1fe\"]])\n\nexport default __exports__","<template>\r\n <div class=\"family-explorer-ui\">\r\n <MeshOverlayContainer isFamilyExplorer :on-click=\"handleClick\" />\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport MeshOverlayContainer from \"@/components/common/MeshOverlayContainer\";\r\nimport { useStore } from \"vuex\";\r\n\r\nexport default {\r\n components: {\r\n MeshOverlayContainer,\r\n },\r\n setup() {\r\n const store = useStore();\r\n const handleClick = e => {\r\n if (e.type === \"magnify\") {\r\n store.dispatch(\"updateCurrentTooltip\", e.id);\r\n }\r\n };\r\n\r\n return { handleClick };\r\n },\r\n};\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n.family-explorer-ui {\r\n position: absolute;\r\n width: 100vw;\r\n height: 100vh;\r\n top: 0;\r\n left: 0;\r\n z-index: 11;\r\n pointer-events: none;\r\n touch-action: none;\r\n\r\n &__colorChange {\r\n position: absolute;\r\n bottom: 50px;\r\n left: 0;\r\n width: 100vw;\r\n display: flex;\r\n justify-content: center;\r\n }\r\n\r\n &__color {\r\n pointer-events: all;\r\n touch-action: auto;\r\n appearance: none;\r\n border: none;\r\n margin: 0 25px;\r\n background: none;\r\n cursor: pointer;\r\n outline: none;\r\n font-size: 16px;\r\n font-family: \"Segoe UI\", Arial, sans-serif;\r\n }\r\n\r\n .tooltip__title,\r\n .buttonMagnifyOverlay__description,\r\n .buttonCircularOverlay__description {\r\n display: none !important;\r\n }\r\n}\r\n</style>\r\n","import { render } from \"./FamilyExplorer_UI.vue?vue&type=template&id=2dc03648\"\nimport script from \"./FamilyExplorer_UI.vue?vue&type=script&lang=js\"\nexport * from \"./FamilyExplorer_UI.vue?vue&type=script&lang=js\"\n\nimport \"./FamilyExplorer_UI.vue?vue&type=style&index=0&id=2dc03648&lang=scss\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\r\n <div v-if=\"$store.state.showDev\" class=\"dev\">\r\n <button @click=\"$emit('log-cam')\">\r\n LOG CAMERA\r\n </button>\r\n CamDeg: {{ $store.state.camDeg }}° | CamBeta: {{ $store.state.camBeta }}\r\n <button @click=\"$store.commit('updateShowDev', false)\">\r\n <img src=\"@/assets/close-x.svg\" />\r\n </button>\r\n </div>\r\n</template>\r\n\r\n<style lang=\"scss\" scoped>\r\n.dev {\r\n position: fixed;\r\n z-index: 50;\r\n top: 0;\r\n left: 50%;\r\n transform: translateX(-50%);\r\n background: rgba(255, 255, 255, 0.4);\r\n padding: 12px;\r\n > * {\r\n margin: 0 8px;\r\n }\r\n\r\n button:nth-of-type(2) {\r\n position: relative;\r\n border-radius: 100%;\r\n background: rgba(0, 0, 0, 0.2);\r\n border: none;\r\n width: 16px;\r\n height: 16px;\r\n margin-top: -8px;\r\n transform: translateY(-4px);\r\n img {\r\n width: 60%;\r\n position: absolute;\r\n top: 50%;\r\n left: 50%;\r\n transform: translate(-50%, -50%);\r\n }\r\n }\r\n}\r\n</style>\r\n","import { render } from \"./FamilyExplorerDev.vue?vue&type=template&id=7c5e9ea0&scoped=true\"\nconst script = {}\n\nimport \"./FamilyExplorerDev.vue?vue&type=style&index=0&id=7c5e9ea0&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-7c5e9ea0\"]])\n\nexport default __exports__","<template>\r\n <div class=\"Details-nav\" v-if=\"$route.name !== 'Explore Surface'\">\r\n <button @click=\"$emit('open-details')\">\r\n <span>{{ $t(\"general.mobileMenu.details\") }}</span>\r\n </button>\r\n <button @click=\"$emit('open-explorer')\">\r\n <span>{{ $t(\"general.mobileMenu.explorer\") }}</span>\r\n </button>\r\n </div>\r\n</template>\r\n<script>\r\nexport default {\r\n emits: [\"open-details\", \"open-explorer\"],\r\n};\r\n</script>\r\n<style lang=\"scss\" scoped>\r\n.Details-nav {\r\n position: absolute;\r\n z-index: 21;\r\n top: clamp(20px, 2.43vw, 35px);\r\n left: clamp(20px, 2.43vw, 35px);\r\n display: none;\r\n button {\r\n background: none;\r\n border: none;\r\n margin: 0.5rem 1.2rem;\r\n color: $extraDarkGray;\r\n font-size: 12px;\r\n cursor: pointer;\r\n\r\n &:hover {\r\n color: $extraDarkGray;\r\n }\r\n span {\r\n border-bottom: 1px solid $navGrey;\r\n height: 26px;\r\n display: flex;\r\n align-items: center;\r\n }\r\n }\r\n @include breakpoint(\"mobile\") {\r\n display: block;\r\n }\r\n @include breakpoint(\"tablet\") {\r\n display: block;\r\n }\r\n}\r\n</style>\r\n","import { render } from \"./MobileDetailsNav.vue?vue&type=template&id=2fe5c534&scoped=true\"\nimport script from \"./MobileDetailsNav.vue?vue&type=script&lang=js\"\nexport * from \"./MobileDetailsNav.vue?vue&type=script&lang=js\"\n\nimport \"./MobileDetailsNav.vue?vue&type=style&index=0&id=2fe5c534&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-2fe5c534\"]])\n\nexport default __exports__","<template>\r\n <div\r\n class=\"xray-modal\"\r\n @click.self=\"$emit('close-modal')\"\r\n :class=\"{ 'xray-modal--larger': props.isLargeXray }\"\r\n tabindex=\"0\"\r\n >\r\n <FocusTrap :escapeDeactivates=\"false\">\r\n <div>\r\n <button\r\n class=\"xray-modal__close\"\r\n @click=\"$emit('close-modal')\"\r\n :aria-label=\"$t('accessibility.closeModal')\"\r\n tabindex=\"0\"\r\n >\r\n <img src=\"@/assets/close-x.svg\" alt=\"\" />\r\n </button>\r\n\r\n <div class=\"xray-modal__sidebar\" tabindex=\"0\">\r\n <div\r\n v-if=\"imgUrl\"\r\n class=\"xray-modal__sidebarTop\"\r\n style=\"--aspect-ratio: 1.5;\"\r\n >\r\n <img :src=\"imgUrl\" alt=\"\" />\r\n </div>\r\n <div v-if=\"videoUrl\" class=\"xray-modal__sidebarTop\">\r\n <video\r\n style=\"width: 100%; height: 100%;\"\r\n width=\"1280\"\r\n height=\"720\"\r\n autoplay\r\n muted\r\n loop\r\n >\r\n <source :src=\"videoUrl\" type=\"video/mp4\" />\r\n Your browser does not support the video tag.\r\n </video>\r\n </div>\r\n <div class=\"xray-modal__sidebarBottom\">\r\n <h2 v-html=\"$t(title)\" />\r\n <div class=\"xray-modal__sidebarBottomScroll\">\r\n <div v-if=\"body && Array.isArray(body)\">\r\n <div v-for=\"row in body\" :key=\"row._id\">\r\n <div class=\"xray-modal__row\">\r\n <div v-if=\"row.img\">\r\n <img\r\n :src=\"row.img.src\"\r\n :alt=\"row.img.alt\"\r\n class=\"xray-modal__row-img\"\r\n />\r\n </div>\r\n <div v-if=\"row.details\" class=\"xray-modal__row-details\">\r\n <h3\r\n style=\"margin: 0px 0px 12px 0px\"\r\n v-html=\"$sanitize($t(row.details.title))\"\r\n />\r\n <div\r\n v-if=\"row.details.bodyText\"\r\n class=\"xray-modal__row-details\"\r\n v-html=\"$sanitize($t(row.details.bodyText))\"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div v-else-if=\"body\" v-html=\"$sanitize($t(body))\" />\r\n <div\r\n v-if=\"disclaimer\"\r\n class=\"xray-modal__disclaimer\"\r\n v-html=\"$sanitize($t(disclaimer))\"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </FocusTrap>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport { computed } from \"vue\";\r\nimport { devices } from \"./familyExplorer-data\";\r\nimport { FocusTrap } from \"focus-trap-vue\";\r\n\r\nexport default {\r\n components: { FocusTrap },\r\n props: {\r\n currentView: {\r\n type: String,\r\n required: true,\r\n },\r\n modalId: {\r\n type: String,\r\n default: \"\",\r\n },\r\n isLargeXray: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n emits: [\"close-modal\"],\r\n setup(props) {\r\n const title = computed(() => {\r\n return props.modalId &&\r\n devices[props.currentView] &&\r\n devices[props.currentView].tooltips[props.modalId] &&\r\n devices[props.currentView].tooltips[props.modalId].xray\r\n ? devices[props.currentView].tooltips[props.modalId].xray.title\r\n : \"\";\r\n });\r\n\r\n const body = computed(() => {\r\n return props.modalId &&\r\n devices[props.currentView] &&\r\n devices[props.currentView].tooltips[props.modalId] &&\r\n devices[props.currentView].tooltips[props.modalId].xray\r\n ? devices[props.currentView].tooltips[props.modalId].xray.body\r\n : \"\";\r\n });\r\n\r\n const imgUrl = computed(() => {\r\n return props.modalId &&\r\n devices[props.currentView] &&\r\n devices[props.currentView].tooltips[props.modalId] &&\r\n devices[props.currentView].tooltips[props.modalId].xray\r\n ? devices[props.currentView].tooltips[props.modalId].xray.img\r\n : \"\";\r\n });\r\n\r\n const videoUrl = computed(() => {\r\n return props.modalId &&\r\n devices[props.currentView] &&\r\n devices[props.currentView].tooltips[props.modalId] &&\r\n devices[props.currentView].tooltips[props.modalId].xray\r\n ? devices[props.currentView].tooltips[props.modalId].xray.video\r\n : \"\";\r\n });\r\n\r\n const disclaimer = computed(() => {\r\n return props.modalId &&\r\n devices[props.currentView] &&\r\n devices[props.currentView].tooltips[props.modalId] &&\r\n devices[props.currentView].tooltips[props.modalId].xray &&\r\n devices[props.currentView].tooltips[props.modalId].xray.disclaimer\r\n ? devices[props.currentView].tooltips[props.modalId].xray.disclaimer\r\n : \"\";\r\n });\r\n\r\n return {\r\n props,\r\n title,\r\n body,\r\n imgUrl,\r\n videoUrl,\r\n disclaimer,\r\n };\r\n },\r\n};\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n.xray-modal {\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n width: 100vw;\r\n height: 100vh;\r\n z-index: 1000;\r\n display: flex;\r\n justify-content: flex-end;\r\n\r\n &__close {\r\n position: absolute;\r\n top: 25px;\r\n right: 25px;\r\n cursor: pointer;\r\n // backdrop-filter: $backdropBlur;\r\n background-color: $backgroundColorBlur;\r\n padding: 11px 11px 7px 11px;\r\n border-radius: 100%;\r\n transition: all 300ms ease-in-out;\r\n transform: scale3d(1, 1, 1);\r\n z-index: 1;\r\n border: none;\r\n\r\n img {\r\n position: relative;\r\n transition: all 300ms ease-in-out;\r\n transform: scale3d(1, 1, 1);\r\n }\r\n\r\n &:hover {\r\n background-color: $backgroundColorBlurIntense;\r\n transform: scale3d(1.1, 1.1, 1.1);\r\n img {\r\n transform: scale3d(1.1, 1.1, 1.1);\r\n }\r\n }\r\n }\r\n\r\n &__sidebar {\r\n box-shadow: 0px 0px 20px rgba($darkGray, 0.25);\r\n background: #fff;\r\n width: clamp(375px, 28vw, 650px);\r\n height: 100vh;\r\n overflow-y: auto;\r\n\r\n h2 {\r\n @include text(h25);\r\n margin: 0;\r\n padding: 40px 40px 0;\r\n }\r\n &Top {\r\n width: 100%;\r\n background: #656565;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n\r\n img {\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n }\r\n }\r\n &Bottom {\r\n display: flex;\r\n flex-direction: column;\r\n\r\n h2 {\r\n color: $extraDarkGray;\r\n }\r\n\r\n &Scroll {\r\n flex: 1;\r\n padding: 0 40px 40px;\r\n overflow: auto;\r\n\r\n :deep(p) {\r\n padding: 0.5em 0em;\r\n color: $extraDarkGray;\r\n }\r\n\r\n :deep(ul) {\r\n padding-top: 8px;\r\n list-style: none !important;\r\n padding-left: 0 !important;\r\n margin-left: 0 !important;\r\n }\r\n\r\n :deep(li) {\r\n padding-top: 0;\r\n padding-bottom: 6px;\r\n color: $extraDarkGray;\r\n }\r\n }\r\n }\r\n }\r\n\r\n &__row {\r\n display: flex;\r\n align-items: center;\r\n max-width: 100%;\r\n\r\n > * {\r\n &:first-child {\r\n flex-basis: 40%;\r\n margin-right: 4px;\r\n }\r\n &:last-child {\r\n flex-basis: 60%;\r\n margin-left: 4px;\r\n }\r\n }\r\n\r\n &-img {\r\n max-width: 100%;\r\n padding-right: 4px;\r\n }\r\n\r\n // &-details\r\n }\r\n\r\n &__disclaimer {\r\n @include text(body);\r\n margin-top: 40px;\r\n text-align: right;\r\n }\r\n\r\n &--larger {\r\n .xray-modal__sidebar {\r\n width: clamp(500px, 100vw, 900px);\r\n }\r\n }\r\n}\r\n</style>\r\n","import { render } from \"./XrayModal.vue?vue&type=template&id=61e665f0&scoped=true\"\nimport script from \"./XrayModal.vue?vue&type=script&lang=js\"\nexport * from \"./XrayModal.vue?vue&type=script&lang=js\"\n\nimport \"./XrayModal.vue?vue&type=style&index=0&id=61e665f0&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-61e665f0\"]])\n\nexport default __exports__","import { render } from \"./FamilyExplorer.vue?vue&type=template&id=be58b3fc&scoped=true\"\nimport script from \"./FamilyExplorer.vue?vue&type=script&lang=js\"\nexport * from \"./FamilyExplorer.vue?vue&type=script&lang=js\"\n\nimport \"./FamilyExplorer.vue?vue&type=style&index=0&id=be58b3fc&lang=scss\"\nimport \"./FamilyExplorer.vue?vue&type=style&index=1&id=be58b3fc&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-be58b3fc\"]])\n\nexport default __exports__"],"names":["data","scrollElement","meshContainer","pageWidth","iframe","canvas","methods","handleMeshTranslation","val","this","document","getElementById","documentElement","scrollWidth","scroll","emitter","on","handleResize","style","transform","addEventListener","handleScroll","off","removeEventListener","getElementsByClassName","scrollLeft","tickingResize","window","requestAnimationFrame","length","forEach","element","ticking","mounted","store","watch","getters","pageIndex","unmounted","_createElementVNode","class","id","key","_createElementBlock","_normalizeClass","$setup","isLargeXray","_createVNode","_component_LoadingScreen","_hoisted_1","_Transition","name","default","_withCtx","isModalOpen","xrayModal","_createBlock","_component_XrayModal","currentView","onCloseModal","closeModal","_createCommentVNode","_","_component_FamilyExplorerOverview","_component_FamilyExplorerDetail","showDetails","currentPostureMode","currentModel","onBack","_cache","$event","showOverview","onUpdateMode","updateMode","onUpdateModel","updateModel","onUpdateColor","updateColor","onCloseDetails","closeDetails","_ctx","$route","path","showExplorer","_component_MobileDetailsNav","onOpenDetails","openDetails","onOpenExplorer","openExplorer","_hoisted_2","_hoisted_3","_hoisted_4","_Fragment","_renderList","screenReaderMenu","device","_id","$store","state","activeDevices","deviceCode","onClick","ScreenReaderMenuClicked","onFocus","commit","onBlur","$t","_hoisted_5","_component_FamilyExplorerUI","ref","_component_FamilyExplorerBreadcrumbs","onCloseExplorer","closeExplorer","onAnimateCameraToTooltip","animateCameraToTooltip","_component_Compatibility","_component_Disclaimer","_component_FamilyExplorerDev","onLogCam","familyExplorer","logCamera","onCopyCam","globalObject","global","undefined","BABYLON","Debug","keys","push","AxesViewer","BoneAxesViewer","PhysicsViewer","SkeletonViewer","MeshOverlay","constructor","scene","camera","renderW","renderH","loadedMeshes","items","itemsToStore","hardwareScalingLevel","getEngine","getHardwareScalingLevel","item","Object","entries","projectionDeps","position","mesh","find","offset","type","project3Dto2D","update","itemsPosToStore","reset","position3D","getBoundingInfo","boundingBox","centerWorld","add","pos","Vector3","Project","Matrix","Identity","getTransformMatrix","viewport","toGlobal","x","y","displayName","filename","defaultPostureMode","initialCameraTarget","cameraRadius","lowerLimit","upperLimit","tooltips","title","description","ranges","top","cameraData","values","drawerWidth","text","camDegOffset","arrows","left","right","rotate","animations","primary","intro","duration","startFrame","endFrame","modes","thirteen","primaryModeAnim","fromMode","fifteen","draggable","touchpointMesh","referencePoint","z","dragAxis","zDiff","zLimits","lockY","rangesByMode","inMin","inMax","outMin","outMax","isPickableInDegRange","reverseDistance","savePosition","sidePanelDetails","cta","seeItInAction","header","colorsByPosture","colorValues","platinumFabric","swatchColor","colorChanges","materials","color","meshes","show","hide","changeActiveMaterials","meshId","materialId","black","sandstoneMetal","iceBlue","platinumMetal","disclaimer","modelRanges","changeModels","parentNodesToHideDescendants","models","colorsByModel","setEmissiveColor","sage","changeTopBaseOnScreenWidth","changeLeftBaseOnScreenWidth","colors","platinum","additionalFilenames","laptop","studio","tablet","secondary","secondaryModeAnim","startAtPercentage","target","frames","fps","total","poppyRed","ght","graphite","hideForPostures","pro9","pro9_5G","dontChangeTooltips","dontChangeMaterials","meshesToHide","forest","sapphire","cameraBeta","cameraAlpha","fog","start","end","desktop","bottom","yDiff","yLimits","isInModeRange","range","mode","stage","allowRadiusChange","xray","body","img","headphonesCertTeams","subHead","light","direction","intensity","glacier","checkmarkColor","hideMeshes","fifty","eightyFive","portrait","landscape","duplicateTooltipId","camera_50","src","wallMount","alt","details","bodyText","mobileStand50","modularCartridge","connection","battery","camera_85","floorWallMount","mobileStand","showMeshes","modesByModel","extraDisclaimer","matteBlack","book","tent","compose","dualLandscape","singleScreen","peek","byMode","animationName","swatchBorder","obsidian","allScenes","Overview","root","file","PreviousOverview","Laptop_3","Hartwell","Laptop_5","Laptop_5_prev","Laptop_Go","Laptop_Go_prev","Go_2","Go_2_prev","Pro_8","Big_Rock","Pro_9","Pro_9_prev","Studio","Laptop_Studio","Laptop_Studio_prev","Headphones","Toba","Earbuds","Hubs","Hubs_prev","Duo_2","Pro_X","devices","assetContainers","shdwGenerator","flag","lastAnimFrame","FamilyExplorer","showDetail","_defineProperty","detailView","goBack","paramsToID","_enableDetailView","_parentNode","currentMesh","extraAssets","lights","excludedMeshes","includedOnlyMeshes","receiveShadows","match","addShadowCaster","__setScreenImage","visibility","isVisible","removeShadowCaster","dir","material","screenMaterial","hub50ScreenTexture","Texture","uAng","Math","PI","diffuseTexture","hub85ScreenTexture","screenMaterialModel2","StandardMaterial","emissiveColor","Color3","White","defaultWallpaperTexture","specularPower","specularColor","FromHexString","hub50ScreenTexture_prev","hub85ScreenTexture_prev","duoScreenTexture","defaultWallpaper2x3Texture","wAng","rotation_Half_PI_minus","vAng","defaultWallpaper2x3RainbowTexture","defaultWallpaperTextureRainbow","hartwellScreenTexture","rotation_Half_PI","_removeShadows","removeAllFromScene","_isMesh","removeMesh","updateQuality","clearColor","environmentTexture","hubHdrTexture","environmentIntensity","fogStart","fogEnd","addAllToScene","detachControl","_setCamera","unregisterBeforeRender","_registerBeforeRenderHandler","_direction","_x","_y","_z","draggableRegisterBeforeRender","generalRegisterBeforeRender","deviceSpecificRegisterBeforeRender","deviceChangesModelRegisterBeforeRender","getMeshesByID","dispose","currentFrame","meshOverlayReset","detailIntroAnimationComplete","router","replace","actualLang","modelVisibility","setTimeout","engine","_onMousemove","onResize","value","r1","r2","tooltipId","currentRadius","radius","currentLowerRadius","lowerRadiusLimit","animateCamTo","dispatch","animeMaster","seek","pause","mic_B_Mesh","camera_A_Mesh","deviceData","stopAllAnimations","animationGroups","group","play","primaryAnimData","animateToValue","currentModePosture","fromModeData","keyframes","animationGroup","getAnimationGroupByName","goToFrame","masterAnimation","reachedPercentage","stopAtPercentage","anime","targets","easing","anim","round","progress","animateCamera","meshName","getMeshById","getMaterialByName","unfreeze","complete","_resetDraggablePosition","freeze","secondaryAnimData","famExpCurrentPosture","getMeshByID","overlayItemsSwap","meshOverlayItems","model","getShadowMap","refreshRate","famExpCurrentModel","animateMode","tooltip","Zero","meshOverlayReInit","meshOverlayRefreshData","delay","meshOverlay","meshOverlayTooltipConfig","meshOverlayInit","getRenderWidth","getRenderHeight","config","andCopy","console","log","navigator","clipboard","writeText","then","querySelector","width","innerWidth","height","innerHeight","tabindex","setHardwareScalingLevel","quality","topLimit","homeScreen","singleDevices","e","lastX","clientX","screenWidth","lastY","clientY","screenHeight","_requestTick","_update","route","isPlaying","animatables","masterFrame","num","max","min","async","Promise","res","SceneLoader","LoadAssetContainer","container","scaling","debugLayer","nextTick","_fittoScreen","useRoute","useRouter","visibleModal","pro8","pro10","pro11","laptopStudio","laptopStudio2","earbuds","go3","go4","headphones","proFlexKeyboard","laptop4","laptop6","laptop7","laptop5","laptopGo3","laptopGo2","studio2plus","hub3","hub2s","proX","duo2","allDeviceIDs","sd","md","hd","setup","Engine","xrCompatible","canvasTabIndex","_setCameraPosScreenSize","_createScene","animateCameraTimeout","firstSceneToLoad","ArcRotateCamera","prototype","whichprop","targetval","callback","ease","CubicEase","setEasingMode","EasingFunction","EASINGMODE_EASEINOUT","totalFrames","Animation","CreateAndStartAnimation","cameraPosScreenSize","windowSize","readableRatio","alpha","beta","fov","minZ","maxZ","wheelDeltaPercentage","familyAssets","_loadPromise","previousFamilyAssets","albedoTexture","disableLighting","addLight","sun","getLightByID","autoCalcShadowZBounds","shadowGenerator","ShadowGenerator","usePercentageCloserFiltering","bias","normalBias","darkness","renderList","createDevicesTitles","params","firstScene","_loadScene","set","opacity","hideLoadingUI","odd","runRenderLoop","lerp","render","onkeydown","evt","shiftKey","ctrlKey","_createDebug","textureGO_LUT","cod","getNodeByName","field","active","screen","callGrayedOut","onPointerMove","ray","createPickingRay","pointerX","pointerY","hit","pickWithRay","pickedMesh","includes","cursor","onPointerDown","currentTooltip","deviceRoutes","openDeviceFromRoute","grayedOut","flow","imageProcessingConfiguration","ImageProcessingConfiguration","cameraColorGradingTexture","cameraColorGradingEnabled","isPickable","getChildMeshes","child","getBindedMeshes","matCloned","clone","activeDevice","elem","selectedGrayedOut","renderOverlay","overlayColor","callSelectedGrayedOut","exception","currentDevice","getTransformNodeByName","devicesNames","size","makeTextPlane","planeSize","fontSize","plane","MeshBuilder","CreatePlane","advancedTexture","AdvancedDynamicTexture","CreateForMesh","createStyle","fontStyle","fontfamily","fontWeight","TextBlock","addControl","rootContainer","scaleX","scaleY","i","textPlane","rotation","assets","newTooltipBox_1","createInstance","parent","newTooltipBox_2","newTooltipBox_3","newTooltipBox_4","Array","isArray","metallic","albedoColor","specularIntensity","emissiveIntensity","directIntensity","metallicF0Factor","roughness","toLinearSpace","ambientColor","change","setMaterialByID","_getMeshPosition","MeshTouchpointHandle","getMeshesById","registerBeforeRender","getAbsolutePosition","_setupTooltips","extraScene","tooltipConfig","foundMesh","basicHdrTexture","displayLoadingUI","_setDeviceLighting","changeActiveModel","_addShadows","meshID","introComplete","preloadVideos","video","preloadVideo","getNodeByID","touchPoint","CreateSphere","diameter","animIn","animOut","dragAxisData","pointerDragBehavior","PointerDragBehavior","validateDrag","targetPosition","useObjectOrientationForDragging","onDragStartObservable","lastTouchpointPos","mouseDown","classList","onDragObservable","angles","querySelectorAll","button","Scalar","Lerp","onDragEndObservable","remove","speed","addBehavior","hoverActionManager","ActionManager","actionManager","isHovered","registerAction","ExecuteCodeAction","OnPointerOverTrigger","OnPointerOutTrigger","touchpointHandleMesh","getMeshByName","touchpointReferenceMesh","isValueInRange","camDeg","distance","Distance","frame","_mapRanges","modeRange","needDepthPrePass","lastCameraDegree","lastCameraBeta","lastCurrentFramePrimaryGeneral","lastCurrentFrameSecondaryGeneral","cameraDegree","abs","Tools","ToDegrees","toFixed","deg","lastCurrentFramePrimaryDevice","getMaterialById","getMaterialByID","portraitModeData","landscapeModeData","Hub350ScreenMesh","modelNames","last","all","modelKey","getNodeById","getDescendants","self","ultrawide","convertRange","aspectRatio","wide","standard","setTarget","upperRadiusLimit","lowerBetaLimit","upperBetaLimit","attachControl","resize","getActiveMeshes","Scene","loadingScreen","CustomLoadingScreen","CubeTexture","CreateFromPrefilteredData","gammaSpace","DirectionalLight","light_detailScenes","useContactHardeningShadow","filteringQuality","QUALITY_HIGH","contactHardeningLightSizeUVRatio","setDarkness","contrast","fogMode","FOGMODE_LINEAR","fogColor","_createTextVNode","_toDisplayString","$data","isDropdownOpen","onMouseenter","args","$options","hovered","onMouseleave","unhovered","closeDrawerTimeout","clearTimeout","__exports__","_imports_0","viewBox","fill","xmlns","$props","$emit","_hoisted_6","href","_hoisted_7","_hoisted_8","placeholders","_hoisted_9","_hoisted_10","_hoisted_11","placeholder","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","colorGroup","index","innerHTML","$sanitize","_hoisted_21","_hoisted_22","currentColor","_normalizeStyle","_hoisted_24","d","_hoisted_25","_hoisted_23","_hoisted_26","props","String","required","Boolean","emits","context","computed","watchEffect","emit","tooltipData","famExpBreadcrumbs","breadcrumbClick","useStore","t","useI18n","returnObj","obj","entry","sort","a","b","textA","toUpperCase","textB","_component_FocusTrap","modalIsOpen","initial-focus","$refs","closeBtn","toggleModal","copy","_withModifiers","paragraph","components","FocusTrap","returnCopy","compatibilityByModel","compatibility","disclaimerByModel","_component_MeshOverlayContainer","isFamilyExplorer","handleClick","MeshOverlayContainer","showDev","camBeta","script","autoplay","muted","loop","escapeDeactivates","imgUrl","videoUrl","row","modalId","extends","Watchers","XrayModal","FamilyExplorerUI","FamilyExplorerDetail","FamilyExplorerBreadcrumbs","FamilyExplorerOverview","LoadingScreen","Disclaimer","Compatibility","FamilyExplorerDev","MobileDetailsNav","useEmitter","toggleModalTimeout","detail","deep","focusedDevice","newVal","devicePath","split","pop","goToExplorerPath","onMounted","onBeforeUnmount"],"sourceRoot":""}