{"version":3,"file":"static/js/10.a821cf3d53b6352f3db8.chunk.js","mappings":"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,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,OAQKC,EAA6BC,GAC/B1P,EAAkB0P,IAAgB,8SC9L7C,SAASC,EACL/xE,EACAI,EACA4xE,EACAC,EACAC,EACArvE,GAAkB,IAAAsvE,EAElB,IAAKF,EACD,OAAO,KAGX,MAAMG,EAAwC,QAA3BD,EAAGD,MAAAA,OAAY,EAAZA,EAAcrvD,kBAAU,IAAAsvD,EAAAA,OAAI5zE,EAC5C8zE,EAhCV,SAA4BC,EAAiBD,GAEzC,GAAIC,GAAUD,EAAiB,CAC3B,MAAME,EAAgBD,EAAOhW,QAFP,GAGtB,OAAOriD,OAAAA,EAAAA,OAAAA,CAAOo4D,GAAmB,GAAIE,EAAe,KAExD,MAAO,GA0BiBC,CAAmBP,EAAWpvE,GAEtD,OACIrF,EAAAA,EAAA+oB,cAACksD,EAAAA,gBAAe,CACZzyE,QAASA,EACTG,GAAI6xE,EACJ5xE,SAAUA,EACV6xE,UAAWA,EACXS,YAAaN,EACbO,UAAQ,EACR9vE,UAAWwvE,EACXnzE,KAAM,KA2FX,MAAM0zE,EAAwD7kE,IAWhE,IAXiE,KAClE7O,EAAI,QACJc,EAAO,cACPsZ,EAAa,YACbu5D,EAAW,cACXxxE,EAAa,kBACb+e,EAAiB,gBACjBiyD,EAAe,SACfjyE,EAAQ,GAERD,GACH4N,EACG,MAAMuE,EAAUpT,EAAKoT,QACrB,OAAKA,EAKD9U,EAAAA,EAAA+oB,cAAA/oB,EAAAA,EAAAs1E,SAAA,KACIt1E,EAAAA,EAAA+oB,cAAA,OAAK1lB,UAAU,4BACXrD,EAAAA,EAAA+oB,cAAA,OAAK1lB,UAAU,mCAxD/B,SACI4O,EACA6J,EACA0B,EACA+3D,EACAr4D,GAEA,IAAKq4D,IAAa/3D,IAAiB1B,EAC/B,OAAO,KAEX,MAAM05D,EAAsB,CACxBr4D,IAAKo4D,EACLr4D,QAASA,GAAoB,IAE3BD,EAAa,CACfO,aAAAA,EACA1B,cAAAA,GAGJ,OADAmB,EAAWnB,cAAcwf,iBAAkB,EACpCt7B,EAAAA,EAAA+oB,cAAC2V,EAAAA,EAAKl7B,OAAAC,OAAA,GAAK+xE,EAAav4D,EAAU,CAAEhL,eAAgBA,EAAgByL,oBAAoB,WAsC9E+3D,CACGjzE,EAAQuH,cAAckI,eACtB6J,EACAtZ,EAAQU,QAAQsa,aAChB1I,EAAQsI,gBACRtI,EAAQ7G,OAGhBjO,EAAAA,EAAA+oB,cAAA,OAAK1lB,UAAU,qCACXrD,EAAAA,EAAA+oB,cAAA,MAAI1lB,UAAU,mCAAmCyR,EAAQ7G,MAxG7E,SACIzL,EACAI,EACAke,EACA40D,EACAC,EACAN,EACAxxE,EACA+e,GAEA,MAAM7f,EAAsB,CACxB6yE,UAAWF,EACXG,cAAeF,EACf/xE,wBAAyB+xE,GAG7B,OACI31E,EAAAA,EAAA+oB,cAACplB,EAAAA,eAAc,CACXnB,QAASA,EACTG,GAAIme,EACJle,SAAUA,EACVlB,KAAM,CAAEqB,MAAAA,GACRsyE,YAAaA,EACbxxE,cAAeA,EACf+e,kBAAmBA,IAiFVkzD,CAAYtzE,EAASI,EAAUD,EAAImS,EAAQ8gE,UAAW9gE,EAAQihE,MAAOV,EAAaxxE,EAAe+e,IA/K3Ftf,EAgLYwR,EAAQpR,YA/KpC1D,EAAAA,EAAA+oB,cAAA,KAAG1lB,UAAU,kCAAkCC,KAgLpCd,EAAQi2B,IAAIt3B,OAAO60E,YACjBzB,EAAa/xE,EAASI,EAAUD,EAAImS,EAAQmhE,cAAenhE,EAAQohE,aAAcrB,MApB1F,KA9Jf,IAA2BvxE,GCkB3B,MAyFM6yE,EAAeA,CAACnyD,EAA8B9jB,KAAqF,IAAAk2E,EAOrI,MAAO,CACHnlC,sBAAuB,CAAE5tC,UAAW,iDACpCoiB,QARgBzB,EAAKyB,SA1FP4wD,EAACC,EAAkCp2E,KACrD,MAAM+R,EAAiB/R,EAAM+R,eAC7B,OACIjS,EAAAA,cAAC6nB,EAAAA,EAAa,CACV9V,KAAMukE,EACNnyE,IAAI,IACJd,UAAU,sDACV2O,UAAW,CAKPnR,OAAQuK,IACJlL,EAAMq2E,2BAA2BnrE,IAErC6G,eAAAA,MA2EwBokE,CAAcryD,EAAKyB,QAASvlB,GAS5D6R,KARkBiS,EAAKwyD,SAhEPC,EAACC,EAAwCx2E,KAC7D,MAAM+R,EAAiB/R,EAAM+R,eAC7B,OACIjS,EAAAA,cAAC6nB,EAAAA,EAAa,CACV9V,KAAM2kE,EACNvyE,IAAI,IACJd,UAAU,2DACV2O,UAAW,CAKPnR,OAAQuK,IACJlL,EAAMq2E,2BAA2BnrE,IAErC6G,eAAAA,MAiD0BwkE,CAAgBzyD,EAAKwyD,QAASt2E,GAShEkxC,MARwB,QAAbglC,EAAGpyD,EAAKotB,aAAK,IAAAglC,OAAA,EAAVA,EAAYxxE,IAAI,CAAC+xE,EAAqB9xE,IArCxC+xE,EAACD,EAAqBz2E,EAA2C22E,KACjF,MAAMC,EAAoC,CACtCzxE,UAAWsxE,EAAQtxE,UACnBhC,UAAW,4DACX0zE,SAAUJ,EAAQI,SAClBC,QAASL,EAAQK,QAAQC,eACzBC,aAAcP,EAAQQ,eACtB/yE,KAAM,UAEJ6N,EAAiB/R,EAAM+R,eAC7B,OACIjS,EAAAA,cAAC6nB,EAAAA,EAAa,CACVpB,IAAKowD,EACLO,KAAMN,EACN9kE,UAAW,CAKPqlE,aAAcjsE,IACVlL,EAAMo3E,+BAA+BT,EAAWzrE,IAEpD6G,eAAAA,MAgBD2kE,CAAYD,EAASz2E,EAAO2E,IAQnCqsC,2BAA4B,CAAE7tC,UAAW,4DACzC8tC,2BAA4B,CAAE9tC,UAAW,yDASpCk0E,EACTr3E,IAEA,MAAM,kBAAE8wC,GAAsB9wC,EAC9B,GAAK8wC,EAIL,OAAOmlC,EAAanlC,EAAmB9wC,IAG5Bq3E,ICpIHC,EAgCAC,onBAhCZ,SAAYD,GACRA,EAAAA,EAAA,+BACAA,EAAAA,EAAA,iCACAA,EAAAA,EAAA,uCACAA,EAAAA,EAAA,uCACAA,EAAAA,EAAA,+BACAA,EAAAA,EAAA,6BACAA,EAAAA,EAAA,uCACAA,EAAAA,EAAA,gCACAA,EAAAA,EAAA,kCACAA,EAAAA,EAAA,yCACAA,EAAAA,EAAA,0DACAA,EAAAA,EAAA,sDACAA,EAAAA,EAAA,8DACAA,EAAAA,EAAA,yDACAA,EAAAA,EAAA,gCACAA,EAAAA,EAAA,mCACAA,EAAAA,EAAA,0BACAA,EAAAA,EAAA,2BACAA,EAAAA,EAAA,uBACAA,EAAAA,EAAA,8BACAA,EAAAA,EAAA,+BACAA,EAAAA,EAAA,6BACAA,EAAAA,EAAA,+CACAA,EAAAA,EAAA,kDACAA,EAAAA,EAAA,yCAzBJ,CAAYA,IAAAA,EAAkB,KAgC9B,SAAYC,GACRA,EAAA,gBACAA,EAAA,yBAFJ,CAAYA,IAAAA,EAAY,KAuCjB,MAAMC,UAAoB13E,EAAAA,EAAM23E,UAWnC13E,YAAmBC,GACfC,MAAMD,GALF,KAAA03E,oBAA8B,EAE9B,KAAAC,SAAwD,KA8CzD,KAAAC,oBAAsB,KACzB,GAAIhmE,EAAAA,EAAS+P,UAAW,CACpB,MAAMk2D,EAA4Bp3E,KAAKT,MAAM83E,gBAC7C,GAA0C,OAAtCD,EAA0Bl7C,QAC1B,OAAOk7C,EAA0Bl7C,QAAQo7C,cAU9C,KAAAC,qBAAuB,KAC1B,GAAIpmE,EAAAA,EAAS+P,UAAW,CACpB,MAAMk2D,EAA4Bp3E,KAAKT,MAAM83E,gBAC7C,GAA0C,OAAtCD,EAA0Bl7C,QAC1B,OAAOk7C,EAA0Bl7C,QAAQs7C,eAW9C,KAAAC,gBAAmBC,IAEtB,MAGMz2E,EAHQ,IAAIirB,OAAO,8CAA+C,KAGnDyrD,KAAKD,GAE1B,OAAOz2E,EACD,CACI22E,OAAQ5uC,OAAOyY,SAASxgD,EAAO,GAAI,IACnC42E,OAAQ7uC,OAAOyY,SAASxgD,EAAO,GAAI,IACnC62E,OAAQ9uC,OAAOyY,SAASxgD,EAAO,GAAI,KAEvC,CACI22E,OARW,EASXC,OATW,EAUXC,OAVW,IAqBlB,KAAAC,sBAAwB,CAAC3mE,EAAc4mE,EAAkBC,EAAqBC,KAAuB,IAAAC,EAAAC,EACxG,MAAMC,EAAsBxB,EAAmBwB,YACzCx2E,EAAgD,QAAzCs2E,EAAuB,QAAvBC,EAAGp4E,KAAKs4E,QAAQp8C,eAAO,IAAAk8C,OAAA,EAApBA,EAAsBG,WAAW,aAAK,IAAAJ,EAAAA,EAAIn4E,KAAKk3E,SAC/D,GAAIr1E,GAAW7B,KAAKi3E,mBAAoB,CACpC,MAAMuB,EAAgB3B,EAAmB2B,cACnCC,EAAoB5B,EAAmB4B,kBACvCC,EAAc72E,EAAQ82E,YAAYvnE,GAAMwd,MAAQ4pD,EACtD32E,EAAQ+2E,UAAY,QAAQX,EAASL,WAAWK,EAASJ,WAAWI,EAASH,WAAWI,MACpF/mE,EAAAA,EAAS+P,WAAaq0C,SAASsjB,KAAKlwC,eAAqE,QAApD4sB,SAASsjB,KAAKlwC,cAAcmwC,aAAa,OAC9Fj3E,EAAQk3E,SAAS3nE,EAAM4mE,EAAO,GAAKU,EAAcL,EAAcG,EAAgBH,EAAaL,EAAO,GAAKS,GAExG52E,EAAQk3E,SAAS3nE,EAAM4mE,EAAO,GAAKU,EAAcL,EAAcG,EAAgBH,EAAaL,EAAO,GAAKS,KAU7G,KAAAO,WAAa,CAAC5nE,EAAc4mE,KAA0B,IAAAiB,EAAAC,EACzD,MAAM,MAAEj0E,EAAQ6xE,EAAa7xE,MAAK,eAAEk0E,EAAiBrC,EAAaqC,gBAAmBn5E,KAAKT,MACpF84E,EAAsBxB,EAAmBwB,YACzCx2E,EAAgD,QAAzCo3E,EAAuB,QAAvBC,EAAGl5E,KAAKs4E,QAAQp8C,eAAO,IAAAg9C,OAAA,EAApBA,EAAsBX,WAAW,aAAK,IAAAU,EAAAA,EAAIj5E,KAAKk3E,SAC/D,GAAIr1E,GAAW7B,KAAKi3E,mBAAoB,CACpC,MAAMmC,EAAevC,EAAmBuC,aAClCZ,EAAgB3B,EAAmB2B,cACnCC,EAAoB5B,EAAmB4B,kBACvCC,EAAc72E,EAAQ82E,YAAYvnE,GAAMwd,MAAQ4pD,EAChDa,EAAkBrB,EAAO,GAAKU,EAAcL,EAC5CiB,EAAkBtB,EAAO,GAAKoB,EAAef,EAC7CkB,EAAUH,EAAef,EAE/Bx2E,EAAQ23E,YACR33E,EAAQ43E,OAAOJ,EAAkBE,EAASD,GAC1Cz3E,EAAQ63E,OAAOL,EAAkBX,EAAca,EAASD,GACxDz3E,EAAQ83E,MACJN,EAAkBX,EAClBY,EACAD,EAAkBX,EAClBY,EAAkBC,EAClBA,GAEJ13E,EAAQ63E,OAAOL,EAAkBX,EAAaY,EAAkBF,EAAeG,GAC/E13E,EAAQ83E,MACJN,EAAkBX,EAClBY,EAAkBF,EAClBC,EAAkBX,EAAca,EAChCD,EAAkBF,EAClBG,GAEJ13E,EAAQ63E,OAAOL,EAAkBE,EAASD,EAAkBF,GAC5Dv3E,EAAQ83E,MAAMN,EAAiBC,EAAkBF,EAAcC,EAAiBC,EAAkBC,EAASA,GAC3G13E,EAAQ63E,OAAOL,EAAiBC,EAAkBC,GAClD13E,EAAQ83E,MAAMN,EAAiBC,EAAiBD,EAAkBE,EAASD,EAAiBC,GAC5F13E,EAAQ63E,OAAOL,EAAkBE,EAASD,GAC1Cz3E,EAAQ+3E,SACR/3E,EAAQg4E,YACRh4E,EAAQ+2E,UAAY3zE,EACpBpD,EAAQi4E,OACRj4E,EAAQ+2E,UAAYO,EAChBhoE,EAAAA,EAAS+P,WAAaq0C,SAASsjB,KAAKlwC,eAAqE,QAApD4sB,SAASsjB,KAAKlwC,cAAcmwC,aAAa,OAC9Fj3E,EAAQk3E,SAAS3nE,EAAM4mE,EAAO,GAAKU,EAAcL,EAAcG,EAAgBH,EAAaL,EAAO,GAAKS,GAExG52E,EAAQk3E,SAAS3nE,EAAM4mE,EAAO,GAAKU,EAAcL,EAAcG,EAAgBH,EAAaL,EAAO,GAAKS,KAS7G,KAAAsB,gBAAmB/B,IAA0B,IAAAgC,EAChD,MAAM,MAAE/0E,EAAQ6xE,EAAa7xE,MAAK,eAAEk0E,EAAiBrC,EAAaqC,gBAAmBn5E,KAAKT,MACpF06E,EAA4C,QAAlCD,EAAGh6E,KAAKT,MAAM26E,4BAAoB,IAAAF,OAAA,EAA/BA,EAAiCC,WACpD,IAAIE,EAAsBtD,EAAmBuD,0BAC7C,MAAMC,EAAiBrC,EAAO,GACxBsC,EAAiBtC,EAAO,GACxBuC,EAAoB1D,EAAmB2D,wBACvCC,EAAS5D,EAAmB6D,aAC5BC,EAAW9D,EAAmB8D,SAC9BC,EAAa/D,EAAmB+D,WAChCC,EAAWhE,EAAmBgE,SACpC,IAAIC,EAAkBjE,EAAmBkE,qBACzC,MAAMC,EAAsBh7E,KAAKy3E,gBAAgB0B,EAAetpD,qBAK1DorD,EAAUA,KAAK,IAAAC,EAAAC,EACjB,MAAMt5E,EAAgD,QAAzCq5E,EAAuB,QAAvBC,EAAGn7E,KAAKs4E,QAAQp8C,eAAO,IAAAi/C,OAAA,EAApBA,EAAsB5C,WAAW,aAAK,IAAA2C,EAAAA,EAAIl7E,KAAKk3E,SAC1Dr1E,IAGLA,EAAQ23E,YACR33E,EAAQu5E,QAAQf,EAAgBC,EAAgBG,EAAQN,EAAqBQ,EAAUC,EAAYC,GACnGh5E,EAAQ+2E,UAAY3zE,EACpBpD,EAAQi4E,OACRj4E,EAAQ+2E,UAAY3zE,EAChBg1E,IACIE,EAAsBI,GACtBc,sBAAsBJ,GACtBj7E,KAAK+3E,sBAAsBkC,EAAYjC,EAAQgD,EAAqBF,GACpEA,GAAmBjE,EAAmByE,iBACtCnB,KAEAn6E,KAAKg5E,WAAWiB,EAAY,CAACI,EAAgBC,OAKrDt6E,KAAKi3E,oBACLgE,KAQD,KAAAM,kBAAqBvD,IAA0B,IAAAwD,EAClD,MAAM,MAAEv2E,EAAQ6xE,EAAa7xE,MAAK,eAAEk0E,EAAiBrC,EAAaqC,gBAAmBn5E,KAAKT,MACpF06E,EAA4C,QAAlCuB,EAAGx7E,KAAKT,MAAM26E,4BAAoB,IAAAsB,OAAA,EAA/BA,EAAiCvB,WACpD,IAAIE,EAAsBtD,EAAmB4E,4BAC7C,MAAMpB,EAAiBrC,EAAO,GACxBsC,EAAiBtC,EAAO,GACxBuC,EAAoB1D,EAAmB6E,0BACvCf,EAAW9D,EAAmB8D,SAC9BgB,EAAc9E,EAAmB8E,YACjCC,EAAc/E,EAAmB+E,YACjCC,EAAahF,EAAmBgF,WAChCpB,EAAS5D,EAAmBiF,eAC5BlB,EAAa/D,EAAmB+D,WAChCC,EAAWhE,EAAmBgE,SACpC,IAAIkB,EAAmBlF,EAAmBmF,sBAC1C,MAAMhB,EAAsBh7E,KAAKy3E,gBAAgB0B,EAAetpD,qBAK1DorD,EAAUA,KAAK,IAAAgB,EAAAC,EACjB,MAAMr6E,EAAgD,QAAzCo6E,EAAuB,QAAvBC,EAAGl8E,KAAKs4E,QAAQp8C,eAAO,IAAAggD,OAAA,EAApBA,EAAsB3D,WAAW,aAAK,IAAA0D,EAAAA,EAAIj8E,KAAKk3E,SAC1Dr1E,IAGLA,EAAQ23E,YACR33E,EAAQs6E,UAAU9B,EAAiBsB,EAAarB,EAAiBqB,EAAaE,EAAYD,GAC1F/5E,EAAQu5E,QAAQf,EAAgBC,EAAgBG,EAAQN,EAAqBQ,EAAUC,EAAYC,GACnGh5E,EAAQ+2E,UAAY3zE,EACpBpD,EAAQi4E,OACJS,EAAoBJ,GAAuBF,IAC3CoB,sBAAsBJ,GACtBj7E,KAAK+3E,sBAAsBkC,EAAYjC,EAAQgD,EAAqBe,GACpEA,GAAoBlF,EAAmByE,iBACvCnB,OAIJn6E,KAAKi3E,oBACLgE,KAQD,KAAAmB,WAAcpE,IAA0B,IAAAqE,EAAAC,EAC3C,MAAM,MAAEr3E,EAAQ6xE,EAAa7xE,MAAK,SAAEs3E,GAAav8E,KAAKT,MAChDi9E,EAA2B3F,EAAmB2F,iBAC9C5B,EAAqB/D,EAAmB+D,WACxC/4E,EAAgD,QAAzCw6E,EAAuB,QAAvBC,EAAGt8E,KAAKs4E,QAAQp8C,eAAO,IAAAogD,OAAA,EAApBA,EAAsB/D,WAAW,aAAK,IAAA8D,EAAAA,EAAIr8E,KAAKk3E,SACzDuD,EAAsB,OAAb8B,GAAkC,OAAbA,EAAoBvE,EAAO,GAAKwE,EAAmBxE,EAAO,GACzFn2E,IAGLA,EAAQ+2E,UAAY3zE,EACpBpD,EAAQ23E,YACR33E,EAAQ46E,YAAcx3E,EACtBpD,EAAQ66E,IAAI1E,EAAO,GAAIA,EAAO,GAAIyC,EAAQG,EAAYzlD,KAAKwnD,GAAKH,GAChE36E,EAAQg4E,YACRh4E,EAAQ+3E,SACR/3E,EAAQi4E,SAQL,KAAA8C,YAAe5E,IAClB,MAAM,SAAE6E,GAAa78E,KAAKT,MACpBu9E,EAAuBjG,EAAmBiG,aAC1CC,EAAuBlG,EAAmBkG,aAG1CnuD,EAAQ5uB,KAAKm3E,sBACb6F,EAAQpuD,GAASiuD,GAAYA,EAAWC,EAAeluD,EAAQiuD,EAAWE,EAChF,OAAO/E,EAAO/zE,IAAIg5E,GAASA,EAAQD,IAMhC,KAAAE,qBAAuB,KAC1B,MAAM,QAAEC,GAAYn9E,KAAKT,MACzB49E,EAAQC,MAAMn5E,IAAIo5E,IACdr9E,KAAKo8E,WAAWp8E,KAAK48E,YAAYS,EAAKrF,SAC/B,QASR,KAAAsF,cAAiBD,IACpB,MAAME,EAAev9E,KAAK48E,YAAYS,EAAKrF,QAC3C,MAAO,CAACuF,EAAa,GAAIA,EAAa,KAOnC,KAAAC,cAAiBH,IAChBA,EAAKI,QAAUz9E,KAAKs4E,QAAQp8C,UAC5Bl8B,KAAKo8E,WAAWp8E,KAAK48E,YAAYS,EAAKrF,SACtCh4E,KAAK+5E,gBAAgBsD,EAAKI,UAQ3B,KAAAC,eAAkBL,IACrB,GAAIr9E,KAAKs4E,QAAQp8C,QAAS,CAAC,IAADyhD,EACtB,MAAM97E,EAA+C,QAAxC87E,EAAG39E,KAAKs4E,QAAQp8C,QAAQq8C,WAAW,aAAK,IAAAoF,EAAAA,EAAI39E,KAAKk3E,SACxD0G,EAA0B/G,EAAmBgH,iBAC7CC,EAA0BjH,EAAmBkH,iBAEnD,IAAKl8E,EACD,OAEJA,EAAQs6E,UAAUyB,EAAiBE,EAAiB99E,KAAKs4E,QAAQp8C,QAAQtN,MAAO5uB,KAAKs4E,QAAQp8C,QAAQzT,QACrGzoB,KAAKk9E,uBACDG,EAAKI,QACLz9E,KAAKu7E,kBAAkB8B,EAAKI,UAWjC,KAAAO,MAAQ,CAACX,EAAan5E,IAAmBuG,IAC5C,MAAM,QAAEtF,GAAYnF,KAAKT,MACrB4F,IACAsF,EAAM40B,iBACNl6B,EAAQk4E,EAAMn5E,EAAOuG,KAUtB,KAAAwzE,QAAU,CAACZ,EAAan5E,IAAmBuG,IAC9C,MAAM,aAAEyzE,GAAiBl+E,KAAKT,MAC9BS,KAAKw9E,cAAcH,GACfa,GACAA,EAAab,EAAMn5E,EAAOuG,IAU3B,KAAA0zE,SAAW,CAACd,EAAan5E,IAAmBuG,IAC/C,MAAM,aAAE2zE,GAAiBp+E,KAAKT,MAE9BS,KAAK09E,eAAeL,GAEhBe,GACAA,EAAaf,EAAMn5E,EAAOuG,IAQ3B,KAAA4zE,YAAc,KAAoB,IAAAC,EAAAC,EACrC,MAAM,QAAEpB,EAAO,SAAEZ,GAAav8E,KAAKT,MAC7B06E,EAA4C,QAA/BqE,EAAAt+E,KAAKT,MAAM26E,4BAAoB,IAAAoE,GAA/BA,EAAiCrE,WAAaj6E,KAAKT,MAAM26E,qBAAqBD,WAAa,GACxG19D,EAAyC,QAA/BgiE,EAAAv+E,KAAKT,MAAM26E,4BAAoB,IAAAqE,GAA/BA,EAAiChiE,QAAUvc,KAAKT,MAAM26E,qBAAqB39D,QAAU,GAC/FigE,EAA2B3F,EAAmB2F,iBAEpD,OAAOW,EAAQC,MAAMn5E,IAAI,CAACo5E,EAAMn5E,KAAS,IAAAs6E,EACrC,MAAMjB,EAAev9E,KAAK48E,YAAYS,EAAKrF,QACrCyG,EAAWpB,EAAKrF,OAAO,GAAKwE,EACjB,OAAbD,IACAgB,EAAa,GAAKkB,GAEtB,MAAMhB,EAASz9E,KAAKs9E,cAAcD,GAC5BqB,EAAY1wE,EAAAA,EAAA,GAAQqvE,GAAI,IAAEE,aAAAA,EAAcE,OAAAA,IACxCkB,EAAU,QAAQz6E,EAClB06E,EAAyBriE,EAC1BkI,QAAQ,eAAgBw1D,GAA0B,IAClDx1D,QAAQ,gBAAyC,QAAxB+5D,EAAAnB,EAAKwB,2BAAmB,IAAAL,GAAxBA,EAA0BlxE,KAAO+vE,EAAKwB,oBAAoBvxE,KAAO,IAC/F,OACIjO,EAAAA,EAAA+oB,cAAA,QACItC,IAAK64D,EACLG,MAAM,SACN9G,OAAQuF,EAAawB,KAAK,KAC1Bb,aAAcl+E,KAAKi+E,QAAQS,EAAcx6E,GACzCk6E,aAAcp+E,KAAKm+E,SAASO,EAAcx6E,GAC1CiB,QAASnF,KAAKg+E,MAAMU,EAAcx6E,GAClC86E,QAASh/E,KAAKi+E,QAAQS,EAAcx6E,GACpCw9D,OAAQ1hE,KAAKm+E,SAASO,EAAcx6E,GACpCsd,KAAM67D,EAAKr8D,WACXsd,SAAU,EACV2gD,IAAKL,EAAsB,aACfA,OASrB,KAAAM,WAAa,KAAW,IAAAC,EAAAC,EAAAC,EAC3B,IAAKr/E,KAAKs4E,QAAQp8C,UAAYl8B,KAAKs/E,iBAAiBpjD,UAAYl8B,KAAKu/E,WAAWrjD,QAC5E,OAGJ,MAAM,MAAEj3B,EAAK,OAAEu6E,GAAWx/E,KAAKT,MACzBu9E,EAAuBjG,EAAmBiG,aAC1C2C,EAAwB5I,EAAmB4I,cAE3CC,EAAwC,QAA7BP,EAAGn/E,KAAKm3E,6BAAqB,IAAAgI,EAAAA,EAAIrC,EAC5C6C,EAA0C,QAA9BP,EAAGp/E,KAAKu3E,8BAAsB,IAAA6H,EAAAA,EAAIK,EAEpDz/E,KAAKs4E,QAAQp8C,QAAQtN,MAAQ8wD,EAC7B1/E,KAAKs4E,QAAQp8C,QAAQzT,OAASk3D,EAC9B3/E,KAAKu/E,WAAWrjD,QAAQ7T,MAAMuG,MAAW8wD,EAAH,KAEtC,MAAM79E,EAA+C,QAAxCw9E,EAAGr/E,KAAKs4E,QAAQp8C,QAAQq8C,WAAW,aAAK,IAAA8G,EAAAA,EAAIr/E,KAAKk3E,SACzDr1E,IAGLA,EAAQ+2E,UAAY3zE,MAAAA,EAAAA,EAAS,GAEzBu6E,GACAA,IAGJx/E,KAAKk9E,yBApdLl9E,KAAKs/E,iBAAmBjgF,EAAAA,EAAMugF,YAC9B5/E,KAAKu/E,WAAalgF,EAAAA,EAAMugF,YACxB5/E,KAAKs4E,QAAUj5E,EAAAA,EAAMugF,YAMlBplE,oBACH,MAAM,SAAE+hE,GAAav8E,KAAKT,MAC1BS,KAAKk/E,aACLl/E,KAAKi3E,mBAAkC,OAAbsF,GAAkC,OAAbA,EAC/Cv8E,KAAKq+E,cACLr+E,KAAKk3E,SAAW,KAMbpkB,qBACH,MAAM,SAAEypB,GAAav8E,KAAKT,MAC1BS,KAAKk/E,aACLl/E,KAAKi3E,mBAAkC,OAAbsF,GAAkC,OAAbA,EAQ5C1vE,sBAAsBC,GACzB,IAAI+yE,GAAe,EAInB,OAHI/yE,IAAc9M,KAAKT,QACnBsgF,GAAe,GAEZA,EAwbJ5yE,SAAM,IAAA6yE,EACT,MAAM,UAAE5nD,EAAS,QAAEilD,EAAO,eAAE7rE,GAAmBtR,KAAKT,MAEpD,OACIF,EAAAA,EAAA+oB,cAAA,OAAK1lB,UAAU,6BAA6BkoB,IAAK5qB,KAAKu/E,YAClDlgF,EAAAA,EAAA+oB,cAAC2V,EAAAA,EAAK,CACFvhB,IAAK0b,EAAU1b,IACfujE,OAAQ,IAAI5C,EAAQjtE,KACpB+uE,IAAK9B,EAAQjtE,KACb0a,IAAK5qB,KAAKs/E,iBACV72D,OAAQyP,EAAUzP,OAClBmG,MAAOsJ,EAAUtJ,MACjBlsB,UAAU,uBACVyY,cAAe+c,EAAU/c,cACzB0B,aAAyC,QAA7BijE,EAAExuE,EAAeuL,oBAAY,IAAAijE,EAAAA,EAAI,GAC7CxuE,eAAgBA,IAEpBjS,EAAAA,EAAA+oB,cAAA,UAAQwC,IAAK5qB,KAAKs4E,QAAS51E,UAAU,4BACrCrD,EAAAA,EAAA+oB,cAAA,OAAKlY,KAAMitE,EAAQjtE,KAAMxN,UAAU,wBAC9B1C,KAAKq+E,iBAOXtH,ICriBHiJ,4kBAAZ,SAAYA,GACRA,EAAAA,EAAA,uCACAA,EAAA,iBACAA,EAAA,gBAHJ,CAAYA,IAAAA,EAAoB,KAWzB,MAAMC,UAAoB5gF,EAAAA,cAiB7BC,YAAmBC,GACfC,MAAMD,GAbO,KAAA2gF,yBAAmC,IAEnC,KAAAC,wBAAkC,IAElC,KAAAC,cAAyB,GAuDnC,KAAAC,gBAAkB,CAAChD,EAAyBlpE,EAA8B6jE,EAAkBh3D,KACnF,IAADqpB,EAANgzC,GACDr9E,KAAKogF,cAAcnrE,KAAK,CACpBqrE,OAAQnsE,EAAQC,SAASsQ,WACzBszD,OAAAA,EACA11D,gBAAwC,QAAzB+nB,EAAEl2B,EAAQsI,uBAAe,IAAA4tB,EAAAA,EAAI,GAC5CrpB,WAAAA,EACA69D,oBAAqB1qE,KAmB1B,KAAAosE,kBAAoB,KACvB,MAAMC,EAAWx+C,OAAAA,EAAAA,SAAAA,CAAS,CAAEC,QAASC,EAAAA,YAAYu+C,QAAS5+E,QAAS7B,KAAKT,MAAMsC,QAAQU,UACtFvC,KAAKyX,SAAS,CAAE6/D,YAAat3E,KAAKm3E,sBAAuBqJ,SAAAA,IACzDxgF,KAAKi3E,mBAAkC,OAAbuJ,GAAkC,OAAbA,GAiD5C,KAAAE,kBAAoB,KAA6B,IAAAC,EACpD,MAAM,OAAEngF,EAAM,QAAEqB,GAAY7B,KAAKT,MAG3BqhF,EAAiB5gF,KAAKT,MAAMwB,KAAKyS,SAASvS,OAChD,GAAIT,EAAO2lD,cAAgBy6B,EACvB,IAAK,MAAMzsE,KAAWysE,EAClB,IAAK,MAAMC,KAAiBrgF,EAAO2lD,aAC/B,GAAIhyC,EAAQyI,SAAWikE,EAAcj5C,OAAQ,CAAC,IAADk5C,EAAAC,EAAAC,EAAAC,EACzC,MAAMjgE,EAAakgE,OAAAA,EAAAA,sBAAAA,CAAkC,QAAbJ,EAAC3sE,EAAQ7G,YAAI,IAAAwzE,EAAAA,EAAI,GAAI3sE,EAAQC,SAAUvS,EAAQuH,mBAAehJ,GAChG43E,EAAS,CACY,QADZ+I,EACXF,EAAcM,iBAAS,IAAAJ,EAAAA,EATX,EAUW,QADmBC,EAC1CH,EAAcO,iBAAS,IAAAJ,EAAAA,EAVX,EAWQ,QADsBC,EAC1CJ,EAAcpG,cAAM,IAAAwG,EAAAA,EAXR,GAaV5D,EAAOr9E,KAAKogF,cAAc5+E,KAAK6/E,GAAe/1E,KAAK26B,UAAUo7C,EAAYrJ,UAAY1sE,KAAK26B,UAAU+xC,IAC1Gh4E,KAAKqgF,gBAAgBhD,EAAMlpE,EAAS6jE,EAAQh3D,GAK5D,MAAMsgE,EAAuB,CACzBpxE,KAAM,OAAOlQ,KAAKuhF,kBAClBnE,MAAOp9E,KAAKogF,cAAc/+E,OApBA,EAoByBrB,KAAKogF,cAAgB,IAI5E,OACI/gF,EAAAA,cAAC03E,EAAW,CACRwF,SAAUv8E,KAAKgN,MAAMwzE,SACrBlvE,eAAgBtR,KAAKT,MAAMsC,QAAQuH,cAAckI,eACjDsd,MAAO5uB,KAAKgN,MAAMsqE,YAClBuF,SAAU78E,KAAKT,MAAMiB,OAAOk/E,YAC5Bv6E,QAASnF,KAAKwhF,UACdxC,QAASh/E,KAAKwhF,UACdtD,aAAcl+E,KAAKwhF,UACnBpD,aAAcp+E,KAAKyhF,UACnBvpD,UAAwC,QAA/ByoD,EAAE3gF,KAAKT,MAAMiB,OAAOkhF,mBAAW,IAAAf,EAAAA,EAAI,GAC5CxD,QAASmE,EACTjK,gBAAiBr3E,KAAK2hF,iBACtBzH,qBAAsB,CAClB39D,QAASvc,KAAKT,MAAM4C,UAAUy/E,uCAC9B3H,WAAYj6E,KAAKT,MAAM4C,UAAU0/E,sBAY1C,KAAAL,UAAY,CAACnE,EAAan5E,EAAeuG,KAC5CzK,KAAKyX,SAAS,CAAE4lE,KAAAA,EAAMyE,aAAc,6BAChC9hF,KAAKT,MAAM2+E,cACXl+E,KAAKT,MAAM2+E,aAAab,EAAMn5E,EAAOuG,GAEF,UAAnCA,EAAMwF,KAAK4f,qBAAmC7vB,KAAKi3E,oBACnD11D,OAAO0L,KAAKowD,EAAKr8D,WAAY,UAO9B,KAAAygE,UAAY,KACXzhF,KAAKi3E,oBACLj3E,KAAK+hF,cAON,KAAAA,WAAa,KAChB/hF,KAAKyX,SAAS,CAAE4lE,KAAM,KAAMyE,aAAc,MAOvC,KAAAE,uBAAyB,KAAsB,IAAAC,EAClD,GAAmB,QAAnBA,EAAIjiF,KAAKgN,MAAMqwE,YAAI,IAAA4E,GAAfA,EAAiBpD,oBAAqB,CAAC,IAADqD,EAAAC,EACtC,MAEM7/D,EAA0B,GAFHtiB,KAAKT,MAAMsC,QAAQU,QAAQ4V,YAAYiqE,eACZ,QAA1CF,EAAWliF,KAAKgN,MAAMqwE,KAAK/6D,uBAAe,IAAA4/D,EAAAA,EAAI,KAEtD/tE,EAA+BnU,KAAKgN,MAAMqwE,KAAKwB,oBAGrD,OAFA1qE,EAAQsI,gBAAkB6F,EAGtBjjB,EAAAA,cAACo1E,EAAsB,CACnB5yE,QAAS7B,KAAKT,MAAMsC,QACpBsZ,cAAenb,KAAKT,MAAMiB,OAAO6hF,qBACjCrgF,GAAkB,QAAhBmgF,EAAEhuE,EAAQyI,cAAM,IAAAulE,EAAAA,EAAI,GACtBlgF,SAAUjC,KAAKT,MAAM0C,UAAY,GACjClB,KAAM,CAAEoT,QAAAA,KAIpB,OAAO9U,EAAAA,UAOJ,KAAAijF,kBAAoB,KACvB,MAAM,KAAEjF,GAASr9E,KAAKgN,MAEtB,OACI3N,EAAAA,cAAAA,EAAAA,SAAA,MACKg+E,MAAAA,OAAI,EAAJA,EAAMI,SACHp+E,EAAAA,cAAA,OAAKqD,UAAU,gCAAgCkoB,IAAK5qB,KAAKuiF,oBACrDljF,EAAAA,cAAA,OAAKqD,UAAU,wCAAwCojB,IAAKu3D,EAAKiD,SAC3DtgF,KAAKi3E,oBAAsB53E,EAAAA,cAAA,UAAQ8F,QAASnF,KAAK+hF,WAAYr/E,UAAU,iBACxE26E,EAAKwB,qBAAuB7+E,KAAKgiF,0BAChChiF,KAAKi3E,oBACH53E,EAAAA,cAAA,KAAGmiB,KAAM67D,EAAKr8D,WAAYte,UAAU,mBAC/B1C,KAAKT,MAAM4C,UAAU0/E,uBAc/C,KAAAW,cAAgB,IACZnjF,EAAAA,cAAAA,EAAAA,SAAA,MAAIW,KAAKi3E,oBAAsB53E,EAAAA,cAAA,OAAKqD,UAAW1C,KAAKgN,MAAM80E,gBAQ9D,KAAAW,wBAA0B,KAAa,IAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAC1C,MAAMC,EAAuB/iF,KAAKgjF,0BAC5BC,EAAkE,QAAtCP,EAAA1iF,KAAKT,MAAMiB,OAAO6hF,4BAAoB,IAAAK,GAAtCA,EAAwCxoD,UACjB,QAD0ByoD,EAC7E3iF,KAAKT,MAAMiB,OAAO6hF,qBAAqBnoD,UAAUO,UAAE,IAAAkoD,OAAA,EAAnDA,EAAqDtoD,EACpB,QADqBuoD,EACtDG,EAAqB7oD,UAAUO,UAAE,IAAAmoD,OAAA,EAAjCA,EAAmCvoD,EAGnC6oD,EAA2BD,GAAwDjjF,KAAKkgF,0BACxF,KAAE7C,EAAI,YAAE/F,EAAW,SAAEkJ,GAAaxgF,KAAKgN,MACvCqtE,EAAkC,QAApBwI,EAAGxF,MAAAA,GAAY,QAARyF,EAAJzF,EAAMI,cAAM,IAAAqF,OAAA,EAAZA,EAAe,UAAE,IAAAD,EAAAA,EAAIvL,EAHhB,EAItB6L,EAAqB9I,EAAiB6I,EAAmBA,EAJnC,EAM5B,IAAIE,GAAoB9L,EAAc4L,GANV,EAc5B,MAPiB,OAAb1C,GAAkC,OAAbA,GAAkC,OAAbA,IAEtC4C,EADAD,EATyB,EAML9I,EAAiB6I,EALjB,EAWTC,GAGZC,GAQJ,KAAAC,wBAA0B,KAAa,IAAAC,EAAAC,EAAAC,EAC1C,MAAMT,EAAuB/iF,KAAKgjF,0BAC5BS,EAAmE,QAAtCH,EAAAtjF,KAAKT,MAAMiB,OAAO6hF,4BAAoB,IAAAiB,GAAtCA,EAAwCppD,UAClB,QAD2BqpD,EAC9EvjF,KAAKT,MAAMiB,OAAO6hF,qBAAqBnoD,UAAUO,UAAE,IAAA8oD,OAAA,EAAnDA,EAAqDjpD,EACpB,QADqBkpD,EACtDT,EAAqB7oD,UAAUO,UAAE,IAAA+oD,OAAA,EAAjCA,EAAmClpD,GAEnC,KAAE+iD,EAAI,SAAEmD,GAAaxgF,KAAKgN,MAC1B02E,EAA0BD,GAA0DzjF,KAAKmgF,wBAE/F,IAAIiD,GADoBpjF,KAAKu3E,uBAAyBmM,GAH1B,EAKsC,IAADC,EAAAC,EAAhD,OAAbpD,GAAkC,OAAbA,GAAkC,OAAbA,IAC1C4C,GAA6B,QAAlBO,EAACtG,MAAAA,GAAY,QAARuG,EAAJvG,EAAMI,cAAM,IAAAmG,OAAA,EAAZA,EAAe,UAAE,IAAAD,EAAAA,EAAI3jF,KAAKu3E,uBANd,GAMsDmM,EANtD,GAQ5B,OAAON,GAOJ,KAAAJ,wBAA0B,KACyB,CAClD9oD,UAAW,CACPC,GAAI,CAAEC,EAAG,kBAAmBC,EAAG,IAAKC,EAAG,KACvCG,GAAI,CAAEL,EAAG,kBAAmBC,EAAG,IAAKC,EAAG,KACvCupD,GAAI,CAAEzpD,EAAG,kBAAmBC,EAAG,IAAKC,EAAG,MAE3CI,UAAU,IAUX,KAAAopD,QAAWr5E,IACd,GAAIA,EAAMqb,MAAQk6D,EAAqB+D,SAAU,CAC7C,MAAMtzE,EAAsBhG,EAAMgG,OAClC,GAAwB,SAApBA,EAAOuzE,SAAqB,CAC5B,MAAM3G,EAAwB5sE,EAC1B4sE,EAAK77D,MACLD,OAAO0L,KAAKowD,EAAK77D,KAAM,UAI/B/W,EAAMqb,MAAQk6D,EAAqBiE,QACnCjkF,KAAK+hF,cAQN,KAAA5K,oBAAsB,KAEzB,GAAIhmE,EAAAA,EAA0B+P,UAAW,CACrC,MAAMk2D,EAA4Bp3E,KAAK2hF,iBACvC,GAA0C,OAAtCvK,EAA0Bl7C,QAC1B,OAAOk7C,EAA0Bl7C,QAAQo7C,YAGjD,OAP6B,GAc1B,KAAAC,qBAAuB,KAE1B,GAAIpmE,EAAAA,EAA0B+P,UAAW,CACrC,MAAMk2D,EAA4Bp3E,KAAK2hF,iBACvC,GAA0C,OAAtCvK,EAA0Bl7C,QAC1B,OAAOk7C,EAA0Bl7C,QAAQs7C,aAGjD,OAP8B,GAyB3B,KAAAhnE,iBAAoB/F,IACvBzK,KAAKT,MAAMiB,OAAOskB,QAAS1T,KAAO3G,EAAMgG,OAAOlM,OAO5C,KAAA2/E,sBAAyBz5E,IAC5BzK,KAAKT,MAAMiB,OAAO2jF,UAAY15E,EAAMgG,OAAOlM,OAuCxC,KAAA6/E,8BAAgC,KACnC,MAAM,MAAE3zC,GAAUzwC,KAAKT,MAAMiB,OACvBqP,EAAUC,OAAAA,EAAAA,iBAAAA,CAAiB,QAAS9P,KAAKqkF,kBAAmB,IAElE,OAAO5zC,MAAAA,OAAK,EAALA,EAAOxsC,IAAI,CAACqgF,EAAiCpgF,KAChD2L,EAAQ6b,cAAcC,MAAQ24D,EAASlO,SACvC,MAAM3qD,EAAazb,OAAAA,EAAAA,uBAAAA,CAAuBhQ,KAAKqkF,kBAAmBx0E,GAC5D00E,EAASrgF,EACTiyE,EAAoC,CACtCzxE,UAAW4/E,EAAS5/E,UACpBhC,UAAW,uCACX0zE,SAAUkO,EAASlO,SACnBC,QAASiO,EAASjO,QAAQC,eAC1BC,aAAc+N,EAASE,iBACvB/gF,KAAM,SACN60B,qBAAsB7M,GAG1B,OACIpsB,EAAAA,cAAC8R,EAAAA,EAAa,CACV2U,IAAKy+D,EACL9N,KAAMN,EACN9kE,UAAW,CAKPqlE,aAAcjsE,IACVzK,KAAKykF,qBAAqBvgF,EAAOuG,IAErC6G,eAAgBtR,KAAKT,MAAMsC,QAAQU,cAWhD,KAAAmiF,gCAAkC,KAAkC,IAAAC,EACvE,MAAM,QAAE7/D,GAAY9kB,KAAKT,MAAMiB,OAE/B,OACIskB,GACIzlB,EAAAA,cAAC8R,EAAAA,EAAa,CACVzO,UAAU,mCACVc,IAAgB,QAAbmhF,EAAE7/D,EAAQthB,WAAG,IAAAmhF,EAAAA,EAAI,KACpBvzE,KAAM0T,EAAQ1T,KACdC,UAAW,CAAEnR,OAAQF,KAAKwQ,iBAAkBc,eAAgBtR,KAAKT,MAAMsC,QAAQU,YAUxF,KAAAqiF,kCAAoC,KACvC,MAAM,UAAET,GAAcnkF,KAAKT,MAAMiB,OAEjC,OACI2jF,GACI9kF,EAAAA,cAAC8R,EAAAA,EAA0B,CACvBC,KAAM+yE,EACNzhF,UAAU,kCACV2O,UAAW,CAAEnR,OAAQF,KAAKkkF,sBAAuB5yE,eAAgBtR,KAAKT,MAAMsC,QAAQU,YAU7F,KAAAsiF,iBAAmB,KACtB,MAAM,YAAEnD,GAAgB1hF,KAAKT,MAAMiB,OACnC,IAAIskF,EAAwB,GAC5B,GAAIpD,MAAAA,GAAAA,EAAallE,IAAK,CAAC,IAADuoE,EAClB,MAAMC,EAAoBtD,EAAYllE,IAAIklC,MAAM,KAC1CujC,EAAuB,EAE7BH,EAAoC,QAAvBC,EADaC,EAAkBA,EAAkB3jF,OAAS4jF,GAAcvjC,MAAM,KACzD,UAAE,IAAAqjC,EAAAA,EAAI,GAE5C,OAAOD,GAOM,KAAAI,oBAAuBz6E,IAAqB,IAAA06E,EACtB,QAAnCA,EAAInlF,KAAKuiF,mBAAmBrmD,eAAO,IAAAipD,GAA/BA,EAAiCC,SAAS36E,EAAMgG,SAGpDzQ,KAAK+hF,cA1hBL/hF,KAAKqkF,kBAAoB15E,OAAAA,EAAAA,mBAAAA,CACrB3K,KAAKT,MAAMsC,QAAQU,QAAQqI,kBAC3B5K,KAAKT,MAAMsL,aACX7K,KAAKT,MAAMuC,WAEf,MAAM0+E,EAAWx+C,OAAAA,EAAAA,SAAAA,CAAS,CAAEC,QAASC,EAAAA,YAAYu+C,QAAS5+E,QAAS7B,KAAKT,MAAMsC,QAAQU,UACtFvC,KAAKuhF,kBAAoB,oBAAoBvhF,KAAK6kF,mBAClD7kF,KAAKgN,MAAQ,CACTsqE,YAAa,EACb+F,KAAM,KACNmD,SAAAA,EACAsB,aAAc,IAElB9hF,KAAKi3E,mBAAkC,OAAbuJ,GAAkC,OAAbA,EAC/CxgF,KAAK2hF,iBAAmBtiF,EAAAA,YACxBW,KAAKuiF,mBAAqBljF,EAAAA,YAGvBmb,oBAUH,GATIrJ,EAAAA,EAA0B+P,YAC1BK,OAAOmX,iBAAiB,SAAU14B,KAAKugF,mBACvChrB,SAAS78B,iBAAiB,UAAW14B,KAAK8jF,SAAS,GACnDvuB,SAAS78B,iBAAiB,YAAa14B,KAAKklF,sBAEhDG,WAAW,KACPrlF,KAAKugF,qBACNP,EAAqBsF,iBAEpBn0E,EAAAA,EAA0B+P,WAAalhB,KAAK2hF,iBAAiBzlD,QAAS,CACtE,MAAMV,EAAoCx7B,KAAK2hF,iBAAiBzlD,QAAQs5B,uBACpE,4CAEAj+C,EAAAA,gBAAgBC,YAAY+tE,MAAMC,KAAKhqD,KACvCA,EAAO,GAAGkP,gBAAgB,WA2B/B84B,uBACCryD,EAAAA,EAA0B+P,YAC1BK,OAAOkiD,oBAAoB,SAAUzjE,KAAKugF,mBAC1ChrB,SAASkO,oBAAoB,UAAYzjE,KAAK8jF,SAAsC,GACpFvuB,SAASkO,oBAAoB,YAAazjE,KAAKklF,qBAAqB,IAiBrEj4E,SACH,MAAMc,EAASC,EAAAA,EAAA,GACPhO,KAAKT,OAAmD,IAC5D0wC,qBAAsB,CAClBvhC,YAAa1O,KAAKT,MAClBmD,UAAWkiB,GAAAA,CAAW,mBAAoB5kB,KAAKuhF,kBAAmBvhF,KAAKT,MAAMiB,OAAOkC,YAExFwtC,4BAA6B,CACzB1sC,IAAK,MACLd,UAAWkiB,GAAAA,CAAW,2BAA4B5kB,KAAKuhF,kBAAmBvhF,KAAKT,MAAMiB,OAAOkC,WAC5FkoB,IAAK5qB,KAAK2hF,kBAEd9E,SAAU78E,KAAKT,MAAMiB,OAAOk/E,YAC5BvvC,YAAanwC,KAAK0gF,oBAClB7vC,QAAS7wC,KAAKwiF,gBACd1xC,YAAa9wC,KAAKsiF,oBAClB1xC,wBAAyB5wC,KAAKyiF,0BAC9B9xC,uBAAwB3wC,KAAKqjF,0BAC7B3/E,MAAO1D,KAAK0kF,kCACZtzE,KAAMpR,KAAK4kF,oCACXn0C,MAAOzwC,KAAKokF,gCACZh0C,iBAAkB,CAAE1tC,UAAW,6BAC/BguC,oBAAqB,CAAEhuC,UAAW,kCAClC2tC,kBAAmBumC,EAA6B,CAC5CtlE,eAAgBtR,KAAKT,MAAMsC,QAAQU,QACnC8tC,kBAAmBrwC,KAAKT,MAAMiB,OAAO6vC,kBACrCulC,2BAA4B51E,KAAK41E,2BACjC6P,gCAAiCzlF,KAAKylF,gCACtC9O,+BAAgC32E,KAAK22E,iCAEzC+O,qBAAsB1lF,KAAK41E,2BAC3B+P,0BAA2B3lF,KAAKylF,gCAChCG,yBAA0B5lF,KAAK41E,6BAGnC,OAAO51E,KAAKT,MAAM6P,WAAWrB,GA0Q1B02E,qBAAqBvO,EAAmBzrE,GACvCzK,KAAKT,MAAMiB,OAAOiwC,OAASzwC,KAAKT,MAAMiB,OAAOiwC,MAAMzH,OAAOktC,MAC1Dl2E,KAAKT,MAAMiB,OAAOiwC,MAAMzH,OAAOktC,IAAYE,SAAW3rE,EAAMgG,OAAOlM,OAwBpEqxE,2BAA2BnrE,GAC1BzK,KAAKT,MAAMiB,OAAO6vC,oBAClBrwC,KAAKT,MAAMiB,OAAO6vC,kBAAkBvrB,QAAUra,EAAMgG,OAAOlM,OAS5DoyE,+BAA+BT,EAAmBzrE,GAAoC,IAAAo7E,EACzF,MAAMx1C,EAAuD,QAAtCw1C,EAAG7lF,KAAKT,MAAMiB,OAAO6vC,yBAAiB,IAAAw1C,EAAAA,EAAI,GAC7Dx1C,EAAkBI,QAClBJ,EAAkBI,MAAMzH,OAAOktC,IAAYE,SAAW3rE,EAAMgG,OAAOlM,OAQpEkhF,gCAAgCh7E,GAC/BzK,KAAKT,MAAMiB,OAAO6vC,oBAClBrwC,KAAKT,MAAMiB,OAAO6vC,kBAAkBwlC,QAAUprE,EAAMgG,OAAOlM,QA6GxD07E,EAAAA,QAAAA,2NCxlBAtwE,IAAAA,EA7BgFC,IAO1F,IAP2F,UAC5FtL,EAAS,UACTI,EAAS,SACTQ,EAAQ,iBACRL,EAAgB,SAChBF,EAAQ,GACR3C,GACH4N,EACG,MAAMC,EAAUC,OAAAA,EAAAA,iBAAAA,CAAiB,QAASjL,EAAmB,IACvDkL,EAAYC,OAAAA,EAAAA,uBAAAA,CAAuBnL,EAAmBgL,GAE5D,OACIxQ,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAAA,QAAAwD,OAAAC,OAAA,CACIJ,UAAU,mDACVuN,KAAK,WAAU,aACHvL,EAAS,eACPJ,EACd4L,KAAK,6BACLvL,SAAUA,EACVO,SAAUA,EACViL,QAAS7L,EACTtC,GAAIA,GACA+N,MC1BLK,IAAAA,EARwFR,IAAgB,IAAf,QAAEhM,GAASgM,EAC/G,OAAKhM,EAIEvE,EAAAA,cAAA,KAAGqD,UAAU,mDAAmDkB,GAH5D,MCMAyM,IAAAA,EARoFT,IAAc,IAAb,MAAElM,GAAOkM,EACzG,OAAKlM,EAIErE,EAAAA,cAAA,KAAGqD,UAAU,iDAAiDgB,GAH1D,2lBCoDf,IAAM4M,EAAN,cAAyCjR,EAAAA,UASrCC,YAAYC,GACRC,MAAMD,GAPO,KAAAM,iBAAiDR,EAAAA,YAE9C,KAAAkR,iBAA2B,EA8HxC,KAAAC,iBAAoB/F,GAA0CzK,KAAKT,MAAMiB,OAAOmC,YAAc8H,EAAMgG,OAAOlM,MAEjG,KAAAmM,sBAAwB,KACrC,MACIzQ,aAAa,QAAEuN,GACfhN,QAAQ,aAAEmQ,EAAY,YAAEhO,IACxB3C,KAAKT,MACHqR,EAAapD,IAAYxN,KAAK6Q,WAC9BC,EAA8B9Q,KAAKuQ,iBACnC,kBAAEQ,GAAsB/Q,KAAKT,MAAM4C,UACzC,MAAO,CACH6O,4BAA6B,CAAEtO,UAAW,+CAC1CuO,SAAUN,GACNtR,EAAAA,cAAC6R,EAAiBrO,OAAAC,OAAA,GACV,CACAwB,UAAWwM,EACXpM,UAAWqM,EACX7L,SAAU0L,EACVjM,SAAU3E,KAAK2E,SACf3C,GAAIhC,KAAKT,MAAMyC,GACf6C,iBAAkB7E,KAAK6E,oBAInClC,YACItD,EAAAA,cAAC8R,EAAAA,EAA0B,CACvBC,KAAMzO,EACN0O,UAAW,CAAEnR,OAAQF,KAAKwQ,iBAAkBc,eAAgBtR,KAAKT,MAAMsC,QAAQU,aAO9E,KAAAzC,KAAOC,UAA0B,IAAAe,EAAAyQ,EAC9C,MAAM,KACFxQ,EACAP,QAAQ,aAAEmQ,IACV3Q,KAAKT,MAEH4B,EAAgD,QAAlCL,EAAGd,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAH,OAAA,EAA/BA,EAAiCI,aAAaC,eAGjEA,GAAsC,QAAxBoQ,EAAIxQ,EAAKC,SAASC,cAAM,IAAAsQ,GAApBA,EAAsBT,8BAAgCH,SAClE3Q,KAAKwR,oCAAmC,GAC9CxR,KAAKuQ,iBAAkB,GAChBI,UACD3Q,KAAKwR,oCAAmC,GAC9CxR,KAAKuQ,iBAAkB,GAG3BvQ,KAAKT,MAAMU,YAAYH,KAAK,CACxBI,OAAQF,KAAKE,OACbG,SAAUL,KAAKK,SACfC,SAAUN,KAAKM,SACfC,OAAQY,EAAiB,WAAanB,KAAKuQ,gBAAkB,QAAU,cAI9D,KAAAlN,gBAAkB,KAC/B,MAAM,kBAAEC,GAAsBtD,KAAKT,MAAM4C,UACzC,MAAO,CACHJ,MAAO,CAAEyB,IAAK,MAAOd,UAAW,0CAA2Ce,KAAM,QAAS,YAAa,aACvGC,MAAOrE,EAAAA,cAACsE,EAAmBd,OAAAC,OAAA,GAAK,CAAEY,MAAOJ,KACzCM,QAASvE,EAAAA,cAACwE,EAAqBhB,OAAAC,OAAA,GAAK,CAAEc,QAAS5D,KAAK8D,kBAI3C,KAAAyB,gBAAkB,KAC/B,MAAM,eAAEC,EAAiB,SAAQ,mBAAEiM,GAAuBzR,KAAKT,MAAM4C,UACrE,OACI9C,EAAAA,cAAC2F,EAAAA,OAAM,CACHtC,UAAU,kDACVgB,MAAO8B,EAAc,aACTiM,EACZxM,MAAM,YACNE,QAASnF,KAAKK,UAEbmF,IAKI,KAAAV,cAAgB,KAC7B,MAAM,aAAEC,EAAe,OAAM,iBAAE2M,GAAqB1R,KAAKT,MAAM4C,UAC/D,OACI9C,EAAAA,cAAC2F,EAAAA,OAAM,CACHtC,UAAU,gDACVgB,MAAOqB,EAAY,aACP2M,EACZzM,MAAM,UACNE,QAASnF,KAAKM,UAEbyE,IAKI,KAAAM,cAAgB,KAC7B,MAAM,aAAEC,EAAe,SAAQ,iBAAEqM,GAAqB3R,KAAKT,MAAM4C,UACjE,OACI9C,EAAAA,cAAC2F,EAAAA,OAAM,CACHtC,UAAU,gDACVgB,MAAO4B,EAAY,aACPqM,EACZ1M,MAAM,UACNE,QAASnF,KAAKE,QAEboF,IAKI,KAAApF,OAAS,KACtBF,KAAKT,MAAMuC,UAAUgE,YAAY,0CAEjC9F,KAAK2F,cAGQ,KAAArF,SAAWP,UACxBC,KAAKT,MAAMuC,UAAUgE,YAAY,4CAE5B9F,KAAKuQ,iBAQNvQ,KAAK4F,mBACC5F,KAAKwR,mCAAmCxR,KAAKuQ,iBACnDvQ,KAAKT,MAAMU,YAAYoG,WATnBrG,KAAK6Q,iBACC7Q,KAAKwR,mCAAmCxR,KAAKuQ,kBAEnDvQ,KAAKyF,SAASzF,KAAKT,MAAM4C,UAAU2B,cACnC9D,KAAKT,MAAMU,YAAYyF,aAAY,KAS9B,KAAAC,WAAa,KAC1B3F,KAAKT,MAAMU,YAAY0F,cAGV,KAAAF,SAAY3B,IACzB9D,KAAKT,MAAMuC,UAAUC,MAAM+B,GAC3B9D,KAAKT,MAAMU,YAAYyF,aAAY,GACnC1F,KAAKT,MAAMU,YAAY0F,aACvB3F,KAAK8D,aAAeA,GAGP,KAAAzD,SAAW,KAIxB,GAHAL,KAAKT,MAAMuC,UAAUgE,YAAY,6CAG5B9F,KAAKT,MAAMwB,KAAKC,SAASC,OAC1B,OAGoBjB,KAAKT,MAAMwB,KAAKC,SAASC,OAAO6P,6BAMpD9Q,KAAKuQ,iBAAkB,EACvBvQ,KAAKT,MAAMU,YAAYyF,aAAY,GACnC1F,KAAKT,MAAMU,YAAYoG,WALvBrG,KAAKT,MAAMU,YAAY0F,cASd,KAAA6L,mCAAqCzR,MAAAA,IAC9CC,KAAKT,MAAMwB,KAAKC,SAASC,cACnBjB,KAAKT,MAAMwB,KAAKC,SAASC,OAAOuQ,mCAAmC,CAAEI,+BAAgCrB,KAIlG,KAAA3K,WAAa,KAC1B5F,KAAKT,MAAMU,YAAYyF,aAAY,GACnC1F,KAAK8D,kBAAe1D,GAGP,KAAAuE,SAAW5E,MAAAA,IACxB,MAAMoQ,EAAU1F,EAAMgG,OAAON,QAC7BnQ,KAAKuQ,gBAAkBJ,EAKnBnQ,KAAKT,MAAMwB,KAAKC,SAASC,cACnBjB,KAAKT,MAAMwB,KAAKC,SAASC,OAAO4Q,kCAAkC,CAAEC,8BAA+B3B,UAMvGnQ,KAAKM,YAxTXN,KAAK6E,iBAAmB8F,OAAAA,EAAAA,mBAAAA,CACpB3K,KAAKT,MAAMsC,QAAQU,QAAQqI,kBAC3B5K,KAAKT,MAAMsL,aACX7K,KAAKT,MAAMuC,WAIT,kBACN,MAAgF,aAAxE9B,KAAKT,MAAMwB,KAAKC,SAASC,QAAUjB,KAAKT,MAAMwB,KAAKC,SAAST,QAG9D,oBACN,MAAM,mBAAEwR,GAAuB/R,KAAKT,MAAMiB,OAC1C,OAAQR,KAAKT,MAAMU,YAAYsO,yBAA2BwD,IAAsB,GAG1E,iBACN,MAAM,mBAAEA,GAAuB/R,KAAKT,MAAMiB,OAC1C,OAAQR,KAAKT,MAAMU,YAAYsO,yBAA2BwD,EAGpD,4CACN,MAAM,aAAEpB,GAAiB3Q,KAAKT,MAAMiB,OACpC,OAAQmQ,EAGL,0BAAuB,IAAA1K,EAC1B4F,OAAAA,EAAAA,EAAAA,CACI,IAAM7L,KAAK8L,YACX/L,gBACUC,KAAKF,SAInBiM,OAAAA,EAAAA,EAAAA,CACI,IAAM/L,KAAKT,MAAMwB,KAAKC,SAASC,QAAUjB,KAAKT,MAAMwB,KAAKC,SAASC,OAAO6P,4BACzE/Q,UAAW,IAAA8F,EACP7F,KAAKuQ,iBAC8B,QAA/B1K,EAAA7F,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAA4E,OAAA,EAA/BA,EAAiCiL,8BAA+B9Q,KAAKgS,wCAI9C,QAAnC/L,EAAIjG,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAgF,GAA/BA,EAAiCmG,4CACjCL,OAAAA,EAAAA,EAAAA,CACI,SAAA3F,EAAA,OAAqC,QAArCA,EAAMpG,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAmF,OAAA,EAA/BA,EAAiCkG,eACvCA,IAEQA,GACAA,EAAcC,gBAAkBC,EAAAA,cAAc8D,4BAC9ChE,EAAcxI,cAEd9D,KAAKyF,SAAS6G,EAAcxI,gBAKxCiI,OAAAA,EAAAA,EAAAA,CACI,SAAA3D,EAAA,OAAqC,QAArCA,EAAMpI,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAmH,OAAA,EAA/BA,EAAiCsE,oBACvCA,IACQA,IAAuBC,EAAAA,eAAe2D,4BACjC1D,OAAAA,EAAAA,qBAAAA,CAAqB5M,KAAKH,iBAAkBG,KAAKT,MAAMsC,QAAQuH,kBAOjFyD,sBACHC,EACAC,GAEA,OAAI/M,KAAKgN,QAAUD,GAAa/M,KAAKT,QAAUuN,EAM5CG,SAAM,IAAAvD,EACT,MACIzJ,aAAa,QAAEuN,EAAO,SAAEE,GACxBlN,QAAQ,UAAEkC,IACV1C,KAAKT,MACHuR,EAA6D,QAAlCpH,EAAG1J,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAyI,OAAA,EAA/BA,EAAiCoH,4BAC/DnD,EAAUD,EACVuE,GAAiBzE,EACjBK,GAAkBH,GAAYF,EAE9B0E,EAAWlS,KAAKT,MAAMwB,KAAKoR,OAAOlR,OAClCmR,EAAuBF,MAAAA,OAAQ,EAARA,EAAU1Q,KAAM2Q,GAA0C,IAA1BA,EAAOE,gBAAkD,IAA1BF,EAAOG,gBAE7FvE,EAASC,EAAAA,EAAAA,EAAA,GACRhO,KAAKT,OACLS,KAAKgN,OAAK,IACboF,qBAAAA,EACA7B,gBAAiBvQ,KAAKuQ,gBACtBnC,iBAAkBpO,KAAK8D,aACvBjE,iBAAkBG,KAAKH,iBACvBwO,UAAW,CACPV,QAAAA,EACAW,iBAAkB2D,GAAiBjS,KAAKuS,cACxC/D,iBAAkBX,GAAkB7N,KAAKuS,cACzC9D,mBAAoBwD,GAAiBjS,KAAKuS,eAAiBzB,GAE/D0B,2BAA4B,CACxB9D,YAAa1O,KAAKT,MAClBmD,UAAWiM,GAAAA,CAAU,mCAAoCjM,IAE7D+P,0BAA2BzS,KAAK0Q,wBAChC5M,aAAc9D,KAAKqD,kBACnB4L,WAAYjP,KAAK8E,gBACjBoK,WAAYlP,KAAKqF,gBACjB8J,aAAcnP,KAAKuF,kBACnBH,OAAQpF,KAAKM,SACbJ,OAAQF,KAAKE,OACbG,SAAUL,KAAKK,SACfsE,SAAU3E,KAAK2E,WAEnB,OAAO3E,KAAKT,MAAM6P,WAAWrB,KA3HrBsB,OAAAA,EAAAA,EAAAA,CAAA,CAAXC,EAAAA,GAAU,sCAECD,OAAAA,EAAAA,EAAAA,CAAA,CAAXC,EAAAA,GAAU,mCAWDD,OAAAA,EAAAA,EAAAA,CAAA,CAATE,EAAAA,GAAQ,gCAICF,OAAAA,EAAAA,EAAAA,CAAA,CAATE,EAAAA,GAAQ,kCAKCF,OAAAA,EAAAA,EAAAA,CAAA,CAATE,EAAAA,GAAQ,+BAKCF,OAAAA,EAAAA,EAAAA,CAAA,CAATE,EAAAA,GAAQ,0DAqITF,OAAAA,EAAAA,EAAAA,CAAA,CADCG,EAAAA,GAAM,2BApKLc,EAA0BjB,OAAAA,EAAAA,EAAAA,CAAA,CAF/BI,EAAAA,gBACAC,EAAAA,GACKY,GAuUSA,EAAAA,QAAAA,2RClSA8gC,IAAAA,EA7DWxhC,IAWkB,IAXjB,SACvBlC,EAAQ,SACR2jC,EAAQ,MACR/kB,EAAK,UACLglB,EAAS,UACTC,EAAS,SACT5sC,EAAQ,SACRrE,EAAQ,SACRD,EACA8B,WAAW,WAAEqvC,EAAU,eAAEC,EAAc,aAAE1sC,EAAY,eAAES,GAAgB,MACvE6oC,GACmBz+B,EACnB,MAAM8f,EAhBoB/qB,CAAAA,GAAuC8F,IACjE9F,EAAS8F,EAAMgG,OAAOlM,OAAS,KAeTmtC,CAAqB/sC,GAE3C,MAAO,CACH6pC,aAAc,CAAE9rC,UAAW,+CAM3B+rC,aACIpvC,EAAAA,cAAC2F,EAAAA,OAAM,CAACtC,UAAU,sCAAsCgB,MAAOqB,EAAcE,MAAM,UAAUE,QAAS7E,GACjGyE,GAQToK,aACI9P,EAAAA,cAAC2F,EAAAA,OAAM,CAACtC,UAAU,wCAAwCgB,MAAO8B,EAAgBP,MAAM,YAAYE,QAAS9E,GACvGmF,GAGTkpC,gBAAiB,CAAEhsC,UAAWkiB,GAAAA,CAAW,mCAAoC,CAAE,aAAclX,KAC7FkV,MACIvjB,EAAAA,cAAA,SAAO2C,GAAG,mCAAmCU,UAAU,0CAClD8uC,GAGTzvC,MAAO2L,GACHrO,EAAAA,cAAA,QAAM2C,GAAG,mCAAmCU,UAAU,yCAAyCe,KAAK,QAAO,YAAW,UACjHguC,GAGT3xB,MACIzgB,EAAAA,cAAA,SACIurB,IAAKymB,EACLphC,KAAK,OACLvN,UAAU,qDAAoD,aAClD8uC,EACZ7sC,SAAU+qB,EACVnrB,MAAO+nB,EAAK,kBACI,wECrEjBD,IAAAA,EAVQzc,IAAA,IAAC,QAAE+X,EAAO,MAAE2E,EAAOnqB,WAAW,aAAEmD,GAAc,OAAEpF,GAA+B0P,EAAA,MAAwB,CAC1H2c,cAAe,CAAE7pB,UAAW,4CAC5B4pB,MAAOjtB,EAAAA,cAAA,QAAMqD,UAAU,6CAA6C4pB,GACpEpd,WAAYyY,GACRtoB,EAAAA,cAAC2F,EAAAA,OAAM,CAACtC,UAAU,sCAAsCgB,MAAO4B,EAAcL,MAAM,OAAOE,QAASjF,GAC9FoF,8kBCkCb,IAAMwgF,EAAN,cAAmCzmF,EAAAA,UAAnCC,kCACW,KAAA0N,MAAoC,CACvCsf,MACKtsB,KAAKT,MAAMsC,SACR7B,KAAKT,MAAMsC,QAAQU,SACnBvC,KAAKT,MAAMsC,QAAQU,QAAQm8C,MAC3B1+C,KAAKT,MAAMsC,QAAQU,QAAQm8C,KAAKC,iBAChC3+C,KAAKT,MAAMsC,QAAQU,QAAQm8C,KAAKqnC,cACpC,GACJ13C,MAAO,GACPS,YAAY,EACZC,SAAS,GAGI,KAAAsC,SAA8ChyC,EAAAA,YAE9C,KAAAQ,iBAAiDR,EAAAA,YAyHjD,KAAAS,KAAOC,UAA0B,IAAAimF,EAAA5sE,EAAAxJ,EAAAq2E,EAC9C,MAAMv/E,EAAgB1G,KAAKT,MAAMwB,KAAKC,SAASC,OACzCilF,EAA+D,QAArCF,EAAGhmF,KAAKT,MAAMwB,KAAKolF,0BAAkB,IAAAH,OAAA,EAAlCA,EAAoC/kF,OAEjEE,EAAiBuF,MAAAA,OAAa,EAAbA,EAAexF,aAAaC,eACnD,IAAIilF,EAAsB,GAItBA,EADAl/D,EAAAA,EAAsBlnB,KAAKT,MAAMsC,QAAQU,SAErC2jF,QAAmE9lF,IAArC8lF,EAA2BG,MACnDH,EAA2BG,MAC3BrmF,KAAKsmF,+BAEDtmF,KAAKgN,MAAMsf,MAG7B,MAAMi6D,EAAc7/E,MAAAA,OAAa,EAAbA,EAAexF,aAAa2G,KAAK2+E,aAC/Cl6D,EAAQnrB,EACoC,QADtBiY,EACtBpZ,KAAKT,MAAMsC,QAAQU,QAAQm8C,KAAKqnC,oBAAY,IAAA3sE,EAAAA,EAAI,GAIjC,QAJmCxJ,EAClD22E,MAAAA,EAAAA,EACC7/E,MAAAA,GAAAA,EAAe6D,2BAA6BnD,EAAAA,iBAAiBC,cAAcX,EAAc+/E,iCACpF//E,EAAc+/E,qCACdrmF,SAAS,IAAAwP,EAAAA,EACfw2E,EACAM,EAAchgF,MAAAA,GAAgD,QAAnCu/E,EAAbv/E,EAAexF,aAAa2G,KAAK8+E,uBAAe,IAAAV,OAAA,EAAhDA,EAAkDl+E,OAAQgI,GAChD,UAAnBA,EAAUzC,MAEfs5E,EAAal6D,eAAeC,QAAQ,SAEtC+5D,GAAeA,EAAY,IAAMA,EAAY,GAAGptC,UAEhDt5C,KAAKyX,SAAS,CAAE42B,MAAOq4C,EAAY,GAAGptC,YAC/BstC,GACP5mF,KAAKyX,SAAS,CAAE42B,MAAOu4C,IAE3B,MAAMC,EAAe7mF,KAAK8mF,wBAEtBJ,GAAeA,EAAY,IAAMA,EAAY,GAAGptC,UAAYotC,EAAY,GAAGptC,UAAYt5C,KAAKgN,MAAMqhC,OAEtG,IAAI9tC,EACJ,MAAMwmF,EAAe/mF,KAAK+mF,aAAaz6D,GAEnC/rB,EADAmmF,GAAsC,IAAvBA,EAAYrlF,OAClB,WACFwlF,GAAgBE,EACd,QAEA,WAOb/mF,KAAKT,MAAMU,YAAYH,KAAK,CACxBI,OAAQF,KAAKE,OACbG,SAAUL,KAAKK,SACfC,SAAUN,KAAKM,SAMfC,OAAQA,EACRmN,WAAY4e,IAAUy6D,IAGtBz6D,SACMtsB,KAAKgnF,mBAAmB16D,GAC9B5lB,MAAAA,GAAAA,EAAeugF,4BAA4B,CAAEC,0BAA0B,KAEvExgF,MAAAA,GAAAA,EAAeugF,4BAA4B,CAAEC,0BAA0B,KAI9D,KAAAviF,SAAYwiF,IACzB,MAAM76D,GAAS66D,GAAY,IAAI1iE,QAAQ,IAAIyH,OAAO,OAAQ,MAAO,IACjElsB,KAAKyX,SAAS,CAAE6U,MAAAA,IACZtsB,KAAKT,MAAMU,YAAYyN,WAEvB1N,KAAKT,MAAMU,YAAYyF,aAAY,GACnC1F,KAAKyX,SAAS,CACV2vE,kBAAkB,MAKb,KAAAz4C,cAAgB,CAAC04C,EAAkBx4C,MAClB,IAA1B7uC,KAAKgN,MAAM8hC,YACX9uC,KAAKyX,SAAS,CAAEq3B,YAAY,IAEhC,IAAIw4C,EAAmBD,EACvB,MAEME,EAFeF,EAAS5iE,QAAQ,MAAO,IAERA,QAAQ,wBAAyB,YACtD,QAAZoqB,GAAiC,QAAZA,IACrBy4C,EAAWC,GAEfvnF,KAAKyX,SAAS,CAAE42B,MAAOi5C,IACnBtnF,KAAKT,MAAMU,YAAYyN,WAEvB1N,KAAKT,MAAMU,YAAYyF,aAAY,GACnC1F,KAAKyX,SAAS,CACV2vE,kBAAkB,MAKb,KAAAd,6BAA+B,KAE5CtmF,KAAKT,MAAMU,YAAYyF,aAAY,GACnC1F,KAAKyX,SAAS,CACV2vE,kBAAkB,IAEf,IAGM,KAAAL,aAAgBz6D,GACtBk7D,EAAAA,WAAWC,aAAat7D,KAAKG,GAGvB,KAAAw6D,wBAA2Bz4C,IACxC,IAAIO,GAAkB,EACtB,GACI5uC,KAAKT,MAAMwB,KAAK8uC,4BAChB7vC,KAAKT,MAAMwB,KAAK8uC,2BAA2B5uC,QAC3CjB,KAAKT,MAAMwB,KAAK8uC,2BAA2B5uC,OAAO,IAClDjB,KAAKT,MAAMwB,KAAK8uC,2BAA2B5uC,OAAO,GAAG6uC,gBACrD9vC,KAAKT,MAAMwB,KAAK8uC,2BAA2B5uC,OAAO,GAAG6uC,eAAiB,EACxE,CAEElB,EAAqC,IADd5uC,KAAKT,MAAMwB,KAAK8uC,2BAA2B5uC,OAAO,GAAG6uC,eAIhF,MAAM43C,EAAa,gEACbC,EAAgB3nF,KAAKgN,MAAMqhC,MAAQq5C,EAAWv7D,KAAKnsB,KAAKgN,MAAMqhC,OAASA,EAAQq5C,EAAWv7D,KAAKkiB,GAAS,GAC9G,OAAIO,KACO+4C,GAME,KAAAX,mBAAqBjnF,MAAAA,IAC9BC,KAAKT,MAAMwB,KAAKC,SAASC,eACnBjB,KAAKT,MAAMwB,KAAKC,SAASC,OAAO6jD,yBAAyB,CAAEC,sBAAAA,IACjE/kD,KAAKyX,SAAS,CAAE6U,MAAOy4B,MAId,KAAA7kD,OAAS,KACtBF,KAAKT,MAAMuC,UAAUgE,YAAY,mCAEjC9F,KAAKT,MAAMU,YAAY0F,cAGnB,KAAAiiF,8BAAgC7nF,MAAOusB,EAA2B+hB,KACtE,MAAMrtC,QAAiBhB,KAAKT,MAAMwB,KAAKC,SACvC,IAAI8c,EACA9c,GAAYA,EAASE,cAAgBF,EAASE,aAAa2G,MAAQ7G,EAASE,aAAa2G,KAAKC,YAC9FgW,EAAU9c,EAASE,aAAa2G,KAAKC,UAAU,GAAGiN,iBAElD+I,GAAWA,EAAQuoE,QAAU/5D,IAC7BxO,EAAQyZ,MAAQ8W,EAChBvwB,EAAQuoE,MAAQ/5D,QAGVtrB,EAASkjD,sBAAsB,CAAEC,mBAAoBrmC,MAIlD,KAAA+pE,wBAA0B9nF,MAAOusB,EAAgB+hB,KAC9D,MAAM,kBAAEy5C,GAAsB9nF,KAAKT,MAAMiB,OAErCsnF,IAA2C,IAAtBA,SACf9nF,KAAK4nF,8BAA8Bt7D,EAAO+hB,IAIvC,KAAA/tC,SAAWP,UACxBC,KAAKT,MAAMuC,UAAUgE,YAAY,qCAEjC,MAAM,MAAEwmB,EAAK,MAAE+hB,GAAUruC,KAAKgN,MAC9BhN,KAAKyX,SAAS,CAAEs3B,SAAS,IACzBriB,eAAe8C,QAAQ,QAAS6e,GAChC3hB,eAAe8C,QAAQ,QAASlD,SAC1BtsB,KAAK+nF,YAAYz7D,EAAO+hB,GAE9BruC,KAAKyX,SAAS,CAAEs3B,SAAS,KAQZ,KAAAg5C,YAAchoF,MAAOusB,EAAe+hB,KACjD,MAAMwe,EAAU7sD,KAAK+mF,aAAaz6D,GAC5Bu6D,EAAe7mF,KAAK8mF,0BAC1B,GAAKj6B,GAAYg6B,QAWP7mF,KAAK6nF,wBAAwBv7D,EAAO+hB,SACpCruC,KAAKgnF,mBAAmB16D,GAC9BtsB,KAAKT,MAAMU,YAAYoG,cAbI,KAAA2hF,EACtBn7B,GACD7sD,KAAKT,MAAMU,YAAYyF,aAAY,GAElCmhF,GACD7mF,KAAKyX,SAAS,CAAEq3B,YAAY,IAGhC,MAAMhvB,GAA6B,QAArBkoE,EAAAhoF,KAAKqxC,SAASnV,eAAO,IAAA8rD,OAAA,EAArBA,EAAuBz9C,QAAUvqC,KAAKqxC,SAASnV,QAC7Dpc,MAAAA,GAAAA,EAAOyqB,UAQE,KAAAlqC,SAAW,KAIxB,GAHAL,KAAKT,MAAMuC,UAAUgE,YAAY,sCAG5B9F,KAAKT,MAAMwB,KAAKC,SAASC,OAC1B,OAGJ,MAAMqrB,EAAQtsB,KAAKT,MAAMwB,KAAKC,SAASC,OAAO8pD,mBACzCz+B,GAKDtsB,KAAKyX,SAAS,CACV6U,MAAAA,IAEJtsB,KAAKT,MAAMU,YAAYyF,aAAY,GACnC1F,KAAKyX,SAAS,CACV2vE,kBAAkB,IAEtBpnF,KAAKT,MAAMU,YAAYoG,WAVvBrG,KAAKT,MAAMU,YAAY0F,cAed,KAAAi0C,iBAAoB91C,IACjC9D,KAAKT,MAAMuC,UAAUC,MAAM+B,GAC3B9D,KAAKT,MAAMU,YAAYyF,aAAY,GACnC1F,KAAKT,MAAMU,YAAY0F,aACvB3F,KAAKyX,SAAS,CACV2vE,kBAAkB,EAClBtjF,aAAAA,KA/WE,kBACN,MAAgF,aAAxE9D,KAAKT,MAAMwB,KAAKC,SAASC,QAAUjB,KAAKT,MAAMwB,KAAKC,SAAST,QAG9D,oBACN,OAAOP,KAAKT,MAAMU,YAAYyN,WAAa1N,KAAKgN,MAAMo6E,iBAGnD5sE,oBAAiB,IAAApS,EACpByD,OAAAA,EAAAA,EAAAA,CACI,IAAM7L,KAAK8L,YACX/L,gBACUC,KAAKF,SAInBiM,OAAAA,EAAAA,EAAAA,CACI,SAAAjL,EAAA,OAAqC,QAArCA,EAAMd,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAH,OAAA,EAA/BA,EAAiCyJ,0BACvCxK,MAAAA,IAAiC,IAAA8F,EAAAI,EAAAG,EAC7B,MAAMqgF,EAAkG,QAAnE5gF,EAAkC,QAAlCI,EAAGjG,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAgF,OAAA,EAA/BA,EAAiCwgF,uCAA+B,IAAA5gF,EAAAA,EAAI,GACtGoiF,GACD7gF,EAAAA,iBAAiBC,cAAco/E,IAChCA,IAAoCzmF,KAAKgN,MAAMsf,OAG/C/hB,GACiC,QAAhCnE,EAACpG,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAmF,GAA/BA,EAAiCg4D,0BAA2B6pB,SAExDjoF,KAAK+nF,YAAYtB,KAKA,QAAnCr+E,EAAIpI,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAmH,GAA/BA,EAAiCgE,4CACjCL,OAAAA,EAAAA,EAAAA,CACI,SAAArC,EAAA,OAAqC,QAArCA,EAAM1J,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAyI,OAAA,EAA/BA,EAAiC4C,eACvCA,IACQA,GAAiBA,EAAcC,gBAAkBC,EAAAA,cAAcs5E,sBAAwBx5E,EAAcxI,cACrG9D,KAAK45C,iBAAiBttC,EAAcxI,gBAKhDiI,OAAAA,EAAAA,EAAAA,CACI,SAAApC,EAAA,OAAqC,QAArCA,EAAM3J,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAA0I,OAAA,EAA/BA,EAAiC+C,oBACvCA,IACQA,IAAuBC,EAAAA,eAAem5E,sBACjCl5E,OAAAA,EAAAA,qBAAAA,CAAqB5M,KAAKH,iBAAkBG,KAAKT,MAAMsC,QAAQuH,kBAOjFyD,sBAAsBC,EAA6CC,GACtE,OAAI/M,KAAKgN,QAAUD,GAAa/M,KAAKT,MAAMwB,OAAS+L,EAAU/L,KAM3DkM,SAAM,IAAAlD,EAAAE,EACT,MACIzJ,QAAQ,UAAEkC,GAAW,UACrBP,EACAlC,aAAa,QAAEuN,EAAO,uBAAEe,IACxBvO,KAAKT,OACH,iBAAE6nF,EAAgB,aAAEtjF,GAAiB9D,KAAKgN,MAC1Csf,EAA2D,QAAtDviB,EAAkC,QAAlCE,EAAGjK,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAgJ,OAAA,EAA/BA,EAAiC8gD,0BAAkB,IAAAhhD,EAAAA,EAAI,GAE/DgE,EAASC,EAAAA,EAAAA,EAAA,GACRhO,KAAKT,OACLS,KAAKgN,OAAK,IACbqhC,MAAOruC,KAAKgN,MAAMqhC,MAClBS,WAAY9uC,KAAKgN,MAAM8hC,WACvBjvC,iBAAkBG,KAAKH,iBACvB8E,SAAU3E,KAAK2E,SACfgqC,cAAe3uC,KAAK2uC,cACpBzuC,OAAQF,KAAKE,OACbG,SAAUL,KAAKK,SACfC,SAAUN,KAAKM,SACfyuC,QAAS/uC,KAAKgN,MAAM+hC,QAEpBrgC,YAAa,CACTA,YAAa1O,KAAKT,MAClBmD,UAAWkiB,GAAAA,CAAW,4BAA6BliB,EAAW8K,EAAU,OAAS,QAGrFU,MAAOk5E,GAAoBtjF,GACvBzE,EAAAA,cAAC8O,EAAAA,eAActL,OAAAC,OAAA,GAAK,CAAEY,MAAOvB,EAAUmB,kBAAmBM,QAASE,KAEvE6rC,gBAAiBniC,EACX06E,EAAmB,CACfvgE,SAAUpZ,EACV+d,MAAAA,EACAnqB,UAAAA,EACAjC,OAAQF,KAAKE,cAEjBE,EACNwvC,eAAiBpiC,OAcXpN,EAbAgxC,EAAkB,CACd9kB,MAAOtsB,KAAKgN,MAAMsf,MAClB+hB,MAAOruC,KAAKgN,MAAMqhC,MAClB3gC,SAAU1N,KAAKmoF,cACfhmF,UAAAA,EACAkvC,SAAUrxC,KAAKqxC,SACf1sC,SAAU3E,KAAK2E,SACfgqC,cAAe3uC,KAAK2uC,cACpB2C,WAAY/iC,EACZjO,SAAUN,KAAKM,SACfixC,WAAYhjC,KAA4B+d,EACxCjsB,SAAUL,KAAKK,aAK7B,OAAOL,KAAKT,MAAM6P,WAAWrB,KApHvBsB,OAAAA,EAAAA,EAAAA,CAAA,CAATE,EAAAA,GAAQ,gCAICF,OAAAA,EAAAA,EAAAA,CAAA,CAATE,EAAAA,GAAQ,kCAqWTF,OAAAA,EAAAA,EAAAA,CAAA,CADCG,EAAAA,GAAM,uCA1XLs2E,EAAoBz2E,OAAAA,EAAAA,EAAAA,CAAA,CAFzBI,EAAAA,gBACAC,EAAAA,GACKo2E,GAsYSA,EAAAA,QAAAA,0DCrcf,gBASesC,EAAAA,EAFWA,IAAM/oF,EAAAA,cAAA,OAAKqD,UAAU,gSCmBxC,MAAM2lF,EAAwDz4E,IAAA,IAAC,UAClEinC,EAAS,MACTj0B,EAAK,cACLkyB,EAAa,iBACbgC,EAAgB,YAChBe,EAAW,aACXC,GACHloC,EAAA,OACGvQ,EAAAA,cAAC6qB,EAAAA,KAAIrnB,OAAAC,OAAA,GAAK+zC,GACNx3C,EAAAA,cAAAA,EAAAA,SAAA,KACKujB,EACAkyB,EACAgC,EACAe,EACAC,KAcAwwC,EAAwCl+D,IAShD,IATiD,UAClDysB,EAAS,iBACTC,EAAgB,MAChB5oC,EAAK,eACLqpC,EAAc,YACdM,EAAW,aACXC,EAAY,aACZywC,EAAY,eACZC,GACHp+D,EACG,MAAMq+D,EAAqBz3C,EAAAA,QAAOC,GAAG;;;;;MAMrC,OACI5xC,EAAAA,cAAC6qB,EAAAA,KAAIrnB,OAAAC,OAAA,GAAK+zC,GACNx3C,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAAA,WACIA,EAAAA,cAACopF,EAAkB,KACdv6E,EAED7O,EAAAA,cAACqpF,EAAAA,EAAO7lF,OAAAC,OAAA,GAAKg0C,EAAiBv3C,OAAQgpF,IAEzC1wC,EAAcx4C,EAAAA,cAAA,WAAMmpF,GAAwB,MAGhDjxC,EACAO,KAkMF6wC,EAAAA,QA5LyEppF,IAEpF,MAAM,SAAEm8C,EAAQ,UAAEv5C,EAAS,QAAEN,EAAO,wBAAE4rB,GAA4BluB,GAC3DmuB,EAAcC,GAAmBtuB,EAAAA,YACjCsO,EAASigB,GAAcvuB,EAAAA,UAAe,IACtCwuB,EAAQC,GAAazuB,EAAAA,SAAoB,KACzC0uB,EAAOC,GAAY3uB,EAAAA,SAAoB,KACvC8uB,EAAWC,GAAgB/uB,EAAAA,UAAoB,IAC/CgvB,EAAaC,GAAkBjvB,EAAAA,YAC/BgxB,EAAau4D,GAAkBvpF,EAAAA,YAC/BovB,EAAaC,GAAkBrvB,EAAAA,UAAoB,GAEpDsvB,EAAwC,CAC1CC,MAAO,OACPC,OAAQlhB,EAAU,gBAAkB,+BACpCmhB,UAAW,aACXC,aAAc,MACdC,OAAQ,UACRnH,WAAY,OACZyF,QAAS,MACTnF,SAAU,OACVH,WAAY,8CACZC,UAAW,UAgEf5oB,EAAAA,UAAgB,KACZ,MAAM4uB,EAAgBvB,eAAeC,QAAQ,iBACzCsB,GAAmC,QAAlBA,GACjBG,GAAa,GAGjBw6D,EAAe36D,IAChB,CAAC1uB,IAEJF,EAAAA,UAAgB,KACZ,MAAMswB,EAAejD,eAAeC,QAAQ,SACtCiD,EAAelD,eAAeC,QAAQ,SACxCgD,IACA7B,EAAU6B,GACNA,EAAaE,oBAAoBpW,SAAS,WAC1CiV,GAAe,IAGnBkB,GACA5B,EAAS4B,GAhDI7vB,WACjB,MAAM+oB,EAAM,CAAE3f,cAAetH,EAAQuH,eACrC,IAAI0mB,EAEJ,GAAIvwB,EAAMwB,KAAK8G,MAAQtI,EAAMwB,KAAK8G,KAAK5G,OAAQ,CAC3C,MAAM8uB,EAEFxwB,EAAMwB,KAAK8G,MAAQtI,EAAMwB,KAAK8G,KAAK5G,QAAU1B,EAAMwB,KAAK8G,KAAK5G,OAAO4G,MAAQtI,EAAMwB,KAAK8G,KAAK5G,OAAO4G,KAAKoD,oBAElG1L,EAAMwB,KAAK8G,KAAK5G,OAAO4G,KAAKoD,oBAAoBlD,OAAQmD,GAC5B,YAAjBA,EAASC,KAEpB,GACVmjB,EAAeyB,GACfrD,eAAe8C,QAAQ,cAAeO,EAAe,GAAG3kB,MAAMC,aAE9DykB,QAAgBE,OAAAA,EAAAA,EAAAA,CAA4BlH,EAAKiH,EAAe,GAAG3kB,MAAMC,aAAa7D,MAAOyoB,GAClFC,QAAQC,IAAIF,IAEnBH,GAAWA,EAAQ,GACnBpD,eAAe8C,QAAQ,aAAc,SAErC9C,eAAe8C,QAAQ,aAAc,SACrCpB,GAAa,IAIdT,EAAgBmC,IAuBlBM,IACN,IAEH,MAuCMm4D,EAAehpF,EAAM4C,UAAUkvB,kBAE/Bm3D,EAAiBjpF,EAAM4C,UAAUqmF,eACvC,OACInpF,EAAAA,cAAAA,EAAAA,SAAA,KACKquB,GAAgBA,EAAa,IAAsB,QAAhB2C,EAChChxB,EAAAA,cAAA,OAAKgpB,MAlIwB,CACrCC,QAAS,OACT4G,cAAe,SACfC,WAAY,aACZP,MAAO,OACPQ,UAAW,SA8HC/vB,EAAAA,cAAA,aAAQ8C,EAAU2uB,YAClBzxB,EAAAA,cAAA,UAAQgpB,MAAOsG,EAAkBhqB,SAAWosB,GA5HvChxB,OAAAA,IACjB,MAAMuvB,EAAiB5B,EAAa3lB,OAAQgmB,GACjCA,EAAMwB,SAAWrV,GAExBoV,GAAkBA,EAAe,KACjC5C,eAAe8C,QAAQ,QAASF,EAAe,GAAGC,QAC9CD,EAAe,GAAGvsB,YAAY0sB,cAAchW,SAAS,UACrDiV,GAAe,GAEfA,GAAe,IAIvBZ,EAAUwB,EAAe,GAAGC,SA+GuCF,CAAa0B,EAAEtgB,OAAOlM,OAAQW,SAAUipB,GAC3F9uB,EAAAA,cAAA,UAAQkF,MAAM,GAAGW,UAAQ,EAAC8rB,UAAQ,GAC7B7uB,EAAU8uB,kBAEdvD,GAAgBA,EAAa,GACxBA,EAAazpB,IAAK8pB,GAEV1uB,EAAAA,cAAA,UAAQkF,MAAOwpB,EAAMwB,OAAQzJ,IAAKiI,EAAMxlB,GAAIyoB,SAAUnD,IAAWE,EAAMwB,QAClExB,EAAMhrB,cAInB,MAEV1D,EAAAA,cAAA,aAAQ8C,EAAU+uB,iBAClB7xB,EAAAA,cAAA,SACI4Q,KAAK,OACLoY,MAAOsG,EACPhqB,SAAWosB,IAAWrB,OA9HnBnrB,EA8HiCwsB,EAAEtgB,OAAOlM,OA7H7C,IAAZoJ,GACAigB,GAAW,GAEflB,eAAe8C,QAAQ,QAASjrB,QAChCypB,EAASzpB,GALUA,IAAAA,GA+HHA,MAAOwpB,EACP7oB,SAAUipB,IAEbxgB,GAAWtO,EAAAA,cAAA,aAAQ8C,EAAUgvB,oBACf,IAAdhD,GAAuB9uB,EAAAA,cAAC+xB,EAAAA,EAAS,CAACjsB,QAASA,IA3DtCpF,WAClB,MAAM+oB,EAAM,CAAE3f,cAAetH,EAAQuH,eACrC,IAAIonB,EAAmBzC,EACvB,MAAM0C,EAAoB/D,eAAeC,QAAQ,eAdjC+D,IAAAA,GAgBI,IAAhBjC,GAAwBgC,GAA2C,QAAtBA,IAC7CD,GAjBYE,EAiBU3C,GAflBtU,SAAS,KAENiX,EAGA,GAAGA,EAAIC,MAAM,GAAI,MAAMD,EAAIC,OAAO,KAWzC3C,EAASwC,UAGYI,OAAAA,EAAAA,EAAAA,CACrB9H,EACAuF,EAAY,GAAGjjB,MAAMC,YACrBwiB,EACA2C,GACFhpB,MAAMyoB,IACJC,QAAQC,IAAIF,GACZrC,GAAW,YAGLH,EAAwBI,EAAQ2C,GAAUzpB,KAAK,KACjDqnB,GAAa,MAsCyCmC,IAAkBpuB,EAAUkvB,oBAElF,KACHqqB,GAAYvtB,GAAa9uB,EAAAA,cAACipF,EAAQzlF,OAAAC,OAAA,GAAK44C,EAAQ,CAAE6sC,aAAcA,EAAcC,eAAgBA,gHCnPnG,MAAMK,EAAyB,SAClCl3C,GAEwB,IADxBjvC,EAASuQ,UAAA5R,OAAA,QAAAjB,IAAA6S,UAAA,GAAAA,UAAA,GAAG,iCAOZ,MAAM61E,UAA2BzpF,EAAAA,UAAjCC,cAAA,oBAEW,KAAA0N,MAAkC,CACrCmhB,WAAW,EAEXrqB,aAAc,GACd4L,cAAUtP,GAGG,KAAA2oF,QAA2C1pF,EAAAA,YA4B3C,KAAA2pF,qBAAuB,KAEpC,MAAMC,EAAa1zB,SAAS2zB,qBAAqB,QAAQ,GAEzD,IAAKD,EAKD,YAJAjpF,KAAKyX,SAAS,CAEV3T,aAAc,0BAMtB,IAAKqlF,iBAKD,YAJAnpF,KAAKyX,SAAS,CAEV3T,aAAc,sCAMtB,MAGMslF,EAAmB,IAAID,iBAAiB,KAC1CnpF,KAAKqpF,2BAETD,EAAiBE,QAAQL,EANV,CAAEx9D,YAAY,EAAM89D,WAAW,EAAMC,SAAS,IAQ7DxpF,KAAKyX,SAAS,CACV/H,SAAU05E,KAOD,KAAAK,qBAAuB,KAAW,IAAAC,EAC5B,QAAnBA,EAAA1pF,KAAKgN,MAAM0C,gBAAQ,IAAAg6E,GAAnBA,EAAqBC,cAMR,KAAAN,uBAAyB,KAEtC,MAAMl7D,IAAcnuB,KAAK+oF,QAAQ7sD,SAAWl8B,KAAK+oF,QAAQ7sD,QAAQ0tD,YAAc,GAAK5pF,KAAK+oF,QAAQ7sD,QAAQ2tD,aAAe,GACnH7pF,KAAKgN,MAAMmhB,WAAaA,IACzBnuB,KAAKyX,SAAS,CACV0W,UAAAA,IAEJnuB,KAAKypF,yBA9ENjvE,oBACHxa,KAAKgpF,uBAGFxlB,uBACHxjE,KAAKypF,uBAGF58E,sBAAsBC,EAAqCC,GAC9D,OAAI/M,KAAKgN,QAAUD,GAAa/M,KAAKT,QAAUuN,EAM5CG,SACH,OACI5N,EAAAA,cAAA,OAAKqD,UAAcA,EAAH,sBAAmCkoB,IAAK5qB,KAAK+oF,SACzD1pF,EAAAA,cAACsyC,EAAgB9uC,OAAAC,OAAA,GAAK9C,KAAKT,MAAK,CAAEuqF,mBAAoB9pF,KAAKgN,WAiE3E,OAAO87E,qPCvGJ,MAAM16C,EAAiDx+B,IAAA,IAAC,cAAE2c,EAAa,MAAED,EAAK,WAAEpd,EAAU,MAAEm/B,GAAOz+B,EAAA,OACtGvQ,EAAAA,cAAC6qB,EAAAA,KAAIrnB,OAAAC,OAAA,GAAKypB,GACNltB,EAAAA,cAAA,OAAKgpB,MAAO,CAAEC,QAAS,OAAQ4G,cAAe,WAC1C7vB,EAAAA,cAAA,QAAMgpB,MAAO,CAAEF,SAAU,OAAQN,WAAY,OAAQymB,cAAe,SAAWD,GAC9E/hB,GAEJpd,IAIIq/B,EAA+ChvC,IACxD,MAAM,aACFivC,EAAY,aACZC,EAAY,aACZt/B,EAAY,gBACZu/B,EAAe,MACf9rB,EAAK,MACL7gB,EAAK,MACL+d,EAAK,cACL6uB,EAAa,MACbN,EAAK,UACLlsC,EAAS,QAET0sC,EAAO,WACPC,GACAvvC,EACEyvC,EAAkC,CACpChnB,WAAY,8CACZC,UAAW,SACXC,WAAY,IACZC,SAAU,OACVN,WAAY,OACZonB,cAAe,OAEbC,EAAwC,CAC1ClnB,WAAY,8CACZC,UAAW,SACXC,WAAY,IACZC,SAAU,OACVN,WAAY,OACZonB,cAAe,OAGnB,OACI5vC,EAAAA,cAAC6qB,EAAAA,KAAIrnB,OAAAC,OAAA,GAAK0rC,GACNnvC,EAAAA,cAAA,OAAKgpB,MAAO2mB,GAAa7sC,EAAUgtC,0BACnC9vC,EAAAA,cAAA,OAAKgpB,MAAO6mB,GAAmB/sC,EAAUitC,+BACzC/vC,EAAAA,cAAC6qB,EAAAA,KAAIrnB,OAAAC,OAAA,GAAK4rC,GACNrvC,EAAAA,cAAA,SAAO2C,GAAG,mCAAmCU,UAAU,0CAClDP,EAAUotC,YAEdT,GACGzvC,EAAAA,cAAA,OAAKgpB,MAAO,CAAEuG,MAAO,OAAQygB,aAAc,SAEvChwC,EAAAA,cAACqqB,EAAAA,EAAK,KAAEvnB,EAAUqtC,qBAG1BnwC,EAAAA,cAAA,OAAKgpB,MAAO,CAAEuG,MAAO,SACjBvvB,EAAAA,cAAA,SACIqD,UAAU,qDACV2lB,MAAO,CACHwG,OAAQ,oBACRC,UAAW,aACXC,aAAc,MACdzB,QAAS,MACTsB,MAAO,OACP0gB,SAAU,QAEdr/B,KAAK,OACLtL,SAAUosB,GAAK4d,EAAc5d,EAAEtgB,OAAOlM,MAAOsqC,GAC7CtqC,MAAO8pC,MAInBhvC,EAAAA,cAAC6qB,EAAAA,KAAIrnB,OAAAC,OAAA,GAAK4rC,GACL9rB,EAGA7gB,GAASA,EAAMxC,OAASwC,EAAMxC,MAAMoyB,UACjCtyB,EAAAA,cAAA,OAAKgpB,MAAO,CAAEuG,MAAO,OAAQygB,aAAc,SAEvChwC,EAAAA,cAACqqB,EAAAA,EAAK,KAAE3nB,EAAMxC,MAAMoyB,WAG5BtyB,EAAAA,cAAA,SACIqD,UAAU,qDAEViC,SAAUosB,GAAKjR,EAAMvgB,MAAMoF,SAASosB,GACpC1I,MAAO,CACHwG,OAAQ,oBACRC,UAAW,aACXC,aAAc,MACdzB,QAAS,MACTsB,MAAO,OACP0gB,SAAU,QAGd/qC,MAAOub,EAAMvgB,MAAMgF,MACnB0L,KAAK,UAIb5Q,EAAAA,cAAA,OAAKgpB,MAAO,CAAEC,QAAS,OAAQ4G,cAAe,MAAON,MAAO,OAAQrG,eAAgB,eAAgB6G,UAAW,SAC3G/vB,EAAAA,cAAA,OAAKgpB,MAAO,CAAEuG,MAAO,OAAQtG,QAAS,OAAQC,eAAgB,WACzDpZ,GAEG9P,EAAAA,cAACqyB,EAAAA,EAAK,CAACrJ,MAAO,CAAEuG,MAAO,QAAUzpB,QAASA,IAAMgK,EAAa5P,MAAM4F,WAE9DgK,EAAa5P,MAAMmE,QAIhCrE,EAAAA,cAAA,OAAKgpB,MAAO,CAAEuG,MAAO,OAAQtG,QAAS,OAAQC,eAAgB,WACzDkmB,GAEGpvC,EAAAA,cAAC+xB,EAAAA,EAAS,CAAC/I,MAAO,CAAEuG,MAAO,QAAUzpB,QAASA,IAAMspC,EAAalvC,MAAM4F,WAElEspC,EAAalvC,MAAMmE,WAiEjC+rC,EAAAA,QAtD4DlwC,IACvE,MAAOsvC,EAASa,GAAcrwC,EAAAA,YACxB,YAAEqP,EAAW,iBAAE7O,EAAgB,MAAEqO,EAAK,gBAAEyhC,EAAe,eAAEC,EAAc,cAAEjB,EAAa,MAAEN,EAAK,WAAES,EAAU,UAAE3sC,GAAc5C,EAC/H,IAAIqvC,GAAkB,EACtB,GACIrvC,EAAMwB,KAAK8uC,4BACXtwC,EAAMwB,KAAK8uC,2BAA2B,IACtCtwC,EAAMwB,KAAK8uC,2BAA2B,GAAGC,eAAiB,EAC5D,CAEElB,EAAqC,IADdrvC,EAAMwB,KAAK8uC,2BAA2B,GAAGC,eA0BpE,OAvBAzwC,EAAAA,UAAgB,KACZ,GACIE,EAAMwB,KAAKC,UAEXzB,EAAMwB,KAAKC,SAASC,OAAOC,cAE3B3B,EAAMwB,KAAKC,SAASC,OAAOC,cAE3B3B,EAAMwB,KAAKC,SAASC,OAAOC,aAAa2G,MAExCtI,EAAMwB,KAAKC,SAASC,OAAOC,aAAa2G,KAAKoD,oBAC/C,CAEE,MAAMojB,EAAc9uB,EAAMwB,KAAKC,SAASC,OAAOC,aAAa2G,KAAKoD,oBAAoBlD,OAAQxD,GACpE,YAAdA,EAAM4G,KAGA,IAAA4kC,EAAjB,GAAI1hB,EACAqhB,EAA+B,QAArBK,EAAC1hB,EAAY,GAAGjjB,aAAK,IAAA2kC,OAAA,EAApBA,EAAsB1kC,eAG1C,IAGChM,EAAAA,cAACsrB,EAAAA,OAAM9nB,OAAAC,OAAA,GAAK4L,EAAW,CAAEkc,IAAK/qB,IACzBqO,EACAyhC,GAAmBtwC,EAAAA,cAAC+uC,EAAevrC,OAAAC,OAAA,GAAK6sC,EAAe,CAAEtB,MAAOA,EAAOlsC,UAAWA,KAClFytC,GACGvwC,EAAAA,cAACkvC,EAAc1rC,OAAAC,OAAA,GACP8sC,EAAc,CAClBjB,cAAeA,EACfN,MAAOA,EACPS,WAAYA,EACZ3sC,UAAWA,EACXysC,gBAAiBA,EACjBC,QAASA,0CCpMtB,IAAKk7C,EA4BL,SAASC,EAAwBjpF,EAAckpF,GAClD,MAAO,CACHrmF,QAAS0H,KAAK26B,UAAU,CACpBh2B,KAAMg6E,EACN1lF,MAAOxD,IAEXmhE,aAAc,KASf,SAASgoB,EAAoCnpF,GAChD,OAAOipF,EAAwBjpF,EAAMgpF,EAAgCI,cAOlE,SAASC,IACZ,OAAOJ,EAAwB,OAAQD,EAAgCM,QAGpE,SAASC,EAA8Bp1D,GAC1C,OAAO80D,EAAwB,GAAG90D,EAAU60D,EAAgCnrB,QAhEhF,wIAQA,SAAYmrB,GACRA,EAAA,gCACAA,EAAA,sBACAA,EAAA,wBACAA,EAAA,wBACAA,EAAA,wBACAA,EAAA,oCACAA,EAAA,4BACAA,EAAA,kCACAA,EAAA,kCACAA,EAAA,wCACAA,EAAA,wBAXJ,CAAYA,IAAAA,EAA+B,uYCU5BQ,IAAAA,EAN8B36E,IAAA,IAAC,QAAEhM,GAASgM,EAAA,OACrDvQ,EAAAA,cAAA,KAAGqD,UAAU,6BAA6Be,KAAK,QAAO,YAAW,aAC5DG,qCCGF,MAAMylD,EAA4BvpC,IACrC,MACI/e,MAAM,SAAEC,GACRmB,WAAW,iBAAEmnD,EAAgB,aAAEC,EAAY,oBAAEC,GAAqB,QAClE3nD,EAAO,SACPI,EAAQ,GACRD,EAAE,UACFF,GACAge,EAEE5e,EAAemB,GAAAA,CAAIrB,EAAU,uBAC7B6G,EAAOxF,GAAAA,CAAIrB,EAAU,4BAE3B,MAAO,CACH8jB,QAASzlB,EAAAA,cAAA,MAAIqD,UAAU,gCAAgC8mD,GACvD1B,MAAO5mD,MAAAA,GAAAA,EAAcC,eACfsoD,OAAAA,EAAAA,EAAAA,CAAe,CACXx1B,gBAAiBq1B,EACjBC,aAAAA,EACA1hD,KAAAA,EACAhG,QAAAA,EACAI,SAAAA,EACAH,UAAAA,EACAE,GAAAA,EACA0E,cAAe1F,EAASC,cAE5Bb,qGC0BP,MAAMyf,EAAeA,CACxBC,EACAjb,KACwB,IAAAwO,EACxB,MAAM5L,EAAyBpF,GAAAA,CAAIyd,EAAO,kDACpCnY,EAAwBtF,GAAAA,CAAIyd,EAAO,kDAEnC,4BAAEjZ,EAA2B,aAAEuG,GAAiB0S,EAAM/e,KACtDnB,EAAoCwN,MAAAA,GAAoB,QAARiG,EAAZjG,EAAcnM,cAAM,IAAAoS,GAAiE,QAAjEA,EAApBA,EAAsB7R,KAAK6L,GAF/B,oEAE0CA,EAAQC,aAAuC,IAAA+F,OAAA,EAArFA,EACpC9F,UAEAwS,EAAwB/X,IAC1B,MAAM6L,EAAmBxR,GAAAA,CAAIyd,EAAO,gCACpC,IAAK9X,EAASkM,qBAAuBL,EACjC,MAAO,GAGX,MAAMmM,GAAiBnM,GAAoB,IAAIrS,KAAM2T,GAC1CA,EAASC,gBAAkBpN,EAASkM,oBAG/C,OAAO8L,GAAiBA,EAAclH,aAUpCmH,EAAyBjY,IAA+C,IAAAkY,EAC1E,MAAM/L,EAAUnM,EAASqM,YARR8L,EAQiCnY,EAASqM,WAP1ChS,GAAAA,CAAIyd,EAAO,yBAA2B,IACvCte,KAAM4e,GACXD,IAAcC,EAAShM,WAHjB+L,IAAAA,EASjB,MAAM,GACFne,EAAE,SACFC,EAAQ,QACRJ,EACArB,QAAQ,cAAE2a,EAAa,gCAAEkF,GACzBle,WAAW,sBACPme,EAAqB,0BACrBC,EAAyB,yBACzBC,EAAwB,0BACxBC,EAAyB,2BACzBC,EAA0B,aAC1BC,EAAY,uBACZC,EAAsB,mBACtBC,EAAkB,gBAClBC,GAEJjf,SACIU,SAAS,aAAEsa,KAEfiD,EACEiB,EAA8B,QAAtBb,EAAGJ,EAAM/e,KAAKggB,gBAAQ,IAAAb,OAAA,EAAnBA,EAAqBjf,OACtC,IAAKkT,EACD,OAGJ,IAAI6M,EAAaC,OAAAA,EAAAA,kBAAAA,CAAkB9M,EAAStS,EAAQuH,mBAAehJ,GACnE,GAAI+Q,EAAAA,EAAS+P,WAAaC,OAAAA,EAAAA,EAAAA,CAAiBtf,EAAQuH,cAAckI,gBAAiB,KAAA8P,EAC9E,MAAMC,EAAU,IAAIC,IAAIN,EAAYO,OAAOpM,SAASqM,MACpDH,EAAQI,aAAaC,IAAI,YAAa,IAAqB,QAArBN,EAAGpZ,EAAS2Z,iBAAS,IAAAP,EAAAA,EAAI,IAC/DJ,EAAaK,EAAQG,KAGzB,OACIniB,EAAAA,cAACuiB,EAAAA,sBAAqB,CAClB5f,GAAIA,EACJC,SAAUA,EACVJ,QAASA,EACTM,UAAW,CACP0f,WAAYrB,EACZsB,YAAavB,EACbwB,YAAatB,EACbuB,aAActB,EACdJ,sBAAAA,EACAK,aAAAA,EACAC,uBAAAA,EACAC,mBAAAA,EACAoB,kBAAmB,GACnBC,iBAAkB,GAClBC,oBAAqBrB,EACrBsB,0BAA2B,0BAE/BC,oBAAoB,EACpBlH,cAAeA,EACf0B,aAAcA,EACdmE,WAAYA,EACZsB,gBAAiBnO,EAAQsI,gBACzB1b,KAAM,CACFiH,SAAAA,EACAmM,QAAAA,EACA4M,SAAAA,GAEJV,gCAAiCA,EACjCxb,iBAAkBA,EAClBgC,4BAA6BA,MAAAA,OAA2B,EAA3BA,EAA6B5F,UAKhEuhB,EAA+BC,IACjC,MACItgB,WAAW,8BAAEugB,IACb5C,EAEJ,MAAO,CACH6C,cAAe,CAAEjgB,UAAW,iCAC5BkgB,MAAOvjB,EAAAA,cAAA,QAAMqD,UAAU,4BAA4BggB,GACnDvN,SAAU9V,EAAAA,cAAA,OAAKqD,UAAU,+BAA+B+f,KAI1DI,EAA8BA,KAChC,MACI1gB,WAAW,kBAAE2gB,IACbhD,EAEJ,MAAO,CACHiD,cAAe,CAAErgB,UAAW,+BAC5BkgB,MAAOvjB,EAAAA,cAAA,QAAMqD,UAAU,4BAA4BogB,KAIrDE,EAA2BnH,GACtBA,EAAM5X,IAAI+D,IACb,MAAMya,EAAyB1C,EAAqB/X,GAC9Cib,EAAWC,EAAyBlb,GACpCmb,KACFnb,EAASzB,cAA0C,KAA1ByB,EAASzB,eAAsByB,EAASzB,eAAiBoB,EACtF,MAAO,CACH4M,OAAQvM,EAASuM,QAAU,GAC3B6O,SAAU,CAAE1gB,UAAW,0BACvB2gB,KAAMpD,EAAsBjY,GAC5Bsb,cAAeL,EAAWT,EAA4BC,QAA0BriB,EAChFmjB,cAAeJ,EAAkBN,SAAgCziB,KAKvE8iB,EAA4BM,IAAmC,IAAAjK,EACjE,OAAQnS,EAAAA,iBAAiBqc,mBAAmBD,EAAajd,gBACnD3G,EACI4jB,EAAajd,gBACbM,MAAAA,GAAmC,QAAR0S,EAA3B1S,EAA6B5F,cAAM,IAAAsY,GAAyB,QAAzBA,EAAnCA,EAAqCrR,+BAAuB,IAAAqR,OAAA,EAA5DA,EAA8D/X,KAC1DD,GAAgBA,IAAiBiiB,EAAajd,eAElDid,EAAajd,eAAiBkB,IAuCtCic,EAAe7H,GACVA,EAAM8H,OAAO,CAAC3f,EAAOqf,IACjBrf,GAASqf,EAAKpG,UAAY,GAClC,GAGD2G,EAA8B3T,IAChC,MAAMpI,EAAOxF,GAAAA,CAAIyd,EAAO,0CACxB,MAAa,SAAT7P,EACOpI,EAAKC,UAAUC,OAAQC,IAC1BA,OAAAA,EAASzB,cAA0C,KAA1ByB,EAASzB,cA7CZid,EA8CSxb,GA7C/BZ,EAAAA,iBAAiBqc,mBAAmBD,EAAajd,gBACnD3G,EACI4jB,EAAajd,gBACbM,MAAAA,GAAmC,QAARgd,EAA3Bhd,EAA6B5F,cAAM,IAAA4iB,GAAyB,QAAzBA,EAAnCA,EAAqC3b,+BAAuB,IAAA2b,OAAA,EAA5DA,EAA8DriB,KAC1DD,GAAgBA,IAAiBiiB,EAAajd,eAElDid,EAAajd,eAAiBkB,IAuCYO,EAASzB,eAAiBoB,GAChEK,EA/CgBwb,IAAAA,EAAmCK,IAiD7C,WAAT5T,EACApI,EAAKC,UAAUC,OAAQC,GAC1BA,EAASzB,cAA0C,KAA1ByB,EAASzB,aAAsB2c,EAAyBlb,GAAY,MAG9FH,EAAKC,UAAUC,OAAQC,GAAuBA,EAASzB,eAAiBoB,IAG7Emc,EAA+B7T,IACjC,KAAgC,KAA3BxI,QAA4DrH,IAA3BqH,GAAmD,WAATwI,GAA8B,UAATA,GACjG,OAGJ,MAAM4L,EAAQ+H,EAA2B3T,GAEzC,GAAqB,IAAjB4L,EAAMxa,OACN,OAGJ,MACMqC,EA1DsBqgB,EAAC/f,EAAeiM,KAA8B,IAAA+T,EAC1E,MACI7hB,WAAW,UAAE8hB,EAAS,WAAEC,EAAU,mBAAEC,EAAkB,8BAAEC,IACxDtE,EAEJ,IAAIuE,EAAgC,GAEH,QAAjCL,EAAAlE,EAAM/e,KAAKrB,gBAAgBuB,cAAM,IAAA+iB,GAAjCA,EAAmCxiB,KAAK8iB,IAAyB,IAAAC,EAC7DF,EAAwBA,IAEoB,QADjBE,EACrBD,EAAuBrK,uBAAe,IAAAsK,GAAuE,QAAvEA,EAAtCA,EAAwC/iB,KAAKC,GAAkBA,EAAeC,OAASiG,UAAsB,IAAA4c,OAAA,EAA7GA,EACMxhB,eAGhB,MAAMyhB,EAASxgB,EAAQ,EAAIkgB,EAAaD,EAOxC,OALa,SAAThU,EACMmU,EACS,WAATnU,EACAkU,EACA,GAAGE,MAA0BrgB,KAASwgB,MACnCC,QAAQ,UAAWzgB,EAAM0gB,YAAYD,QAAQ,WAAYD,IAqCxDT,CADAL,EAAY7H,GACmB5L,GAE7C,MAAO,CACH0U,sBAAuB,CAAEjiB,UAAWkiB,GAAAA,CAAW,yCAA0C3U,IACzF4U,aAAc,CAAEniB,UAAW,gCAC3BoiB,QAASzlB,EAAAA,cAAA,OAAKqD,UAAU,uCAAuCgB,GAC/DqhB,UAAW/B,EAAwBnH,KAoDrCmJ,EAA+Bva,IACjC,MACIjK,QAAQ,iBAAEykB,IACVnF,EACAmF,IACAA,EAAiB7T,KAAO3G,EAAMgG,OAAOlM,QAmEvC2gB,EAAoDA,KACtD,GAA+B,KAA3Bzd,QAA4DrH,IAA3BqH,EACjC,OAGJ,MACItF,WAAW,oBAAEgjB,EAAmB,cAAEC,IAClCtF,EAEEjE,EAnC+BwJ,MACrC,MAAMxd,EAAOxF,GAAAA,CAAIyd,EAAO,0CAClBwF,EAAyBzJ,GAAsB0J,GAAAA,CAAQ1J,EAAOwH,GAAQA,EAAKnP,oBAE3EsR,GADsB3J,EACahU,EAAKC,UADIyd,GAAAA,CAAQ1J,EAAOwH,GAAQA,EAAK9c,eAAlDsV,IAAAA,EAE5B,MAAM4J,EAA6B,GAC7BC,EAA6B,GAiBnC,OAdA7iB,OAAO8iB,QAAQH,GAAezO,QAAQnH,IAAwC,IAAtCrO,EAAcqkB,GAAoBhW,EAEtE4V,EAAcjkB,GAAgB+jB,EAAsBM,GACpDH,EAAexQ,KAAKqQ,EAAsBM,MAG9C/iB,OAAOgjB,KAAKJ,GAAgB1O,QAAQ+O,IAChC,MAAM5Q,EAAYuQ,EAAeK,GACjCjjB,OAAOgjB,KAAK3Q,GAAW6B,QAAQ7S,IAC3B,MAAM8D,EAAWkN,EAAUhR,GAC3BwhB,EAAazQ,KAAKjN,OAInB0d,GAYOL,GAEd,GAAqB,IAAjBxJ,EAAMxa,OACN,OAGJ,MAAM0kB,EAAkD,GA0BxD,OAzBAlK,EAAM5X,IAAIof,IACN,MAAMrf,EAAQ0f,EAAYL,GACpBrb,EAAWqb,EAAK,GAChBZ,EAAyB1C,EAAqB/X,GAC9CiI,EACFjI,EAASkM,oBAAsBlM,EAASzB,aAClC,SACgC,KAAhCyB,EAASkM,oBACTlM,EAASzB,eAAiBoB,GACzBP,EAAAA,iBAAiBC,cAAcM,GAEhC,OADA,QAEJjE,EA3FoCsiB,EAC9ChiB,EACAiM,EACA1O,EACA0kB,KACQ,IAAAC,EAAAC,EACR,MACIhkB,WAAW,UAAE8hB,EAAS,WAAEC,IACxBpE,EAEJ,IAAIuE,EAAgC,GAChC+B,EAAiC,GAEJ,QAAjCF,EAAApG,EAAM/e,KAAKrB,gBAAgBuB,cAAM,IAAAilB,GAAjCA,EAAmC1kB,KAAK8iB,IAAyB,IAAA+B,EAC7DhC,EAAwBA,IAEoB,QADjBgC,EACrB/B,EAAuBrK,uBAAe,IAAAoM,GAAuE,QAAvEA,EAAtCA,EAAwC7kB,KAAKC,GAAkBA,EAAeC,OAASiG,UAAsB,IAAA0e,OAAA,EAA7GA,EACMtjB,eAGiB,QAAjCojB,EAAArG,EAAM/e,KAAKrB,gBAAgBuB,cAAM,IAAAklB,GAAjCA,EAAmC3kB,KAAK8iB,IAAyB,IAAAgC,EAC7DF,EAAyBA,IAEmB,QADhBE,EACtBhC,EAAuBrK,uBAAe,IAAAqM,GAA8D,QAA9DA,EAAtCA,EAAwC9kB,KAAKC,GAAkBA,EAAeC,OAASH,UAAa,IAAA+kB,OAAA,EAApGA,EAAsGvjB,eAGhH,MACMyhB,EAASxgB,EAAQ,EAAIkgB,EAAaD,EAOxC,OALa,SAAThU,EACM,IAAIjM,KAASwgB,KACJ,WAATvU,EACA,GANkB,GAAGmW,MAA2BH,QAM7BjiB,KAASwgB,KAC5B,GAAGH,MAA0BrgB,KAASwgB,MACnCC,QAAQ,UAAWzgB,EAAM0gB,YAAYD,QAAQ,WAAYD,IAyDpDwB,CAA0ChiB,EAAOiM,EAAMjI,EAASzB,aAAckc,GACtF8D,EAAsB,WAATtW,EAAoBkV,EAA+B,SAATlV,EAAkBmV,EAAgB,QACzFoB,EAAY,uDAAuDvW,QACzE8V,EAAsB9Q,KAAK,CACvB0P,sBAAuB,CAAEjiB,UAAWkiB,GAAAA,CAAW,yDAA0D3U,IACzG4U,aAAc,CAAEniB,UAAW,gCAC3B+jB,mBAAoBpnB,EAAAA,cAAA,OAAKqD,UAAW8jB,IACpCE,eAAgBrnB,EAAAA,cAAA,OAAKqD,UAAU,+DAA+D6jB,GAC9FzB,QAASzlB,EAAAA,cAAA,OAAKqD,UAAU,kEAAkEgB,GAC1FqhB,UAAW/B,EAAwBK,OAIpC0C,GAGX,MApKsBY,MAClB,MAAM,QACF9kB,EACArB,QAAQ,iBAAEykB,GACVlkB,MAAM,SAAEyS,GACRrR,WAAW,aAAEykB,IACb9G,EAEEjQ,EAAUC,OAAAA,EAAAA,iBAAAA,CAAiB,QAASjL,EAAmBgiB,EAAAA,kBAAkBC,UACzE/W,EAAYC,OAAAA,EAAAA,uBAAAA,CAAuBnL,EAAmBgL,GACtDhI,EAAOxF,GAAAA,CAAIyd,EAAO,0CAClBiH,EAAannB,EAAoC,2BAA6B,GACpF,GAAKiI,GAASA,EAAKC,WAAuC,IAA1BD,EAAKC,UAAUzG,QAAiBmS,EAIhE,MAAO,CACHwT,UAAW,CAAEtkB,UAAW,0BAA0BqkB,GAClDE,OAAQ,CAAEvkB,UAAW,kCACrBoiB,QAASG,GAAoBA,EAAiB7T,MAC1C/R,EAAAA,cAAC6nB,EAAAA,EAAarkB,OAAAC,OAAA,CACVJ,UAAU,mCACNuiB,EAAgB,CACpBzhB,IAAKyhB,EAAiBzhB,KAAO,KAC7B4N,KAAM6T,EAAiB7T,KACvBC,UAAW,CAAEnR,OAAQ8kB,EAA6B1T,eAAgBzP,EAAQU,YAGlF4kB,SACI9nB,EAAAA,cAAC2F,EAAAA,OAAMnC,OAAAC,OAAA,CACHJ,UAAU,yCACVgB,MAAOkjB,EACP3hB,MAAM,OACNuc,KAAM0F,EAAAA,EAAoB,OAAQrlB,EAAQuH,gBAAkB,IACxD2G,GAEH6W,GAGTQ,eAAgBtD,EAA4B,UAC5CuD,aAAcvD,EAA4B,QAC1CwD,cAAexD,EAA4B,SAC3CyD,iCAAkC3nB,EAC5BslB,SACA9kB,IAwHPumB,oBC3bJ,MAAMovC,EAAmBj2C,IAA+D,IAAAzM,EAC3F,MACI7S,QAAQ,oBAAEgqF,GACVzpF,MAAM,SAAEC,GACRmB,WAAW,cACP0xB,EAAa,cACba,EAAa,SACbX,EAAQ,gBACRE,EAAe,aACfuB,EAAY,cACZC,EAAa,oBACbI,EAAmB,SACnB/D,EAAQ,mBACRD,EAAkB,aAClB44D,EAAY,qBACZ90D,GACH,QACD9zB,EAAO,SACPI,EAAQ,GACRD,EAAE,UACFF,GACAge,EAEEpZ,EAAgBrE,GAAAA,CAAIrB,EAAU,UAC9B6G,EAAOxF,GAAAA,CAAIrB,EAAU,4BACrB0pF,EAAgB7iF,EAAKC,WAAaD,EAAKC,UAAUzG,OAAS,EAC1D4wB,EAAuBpwB,EAAQU,QAAQC,SAEvC,4BAAEqE,EAA2B,aAAEuG,GAAiB0S,EAAM/e,KACtDnB,EAAoCwN,MAAAA,GAAoB,QAARiG,EAAZjG,EAAcnM,cAAM,IAAAoS,GAAiE,QAAjEA,EAApBA,EAAsB7R,KAAK6L,GAF/B,oEAE0CA,EAAQC,aAAuC,IAAA+F,OAAA,EAArFA,EACpC9F,UAaN,MAAO,CACHo9E,kBAAmB,CAAEjoF,UAAW,4CAChCoiB,QAAS0lE,GAAuBA,EAAoBp5E,MAChD/R,EAAAA,cAAC6nB,EAAAA,EAAarkB,OAAAC,OAAA,CACVJ,UAAU,8BACN8nF,EAAmB,CACvBhnF,IAAKgnF,EAAoBhnF,KAAO,KAChC4N,KAAMo5E,EAAoBp5E,KAC1BC,UAAW,CAAEnR,OAjBgBuK,IACrC,MACIjK,QAAQ,oBAAEgqF,IACV1qE,EACA0qE,IACAA,EAAoBp5E,KAAO3G,EAAMgG,OAAOlM,QAYkB+M,eAAgBzP,EAAQU,YAGtFulD,MAAO4iC,EACDn4D,OAAAA,EAAAA,EAAAA,CAAa,CACT7rB,cAAAA,EACAmB,KAAAA,EACAgsB,cAAAA,EACAa,cAAAA,EACAX,SAAAA,EACAE,gBAAAA,EACAuB,aAAAA,EACAC,cAAAA,EACAI,oBAAAA,EACA/D,SAAAA,EACAD,mBAAAA,EACAhwB,QAAAA,EACAI,SAAAA,EACAD,GAAAA,EACAiwB,qBAAAA,EACAnwB,UAAAA,EACAqyB,iBAAkBs2D,EAClB7qF,kCAAAA,EACAiH,4BAA6BA,MAAAA,OAA2B,EAA3BA,EAA6B5F,OAE1DkyB,qBAAsBtrB,EAAK+iF,qBAC3Bx3D,kBAAkB,EAClBuC,qBAAAA,SAEJv1B,oECnCd,MAAMyqF,UAA2BxrF,EAAAA,cAO7BC,YAAYC,GACRC,MAAMD,GAPO,KAAAurF,cAAoDzrF,EAAAA,YAEpD,KAAA0rF,YAA+C1rF,EAAAA,YAuI/C,KAAA2rF,aAAe,KAC5B,MAAM,SAAEC,EAAQ,QAAEz9E,EAAO,aAAE09E,EAAY,gBAAEn4C,EAAe,gBAAEo4C,EAAe,SAAE9qF,EAAQ,SAAEC,EAAQ,SAAEw1D,GAAa91D,KAAKT,OAE3G,aAAEwF,EAAY,wBAAEqmF,GAA4Bt1B,EAE5CxkB,GAAa9jC,GAAWlN,EACxBixC,GAAa/jC,GAAWy9E,GAAYl4C,GAAmB1yC,EAE7D,OAAK8qF,IAAqB75C,GAAcC,IAIxCvxC,KAAK6P,QAAQ6b,cAAcC,MAAQs/D,EAAWpkE,EAAAA,kBAAkBwkE,KAAOxkE,EAAAA,kBAAkBykE,aAEzFtrF,KAAK6P,QAAQ6b,cAAcC,MAAQ9E,EAAAA,kBAAkB0kE,OAGjDvrF,KAAKT,OAASS,KAAKT,MAAMyC,IAAMhC,KAAKT,MAAMyC,GAAGyX,SAAS,8BAE/CzZ,KAAKT,OAASS,KAAKT,MAAMyC,IAAMhC,KAAKT,MAAMyC,GAAGyX,SAAS,oBADtD,KAKHpa,EAAAA,cAAA,OAAKgpB,MAAO,CAAEuG,MAAO,OAAQQ,UAAW,SACpC/vB,EAAAA,cAAA,OAAKqD,UAAU,uBACV6uC,GACGlyC,EAAAA,cAAA,OAAKgpB,MAAO,CAAEuG,MAAO,OAAQtG,QAAS,OAAQ4G,cAAe,SAAUC,WAAY,WAC/E9vB,EAAAA,cAACqyB,EAAAA,EAAK,CAACrJ,MAAO,CAAEuG,MAAO,QAAUzpB,QAAS9E,GACrCy1D,EAAStwD,iBAItBnG,EAAAA,cAAA,OACIqD,UAAU,cACV2lB,MAAO,CAAEuG,MAAO,OAAQtG,QAAS,OAAQ4G,cAAe,SAAUC,WAAYoiB,EAAY,SAAW,QAEpGD,GACGjyC,EAAAA,cAAC+xB,EAAAA,EACG,CACA1tB,MAAOunF,EAAWlmF,EAAeqmF,EACjCnmF,MAAM,UACNC,SAAUgmF,EACV/lF,QAASA,IAAO7E,EAAWA,IAAa,KAExC+nB,MAAO,CAAEuG,MAAO,OAAQhG,YAAa2oB,EAAY,MAAQ,SAGxD05C,GAAYl4C,EAAkBhuC,EAAe+wD,EAAS01B,wBAtCxE,MAgDE,KAAAC,6BAA+B,KAC5C,MAAMC,EAAO1rF,KAAK+qF,YAAY7uD,QAcxByvD,EAAQD,GAAQA,EAAKjhD,eAAkBihD,EAAKjhD,cAbvB,6dAc3BkhD,GAASA,EAAMphD,OAASohD,EAAMphD,SAGjB,KAAAqhD,kBAAoB,KAEjC,MAAM18E,EACFlP,KAAK8qF,eACL9qF,KAAK8qF,cAAc5uD,SAEnBl8B,KAAK8qF,cAAc5uD,QAAQqO,OAC1BvqC,KAAK8qF,cAAc5uD,QACxBhtB,GAAcA,EAAWq7B,SAGZ,KAAAshD,cAAgB,KAE7B,MAAMC,EAAW9rF,KAAKT,MAAMyiC,UAAYhiC,KAAK+qF,aAAe/qF,KAAK+qF,YAAY7uD,SAAYl8B,KAAK+qF,YAAY7uD,QAC1G4vD,GAAYA,EAAS70B,kBAGR,KAAA80B,SAAW,CAACpkE,EAAeqkE,KACxC,MAAM,KAAE1qB,EAAI,MAAE59D,GAAU1D,KAAKT,OACvB,KAAE6R,EAAO,IAAO1N,GAAS,GAC/B,OAAOrE,EAAAA,cAACmoB,EAAAA,EAAa,CAACC,cAAe65C,EAAO,EAAG55C,YAAatW,EAAMuW,QAASA,EAASzY,WAAY88E,KAInF,KAAAC,YAAe5oE,GACrBhhB,GAAAA,CAAIghB,EAAM,0BAA4B,GAGhC,KAAA6oE,OAAU7oE,GAChBhhB,GAAAA,CAAIghB,EAAM,OAAS,GA1O1BrjB,KAAK6P,QAAUC,OAAAA,EAAAA,iBAAAA,CAAiB,QAASvQ,EAAMsF,iBAAmB,IAG/DiuD,mBAAmBq5B,GAItB,MAAM,SAAEC,EAAQ,QAAE5+E,EAAO,OAAE6+E,EAAM,SAAEpB,EAAQ,OAAE/qF,EAAM,YAAEosF,EAAW,SAAE36D,EAAQ,YAAE1xB,EAAW,cAAEmJ,GAAkBpJ,KAAKT,MAG5G6sF,GAAY5+E,GACZ6+E,IAmBJ,KAdoBF,EAAU3+E,SAAW2+E,EAAUlB,YAAckB,EAAUjsF,UAC3DsN,GAAWy9E,KAAc/qF,KAErCF,KAAK4rF,oBACL5rF,KAAK6rF,iBAKLM,EAAU3+E,UAAYA,GACtBxN,KAAKyrF,+BAILa,GAAeljF,EAAe,CAC9B,MAAMmjF,EAAkBvsF,KAAKisF,YAAYt6D,GAGzC,GAAI46D,EAAgBlrF,OAAS,EACzB,IAAK,MAAMmrF,KAAeD,EAAiB,CACvC,MAAMl4C,EAAUr0C,KAAKksF,OAAOM,GACtBC,EAAaxsF,MAAAA,OAAW,EAAXA,EAAaszC,UAAUc,GAE1C,GAAIo4C,MAAAA,GAAAA,EAAY/+E,SAEZ,YADK0pD,OAAAA,EAAAA,sBAAAA,CAAsB/iB,EAASjrC,QAKvCwD,OAAAA,EAAAA,qBAAAA,CAAqB5M,KAAK+qF,YAAa3hF,IAKjD6D,SACH,MAAM,MACFvJ,EAAK,SACLwB,EAAQ,WACRwnF,EAAU,SACVN,EAAQ,SACRnB,EAAQ,SACRt5D,EAAQ,QACRnkB,EAAO,UACPqlC,EAAS,WACTplC,EAAU,eACV6kC,EAAc,gBACd64C,EAAe,OACfjrF,EAAM,SACN41D,EAAQ,KACRwL,GACAthE,KAAKT,MAETS,KAAK6P,QAAQ6b,cAAcC,MAAQ9E,EAAAA,kBAAkB8lE,eACrD,MAAMC,EAAsB58E,OAAAA,EAAAA,uBAAAA,CAAuBhQ,KAAKT,MAAMsF,iBAAmB7E,KAAK6P,SAChF8X,EAAUwjE,GAAmB39E,GAAWy9E,GAAY/qF,EASpDgP,EACF7P,EAAAA,cAACwtF,EAAAA,EAAIhqF,OAAAC,OAAA,CACDgqF,SAAU9sF,KAAK8qF,cACfpoF,UAAU,GACVgB,MAAOoyD,EAASi3B,eAEhB5nF,QAASA,IAAOjF,EAASA,IAAW,KACpCuD,KAAK,SAAQ,aACDC,GAASA,EAAM0N,KAAO,GAAG0kD,EAASi3B,kBAAkBrpF,EAAM0N,OAAS,IAC3Ew7E,GAEH92B,EAASi3B,gBAIZC,EAEFhtF,KAAKT,MAAMoyB,UAAY3xB,KAAKT,MAAMoyB,SAASpyB,OAASS,KAAKT,MAAMoyB,SAASpyB,MAAM0C,SAASwX,SAAS,6BAEpG,OACIpa,EAAAA,cAAA,OACIqD,UAAWiM,GAAAA,CAAU,2BAA4B,CAC7Cs+E,OAAQb,EACRc,SAAUR,EACVS,QAAST,EACTU,OAAQnC,EACRoC,OAAQnoF,EACRooF,YAAah7C,EACbptC,SAAAA,EACAqoF,MAAO//E,EACPggF,QAAS36C,EACT46C,SAAUhgF,IAEdmd,IAAK5qB,KAAK+qF,aAET/qF,KAAK+rF,WAAkB,IAATzqB,IAAc0rB,IAA0BrlE,EAASzY,GAEhE7P,EAAAA,cAAA,OACIqD,UAAWiM,GAAAA,CAAU,gCAAiC,CAClD0+E,QAASX,KAGbrtF,EAAAA,cAAA,OAAKqD,UAAU,oCAAoCivB,GAElD3xB,KAAKgrF,kBAmHXH,IAAAA,EAAAA,EChQf,IAAM6C,EAAN,cAAiCruF,EAAAA,cAAjCC,kCAgCW,KAAA0N,MAAkC,CACrC2gF,YAAa,GA0FA,KAAAC,kBAAoB,KACjC,MACI3tF,aAAa,SAAEyyC,EAAQ,UAAEa,IACzBvzC,KAAKT,MACT,OAAOmzC,EAAS3qC,OAAQssC,IACpB,MAAMrnC,EAAQumC,EAAUc,GACxB,QAASrnC,IAAUA,EAAM4D,cAIhB,KAAAi9E,QAAW7rF,GACjBhC,KAAK4tF,oBAAoBE,QAAQ9rF,GAG3B,KAAA+rF,MAAS1qE,GACfhhB,GAAAA,CAAIghB,EAAM,aAAe,GAGnB,KAAA2qE,WAAc3qE,GACpBhhB,GAAAA,CAAIghB,EAAM,yBAA2B,GAG/B,KAAAqpE,WAAcprB,KACvBthE,KAAKT,MAAMk+B,UAIR6jC,GAAQ,GAAKA,GAAQthE,KAAKgN,MAAM2gF,YAG1B,KAAAvB,SAAY9qB,GAClBA,IAASthE,KAAKgN,MAAM2gF,YAGd,KAAA1C,SAAY3pB,GAClBA,GAAQ,GAAKA,EAAOthE,KAAKgN,MAAM2gF,YAGzB,KAAAtB,OAAS,KACtBrsF,KAAKyX,SAAS,CACVk2E,YAAa3tF,KAAKgN,MAAM2gF,YAAc,KAlKpC,qBACN,OACsC,IAAlC3tF,KAAKT,MAAM41D,qBACwB,IAAnCn1D,KAAKT,MAAM61D,sBAC0B,IAArCp1D,KAAKT,MAAM81D,wBACgC,IAA3Cr1D,KAAKT,MAAMuR,4BAQT,oBACN,IAAK,MAAMuS,KAAQrjB,KAAKT,MAAMsc,MAAO,KAAAoyE,EACjC,MAAM55C,EAAUr0C,KAAK+tF,MAAM1qE,GACrBrW,EAAQhN,KAAKT,MAAMU,YAAYszC,UAAUc,GAO/C,IALkC98B,EAAAA,gBAAgBC,YAEhC,QADdy2E,EACAjhF,EAAM0lC,gBAAQ,IAAAu7C,OAAA,EAAdA,EAAgBlmF,OAAOmmF,GAAaA,MAAAA,OAAS,EAATA,EAAWz0E,SA7B7B,0BAgCazM,EAAM4D,YAAc5D,EAAMU,SACzD,OAAO,EAIf,OAAO,EAOJ8M,oBAIH,MAAMk4B,EAAW1yC,KAAKT,MAAMsc,MAAM5X,IAAKof,GAA0BhhB,GAAAA,CAAIghB,EAAM,aAC3ErjB,KAAKT,MAAMU,YAAYH,KAAK,CAAE4yC,SAAAA,IAG3BzlC,SACH,MAAM,YAAEhN,EAAW,MAAE4b,EAAK,SAAEi6C,GAAa91D,KAAKT,MAC9C,IAAKsc,IAAU5b,EACX,OAAO,KAGX,MAAMkuF,EACFnuF,KAAKT,MAAMuK,kCACX9J,KAAKT,MAAMyrB,iDACVhrB,KAAKT,MAAMmO,WACX1N,KAAKouF,iBACLpuF,KAAKquF,cAEV,IAAIC,GAAyB,EAE7B,OACIjvF,EAAAA,cAAA,OAAKqD,UAAU,4BACVmZ,EAAM5X,IAAKof,IAAyB,IAAAkrE,EACjC,MAAMl6C,EAAUr0C,KAAK+tF,MAAM1qE,GACrBi+C,EAAOthE,KAAK6tF,QAAQx5C,GACpB3wC,EAAQ1D,KAAKguF,WAAW3qE,GACxBrW,EAAQhN,KAAKT,MAAMU,YAAYszC,UAAUc,IACzC,QACF7mC,EAAO,UACPqlC,EAAS,WACTplC,EAAU,WACVmD,EAAU,gBACVmiC,EAAe,OACf7yC,EAAM,SACNG,EAAQ,SACRC,EAAQ,eACR2yC,EAAc,eACdX,EAAc,SACd5kC,GACAV,GAAU,GAERs/E,IACAtsF,KAAKT,MAAM6M,6CACXpM,KAAKT,MAAM0zD,6BACZq7B,GACD5gF,EAGJ,OAFA4gF,EAAyBA,GAA0BhC,EAG/CjtF,EAAAA,cAACmvF,EAAU,CACPxsF,GAAIhC,KAAK+tF,MAAM1qE,GACfyC,IAAKuuB,EACLitB,KAAMA,EACN59D,MAAOA,EACPoyD,SAAUA,EACV5wD,UAAW+tC,GAAkBriC,EAC7Bw7E,UAAW+B,GAA+BnuF,KAAKosF,SAAS9qB,GACxD2pB,UAAWkD,GAA+BnuF,KAAKirF,SAAS3pB,GACxDorB,YAAayB,GAA+BnuF,KAAK0sF,WAAWprB,GAC5D4pB,aAAcr4C,EACd7Q,SAAUhiC,KAAKT,MAAMyiC,SACrB6Q,UAAWA,EACXplC,WAAYA,EACZ6kC,eAAgBA,EAChB9kC,QAASA,EACTulC,gBAAiBA,EACjBzyC,SAAUA,EACVD,SAAUA,EACVH,OAAQA,EACRmsF,OAAQrsF,KAAKqsF,OACblB,iBAAkBnrF,KAAKT,MAAM20D,2BAA6B5hB,EAC1DztC,iBAAkB7E,KAAKT,MAAMsF,iBAC7B5E,YAAaA,EACbmJ,cAAwC,QAA3BmlF,EAAEvuF,KAAKT,MAAM+R,sBAAc,IAAAi9E,OAAA,EAAzBA,EAA2BnlF,cAC1CkjF,YAAaA,GAEZjtF,EAAAA,aAAmBgkB,EAA4B,CAAEkxB,eAAe,UAlH/EllC,OAAAA,EAAAA,EAAAA,CAAA,CAATE,EAAAA,GAAQ,mCAaCF,OAAAA,EAAAA,EAAAA,CAAA,CAATE,EAAAA,GAAQ,kCAdPm+E,EAAkBr+E,OAAAA,EAAAA,EAAAA,CAAA,CADvBK,EAAAA,GACKg+E,GAwKSA,IAAAA,EAAAA,EC1Mf,MAAMe,EAAiE,GASjEC,EAAsBA,CAACC,EAAiBz8B,EAAwBlH,IAAoCjrD,WAClG4uF,GAAWz8B,IAGfu8B,EAAcxqF,IAAI2qF,IACdA,GAAe,IACR,UAEL5jC,MA+CK6jC,IAAAA,EA5C4Dj/E,IAStE,IATuE,gBACxEslD,EAAe,cACfhD,EAAa,WACblH,EAAU,iBACVnmD,EAAgB,+CAChBmmB,EAA8C,oBAC9C4+B,EAAmB,yBACnBr/C,EAAwB,iCACxBT,GACH8F,EACG,MAAO++E,EAAQG,GAAaC,OAAAA,EAAAA,SAAAA,EAAS,GACrCN,EAAcx5E,KAAK65E,GACnB,MAAME,EAAUl/E,OAAAA,EAAAA,iBAAAA,CAAiBm/E,EAAAA,EAAeC,SAAUrqF,EAAmBqwD,EAAiB,IACxFzpC,EAAazb,OAAAA,EAAAA,uBAAAA,CAAuBnL,EAAmBmqF,GAE7D,OAAIhkE,GAAoDzgB,IAA4BT,EAgBhFzK,EAAAA,EAAA+oB,cAACpjB,EAAAA,OAAMnC,OAAAC,OAAA,CACHJ,UAAWkiB,GAAAA,CAAW,+BAAgC,CAAE,UAAW+pE,IACnE1pF,MAAM,UACNE,QAASupF,EAAoBC,EAAQz8B,EAAelH,GACpDtnD,MAAOwxD,GACHzpC,EAAU,CACdvmB,UAAWgtD,GAAiBy8B,IAE3Bz5B,GAtBD71D,EAAAA,EAAA+oB,cAACpjB,EAAAA,OAAMnC,OAAAC,OAAA,CACHJ,UAAWkiB,GAAAA,CAAW,+BAAgC,CAAE,UAAWglC,MAAAA,GAAAA,IACnE3kD,MAAM,UACNE,QAAS6lD,EACTtnD,MAAOwxD,GACHzpC,EAAU,CACdvmB,UAAWgtD,GAAiBtI,IAE3BsL,6kBCuEjB,IAAMxL,EAAN,cAAuBrqD,EAAAA,cAAvBC,cAAA,IAAAqT,6BAiEW,KAAA3F,MAAwB,CAC3BlJ,aAAc,GACd6lD,oBAAoB,EACpBC,qBAAqB,EACrBC,qBAAqB,GAGR,KAAAhlD,iBAAsC8F,OAAAA,EAAAA,mBAAAA,CACnD3K,KAAKT,MAAMsC,QAAQU,QAAQqI,kBAC3B5K,KAAKT,MAAMsL,aACX7K,KAAKT,MAAMuC,WAGE,KAAAjC,iBAAiDR,EAAAA,YA+c3D,KAAAyqD,4BAA+Br/C,GACjCzK,KAAKT,MAAMiB,OAAOupD,gBAAiB34C,KAAO3G,EAAMgG,OAAOlM,MAM3C,KAAA5E,UAAY,KACjBK,KAAKgqD,YAAkC,YAApBhqD,KAAKgqD,YAA4BhqD,KAAKiqD,cAAgBjqD,KAAKgN,MAAM28C,mBAQ/E,KAAAO,aAAgBpkC,IAC7B,MAAM,MAAEqkC,GAAUnqD,KAAKT,MACvB,OAAO4qD,GAASA,EAAMrkC,IAAQqkC,EAAMrkC,GAAKzkB,OAAS,EAAI8oD,EAAMrkC,QAAO1lB,GAMtD,KAAAgqD,6BAA+BrqD,UAA0B,IAAAe,EACtEd,KAAKyX,SAAS,CAAEmyC,qBAAqB,UAEA,QAArC9oD,EAAMd,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAH,OAAA,EAA/BA,EAAiCupD,yCAAyC,CAC5EC,uCAAwCtqD,KAAKT,MAAMwB,KAAKC,SAASC,OAAOspD,uCAQ/D,KAAAC,aAAezqD,UAA0B,IAAA8F,EACtD,MACI1D,WAAW,+BACPsoD,EAA8B,oBAC9BnjD,EAAmB,+BACnBwnD,EAA8B,2CAC9BC,GAEJltD,SAAS,cACLuH,EACA0uB,KACIt3B,QAAQ,iBAAEkqD,GAAmB,KAGrCP,OAAO,kBAAEtB,GACT9nD,MAAM,SAAEC,EAAQ,SAAEwS,IAClBxT,KAAKT,MAMT,GAJAS,KAAKT,MAAMuC,UAAUgE,YAAY,oCACjC9F,KAAKyX,SAAS,CAAEoyC,qBAAqB,IAID,QAAhChkD,EAAC7F,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAA4E,GAA/BA,EAAiC3E,aAAaC,iBAC/CupD,WACO1qD,KAAK2qD,yBAAyB3pD,GAAUE,aAAa2G,WAAY2L,IAMrE,KAAAvN,EAAAG,EAAAwkD,EACH,MAAMC,EAAuBhC,GAAqBA,EAAkBxnD,OAAS,EAEvE4nB,QAA2BjpB,KAAK8qD,4BAA0D,QAA/B7kD,EAAAjG,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAgF,OAAA,EAA/BA,EAAiC8kD,qBAAsB,SCluBrH,OACXjiC,EACApiB,EACAqiB,EACAC,EACAC,EACAnf,IAEO+e,OAAAA,EAAAA,WAAAA,CAAWC,EAAKpiB,EAAeqiB,EAAiBC,EAAUC,EAAoBnf,GD4tBvEkhD,CACF5hD,EACApJ,KAAKT,MAAMwB,KAAKC,SAASC,OACzBjB,KAAKT,MAAMwB,KAAKyS,SAASvS,QACxB4pD,EACD5hC,EAC+B,QADb7iB,EAClBpG,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAmF,OAAA,EAA/BA,EAAiC0D,kCACnCtC,MAAMzF,IACJ,MAAMktD,EAAiBjvD,KAAKT,MAAMwB,KAAKC,SAASC,OAEhD,GAAIguD,GAAkBA,EAAe7iD,0CAA2C,CAC5E,MAAMgjD,EAAYrtD,GAASA,EAAMmO,KAAOnO,EAAMmO,KAAO,GAChDm/C,OAAAA,EAAAA,kBAAAA,CAAkBD,EAAWpvD,KAAKT,MAAM4C,YAAa8sD,EAAe1kD,yBAA0BnB,OAChG,KAAAhB,EAAAknD,EAAA5lD,EACH,IAAI5F,EAAewD,EAWnB,GAVAtH,KAAKyX,SAAS,CAAEoyC,qBAAqB,IAEjC9nD,GAAwB,2DAAfA,EAAMmO,KACfpM,EAAegrD,EAER/sD,GAAwB,uEAAfA,EAAMmO,OACtBpM,EAAeirD,GAKgB,QAA/B3mD,EAAApI,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAmH,GAA/BA,EAAiC4iB,gDACvB,QADqEskC,EAC/EvtD,EAAMhB,YAAI,IAAAuuD,GAAVA,EAAYC,oBACoB,QAAhC7lD,EAAC1J,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAyI,IAA/BA,EAAiCI,kCAElC,OAGJ9J,KAAKyX,SAAS,CACV3T,aAAAA,IAEJ9D,KAAKT,MAAMuC,UAAUy3B,UAAUx3B,YAIlB,QAArB6oD,EAAM5pD,EAASC,cAAM,IAAA2pD,OAAA,EAAfA,EAAiBM,qCAAqC,CAAEC,mCAAmC,UAjDjGnrD,KAAKyX,SAAS,CACV3T,aAAc2mD,IAElBzqD,KAAKT,MAAMsC,QAAQC,UAAUC,MAAM0oD,IAuD1B,KAAAK,2BAA6B/qD,MAAAA,IAAqE,IAAAqZ,EAAAzP,EAC/G,MAAMhC,EAA0D,QAArCyR,EAAGpZ,KAAKT,MAAMsC,QAAQU,QAAQC,eAAO,IAAA4W,OAAA,EAAlCA,EAAoCxR,sBAE5DwjD,EAAwD,QAAlCzhD,EAAG3J,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAA0I,GAA6B,QAA7BA,EAA/BA,EAAiCzI,aAAa2G,KAAKC,iBAAS,IAAA6B,OAAA,EAA5DA,EAA8D5B,OACzFC,GAAYA,EAASzB,cAA0C,KAA1ByB,EAASzB,cAAuByB,EAASzB,eAAiBoB,GAGnG,IAAIshB,EACJ,GAAImiC,GAA0BA,EAAuB/pD,OAAS,EAAG,CAC7D,MAAMwW,EAA0DuzC,EAAuBnnD,IAAI6P,IAChF,CACHS,OAAQT,EAAKS,OACbC,sBAAuB,CACnBC,eAAgB9M,EAChB+M,4BAA6B22C,EAAAA,uBAAuBC,mBACpDC,+BAAgCxG,YAKtCyG,OAAAA,EAAAA,sCAAAA,CACF,CAAEriD,cAAenJ,KAAKT,MAAMsC,QAAQuH,sBAC7BpJ,KAAKT,MAAMwB,KAAKC,UAAUE,aAAa2G,KAAKU,GACnDsP,GAEC9Q,KAAK0kD,IACFxiC,EAAqBwiC,EAAYC,UAEpClkD,MAAMzF,IAEH,MADA/B,KAAKT,MAAMsC,QAAQuH,cAActH,UAAUy3B,UAAUx3B,GAC/C,IAAI2nB,MAAM,wGAI5B,OAAOT,GASM,KAAA0hC,kBAAoB5qD,MAAO8H,EAAY2L,KAA+C,IAAAgxB,EACnG,IAAImmB,GAAoB,EACxB,MAAMhjD,EAA0D,QAArC68B,EAAGxkC,KAAKT,MAAMsC,QAAQU,QAAQC,eAAO,IAAAgiC,OAAA,EAAlCA,EAAoC58B,sBA4ClE,aA1CM+jD,OAAAA,EAAAA,kCAAAA,CACF,IAAIC,EAAAA,sCAAsC5rD,KAAKT,MAAMsC,QAAQuH,cAAckI,eAAe6G,aAC1FnY,KAAKT,MAAMsC,QAAQuH,eAElBrC,KAAK8kD,IAA8B,IAAAC,EAAAC,EAChC,MAAMC,EAAsE,GAE9D,QAAdF,EAAAjkD,EAAKC,iBAAS,IAAAgkD,GAAdA,EAAgB7nD,IAAIgoD,IAAW,IAAAC,EAC3B,MAAMC,EAAkB34C,EAAShS,KAAK2S,GAAWA,EAAQC,WAAa63C,EAAS53C,WAGzE+3C,EAAgBD,MAAAA,GAAyB,QAAVD,EAAfC,EAAiBE,gBAAQ,IAAAH,OAAA,EAAzBA,EAA2BI,iBAC3CnpC,KACF8oC,EAAS1lD,cAA0C,KAA1B0lD,EAAS1lD,eAAsB0lD,EAAS1lD,eAAiBoB,EAEtF,MADkCykD,GAAiBjpC,IAClB5L,EAAAA,gBAAgBC,YAAYq0C,GAA8B,CACvF,MAAMU,EAA2BV,EAA4BrqD,KAAKgrD,IAAmB,IAAAC,EACjF,OAAgD,QAAzCA,EAAAD,EAAiBE,gCAAwB,IAAAD,OAAA,EAAzCA,EAA2Cp4C,aAAe43C,EAAS53C,YAE1Ek4C,GACAP,EAAoC/2C,KAAKs3C,MAKrD,MAAMI,EAA+BC,OAAAA,EAAAA,2BAAAA,CACnB,QAD6Cb,EAC3DlkD,EAAKC,iBAAS,IAAAikD,EAAAA,EAAI,GAClBC,EACAhsD,KAAKT,MAAMsC,QAAQuH,cACnBoK,EACA7L,GAKJ,OADAgjD,GAAqBgC,EAA6BE,QAC3ClC,IAEVnjD,MAAMzF,IAEH,MADA/B,KAAKT,MAAMsC,QAAQuH,cAActH,UAAUy3B,UAAUx3B,GAC/C,IAAI2nB,MAAM,oGAGjBihC,GAOM,KAAAmC,2BAA6B,KAC1C,MAAM,SAAEpa,EAAQ,UAAEa,GAAcvzC,KAAKT,MAAMU,YAC3C,OAAOyyC,EACFzuC,IAAIsvC,GACJxrC,OAAQiF,KAA0CA,IAAUA,EAAM4D,YAAc5D,EAAMimC,iBAM9E,KAAA8Z,iBAAmB,KAChC/sD,KAAKT,MAAMuC,UAAUgE,YAAY,wCAEjC9F,KAAK8sD,6BAA6B/1C,QAAQ/J,IACtCA,EAAMQ,SAAWR,EAAM+/C,kBAAoB//C,EAAM+/C,sBAQxC,KAAAC,mBAAsBC,IACnC,MAAMC,EAAehmC,EAAAA,EAAoB,OAAQlnB,KAAKT,MAAMsC,QAAQuH,gBAAkB,GAClFmY,QAAU2rC,EACV3rC,OAAOpM,SAASrS,OAAOoqD,IAEvBltD,KAAKyX,SAAS,CACV3T,aAAc9D,KAAKT,MAAM4C,UAAUmF,sBAEvCtH,KAAKT,MAAMsC,QAAQC,UAAUC,MAAMkrD,KAQ1B,KAAAE,oBAAsB,WAAgC,IAAAhgD,EAAAkgD,EAAA,IAA/BC,IAAAr6C,UAAA5R,OAAA,QAAAjB,IAAA6S,UAAA,KAAAA,UAAA,GACpC,MAAMg6C,EAA8B,0DAC9BplD,EAAO8K,EAAKpT,MAAMwB,KAAKC,SAASC,OAAQC,aAAa2G,MACrD,GAAEU,EAAE,QAAEmjD,GAAY7jD,EAClB0lD,GACiC,QAAnCpgD,EAAAwF,EAAKpT,MAAMwB,KAAKqM,aAAanM,cAAM,IAAAkM,GAElC,QAFkCA,EAAnCA,EAAqC3L,KACjC4L,GAAsC,oEAAtBA,EAAaE,aAChC,IAAAH,OAAA,EAFDA,EAEGI,aAAa,EACdkgD,EAA4D,QAArBJ,EAAG16C,EAAKpT,MAAMsC,eAAO,IAAAwrD,GAAS,QAATA,EAAlBA,EAAoB9qD,eAAO,IAAA8qD,GAAK,QAALA,EAA3BA,EAA6Bv1B,WAAG,IAAAu1B,GAAU,QAAVA,EAAhCA,EAAkChT,gBAAQ,IAAAgT,OAAA,EAA1CA,EAA4CK,iCACtFtT,EAAeznC,EAAKpT,MAAMwB,KAAK85C,oBAAoB55C,OAEnD2sD,EAC0C,QAA5CH,GACCrT,IACiD,QAA5CqT,GAAqDrT,EAAaI,OACnB,QAA5CiT,IAAsDrT,EAAaI,OAC5E+S,GAA2CK,EACvClC,GAAWnjD,EACXslD,OAAAA,EAAAA,yBAAAA,CAAyB,CAAE1kD,cAAewJ,EAAKpT,MAAMsC,QAAQuH,cAAegO,YAAa,QAAU7O,EAAImjD,GAClG3kD,KAAM9F,IAAqC,IAAA6sD,EACa,KAAb,QAApCA,EAAA7sD,EAAO8sD,qCAA6B,IAAAD,OAAA,EAApCA,EAAsCzsD,QACtCsR,EAAKq6C,mBAAmBC,GAExBt6C,EAAK8E,SAAS,CAAEkyC,oBAAoB,MAG3CniD,MAAMzF,IAGH,GAFA4Q,EAAKpT,MAAMuC,UAAUksD,QAAQjsD,GAC7B4Q,EAAKpT,MAAMuC,UAAU03B,MAAM,2BACvB8zB,GAAwB,2DAAfvrD,EAAMmO,KAAmE,KAAAnG,EAClF,MAAM1B,EAA2C,QAAlC0B,EAAG4I,EAAKpT,MAAMwB,KAAKC,SAASC,cAAM,IAAA8I,OAAA,EAA/BA,EAAiC7I,aACnDmH,MAAAA,GAAAA,EACM4lD,YAAY,IACblnD,KAAK,KACF4L,EAAKw6C,qBAAoB,KAE5B3lD,MAAO0mD,IACJv7C,EAAKpT,MAAMuC,UAAUksD,QAAQE,EAAatqD,SAC1C+O,EAAKpT,MAAMuC,UAAU03B,MAAM,iCAGnC7mB,EAAKq6C,mBAAmBC,KAIpCt6C,EAAKq6C,mBAAmBC,GAG5Bt6C,EAAK8E,SAAS,CAAEkyC,oBAAoB,KAK3B,KAAA/P,iBAAoB91C,IACjC9D,KAAKT,MAAMuC,UAAUC,MAAM+B,GAC3B9D,KAAKT,MAAMU,YAAYyF,aAAY,GACnC1F,KAAKT,MAAMU,YAAY0F,aACvB3F,KAAKyX,SAAS,CACV3T,aAAAA,KAQS,KAAAqqD,+BAAiCpuD,MAAAA,IAC9C,MAAM2G,EAAgB1G,KAAKT,MAAMwB,KAAKC,SAASC,OAG/C,GAAIyF,GAAiB0vB,GAAwBA,EAAqBg4B,IAAK,CACnE,MAAMtwC,EAAmB9d,KAAKquD,oCAAoCj4B,SAE5D1vB,EAAc4nD,wCAAwC,CAAEC,qCAAsCzwC,UAC9FpX,EAAc8nD,yCAAyC,CAAEC,sCAAuC3wC,MAS7F,KAAAuwC,oCAAuCj4B,IAC3B,CACrBs4B,uBAAwBt4B,EAAqBu4B,QAC7CrhD,KAAM8oB,EAAqBG,WAC3BU,OAAQb,EAAqBw4B,SAC7B13B,aAAcd,EAAqBy4B,SACnC13B,KAAMf,EAAqBe,KAC3BC,MAAOhB,EAAqBgB,MAC5BC,QAASjB,EAAqBg4B,IAC9B72B,MAAOnB,EAAqBmB,QAv3B1B,iBAAc,IAAAttB,EACpB,OAA+B,QAA/BA,EAAOjK,KAAKT,MAAMwB,KAAKC,gBAAQ,IAAAiJ,OAAA,EAAxBA,EAA0B1J,OAG3B,kBAAe,IAAA2J,EACrB,GAAIlK,KAAKwvD,gBAEL,OAAO,EAEX,MAAM3nD,EAA+B,QAA3BqC,EAAGlK,KAAKT,MAAMwB,KAAKC,gBAAQ,IAAAkJ,GAAQ,QAARA,EAAxBA,EAA0BjJ,cAAM,IAAAiJ,GAAc,QAAdA,EAAhCA,EAAkChJ,oBAAY,IAAAgJ,OAAA,EAA9CA,EAAgDrC,KAC7D,QAA2B,YAApB7H,KAAKgqD,aAA8BniD,GAAS4nD,GAAAA,CAAQ5nD,IAAWA,EAAKC,WAAuC,IAA1BD,EAAKC,UAAUzG,QAGjG,eAAY,IAAA8I,EAClB,MAAMtC,EAA+B,QAA3BsC,EAAGnK,KAAKT,MAAMwB,KAAKC,gBAAQ,IAAAmJ,GAAQ,QAARA,EAAxBA,EAA0BlJ,cAAM,IAAAkJ,GAAc,QAAdA,EAAhCA,EAAkCjJ,oBAAY,IAAAiJ,OAAA,EAA9CA,EAAgDtC,KAC7D,MAA2B,WAApB7H,KAAKgqD,YAAgD,YAApBhqD,KAAKgqD,cAA8BniD,GAAQ4nD,GAAAA,CAAQ5nD,IAGrF,sBACN,OAAO7H,KAAKT,MAAMsC,QAAQU,QAAQm7B,OAAOD,SAGnC,oBAAiB,IAAArzB,EAAAC,EAAAC,EAAA0B,EAAAC,EACvB,MAAM6E,EAA8B9Q,KAAKT,MAAMwB,KAAKC,SAASC,SAAyC,QAAnCmJ,EAAIpK,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAmJ,OAAA,EAA/BA,EAAiC0G,6BAElGka,EAC6E,QAD/B3gB,EACjB,QADiBC,EAChDtK,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAqJ,OAAA,EAA/BA,EAAiC0gB,sDAA8C,IAAA3gB,GAAAA,EAE7EqlD,EAAgBxoC,EAAAA,EAAsBlnB,KAAKT,MAAMsC,QAAQU,WAAavC,KAAK2vD,2BAGjF,OACI3vD,KAAKT,MAAMU,YAAYuN,eACUpN,IAAhC0Q,GAA6CA,GAA+Bka,KAChD,KAA5BhrB,KAAKgN,MAAMlJ,cACRknB,GACkE,QADpBhf,EACd,QADcC,EAC7CjM,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAgL,OAAA,EAA/BA,EAAiCnC,wCAAgC,IAAAkC,GAAAA,MACpEgf,GAAkD0kC,GAIlD,iCAA8B,IAAAxjD,EAAAC,EAAAP,EAAAS,EACpC,MAAMquC,EAA0E,QAAjExuC,EAAkC,QAAlCC,EAAGnM,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAkL,OAAA,EAA/BA,EAAiCjL,aAAa2G,KAAKgrB,mBAAW,IAAA3mB,EAAAA,EAAI,EAGpF,OAFoF,QAAzDN,EAAkC,QAAlCS,EAAGrM,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAoL,OAAA,EAA/BA,EAAiCgpB,6BAAqB,IAAAzpB,EAAAA,EAAI,KAEvD8uC,EAG3B,kBAAe,IAAAjuC,EACrB,QACqC,QAAhCA,EAACzM,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAwL,GAAc,QAAdA,EAA/BA,EAAiCvL,oBAAY,IAAAuL,IAA7CA,EAA+C5E,OACF,YAA/C7H,KAAKT,MAAMwB,KAAK85C,oBAAoBt6C,QACI,YAAxCP,KAAKT,MAAMwB,KAAKqM,aAAa7M,OAIrC,wCAA4C,IAAAqvD,EAAAC,EACxC,MAAM7kD,EAGmB,QAHT4kD,EACY,QADZC,EACZ7vD,KAAKT,MAAMwB,KAAKC,gBAAQ,IAAA6uD,GAAQ,QAARA,EAAxBA,EAA0B5uD,cAAM,IAAA4uD,GAAc,QAAdA,EAAhCA,EAAkC3uD,oBAAY,IAAA2uD,GAAM,QAANA,EAA9CA,EAAgDhoD,YAAI,IAAAgoD,GAAqB,QAArBA,EAApDA,EAAsD5kD,2BAAmB,IAAA4kD,GAExE,QAFwEA,EAAzEA,EAA2EruD,KACvE0J,GAA6B,0BAAjBA,EAASC,YACxB,IAAA0kD,GAAO,QAAPA,EAFDA,EAEGzkD,aAAK,IAAAykD,OAAA,EAFRA,EAEUxkD,mBAAW,IAAAukD,EAAAA,EAAI,GAC7B,OAAO5kD,EAAcM,KAAKC,MAAMP,GAAyC,KAkBtEwP,oBACH,MACIrY,WAAW,oBAAEmF,IACbtH,KAAKT,MAETsM,OAAAA,EAAAA,EAAAA,CACI,IAAM7L,KAAK8vD,oBAAsB7K,EAAAA,sBAAsB8K,QACvDhwD,UACI,GAAIC,KAAK0L,kCAAmC,KAAAskD,EAAAC,EACxC,MAAM,MACF3jC,EAAK,WACL+J,EAAU,qBACVD,EACA85B,kBAAmBC,EAA6B,mCAChDxkD,EAAkC,kCAClCykD,EAAiC,wBACjCC,EAAuB,QACvBvyC,GACA9d,KAAK0L,kCAYyC,IAAA4kD,EAAAC,EAAlD,GAV+B,QAA/BP,EAAAhwD,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAA+uD,GAA/BA,EAAiCQ,6BAA6B,CAC1DC,mCAAoCnkC,MAAAA,EAAAA,EAAS,GAC7C23B,cAAe5tB,EACf0tB,wBAAyB3tB,EACzBs6B,qBAAsBP,EACtBQ,4BAA6BhlD,EAC7BilD,2BAA4BR,EAC5BS,2BAA4BR,IAG5BD,GAAqCtyC,EACN,QAA/BwyC,EAAAtwD,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAqvD,GAA/BA,EAAiChC,wCAAwC,CACrEC,qCAAsCzwC,IAEX,QAA/ByyC,EAAAvwD,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAsvD,GAA/BA,EAAiC/B,yCAAyC,CACtEC,sCAAuC3wC,SAGtC9d,KAAKmuD,+BAA+B/3B,GAGd,QAA/B65B,EAAAjwD,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAgvD,GAA/BA,EAAiC/uD,aAAa4vD,0BAA0B,CACpEC,uBAAwB,CACpB,CACI5lD,IAAK,wBACLC,MAAO,CAAEC,YAAa,WAQ9CQ,OAAAA,EAAAA,EAAAA,CACI,IAAM7L,KAAK0N,SACX,KACI1N,KAAKyX,SAAS,CACV3T,aAAcwD,IAElBtH,KAAKT,MAAMsC,QAAQC,UAAUC,MAAM,wBAI3C8J,OAAAA,EAAAA,EAAAA,CACI,IACW7L,KAAKiqD,YAEhB,KACIjqD,KAAKgtD,mBAAmB,8CAIhCnhD,OAAAA,EAAAA,EAAAA,CACI,IAAM7L,KAAKgxD,YACX,KACIhxD,KAAKmtD,wBAIbphD,OAAAA,EAAAA,EAAAA,CACI,IAAM/L,KAAKT,MAAMU,YAAYuN,QAC7B,KACIxN,KAAK+sD,qBAKbhhD,OAAAA,EAAAA,EAAAA,CACI,SAAAklD,EAAA,OAAqC,QAArCA,EAAMjxD,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAgwD,OAAA,EAA/BA,EAAiCC,gCACvCnxD,MAAAA,IAAgB,IAAAoxD,EAAAC,EAAAC,EAAAC,EAEuB,QAA/BH,EAAAnxD,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAkwD,IAA/BA,EAAiCnmC,iDACjCxd,GACgC,QAAhC4jD,EAACpxD,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAmwD,GAA/BA,EAAiCG,2BACD,QAAhCF,EAACrxD,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAowD,GAA/BA,EAAiC9mD,2BACA,QADwB+mD,EACvDtxD,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAqwD,IAA/BA,EAAiCxnD,oCAEhC9J,KAAKgN,MAAM48C,qBACZ5pD,KAAKyX,SAAS,CAAEmyC,qBAAqB,IAGzC5pD,KAAKT,MAAMuC,UAAUgE,YACjB,+GAGE9F,KAAKwqD,eAGNxqD,KAAKT,MAAMwB,KAAKC,SAASC,OAAOuwD,+BACjCxxD,KAAKyX,SAAS,CAAEmyC,qBAAqB,OAOrD79C,OAAAA,EAAAA,EAAAA,CACI,SAAA0lD,EAAA,OAAqC,QAArCA,EAAMzxD,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAwwD,OAAA,EAA/BA,EAAiCC,mCACvChkD,IAAW,IAAAikD,EAC4B,QAA/BA,EAAA3xD,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAA0wD,GAA/BA,EAAiC3mC,gDAAkDtd,GACnF1N,KAAKyX,SAAS,CAAEmyC,qBAAqB,IAErC5pD,KAAKT,MAAMuC,UAAUgE,YACjB,6HAGJ9F,KAAKT,MAAMuC,UAAUgE,YACjB,wGAMhBiG,OAAAA,EAAAA,EAAAA,CACI,SAAA6lD,EAAA,OAAqC,QAArCA,EAAM5xD,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAA2wD,OAAA,EAA/BA,EAAiCC,0BACvCnkD,IAAW,IAAAokD,EAC0FC,EAA9D,QAA/BD,EAAA9xD,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAA6wD,GAA/BA,EAAiC9mC,gDAAkDtd,GACnF1N,KAAKyX,SAAS,CAAEmyC,qBAAqB,IAEN,QAA/BmI,EAAA/xD,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAA8wD,GAA/BA,EAAiCC,+BAA+B,CAAEC,6BAA6B,IAE/FjyD,KAAKT,MAAMuC,UAAUgE,YACjB,oHAGJ9F,KAAKT,MAAMuC,UAAUgE,YACjB,+FAOhBiG,OAAAA,EAAAA,EAAAA,CACI,IAAM/L,KAAKkyD,cACXnyD,UAAW,IAAAoyD,EACoGC,EAAxE,QAA/BD,EAAAnyD,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAkxD,GAA/BA,EAAiCnnC,gDAAkDhrB,KAAKkyD,cACrD,QAAnCE,EAAIpyD,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAmxD,GAA/BA,EAAiCtoD,wCAC3B9J,KAAKT,MAAMwB,KAAKC,SAASC,OAAOoxD,uCAAuC,CACzEC,qCAAqC,IAGzCtyD,KAAKT,MAAMuC,UAAUgE,YACjB,6HAGJ9F,KAAKT,MAAMuC,UAAUgE,YACjB,4HAEJ9F,KAAKT,MAAMuC,UAAUgE,YACjB,mBAAmBohB,EAAAA,EAAsBlnB,KAAKT,MAAMsC,QAAQU,iCACxDvC,KAAKkyD,mBAKjBlyD,KAAKT,MAAMuC,UAAUgE,YAAY,oFAM7CiG,OAAAA,EAAAA,EAAAA,CACI,SAAAwmD,EAAA,OAAqC,QAArCA,EAAMvyD,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAsxD,OAAA,EAA/BA,EAAiCjmD,eACvCA,IAAgB,IAAAkmD,EACZ,MAAMC,GAAiCnmD,MAAAA,OAAa,EAAbA,EAAeC,iBAAkBC,EAAAA,cAAck9C,SAEhFgJ,GACFpmD,MAAAA,OAAa,EAAbA,EAAe8iD,aAAcuD,EAAAA,UAAUC,6DACjCtmD,EAAcC,gBAAkBC,EAAAA,cAAcqmD,0BAC9CJ,EAEyB,QAA/BD,EAAAxyD,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAuxD,GAA/BA,EAAiCpmD,2CACjCE,GACAA,EAAcxI,eACb2uD,GAAgDC,IAEjD1yD,KAAK45C,iBAAiBttC,EAAcxI,gBAM7CgvD,qBAAkB,IAAAC,EAAAC,EAEc,QAA/BD,EAAA/yD,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAA8xD,GAA/BA,EAAiC3mD,2CACF,QAD2C4mD,EAC1EhzD,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAA+xD,GAA/BA,EAAiCC,4BACjCjzD,KAAKgN,MAAMlJ,cAEN8I,OAAAA,EAAAA,qBAAAA,CAAqB5M,KAAKH,iBAAkBG,KAAKT,MAAMsC,QAAQuH,eAKrE6D,SAAM,IAAAimD,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EACT,MAAM,YACFh0D,EACAO,QAAQ,UAAEkC,EAAS,gBAAEqnD,EAAe,0BAAEmK,GAA2B,UACjE/xD,EACAN,SACIU,SACIm8C,MAAM,gBAAEC,MAGhB3+C,KAAKT,OACH,aAAEuE,GAAiB9D,KAAKgN,OACxB,eAAEmnD,EAAc,eAAEC,EAAc,mBAAEC,EAAkB,6BAAEC,EAA4B,oBAAEhtD,GAAwBnF,EAC5GoyD,EAAgB3vC,GAAAA,CAAW,cAAeliB,GAC1C8xD,EAAyBx0D,KAAKkqD,aAAa,uBAG3CuK,EAAsBD,MAAAA,OAAsB,EAAtBA,EAAwBzsD,OAAO2sD,KAASA,MAAAA,GAAAA,EAAM5uC,IAAIrM,SAAS,qBAGjF2vC,EAAkCoL,MAAAA,OAAsB,EAAtBA,EAAwBhzD,KAAKkzD,GAAQA,MAAAA,OAAI,EAAJA,EAAM5uC,IAAIrM,SAAS,oBAE1Fk7C,EACF30D,KAAKT,MAAMsC,QAAQU,SACnBvC,KAAKT,MAAMsC,QAAQU,QAAQqyD,SAC3B50D,KAAKT,MAAMsC,QAAQU,QAAQqyD,QAAQD,gBACnC30D,KAAKT,MAAMsC,QAAQU,QAAQqyD,QAAQD,iBAEjC3yB,EACFhiC,KAAKT,MAAMsC,QAAQU,SACnBvC,KAAKT,MAAMsC,QAAQU,QAAQsyD,QACgC,WAA1D70D,KAAKT,MAAMsC,QAAQU,QAAQsyD,OAAOC,KAEjCC,EAAoB7tC,EAAAA,EAAoB,OAAQlnB,KAAKT,MAAMsC,QAAQuH,gBAAkB,GACrF8jD,EAAehmC,EAAAA,EAAoB,OAAQlnB,KAAKT,MAAMsC,QAAQuH,gBAAkB,GAEhF8/C,EACFlpD,KAAKT,MAAM4qD,MAAMjB,oBAAsBlpD,KAAKT,MAAM4qD,MAAMjB,mBAAmB7nD,OAAS,GAAKrB,KAAKT,MAAM4qD,MAAMjB,mBAAmB,GAE3Hr5C,EAAUC,OAAAA,EAAAA,iBAAAA,CAAiB,QAAS9P,KAAK6E,iBAAkBgiB,EAAAA,kBAAkBmuC,gBAC7EC,EAA2BjlD,OAAAA,EAAAA,uBAAAA,CAAuBhQ,KAAK6E,iBAAkBgL,GAEzE1O,EAAiBnB,KAAKT,MAAMwB,KAAKC,WAA2C,QAAnCkyD,EAAIlzD,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAiyD,OAAA,EAA/BA,EAAiChyD,aAAaC,gBAC3F+zD,EAAkB/zD,EAAiBkzD,EAAqBD,EAGxDppC,EAC8E,QADhCmoC,EACxB,QADwBC,EAChDpzD,KAAKT,MAAMwB,KAAKC,gBAAQ,IAAAoyD,GAAQ,QAARA,EAAxBA,EAA0BnyD,cAAM,IAAAmyD,OAAA,EAAhCA,EAAkCpoC,sDAA8C,IAAAmoC,GAAAA,EAG9E5oD,EAAqF,QAA7D8oD,EAA2B,QAA3BC,EAAGtzD,KAAKT,MAAMwB,KAAKC,gBAAQ,IAAAsyD,GAAQ,QAARA,EAAxBA,EAA0BryD,cAAM,IAAAqyD,OAAA,EAAhCA,EAAkC/oD,gCAAwB,IAAA8oD,GAAAA,EAGrF8B,GAA6C,QAA3B5B,EAAGvzD,KAAKT,MAAMwB,KAAKC,gBAAQ,IAAAuyD,GAAQ,QAARA,EAAxBA,EAA0BtyD,cAAM,IAAAsyD,OAAA,EAAhCA,EAAkC4B,mBAGvDC,GAA8C,QAA3B5B,EAAGxzD,KAAKT,MAAMwB,KAAKC,gBAAQ,IAAAwyD,GAAQ,QAARA,EAAxBA,EAA0BvyD,cAAM,IAAAuyD,OAAA,EAAhCA,EAAkC4B,oBAGxDC,GAAgD,QAA3B5B,EAAGzzD,KAAKT,MAAMwB,KAAKC,gBAAQ,IAAAyyD,GAAQ,QAARA,EAAxBA,EAA0BxyD,cAAM,IAAAwyD,OAAA,EAAhCA,EAAkC4B,sBAG1DvkD,GAAsD,QAA3B4iD,EAAG1zD,KAAKT,MAAMwB,KAAKC,gBAAQ,IAAA0yD,GAAQ,QAARA,EAAxBA,EAA0BzyD,cAAM,IAAAyyD,OAAA,EAAhCA,EAAkC5iD,4BAGhEhH,GAAqG,QAArE6pD,EAA2B,QAA3BC,EAAG5zD,KAAKT,MAAMwB,KAAKC,gBAAQ,IAAA4yD,GAAQ,QAARA,EAAxBA,EAA0B3yD,cAAM,IAAA2yD,OAAA,EAAhCA,EAAkC9pD,wCAAgC,IAAA6pD,GAAAA,EAGrGvnD,GACyE,QADhCynD,EACnB,QADmBC,EAC3C9zD,KAAKT,MAAMwB,KAAKC,gBAAQ,IAAA8yD,GAAQ,QAARA,EAAxBA,EAA0B7yD,cAAM,IAAA6yD,OAAA,EAAhCA,EAAkC1nD,iDAAyC,IAAAynD,GAAAA,EAGzEZ,GAAqD,QAA3Bc,EAAG/zD,KAAKT,MAAMwB,KAAKC,gBAAQ,IAAA+yD,GAAQ,QAARA,EAAxBA,EAA0B9yD,cAAM,IAAA8yD,OAAA,EAAhCA,EAAkCd,2BAErE,IAAIqC,IAA6B,EAGX,oBAAX/zC,QACmH,MAAjH,QAARyyC,EAAAuB,gBAAQ,IAAAvB,GAA6F,QAA7FA,EAARA,EAAUwB,uBA9XgB,iCA8XyE,UAAE,IAAAxB,OAAA,EAArGA,EAAuG3rC,MAAMC,WAE9GgtC,IAA6B,GAGjC,IAAIvnD,GAASC,EAAAA,EAAA,GACNhO,KAAKT,OAAK,IACbsqD,oBAAqB7pD,KAAKgN,MAAM68C,oBAChCnnD,UAAW6xD,EACX10D,iBAAkBG,KAAKH,iBACvBoqD,YAAajqD,KAAKiqD,YAClB0K,eAAAA,EACAjnD,SAAU1N,KAAK0N,SACf5D,iCAA0D,QAA1BmqD,EAAEj0D,KAAKT,MAAMwB,KAAKC,gBAAQ,IAAAizD,GAAQ,QAARA,EAAxBA,EAA0BhzD,cAAM,IAAAgzD,OAAA,EAAhCA,EAAkCnqD,iCACpEkhB,+CAAAA,EACAq9B,cACIroD,KAAKT,MAAMwB,KAAKC,eACoBZ,IAApCJ,KAAKT,MAAMwB,KAAKC,SAASC,aACsBb,IAA/CJ,KAAKT,MAAMwB,KAAKC,SAASC,OAAOooB,WACpCloB,eAAAA,EACA6oD,WAAYhqD,KAAKgqD,WACjBhoB,SAAAA,EACA+yB,kBAAAA,EACA7H,aAAAA,EACAsC,gBAAiBxvD,KAAKwvD,gBACtB3G,kBACI7oD,KAAKT,MAAM4qD,MAAMtB,mBAAqB7oD,KAAKT,MAAM4qD,MAAMtB,kBAAkBxnD,OAAS,EAC5ErB,KAAKT,MAAM4qD,MAAMtB,kBAAkB,QACnCzoD,EACVgoD,cAAe,CAAE15C,YAAa1O,KAAKT,MAAOmD,UAAW6xD,GACrD74C,YAAa,CAAEhZ,UAAW,qBAC1B4lD,UAAW,CAAE5lD,UAAW,qBACxB6lD,UAAW,CAAE7lD,UAAW,qBACxB8lD,iBAAkB,CAAE9lD,UAAW,6BAC/B+lD,UAAW,CAAE/lD,UAAW4yD,GAA6B,gCAAkC,qBACvF5M,sBAAuB,CAAEhmD,UAAW,mCACpCimD,uBAAwB,CAAEjmD,UAAW,oCACrCkmD,wBAAyB,CAAElmD,UAAW,qCACtCgB,MAAOqmD,GAAmB/pD,KAAKy1D,mBAAmB1L,GAClDX,gCAAAA,IAGJ,IAAKuL,GAAkBhW,EACnB5wC,GAASC,EAAAA,EAAA,GACFD,IAAS,IACZG,MAAO7O,EAAAA,cAACq2D,EAAc7yD,OAAAC,OAAA,GAAK,CAAEc,QAAS0wD,YAEvC,GAAIt0D,KAAKL,YACZoO,GAASC,EAAAA,EAAA,GACFD,IAAS,IACZghC,QAAS1vC,EAAAA,cAAC2P,EAAAA,QAAO,CAACtM,UAAU,+CAE7B,GAAI1C,KAAK0N,SACZK,GAASC,EAAAA,EAAA,GACFD,IAAS,IACZG,MAAO7O,EAAAA,cAACq2D,EAAc7yD,OAAAC,OAAA,GAAK,CAAEc,QAAS0D,WAEvC,KAAAquD,GAAAC,GACH7nD,GAASC,EAAAA,EAAA,GACFD,IAAS,IACZG,MAAOpK,GAAgBzE,EAAAA,cAACq2D,EAAc7yD,OAAAC,OAAA,GAAK,CAAEc,QAASE,KACtDqkD,SAAS,EACTW,WAAY2L,EACRp1D,EAAAA,cAACw2D,EAAmBhzD,OAAAC,OAAA,GACZ,CACA+Y,MAAO44C,EACPx0D,YAAAA,EACAi0D,0BAAAA,EACA4B,SAAU3zD,EACVmP,eAAgBtR,KAAKT,MAAMsC,QAC3BmgC,SAAAA,EACAvE,SAAUz9B,KAAKwvD,gBACf3qD,iBAAkB7E,KAAK6E,iBACvBiF,iCAA0D,QAA1B6rD,GAAE31D,KAAKT,MAAMwB,KAAKC,gBAAQ,IAAA20D,IAAQ,QAARA,GAAxBA,GAA0B10D,cAAM,IAAA00D,QAAA,EAAhCA,GAAkC7rD,iCACpEkhB,+CAAAA,EACAtd,WAAY5J,EACZqxD,mBAAAA,GACAC,oBAAAA,GACAC,sBAAAA,GACAvkD,4BAAAA,GACA1E,0CAAAA,GACA6mD,2BAAAA,WAIR7yD,EAEJ2oD,aAAcgN,EAAgB/1D,KAAKT,OACnCypD,sBAAuBK,EAAyBrpD,KAAKT,OACrDwlB,UAAW5jB,OAAiBf,EAAYyf,EAAa7f,KAAKT,MAAOS,KAAK6E,kBACtEokD,iBACI5pD,EAAAA,cAAC22D,EAAyBnzD,OAAAC,OAAA,GAClB,CACAoyD,gBAAAA,EACAlK,YACKzgD,GAA4BygB,EACvBhrB,KAAKoqD,6BACLpqD,KAAKwqD,aAEf0H,cAAelyD,KAAKkyD,cACpBrtD,iBAAkB7E,KAAK6E,iBACvBmmB,+CAA+E,QAAjC4qC,GAAE51D,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAA20D,QAAA,EAA/BA,GAC1C5qC,+CACN4+B,oBAAqB5pD,KAAKgN,MAAM48C,oBAChCr/C,yBAAAA,EACAT,iCAAAA,MAIZo/C,mBAAAA,EACAC,mBAAoB4L,GAChB11D,EAAAA,cAAC2F,EAAAA,OAAMnC,OAAAC,OAAA,CACHJ,UAAU,yCACVgB,MAAOywD,EACPlvD,MAAM,YACNuc,KAAMuzC,GACFE,EAAwB,CAC5B/vD,SAAUlF,KAAKgN,MAAM68C,sBAEpBsK,KAMjB,OAAOn0D,KAAKT,MAAM6P,WAAWrB,IAGvB,wBAEN,GADkBlL,OAAO+wC,OAAO5zC,KAAKT,MAAMwB,MAAM2yB,KAAK3yB,GAAQsB,OAAAA,EAAAA,EAAAA,CAAItB,EAAM,YAAckkD,EAAAA,sBAAsB8K,SAExG,OAAO9K,EAAAA,sBAAsB8K,QAIjC,GADkBltD,OAAO+wC,OAAO5zC,KAAKT,MAAMwB,MAAMgY,MAAMhY,GAAQsB,OAAAA,EAAAA,EAAAA,CAAItB,EAAM,YAAckkD,EAAAA,sBAAsBgR,SAEzG,OAAOhR,EAAAA,sBAAsBgR,QAIjC,OADiBpzD,OAAO+wC,OAAO5zC,KAAKT,MAAMwB,MAAM2yB,KAAK3yB,GAAQsB,OAAAA,EAAAA,EAAAA,CAAItB,EAAM,YAAckkD,EAAAA,sBAAsBiR,QAEhGjR,EAAAA,sBAAsBiR,YADjC,EAYGT,mBAAmB1L,GACtB,OACI1qD,EAAAA,cAAC6nB,EAAAA,EAAarkB,OAAAC,OAAA,GACNinD,EAAe,CACnBvmD,IAAKumD,EAAgBvmD,KAAO,KAC5Bd,UAAU,qBACV0O,KAAM24C,EAAgB34C,KACtBC,UAAW,CAAEnR,OAAQF,KAAK8pD,4BAA6Bx4C,eAAgBtR,KAAKT,MAAMsC,QAAQU,cAlhB5F8M,OAAAA,EAAAA,EAAAA,CAAA,CAATE,EAAAA,GAAQ,+BAICF,OAAAA,EAAAA,EAAAA,CAAA,CAATE,EAAAA,GAAQ,gCASCF,OAAAA,EAAAA,EAAAA,CAAA,CAATE,EAAAA,GAAQ,6BAKCF,OAAAA,EAAAA,EAAAA,CAAA,CAATE,EAAAA,GAAQ,oCAICF,OAAAA,EAAAA,EAAAA,CAAA,CAATE,EAAAA,GAAQ,kCAmBCF,OAAAA,EAAAA,EAAAA,CAAA,CAATE,EAAAA,GAAQ,+CAOCF,OAAAA,EAAAA,EAAAA,CAAA,CAATE,EAAAA,GAAQ,gCAmcCF,OAAAA,EAAAA,EAAAA,CAAA,CAATE,EAAAA,GAAQ,sCA6VTF,OAAAA,EAAAA,EAAAA,CAAA,CADCG,EAAAA,GAAM,uCAh1BLk6C,EAAQr6C,OAAAA,EAAAA,EAAAA,CAAA,CAFbI,EAAAA,gBACAC,EAAAA,GACKg6C,GA+3BSA,EAAAA,QAAAA,qCEzgCf,gBAiBe6gC,EAAAA,EAN8B36E,IAAA,IAAC,QAAEhM,GAASgM,EAAA,OACrDvQ,EAAAA,cAAA,KAAGqD,UAAU,6BAA6Be,KAAK,QAAO,YAAW,aAC5DG,oFCHT,MAAMurF,EAAyDv/E,IAAA,IAAC,QAAEm/B,EAAO,UAAEtD,EAAS,KAAEpoB,GAAMzT,EAAA,OACxFvQ,EAAAA,cAAAA,EAAAA,SAAA,KACK0vC,EACD1vC,EAAAA,cAAC6qB,EAAAA,KAAIrnB,OAAAC,OAAA,GAAK2oC,GAAYpoB,KAYf+rE,EAAAA,QARoEhlE,IAAA,IAAC,4BAAEyhB,EAA2B,MAAEhwB,GAAOuO,EAAA,OACtH/qB,EAAAA,cAACsrB,EAAAA,OAAM9nB,OAAAC,OAAA,GAAK+oC,GACPhwB,EAAM5X,IAAIof,GACPhkB,EAAAA,cAAC8vF,EAAatsF,OAAAC,OAAA,CAACgjB,IAAKzC,EAAKrhB,IAAQqhB,gVCVhCgsE,EAAwBz/E,IAAA,IAAC,UAClCinC,EAAS,MACTj0B,EAAK,cACL06B,EAAa,cACbC,EAAa,MACbrvC,EAAK,WACL8vC,EAAU,cACVC,EAAa,cACbC,EAAa,cACbC,EAAa,YACbV,EAAW,SACXC,EAAQ,SACRE,EAAQ,YACRC,EAAW,wBACXlB,EAAuB,qBACvBmB,EAAoB,qBACpBC,EAAoB,gBACpBP,GACH5tC,EAAA,OACGvQ,EAAAA,cAAC6qB,EAAAA,KAAIrnB,OAAAC,OAAA,GAAK+zC,GACL3oC,EACAyuC,EACGt9C,EAAAA,cAAC6qB,EAAAA,KAAIrnB,OAAAC,OAAA,GAAKk7C,GACN3+C,EAAAA,cAAC6qB,EAAAA,KAAIrnB,OAAAC,OAAA,GAAKm7C,GACLr7B,EACA66B,GAEJK,GACGz+C,EAAAA,cAAC6qB,EAAAA,KAAIrnB,OAAAC,OAAA,GAAKo7C,GACLZ,EACAI,GAGRK,GACG1+C,EAAAA,cAAC6qB,EAAAA,KAAIrnB,OAAAC,OAAA,GAAKq7C,GACLZ,EACAK,IAGPE,GAAwBC,IAAyBP,GAGvDn+C,EAAAA,cAAAA,EAAAA,SAAA,KACKujB,EACA66B,GAGRI,IAIIyxC,EAAoCllE,IAAA,IAAC,UAAEqhB,EAAS,iBAAEF,EAAgB,aAAEC,GAAcphB,EAAA,OAC3F/qB,EAAAA,cAAC6qB,EAAAA,KAAIrnB,OAAAC,OAAA,CAACW,KAAK,QAAO,YAAW,aAAgBgoC,GACxCF,EACAC,IAII+jD,EAAgCrqC,IAAA,IAAC,UAAEF,EAAS,KAAEn2C,GAAMq2C,EAAA,OAC7D7lD,EAAAA,cAAC6qB,EAAAA,KAAIrnB,OAAAC,OAAA,GAAKkiD,GACLn2C,EAAK5K,IAAIijD,IAAA,IAAC,GAAEllD,GAAaklD,EAAN7jC,EAAIoH,OAAAA,EAAAA,EAAAA,CAAAy8B,EAAAx8B,GAAA,OACpBrrB,EAAAA,cAACiwF,EAAgBzsF,OAAAC,OAAA,CAACgjB,IAAK9jB,GAAQqhB,QAK9BmsE,EAAsCnoC,IAAA,IAAC,KAAEtE,EAAI,KAAEl0C,GAAMw4C,EAAA,OAC9DhoD,EAAAA,cAAAA,EAAAA,SAAA,KACK0jD,GAAQ1jD,EAAAA,cAACgwF,EAAIxsF,OAAAC,OAAA,GAAKigD,IAClBl0C,GAAQxP,EAAAA,cAACkwF,EAAY1sF,OAAAC,OAAA,GAAK+L,MAItB4gF,EAAwCloC,IAAA,IAAC,MAAE7jD,EAAK,KAAEmL,GAAM04C,EAAA,OACjEloD,EAAAA,cAAAA,EAAAA,SAAA,KACKqE,EACAmL,GAAQxP,EAAAA,cAACkwF,EAAY1sF,OAAAC,OAAA,GAAK+L,MAcpB6gF,EAAAA,QAVoDnwF,IAC/D,MAAM,sBAAEojD,EAAqB,iBAAE9iD,EAAgB,aAAE+iD,EAAY,YAAE7C,GAAgBxgD,EAC/E,OACIF,EAAAA,cAACsrB,EAAAA,OAAM9nB,OAAAC,OAAA,GAAK6/C,EAAqB,CAAE/3B,IAAK/qB,IACnC+iD,GAAgBvjD,EAAAA,cAACowF,EAAY5sF,OAAAC,OAAA,GAAK8/C,IAClC7C,GAAe1gD,EAAAA,cAACmwF,EAAW3sF,OAAAC,OAAA,GAAKi9C,q5BCzC7C,IAAM+lC,EAAN,cAAmCzmF,EAAAA,UAAnCC,cAAA,oBACW,KAAA0N,MAAoC,CACvCsf,MACKtsB,KAAKT,MAAMsC,SACR7B,KAAKT,MAAMsC,QAAQU,SACnBvC,KAAKT,MAAMsC,QAAQU,QAAQm8C,MAC3B1+C,KAAKT,MAAMsC,QAAQU,QAAQm8C,KAAKC,iBAChC3+C,KAAKT,MAAMsC,QAAQU,QAAQm8C,KAAKqnC,cACpC,IAGS,KAAA10C,SAA8ChyC,EAAAA,YAE9C,KAAAQ,iBAAiDR,EAAAA,YAkHjD,KAAAS,KAAOC,UAA0B,IAAAimF,EAAA5sE,EAAAxJ,EAC9C,MAAMlJ,EAAgB1G,KAAKT,MAAMwB,KAAKC,SAASC,OACzCilF,EAA+D,QAArCF,EAAGhmF,KAAKT,MAAMwB,KAAKolF,0BAAkB,IAAAH,OAAA,EAAlCA,EAAoC/kF,OAEjEE,EAAiBuF,MAAAA,OAAa,EAAbA,EAAexF,aAAaC,eACnD,IAAIilF,EAAsB,GAItBA,EADAl/D,EAAAA,EAAsBlnB,KAAKT,MAAMsC,QAAQU,SAErC2jF,QAAmE9lF,IAArC8lF,EAA2BG,MACnDH,EAA2BG,MAC3BrmF,KAAKsmF,+BAEDtmF,KAAKgN,MAAMsf,MAG7B,MAAMi6D,EAAc7/E,MAAAA,OAAa,EAAbA,EAAexF,aAAa2G,KAAK2+E,aAC/Cl6D,EAAQnrB,EACoC,QADtBiY,EACtBpZ,KAAKT,MAAMsC,QAAQU,QAAQm8C,KAAKqnC,oBAAY,IAAA3sE,EAAAA,EAAI,GAIjC,QAJmCxJ,EAClD22E,MAAAA,EAAAA,EACC7/E,MAAAA,GAAAA,EAAe6D,2BAA6BnD,EAAAA,iBAAiBC,cAAcX,EAAc+/E,iCACpF//E,EAAc+/E,qCACdrmF,SAAS,IAAAwP,EAAAA,EACfw2E,EAEAW,EAAe/mF,KAAK+mF,aAAaz6D,GACvCtsB,KAAKT,MAAMU,YAAYH,KAAK,CACxBI,OAAQF,KAAKE,OACbG,SAAUL,KAAKK,SACfC,SAAUN,KAAKM,SACfC,OAAQY,EAAiB,WAAamrB,GAASy6D,EAAe,QAAU,WACxEr5E,WAAY4e,IAAUy6D,IAGtBz6D,SACMtsB,KAAKgnF,mBAAmB16D,GAC9B5lB,MAAAA,GAAAA,EAAeugF,4BAA4B,CAAEC,0BAA0B,KAEvExgF,MAAAA,GAAAA,EAAeugF,4BAA4B,CAAEC,0BAA0B,KAI9D,KAAAviF,SAAYwiF,IACzB,MAAM76D,GAAS66D,GAAY,IAAI1iE,QAAQ,IAAIyH,OAAO,OAAQ,MAAO,IACjElsB,KAAKyX,SAAS,CAAE6U,MAAAA,IACZtsB,KAAKT,MAAMU,YAAYyN,WAEvB1N,KAAKT,MAAMU,YAAYyF,aAAY,GACnC1F,KAAKyX,SAAS,CACV2vE,kBAAkB,MAKb,KAAAd,6BAA+B,KAE5CtmF,KAAKT,MAAMU,YAAYyF,aAAY,GACnC1F,KAAKyX,SAAS,CACV2vE,kBAAkB,IAEf,IAGM,KAAAL,aAAgBz6D,GACtBk7D,EAAAA,WAAWC,aAAat7D,KAAKG,GAGvB,KAAA06D,mBAAqBjnF,MAAAA,IAC9BC,KAAKT,MAAMwB,KAAKC,SAASC,eACnBjB,KAAKT,MAAMwB,KAAKC,SAASC,OAAO6jD,yBAAyB,CAAEC,sBAAAA,IACjE/kD,KAAKyX,SAAS,CAAE6U,MAAOy4B,MAId,KAAA7kD,OAAS,KACtBF,KAAKT,MAAMuC,UAAUgE,YAAY,mCAEjC9F,KAAKT,MAAMU,YAAY0F,cAGV,KAAArF,SAAWP,UACxBC,KAAKT,MAAMuC,UAAUgE,YAAY,qCAEjC,MAAM,MAAEwmB,GAAUtsB,KAAKgN,YACjBhN,KAAK+nF,YAAYz7D,IAQV,KAAAy7D,YAAchoF,MAAAA,IAE3B,GADgBC,KAAK+mF,aAAaz6D,GAO9BtsB,KAAKT,MAAMU,YAAYoG,gBACjBrG,KAAKgnF,mBAAmB16D,OAPpB,CAAC,IAAD07D,EACVhoF,KAAKT,MAAMU,YAAYyF,aAAY,GAEnC,MAAMoa,GAA6B,QAArBkoE,EAAAhoF,KAAKqxC,SAASnV,eAAO,IAAA8rD,OAAA,EAArBA,EAAuBz9C,QAAUvqC,KAAKqxC,SAASnV,QAC7Dpc,MAAAA,GAAAA,EAAOyqB,UAOE,KAAAlqC,SAAW,KAIxB,GAHAL,KAAKT,MAAMuC,UAAUgE,YAAY,sCAG5B9F,KAAKT,MAAMwB,KAAKC,SAASC,OAC1B,OAGJ,MAAMqrB,EAAQtsB,KAAKT,MAAMwB,KAAKC,SAASC,OAAO8pD,mBACzCz+B,GAKDtsB,KAAKyX,SAAS,CACV6U,MAAAA,IAEJtsB,KAAKT,MAAMU,YAAYyF,aAAY,GACnC1F,KAAKyX,SAAS,CACV2vE,kBAAkB,IAEtBpnF,KAAKT,MAAMU,YAAYoG,WAVvBrG,KAAKT,MAAMU,YAAY0F,cAed,KAAAi0C,iBAAoB91C,IACjC9D,KAAKT,MAAMuC,UAAUC,MAAM+B,GAC3B9D,KAAKT,MAAMU,YAAYyF,aAAY,GACnC1F,KAAKT,MAAMU,YAAY0F,aACvB3F,KAAKyX,SAAS,CACV2vE,kBAAkB,EAClBtjF,aAAAA,KA1PE,kBACN,MAAgF,aAAxE9D,KAAKT,MAAMwB,KAAKC,SAASC,QAAUjB,KAAKT,MAAMwB,KAAKC,SAAST,QAG9D,oBACN,OAAOP,KAAKT,MAAMU,YAAYyN,WAAa1N,KAAKgN,MAAMo6E,iBAGnD5sE,oBAAiB,IAAApS,EACpByD,OAAAA,EAAAA,EAAAA,CACI,IAAM7L,KAAK8L,YACX/L,gBACUC,KAAKF,SAInBiM,OAAAA,EAAAA,EAAAA,CACI,SAAAjL,EAAA,OAAqC,QAArCA,EAAMd,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAH,OAAA,EAA/BA,EAAiCyJ,0BACvCxK,MAAAA,IAAiC,IAAA8F,EAAAI,EAAAG,EAC7B,MAAMqgF,EAAkG,QAAnE5gF,EAAkC,QAAlCI,EAAGjG,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAgF,OAAA,EAA/BA,EAAiCwgF,uCAA+B,IAAA5gF,EAAAA,EAAI,GACtGoiF,GACD7gF,EAAAA,iBAAiBC,cAAco/E,IAChCA,IAAoCzmF,KAAKgN,MAAMsf,OAG/C/hB,GACiC,QAAhCnE,EAACpG,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAmF,GAA/BA,EAAiCg4D,0BAA2B6pB,SAExDjoF,KAAK+nF,YAAYtB,KAKA,QAAnCr+E,EAAIpI,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAmH,GAA/BA,EAAiCgE,4CACjCL,OAAAA,EAAAA,EAAAA,CACI,SAAArC,EAAA,OAAqC,QAArCA,EAAM1J,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAyI,OAAA,EAA/BA,EAAiC4C,eACvCA,IACQA,GAAiBA,EAAcC,gBAAkBC,EAAAA,cAAcs5E,sBAAwBx5E,EAAcxI,cACrG9D,KAAK45C,iBAAiBttC,EAAcxI,gBAKhDiI,OAAAA,EAAAA,EAAAA,CACI,SAAApC,EAAA,OAAqC,QAArCA,EAAM3J,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAA0I,OAAA,EAA/BA,EAAiC+C,oBACvCA,IACQA,IAAuBC,EAAAA,eAAem5E,sBACtCl5E,OAAAA,EAAAA,EAAAA,CAAqB5M,KAAKH,iBAAkBG,KAAKT,MAAMsC,QAAQuH,kBAO5EyD,sBAAsBC,EAA6CC,GACtE,OAAI/M,KAAKgN,QAAUD,GAAa/M,KAAKT,MAAMwB,OAAS+L,EAAU/L,KAM3DkM,SAAM,IAAAlD,EAAAE,EACT,MACIzJ,QAAQ,UAAEkC,GAAW,UACrBP,EACAlC,aAAa,QAAEuN,EAAO,uBAAEe,IACxBvO,KAAKT,OACH,iBAAE6nF,EAAgB,aAAEtjF,GAAiB9D,KAAKgN,MAC1Csf,EAA2D,QAAtDviB,EAAkC,QAAlCE,EAAGjK,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAgJ,OAAA,EAA/BA,EAAiC8gD,0BAAkB,IAAAhhD,EAAAA,EAAI,GAE/DgE,EAASC,EAAAA,EAAAA,EAAA,GACRhO,KAAKT,OACLS,KAAKgN,OAAK,IACbnN,iBAAkBG,KAAKH,iBACvB8E,SAAU3E,KAAK2E,SACfzE,OAAQF,KAAKE,OACbG,SAAUL,KAAKK,SACfC,SAAUN,KAAKM,SAEfoO,YAAa,CACTA,YAAa1O,KAAKT,MAClBmD,UAAWkiB,GAAAA,CAAW,4BAA6BliB,EAAW8K,EAAU,OAAS,QAErFU,MAAOk5E,GAAoBtjF,GACvBzE,EAAAA,cAAC8O,EAAAA,eAActL,OAAAC,OAAA,GAAK,CAAEY,MAAOvB,EAAUmB,kBAAmBM,QAASE,KAEvE6rC,gBAAiBniC,EACX06E,OAAAA,EAAAA,EAAAA,CAAmB,CACfvgE,SAAUpZ,EACV+d,MAAAA,EACAnqB,UAAAA,EACAjC,OAAQF,KAAKE,cAEjBE,EACNwvC,eAAiBpiC,OAYXpN,EAXAgxC,OAAAA,EAAAA,EAAAA,CAAkB,CACd9kB,MAAOtsB,KAAKgN,MAAMsf,MAClB5e,SAAU1N,KAAKmoF,cACfhmF,UAAAA,EACAkvC,SAAUrxC,KAAKqxC,SACf1sC,SAAU3E,KAAK2E,SACf2sC,WAAY/iC,EACZjO,SAAUN,KAAKM,SACfixC,WAAYhjC,KAA4B+d,EACxCjsB,SAAUL,KAAKK,aAK7B,OAAOL,KAAKT,MAAM6P,WAAWrB,KA7GvBsB,OAAAA,EAAAA,EAAAA,CAAA,CAATE,EAAAA,GAAQ,gCAICF,OAAAA,EAAAA,EAAAA,CAAA,CAATE,EAAAA,GAAQ,kCAgPTF,OAAAA,EAAAA,EAAAA,CAAA,CADCG,EAAAA,GAAM,uCAlQLs2E,EAAoBz2E,OAAAA,EAAAA,EAAAA,CAAA,CAFzBI,EAAAA,gBACAC,EAAAA,GACKo2E,GA8QSA,EAAAA,QAAAA,0aC5Rf,MAAMhwD,EAA0DlmB,IAO3D,IANDzN,WAAW,wBAAE4zB,EAAuB,UAAEC,EAAS,gBAAEC,EAAe,iBAAEC,EAAgB,aAAEC,GAAc,qBAClGC,EAAoB,WACpBC,EAAU,eACVC,EAAc,OACdp2B,EAAM,QACNynB,GACH/X,EACG,MAAM,WAAE2mB,EAAa,GAAE,WAAEC,EAAU,cAAEC,EAAgB,GAAE,gBAAEC,EAAkB,EAAC,eAAEC,EAAiB,GAAMP,GAAwB,IACvH,iBAAEQ,EAAmB,IAAOH,GAAiBJ,GAAc,GAC3DQ,EAAiBD,EAAiBE,QAAQ,GAG1CC,GAAqBC,MAAMH,IAAsC,KAAnBA,GAC9C,KAAEvpB,EAAI,OAAE2pB,EAAM,aAAEC,EAAY,KAAEC,EAAI,MAAEC,EAAK,QAAEC,EAAO,yBAAEC,EAAwB,MAAEC,GAAUjB,GAAkB,GAEhH,OACIj3B,EAAAA,cAAA,OAAKqD,UAAU,wCACXrD,EAAAA,cAAA,KAAGqD,UAAU,8CAA8CszB,GAC3D32B,EAAAA,cAAA,KAAGqD,UAAU,6CAA6C6zB,GACzDC,GAAcn3B,EAAAA,cAAA,KAAGqD,UAAU,gDAAgD8zB,GAC3EO,GACG13B,EAAAA,cAAA,KAAGqD,UAAU,+CACRuzB,EAAe,IAAGY,IAGzBH,EAAkB,GAAKC,EAAiB,IACtCt3B,EAAAA,cAAA,KAAGqD,UAAU,mDACRwzB,EAAgB,IAAGQ,EAAe,IAAGC,GAG7CL,GACGj3B,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAAA,KAAGqD,UAAU,yDAAyDyzB,GACtE92B,EAAAA,cAAA,KAAGqD,UAAU,qDACR4K,EAAI,IAAG2pB,GAEXC,GAAgB73B,EAAAA,cAAA,KAAGqD,UAAU,qDAAqDw0B,GACnF73B,EAAAA,cAAA,KAAGqD,UAAU,qDACRy0B,EAAI,IAAGC,EAAK,IAAGC,EAAO,IAAGC,EAAwB,IAAGC,IAIhE5P,GACGtoB,EAAAA,cAAC2F,EAAAA,OAAM,CAACtC,UAAU,2CAA2CgB,MAAOqyB,EAAyB9wB,MAAM,OAAOE,QAASjF,GAC9G61B,KAON12B,IAAAA,EAAAA,EAAAA,KAAWy2B,4kBCN1B,IAAa+8B,EAAb,cAA+CxzD,EAAAA,cAA/CC,cAAA,IAAAqT,6BA0HW,KAAA3F,MAAyC,CAC5C2iF,4BAA4B,GAGf,KAAAh0E,gBAA0B,iCAE1B,KAAAqmD,UAAqC3iE,EAAAA,YA+LrC,KAAAgjE,gBAAkBtiE,MAAAA,IAA6C,IAAA6vF,EAC5E,IAAI3uF,EACJ,IACI,GAA0B,iBAAfwJ,EAAM1J,KACb,OAEJE,EAASqK,KAAKC,MAAMd,EAAM1J,MAC5B,MAAOgB,GAGL,YADA/B,KAAK6vF,iBAAiB9tF,GAI1B,MAAM+tF,EAAyB9vF,KAAKT,MAAMiB,OAAOsvF,uBAE3CC,EAAkE,QAAhDH,EAAG5vF,KAAKT,MAAMwB,KAAKivF,uBAAuB/uF,cAAM,IAAA2uF,OAAA,EAA7CA,EAA+C7uB,mBAE1E,IAAK9/D,IAAWA,EAAOgP,MAAS6/E,GAA0B7uF,EAAOe,KAAO+tF,EACpE,OAGJ,MAAM,KAAE9/E,EAAI,MAAE1L,EAAK,QAAE0rF,GAAU,GAAUhvF,EAGzC,IAAIgvF,EAIJ,OAAQhgF,GACJ,KAAK85E,EAAAA,gCAAgCmG,OAMjC,YAJAlwF,KAAKyX,SAAS,CACVk4E,4BAA4B,EAC5BQ,uBAAwB5rF,IAGhC,KAAKwlF,EAAAA,gCAAgCqG,OAEjC,YADApwF,KAAKqwF,oBAAoB9rF,GAE7B,KAAKwlF,EAAAA,gCAAgCuG,WAEjC,kBADMtwF,KAAKuwF,wBAAwBhsF,IAEvC,KAAKwlF,EAAAA,gCAAgCrgE,MAEjC,YADA1pB,KAAKwwF,mBAAmBjsF,GAE5B,KAAKwlF,EAAAA,gCAAgC0G,SAEjC,YADAzwF,KAAK0wF,sBAAsBnsF,GAE/B,KAAKwlF,EAAAA,gCAAgC4G,YAEjC,YADA3wF,KAAK4wF,kBAAiB,GAE1B,KAAK7G,EAAAA,gCAAgC8G,YAEjC,YADA7wF,KAAK4wF,kBAAiB,GAE1B,QACI,SAMK,KAAAP,oBAAsB,SAACS,GAAmF,IAAAlmC,EAAAmmC,EAAA7zB,EAAA,IAAzD8zB,EAAA/9E,UAAA5R,OAAA,QAAAjB,IAAA6S,UAAA,IAAAA,UAAA,GAC9D,MACIlS,MAAM,SAAEC,EAAQ,uBAAEgvF,GAClBxvF,QAAQ,iBAAEywF,EAAgB,iBAAEC,GAC5B/uF,WAAW,8BAAEgvF,IACbx+E,EAAKpT,MAEH+I,GAAwB,QAAfsiD,EAAA5pD,EAASC,cAAM,IAAA2pD,OAAA,EAAfA,EAAiB1pD,aAAa2G,KAAKU,KAAM,GAClDwnF,EAAkD,QAAhCgB,EAAGf,EAAuB/uF,cAAM,IAAA8vF,OAAA,EAA7BA,EAA+BhwB,mBAEpDqwB,EAAQpjF,EAAA,CACVqjF,UAAW1+E,EAAK2+E,gBACZvB,GAAsB,CAAEhvB,mBAAoBgvB,IAGpD,GAAmB,QAAnB7yB,EAAIl8D,EAASC,cAAM,IAAAi8D,GAAfA,EAAiBlyC,+CAArB,CACI,MAAMqlC,EAAmD,CACrDkhC,WAAYT,EACZhwB,SAAUswB,GAIdpwF,EAASC,OACJuwF,8BAA8B,CAAE3gC,2BAA4BR,IAC5DtpD,KAAKhH,UACF,GAAKkxF,EAWE,CAEiC,IAAAnwF,EAaA2wF,EAAAC,EAbpC,GAAIV,EAC+B,QAA/BlwF,EAAA6R,EAAKpT,MAAMwB,KAAKC,SAASC,cAAM,IAAAH,GAA/BA,EAAiCI,aAAa+sD,YAAY,IAY9D,GATAt7C,EAAKpT,MAAMU,YAAYyF,aAAY,GACnCiN,EAAKpT,MAAMU,YAAYoG,UACvBsM,EAAK8E,SAAS,CACVk6E,cAAe,KACf7tF,aAAc,OAElB6O,EAAKpT,MAAMU,YAAYmzC,sBAAqB,GAGxC49C,QACqB,QAArBS,EAAMzwF,EAASC,cAAM,IAAAwwF,OAAA,EAAfA,EAAiB1rF,mCAAmC,CAAEC,iCAAiC,WACxE,QAArB0rF,EAAM1wF,EAASC,cAAM,IAAAywF,OAAA,EAAfA,EAAiBxmC,qCAAqC,CAAEC,mCAAmC,SA5BlF,KAAAymC,EAIjBC,EAHF,IACoD,KAAjC,QAAfD,EAAA5wF,EAASC,cAAM,IAAA2wF,OAAA,EAAfA,EAAiBE,8BAC+B,IAAhD9wF,EAASC,OAAO6P,4BAEhB6B,EAAKpT,MAAMU,YAAYozC,eACF,QAArBw+C,EAAM7wF,EAASC,cAAM,IAAA4wF,OAAA,EAAfA,EAAiB3mC,qCAAqC,CAAEC,mCAAmC,UAEjGx4C,EAAKpT,MAAMU,YAAYyF,aAAY,GACnCiN,EAAKo/E,gBAAgBZ,MAuBhC3pF,MAAMzH,MAAAA,UAEG4S,EAAKq/E,8BACXr/E,EAAKk9E,iBAAiB9tF,KAGzBkwF,QAAQ,KACLt/E,EAAK8E,SAAS,CAAEy6E,qBAAqB,WAMjDC,OAAAA,EAAAA,qCAAAA,CAAqC,CAAEhpF,cAAewJ,EAAKpT,MAAMsC,QAAQuH,eAAiB0nF,EAAkB,GAAIxoF,EAAQ8oF,GACnHrqF,KAAKhH,MAAAA,IACF,MAAM,WAAEqyF,EAAU,qBAAEvyB,EAAoB,kBAAEtQ,GAAsBc,GAA2B,GAI3F,SAFM19C,EAAK0/E,mBAAmBxyB,GAE1BtQ,EACA58C,EAAK2/E,wBAAwB/iC,OAC1B,CACH,IAAKsQ,EAED,YADAltD,EAAKk9E,iBAAiB,IAAInmE,MAAM,kCAGpC,MAAMhjB,EAAgBiM,EAAKpT,MAAMwB,KAAKC,SAASC,OAC/C,GAAIyF,EAAe,CAIf,IAAKA,EAAco3D,WAAY,CAC3B,MAAMA,EACF+B,GACAA,EAAqBppC,eACrBopC,EAAqBppC,cAAcG,iBACnCknC,SACMp3D,EAAc49C,iBAAiB,CAAEC,cAAeuZ,IAI9D,IAAK+B,EAAqBrpC,WAAY,CAClC,MAAM+7D,QAAmB5/E,EAAKkrD,cAAcn3D,EAAco3D,YAAc,IACxE,IAAKy0B,EAAY,CACb,MAAMxwF,EAAQ,IAAI2nB,MAAM,6CAGxB,OAFA3nB,EAAMmO,KAAO,wBACbyC,EAAKk9E,iBAAiB9tF,GAI1B89D,EAAqBrpC,WAAa+7D,EAQF,IAAA1sF,EAApC,SALMa,EAAcs9C,iBAAiB,CAAEC,cAAemuC,UAChD1rF,EAAco9C,2BAA2B,CAAEC,wBAAyB8b,UACpEn5D,EAAc8rF,wBAAwB,CAAE9hC,qBAAsBwgC,IAGhEF,EAC+B,QAA/BnrF,EAAA8M,EAAKpT,MAAMwB,KAAKC,SAASC,cAAM,IAAA4E,GAA/BA,EAAiC3E,aAAa+sD,YAAY,IAG9Dt7C,EAAKpT,MAAMU,YAAYyF,aAAY,GACnCiN,EAAKpT,MAAMU,YAAYoG,UACvBsM,EAAK8E,SAAS,CACVk6E,cAAe,KACf7tF,aAAc,OAElB6O,EAAKpT,MAAMU,YAAYmzC,sBAAqB,OAIvD5rC,MAAMzF,IAEE4Q,EAAKq/E,8BACVr/E,EAAKk9E,iBAAiB9tF,KAEzBkwF,QAAQ,KACLt/E,EAAK8E,SAAS,CACVy6E,qBAAqB,OAMpB,KAAA3B,wBAA0BxwF,MAAAA,IACvC,MAAM2G,EAAgB1G,KAAKT,MAAMwB,KAAKC,SAASC,OAC3CyF,SACMA,EAAc49C,iBAAiB,CAAEC,cAAeuZ,KAK7C,KAAA4yB,sBAAyB+B,IACtCzyF,KAAKyX,SAAS,CACVi7E,+BAA+B,EAC/BC,4BAA6BF,IAEjCzyF,KAAKT,MAAMU,YAAYyF,aAAY,GACnC1F,KAAKT,MAAMU,YAAYoG,WAGV,KAAAuqF,iBAAoBgC,IACjC5yF,KAAKyX,SAAS,CAAEo7E,eAAgBD,KAGnB,KAAA/0B,cAAgB99D,iBAA+D,IAAxD+9D,EAAA7qD,UAAA5R,OAAA,QAAAjB,IAAA6S,UAAA,GAAAA,UAAA,GAAqB,GACzD,IACI,MAAMjM,QAAiBk7C,OAAAA,EAAAA,sBAAAA,CAAsB,CAAE/4C,cAAewJ,EAAKpT,MAAMsC,QAAQuH,eAAiB00D,EAAY3b,EAAAA,SAAS4b,SACvH,GAAI/2D,GAAYA,EAAS3F,OAAS,EAC9B,OAAO2F,EAAS,GAAGuoB,OAEzB,MAAOxtB,GACL4Q,EAAKpT,MAAMsC,QAAQC,UAAUC,MAAM,wCAAyCA,KAKnE,KAAA+wF,8BAAgC/yF,UAC7C,MAAM,8BAAE2yF,EAA6B,4BAAEC,GAAgC3yF,KAAKgN,MAC5E,IAAK0lF,IAAkCC,EACnC,OAGJ,MAAMjsF,EAAgB1G,KAAKT,MAAMwB,KAAKC,SAASC,OAC3CyF,UACMA,EAAc8rF,wBAAwB,CAAE9hC,qBAAsB1wD,KAAKT,MAAMiB,OAAO0wF,yBAChFxqF,EAAcqsF,kBAAkB,UAChCrsF,EAAcssF,oCAAoC,CAAEC,kCAAkC,KAGhG,MAAMC,EAAe5nF,KAAKC,MAAMonF,IAC1B,IAAE/oE,EAAG,KAAE7oB,GAASmyF,EAChBnwC,EAAOwS,SAASntC,cAAc,QAEpC26B,EAAKowC,OAAS,OACdpwC,EAAKvzC,OAASoa,EAEd,IAAK,MAAMwpE,KAAgBvwF,OAAOgjB,KAAK9kB,GAAO,CAC1C,MAAM6lC,EAAU2uB,SAASntC,cAAc,SACvCwe,EAAQ12B,KAAOkjF,EAEfxsD,EAAQriC,MAAQxD,EAAKqyF,GACrBrwC,EAAKqgB,YAAYx8B,GAGrB2uB,SAASsjB,KAAKzV,YAAYrgB,GAC1BA,EAAKswC,UAGQ,KAAA7C,mBAAsBjsF,IACnC,MACIpC,WAAW,0BAAEmxF,EAA4B,mEACzCtzF,KAAKT,MACJgF,GAA0B,IAAjBA,EAAMlD,OAKpBrB,KAAK+xF,gBAAgBxtF,EAAMN,IAAKsvF,GAAgCA,EAAOC,SAASzU,KAAK,OAHjF/+E,KAAK+xF,gBAAgBuB,IAMZ,KAAAhC,aAAe,KAC5B,IAAItlE,EAAYvC,OAAAA,EAAAA,EAAAA,CAAW,WAAYzpB,KAAKT,MAAMsC,QAAQuH,gBAAkB,GAG5E,MACM6iB,EADoB,IAAIC,OAAO,kBAAmB,KAChBC,KAAKH,GAK7C,OAJIzK,SAAW0K,IACXD,EAAY,GAAGzK,OAAOpM,SAASiX,SAASJ,KAGrC,GAAGA,IAAaA,EAAUvS,SAAS,KAAa,IAAN,WAIpC,KAAA3Z,KAAO,KAAW,IAAA2zF,EAAAC,EAC/B,MACI3yF,MAAM,SAAEC,GAAU,OAClBR,GACAR,KAAKT,MAEHo0F,EAAwD,QAAfF,EAAAzyF,EAASC,cAAM,IAAAwyF,GAAfA,EAAiBlpF,yBAA2B,QAAU,WAcnG,IAAAqpF,EAHF,GATA5zF,KAAKT,MAAMU,YAAYH,KAAK,CACxBI,OAAQF,KAAKE,OACbG,SAAUL,KAAKK,SACfC,SAAUN,KAAKM,SACfysD,iBAAkB/sD,KAAK+sD,iBACvBva,eAAe,EACfjyC,OAAQP,KAAK6zF,iBAAmBF,EAAyC,cAIzE3zF,KAAK8J,kCACY,QAAf4pF,EAAA1yF,EAASC,cAAM,IAAAyyF,GAAfA,EAAiB1oE,iDAAmDhqB,EAASC,OAAO6yF,iCAe/E9zF,KAAK8vD,oBAAsB7K,EAAAA,sBAAsBiR,SACxDl2D,KAAKyX,SAAS,CACVk4E,4BAA4B,IAEhC3vF,KAAK6vF,iBAAiB,IAAInmE,MAAM,8BAjBhC,GAAIlpB,EAAO0wF,oBAAoC,QAApB0C,EAAK5yF,EAASC,cAAM,IAAA2yF,OAAA,EAAfA,EAAiB1jC,mBAAmB,CAChE,MAAM,gBAAE6jC,GAAoB/zF,KAAKT,MAAMsC,QAAQU,QAGzCyxF,EAAWC,KAAK3oF,KAAK26B,UAAU8tD,IAErC/zF,KAAKyX,SAAS,CACVy6E,qBAAqB,IAGzBlyF,KAAKT,MAAMU,YAAY6G,YACvB9G,KAAKqwF,oBAAoB2D,GAAU,KAW9B,KAAAnE,iBAAoB8B,IACjC3xF,KAAKT,MAAMuC,UAAUy3B,UAAUo4D,GAC/B3xF,KAAKT,MAAMU,YAAYyF,aAAY,GACnC1F,KAAKT,MAAMU,YAAY0F,aACvB,MACIxD,WAAW,oBAAEmF,EAAmB,qBAAE4sF,IAClCl0F,KAAKT,MACT,IAAIuE,EAAewD,EAEnB,OAAQqqF,EAAczhF,MAClB,IAAK,mBACDpM,EAAeowF,EAMvBl0F,KAAKyX,SAAS,CACVk6E,cAAAA,EACA7tF,aAAAA,KAKS,KAAAiuF,gBAAmBjuF,IAChC9D,KAAKT,MAAMuC,UAAUC,MAAM+B,GAC3B9D,KAAKT,MAAMU,YAAYyF,aAAY,GACnC1F,KAAKT,MAAMU,YAAY0F,aACvB3F,KAAKyX,SAAS,CACV3T,aAAAA,KAIS,KAAAkuF,4BAA8BjyF,UAA0B,IAAAo0F,EACrE,MACItyF,SAAS,cAAEuH,GACX5I,QAAQ,mBAAE4zF,EAAkB,iBAAElD,GAC9BrvF,SACIU,SAAS,YAAE4V,IAEfpX,MAAM,SAAEC,IACRhB,KAAKT,MAEHugB,EAAQ,CACVs0E,mBAAAA,EACAlD,iBAAAA,EACA/4E,YAAAA,EACA6S,+CAA+D,QAAjBmpE,EAAEnzF,EAASC,cAAM,IAAAkzF,OAAA,EAAfA,EAAiBnpE,+CACjE0vB,UAAW16C,KAAK06C,WAGpB16C,KAAKyX,SAAS,CACVk4E,4BAA4B,IAGhC,MAAMjpF,EAAgB1F,EAASC,OAC3ByF,UACMA,EAAc8rF,wBAAwB,CAAE9hC,0BAAsBtwD,UAC9DsG,EAAcs9C,iBAAiB,CAAEC,mBAAe7jD,UAChDsG,EAAco9C,2BAA2B,CAAEC,6BAAyB3jD,KAG9Ei0F,OAAAA,EAAAA,QAAAA,CAAgC,IAAIC,EAAAA,+BAA+Bx0E,GAAQ1W,GACtErC,KAAKwtF,IAEFnrF,EAAc+pC,OAAO,IAAImhD,EAAAA,+BAA+Bx0E,GAAQ,CAAE00E,kBAAmB,GAAIC,cAAe,KAIxGrrF,EAAc+pC,OAAO,IAAImhD,EAAAA,+BAA+Bx0E,GAAQy0E,GAChEv0F,KAAKyX,SAAS,CAAEs4E,mBAAoBwE,EAAmBxzB,qBAGnDr6D,MAAAA,GAAAA,EAAeskB,gDAAkDtkB,EAAc6qD,2BAC/EvxD,KAAKsyF,wBAAwB5rF,EAAc6qD,6BAGlD/pD,MAAOzF,IACJ/B,KAAK6vF,iBAAiB9tF,GAEtB/B,KAAKyX,SAAS,CACVk4E,4BAA4B,IAIhCvmF,EAAc+pC,OAAO,IAAImhD,EAAAA,+BAA+Bx0E,GAAQ,CAAE00E,kBAAmB,GAAIC,cAAe,QAInG,KAAAC,oBAAuB9wF,IACpC,MAAMi+D,EAAmBx/D,GAAAA,CAAIrC,KAAKgiE,UAAW,uBACzCH,IACA7hE,KAAKT,MAAMU,YAAY6G,YACvB+6D,EAAYj+D,KAIH,KAAA0uF,wBAA2BqC,IACxC,MAAM/wF,EAAUsmF,OAAAA,EAAAA,oCAAAA,CAAoCyK,GACpD30F,KAAK00F,oBAAoB9wF,GAGzBssB,QAAQC,IAAI,iDAGC,KAAAkiE,mBAAqBtyF,MAAAA,IAClC,MAAM,mBAAEq0F,GAAuBp0F,KAAKT,MAAMiB,OACpCkG,EAAgB1G,KAAKT,MAAMwB,KAAKC,SAASC,OAG/C,GAAIyF,GAAiB0tF,GAAsBh+D,GAAwBA,EAAqBg4B,IAAK,CACzF,MAAM93B,EAA0B,CAC5BgB,yBAA0BlB,EAAqBu4B,QAC/CrhD,KAAqC,QAA/B8oB,EAAqB0pC,MAAkB,GAAK1pC,EAAqB0pC,MACvE7oC,OAAQb,EAAqBw4B,SAC7B13B,aAAcd,EAAqBy4B,SACnC13B,KAAMf,EAAqBe,KAC3BC,MAAOhB,EAAqBgB,MAC5BC,QAASjB,EAAqBg4B,IAC9B72B,MAAOnB,EAAqBmB,aAE1B7wB,EAAc09C,qBAAqB,CAAEC,kBAAmB/tB,MAKrD,KAAAs+D,cAAgB,KACzB50F,KAAK6zF,kBAAoB7zF,KAAKT,MAAMU,YAAY2Q,WAChD5Q,KAAKT,MAAMU,YAAY0F,aACf3F,KAAK6zF,kBAAqB7zF,KAAKT,MAAMU,YAAY2Q,aACzD5Q,KAAKT,MAAMU,YAAYyF,aAAY,GACnC1F,KAAKT,MAAMU,YAAYqzC,cAKd,KAAAhzC,SAAW,KACxB,MAAM,iBAAE2wF,GAAmB,GAASjxF,KAAKT,MAAMiB,OAC3CywF,EACAjxF,KAAK00F,oBAAoBtK,OAAAA,EAAAA,8BAAAA,IAEzBpqF,KAAKT,MAAMU,YAAYozC,UAKd,KAAAhzC,SAAW,KACpBL,KAAK++C,gBACL/+C,KAAKT,MAAMU,YAAYoG,UAEvBrG,KAAKT,MAAMU,YAAY0F,cAMd,KAAAzF,OAASH,UAA0B,IAAAkG,EAChDjG,KAAKT,MAAMU,YAAY0F,mBAEc,QAArCM,EAAMjG,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAgF,OAAA,EAA/BA,EAAiCm7D,+BAA+B,CAAEzQ,6BAA6B,KAGhG3wD,KAAKgyF,+BAIG,KAAAjlC,iBAAmB,KAC3B/sD,KAAK8yF,gCACV9yF,KAAKT,MAAMU,YAAYmzC,sBAAqB,IAGxC,KAAA6F,qBAAuBl5C,MAAAA,IAC3B,MAAMiB,QAAiBhB,KAAKT,MAAMwB,KAAKC,SAGjCk4C,EADqB,KADIl4C,MAAAA,OAAQ,EAARA,EAAUE,aAAai4C,kBAAmB,IAE9BvhC,OAAO6T,GAYlD,OAAOzqB,MAAAA,OAAQ,EAARA,EAAUE,aAAak4C,sBAAsB,CAChDC,mBAAoBH,KAIpB,KAAAzrB,wBAA0B1tB,MAAO8tB,EAAgBE,KACrD,MAgBMsrB,EAA0B,CAhBW,CAEvC,cAAe,oEACf/rC,KAAM,qBACNgsC,UAAWzrB,EACX0rB,sBAAuB,GACvBtuC,oBAAqB,IAEmB,CAExC,cAAe,oEACfqC,KAAM,uBACNgsC,UAAWvrB,EACXwrB,sBAAuB,GACvBtuC,oBAAqB,KAIzB,OAAOjL,KAAKi5C,qBAAqBI,IAl2B3B,uBACN,MAAM3yC,EAAgB1G,KAAKT,MAAMwB,KAAKC,SAASC,OAC/C,OAAOyF,GAAiBA,EAAcyrB,cAAgBzrB,EAAcyrB,cAAgB,EAG9E,+BACN,MAAMzrB,EAAgB1G,KAAKT,MAAMwB,KAAKC,SAASC,OAC/C,OAAOyF,GAAiBA,EAAc2uB,sBAAwB3uB,EAAc2uB,sBAAwB,EAG9F,6BACN,MAAM3uB,EAAgB1G,KAAKT,MAAMwB,KAAKC,SAASC,OAC/C,OAAKyF,GAAkBA,EAAcouB,gBAG9BpuB,EAAcouB,gBAAgBnR,OAAO,CAAC3f,EAAegxB,IAEjDhxB,GADiBgxB,EAASC,SAAW,GAE7C,GALQ,EAQL,gBACN,MACIl0B,MAAM,SAAEC,IACRhB,KAAKT,MACT,IAAKyB,EAASC,OACV,OAAO,EAGX,MACM4G,EADiB7G,EAASC,OACJC,aAAa2G,KACzC,OAAKA,GAASA,EAAKC,WAAuC,IAA1BD,EAAKC,UAAUzG,QAKvCwG,EAAKgrB,aA/CF,GA+C+B7yB,KAAKqiD,uBAAyBriD,KAAK26C,iBAAmB36C,KAAKsiD,yBAJ1F,EAOL,uBAAoB,IAAAuyC,EAC1B,MACI9zF,MAAM,SAAEC,GAAU,OAClBR,GACAR,KAAKT,MACT,IAAKyB,EAASC,OACV,OAAO,EAGX,MAAMguD,EAAiBjuD,EAASC,QAE1B,kBAAEivD,EAAiB,qBAAE95B,GAAyB64B,EAC9C6lC,GACqB,QAAvBD,EAAAr0F,EAAO0wF,wBAAgB,IAAA2D,OAAA,EAAvBA,EAAyBhlE,wBAAwBqgC,MAAAA,OAAiB,EAAjBA,EAAmBrgC,sBAAuBuG,EAE/F,OAAOp2B,KAAK06C,UAjED,IAiE4Bo6C,EAGjC,qCAAkC,IAAAzhF,EACxC,MAAM5L,EAAyBpF,GAAAA,CAAIrC,KAAKT,MAAO,kDACzCoI,EAAwBtF,GAAAA,CAAIrC,KAAKT,MAAO,kDACxC,4BAAEsH,EAA2B,aAAEuG,GAAiBpN,KAAKT,MAAMwB,KAKjE,OAH0CqM,MAAAA,GAAoB,QAARiG,EAAZjG,EAAcnM,cAAM,IAAAoS,GAAiE,QAAjEA,EAApBA,EAAsB7R,KAAK6L,GAD/B,oEAC0CA,EAAQC,aAAuC,IAAA+F,OAAA,EAArFA,EACpC9F,YAGClL,GAAAA,CAAIrC,KAAKT,MAAO,qDAAuD,IAAIm0B,KACvE1rB,IAAkB,IAAAuR,EAAA,OACfvR,EAASzB,gBAC6B,QADjBgT,EACjB1S,EAA4B5F,cAAM,IAAAsY,GAAyB,QAAzBA,EAAlCA,EAAoCrR,+BAAuB,IAAAqR,OAAA,EAA3DA,EAA6D/X,KACzDD,GAAgBA,IAAiByG,EAASzB,gBACzCyB,EAASzB,eAAiBoB,KAE1CtF,GAAAA,CAAIrC,KAAKT,MAAO,qDAAuD,IAAIm0B,KACvE1rB,GACGA,EAASzB,eAAiBkB,GAA0BO,EAASzB,eAAiBoB,GAItF,uCACN,OAAQtF,GAAAA,CAAIrC,KAAKT,MAAO,qDAAuD,IAAIwZ,MAC9E/Q,KAAyBA,EAASzB,cAIjC,wBAEN,GADkB1D,OAAO+wC,OAAO5zC,KAAKT,MAAMwB,MAAM2yB,KAAK3yB,GAAQsB,GAAAA,CAAItB,EAAM,YAAckkD,EAAAA,sBAAsB8K,SAExG,OAAO9K,EAAAA,sBAAsB8K,QAIjC,GADkBltD,OAAO+wC,OAAO5zC,KAAKT,MAAMwB,MAAMgY,MAAMhY,GAAQsB,GAAAA,CAAItB,EAAM,YAAckkD,EAAAA,sBAAsBgR,SAEzG,OAAOhR,EAAAA,sBAAsBgR,QAIjC,OADiBpzD,OAAO+wC,OAAO5zC,KAAKT,MAAMwB,MAAM2yB,KAAK3yB,GAAQsB,GAAAA,CAAItB,EAAM,YAAckkD,EAAAA,sBAAsBiR,QAEhGjR,EAAAA,sBAAsBiR,YADjC,EAMM,sBACN,QAAS7zD,GAAAA,CAAIrC,KAAKT,MAAMwB,KAAM,6CAGxB,uCACN,MAAM,gBAAEgzF,EAAe,MAAEgB,GAAU/0F,KAAKT,MAAMsC,QAAQU,QACtD,SAAUwxF,IAAmBgB,GAAsB,MAAbA,EAAMC,IAGtC,uBACN,MAAM5oE,EAAS/pB,GAAAA,CAAIkf,OAAQ,mBACrB0zE,EAC2D,iBAAtD5yF,GAAAA,CAAIrC,KAAKT,MAAO,kCACjB,IAAI+hB,IAAIjf,GAAAA,CAAIrC,KAAKT,MAAO,mCACxB8C,GAAAA,CAAIrC,KAAKT,MAAO,kCAC1B,OAAO6sB,GAAU6oE,EAAW7oE,OAWzB5R,oBAAiB,IAAArQ,EACpB0B,OAAAA,EAAAA,EAAAA,CACI,IAAM7L,KAAK8vD,oBAAsB7K,EAAAA,sBAAsB8K,QACvD,KACI/vD,KAAKF,SAGbiM,OAAAA,EAAAA,EAAAA,CACI,IAAM/L,KAAK8vD,oBAAsB7K,EAAAA,sBAAsBiR,QAAUl2D,KAAK6zF,iBACtE,KACI7zF,KAAK40F,kBAIb7oF,OAAAA,EAAAA,EAAAA,CACI,IAAM/L,KAAK06C,UACX36C,UAAW,IAAAqG,EAAAgC,EAE6B,QAAhChC,EAACpG,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAmF,GAA/BA,EAAiCmE,2BACgC,KAAnC,QAA/BnC,EAAApI,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAmH,OAAA,EAA/BA,EAAiC8sF,iCACjCl1F,KAAK06C,UAhKN,IAiKE16C,KAAK8J,wCAEA9J,KAAKE,WAKvB6L,OAAAA,EAAAA,EAAAA,CACI,SAAArC,EAAA,OAAqC,QAArCA,EAAM1J,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAyI,OAAA,EAA/BA,EAAiCwrF,8BACvCn1F,UAAW,IAAA4J,EAAAI,EAE6B,QAAhCJ,EAAC3J,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAA0I,GAA/BA,EAAiCY,2BACgC,KAAnC,QAA/BR,EAAA/J,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAA8I,OAAA,EAA/BA,EAAiCmrF,iCACjCl1F,KAAK06C,UA9KN,IA+KE16C,KAAK8J,wCAEA9J,KAAKE,WAKvB6L,OAAAA,EAAAA,EAAAA,CACI,SAAA9B,EAAA,OAAqC,QAArCA,EAAMjK,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAgJ,OAAA,EAA/BA,EAAiCM,0BACvC,KAAK,IAAAL,EACkC,QAA/BA,EAAAlK,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAiJ,GAA/BA,EAAiCK,0BAA4BvK,KAAKT,MAAMiB,OAAO0wF,kBAC/ElxF,KAAKT,MAAMU,YAAYyF,aAAY,GACnC1F,KAAKT,MAAMU,YAAYoG,UACvBrG,KAAKyX,SAAS,CACVk6E,cAAe,KACf7tF,aAAc,KACdouF,qBAAqB,EACrB3nF,0BAA0B,IAE9BvK,KAAKT,MAAMU,YAAYmzC,sBAAqB,IAE5CpzC,KAAKyX,SAAS,CAAElN,0BAA0B,MAMnB,QAAnCJ,EAAInK,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAkJ,GAA/BA,EAAiC6gB,iDACjCjf,OAAAA,EAAAA,EAAAA,CACI,SAAA3B,EAAA,OAAqC,QAArCA,EAAMpK,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAmJ,OAAA,EAA/BA,EAAiCmnD,2BACvC,KAAK,IAAAlnD,EACGrK,KAAKT,MAAMiB,OAAOywF,kBAAmD,QAAnC5mF,EAAIrK,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAoJ,GAA/BA,EAAiCknD,2BACvEvxD,KAAKsyF,wBAAwBtyF,KAAKT,MAAMwB,KAAKC,SAASC,OAAOswD,6BAKzExlD,OAAAA,EAAAA,EAAAA,CACI,SAAAzB,EAAA,OAAqC,QAArCA,EAAMtK,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAqJ,OAAA,EAA/BA,EAAiCwpF,kCACvC,KAAK,IAAA9nF,EACGhM,KAAKT,MAAMiB,OAAOywF,kBAAmD,QAAnCjlF,EAAIhM,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAA+K,GAA/BA,EAAiC8nF,kCACvE9zF,KAAKF,UAQlBmN,SAAM,IAAAkoF,EAAAC,EACT,MAAM,aACFtxF,EAAY,2BACZ6rF,EAA0B,uBAC1BQ,EAAsB,8BACtBuC,EAA6B,oBAC7BR,EAAmB,eACnBW,EAAc,yBACdtoF,GACAvK,KAAKgN,OAEL/M,aAAa,QAAEuN,EAAO,SAAEE,EAAQ,eAAE4kC,EAAc,UAAEO,EAAS,uBAAEtkC,GAC7D/N,QAAQ,qBAAE60F,EAAoB,qBAAEC,EAAoB,UAAE5yF,EAAS,mBAAE0xF,EAAkB,iBAAElD,GAAkB,UACvG/uF,EACApB,MAAM,SAAEC,EAAQ,uBAAEgvF,GAAwB,mBAC1ClG,GACA9pF,KAAKT,MAEH4uB,EAAY27D,GAAsBA,EAAmB37D,UAE3D,IAAKmkB,GAAmBtyC,KAAK8vD,oBAAsB7K,EAAAA,sBAAsBiR,SAAWl2D,KAAK6zF,iBAErF,OADA7zF,KAAKT,MAAMsC,QAAQC,UAAUC,MAAM,yDAC5B,KAGX,MAAM,cAAE0yF,EAAa,kBAAED,EAAiB,cAAEe,GAA+C,QAAhCJ,EAAGnF,EAAuB/uF,cAAM,IAAAk0F,EAAAA,EAAI,CACzFV,mBAAer0F,EACfo0F,uBAAmBp0F,EACnBm1F,mBAAen1F,IAGb,qBAAEg2B,EAAoB,WAAEC,EAAU,eAAEC,GAAmBt1B,EAASC,QAAU,CAC5Em1B,0BAAsBh2B,EACtBi2B,gBAAYj2B,EACZk2B,oBAAgBl2B,GAGdo1F,EAA6BtE,EAAmB,GAAGlxF,KAAK2b,mBAAmBu1E,EAAiBzhE,gBAAkB,GAE9GgmE,EAAiC,QAAlBL,EAAGp0F,EAASC,cAAM,IAAAm0F,OAAA,EAAfA,EAAiBpqE,+CAEnCjd,EAASC,EAAAA,EAAAA,EAAA,GACRhO,KAAKT,OACLS,KAAKgN,OAAK,IACbmhB,UAAAA,EACAzrB,UAAAA,EACA+qB,wBAAyBztB,KAAKytB,wBAE9BpD,0BAA2B,CACvB3b,YAAa1O,KAAKT,MAClBmD,UAAWkiB,GAAAA,CAAW5kB,KAAK2b,gBAAiB65E,EAA4B9yF,IAE5EqM,SAAUvB,IACLjD,GACDvK,KAAK8vD,oBAAsB7K,EAAAA,sBAAsBiR,SAChDl2D,KAAK8vD,oBAAsB7K,EAAAA,sBAAsB8K,SAAW4/B,GAA8B98C,IACvFxzC,EAAAA,cAACi+D,EAAAA,iBAAgBz6D,OAAAC,OAAA,GAAK,CAAEc,QAASzB,EAAUuzF,kBAEnDxnF,MAAOR,GAAY5J,GAAgBzE,EAAAA,cAAC8O,EAAAA,eAActL,OAAAC,OAAA,GAAK,CAAEY,MAAOvB,EAAUmB,kBAAmBM,QAASE,KACtGwmB,oBAAqB/f,GAChBiD,IAAYioF,IAAoB/C,IAAkCR,IACnE7yF,EAAAA,cAACs2F,EAA2B,CACxBv/D,qBAAsBA,EACtBC,WAAYA,EACZC,eAAgB89D,EAAqB99D,OAAiBl2B,EACtDunB,SAAUpZ,EACVrO,OAAQF,KAAKE,OACbiC,UAAWA,IAGnBooB,gBAAiBhgB,KACXiD,GAAWioF,GAAmB/C,KAC/BR,IACAuC,GAAiBD,IAClBrmE,GACI9uB,EAAAA,cAACu2F,EAAAA,wBAAuB,CACpBC,cAAepB,EACfqB,kBAAmBtB,EACnBjyB,cAAegzB,EACfj1F,SAAUN,KAAKM,SACfD,SAAUL,KAAKK,SACfgiE,gBAAiBriE,KAAKqiE,gBACtBL,UAAWhiE,KAAKgiE,UAChB1wB,WAAY/iC,EACZgjC,WAAYhjC,GAA0BvO,KAAK++C,gBAC3Cs2C,qBAAsBA,GAAwBlF,EAC9C7tB,iBAAkBtiE,KAAKsiE,iBACvBqtB,2BAA4BA,EAC5B2F,qBAAsBA,EACtBnzF,UAAWA,IAGvBqoB,aAAc,CACVP,MAAO,CACHzmB,IAAKyhC,EAAAA,MACLviC,UAAc1C,KAAK2b,gBAAR,kBACXi8B,OAAQi7C,IAGhBrlE,eAAgBxtB,KAAKgyF,8BAGzB,OAAOhyF,KAAKT,MAAM6P,WAAWrB,KA3TvBsB,OAAAA,EAAAA,EAAAA,CAAA,CAATE,EAAAA,GAAQ,qCAKCF,OAAAA,EAAAA,EAAAA,CAAA,CAATE,EAAAA,GAAQ,6CAKCF,OAAAA,EAAAA,EAAAA,CAAA,CAATE,EAAAA,GAAQ,2CAWCF,OAAAA,EAAAA,EAAAA,CAAA,CAATE,EAAAA,GAAQ,8BAkBCF,OAAAA,EAAAA,EAAAA,CAAA,CAATE,EAAAA,GAAQ,qCAkBCF,OAAAA,EAAAA,EAAAA,CAAA,CAATE,EAAAA,GAAQ,mDAsBCF,OAAAA,EAAAA,EAAAA,CAAA,CAATE,EAAAA,GAAQ,qDAMCF,OAAAA,EAAAA,EAAAA,CAAA,CAATE,EAAAA,GAAQ,sCAkBCF,OAAAA,EAAAA,EAAAA,CAAA,CAATE,EAAAA,GAAQ,oCAICF,OAAAA,EAAAA,EAAAA,CAAA,CAATE,EAAAA,GAAQ,qDAKCF,OAAAA,EAAAA,EAAAA,CAAA,CAATE,EAAAA,GAAQ,qCA2QTF,OAAAA,EAAAA,EAAAA,CAAA,CADCG,EAAAA,GAAM,0CA+IPH,OAAAA,EAAAA,EAAAA,CAAA,CADCG,EAAAA,GAAM,8CASPH,OAAAA,EAAAA,EAAAA,CAAA,CADCG,EAAAA,GAAM,4CAoFPH,OAAAA,EAAAA,EAAAA,CAAA,CADCG,EAAAA,GAAM,2BA4CPH,OAAAA,EAAAA,EAAAA,CAAA,CADCG,EAAAA,GAAM,uCAyBPH,OAAAA,EAAAA,EAAAA,CAAA,CADCG,EAAAA,GAAM,sCAuGPH,OAAAA,EAAAA,EAAAA,CAAA,CADCG,EAAAA,GAAM,oCAWPH,OAAAA,EAAAA,EAAAA,CAAA,CADCG,EAAAA,GAAM,+BAWPH,OAAAA,EAAAA,EAAAA,CAAA,CADCG,EAAAA,GAAM,+BAWPH,OAAAA,EAAAA,EAAAA,CAAA,CADCG,EAAAA,GAAM,6BAWPH,OAAAA,EAAAA,EAAAA,CAAA,CADCG,EAAAA,GAAM,uCArzBEqjD,EAAyBxjD,OAAAA,EAAAA,EAAAA,CAAA,CAFrCI,EAAAA,gBACAC,EAAAA,GACYmjD,GAu2BEg2B,EAAAA,QAAAA,OAAAA,EAAAA,uBAAAA,CAAuBh2B,kSCj5B1B38C,wEAAZ,SAAYA,GACRA,EAAAA,EAAA,eACAA,EAAAA,EAAA,yBACAA,EAAAA,EAAA,2BACAA,EAAAA,EAAA,+BAJJ,CAAYA,IAAAA,EAA+B,KAqCpC,MAAM8I,EAA2DpP,IAAqB,IAApB,aAAE9L,GAAc8L,EACrF,OAAK9L,EAUEzE,EAAAA,cAACqqB,EAAAA,EAAK,KAAE5lB,GATJ,MAkBFkY,EAAuEoO,IAA0C,IAAzC,gBAAEzO,EAAe,UAAEC,EAAS,MAAEC,GAAOuO,EACtH,OACI/qB,EAAAA,cAAA,OAAKqD,UAAciZ,EAAH,kBACZtc,EAAAA,cAAA,OAAKqD,UAAciZ,EAAH,uBAA0CC,GAC1Dvc,EAAAA,cAAA,OAAKqD,UAAciZ,EAAH,uBAA0CE,KAWzD+B,EAAyEsnC,IAAwC,IAAvC,gBAAEvpC,EAAe,MAAEjY,EAAK,QAAEga,GAASwnC,EACtH,OACI7lD,EAAAA,cAAA,OAAKqD,UAAciZ,EAAH,oBACZtc,EAAAA,cAAA,OAAKqD,UAAciZ,EAAH,0BAA6CjY,GAC7DrE,EAAAA,cAAA,OAAKqD,UAAciZ,EAAH,4BAA+C+B,KAW9DK,EAA+DmpC,IAAwC,IAAvC,gBAAEvrC,EAAe,MAAEjY,EAAK,QAAEoa,GAASopC,EAC5G,OAAKppC,EAKDze,EAAAA,cAAA,OAAKqD,UAAciZ,EAAH,mBACZtc,EAAAA,cAAA,OAAKqD,UAAciZ,EAAH,0BAA6CjY,GAC5Doa,EAAQxQ,MAAQjO,EAAAA,cAAA,QAAMqD,UAAciZ,EAAH,wBAA2CmC,EAAQxQ,MACrFjO,EAAAA,cAAAA,EAAAA,SAAA,KACKye,EAAQmZ,QAAU53B,EAAAA,cAAA,QAAMqD,UAAciZ,EAAH,0BAA6CmC,EAAQmZ,QACxFnZ,EAAQqZ,MAAQ93B,EAAAA,cAAA,QAAMqD,UAAciZ,EAAH,wBAA2CmC,EAAQqZ,MACpFrZ,EAAQsZ,OAAS/3B,EAAAA,cAAA,QAAMqD,UAAciZ,EAAH,yBAA4C,KAAKmC,EAAQsZ,OAC3FtZ,EAAQi4E,QAAU12F,EAAAA,cAAA,QAAMqD,UAAciZ,EAAH,0BAA6C,KAAKmC,EAAQi4E,QAC7Fj4E,EAAQuZ,SAAWh4B,EAAAA,cAAA,QAAMqD,UAAciZ,EAAH,2BAA8C,IAAImC,EAAQuZ,SAC9FvZ,EAAQwZ,0BACLj4B,EAAAA,cAAA,QAAMqD,UAAciZ,EAAH,4CACZ,IAAImC,EAAQwZ,4BAftB,MAkCFla,EAAmEiqC,IAAmC,IAAlC,gBAAE1rC,EAAe,UAAEzG,GAAWmyC,EAC3G,OAAK9vC,EAAAA,gBAAgBC,YAAYtC,GAI7B7V,EAAAA,cAAA,OAAKqD,UAAciZ,EAAH,iBACXzG,EAAUjR,IAAI+xF,IACX,MAAMC,EAAUD,EAAKh5E,SAAW,EAChC,IAAIta,EAAeiZ,EAAH,wBAIhB,OAHIs6E,IACAvzF,EAAYkiB,GAAAA,CAAWliB,EAAW,wBAGlCrD,EAAAA,cAAA,OAAKqD,UAAWA,EAAWojB,IAAKkwE,EAAK35E,QACjChd,EAAAA,cAAC0+B,EAAAA,EAAKl7B,OAAAC,OAAA,GAAKkzF,EAAK15E,aACf25E,GAAW52F,EAAAA,cAAA,OAAKqD,UAAciZ,EAAH,yBAA4Cq6E,EAAKh5E,cAbtF,MAqBFF,EAAuC,CAChDod,UAAW,CACPC,GAAI,CAAEC,EAAG,8BAA+BC,EAAG,IAAKC,EAAG,KACnDG,GAAI,CAAEL,EAAG,6BAA8BC,EAAG,IAAKC,EAAG,KAClDupD,GAAI,CAAEzpD,EAAG,6BAA8BC,EAAG,IAAKC,EAAG,MAEtDI,UAAU,EACVw7D,QAAS,41BC/Ib,IAAaC,EAAb,cAA4C92F,EAAAA,UAkBxCC,YAAmBC,GACfC,MAAMD,GAiMO,KAAA62F,SAAW,KACxB,MAAM,MAAEjsC,GAAUnqD,KAAKT,MACvB,OAAQ4qD,GAASA,EAAMsS,SAAWtS,EAAMsS,QAAQp7D,QAAU8oD,EAAMsS,SAAY,IAG/D,KAAA3P,2BAA6B,KAC1C,MAAM,SAAEpa,EAAQ,UAAEa,GAAcvzC,KAAKT,MAAMU,YAC3C,OAAOyyC,EACFzuC,IAAIsvC,GACJxrC,OAAQiF,KAA0CA,IAAUA,EAAM4D,YAAc5D,EAAMimC,iBAG9E,KAAArtC,WAAa,KAE1B5F,KAAK8sD,6BAA6B/1C,QAAQ/J,IACtCA,EAAMU,UAAYV,EAAMtH,aAAY,MAI3B,KAAApF,SAAW,KAAW,IAAAQ,EACnC,MAAMu1F,EAA4B9+E,EAAAA,gBAAgBC,YAC9CxX,KAAKT,MAAMU,YAAYyyC,SAAS3qC,OAAOssC,GAAWA,EAAQ56B,SAnPpC,wBAkQvB,IAAD5T,GAZF7F,KAAKT,MAAMuC,UAAUgE,YAAY,yCAEjC9F,KAAK4F,aACL5F,KAAK8sD,6BAA6B/1C,QAAQ/J,KACrCA,EAAMQ,SAAWR,EAAM1M,UAAY0M,EAAM1M,aAKX,QAA/BQ,EAAAd,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAH,GAA/BA,EAAiCkqB,gDACjCqrE,GA9PO,IA+PPr2F,KAAK06C,aAE0B,QAA/B70C,EAAA7F,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAA4E,GAA/BA,EAAiCqlD,qCAAqC,CAClEC,mCAAmC,MAK9B,KAAA9qD,SAAW,KACxBL,KAAKT,MAAMuC,UAAUgE,YAAY,yCAEjC9F,KAAK4F,aACL5F,KAAK8sD,6BAA6B/1C,QAAQ/J,KACrCA,EAAMQ,SAAWR,EAAM3M,UAAY2M,EAAM3M,cAIjC,KAAAH,OAAS,KACtBF,KAAKT,MAAMuC,UAAUgE,YAAY,uCAEjC9F,KAAK8sD,6BAA6B/1C,QAAQ/J,KACrCA,EAAMQ,SAAWR,EAAM8lC,YAAc9lC,EAAM9M,QAAU8M,EAAM9M,YAInD,KAAA6sD,iBAAmB,KAChC/sD,KAAKT,MAAMuC,UAAUgE,YAAY,iDAEjC9F,KAAK8sD,6BAA6B/1C,QAAQ/J,IACtCA,EAAMQ,SAAWR,EAAM+/C,kBAAoB//C,EAAM+/C,sBAhQrD/sD,KAAKgN,MAAQ,CAAEspF,YAAY,GAnBrB,gBAAoB,IAAAC,EAAAC,EAC1B,MACIz1F,MAAM,SAAEC,IACRhB,KAAKT,MACT,GAAKyB,MAAAA,IAAAA,EAAUC,OACX,OAAO,EAGX,MACM4G,EAAkC,QAA9B0uF,EADav1F,EAASC,OACJC,oBAAY,IAAAq1F,OAAA,EAA3BA,EAA6B1uF,KAC1C,OAAKA,GAASA,EAAKC,WAAcyP,EAAAA,gBAAgBC,YAAY3P,EAAKC,YAI3C,QAAvB0uF,EAAO3uF,EAAKgrB,mBAAW,IAAA2jE,EAAAA,EAHZ,EAWRh8E,oBAAiB,IAAAvU,EAAAG,EACpB,MACMssC,EADQ1yC,KAAKo2F,WACInyF,IAAKof,GAA0BhhB,GAAAA,CAAIghB,EAAM,aAC1D2H,EAC6E,QAD/B/kB,EACjB,QADiBG,EAChDpG,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAmF,OAAA,EAA/BA,EAAiC4kB,sDAA8C,IAAA/kB,GAAAA,EAEnFjG,KAAKT,MAAMU,YAAYH,KAAK,CACxBI,OAAQF,KAAKE,OACbG,SAAU2qB,OAAiD5qB,EAAYJ,KAAKK,SAC5EC,SAAU0qB,OAAiD5qB,EAAYJ,KAAKM,SAC5EoyC,SAAAA,IAGJ3mC,OAAAA,EAAAA,EAAAA,CACI,IAAM/L,KAAKT,MAAMU,YAAYuN,QAC7B,KACIxN,KAAK+sD,qBAIbhhD,OAAAA,EAAAA,EAAAA,CACI,IAAM/L,KAAKT,MAAMU,YAAY+yC,sBAC7B,KACIhzC,KAAKM,aAKbyL,OAAAA,EAAAA,EAAAA,CACI,SAAA3D,EAAA,OAAqC,QAArCA,EAAMpI,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAmH,OAAA,EAA/BA,EAAiC8sF,8BACvCA,IACI,MAAMmB,EAA4B9+E,EAAAA,gBAAgBC,YAC9CxX,KAAKT,MAAMU,YAAYyyC,SAAS3qC,OAAOssC,GAAWA,EAAQ56B,SAjE5C,wBAoEduR,GAAkDqrE,GAClDr2F,KAAKyX,SAAS,CAAE6+E,WAAYpB,MAMxCnpF,OAAAA,EAAAA,EAAAA,CACI,SAAArC,EAAA,OAAqC,QAArCA,EAAM1J,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAyI,OAAA,EAA/BA,EAAiC6gD,oCACvC,KACI,MAAM8rC,EAA4B9+E,EAAAA,gBAAgBC,YAC9CxX,KAAKT,MAAMU,YAAYyyC,SAAS3qC,OAAOssC,GAAWA,EAAQ56B,SA/E5C,wBAkFduR,GAAkDqrE,GAClDr2F,KAAKM,aAMjByL,OAAAA,EAAAA,EAAAA,CACI,IAAM/L,KAAKT,MAAMU,YAAYuN,QAC7BzN,MAAAA,IACI,MAAMs2F,EAA4B9+E,EAAAA,gBAAgBC,YAC9CxX,KAAKT,MAAMU,YAAYyyC,SAAS3qC,OAAOssC,GAAWA,EAAQ56B,SA7F5C,wBAgG+F,IAAD9P,EAA5GqhB,GAAkDqrE,GAA6Br2F,KAAK06C,UA9FrF,SA+FsC,QAArC/wC,EAAM3J,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAA0I,OAAA,EAA/BA,EAAiCuhD,qCAAqC,CACxEC,kCAAmC39C,OAOnDzB,OAAAA,EAAAA,EAAAA,CACI,IAAM/L,KAAKT,MAAMU,YAAYyN,SAC7B3N,MAAAA,IACI,MAAMs2F,EAA4B9+E,EAAAA,gBAAgBC,YAC9CxX,KAAKT,MAAMU,YAAYyyC,SAAS3qC,OAAOssC,GAAWA,EAAQ56B,SA7G5C,wBAgHgE,IAAD1P,EAA7EihB,GAAkDqrE,SACb,QAArCtsF,EAAM/J,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAA8I,OAAA,EAA/BA,EAAiC0sF,wCAAwC,CAC3EC,qCAAsChpF,OAMtD3B,OAAAA,EAAAA,EAAAA,CACI,SAAA9B,EAAA,OAAqC,QAArCA,EAAMjK,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAgJ,OAAA,EAA/BA,EAAiC0sF,sBACvC52F,UAAW,IAAAmK,EAC2BqN,EAAAA,gBAAgBC,YAC9CxX,KAAKT,MAAMU,YAAYyyC,SAAS3qC,OAAOssC,GAAWA,EAAQ56B,SA5H5C,yBA+H8C,QAAnCvP,EAAIlK,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAiJ,GAA/BA,EAAiCysF,uBAC9D32F,KAAKE,eACCF,KAAKT,MAAMwB,KAAKC,SAASC,OAAO+/D,2BAA2B,CAAEC,yBAAyB,OAMrGnO,qBACH,IAAK9yD,KAAKT,MAAMU,YAAYsO,uBACxB,OAMJ,MAAM,SAAEmkC,EAAQ,SAAEhlC,EAAQ,UAAE6lC,GAAcvzC,KAAKT,MAAMU,YACtByyC,EAAShf,KAAM2gB,IAC1C,MAAMrnC,EAAQumC,EAAUc,GACxB,QAASrnC,IAAUA,EAAMQ,SAAWR,EAAM8lC,cAEhBplC,GAC1B1N,KAAKE,SAIN2M,sBAAsBC,EAAiDC,GAC1E,OAAI/M,KAAKgN,QAAUD,GAAa/M,KAAKT,MAAMwB,OAAS+L,EAAU/L,KAM3DkM,SACH,MAAM,cACFsnC,EAAa,YACbt0C,EACAO,QAAQ,MAAEouB,IACV5uB,KAAKT,MAEHsc,EAAQ7b,KAAKo2F,WACnB,GAAqB,IAAjBv6E,EAAMxa,OAEN,OADArB,KAAKT,MAAMsC,QAAQC,UAAUC,MAAM,yDAC5B,KAGX,MAAM4Z,EAAkBhN,GAAAA,CACpB,gCACA,CACI,kBAAmB1O,EAAYqyC,eAC/B,WAAYryC,EAAYuN,QACxB,eAAgBvN,EAAYuN,QAC5BopF,UAAqB,cAAVhoE,EACX,mBAA8B,UAAVA,GAExB5uB,KAAKT,MAAMiB,OAAOkC,WAGhBqL,EAASC,EAAAA,EAAA,GACRhO,KAAKT,OAAK,IAEbmD,UAAWiZ,EACXkwB,4BAA6B,CACzBn9B,YAAa1O,KAAKT,MAClBmD,UAAWiZ,GAEfE,MAAOA,EAAM5X,IAAKof,IACd,MAAMgxB,EAAUhyC,GAAAA,CAAIghB,EAAM,YACpBrW,EAAQ/M,EAAYszC,UAAUc,GAG9Bg5C,EACFrtF,KAAKgN,MAAMspF,YAAetpF,EAAMimC,kBAAoBjmC,EAAMslC,gBAAkBtlC,EAAM4D,YAAc5D,EAAM8lC,WAC1G,MAAO,CACH9wC,GAAIqyC,EACJtF,QAAS/hC,EAAMimC,iBAAmBjmC,EAAMslC,gBAAkBjzC,EAAAA,cAACw3F,EAAAA,EAAgB,MAC3EprD,UAAW,CACP,iBAAkBz+B,EAAM/K,SACxBS,UAAWiM,GAAAA,CAAU,sCAAuC,CACxD0+E,OAAAA,EACAC,YAAatgF,EAAMslC,eACnBptC,SAAU8H,EAAM4D,WAChBkmF,QAAS9pF,EAAM8lC,UACfy6C,MAAOvgF,EAAMQ,QACbigF,SAAUzgF,EAAMS,WAChB+/E,QAASxgF,EAAM6lC,aAGvBxvB,KAAMhkB,EAAAA,aAAmBgkB,EAA4B,CAAEkxB,cAAAA,SAInE,OAAOv0C,KAAKT,MAAM6P,WAAWrB,KAhNvBsB,OAAAA,EAAAA,EAAAA,CAAA,CAATE,EAAAA,GAAQ,8BADA4mF,EAAsB9mF,OAAAA,EAAAA,EAAAA,CAAA,CADlCK,EAAAA,GACYymF,GAyRE1mF,EAAAA,QAAAA,OAAAA,EAAAA,gBAAAA,CAAgB0mF,ubCtS/B,MAAMrgE,EAA0DlmB,IAO3D,IANDzN,WAAW,wBAAE4zB,EAAuB,UAAEC,EAAS,gBAAEC,EAAe,iBAAEC,EAAgB,aAAEC,GAAc,qBAClGC,EAAoB,WACpBC,EAAU,eACVC,EAAc,OACdp2B,EAAM,QACNynB,GACH/X,EACG,MAAM,WAAE2mB,EAAa,GAAE,WAAEC,EAAU,cAAEC,EAAgB,GAAE,gBAAEC,EAAkB,EAAC,eAAEC,EAAiB,GAAMP,GAAwB,IACvH,iBAAEQ,EAAmB,IAAOH,GAAiBJ,GAAc,GAC3DQ,EAAiBD,EAAiBE,QAAQ,GAG1CC,GAAqBC,MAAMH,IAAsC,KAAnBA,GAC9C,KAAEvpB,EAAI,OAAE2pB,EAAM,aAAEC,EAAY,KAAEC,EAAI,MAAEC,EAAK,QAAEC,EAAO,yBAAEC,EAAwB,MAAEC,GAAUjB,GAAkB,GAEhH,OACIj3B,EAAAA,cAAA,OAAKqD,UAAU,wCACXrD,EAAAA,cAAA,KAAGqD,UAAU,8CAA8CszB,GAC3D32B,EAAAA,cAAA,KAAGqD,UAAU,6CAA6C6zB,GACzDC,GAAcn3B,EAAAA,cAAA,KAAGqD,UAAU,gDAAgD8zB,GAC3EO,GACG13B,EAAAA,cAAA,KAAGqD,UAAU,+CACRuzB,EAAe,IAAG,IAAG,IAAGY,IAG/BH,EAAkB,GAAKC,EAAiB,IACtCt3B,EAAAA,cAAA,KAAGqD,UAAU,mDACRwzB,EAAgB,IAAG,IAAG,IAAGQ,EAAe,IAAGC,GAGnDL,GACGj3B,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAAA,KAAGqD,UAAU,yDAAyDyzB,GACtE92B,EAAAA,cAAA,KAAGqD,UAAU,qDACR4K,EACA,IACA2pB,GAEJC,GAAgB73B,EAAAA,cAAA,KAAGqD,UAAU,qDAAqDw0B,GACnF73B,EAAAA,cAAA,KAAGqD,UAAU,qDACRy0B,EAAI,IAAGC,EACP,IACAC,EACA,IACAC,EACA,IACAC,IAIZ5P,GACGtoB,EAAAA,cAAC2F,EAAAA,OAAM,CAACtC,UAAU,2CAA2CgB,MAAOqyB,EAAyB9wB,MAAM,OAAOE,QAASjF,GAC9G61B,KAON12B,IAAAA,EAAAA,EAAAA,KAAWy2B,4kBCX1B,IAAa+8B,EAAb,cAA+CxzD,EAAAA,cAA/CC,cAAA,IAAAqT,6BA0HW,KAAA3F,MAAyC,CAC5C2iF,4BAA4B,GAGf,KAAAh0E,gBAA0B,iCAE1B,KAAAqmD,UAAqC3iE,EAAAA,YAErC,KAAAQ,iBAAiDR,EAAAA,YAuOjD,KAAAgjE,gBAAkBtiE,MAAAA,IAA6C,IAAA6vF,EAAAmH,EAC5E,IAAI91F,EACJ,IACI,GAA0B,iBAAfwJ,EAAM1J,KACb,OAEJE,EAASqK,KAAKC,MAAMd,EAAM1J,MAC5B,MAAOgB,GAGL,YADA/B,KAAK6vF,iBAAiB9tF,GAI1B,MAAM+tF,EAAyB9vF,KAAKT,MAAMiB,OAAOsvF,uBAE3CC,EAAkE,QAAhDH,EAAG5vF,KAAKT,MAAMwB,KAAKivF,uBAAuB/uF,cAAM,IAAA2uF,OAAA,EAA7CA,EAA+C7uB,mBAE1E,IAAK9/D,IAAWA,EAAOgP,MAAS6/E,GAA0B7uF,EAAOe,KAAO+tF,EAAqB,CAChC,IAAAiH,EAAzD,GAAIlH,GAA0B7uF,EAAOgP,OAAShP,EAAOe,GACjDhC,KAAKT,MAAMuC,UAAUC,MAAM,sFAC3BmuB,QAAQnuB,OACiC,QAArCi1F,EAAGh3F,KAAKT,MAAMiB,OAAO0wF,wBAAgB,IAAA8F,EAAAA,EACjC,IADJ,uFAKR,OAGJ,MAAM,KAAE/mF,EAAI,MAAE1L,EAAK,QAAE0rF,GAAU,GAAUhvF,EAGzC,IAAIgvF,EAMJ,OAFAjwF,KAAKT,MAAMuC,UAAUgE,YAAY,sBAAwD,QAAxDixF,EAAsB/2F,KAAKT,MAAMiB,OAAO0wF,wBAAgB,IAAA6F,EAAAA,EAAI,8BAA8B9mF,MAEnHA,GACJ,KAAK85E,EAAAA,gCAAgCmG,OAWjC,OATAlwF,KAAKyX,SAAS,CACVk4E,4BAA4B,EAC5BQ,uBAAwB5rF,SAGxBvE,KAAKT,MAAMiB,OAAOywF,kBAClBjxF,KAAKT,MAAMU,YAAY0F,cAI/B,KAAKokF,EAAAA,gCAAgCqG,OAEjC,YADApwF,KAAKqwF,oBAAoB9rF,GAE7B,KAAKwlF,EAAAA,gCAAgCuG,WAEjC,kBADMtwF,KAAKuwF,wBAAwBhsF,IAEvC,KAAKwlF,EAAAA,gCAAgCrgE,MAEjC,YADA1pB,KAAKwwF,mBAAmBjsF,GAE5B,KAAKwlF,EAAAA,gCAAgC0G,SAEjC,YADAzwF,KAAK0wF,sBAAsBnsF,GAE/B,KAAKwlF,EAAAA,gCAAgC4G,YAEjC,YADA3wF,KAAK4wF,kBAAiB,GAE1B,KAAK7G,EAAAA,gCAAgC8G,YAEjC,YADA7wF,KAAK4wF,kBAAiB,GAE1B,QACI,SAMK,KAAAP,oBAAsB,SAACS,GAAmF,IAAAlmC,EAAAmmC,EAAA7zB,EAAA,IAAzD8zB,EAAA/9E,UAAA5R,OAAA,QAAAjB,IAAA6S,UAAA,IAAAA,UAAA,GAC9D,MACIlS,MAAM,SAAEC,EAAQ,uBAAEgvF,GAClBxvF,QAAQ,iBAAEywF,EAAgB,iBAAEC,GAC5B/uF,WAAW,8BAAEgvF,IACbx+E,EAAKpT,MAEH+I,GAAwB,QAAfsiD,EAAA5pD,EAASC,cAAM,IAAA2pD,OAAA,EAAfA,EAAiB1pD,aAAa2G,KAAKU,KAAM,GAClDwnF,EAAkD,QAAhCgB,EAAGf,EAAuB/uF,cAAM,IAAA8vF,OAAA,EAA7BA,EAA+BhwB,mBAEpDqwB,EAAQpjF,EAAA,CACVqjF,UAAW1+E,EAAK2+E,gBACZvB,GAAsB,CAAEhvB,mBAAoBgvB,IAGpD,GAAmB,QAAnB7yB,EAAIl8D,EAASC,cAAM,IAAAi8D,GAAfA,EAAiBlyC,+CAArB,CACI,MAAMqlC,EAAmD,CACrDkhC,WAAYT,EACZhwB,SAAUswB,GAGdpwF,EAASC,OACJuwF,8BAA8B,CAAE3gC,2BAA4BR,IAC5DtpD,KAAKhH,UACkC,IAAAe,EAAA8wF,EAAAC,EAApC,GAAIb,EAC+B,QAA/BlwF,EAAA6R,EAAKpT,MAAMwB,KAAKC,SAASC,cAAM,IAAAH,GAA/BA,EAAiCI,aAAa+sD,YAAY,IAE1Dt7C,EAAKpT,MAAMU,YAAYyF,aAAY,GACnCiN,EAAKpT,MAAMU,YAAYoG,UACvBsM,EAAK8E,SAAS,CACVk6E,cAAe,KACf7tF,aAAc,OAElB6O,EAAKpT,MAAMU,YAAYmzC,sBAAqB,SAEvB,QAArBw+C,EAAM5wF,EAASC,cAAM,IAAA2wF,OAAA,EAAfA,EAAiB7rF,mCAAmC,CAAEC,iCAAiC,WACxE,QAArB6rF,EAAM7wF,EAASC,cAAM,IAAA4wF,OAAA,EAAfA,EAAiB3mC,qCAAqC,CAAEC,mCAAmC,UAC9F,GAAI8lC,EACPt+E,EAAKpT,MAAMU,YAAYyF,aAAY,GACnCiN,EAAKpT,MAAMU,YAAYoG,UACvBsM,EAAK8E,SAAS,CACVk6E,cAAe,KACf7tF,aAAc,OAElB6O,EAAKpT,MAAMU,YAAYmzC,sBAAqB,OACzC,KAAAq+C,EAIDC,EAHF,IACoD,KAAjC,QAAfD,EAAAzwF,EAASC,cAAM,IAAAwwF,OAAA,EAAfA,EAAiBK,8BAC+B,IAAhD9wF,EAASC,OAAO6P,4BAEhB6B,EAAKpT,MAAMU,YAAYozC,eACF,QAArBq+C,EAAM1wF,EAASC,cAAM,IAAAywF,OAAA,EAAfA,EAAiBxmC,qCAAqC,CAAEC,mCAAmC,UAEjGx4C,EAAKpT,MAAMU,YAAYyF,aAAY,GACnCiN,EAAKo/E,gBAAgBZ,MAIhC3pF,MAAMzH,MAAAA,UAEG4S,EAAKq/E,8BACXr/E,EAAKk9E,iBAAiB9tF,KAEzBkwF,QAAQ,KACLt/E,EAAK8E,SAAS,CAAEy6E,qBAAqB,WAMjDC,OAAAA,EAAAA,qCAAAA,CAAqC,CAAEhpF,cAAewJ,EAAKpT,MAAMsC,QAAQuH,eAAiB0nF,EAAkB,GAAIxoF,EAAQ8oF,GACnHrqF,KAAKhH,MAAAA,IACF,MAAM,WAAEqyF,EAAU,qBAAEvyB,EAAoB,kBAAEtQ,GAAsBc,GAA2B,GAI3F,SAFM19C,EAAK0/E,mBAAmBxyB,GAE1BtQ,EACA58C,EAAK2/E,wBAAwB/iC,OAC1B,CACH,IAAKsQ,EAED,YADAltD,EAAKk9E,iBAAiB,IAAInmE,MAAM,kCAGpC,MAAMhjB,EAAgBiM,EAAKpT,MAAMwB,KAAKC,SAASC,OAC/C,GAAIyF,EAAe,CAIf,IAAKA,EAAco3D,WAAY,CAC3B,MAAMA,EACF+B,GACAA,EAAqBppC,eACrBopC,EAAqBppC,cAAcG,iBACnCknC,SACMp3D,EAAc49C,iBAAiB,CAAEC,cAAeuZ,IAI9D,IAAK+B,EAAqBrpC,WAAY,CAClC,MAAM+7D,QAAmB5/E,EAAKkrD,cAAcn3D,EAAco3D,YAAc,IACxE,IAAKy0B,EAAY,CACb,MAAMxwF,EAAQ,IAAI2nB,MAAM,6CAGxB,OAFA3nB,EAAMmO,KAAO,wBACbyC,EAAKk9E,iBAAiB9tF,GAI1B89D,EAAqBrpC,WAAa+7D,EAQF,IAAA1sF,EAApC,SALMa,EAAcs9C,iBAAiB,CAAEC,cAAemuC,UAChD1rF,EAAco9C,2BAA2B,CAAEC,wBAAyB8b,UACpEn5D,EAAc8rF,wBAAwB,CAAE9hC,qBAAsBwgC,IAGhEF,EAC+B,QAA/BnrF,EAAA8M,EAAKpT,MAAMwB,KAAKC,SAASC,cAAM,IAAA4E,GAA/BA,EAAiC3E,aAAa+sD,YAAY,IAG9Dt7C,EAAKpT,MAAMU,YAAYyF,aAAY,GACnCiN,EAAKpT,MAAMU,YAAYoG,UACvBsM,EAAK8E,SAAS,CACVk6E,cAAe,KACf7tF,aAAc,OAElB6O,EAAKpT,MAAMU,YAAYmzC,sBAAqB,OAIvD5rC,MAAMzF,IAEE4Q,EAAKq/E,8BACVr/E,EAAKskF,qBAAqBl1F,KAE7BkwF,QAAQ,KACLt/E,EAAK8E,SAAS,CACVy6E,qBAAqB,OAMpB,KAAA3B,wBAA0BxwF,MAAAA,IACvC,MAAM2G,EAAgB1G,KAAKT,MAAMwB,KAAKC,SAASC,OAC3CyF,SACMA,EAAc49C,iBAAiB,CAAEC,cAAeuZ,KAK7C,KAAA4yB,sBAAyB+B,IACtCzyF,KAAKyX,SAAS,CACVi7E,+BAA+B,EAC/BC,4BAA6BF,IAEjCzyF,KAAKT,MAAMU,YAAYyF,aAAY,GACnC1F,KAAK+sD,oBAGQ,KAAA6jC,iBAAoBgC,IACjC5yF,KAAKyX,SAAS,CAAEo7E,eAAgBD,KAGnB,KAAA/0B,cAAgB99D,iBAA+D,IAAxD+9D,EAAA7qD,UAAA5R,OAAA,QAAAjB,IAAA6S,UAAA,GAAAA,UAAA,GAAqB,GACzD,IACI,MAAMjM,QAAiBk7C,OAAAA,EAAAA,sBAAAA,CAAsB,CAAE/4C,cAAewJ,EAAKpT,MAAMsC,QAAQuH,eAAiB00D,EAAY3b,EAAAA,SAAS4b,SACvH,GAAI/2D,GAAYA,EAAS3F,OAAS,EAC9B,OAAO2F,EAAS,GAAGuoB,OAEzB,MAAOxtB,GACL4Q,EAAKpT,MAAMsC,QAAQC,UAAUC,MAAM,wCAAyCA,KAKnE,KAAA+wF,8BAAgC/yF,UAA0B,IAAAm3F,EACvE,MAAM,8BAAExE,EAA6B,4BAAEC,GAAgC3yF,KAAKgN,MAC5E,IAAK0lF,IAAkCC,EACnC,OAGJ,MAAMjsF,EAAgB1G,KAAKT,MAAMwB,KAAKC,SAASC,OAC3CyF,UACMA,EAAc8rF,wBAAwB,CAAE9hC,qBAAsB1wD,KAAKT,MAAMiB,OAAO0wF,yBAChFxqF,EAAcqsF,kBAAkB,UAChCrsF,EAAcssF,oCAAoC,CAAEC,kCAAkC,KAGhG,MAAMC,EAAe5nF,KAAKC,MAAMonF,IAC1B,IAAE/oE,EAAG,KAAE7oB,GAASmyF,EAChBnwC,EAAOwS,SAASntC,cAAc,QAEpC26B,EAAKowC,OAAS,OACdpwC,EAAKvzC,OAASoa,EAEd,IAAK,MAAMwpE,KAAgBvwF,OAAOgjB,KAAK9kB,GAAO,CAC1C,MAAM6lC,EAAU2uB,SAASntC,cAAc,SACvCwe,EAAQ12B,KAAOkjF,EACfxsD,EAAQriC,MAAQxD,EAAKqyF,GACrBrwC,EAAKqgB,YAAYx8B,GAGrB2uB,SAASsjB,KAAKzV,YAAYrgB,GAC1BA,EAAKswC,SAELrzF,KAAKT,MAAMuC,UAAUgE,YACjB,qEAAuG,QAAvGoxF,EAAqEl3F,KAAKT,MAAMiB,OAAO0wF,wBAAgB,IAAAgG,EAAAA,EAAI,QAIlG,KAAA1G,mBAAsBjsF,IACnC,MACIpC,WAAW,0BAAEmxF,EAA4B,mEACzCtzF,KAAKT,MACJgF,GAA0B,IAAjBA,EAAMlD,OAKpBrB,KAAK+xF,gBAAgBxtF,EAAMN,IAAKsvF,GAAgCA,EAAOC,SAASzU,KAAK,OAHjF/+E,KAAK+xF,gBAAgBuB,IAMZ,KAAAhC,aAAe,KAC5B,IAAItlE,EAAYvC,OAAAA,EAAAA,EAAAA,CAAW,WAAYzpB,KAAKT,MAAMsC,QAAQuH,gBAAkB,GAE5E,MACM6iB,EADoB,IAAIC,OAAO,kBAAmB,KAChBC,KAAKH,GAK7C,OAJIzK,SAAW0K,IACXD,EAAY,GAAGzK,OAAOpM,SAASiX,SAASJ,KAGrC,GAAGA,IAAaA,EAAUvS,SAAS,KAAa,IAAN,WAIpC,KAAA3Z,KAAO,KAAW,IAAA2zF,EAAAC,EAAAE,EAAAwB,EAC/B,MACIr0F,MAAM,SAAEC,GAAU,OAClBR,GACAR,KAAKT,MAEHo0F,EAAwD,QAAfF,EAAAzyF,EAASC,cAAM,IAAAwyF,GAAfA,EAAiBlpF,yBAA2B,QAAU,WAcnG,IAAA4pF,EAHF,GATAn0F,KAAKT,MAAMU,YAAYH,KAAK,CACxBI,OAAQF,KAAKE,OACbG,SAAUL,KAAKK,SACfC,SAAUN,KAAKM,SACfysD,iBAAkB/sD,KAAK+sD,iBACvBva,eAAe,EACfjyC,OAAQP,KAAK6zF,iBAAmBF,EAAyC,aAI1D,QAAfD,EAAA1yF,EAASC,cAAM,IAAAyyF,IAAfA,EAAiB5pF,kCACA,QAAf8pF,EAAA5yF,EAASC,cAAM,IAAA2yF,GAAfA,EAAiB5oE,iDAAmDhqB,EAASC,OAAO6yF,iCAc/E9zF,KAAK8vD,oBAAsB7K,EAAAA,sBAAsBiR,QACxDl2D,KAAKyX,SAAS,CACVk4E,4BAA4B,IAEhC3vF,KAAK6vF,iBAAiB,IAAInmE,MAAM,yBACV,QAAnB0rE,EAAIp0F,EAASC,cAAM,IAAAm0F,GAAfA,EAAiB7qF,0BACxBvK,KAAKm3F,8BAlBL,GAAI32F,EAAO0wF,oBAAoC,QAApBiD,EAAKnzF,EAASC,cAAM,IAAAkzF,OAAA,EAAfA,EAAiBjkC,mBAAmB,CAChE,MAAM,gBAAE6jC,EAAe,MAAEgB,GAAU/0F,KAAKT,MAAMsC,QAAQU,QAEhDyxF,EAAWC,KAAK3oF,KAAK26B,UAAU8tD,MAAAA,EAAAA,EAAmB,CAAEqD,eAAgBrC,MAAAA,OAAK,EAALA,EAAOqC,kBAEjFp3F,KAAKyX,SAAS,CACVy6E,qBAAqB,IAGzBlyF,KAAKT,MAAMU,YAAY6G,YACvB9G,KAAKqwF,oBAAoB2D,GAAU,KAa9B,KAAAnE,iBAAoB8B,IACjC3xF,KAAKT,MAAMuC,UAAUy3B,UAAUo4D,GAC/B3xF,KAAKT,MAAMU,YAAYyF,aAAY,GACnC1F,KAAKT,MAAMU,YAAY0F,aACvB,MACIxD,WAAW,oBAAEmF,EAAmB,qBAAE4sF,IAClCl0F,KAAKT,MACT,IAAIuE,EAAewD,EAEnB,OAAQqqF,EAAczhF,MAClB,IAAK,mBACDpM,EAAeowF,EAMvBl0F,KAAKyX,SAAS,CACVk6E,cAAAA,EACA7tF,aAAAA,KAKS,KAAAiuF,gBAAmBjuF,IAChC9D,KAAKT,MAAMuC,UAAUC,MAAM+B,GAC3B9D,KAAKT,MAAMU,YAAYyF,aAAY,GACnC1F,KAAKT,MAAMU,YAAY0F,aACvB3F,KAAKyX,SAAS,CACV3T,aAAAA,KAIS,KAAAkuF,4BAA8BjyF,UAA0B,IAAAs3F,EACrE,MACIx1F,SAAS,cAAEuH,GACX5I,QAAQ,mBAAE4zF,EAAkB,iBAAElD,EAAgB,yBAAEoG,GAChDz1F,SACIU,SAAS,YAAE4V,IAEfpX,MAAM,SAAEC,IACRhB,KAAKT,MAEHugB,EAAQ,CACVs0E,mBAAAA,EACAlD,iBAAAA,EACA/4E,YAAAA,EACA6S,+CAA+D,QAAjBqsE,EAAEr2F,EAASC,cAAM,IAAAo2F,OAAA,EAAfA,EAAiBrsE,+CACjE0vB,UAAW16C,KAAK06C,UAChB48C,yBAAAA,GAGJt3F,KAAKyX,SAAS,CACVk4E,4BAA4B,IAGhC,MAAMjpF,EAAgB1F,EAASC,OAC3ByF,UACMA,EAAc8rF,wBAAwB,CAAE9hC,0BAAsBtwD,UAC9DsG,EAAcs9C,iBAAiB,CAAEC,mBAAe7jD,UAChDsG,EAAco9C,2BAA2B,CAAEC,6BAAyB3jD,KAG9Ei0F,OAAAA,EAAAA,QAAAA,CAAgC,IAAIC,EAAAA,+BAA+Bx0E,GAAQ1W,GACtErC,KAAKwtF,IAEFnrF,EAAc+pC,OAAO,IAAImhD,EAAAA,+BAA+Bx0E,GAAQ,CAAE00E,kBAAmB,GAAIC,cAAe,KAIxGrrF,EAAc+pC,OAAO,IAAImhD,EAAAA,+BAA+Bx0E,GAAQy0E,GAChEv0F,KAAKyX,SAAS,CAAEs4E,mBAAoBwE,EAAmBxzB,qBAGnDr6D,MAAAA,GAAAA,EAAeskB,gDAAkDtkB,EAAc6qD,2BAC/EvxD,KAAKsyF,wBAAwB5rF,EAAc6qD,6BAGlD/pD,MAAOzF,IACJ/B,KAAK6vF,iBAAiB9tF,GAEtB/B,KAAKyX,SAAS,CACVk4E,4BAA4B,IAIhCvmF,EAAc+pC,OAAO,IAAImhD,EAAAA,+BAA+Bx0E,GAAQ,CAAE00E,kBAAmB,GAAIC,cAAe,QAInG,KAAAC,oBAAuB9wF,IACpC,MAAMi+D,EAAcx/D,GAAAA,CAAIrC,KAAKgiE,UAAW,uBACpCH,IACA7hE,KAAKT,MAAMU,YAAY6G,YACvB+6D,EAAYj+D,KAIH,KAAA0uF,wBAA2BqC,IACxC,MAAM/wF,EAAUsmF,OAAAA,EAAAA,oCAAAA,CAAoCyK,GACpD30F,KAAK00F,oBAAoB9wF,GAGzBssB,QAAQC,IAAI,iDAGC,KAAAkiE,mBAAqBtyF,MAAAA,IAClC,MAAM,mBAAEq0F,GAAuBp0F,KAAKT,MAAMiB,OACpCkG,EAAgB1G,KAAKT,MAAMwB,KAAKC,SAASC,OAG/C,GAAIyF,GAAiB0tF,GAAsBh+D,GAAwBA,EAAqBg4B,IAAK,CACzF,MAAM93B,EAA0B,CAC5BgB,yBAA0BlB,EAAqBu4B,QAC/CrhD,KAAqC,QAA/B8oB,EAAqB0pC,MAAkB,GAAK1pC,EAAqB0pC,MACvE7oC,OAAQb,EAAqBw4B,SAC7B13B,aAAcd,EAAqBy4B,SACnC13B,KAAMf,EAAqBe,KAC3BC,MAAOhB,EAAqBgB,MAC5BC,QAASjB,EAAqBg4B,IAC9B72B,MAAOnB,EAAqBmB,aAE1B7wB,EAAc09C,qBAAqB,CAAEC,kBAAmB/tB,MAKrD,KAAAs+D,cAAgB,KACzB50F,KAAK6zF,kBAAoB7zF,KAAKT,MAAMU,YAAY2Q,WAChD5Q,KAAKT,MAAMU,YAAY0F,aACf3F,KAAK6zF,kBAAqB7zF,KAAKT,MAAMU,YAAY2Q,aACzD5Q,KAAKT,MAAMU,YAAYyF,aAAY,GACnC1F,KAAKT,MAAMU,YAAYqzC,cAKd,KAAAhzC,SAAW,KACxB,MAAM,iBAAE2wF,GAAmB,EAAI,iBAAEC,GAAqBlxF,KAAKT,MAAMiB,OAEjER,KAAKT,MAAMuC,UAAUgE,YAAY,sBAAsBorF,MAAAA,EAAAA,EAAoB,0BAEvED,EACAjxF,KAAK00F,oBAAoBtK,OAAAA,EAAAA,8BAAAA,IAEzBpqF,KAAKT,MAAMU,YAAYozC,UAKd,KAAAhzC,SAAW,KAAW,IAAAk3F,EACnCv3F,KAAKT,MAAMuC,UAAUgE,YAAY,sBAAwD,QAAxDyxF,EAAsBv3F,KAAKT,MAAMiB,OAAO0wF,wBAAgB,IAAAqG,EAAAA,EAAI,0BAEzFv3F,KAAK++C,gBACL/+C,KAAKT,MAAMU,YAAYoG,UAEvBrG,KAAKT,MAAMU,YAAY0F,cAMd,KAAAzF,OAASH,UAA0B,IAAAy3F,EAAAvxF,EAAAG,EAChDpG,KAAKT,MAAMuC,UAAUgE,YAAY,sBAAwD,QAAxD0xF,EAAsBx3F,KAAKT,MAAMiB,OAAO0wF,wBAAgB,IAAAsG,EAAAA,EAAI,wBAE7Fx3F,KAAKT,MAAMU,YAAY0F,mBAEc,QAArCM,EAAMjG,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAgF,OAAA,EAA/BA,EAAiCm7D,+BAA+B,CAAEzQ,6BAA6B,KAElE,QAAnCvqD,EAAIpG,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAmF,GAA/BA,EAAiCg4D,+BAC3Bp+D,KAAKT,MAAMwB,KAAKC,SAASC,OAAOw2F,8BAA8B,CAAE7mC,4BAA4B,IAIjG5wD,KAAKgyF,+BAIG,KAAAjlC,iBAAmB,KAAW,IAAA2qC,EAC3C13F,KAAKT,MAAMuC,UAAUgE,YAAY,sBAAwD,QAAxD4xF,EAAsB13F,KAAKT,MAAMiB,OAAO0wF,wBAAgB,IAAAwG,EAAAA,EAAI,kCAExF13F,KAAK8yF,gCACV9yF,KAAKT,MAAMU,YAAYmzC,sBAAqB,IAK/B,KAAA6jD,qBAAwBl1F,IAAoB,IAAA41F,EACzD,MAAM1oC,EAAiBjvD,KAAKT,MAAMwB,KAAKC,SAASC,OAMhD,GAJAjB,KAAKyX,SAAS,CACVmgF,wBAAsE,QAA/CD,EAAE33F,KAAKT,MAAMwB,KAAKivF,uBAAuB/uF,cAAM,IAAA02F,OAAA,EAA7CA,EAA+C52B,qBAGxE9R,GAAkBA,EAAe7iD,0CAA2C,CAC5EpM,KAAKT,MAAMuC,UAAUy3B,UAAUx3B,GAC/B/B,KAAKT,MAAMU,YAAYyF,aAAY,GAEnC,MAAM0pD,EAAYrtD,GAASA,EAAMmO,KAAOnO,EAAMmO,KAAO,GAChDm/C,OAAAA,EAAAA,kBAAAA,CACDD,EACApvD,KAAKT,MAAM4C,YACT8sD,EAAe1kD,yBACjBvK,KAAKT,MAAMsC,QAAQuH,oBAGvBpJ,KAAK6vF,iBAAiB9tF,IAKb,KAAAo1F,uBAAyB,KAAW,IAAA/uF,EAAAyvF,EAAAnuF,EACjD1J,KAAKT,MAAMuC,UAAUgE,YACjB,0CACmC,QADnCsC,EACIpI,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAmH,OAAA,EAA/BA,EAAiCmC,mDACwB,QAA7DstF,EAA2B73F,KAAKT,MAAMiB,OAAO0wF,wBAAgB,IAAA2G,EAAAA,EAAI,OAGlC,QAA/BnuF,EAAA1J,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAyI,GAA/BA,EAAiCa,0BAA4BvK,KAAKT,MAAMiB,OAAO0wF,kBAC/ElxF,KAAKT,MAAMU,YAAYyF,aAAY,GACnC1F,KAAKT,MAAMU,YAAYoG,UACvBrG,KAAKyX,SAAS,CACVk6E,cAAe,KACf7tF,aAAc,KACdouF,qBAAqB,EACrB3nF,0BAA0B,IAE9BvK,KAAKT,MAAMU,YAAYmzC,sBAAqB,IAE5CpzC,KAAKyX,SAAS,CAAElN,0BAA0B,KAI1C,KAAA0uC,qBAAuBl5C,MAAAA,IAC3B,MAAMiB,QAAiBhB,KAAKT,MAAMwB,KAAKC,SAGjCk4C,EADqB,KADIl4C,MAAAA,OAAQ,EAARA,EAAUE,aAAai4C,kBAAmB,IAE9BvhC,OAAO6T,GAYlD,OAAOzqB,MAAAA,OAAQ,EAARA,EAAUE,aAAak4C,sBAAsB,CAChDC,mBAAoBH,KAIpB,KAAAzrB,wBAA0B1tB,MAAO8tB,EAAgBE,KACrD,MAgBMsrB,EAA0B,CAhBW,CAEvC,cAAe,oEACf/rC,KAAM,qBACNgsC,UAAWzrB,EACX0rB,sBAAuB,GACvBtuC,oBAAqB,IAEmB,CAExC,cAAe,oEACfqC,KAAM,uBACNgsC,UAAWvrB,EACXwrB,sBAAuB,GACvBtuC,oBAAqB,KAIzB,OAAOjL,KAAKi5C,qBAAqBI,IA59B3B,uBACN,MAAM3yC,EAAgB1G,KAAKT,MAAMwB,KAAKC,SAASC,OAC/C,OAAOyF,GAAiBA,EAAcyrB,cAAgBzrB,EAAcyrB,cAAgB,EAG9E,+BACN,MAAMzrB,EAAgB1G,KAAKT,MAAMwB,KAAKC,SAASC,OAC/C,OAAOyF,GAAiBA,EAAc2uB,sBAAwB3uB,EAAc2uB,sBAAwB,EAG9F,6BACN,MAAM3uB,EAAgB1G,KAAKT,MAAMwB,KAAKC,SAASC,OAC/C,OAAKyF,GAAkBA,EAAcouB,gBAG9BpuB,EAAcouB,gBAAgBnR,OAAO,CAAC3f,EAAegxB,IAEjDhxB,GADiBgxB,EAASC,SAAW,GAE7C,GALQ,EAQL,gBACN,MACIl0B,MAAM,SAAEC,IACRhB,KAAKT,MACT,IAAKyB,EAASC,OACV,OAAO,EAGX,MACM4G,EADiB7G,EAASC,OACJC,aAAa2G,KACzC,OAAKA,GAASA,EAAKC,WAAuC,IAA1BD,EAAKC,UAAUzG,QAKvCwG,EAAKgrB,aA/CF,GA+C+B7yB,KAAKqiD,uBAAyBriD,KAAK26C,iBAAmB36C,KAAKsiD,yBAJ1F,EAOL,uBAAoB,IAAAuyC,EAC1B,MACI9zF,MAAM,SAAEC,GAAU,OAClBR,GACAR,KAAKT,MACT,IAAKyB,EAASC,OACV,OAAO,EAGX,MAAMguD,EAAiBjuD,EAASC,QAE1B,kBAAEivD,EAAiB,qBAAE95B,EAAoB,wBAAEgoC,GAA4BnP,EACvE6lC,GACqB,QAAvBD,EAAAr0F,EAAO0wF,wBAAgB,IAAA2D,OAAA,EAAvBA,EAAyBhlE,wBAAwBqgC,MAAAA,OAAiB,EAAjBA,EAAmBrgC,uBACnEuG,GAAwBgoC,GAE7B,OAAOp+D,KAAK06C,UAlED,IAkE4Bo6C,EAGjC,qCAAkC,IAAAzhF,EACxC,MAAM5L,EAAyBpF,GAAAA,CAAIrC,KAAKT,MAAO,kDACzCoI,EAAwBtF,GAAAA,CAAIrC,KAAKT,MAAO,kDACxC,4BAAEsH,EAA2B,aAAEuG,GAAiBpN,KAAKT,MAAMwB,KAKjE,OAH0CqM,MAAAA,GAAoB,QAARiG,EAAZjG,EAAcnM,cAAM,IAAAoS,GAAiE,QAAjEA,EAApBA,EAAsB7R,KAAK6L,GAD/B,oEAC0CA,EAAQC,aAAuC,IAAA+F,OAAA,EAArFA,EACpC9F,YAGClL,GAAAA,CAAIrC,KAAKT,MAAO,qDAAuD,IAAIm0B,KACvE1rB,IAAkB,IAAAuR,EAAA,OACfvR,EAASzB,gBAC6B,QADjBgT,EACjB1S,EAA4B5F,cAAM,IAAAsY,GAAyB,QAAzBA,EAAlCA,EAAoCrR,+BAAuB,IAAAqR,OAAA,EAA3DA,EAA6D/X,KACzDD,GAAgBA,IAAiByG,EAASzB,gBACzCyB,EAASzB,eAAiBoB,KAE1CtF,GAAAA,CAAIrC,KAAKT,MAAO,qDAAuD,IAAIm0B,KACvE1rB,GACGA,EAASzB,eAAiBkB,GAA0BO,EAASzB,eAAiBoB,GAItF,uCACN,OAAQtF,GAAAA,CAAIrC,KAAKT,MAAO,qDAAuD,IAAIwZ,MAC9E/Q,KAAyBA,EAASzB,cAIjC,wBAEN,GADkB1D,OAAO+wC,OAAO5zC,KAAKT,MAAMwB,MAAM2yB,KAAK3yB,GAAQsB,GAAAA,CAAItB,EAAM,YAAckkD,EAAAA,sBAAsB8K,SAExG,OAAO9K,EAAAA,sBAAsB8K,QAIjC,GADkBltD,OAAO+wC,OAAO5zC,KAAKT,MAAMwB,MAAMgY,MAAMhY,GAAQsB,GAAAA,CAAItB,EAAM,YAAckkD,EAAAA,sBAAsBgR,SAEzG,OAAOhR,EAAAA,sBAAsBgR,QAIjC,OADiBpzD,OAAO+wC,OAAO5zC,KAAKT,MAAMwB,MAAM2yB,KAAK3yB,GAAQsB,GAAAA,CAAItB,EAAM,YAAckkD,EAAAA,sBAAsBiR,QAEhGjR,EAAAA,sBAAsBiR,YADjC,EAMM,sBACN,QAAS7zD,GAAAA,CAAIrC,KAAKT,MAAMwB,KAAM,6CAGxB,6BACN,OAAQsB,GAAAA,CAAIrC,KAAKT,MAAMwB,KAAM,6EAGvB,uBACN,MAAMqrB,EAAS/pB,GAAAA,CAAIkf,OAAQ,mBACrB0zE,EAC2D,iBAAtD5yF,GAAAA,CAAIrC,KAAKT,MAAO,kCACjB,IAAI+hB,IAAIjf,GAAAA,CAAIrC,KAAKT,MAAO,mCACxB8C,GAAAA,CAAIrC,KAAKT,MAAO,kCAC1B,OAAO6sB,GAAU6oE,EAAW7oE,OAazB5R,oBAAiB,IAAAtQ,EAAA8B,EACpBH,OAAAA,EAAAA,EAAAA,CACI,IAAM7L,KAAK8vD,oBAAsB7K,EAAAA,sBAAsB8K,QACvD,KACI/vD,KAAKF,OAELE,KAAKm3F,2BAGbprF,OAAAA,EAAAA,EAAAA,CACI,IAAM/L,KAAK8vD,oBAAsB7K,EAAAA,sBAAsBiR,QAAUl2D,KAAK6zF,iBACtE,KACI7zF,KAAK40F,kBAIb7oF,OAAAA,EAAAA,EAAAA,CACI,IAAM/L,KAAK06C,UACX36C,UAAW,IAAA4J,EAAAI,EAML+tF,GAJE93F,KAAK+3F,wBAC2B,QAAhCpuF,EAAC3J,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAA0I,GAA/BA,EAAiCY,4BAClCvK,KAAK06C,UApKN,IAqKiC,QAAhC3wC,EAAC/J,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAA8I,GAA/BA,EAAiCD,yCAE5B9J,KAAKE,SAEXF,KAAKT,MAAMuC,UAAUgE,YACjB,sEAAwG,QAAxGgyF,EAAsE93F,KAAKT,MAAMiB,OAAO0wF,wBAAgB,IAAA4G,EAAAA,EAAI,UAM5H/rF,OAAAA,EAAAA,EAAAA,CACI,SAAA9B,EAAA,OAAqC,QAArCA,EAAMjK,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAgJ,OAAA,EAA/BA,EAAiCM,0BACvC,KACIvK,KAAKm3F,2BAIsB,QAAnCjtF,EAAIlK,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAiJ,GAA/BA,EAAiCkC,4CACjCL,OAAAA,EAAAA,EAAAA,CACI,SAAA5B,EAAA,OAAqC,QAArCA,EAAMnK,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAkJ,OAAA,EAA/BA,EAAiCmC,eACvCA,IAAgB,IAAA0rF,EAAA5tF,IAEsC,QAA7C4tF,EAAAh4F,KAAKT,MAAMwB,KAAKivF,uBAAuB/uF,cAAM,IAAA+2F,OAAA,EAA7CA,EAA+Cj3B,uBACb,QAD+B32D,EAC9DpK,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAmJ,OAAA,EAA/BA,EAAiC6tF,kCACjCj4F,KAAKgN,MAAM4qF,0BACftrF,GACAA,EAAcC,gBAAkBC,EAAAA,cAAcqmD,2BAC9CvmD,EAAcxI,cAEd9D,KAAK+xF,gBAAgBzlF,EAAcxI,gBAK/CiI,OAAAA,EAAAA,EAAAA,CACI,SAAA1B,EAAA,OAAqC,QAArCA,EAAMrK,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAoJ,OAAA,EAA/BA,EAAiCqC,oBACvCA,IAAqB,IAAAwrF,EAAA5tF,GAEiC,QAA7C4tF,EAAAl4F,KAAKT,MAAMwB,KAAKivF,uBAAuB/uF,cAAM,IAAAi3F,OAAA,EAA7CA,EAA+Cn3B,uBACb,QAD+Bz2D,EAC9DtK,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAqJ,OAAA,EAA/BA,EAAiC2tF,mCACjCj4F,KAAKgN,MAAM4qF,yBACflrF,IAAuBC,EAAAA,eAAekmD,2BAEjCjmD,OAAAA,EAAAA,qBAAAA,CAAqB5M,KAAKH,iBAAkBG,KAAKT,MAAMsC,QAAQuH,kBAOjD,QAAnC4C,EAAIhM,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAA+K,GAA/BA,EAAiCgf,iDACjCjf,OAAAA,EAAAA,EAAAA,CACI,SAAAE,EAAAC,EAAA,OACmC,QAA/BD,EAAAjM,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAgL,OAAA,EAA/BA,EAAiCslD,6BACF,QAD2BrlD,EAC1DlM,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAiL,OAAA,EAA/BA,EAAiCisF,6BACrC,KAAK,IAAAhsF,EAAAP,EAAAwsF,EAAA/rF,EAMCgsF,EAJkC,QAAhClsF,EAACnM,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAkL,GAA/BA,EAAiC5B,0BACH,QAD2BqB,EAC1D5L,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAA2K,IAA/BA,EAAiC2lD,4BACY,QAA7C6mC,EAAAp4F,KAAKT,MAAMwB,KAAKivF,uBAAuB/uF,cAAM,IAAAm3F,OAAA,EAA7CA,EAA+Cr3B,uBACZ,QAD8B10D,EAC7DrM,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAoL,OAAA,EAA/BA,EAAiC8rF,8BAErCn4F,KAAKsyF,wBAAwBtyF,KAAKT,MAAMwB,KAAKC,SAASC,OAAOswD,2BAE7DvxD,KAAKT,MAAMuC,UAAUgE,YACjB,yFACqB,QADrBuyF,EAAyFr4F,KAAKT,MAAMiB,OAC/F0wF,wBAAgB,IAAAmH,EAAAA,EAAI,UAMzCtsF,OAAAA,EAAAA,EAAAA,CACI,SAAAU,EAAA,OAAqC,QAArCA,EAAMzM,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAwL,OAAA,EAA/BA,EAAiCqnF,kCACvC,KAAK,IAAAlkC,EAAAC,EAAAyoC,EAAAtoC,EAMCM,EAAAioC,EAJkC,QAAhC3oC,EAAC5vD,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAA2uD,GAA/BA,EAAiCrlD,0BACH,QAD2BslD,EAC1D7vD,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAA4uD,IAA/BA,EAAiCikC,mCACY,QAA7CwE,EAAAt4F,KAAKT,MAAMwB,KAAKivF,uBAAuB/uF,cAAM,IAAAq3F,OAAA,EAA7CA,EAA+Cv3B,uBACZ,QAD8B/Q,EAC7DhwD,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAA+uD,OAAA,EAA/BA,EAAiCmoC,8BAErCn4F,KAAKF,OAELE,KAAKT,MAAMuC,UAAUgE,YAAY,qGAEG,UAA/B9F,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAqvD,OAAA,EAA/BA,EAAiCwjC,gFAC6C,QAAlFyE,EAAgDv4F,KAAKT,MAAMiB,OAAO0wF,wBAAgB,IAAAqH,EAAAA,EAAI,WAQpGtrF,SAAM,IAAAurF,EAAArD,EACT,MAAM,aACFrxF,EAAY,2BACZ6rF,EAA0B,uBAC1BQ,EAAsB,8BACtBuC,EAA6B,oBAC7BR,EAAmB,eACnBW,EAAc,yBACdtoF,GACAvK,KAAKgN,OAEL/M,aAAa,QAAEuN,EAAO,SAAEE,EAAQ,eAAE4kC,EAAc,UAAEO,EAAS,uBAAEtkC,GAC7D/N,QAAQ,qBAAE60F,EAAoB,qBAAEC,EAAoB,UAAE5yF,EAAS,mBAAE0xF,EAAkB,iBAAElD,GAAkB,UACvG/uF,EACApB,MAAM,SAAEC,EAAQ,uBAAEgvF,GAAwB,mBAC1ClG,GACA9pF,KAAKT,MAEH4uB,EAAY27D,GAAsBA,EAAmB37D,UAErDsnE,EAAiC,QAAlB+C,EAAGx3F,EAASC,cAAM,IAAAu3F,OAAA,EAAfA,EAAiBxtE,+CAEzC,IAAKsnB,GAAmBtyC,KAAK8vD,oBAAsB7K,EAAAA,sBAAsBiR,SAAWl2D,KAAK6zF,iBAErF,OADA7zF,KAAKT,MAAMsC,QAAQC,UAAUC,MAAM,yDAC5B,KAGX,GAAI/B,KAAKT,MAAMsC,QAAQU,QAAQm8C,KAAK+D,cAA4D,IAA5CC,EAAAA,sBAAsB+1C,kBAEtE,OADAz4F,KAAKT,MAAMsC,QAAQC,UAAUgE,YAAY,2EAClC,KAGX,MAAM,cAAE2uF,EAAa,kBAAED,EAAiB,cAAEe,GAA+C,QAAhCJ,EAAGnF,EAAuB/uF,cAAM,IAAAk0F,EAAAA,EAAI,CACzFV,mBAAer0F,EACfo0F,uBAAmBp0F,EACnBm1F,mBAAen1F,IAGb,qBAAEg2B,EAAoB,WAAEC,EAAU,eAAEC,GAAmBt1B,EAASC,QAAU,CAC5Em1B,0BAAsBh2B,EACtBi2B,gBAAYj2B,EACZk2B,oBAAgBl2B,GAGdo1F,EAA6BtE,EAAmB,GAAGlxF,KAAK2b,mBAAmBu1E,EAAiBzhE,gBAAkB,GAE9G1hB,EAASC,EAAAA,EAAAA,EAAA,GACRhO,KAAKT,OACLS,KAAKgN,OAAK,IACbmhB,UAAAA,EACAzrB,UAAAA,EACA7C,iBAAkBG,KAAKH,iBACvB4tB,wBAAyBztB,KAAKytB,wBAC9BD,eAAgBxtB,KAAKgyF,4BAErB3nE,0BAA2B,CACvB3b,YAAa1O,KAAKT,MAClBmD,UAAWkiB,GAAAA,CAAW5kB,KAAK2b,gBAAiB65E,EAA4B9yF,IAE5EqM,SAAUvB,IACLjD,GACDvK,KAAK8vD,oBAAsB7K,EAAAA,sBAAsBiR,SAChDl2D,KAAK8vD,oBAAsB7K,EAAAA,sBAAsB8K,SAAW4/B,GAA8B98C,IACvFxzC,EAAAA,cAACi+D,EAAAA,iBAAgBz6D,OAAAC,OAAA,GAAK,CAAEc,QAASzB,EAAUuzF,kBAEnDxnF,MAAOR,GAAY5J,GAAgBzE,EAAAA,cAAC8O,EAAAA,eAActL,OAAAC,OAAA,GAAK,CAAEY,MAAOvB,EAAUmB,kBAAmBM,QAASE,KACtGwmB,oBAAqB/f,GAChBiD,IAAYioF,IAAoB/C,IAAkCR,IACnE7yF,EAAAA,cAACs2F,EAA2B,CACxBv/D,qBAAsBA,EACtBC,WAAYA,EACZC,eAAgB89D,EAAqB99D,OAAiBl2B,EACtDunB,SAAUpZ,EACVrO,OAAQF,KAAKE,OACbiC,UAAWA,IAGnBooB,gBAAiBhgB,KACXiD,GAAWioF,GAAmB/C,KAC/BR,IACAuC,GAAiBD,IAClBrmE,GACI9uB,EAAAA,cAACu2F,EAAAA,wBAAuB,CACpBC,cAAepB,EACfqB,kBAAmBtB,EACnBjyB,cAAegzB,EACfj1F,SAAUN,KAAKM,SACfD,SAAUL,KAAKK,SACfgiE,gBAAiBriE,KAAKqiE,gBACtBL,UAAWhiE,KAAKgiE,UAChB1wB,WAAY/iC,EACZgjC,WAAYhjC,GAA0BvO,KAAK++C,gBAC3Cs2C,qBAAsBA,GAAwBlF,EAC9C7tB,iBAAkBtiE,KAAKsiE,iBACvBqtB,2BAA4BA,EAC5B2F,qBAAsBA,EACtBnzF,UAAWA,IAGvBqoB,aAAc,CACVP,MAAO,CACHzmB,IAAKyhC,EAAAA,MACLviC,UAAc1C,KAAK2b,gBAAR,kBACXi8B,OAAQi7C,MAKpB,OAAO7yF,KAAKT,MAAM6P,WAAWrB,KArWvBsB,OAAAA,EAAAA,EAAAA,CAAA,CAATE,EAAAA,GAAQ,qCAKCF,OAAAA,EAAAA,EAAAA,CAAA,CAATE,EAAAA,GAAQ,6CAKCF,OAAAA,EAAAA,EAAAA,CAAA,CAATE,EAAAA,GAAQ,2CAWCF,OAAAA,EAAAA,EAAAA,CAAA,CAATE,EAAAA,GAAQ,8BAkBCF,OAAAA,EAAAA,EAAAA,CAAA,CAATE,EAAAA,GAAQ,qCAmBCF,OAAAA,EAAAA,EAAAA,CAAA,CAATE,EAAAA,GAAQ,mDAsBCF,OAAAA,EAAAA,EAAAA,CAAA,CAATE,EAAAA,GAAQ,qDAMCF,OAAAA,EAAAA,EAAAA,CAAA,CAATE,EAAAA,GAAQ,sCAkBCF,OAAAA,EAAAA,EAAAA,CAAA,CAATE,EAAAA,GAAQ,oCAICF,OAAAA,EAAAA,EAAAA,CAAA,CAATE,EAAAA,GAAQ,2CAICF,OAAAA,EAAAA,EAAAA,CAAA,CAATE,EAAAA,GAAQ,qCAoUTF,OAAAA,EAAAA,EAAAA,CAAA,CADCG,EAAAA,GAAM,0CA+IPH,OAAAA,EAAAA,EAAAA,CAAA,CADCG,EAAAA,GAAM,8CASPH,OAAAA,EAAAA,EAAAA,CAAA,CADCG,EAAAA,GAAM,4CAsFPH,OAAAA,EAAAA,EAAAA,CAAA,CADCG,EAAAA,GAAM,2BA6CPH,OAAAA,EAAAA,EAAAA,CAAA,CADCG,EAAAA,GAAM,uCAyBPH,OAAAA,EAAAA,EAAAA,CAAA,CADCG,EAAAA,GAAM,sCAwGPH,OAAAA,EAAAA,EAAAA,CAAA,CADCG,EAAAA,GAAM,oCAWPH,OAAAA,EAAAA,EAAAA,CAAA,CADCG,EAAAA,GAAM,+BAcPH,OAAAA,EAAAA,EAAAA,CAAA,CADCG,EAAAA,GAAM,+BAaPH,OAAAA,EAAAA,EAAAA,CAAA,CADCG,EAAAA,GAAM,6BAiBPH,OAAAA,EAAAA,EAAAA,CAAA,CADCG,EAAAA,GAAM,uCAUPH,OAAAA,EAAAA,EAAAA,CAAA,CAFCG,EAAAA,GAAM,2CA0BPH,OAAAA,EAAAA,EAAAA,CAAA,CADCG,EAAAA,GAAM,6CA95BEqjD,EAAyBxjD,OAAAA,EAAAA,EAAAA,CAAA,CAFrCI,EAAAA,gBACAC,EAAAA,GACYmjD,GAi+BEg2B,EAAAA,QAAAA,OAAAA,EAAAA,uBAAAA,CAAuBh2B,0ICtiCtC,MAAM47B,EAAiE,GASjEC,EAAsBA,CAACC,EAAiBz8B,EAAwBlH,IAAoCjrD,WAClG4uF,GAAWz8B,IAGfu8B,EAAcxqF,IAAI2qF,IACdA,GAAe,IACR,UAEL5jC,MA+CK6jC,EAAAA,EA5C4Dj/E,IAStE,IATuE,gBACxEslD,EAAe,cACfhD,EAAa,WACblH,EAAU,iBACVnmD,EAAgB,+CAChBmmB,EAA8C,oBAC9C4+B,EAAmB,yBACnBr/C,EAAwB,iCACxBT,GACH8F,EACG,MAAO++E,EAAQG,GAAaC,OAAAA,EAAAA,SAAAA,EAAS,GACrCN,EAAcx5E,KAAK65E,GACnB,MAAME,EAAUl/E,OAAAA,EAAAA,iBAAAA,CAAiBm/E,EAAAA,EAAeC,SAAUrqF,EAAmBqwD,EAAiB,IACxFzpC,EAAazb,OAAAA,EAAAA,uBAAAA,CAAuBnL,EAAmBmqF,GAE7D,OAAIhkE,GAAoDzgB,IAA4BT,EAgBhFzK,EAAAA,EAAA+oB,cAACpjB,EAAAA,OAAMnC,OAAAC,OAAA,CACHJ,UAAWkiB,GAAAA,CAAW,+BAAgC,CAAE,UAAW+pE,IACnE1pF,MAAM,UACNE,QAASupF,EAAoBC,EAAQz8B,EAAelH,GACpDtnD,MAAOwxD,GACHzpC,EAAU,CACdvmB,UAAWgtD,GAAiBy8B,IAE3Bz5B,GAtBD71D,EAAAA,EAAA+oB,cAACpjB,EAAAA,OAAMnC,OAAAC,OAAA,CACHJ,UAAWkiB,GAAAA,CAAW,+BAAgC,CAAE,UAAWglC,MAAAA,GAAAA,IACnE3kD,MAAM,UACNE,QAAS6lD,EACTtnD,MAAOwxD,GACHzpC,EAAU,CACdvmB,UAAWgtD,GAAiBtI,IAE3BsL,uCClEjB,2OCAA,8DAuBO,MAAMoI,EAAmD1tD,IAAA,IAAC,QAAEhM,EAAO,UAAElB,EAAY,kCAAkCkN,EAAA,OACtHvQ,EAAAA,cAAA,OAAKqD,UAAcA,EAAH,wBACZrD,EAAAA,cAAC2P,EAAAA,QAAO,MACR3P,EAAAA,cAAA,QAAMqD,UAAcA,EAAH,qBAAkCkB,2GCP3D,MAAM0tB,EAA6D1hB,IAAkC,IAAjC,oBAAEhB,EAAmB,KAAEC,GAAMe,EAC7F,IAAKf,GAAwB,IAAhBA,EAAKxN,OACd,OAAO,KAYX,MAAMkwB,EAAe1iB,EAAK9G,OAAOsb,IAAS,CAAC,MAAO,YAAa,OAAQ,UAAW,UAAW,WAAW5J,SAAS4J,EAAKlf,OAEtH,OACI9E,EAAAA,cAAC6qB,EAAAA,KAAIrnB,OAAAC,OAAA,GAAK8L,GACL2iB,EAAattB,IAAKxC,GAEXpC,EAAAA,cAAC6qB,EAAAA,KAAIrnB,OAAAC,OAAA,GAAKrB,EAAegB,eAAc,CAAEqjB,IAAKrkB,EAAe0C,KAAI,aAAa,qCACzE1C,EAAe2C,YACf3C,EAAekB,YACflB,EAAeW,UAQlCovB,EAA4DpH,IAA2C,IAA1C,eAAE3nB,EAAc,YAAEE,EAAW,MAAEP,GAAOgoB,EACrG,OACI/qB,EAAAA,cAAC6qB,EAAAA,KAAIrnB,OAAAC,OAAA,GAAKL,GACLE,EACAP,IAmCEqvB,EAAAA,QA9BkElyB,IAC7E,MAAM,wBACFH,EAAuB,iBACvBS,EAAgB,UAChBwO,EAAS,gBACT3O,EAAe,uBACfoP,EAAsB,MACtBZ,EAAK,QACLa,EAAO,WACPE,EAAU,WACVC,EAAU,aACVC,GACA5P,EAEJ,OAEIF,EAAAA,cAACsrB,EAAAA,OAAM9nB,OAAAC,OAAA,GAAK1D,EAAuB,CAAEwrB,IAAK/qB,IACrCwO,EAAU1O,WAAaoP,GAAW1P,EAAAA,cAAA,OAAKgpB,MAAO,CAAEuG,MAAO,OAAQtG,QAAS,OAAQC,eAAgB,WAAaxZ,GAG7GV,EAAUV,SAAWO,GAASA,EAAM3O,MAAMqE,SAAWvE,EAAAA,cAACqqB,EAAAA,EAAK,KAAExb,EAAM3O,MAAMqE,SACzEyK,EAAUT,YAAclO,GAAmBL,EAAAA,cAACiyB,EAAkBzuB,OAAAC,OAAA,GAAKpD,IACnE2O,EAAUR,gBAAkBiB,GAA0BzP,EAAAA,cAACmyB,EAAsB3uB,OAAAC,OAAA,GAAKgM,IAClFT,EAAUC,kBAAoBW,EAC9BZ,EAAUG,kBAAoBU,EAC9Bb,EAAUI,oBAAsBU,uCCpF7C,oLCmBO,MAAM4mD,EAAmBj2C,IAAuD,IAAAzM,EACnF,MACI7S,QAAQ,oBAAEgqF,GACVzpF,MAAM,SAAEC,GACRmB,WAAW,cACP0xB,EAAa,cACba,EAAa,SACbX,EAAQ,gBACRE,EAAe,aACfuB,EAAY,cACZC,EAAa,oBACbI,EAAmB,SACnB/D,EAAQ,mBACRD,EAAkB,aAClB44D,EAAY,qBACZ90D,GACH,QACD9zB,EAAO,SACPI,EAAQ,GACRD,EAAE,UACFF,GACAge,EAEEpZ,EAAgBrE,GAAAA,CAAIrB,EAAU,UAC9B6G,EAAOxF,GAAAA,CAAIrB,EAAU,4BACrB0pF,EAAgB7iF,EAAKC,WAAaD,EAAKC,UAAUzG,OAAS,EAC1D4wB,EAAuBpwB,EAAQU,QAAQC,SAEvC,4BAAEqE,EAA2B,aAAEuG,GAAiB0S,EAAM/e,KACtDnB,EAAoCwN,MAAAA,GAAoB,QAARiG,EAAZjG,EAAcnM,cAAM,IAAAoS,GAAiE,QAAjEA,EAApBA,EAAsB7R,KAAK6L,GAF/B,oEAE0CA,EAAQC,aAAuC,IAAA+F,OAAA,EAArFA,EACpC9F,UAEAmrF,GAAmG,IAA1E72F,EAAQU,QAAQu1B,IAAIt3B,OAAOm4F,2CAW1D,MAAO,CACHhO,kBAAmB,CAAEjoF,UAAW,4CAChCoiB,QAAS0lE,GAAuBA,EAAoBp5E,MAChD/R,EAAAA,cAAC6nB,EAAAA,EAAarkB,OAAAC,OAAA,CACVJ,UAAU,8BACN8nF,EAAmB,CACvBhnF,IAAKgnF,EAAoBhnF,KAAO,KAChC4N,KAAMo5E,EAAoBp5E,KAC1BC,UAAW,CAAEnR,OAjBgBuK,IACrC,MACIjK,QAAQ,oBAAEgqF,IACV1qE,EACA0qE,IACAA,EAAoBp5E,KAAO3G,EAAMgG,OAAOlM,QAYkB+M,eAAgBzP,EAAQU,YAGtFulD,MAAO4iC,EACDn4D,OAAAA,EAAAA,EAAAA,CAAa,CACT7rB,cAAAA,EACAmB,KAAAA,EACAgsB,cAAAA,EACAa,cAAAA,EACAX,SAAAA,EACAE,gBAAAA,EACAuB,aAAAA,EACAC,cAAAA,EACAI,oBAAAA,EACA/D,SAAAA,EACAD,mBAAAA,EACAhwB,QAAAA,EACAI,SAAAA,EACAD,GAAAA,EACAiwB,qBAAAA,EACAnwB,UAAAA,EACAqyB,iBAAkBs2D,EAClB7qF,kCAAAA,EACAiH,4BAA6BA,MAAAA,OAA2B,EAA3BA,EAA6B5F,OAE1DkyB,qBAAsBtrB,EAAK+iF,qBAC3Bx3D,iBAAkBslE,EAClB/iE,qBAAAA,SAEJv1B,6FC1FP,MAAMghD,EAAa,CACtBw3C,QAAS,IACTv3C,mBAAoB,IACpBw3C,WAAY,IACZC,mBAAoB,2JCuDjB,MAAMlD,EAAyEhmF,IAAA,IAAC,cACnFimF,EAAgB,GAAE,kBAClBC,EAAoB,GAAE,SACtBx1F,EAAQ,SACRD,EAAQ,gBAERgiE,EAAe,UACfL,EAAS,UACT1wB,EAAS,UACTC,EAAS,qBACT8jD,EAAoB,iBACpB/yB,EAAgB,cAChBC,EAAa,2BACbotB,EAA0B,qBAC1B2F,EAAoB,UACpB5yF,EAAY,iCAAgC,WAC5CihE,EAAa,8BACbxhE,WAAW,iBAAE42F,EAAgB,iBAAEC,EAAgB,gBAAEt1B,IACpD9zD,EAAA,OACGvQ,EAAAA,cAAA,OAAKqD,UAAWkiB,GAAAA,CAAcliB,EAAH,QAAqB,CAAE,cAAeitF,KAC7DtwF,EAAAA,cAACuiE,EAAAA,EAAM,CACHl/D,UAAcA,EAAH,QACXihE,WAAYA,EACZ/4C,IAAKo3C,EACL0B,gBAAiBA,EACjBb,eAAgBizB,EAChB1zB,UAAWyzB,EACXvzB,iBAAkBA,EAClBC,cAAeA,EACfF,gBAAiBA,EACjB55C,OAAQ4sE,EACRvyB,IACIwyB,MAAAA,EAAAA,EACA2D,4hLAGP3nD,GACGjyC,EAAAA,cAAC2F,EAAAA,OAAM,CAACtC,UAAcA,EAAH,aAA0BgB,MAAOs1F,EAAkB/zF,MAAM,UAAUE,QAAS7E,GAC1F04F,GAGRznD,GACGlyC,EAAAA,cAAC2F,EAAAA,OAAM,CAACtC,UAAcA,EAAH,eAA4BgB,MAAOq1F,EAAkB9zF,MAAM,YAAYE,QAAS9E,GAC9F04F,+JCpGV,MAAMG,EAAwBtpF,IAAA,IAAC,UAClCinC,EAAS,MACTj0B,EAAK,cACL06B,EAAa,cACbC,EAAa,MACbrvC,EAAK,WACL8vC,EAAU,cACVC,EAAa,cACbC,EAAa,cACbC,EAAa,YACbV,EAAW,SACXC,EAAQ,SACRE,EAAQ,YACRC,EAAW,wBACXlB,EAAuB,qBACvBmB,EAAoB,qBACpBC,EAAoB,gBACpBP,GACH5tC,EAAA,OACGvQ,EAAAA,cAAC6qB,EAAAA,KAAIrnB,OAAAC,OAAA,GAAK+zC,GACL3oC,EACAyuC,EACGt9C,EAAAA,cAAC6qB,EAAAA,KAAIrnB,OAAAC,OAAA,GAAKk7C,GACN3+C,EAAAA,cAAC6qB,EAAAA,KAAIrnB,OAAAC,OAAA,GAAKm7C,GACLr7B,EACA66B,GAEJK,GACGz+C,EAAAA,cAAC6qB,EAAAA,KAAIrnB,OAAAC,OAAA,GAAKo7C,GACLZ,EACAI,GAGRK,GACG1+C,EAAAA,cAAC6qB,EAAAA,KAAIrnB,OAAAC,OAAA,GAAKq7C,GACLZ,EACAK,IAGPE,GAAwBC,IAAyBP,GAGvDn+C,EAAAA,cAAAA,EAAAA,SAAA,KACKujB,EACA66B,GAGRI,IAIIs7C,EAAwB/uE,IAAA,IAAC,UAAEqhB,EAAS,iBAAEF,GAAkBnhB,EAAA,OAAK/qB,EAAAA,cAAC6qB,EAAAA,KAAIrnB,OAAAC,OAAA,GAAK2oC,GAAYF,IAYjF6tD,EAAAA,QAV4D75F,IACvE,MAAM,0BAAE+8D,EAAyB,KAAEvZ,EAAI,KAAE1/B,GAAS9jB,EAClD,OACIF,EAAAA,cAACsrB,EAAAA,OAAM9nB,OAAAC,OAAA,GAAKw5D,GACPvZ,GAAQ1jD,EAAAA,cAAC65F,EAAIr2F,OAAAC,OAAA,GAAKigD,IAClB1/B,GAAQhkB,EAAAA,cAAC85F,EAAIt2F,OAAAC,OAAA,GAAKugB,45BCoB/B,IAAMy0C,EAAN,cAA8Bz4D,EAAAA,UAS1BC,YAAYC,GACRC,MAAMD,GAPO,KAAAoc,gBAA0B,sBAE1B,KAAA09E,sBAAgC,EAEhC,KAAAx5F,iBAAiDR,EAAAA,YA6RjD,KAAAS,KAAOC,UAA0B,IAAAe,EAAA+E,EAC9C7F,KAAKT,MAAMU,YAAYH,KAAIkO,EAAC,CACxB9N,OAAQF,KAAKE,OACbG,SAAUL,KAAKK,SACfC,SAAUN,KAAKM,SACfiyC,YAAY,IACPvyC,KAAKu+C,aAAe,CAAEh+C,OAAQ,eAGmB,QAAlCO,EAAGd,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAH,OAAA,EAA/BA,EAAiCqxB,eAExDnyB,KAAKT,MAAMU,YAAYoG,UACe,QAAnCR,EAAI7F,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAA4E,GAA/BA,EAAiCiE,iCACxC9J,KAAKT,MAAMU,YAAYozC,SAEvBrzC,KAAKT,MAAMwB,KAAKu4F,YAAYr4F,QAC5BjB,KAAKT,MAAMwB,KAAKC,SAASC,QACzBjB,KAAKT,MAAMwB,KAAKu4F,YAAYr4F,OAAOs4F,aAAev5F,KAAKT,MAAMwB,KAAKC,SAASC,OAAOC,aAAa2G,KAAK42D,eAEpGz+D,KAAKT,MAAMwB,KAAKC,SAASC,OAAOC,aAC3Bs4F,oBAAoB,CAAEh7B,kBAAmBx+D,KAAKT,MAAMwB,KAAKu4F,YAAYr4F,OAAOs4F,aAC5E/xF,MAAMzF,IACC/B,KAAK6B,QAAQC,YACb9B,KAAK6B,QAAQC,UAAUksD,QAAQjsD,GAC/B/B,KAAK6B,QAAQC,UAAU03B,MAAM,yCAMhC,KAAAt5B,OAAS,KACtBF,KAAKT,MAAMuC,UAAUgE,YAAY,6CAEjC9F,KAAKT,MAAMU,YAAY0F,cAGV,KAAAtF,SAAW,KACxBL,KAAKT,MAAMuC,UAAUgE,YAAY,+CAEjC9F,KAAK05C,wBAGQ,KAAAp5C,SAAW,KACxBN,KAAKT,MAAMuC,UAAUgE,YAAY,+CAEjC9F,KAAK05C,wBAGQ,KAAAA,qBAAuB,KACpC,MAAMhzC,EAAgB1G,KAAKT,MAAMwB,KAAKC,SAASC,OAC3CyF,GAAiBA,EAAcyrB,cAAgB,EAE/CnyB,KAAKT,MAAMU,YAAYoG,UAGvBrG,KAAKT,MAAMU,YAAYozC,UAId,KAAAkL,UAAY,IAErBv+C,KAAKT,MAAMsC,QAAQU,QAAQm8C,KAAKC,iBAChC3+C,KAAKT,MAAMwB,KAAKu4F,YAAYr4F,QAC5BjB,KAAKT,MAAMwB,KAAKu4F,YAAYr4F,OAAOs4F,YACnCv5F,KAAKy5F,iBA6FI,KAAA7/C,iBAAoB91C,IACjC9D,KAAKT,MAAMuC,UAAUC,MAAM+B,GAC3B9D,KAAKT,MAAMU,YAAYyF,aAAY,GACnC1F,KAAKT,MAAMU,YAAY0F,aACvB3F,KAAKyX,SAAS,CACV3T,aAAAA,KAIS,KAAAg1C,YAAc,KAC3B94C,KAAKT,MAAMU,YAAYyF,aAAY,GACnC1F,KAAKyX,SAAS,CACV3T,aAAc,MAlclB9D,KAAK05F,iBAAmBr6F,EAAAA,YACxBW,KAAK25F,oBAAsB35F,KAAK25F,oBAAoBr/E,KAAKta,MACzDA,KAAK45F,qBAAuB55F,KAAK45F,qBAAqBt/E,KAAKta,MAC3DA,KAAK65F,eAAiB75F,KAAK65F,eAAev/E,KAAKta,MAC/CA,KAAK85F,QAAU95F,KAAK85F,QAAQx/E,KAAKta,MACjCA,KAAKgN,MAAQ,CAAE+sF,eAAgB/5F,KAAKg6F,WAAYC,uBAAuB,GAGjE,uBACN,MAAMpyF,EAAO7H,KAAKT,MAAMwB,KAAKC,SAASC,OAASjB,KAAKT,MAAMwB,KAAKC,SAASC,OAAOC,aAAa2G,UAAOzH,EACnG,IAAKyH,EACD,OAAO,EAKX,OADkBA,EAAKgrB,aAAe,GACnB,EAGb,kBACN,MAC6E,aAAxE7yB,KAAKT,MAAMwB,KAAKC,SAASC,QAAUjB,KAAKT,MAAMwB,KAAKC,SAAST,SACW,aAAvEP,KAAKT,MAAMwB,KAAKu4F,aAAet5F,KAAKT,MAAMwB,KAAKu4F,YAAY/4F,SAC8C,aAAzGP,KAAKT,MAAMwB,KAAKm5F,8BAAgCl6F,KAAKT,MAAMwB,KAAKm5F,6BAA6B35F,QAI5F,iBACN,OAAOP,KAAKT,MAAMwB,KAAKm5F,6BAA6Bj5F,QAChDjB,KAAKT,MAAMwB,KAAKm5F,6BAA6Bj5F,OAAOk5F,gCAClDn6F,KAAKT,MAAMwB,KAAKm5F,6BAA6Bj5F,OAAOk5F,gCACpD,EAGH,0BAAuB,IAAAl0F,EAC1B4F,OAAAA,EAAAA,EAAAA,CACI,IAAM7L,KAAK8L,YACX/L,gBACUC,KAAKF,SAInBiM,OAAAA,EAAAA,EAAAA,CACI,IAAM/L,KAAKT,MAAMwB,KAAKC,SAASC,QAAUjB,KAAKT,MAAMwB,KAAKC,SAASC,OAAOC,aAAa2G,KACtF9H,UACIC,KAAKo6F,oBAIbruF,OAAAA,EAAAA,EAAAA,CACI,IAAM/L,KAAKT,MAAMwB,KAAKu4F,YAAYr4F,OAClClB,UACIC,KAAKq6F,mBAIsB,QAAnCp0F,EAAIjG,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAgF,GAA/BA,EAAiCmG,4CACjCL,OAAAA,EAAAA,EAAAA,CACI,SAAA3F,EAAA,OAAqC,QAArCA,EAAMpG,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAmF,OAAA,EAA/BA,EAAiCkG,eACvCA,IACQA,GAAiBA,EAAcC,gBAAkBC,EAAAA,cAAcsrD,iBAAmBxrD,EAAcxI,cAChG9D,KAAK45C,iBAAiBttC,EAAcxI,gBAKhDiI,OAAAA,EAAAA,EAAAA,CACI,SAAA3D,EAAA,OAAqC,QAArCA,EAAMpI,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAmH,OAAA,EAA/BA,EAAiCsE,oBACvCA,IACQA,IAAuBC,EAAAA,eAAemrD,iBACtClrD,OAAAA,EAAAA,EAAAA,CAAqB5M,KAAKH,iBAAkBG,KAAKT,MAAMsC,QAAQuH,kBAO5EyD,sBAAsBC,EAAwCC,GACjE,OAAI/M,KAAKgN,QAAUD,GAAa/M,KAAKT,MAAMwB,OAAS+L,EAAU/L,KAM3DkM,SACH,MAAM,UACF9K,EAAS,WACTiN,EACAnP,aAAa,SAAEyN,EAAQ,QAAEF,IACzBxN,KAAKT,MAET,GAAIS,KAAKT,MAAMsC,QAAQU,QAAQm8C,KAAK+D,cAAkD,IAAlCC,EAAAA,sBAAsB43C,QAEtE,OADAt6F,KAAKT,MAAMsC,QAAQC,UAAUgE,YAAY,gEAClC,KAGX,GACI9F,KAAKT,MAAMwB,KAAKu4F,aAChBt5F,KAAKT,MAAMwB,KAAKu4F,YAAYr4F,QAC5BjB,KAAKT,MAAMwB,KAAKu4F,YAAYr4F,OAAOs4F,YACnCv5F,KAAKy5F,iBACP,CACE,MAAMH,EAAct5F,KAAKT,MAAMwB,KAAKu4F,YAAYr4F,OAC1CyF,EAAgB1G,KAAKT,MAAMwB,KAAKC,SAASC,OAC/C,IAAI2lD,GAAgB,EACpB,MAAM9iD,EAAe9D,KAAKgN,MAAMlJ,aAEhC,GAAI0J,EAAS,CACT,IAAK9G,GAAiD,IAAhCA,EAAcyrB,cAChC,OAAO,KAEXy0B,GAAgB,EAEpB,MAAMtkD,EAAgBtC,KAAKT,MAAMsC,QAAQU,QAAQC,QAwHjD,OAAO4M,EAvHQpB,EAAAA,EAAA,GACRhO,KAAKT,OAAK,IACbM,iBAAkBG,KAAKH,iBACvBwO,UAAW,CACPu4C,cAAAA,EACAC,kBAAmBr5C,GAEvBU,MAAOR,GAAY5J,GAAgBzE,EAAAA,cAAC8O,EAAAA,EAActL,OAAAC,OAAA,GAAK,CAAEY,MAAOvB,EAAUmB,kBAAmBM,QAASE,KACtG2iD,gBAAiB,CACb/3C,YAAa1O,KAAKT,MAClBmD,UAAWkiB,GAAAA,CACP5kB,KAAK2b,gBACL,CAAE,CAAI3b,KAAK2b,gBAAR,aAAqCirC,GACxC5mD,KAAKT,MAAMiB,OAAOkC,YAG1BgkD,YAAa,CACT5hC,QAASzlB,EAAAA,cAACk7F,EAAAA,QAAO,CAACC,WAAW,KAAK93F,UAAc1C,KAAK2b,gBAAR,YAAoCvK,KAAMjP,EAAUs4F,qBACjGl0C,kBACIlnD,EAAAA,cAACq7F,EAAAA,EAAa,CAACh4F,UAAc1C,KAAK2b,gBAAR,SAAiCvK,KAAMjP,EAAUw4F,2BAE/EzlE,OACI71B,EAAAA,cAAC2D,EAAAA,eAAc,CACXN,UAAc1C,KAAK2b,gBAAR,kBACX3Z,GAAIhC,KAAKT,MAAMyC,GACfC,SAAUjC,KAAKT,MAAM0C,SACrBJ,QAAS7B,KAAKT,MAAMsC,QACpBd,KAAM,CAAEqB,MAAO,CAAEa,wBAAyByD,GAAiBA,EAAcyrB,gBACzEhvB,cAAcb,MAAAA,OAAa,EAAbA,EAAec,WAAY,MAIrDujD,WAAY,CACR7hC,QAASzlB,EAAAA,cAACk7F,EAAAA,QAAO,CAACC,WAAW,KAAK93F,UAAc1C,KAAK2b,gBAAR,YAAoCvK,KAAMjP,EAAUs4F,qBACjGp1C,OAAQ,CACJ7hD,IAAKo3F,EAAAA,OACLl4F,UAAc1C,KAAK2b,gBAAR,WACXk/E,iBAAkB76F,KAAK86F,gBACvBC,UAAc/6F,KAAK2b,gBAAR,gBACXq/E,WAAeh7F,KAAK2b,gBAAR,iBACZs/E,eAAgB,OAEpB71C,WAAY/lD,EAAAA,cAACq7F,EAAAA,EAAa,CAACh4F,UAAc1C,KAAK2b,gBAAR,gBAAwCvK,KAAMkoF,EAAYC,YAAc,KAC9Gj0C,aACIg0C,EAAY4B,cACZ5B,EAAY4B,aAAaj3F,IAAI,CAACk3F,EAAQj3F,IAC3BlE,KAAKo7F,oBAAoBD,EAAQh5F,EAAUk5F,qBAAsBl5F,EAAUm5F,6BAE1F/1C,uBAAwB,CACpB7iD,UAAc1C,KAAK2b,gBAAR,YAEf6pC,8BAA+B,CAC3B9iD,UAAc1C,KAAK2b,gBAAR,oBAEf8pC,mBACIpmD,EAAAA,cAACk8F,EAAAA,EAAc,CACX74F,UAAc1C,KAAK2b,gBAAR,iBACXvK,KAAMjP,EAAUq5F,0BAChB1wE,QAAY9qB,KAAKT,MAAMyC,GAAd,WAGjB0jD,mBACIrmD,EAAAA,cAACo8F,EAAAA,EAAc,CACX/4F,UAAc1C,KAAK2b,gBAAR,iBACXhX,SAAU3E,KAAK65F,eACfn4B,OAAQ1hE,KAAK85F,QACb7pF,KAAK,SACLqxD,KAAK,MACL/8D,MAAOvE,KAAKgN,MAAM+sF,eAClB3kE,IAAK,EACL6hB,IAAKj3C,KAAKg6F,WACVz4B,aAAcvhE,KAAKg6F,WACnBx4B,aAAc,EACdC,aAAczhE,KAAKgN,MAAM+sF,eACzB/3F,GAAOhC,KAAKT,MAAMyC,GAAd,WAGZ2jD,yBACItmD,EAAAA,cAAC2F,EAAAA,OAAM,CACHtC,UAAc1C,KAAK2b,gBAAR,kBACXjY,MAAO1D,KAAKT,MAAM4C,UAAUu5F,gCAC5Bv2F,QAASnF,KAAK25F,oBACdz0F,SACIlF,KAAKgN,MAAM+sF,eAAiB/5F,KAAKg6F,YACjCh6F,KAAKgN,MAAM+sF,gBAAkB,GAC7B/iE,MAAMh3B,KAAKgN,MAAM+sF,iBACjB/5F,KAAKgN,MAAMitF,uBAGdj6F,KAAKT,MAAM4C,UAAUu5F,iCAG9B91C,kBAAmBl/C,GAAiBA,EAAcyrB,cAAgB,EAClE0zB,yBACIxmD,EAAAA,cAACq7F,EAAAA,EAAa,CAACh4F,UAAc1C,KAAK2b,gBAAR,iBAAyCvK,KAAMjP,EAAUw4F,2BAEvF70C,0BACIzmD,EAAAA,cAAC2D,EAAAA,eAAc,CACXN,UAAc1C,KAAK2b,gBAAR,kBACX3Z,GAAIhC,KAAKT,MAAMyC,GACfC,SAAUjC,KAAKT,MAAM0C,SACrBJ,QAAS7B,KAAKT,MAAMsC,QACpBd,KAAM,CAAEqB,MAAO,CAAEa,wBAAyByD,GAAiBA,EAAcyrB,gBACzEhvB,cAAcb,MAAAA,OAAa,EAAbA,EAAec,WAAY,KAGjD2iD,0BACI1mD,EAAAA,cAAC2F,EAAAA,OAAM,CACHtC,UAAU,iCACVgB,MAAO1D,KAAKT,MAAM4C,UAAUw5F,iCAC5Bx2F,QAASnF,KAAK45F,qBACd9M,SAAU9sF,KAAK05F,kBAEd15F,KAAKT,MAAM4C,UAAUw5F,sCAS1C,OADA37F,KAAKT,MAAMsC,QAAQC,UAAUC,MAAM,yDAC5B,KAGH+4F,gBACJ,MAAMx4F,EAAgBtC,KAAKT,MAAMsC,QAAQU,QAAQC,QACjD,OACInD,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAAA,KAAGqD,UAAc1C,KAAK2b,gBAAR,kBAA0C3b,KAAKT,MAAM4C,UAAUw4F,0BAC7Et7F,EAAAA,cAAC2D,EAAAA,eAAc,CACXN,UAAc1C,KAAK2b,gBAAR,kBACX3Z,GAAIhC,KAAKT,MAAMyC,GACfC,SAAUjC,KAAKT,MAAM0C,SACrBJ,QAAS7B,KAAKT,MAAMsC,QACpBd,KAAM,CAAEqB,MAAO,CAAEa,wBAAyBjD,KAAKg6F,aAC/C72F,cAAcb,MAAAA,OAAa,EAAbA,EAAec,WAAY,MAMjDg4F,oBACJQ,EACAjB,EACAW,GAEA,MAAO,CACHx1E,IAAK81E,EAAMC,eAAiB,GAC5B51C,2BAA4B,CACxBvjD,UAAc1C,KAAK2b,gBAAR,aAEfjY,MAAOrE,EAAAA,cAACq7F,EAAAA,EAAa,CAACh4F,UAAc1C,KAAK2b,gBAAR,kBAA0CvK,KAAMwqF,EAAM74F,cACvFmjD,oBAAqB7mD,EAAAA,cAACq7F,EAAAA,EAAa,CAACh4F,UAAc1C,KAAK2b,gBAAR,sBAA8CvK,KAAMupF,IACnGx0C,aACI9mD,EAAAA,cAACq7F,EAAAA,EAAa,CAACh4F,UAAc1C,KAAK2b,gBAAR,mBAA2CvK,MAAOwqF,GAASA,EAAME,cAAep3E,aAE9G0hC,mBAAoB/mD,EAAAA,cAACq7F,EAAAA,EAAa,CAACh4F,UAAc1C,KAAK2b,gBAAR,qBAA6CvK,KAAMkqF,IACjGj1C,eACIhnD,EAAAA,cAACq7F,EAAAA,EAAa,CACVh4F,UAAc1C,KAAK2b,gBAAR,mBACXvK,MAAOwqF,GAASA,EAAMG,oBAAqBr3E,cA0EnD,4BACJ1kB,KAAKT,MAAMuC,UAAUgE,YAAY,2DAEjC,MAAMY,EAAgB1G,KAAKT,MAAMwB,KAAKC,SAASC,OAE1CyF,IAIL1G,KAAK84C,oBACCpyC,EAAcm+C,oBAAoB,CAAE7L,UAAWhQ,OAAOgzD,WAAWh8F,KAAKgN,MAAM+sF,eAAer1E,cACjG1kB,KAAKyX,SAAS,CACVwiF,uBAAuB,KAIvB,6BACJj6F,KAAKT,MAAMuC,UAAUgE,YAAY,4DAEjC,MAAMY,EAAgB1G,KAAKT,MAAMwB,KAAKC,SAASC,OAE1CyF,IAIL1G,KAAK84C,oBACCpyC,EAAcm+C,oBAAoB,CAAE7L,UAAW,IACrDh5C,KAAKyX,SAAS,CACVsiF,eAAgB,KAIhBF,eAAepvF,GACnB,MAAMlG,EAAQkG,EAAMC,cAAcnG,MAClCvE,KAAKyX,SAAS,CAAEsiF,eAAgBx1F,EAAMlD,OAAS,EAAI2nC,OAAOzkC,GAASykC,OAAOgzD,WAAWz3F,GAAQ01F,uBAAuB,IAGhHH,QAAQrvF,GACZ,MAAMwxF,EAAMjzD,OAAOgzD,WAAWvxF,EAAMC,cAAcnG,OAAO45D,QAAQ,GAC3Dv3B,EAAU2uB,SAAS2mC,eAAkBl8F,KAAKT,MAAMyC,GAAd,UACpC4kC,GAAWq1D,IACXr1D,EAAQriC,MAAQ03F,EAChBj8F,KAAKyX,SAAS,CAAEsiF,eAAgB/wD,OAAOgzD,WAAWC,MAIlD5B,iBACAr6F,KAAKT,MAAMU,YAAY2Q,YAAc5Q,KAAKu+C,cAC1Cv+C,KAAKo6F,kBACLp6F,KAAKT,MAAMU,YAAY0F,cAIvBy0F,kBACJ,MAAMn4C,EAAOjiD,KAAKT,MAAMwB,KAAKu4F,YAAYr4F,OACnCD,EAAWhB,KAAKT,MAAMwB,KAAKC,SAASC,OACpC4G,EAAO7H,KAAKT,MAAMwB,KAAKC,SAASC,OAASjB,KAAKT,MAAMwB,KAAKC,SAASC,OAAOC,aAAa2G,UAAOzH,EAC7FkC,EAAgBtC,KAAKT,MAAMsC,QAAQU,QAAQC,QACjD,GAAIy/C,GAAQA,EAAKs3C,YAAc1xF,GAAQvF,EAAe,CAClD,MAAMa,EAAeb,EAAcc,UAAY,GACzC+4F,EAAqBC,OAAAA,EAAAA,4DAAAA,CAA4Dv0F,EAAKU,GAAI05C,EAAKs3C,WAAYp2F,GAIjHg5F,EAAmBE,OAAO3/D,QAAQtlB,YAAc,MAEhDklF,OAAAA,EAAAA,oBAAAA,CAAoDH,EAAoBn8F,KAAKT,MAAMsC,QAAQuH,eACtFrC,KAAKhH,MAAAA,IAAe,IAAAw8F,EACjBv8F,KAAKT,MAAMsC,QAAQuH,cAAc+pC,OAC7B,IAAIqpD,EAAAA,qCAAqCx8F,KAAKT,MAAMsC,QAAQU,QAAQ4V,aACpEgjF,GAEJ,MAAMsB,EAAqD,QAAzCF,EAAGpB,EAAOhB,uCAA+B,IAAAoC,EAAAA,EAAIv8F,KAAKq5F,sBAGhEr4F,GAAYA,EAASmxB,cAAgBsqE,SAC/Bz7F,EAAS6jD,oBAAoB,CAAE7L,UAAWyjD,IAGpDz8F,KAAKyX,SAAS,CAAEsiF,eAAgB0C,EAAcxC,uBAAuB,MAExEzyF,MAAMzF,IACH/B,KAAKT,MAAMsC,QAAQuH,cAActH,UAAUy3B,UAAUx3B,GACrD/B,KAAKT,MAAMsC,QAAQuH,cAActH,UAAU03B,MAAM,wDAxavDnqB,OAAAA,EAAAA,EAAAA,CAAA,CAATE,EAAAA,GAAQ,qCAWCF,OAAAA,EAAAA,EAAAA,CAAA,CAATE,EAAAA,GAAQ,gCAQCF,OAAAA,EAAAA,EAAAA,CAAA,CAATE,EAAAA,GAAQ,+BA2ZTF,OAAAA,EAAAA,EAAAA,CAAA,CADCG,EAAAA,GAAM,uCAhcLsoD,EAAezoD,OAAAA,EAAAA,EAAAA,CAAA,CAFpBI,EAAAA,gBACAC,EAAAA,GACKooD,GAkdSA,EAAAA,QAAAA,0mBCvhBR,MAAMhR,EAAmDl3C,IAAA,IAAC,cAAE+S,EAAa,MAAEC,EAAK,SAAEzN,GAAUvF,EAAA,OAC/FvQ,EAAAA,cAAC6qB,EAAAA,KAAIrnB,OAAAC,OAAA,GAAK6f,GACLC,EACAzN,IAII4xC,EAAmD38B,IAAA,IAAC,cAAErH,EAAa,MAAEH,GAAOwH,EAAA,OAAK/qB,EAAAA,cAAC6qB,EAAAA,KAAIrnB,OAAAC,OAAA,GAAKigB,GAAgBH,IAE3GokC,EAAyC9B,IAAA,IAAC,SAAE9hC,EAAQ,KAAEC,EAAI,cAAEC,EAAa,cAAEC,GAAe2hC,EAAA,OACnG7lD,EAAAA,cAAC6qB,EAAAA,KAAIrnB,OAAAC,OAAA,GAAKsgB,GACLC,EACAC,GAAiBjkB,EAAAA,cAACynD,EAAsBjkD,OAAAC,OAAA,GAAKwgB,IAC7CC,GAAiBlkB,EAAAA,cAAC0nD,EAAsBlkD,OAAAC,OAAA,GAAKygB,MAIzC0jC,EAA2DC,IAAA,IAAC,sBAAEviC,EAAqB,aAAEE,EAAY,QAAEC,EAAO,UAAEC,GAAWmiC,EAAA,OAChI7nD,EAAAA,cAAC6qB,EAAAA,KAAIrnB,OAAAC,OAAA,GAAK6hB,GACLG,EACDzlB,EAAAA,cAAC6qB,EAAAA,KAAIrnB,OAAAC,OAAA,GAAK+hB,GACLE,EAAU9gB,IAAIkjD,GACX9nD,EAAAA,cAAC2nD,EAAiBnkD,OAAAC,OAAA,CAACgjB,IAAKqhC,EAAS5yC,QAAY4yC,QAMhDC,EAA6EC,IAAA,IAAC,sBACvF1iC,EAAqB,aACrBE,EAAY,QACZC,EAAO,UACPC,EAAS,eACT2B,EAAc,mBACdD,GACH4gC,EAAA,OACGhoD,EAAAA,cAAC6qB,EAAAA,KAAIrnB,OAAAC,OAAA,GAAK6hB,GACL8B,EACAC,EACA5B,EACDzlB,EAAAA,cAAC6qB,EAAAA,KAAIrnB,OAAAC,OAAA,GAAK+hB,GACLE,EAAU9gB,IAAIkjD,GACX9nD,EAAAA,cAACioD,EAAmCzkD,OAAAC,OAAA,CAACgjB,IAAKqhC,EAAS5yC,QAAY4yC,QAMlEG,EAA2DC,IAAA,IAAC,SAAEnkC,EAAQ,KAAEC,EAAI,cAAEC,EAAa,cAAEC,GAAegkC,EAAA,OACrHloD,EAAAA,cAAC6qB,EAAAA,KAAIrnB,OAAAC,OAAA,GAAKsgB,GACLC,EACAE,GAAiBlkB,EAAAA,cAAC0nD,EAAsBlkD,OAAAC,OAAA,GAAKygB,MAIzCikC,EAAqEC,IAAA,IAAC,cAAE9kC,EAAa,MAAEC,EAAK,SAAEzN,GAAUsyC,EAAA,OACjHpoD,EAAAA,cAAC6qB,EAAAA,KAAIrnB,OAAAC,OAAA,GAAK6f,GACLC,EACAzN,IAIIuyC,EAA2CC,IAAA,IAAC,UACrD3gC,EAAS,OACTC,EAAM,QACNnC,EAAO,SACPqC,EAAQ,eACRC,EAAc,aACdC,EAAY,cACZC,EAAa,iCACbC,GACHogC,EAAA,OACGtoD,EAAAA,cAAC6qB,EAAAA,KAAIrnB,OAAAC,OAAA,GAAKkkB,GACN3nB,EAAAA,cAAC6qB,EAAAA,KAAIrnB,OAAAC,OAAA,GAAKmkB,GACLnC,EACAqC,QAEiC/mB,IAArCmnB,GAAkDH,GAAkB/nB,EAAAA,cAAC4nD,EAAsBpkD,OAAAC,OAAA,GAAKskB,SAC3DhnB,IAArCmnB,GAAkDD,GAAiBjoB,EAAAA,cAAC4nD,EAAsBpkD,OAAAC,OAAA,GAAKwkB,SAC1DlnB,IAArCmnB,GAAkDF,GAAgBhoB,EAAAA,cAAC4nD,EAAsBpkD,OAAAC,OAAA,GAAKukB,SACzDjnB,IAArCmnB,EACKA,EAAiCtjB,IAAI,CAACof,EAAMnf,IACjC7E,EAAAA,cAAC+nD,EAAwCvkD,OAAAC,OAAA,GAAKugB,EAAI,CAAEyC,IAAK5hB,MAEpE,OAIR0jD,EAAiDroD,IACnD,MAAM,QAAEulB,EAAO,MAAEgjC,GAAUvoD,EAC3B,OACIF,EAAAA,cAAA,OAAKqD,UAAU,6BACVoiB,EACDzlB,EAAAA,cAAA,OAAKqD,UAAU,4BACVolD,GACGzoD,EAAAA,cAAAA,EAAAA,SAAA,KACKyoD,EAAMl0B,SACNk0B,EAAMrzB,SACNqzB,EAAM5zB,YACN4zB,EAAMh0B,IACNg0B,EAAM9zB,eAQzB+zB,EAA4DF,IAAA,IAAC,QAAE/iC,EAAO,MAAEgjC,GAAOD,EAAA,OACjFxoD,EAAAA,cAAA,OAAKqD,UAAU,+BACVoiB,EACDzlB,EAAAA,cAAA,OAAKqD,UAAU,8BACVolD,GACGzoD,EAAAA,cAAAA,EAAAA,SAAA,KACKyoD,EAAMG,SACNH,EAAM9yB,SACN8yB,EAAMvyB,QACNuyB,EAAM9zB,eA2LZk0B,EAAAA,QApLoC3oD,IAC/C,MAAOm9F,EAAiBC,GAAsBt9F,EAAAA,SAAe,IAEtDgxB,EAAau4D,GAAkBvpF,EAAAA,YAChC,iCACFyK,EAAgC,+CAChCkhB,EAA8C,QAC9Cm9B,EAAO,cACPC,EAAa,YACb1sC,EAAW,cACX2sC,EAAa,eACblnD,EAAc,UACdmnD,EAAS,UACTC,EAAS,iBACTC,EAAgB,UAChBC,EAAS,uBACTE,EAAsB,wBACtBC,EAAuB,kBACvBC,EAAiB,QACjB9Z,EAAO,MACP7gC,EAAK,MACLxK,EAAK,WACLolD,EAAU,aACVC,EAAY,sBACZC,EAAqB,iBACrBC,EAAgB,mBAChBC,EAAkB,gCAClBE,EAA+B,iBAC/BvpD,GACAN,EACJF,EAAAA,UAAgB,KACZ,MAAMgxB,EAAc3D,eAAeC,QAAQ,iBAC3Ci8D,EAAev4D,IAChB,CAAC9wB,IAcJ,OAJAF,EAAAA,UAAgB,KARSU,WAAW,IAAA68F,EAChC,MAAM9zE,EAAM,CAAE3f,cAAe5J,EAAMsC,QAAQuH,eAGrC5G,QAAgBq6F,OAAAA,EAAAA,EAAAA,CAAsB/zE,EAAkC,QAA/B8zE,EAAEr9F,EAAMsC,QAAQU,QAAQC,eAAO,IAAAo6F,OAAA,EAA7BA,EAA+BxoF,UAChFuoF,EAAmBn6F,EAAQs6F,kBAItBC,IACN,IAEqB,IAApBL,EAEIr9F,EAAAA,cAAA,OAAKgpB,MAAO,CAAEI,OAAQ,SAClBppB,EAAAA,cAAA,OAAKgpB,MAAO,CAAE20E,WAAY,SACtB39F,EAAAA,cAACqqB,EAAAA,EAAK,KAEFrqB,EAAAA,cAAA,OAAKgpB,MAAO,CAAE20E,WAAY,QAAUz9F,EAAM4C,UAAU86F,yBAMzC,IAApBP,EAEHr9F,EAAAA,cAAA,OAAKgpB,MAAO,CAAEC,QAAS,OAAQsG,MAAO,OAAQrG,eAAgB,eAAgB6G,UAAW,OAAQigB,aAAc,SAC3GhwC,EAAAA,cAAC2P,EAAAA,QAAO,CAACtM,UAAU,yCAKvBrD,EAAAA,cAACsrB,EAAAA,OAAM9nB,OAAAC,OAAA,GAAKslD,EAAa,CAAEx9B,IAAK/qB,KAC1BwoD,IAAkBe,GAAmC/pD,EAAAA,cAAC6qB,EAAAA,KAAIrnB,OAAAC,OAAA,GAAK4Y,GAAchY,IAC7E2kD,GACEv+C,GACAkhB,IACC9c,IACA6gC,GAAW1vC,EAAAA,cAAC2P,EAAAA,QAAO,CAACtM,UAAU,wCAEnCrD,EAAAA,cAAA,OAAKgpB,MAAO,CAAEuG,MAAO,SAAW1gB,GAASA,EAAM3O,MAAMqE,SAAWvE,EAAAA,cAACqqB,EAAAA,EAAK,KAAExb,EAAM3O,MAAMqE,WAElFykD,GACEhpD,EAAAA,cAAC6qB,EAAAA,KAAIrnB,OAAAC,OAAA,GAAKwlD,GACLvZ,EAEAoZ,GACG9oD,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAAC6qB,EAAAA,KAAIrnB,OAAAC,OAAA,GACGylD,EAAS,CACblgC,MAAO,CACHtgB,OAAQxI,EAAMsqD,qBAAuBtqD,EAAMiB,OAAO08F,2BAA6B,YAAc,MAGhG9zC,EACAA,GAAmC/pD,EAAAA,cAAC6qB,EAAAA,KAAIrnB,OAAAC,OAAA,GAAK4Y,GAAchY,GAC3DolD,EACDzpD,EAAAA,cAAC6qB,EAAAA,KAAIrnB,OAAAC,OAAA,GAAK8lD,GAA0BM,GACpC7pD,EAAAA,cAAC6qB,EAAAA,KAAIrnB,OAAAC,OAAA,GAAK0lD,GACLn4B,GACmB,MAAhBA,GACgB,QAAhBA,GACgB,QAAhBA,GACgB,QAAhBA,GACIhxB,EAAAA,cAAC+xB,EAAAA,EACG,CACAjsB,QAASA,IAAM8jD,EAAiB1pD,MAAMyrD,aAEtC9lD,WAAU3F,EAAMsqD,sBAA8BZ,EAAiB1pD,MAAM2yD,cACrE7pC,MAAO,CAAEuG,MAAO,SAGfrvB,EAAMsqD,oBACHxqD,EAAAA,cAAA,OACIgpB,MAAO,CACHuG,MAAO,OACPnG,OAAQ,OACRH,QAAS,eACT86D,SAAU,WACV+Z,OAAQ,EACRpuE,aAAc,MACdquE,YAAa,wBACbC,YAAa,QACbC,YAAa,MACbC,eAAgB,UAChB/0D,UAAW,6BACXg1D,UAAW,oCAInBj+F,EAAM4C,UAAUiyD,kBAMxC/0D,EAAAA,cAAC6qB,EAAAA,KAAIrnB,OAAAC,OAAA,GAAK2lD,GACJtnD,EAEI6nD,GAAyB3pD,EAAAA,cAAC0oD,EAAuBllD,OAAAC,OAAA,GAAKkmD,IADtDD,GAAgB1pD,EAAAA,cAACuoD,EAAqB/kD,OAAAC,OAAA,GAAKimD,IAEjD1pD,EAAAA,cAAC6qB,EAAAA,KAAIrnB,OAAAC,OAAA,GAAK6lD,GACNtpD,EAAAA,cAAC6qB,EAAAA,KAAIrnB,OAAAC,OAAA,GAAK8lD,GAA0BM,GACnC74B,GACmB,MAAhBA,GACgB,QAAhBA,GACgB,QAAhBA,GACgB,QAAhBA,GACIhxB,EAAAA,cAAC+xB,EAAAA,EACG,CACAjsB,QAASA,IAAM8jD,EAAiB1pD,MAAMyrD,aAEtC9lD,UAAW+jD,EAAiB1pD,MAAM2yD,cAClC7pC,MAAO,CAAEuG,MAAO,SAEfrvB,EAAM4C,UAAUiyD,kBAKpC70D,EAAMsqD,qBAAuBtqD,EAAMiB,OAAO08F,4BACvC79F,EAAAA,cAAA,OACIgpB,MAAO,CACH+6D,SAAU,WACV95C,IAAK,IACLH,KAAM,IACNva,MAAO,OACPnG,OAAQ,OACRH,QAAS,OACTC,eAAgB,SAChB4G,WAAY,WAGhB9vB,EAAAA,cAAC2P,EAAAA,QAAO,CAACtM,UAAU,2CAO1C2lD,GAAiBQ,uCCtT1B,IAAKnG,EARb,kCAQC,SAAYA,GACTA,EAAAA,EAAA,yCACAA,EAAAA,EAAA,mCACAA,EAAAA,EAAA,qBACAA,EAAAA,EAAA,uBACAA,EAAAA,EAAA,yCACAA,EAAAA,EAAA,uBANH,CAAYA,IAAAA,EAAqB,wCCRlC,+gVCqFA,IAAamQ,EAAb,cAA+CxzD,EAAAA,cAA/CC,cAAA,IAAAqT,EAAA,2BA0HW,KAAA3F,MAAyC,CAC5C2iF,4BAA4B,GAGf,KAAAh0E,gBAA0B,iCAE1B,KAAAqmD,UAAqC3iE,EAAAA,YAErC,KAAAQ,iBAAiDR,EAAAA,YAyOjD,KAAAgjE,gBAAkBtiE,MAAAA,IAA6C,IAAA6vF,EAAAmH,EAC5E,IAAI91F,EACJ,IACI,GAA0B,iBAAfwJ,EAAM1J,KACb,OAEJE,EAASqK,KAAKC,MAAMd,EAAM1J,MAC5B,MAAOgB,GAEL,YADA/B,KAAK6vF,iBAAiB9tF,GAI1B,MAAM+tF,EAAyB9vF,KAAKT,MAAMiB,OAAOsvF,uBAE3CC,EAAkE,QAAhDH,EAAG5vF,KAAKT,MAAMwB,KAAKivF,uBAAuB/uF,cAAM,IAAA2uF,OAAA,EAA7CA,EAA+C7uB,mBAE1E,IAAK9/D,IAAWA,EAAOgP,MAAS6/E,GAA0B7uF,EAAOe,KAAO+tF,EAAqB,CAC/B,IAADiH,EAAzD,GAAIlH,GAA0B7uF,EAAOgP,OAAShP,EAAOe,GACjDhC,KAAKT,MAAMuC,UAAUC,MAAM,sFAC3BmuB,QAAQnuB,OACiC,QAArCi1F,EAAGh3F,KAAKT,MAAMiB,OAAO0wF,wBAAgB,IAAA8F,EAAAA,EACjC,IADJ,uFAKR,OAGJ,MAAM,KAAE/mF,EAAI,MAAE1L,EAAK,QAAE0rF,GAAU,GAAUhvF,EAGzC,IAAIgvF,EAMJ,OAFAjwF,KAAKT,MAAMuC,UAAUgE,YAAY,sBAAwD,QAAxDixF,EAAsB/2F,KAAKT,MAAMiB,OAAO0wF,wBAAgB,IAAA6F,EAAAA,EAAI,8BAA8B9mF,MAEnHA,GACJ,KAAK85E,EAAAA,EAAgCmG,OAEjClwF,KAAKyX,SAAS,CACVk4E,4BAA4B,EAC5BQ,uBAAwB5rF,IAI5B,MAAMX,EAAU0mF,OAAAA,EAAAA,EAAAA,CAA8BtqF,KAAK06C,WAOnD,OANA16C,KAAK00F,oBAAoB9wF,GAAS,QAE9B5D,KAAKT,MAAMiB,OAAOywF,kBAClBjxF,KAAKT,MAAMU,YAAY0F,cAI/B,KAAKokF,EAAAA,EAAgCqG,OAEjC,YADApwF,KAAKqwF,oBAAoB9rF,GAE7B,KAAKwlF,EAAAA,EAAgCuG,WAEjC,kBADMtwF,KAAKuwF,wBAAwBhsF,IAEvC,KAAKwlF,EAAAA,EAAgCrgE,MAEjC,YADA1pB,KAAKwwF,mBAAmBjsF,GAE5B,KAAKwlF,EAAAA,EAAgC0G,SAEjC,YADAzwF,KAAK0wF,sBAAsBnsF,GAE/B,KAAKwlF,EAAAA,EAAgC4G,YAEjC,YADA3wF,KAAK4wF,kBAAiB,GAE1B,KAAK7G,EAAAA,EAAgC8G,YAEjC,YADA7wF,KAAK4wF,kBAAiB,GAE1B,QACI,SAMK,KAAAP,oBAAsB,SAACS,GAAmF,IAAAlmC,EAAAmmC,EAAA7zB,EAAA,IAAzD8zB,EAAA/9E,UAAA5R,OAAA,QAAAjB,IAAA6S,UAAA,IAAAA,UAAA,GAC9D,MACIlS,MAAM,SAAEC,EAAQ,uBAAEgvF,GAClBxvF,QAAQ,iBAAEywF,EAAgB,iBAAEC,GAC5BrvF,SAAS,cAAEuH,GACXjH,WAAW,8BAAEgvF,IACbx+E,EAAKpT,MAEH+I,GAAwB,QAAfsiD,EAAA5pD,EAASC,cAAM,IAAA2pD,OAAA,EAAfA,EAAiB1pD,aAAa2G,KAAKU,KAAM,GAClDwnF,EAAkD,QAAhCgB,EAAGf,EAAuB/uF,cAAM,IAAA8vF,OAAA,EAA7BA,EAA+BhwB,mBAEpDqwB,EAAQpjF,EAAA,CACVqjF,UAAWtlE,OAAAA,EAAAA,qBAAAA,CAAqB3iB,IAC5B2mF,GAAsB,CAAEhvB,mBAAoBgvB,IAGpD,GAAmB,QAAnB7yB,EAAIl8D,EAASC,cAAM,IAAAi8D,GAAfA,EAAiBlyC,+CAArB,CACI,MAAMqlC,EAAmD,CACrDkhC,WAAYT,EACZhwB,SAAUswB,GAGdpwF,EAASC,OACJuwF,8BAA8B,CAAE3gC,2BAA4BR,IAC5DtpD,KAAKhH,UACmC,IAADe,EAAA8wF,EAAAC,EAApC,GAAIb,EAC+B,QAA/BlwF,EAAA6R,EAAKpT,MAAMwB,KAAKC,SAASC,cAAM,IAAAH,GAA/BA,EAAiCI,aAAa+sD,YAAY,IAE1Dt7C,EAAKpT,MAAMU,YAAYyF,aAAY,GACnCiN,EAAKpT,MAAMU,YAAYoG,UACvBsM,EAAK8E,SAAS,CACVk6E,cAAe,KACf7tF,aAAc,OAElB6O,EAAKpT,MAAMU,YAAYmzC,sBAAqB,SAEvB,QAArBw+C,EAAM5wF,EAASC,cAAM,IAAA2wF,OAAA,EAAfA,EAAiB7rF,mCAAmC,CAAEC,iCAAiC,WACxE,QAArB6rF,EAAM7wF,EAASC,cAAM,IAAA4wF,OAAA,EAAfA,EAAiB3mC,qCAAqC,CAAEC,mCAAmC,UAC9F,GAAI8lC,EACPt+E,EAAKpT,MAAMU,YAAYyF,aAAY,GACnCiN,EAAKpT,MAAMU,YAAYoG,UACvBsM,EAAK8E,SAAS,CACVk6E,cAAe,KACf7tF,aAAc,OAElB6O,EAAKpT,MAAMU,YAAYmzC,sBAAqB,OACzC,CAAC,IAADq+C,EAIDC,EAHF,IACoD,KAAjC,QAAfD,EAAAzwF,EAASC,cAAM,IAAAwwF,OAAA,EAAfA,EAAiBK,8BAC+B,IAAhD9wF,EAASC,OAAO6P,4BAEhB6B,EAAKpT,MAAMU,YAAYozC,eACF,QAArBq+C,EAAM1wF,EAASC,cAAM,IAAAywF,OAAA,EAAfA,EAAiBxmC,qCAAqC,CAAEC,mCAAmC,UAEjGx4C,EAAKpT,MAAMU,YAAYyF,aAAY,GACnCiN,EAAKo/E,gBAAgBZ,MAIhC3pF,MAAMzH,MAAAA,UAEG4S,EAAKq/E,8BACXr/E,EAAKk9E,iBAAiB9tF,KAEzBkwF,QAAQ,KACLt/E,EAAK8E,SAAS,CAAEy6E,qBAAqB,WAMjDC,OAAAA,EAAAA,qCAAAA,CAAqC,CAAEhpF,cAAewJ,EAAKpT,MAAMsC,QAAQuH,eAAiB0nF,EAAkB,GAAIxoF,EAAQ8oF,GACnHrqF,KAAKhH,MAAAA,IACF,MAAM,WAAEqyF,EAAU,qBAAEvyB,EAAoB,kBAAEtQ,GAAsBc,GAA2B,GAI3F,SAFM19C,EAAK0/E,mBAAmBxyB,GAE1BtQ,EACA58C,EAAK2/E,wBAAwB/iC,OAC1B,CACH,IAAKsQ,EAED,YADAltD,EAAKk9E,iBAAiB,IAAInmE,MAAM,kCAGpC,MAAMhjB,EAAgBiM,EAAKpT,MAAMwB,KAAKC,SAASC,OAC/C,GAAIyF,EAAe,CAIf,IAAKA,EAAco3D,WAAY,CAC3B,MAAMA,EACF+B,GACAA,EAAqBppC,eACrBopC,EAAqBppC,cAAcG,iBACnCknC,SACMp3D,EAAc49C,iBAAiB,CAAEC,cAAeuZ,IAI9D,IAAK+B,EAAqBrpC,WAAY,CAClC,MAAM+7D,QAAmB5/E,EAAKkrD,cAAcn3D,EAAco3D,YAAc,IACxE,IAAKy0B,EAAY,CACb,MAAMxwF,EAAQ,IAAI2nB,MAAM,6CAGxB,OAFA3nB,EAAMmO,KAAO,wBACbyC,EAAKk9E,iBAAiB9tF,GAI1B89D,EAAqBrpC,WAAa+7D,EAQD,IAAD1sF,EAApC,SALMa,EAAcs9C,iBAAiB,CAAEC,cAAemuC,UAChD1rF,EAAco9C,2BAA2B,CAAEC,wBAAyB8b,UACpEn5D,EAAc8rF,wBAAwB,CAAE9hC,qBAAsBwgC,IAGhEF,EAC+B,QAA/BnrF,EAAA8M,EAAKpT,MAAMwB,KAAKC,SAASC,cAAM,IAAA4E,GAA/BA,EAAiC3E,aAAa+sD,YAAY,IAG9Dt7C,EAAKpT,MAAMU,YAAYyF,aAAY,GACnCiN,EAAKpT,MAAMU,YAAYoG,UACvBsM,EAAK8E,SAAS,CACVk6E,cAAe,KACf7tF,aAAc,OAElB6O,EAAKpT,MAAMU,YAAYmzC,sBAAqB,OAIvD5rC,MAAMzF,IAEH4Q,EAAKq/E,8BACLr/E,EAAKskF,qBAAqBl1F,KAE7BkwF,QAAQ,KACLt/E,EAAK8E,SAAS,CACVy6E,qBAAqB,OAMpB,KAAA3B,wBAA0BxwF,MAAAA,IACvC,MAAM2G,EAAgB1G,KAAKT,MAAMwB,KAAKC,SAASC,OAC3CyF,SACMA,EAAc49C,iBAAiB,CAAEC,cAAeuZ,KAK7C,KAAA4yB,sBAAyB+B,IACtCzyF,KAAKyX,SAAS,CACVi7E,+BAA+B,EAC/BC,4BAA6BF,IAEjCzyF,KAAKT,MAAMU,YAAYyF,aAAY,GACnC1F,KAAK+sD,oBAGQ,KAAA6jC,iBAAoBgC,IACjC5yF,KAAKyX,SAAS,CAAEo7E,eAAgBD,KAGnB,KAAA/0B,cAAgB99D,iBAA+D,IAAxD+9D,EAAA7qD,UAAA5R,OAAA,QAAAjB,IAAA6S,UAAA,GAAAA,UAAA,GAAqB,GACzD,IACI,MAAMjM,QAAiBk7C,OAAAA,EAAAA,sBAAAA,CAAsB,CAAE/4C,cAAewJ,EAAKpT,MAAMsC,QAAQuH,eAAiB00D,EAAY3b,EAAAA,SAAS4b,SACvH,GAAI/2D,GAAYA,EAAS3F,OAAS,EAC9B,OAAO2F,EAAS,GAAGuoB,OAEzB,MAAOxtB,GACL4Q,EAAKpT,MAAMsC,QAAQC,UAAUC,MAAM,wCAAyCA,KAKnE,KAAA+wF,8BAAgC/yF,UAA0B,IAAAm3F,EACvE,MAAM,8BAAExE,EAA6B,4BAAEC,GAAgC3yF,KAAKgN,MAC5E,IAAK0lF,IAAkCC,EACnC,OAGJ,MAAMjsF,EAAgB1G,KAAKT,MAAMwB,KAAKC,SAASC,OAC3CyF,UACMA,EAAc8rF,wBAAwB,CAAE9hC,qBAAsB1wD,KAAKT,MAAMiB,OAAO0wF,yBAChFxqF,EAAcqsF,kBAAkB,UAChCrsF,EAAcssF,oCAAoC,CAAEC,kCAAkC,KAGhG,MAAMC,EAAe5nF,KAAKC,MAAMonF,IAC1B,IAAE/oE,EAAG,KAAE7oB,GAASmyF,EAChBnwC,EAAOwS,SAASntC,cAAc,QAEpC26B,EAAKowC,OAAS,OACdpwC,EAAKvzC,OAASoa,EAEd,IAAK,MAAMwpE,KAAgBvwF,OAAOgjB,KAAK9kB,GAAO,CAC1C,MAAM6lC,EAAU2uB,SAASntC,cAAc,SACvCwe,EAAQ12B,KAAOkjF,EACfxsD,EAAQriC,MAAQxD,EAAKqyF,GACrBrwC,EAAKqgB,YAAYx8B,GAGrB2uB,SAASsjB,KAAKzV,YAAYrgB,GAC1BA,EAAKswC,SAELrzF,KAAKT,MAAMuC,UAAUgE,YACjB,qEAAuG,QAAvGoxF,EAAqEl3F,KAAKT,MAAMiB,OAAO0wF,wBAAgB,IAAAgG,EAAAA,EAAI,QAIlG,KAAA1G,mBAAsBjsF,IACnC,MACIpC,WAAW,0BAAEmxF,EAA4B,mEACzCtzF,KAAKT,MACJgF,GAA0B,IAAjBA,EAAMlD,OAKpBrB,KAAK+xF,gBAAgBxtF,EAAMN,IAAKsvF,GAAgCA,EAAOC,SAASzU,KAAK,OAHjF/+E,KAAK+xF,gBAAgBuB,IAOZ,KAAAxzF,KAAO,KAAW,IAAA2zF,EAAAC,EAAAE,EAAAwB,EAC/B,MACIr0F,MAAM,SAAEC,GAAU,OAClBR,GACAR,KAAKT,MAEHo0F,EAAwD,QAAfF,EAAAzyF,EAASC,cAAM,IAAAwyF,GAAfA,EAAiBlpF,yBAA2B,QAAU,WAclG,IAAD4pF,EAHF,GATAn0F,KAAKT,MAAMU,YAAYH,KAAK,CACxBI,OAAQF,KAAKE,OACbG,SAAUL,KAAKK,SACfC,SAAUN,KAAKM,SACfysD,iBAAkB/sD,KAAK+sD,iBACvBva,eAAe,EACfjyC,OAAQP,KAAK6zF,iBAAmBF,EAAyC,aAI1D,QAAfD,EAAA1yF,EAASC,cAAM,IAAAyyF,IAAfA,EAAiB5pF,kCACA,QAAf8pF,EAAA5yF,EAASC,cAAM,IAAA2yF,GAAfA,EAAiB5oE,iDAAmDhqB,EAASC,OAAO6yF,iCAc/E9zF,KAAK8vD,oBAAsB7K,EAAAA,sBAAsBiR,QACxDl2D,KAAKyX,SAAS,CACVk4E,4BAA4B,IAEhC3vF,KAAK6vF,iBAAiB,IAAInmE,MAAM,yBACV,QAAnB0rE,EAAIp0F,EAASC,cAAM,IAAAm0F,GAAfA,EAAiB7qF,0BACxBvK,KAAKm3F,8BAlBL,GAAI32F,EAAO0wF,oBAAoC,QAApBiD,EAAKnzF,EAASC,cAAM,IAAAkzF,OAAA,EAAfA,EAAiBjkC,mBAAmB,CAChE,MAAM,gBAAE6jC,EAAe,MAAEgB,GAAU/0F,KAAKT,MAAMsC,QAAQU,QAEhDyxF,EAAWC,KAAK3oF,KAAK26B,UAAU8tD,MAAAA,EAAAA,EAAmB,CAAEqD,eAAgBrC,MAAAA,OAAK,EAALA,EAAOqC,kBAEjFp3F,KAAKyX,SAAS,CACVy6E,qBAAqB,IAGzBlyF,KAAKT,MAAMU,YAAY6G,YACvB9G,KAAKqwF,oBAAoB2D,GAAU,KAa9B,KAAAnE,iBAAoB8B,IACjC3xF,KAAKT,MAAMuC,UAAUy3B,UAAUo4D,GAC/B3xF,KAAKT,MAAMU,YAAYyF,aAAY,GACnC1F,KAAKT,MAAMU,YAAY0F,aACvB,MACIxD,WAAW,oBAAEmF,EAAmB,qBAAE4sF,IAClCl0F,KAAKT,MACT,IAAIuE,EAAewD,EAEnB,OAAQqqF,EAAczhF,MAClB,IAAK,mBACDpM,EAAeowF,EAMvBl0F,KAAKyX,SAAS,CACVk6E,cAAAA,EACA7tF,aAAAA,KAKS,KAAAiuF,gBAAmBjuF,IAChC9D,KAAKT,MAAMuC,UAAUC,MAAM+B,GAC3B9D,KAAKT,MAAMU,YAAYyF,aAAY,GACnC1F,KAAKT,MAAMU,YAAY0F,aACvB3F,KAAKyX,SAAS,CACV3T,aAAAA,KAIS,KAAAkuF,4BAA8BjyF,UAA0B,IAAAs3F,EACrE,MACIx1F,SAAS,cAAEuH,GACX5I,QAAQ,mBAAE4zF,EAAkB,iBAAElD,EAAgB,yBAAEoG,GAChDz1F,SACIU,SAAS,YAAE4V,IAEfpX,MAAM,SAAEC,IACRhB,KAAKT,MAEHugB,EAAQ,CACVs0E,mBAAAA,EACAlD,iBAAAA,EACA/4E,YAAAA,EACA6S,+CAA+D,QAAjBqsE,EAAEr2F,EAASC,cAAM,IAAAo2F,OAAA,EAAfA,EAAiBrsE,+CACjE0vB,UAAW16C,KAAK06C,UAChB48C,yBAAAA,GAGJt3F,KAAKyX,SAAS,CACVk4E,4BAA4B,IAGhC,MAAMjpF,EAAgB1F,EAASC,OAC3ByF,UACMA,EAAc8rF,wBAAwB,CAAE9hC,0BAAsBtwD,UAC9DsG,EAAcs9C,iBAAiB,CAAEC,mBAAe7jD,UAChDsG,EAAco9C,2BAA2B,CAAEC,6BAAyB3jD,KAG9Ei0F,OAAAA,EAAAA,QAAAA,CAAgC,IAAIC,EAAAA,+BAA+Bx0E,GAAQ1W,GACtErC,KAAKwtF,IAEFnrF,EAAc+pC,OAAO,IAAImhD,EAAAA,+BAA+Bx0E,GAAQ,CAAE00E,kBAAmB,GAAIC,cAAe,KAIxGrrF,EAAc+pC,OAAO,IAAImhD,EAAAA,+BAA+Bx0E,GAAQy0E,GAChEv0F,KAAKyX,SAAS,CAAEs4E,mBAAoBwE,EAAmBxzB,qBAGnDr6D,MAAAA,GAAAA,EAAeskB,gDAAkDtkB,EAAc6qD,2BAC/EvxD,KAAKsyF,wBAAwB5rF,EAAc6qD,6BAGlD/pD,MAAOzF,IACJ/B,KAAK6vF,iBAAiB9tF,GAEtB/B,KAAKyX,SAAS,CACVk4E,4BAA4B,IAIhCvmF,EAAc+pC,OAAO,IAAImhD,EAAAA,+BAA+Bx0E,GAAQ,CAAE00E,kBAAmB,GAAIC,cAAe,QAInG,KAAAC,oBAAsB,CAAC9wF,EAAiB65F,KACrD,MAAM57B,EAAcx/D,GAAAA,CAAIrC,KAAKgiE,UAAW,uBACpCH,IACI47B,GACAz9F,KAAKT,MAAMU,YAAY6G,YAE3B+6D,EAAYj+D,KAIH,KAAA0uF,wBAA2BqC,IACxC,MAAM/wF,EAAUsmF,OAAAA,EAAAA,EAAAA,CAAoCyK,GACpD30F,KAAK00F,oBAAoB9wF,GAAS,GAGlCssB,QAAQC,IAAI,iDAGC,KAAAkiE,mBAAqBtyF,MAAAA,IAClC,MAAM,mBAAEq0F,GAAuBp0F,KAAKT,MAAMiB,OACpCkG,EAAgB1G,KAAKT,MAAMwB,KAAKC,SAASC,OAG/C,GAAIyF,GAAiB0tF,GAAsBh+D,GAAwBA,EAAqBg4B,IAAK,CACzF,MAAM93B,EAA0B,CAC5BgB,yBAA0BlB,EAAqBu4B,QAC/CrhD,KAAqC,QAA/B8oB,EAAqB0pC,MAAkB,GAAK1pC,EAAqB0pC,MACvE7oC,OAAQb,EAAqBw4B,SAC7B13B,aAAcd,EAAqBy4B,SACnC13B,KAAMf,EAAqBe,KAC3BC,MAAOhB,EAAqBgB,MAC5BC,QAASjB,EAAqBg4B,IAC9B72B,MAAOnB,EAAqBmB,aAE1B7wB,EAAc09C,qBAAqB,CAAEC,kBAAmB/tB,MAKrD,KAAAs+D,cAAgB,KACzB50F,KAAK6zF,kBAAoB7zF,KAAKT,MAAMU,YAAY2Q,WAChD5Q,KAAKT,MAAMU,YAAY0F,aACf3F,KAAK6zF,kBAAqB7zF,KAAKT,MAAMU,YAAY2Q,aACzD5Q,KAAKT,MAAMU,YAAYyF,aAAY,GACnC1F,KAAKT,MAAMU,YAAYqzC,cAKd,KAAAhzC,SAAW,KACxB,MAAM,iBAAE2wF,GAAmB,EAAI,iBAAEC,GAAqBlxF,KAAKT,MAAMiB,OAEjER,KAAKT,MAAMuC,UAAUgE,YAAY,sBAAsBorF,MAAAA,EAAAA,EAAoB,0BAEvED,EACAjxF,KAAK00F,oBAAoBtK,OAAAA,EAAAA,EAAAA,IAAiC,GAE1DpqF,KAAKT,MAAMU,YAAYozC,UAKd,KAAAhzC,SAAW,KAAW,IAAAk3F,EACnCv3F,KAAKT,MAAMuC,UAAUgE,YAAY,sBAAwD,QAAxDyxF,EAAsBv3F,KAAKT,MAAMiB,OAAO0wF,wBAAgB,IAAAqG,EAAAA,EAAI,0BAEzFv3F,KAAK++C,gBACL/+C,KAAKT,MAAMU,YAAYoG,UAEvBrG,KAAKT,MAAMU,YAAY0F,cAMd,KAAAzF,OAASH,UAA0B,IAAAy3F,EAAAvxF,EAAAG,EAChDpG,KAAKT,MAAMuC,UAAUgE,YAAY,sBAAwD,QAAxD0xF,EAAsBx3F,KAAKT,MAAMiB,OAAO0wF,wBAAgB,IAAAsG,EAAAA,EAAI,wBAE7Fx3F,KAAKT,MAAMU,YAAY0F,mBAEc,QAArCM,EAAMjG,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAgF,OAAA,EAA/BA,EAAiCm7D,+BAA+B,CAAEzQ,6BAA6B,KAElE,QAAnCvqD,EAAIpG,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAmF,GAA/BA,EAAiCg4D,+BAC3Bp+D,KAAKT,MAAMwB,KAAKC,SAASC,OAAOw2F,8BAA8B,CAAE7mC,4BAA4B,IAItG5wD,KAAKgyF,+BAIQ,KAAAjlC,iBAAmB,KAAW,IAAA2qC,EAC3C13F,KAAKT,MAAMuC,UAAUgE,YAAY,sBAAwD,QAAxD4xF,EAAsB13F,KAAKT,MAAMiB,OAAO0wF,wBAAgB,IAAAwG,EAAAA,EAAI,kCAE7F13F,KAAK8yF,gCACL9yF,KAAKT,MAAMU,YAAYmzC,sBAAqB,IAK/B,KAAA6jD,qBAAwBl1F,IAAoB,IAAA41F,EACzD,MAAM1oC,EAAiBjvD,KAAKT,MAAMwB,KAAKC,SAASC,OAMhD,GAJAjB,KAAKyX,SAAS,CACVmgF,wBAAsE,QAA/CD,EAAE33F,KAAKT,MAAMwB,KAAKivF,uBAAuB/uF,cAAM,IAAA02F,OAAA,EAA7CA,EAA+C52B,qBAGxE9R,GAAkBA,EAAe7iD,0CAA2C,CAC5EpM,KAAKT,MAAMuC,UAAUy3B,UAAUx3B,GAC/B/B,KAAKT,MAAMU,YAAYyF,aAAY,GAEnC,MAAM0pD,EAAYrtD,GAASA,EAAMmO,KAAOnO,EAAMmO,KAAO,GACrDm/C,OAAAA,EAAAA,EAAAA,CAAkBD,EAAWpvD,KAAKT,MAAM4C,YAAa8sD,EAAe1kD,yBAA0BvK,KAAKT,MAAMsC,QAAQuH,oBAEjHpJ,KAAK6vF,iBAAiB9tF,IAKb,KAAAo1F,uBAAyB,KAAW,IAAA/uF,EAAAyvF,EAAAnuF,EACjD1J,KAAKT,MAAMuC,UAAUgE,YACjB,0CACmC,QADnCsC,EACIpI,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAmH,OAAA,EAA/BA,EAAiCmC,mDACwB,QAA7DstF,EAA2B73F,KAAKT,MAAMiB,OAAO0wF,wBAAgB,IAAA2G,EAAAA,EAAI,OAGlC,QAA/BnuF,EAAA1J,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAyI,GAA/BA,EAAiCa,0BAA4BvK,KAAKT,MAAMiB,OAAO0wF,kBAC/ElxF,KAAKT,MAAMU,YAAYyF,aAAY,GACnC1F,KAAKT,MAAMU,YAAYoG,UACvBrG,KAAKyX,SAAS,CACVk6E,cAAe,KACf7tF,aAAc,KACdouF,qBAAqB,EACrB3nF,0BAA0B,IAE9BvK,KAAKT,MAAMU,YAAYmzC,sBAAqB,IAE5CpzC,KAAKyX,SAAS,CAAElN,0BAA0B,KAv6BxC,uBACN,MAAM7D,EAAgB1G,KAAKT,MAAMwB,KAAKC,SAASC,OAC/C,OAAOyF,GAAiBA,EAAcyrB,cAAgBzrB,EAAcyrB,cAAgB,EAG9E,+BACN,MAAMzrB,EAAgB1G,KAAKT,MAAMwB,KAAKC,SAASC,OAC/C,OAAOyF,GAAiBA,EAAc2uB,sBAAwB3uB,EAAc2uB,sBAAwB,EAG9F,6BACN,MAAM3uB,EAAgB1G,KAAKT,MAAMwB,KAAKC,SAASC,OAC/C,OAAKyF,GAAkBA,EAAcouB,gBAG9BpuB,EAAcouB,gBAAgBnR,OAAO,CAAC3f,EAAegxB,IAEjDhxB,GADiBgxB,EAASC,SAAW,GAE7C,GALQ,EAQL,gBACN,MACIl0B,MAAM,SAAEC,IACRhB,KAAKT,MACT,IAAKyB,EAASC,OACV,OAAO,EAGX,MACM4G,EADiB7G,EAASC,OACJC,aAAa2G,KACzC,OAAKA,GAASA,EAAKC,WAAuC,IAA1BD,EAAKC,UAAUzG,QAKvCwG,EAAKgrB,aA/CF,GA+C+B7yB,KAAKqiD,uBAAyBriD,KAAK26C,iBAAmB36C,KAAKsiD,yBAJ1F,EAOL,uBAAoB,IAAAuyC,EAC1B,MACI9zF,MAAM,SAAEC,GAAU,OAClBR,GACAR,KAAKT,MACT,IAAKyB,EAASC,OACV,OAAO,EAGX,MAAMguD,EAAiBjuD,EAASC,QAE1B,kBAAEivD,EAAiB,qBAAE95B,EAAoB,wBAAEgoC,GAA4BnP,EACvE6lC,GACqB,QAAvBD,EAAAr0F,EAAO0wF,wBAAgB,IAAA2D,OAAA,EAAvBA,EAAyBhlE,wBAAwBqgC,MAAAA,OAAiB,EAAjBA,EAAmBrgC,uBACnEuG,GAAwBgoC,GAE7B,OAAOp+D,KAAK06C,UAlED,IAkE4Bo6C,EAGjC,qCAAkC,IAAAzhF,EACxC,MAAM5L,EAAyBpF,GAAAA,CAAIrC,KAAKT,MAAO,kDACzCoI,EAAwBtF,GAAAA,CAAIrC,KAAKT,MAAO,kDACxC,4BAAEsH,EAA2B,aAAEuG,GAAiBpN,KAAKT,MAAMwB,KAKjE,OAH0CqM,MAAAA,GAAoB,QAARiG,EAAZjG,EAAcnM,cAAM,IAAAoS,GAAiE,QAAjEA,EAApBA,EAAsB7R,KAAK6L,GAD/B,oEAC0CA,EAAQC,aAAuC,IAAA+F,OAAA,EAArFA,EACpC9F,YAGClL,GAAAA,CAAIrC,KAAKT,MAAO,qDAAuD,IAAIm0B,KACvE1rB,IAAkB,IAAAuR,EAAA,OACfvR,EAASzB,gBAC6B,QADjBgT,EACjB1S,EAA4B5F,cAAM,IAAAsY,GAAyB,QAAzBA,EAAlCA,EAAoCrR,+BAAuB,IAAAqR,OAAA,EAA3DA,EAA6D/X,KACzDD,GAAgBA,IAAiByG,EAASzB,gBACzCyB,EAASzB,eAAiBoB,KAE1CtF,GAAAA,CAAIrC,KAAKT,MAAO,qDAAuD,IAAIm0B,KACvE1rB,GACGA,EAASzB,eAAiBkB,GAA0BO,EAASzB,eAAiBoB,GAItF,uCACN,OAAQtF,GAAAA,CAAIrC,KAAKT,MAAO,qDAAuD,IAAIwZ,MAC9E/Q,KAAyBA,EAASzB,cAIjC,wBAEN,GADkB1D,OAAO+wC,OAAO5zC,KAAKT,MAAMwB,MAAM2yB,KAAK3yB,GAAQsB,GAAAA,CAAItB,EAAM,YAAckkD,EAAAA,sBAAsB8K,SAExG,OAAO9K,EAAAA,sBAAsB8K,QAIjC,GADkBltD,OAAO+wC,OAAO5zC,KAAKT,MAAMwB,MAAMgY,MAAMhY,GAAQsB,GAAAA,CAAItB,EAAM,YAAckkD,EAAAA,sBAAsBgR,SAEzG,OAAOhR,EAAAA,sBAAsBgR,QAIjC,OADiBpzD,OAAO+wC,OAAO5zC,KAAKT,MAAMwB,MAAM2yB,KAAK3yB,GAAQsB,GAAAA,CAAItB,EAAM,YAAckkD,EAAAA,sBAAsBiR,QAEhGjR,EAAAA,sBAAsBiR,YADjC,EAMM,sBACN,QAAS7zD,GAAAA,CAAIrC,KAAKT,MAAMwB,KAAM,6CAGxB,6BACN,OAAQsB,GAAAA,CAAIrC,KAAKT,MAAMwB,KAAM,6EAGvB,uBACN,MAAMqrB,EAAS/pB,GAAAA,CAAIkf,OAAQ,mBACrB0zE,EAC2D,iBAAtD5yF,GAAAA,CAAIrC,KAAKT,MAAO,kCACjB,IAAI+hB,IAAIjf,GAAAA,CAAIrC,KAAKT,MAAO,mCACxB8C,GAAAA,CAAIrC,KAAKT,MAAO,kCAC1B,OAAO6sB,GAAU6oE,EAAW7oE,OAazB5R,oBAAiB,IAAAtQ,EAAA8B,EACpBH,OAAAA,EAAAA,EAAAA,CACI,IAAM7L,KAAK8vD,oBAAsB7K,EAAAA,sBAAsB8K,QACvD,KACI/vD,KAAKF,OAELE,KAAKm3F,2BAGbprF,OAAAA,EAAAA,EAAAA,CACI,IAAM/L,KAAK8vD,oBAAsB7K,EAAAA,sBAAsBiR,QAAUl2D,KAAK6zF,iBACtE,KACI7zF,KAAK40F,kBAIb7oF,OAAAA,EAAAA,EAAAA,CACI,IAAM/L,KAAK06C,UACX36C,UAAW,IAAA4J,EAAAI,EAML+tF,GAJE93F,KAAK+3F,wBAC2B,QAAhCpuF,EAAC3J,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAA0I,GAA/BA,EAAiCY,4BAClCvK,KAAK06C,UApKN,IAqKiC,QAAhC3wC,EAAC/J,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAA8I,GAA/BA,EAAiCD,yCAE5B9J,KAAKE,SAEXF,KAAKT,MAAMuC,UAAUgE,YACjB,sEAAwG,QAAxGgyF,EAAsE93F,KAAKT,MAAMiB,OAAO0wF,wBAAgB,IAAA4G,EAAAA,EAAI,QAKpH,MAAMl0F,EAAU0mF,OAAAA,EAAAA,EAAAA,CAA8BtqF,KAAK06C,WACnD16C,KAAK00F,oBAAoB9wF,GAAS,KAI1CmI,OAAAA,EAAAA,EAAAA,CACI,SAAA9B,EAAA,OAAqC,QAArCA,EAAMjK,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAgJ,OAAA,EAA/BA,EAAiCM,0BACvC,KACIvK,KAAKm3F,2BAIsB,QAAnCjtF,EAAIlK,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAiJ,GAA/BA,EAAiCkC,4CACjCL,OAAAA,EAAAA,EAAAA,CACI,SAAA5B,EAAA,OAAqC,QAArCA,EAAMnK,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAkJ,OAAA,EAA/BA,EAAiCmC,eACvCA,IAAgB,IAAA0rF,EAAA5tF,IAEsC,QAA7C4tF,EAAAh4F,KAAKT,MAAMwB,KAAKivF,uBAAuB/uF,cAAM,IAAA+2F,OAAA,EAA7CA,EAA+Cj3B,uBACb,QAD+B32D,EAC9DpK,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAmJ,OAAA,EAA/BA,EAAiC6tF,kCACjCj4F,KAAKgN,MAAM4qF,0BACftrF,GACAA,EAAcC,gBAAkBC,EAAAA,cAAcqmD,2BAC9CvmD,EAAcxI,cAEd9D,KAAK+xF,gBAAgBzlF,EAAcxI,gBAK/CiI,OAAAA,EAAAA,EAAAA,CACI,SAAA1B,EAAA,OAAqC,QAArCA,EAAMrK,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAoJ,OAAA,EAA/BA,EAAiCqC,oBACvCA,IAAqB,IAAAwrF,EAAA5tF,GAEiC,QAA7C4tF,EAAAl4F,KAAKT,MAAMwB,KAAKivF,uBAAuB/uF,cAAM,IAAAi3F,OAAA,EAA7CA,EAA+Cn3B,uBACb,QAD+Bz2D,EAC9DtK,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAqJ,OAAA,EAA/BA,EAAiC2tF,mCACjCj4F,KAAKgN,MAAM4qF,yBACflrF,IAAuBC,EAAAA,eAAekmD,2BAEtCjmD,OAAAA,EAAAA,EAAAA,CAAqB5M,KAAKH,iBAAkBG,KAAKT,MAAMsC,QAAQuH,kBAO5C,QAAnC4C,EAAIhM,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAA+K,GAA/BA,EAAiCgf,iDACjCjf,OAAAA,EAAAA,EAAAA,CACI,SAAAE,EAAAC,EAAA,OACmC,QAA/BD,EAAAjM,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAgL,OAAA,EAA/BA,EAAiCslD,6BACF,QAD2BrlD,EAC1DlM,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAiL,OAAA,EAA/BA,EAAiCisF,6BACrC,KAAK,IAAAhsF,EAAAP,EAAAwsF,EAAA/rF,EAMCgsF,EAJkC,QAAhClsF,EAACnM,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAkL,GAA/BA,EAAiC5B,0BACH,QAD2BqB,EAC1D5L,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAA2K,IAA/BA,EAAiC2lD,4BACY,QAA7C6mC,EAAAp4F,KAAKT,MAAMwB,KAAKivF,uBAAuB/uF,cAAM,IAAAm3F,OAAA,EAA7CA,EAA+Cr3B,uBACZ,QAD8B10D,EAC7DrM,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAoL,OAAA,EAA/BA,EAAiC8rF,8BAErCn4F,KAAKsyF,wBAAwBtyF,KAAKT,MAAMwB,KAAKC,SAASC,OAAOswD,2BAE7DvxD,KAAKT,MAAMuC,UAAUgE,YACjB,yFACqB,QADrBuyF,EAAyFr4F,KAAKT,MAAMiB,OAC/F0wF,wBAAgB,IAAAmH,EAAAA,EAAI,UAMzCtsF,OAAAA,EAAAA,EAAAA,CACI,SAAAU,EAAA,OAAqC,QAArCA,EAAMzM,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAwL,OAAA,EAA/BA,EAAiCqnF,kCACvC,KAAK,IAAAlkC,EAAAC,EAAAyoC,EAAAtoC,EAMCM,EAAAioC,EAJkC,QAAhC3oC,EAAC5vD,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAA2uD,GAA/BA,EAAiCrlD,0BACH,QAD2BslD,EAC1D7vD,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAA4uD,IAA/BA,EAAiCikC,mCACY,QAA7CwE,EAAAt4F,KAAKT,MAAMwB,KAAKivF,uBAAuB/uF,cAAM,IAAAq3F,OAAA,EAA7CA,EAA+Cv3B,uBACZ,QAD8B/Q,EAC7DhwD,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAA+uD,OAAA,EAA/BA,EAAiCmoC,8BAErCn4F,KAAKF,OAELE,KAAKT,MAAMuC,UAAUgE,YAAY,qGAEG,UAA/B9F,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAqvD,OAAA,EAA/BA,EAAiCwjC,gFAC6C,QAAlFyE,EAAgDv4F,KAAKT,MAAMiB,OAAO0wF,wBAAgB,IAAAqH,EAAAA,EAAI,WAQpGtrF,SAAM,IAAAurF,EAAArD,EACT,MAAM,aACFrxF,EAAY,2BACZ6rF,EAA0B,uBAC1BQ,EAAsB,8BACtBuC,EAA6B,oBAC7BR,EAAmB,eACnBW,EAAc,yBACdtoF,GACAvK,KAAKgN,OAEL/M,aAAa,QAAEuN,EAAO,SAAEE,EAAQ,eAAE4kC,EAAc,UAAEO,EAAS,uBAAEtkC,GAC7D/N,QAAQ,qBAAE60F,EAAoB,qBAAEC,EAAoB,UAAE5yF,EAAS,mBAAE0xF,EAAkB,iBAAElD,GAAkB,UACvG/uF,EACApB,MAAM,SAAEC,EAAQ,uBAAEgvF,GAAwB,mBAC1ClG,GACA9pF,KAAKT,MAEH4uB,EAAY27D,GAAsBA,EAAmB37D,UAErDsnE,EAAiC,QAAlB+C,EAAGx3F,EAASC,cAAM,IAAAu3F,OAAA,EAAfA,EAAiBxtE,+CAEzC,IAAKsnB,GAAmBtyC,KAAK8vD,oBAAsB7K,EAAAA,sBAAsBiR,SAAWl2D,KAAK6zF,iBAErF,OADA7zF,KAAKT,MAAMsC,QAAQC,UAAUC,MAAM,yDAC5B,KAGX,GAAI/B,KAAKT,MAAMsC,QAAQU,QAAQm8C,KAAK+D,cAA4D,IAA5CC,EAAAA,sBAAsB+1C,kBAEtE,OADAz4F,KAAKT,MAAMsC,QAAQC,UAAUgE,YAAY,2EAClC,KAGX,MAAM,cAAE2uF,EAAa,kBAAED,EAAiB,cAAEe,GAA+C,QAAhCJ,EAAGnF,EAAuB/uF,cAAM,IAAAk0F,EAAAA,EAAI,CACzFV,mBAAer0F,EACfo0F,uBAAmBp0F,EACnBm1F,mBAAen1F,IAGb,qBAAEg2B,EAAoB,WAAEC,EAAU,eAAEC,GAAmBt1B,EAASC,QAAU,CAC5Em1B,0BAAsBh2B,EACtBi2B,gBAAYj2B,EACZk2B,oBAAgBl2B,GAGdo1F,EAA6BtE,EAAmB,GAAGlxF,KAAK2b,mBAAmBu1E,EAAiBzhE,gBAAkB,GAE9G1hB,EAASC,EAAAA,EAAAA,EAAA,GACRhO,KAAKT,OACLS,KAAKgN,OAAK,IACbmhB,UAAAA,EACAzrB,UAAAA,EACA7C,iBAAkBG,KAAKH,iBAEvBwqB,0BAA2B,CACvB3b,YAAa1O,KAAKT,MAClBmD,UAAWkiB,GAAAA,CAAW5kB,KAAK2b,gBAAiB65E,EAA4B9yF,IAE5EqM,SAAUvB,IACLjD,GACDvK,KAAK8vD,oBAAsB7K,EAAAA,sBAAsBiR,SAChDl2D,KAAK8vD,oBAAsB7K,EAAAA,sBAAsB8K,SAAW4/B,GAA8B98C,IACvFxzC,EAAAA,cAACi+D,EAAAA,EAAgBz6D,OAAAC,OAAA,GAAK,CAAEc,QAASzB,EAAUuzF,kBAEnDxnF,MAAOR,GAAY5J,GAAgBzE,EAAAA,cAAC8O,EAAAA,EAActL,OAAAC,OAAA,GAAK,CAAEY,MAAOvB,EAAUmB,kBAAmBM,QAASE,KACtGwmB,oBAAqB/f,GAChBiD,IAAYioF,IAAoB/C,IAAkCR,IACnE7yF,EAAAA,cAACs2F,EAAAA,EAA2B,CACxBv/D,qBAAsBA,EACtBC,WAAYA,EACZC,eAAgB89D,EAAqB99D,OAAiBl2B,EACtDunB,SAAUpZ,EACVrO,OAAQF,KAAKE,OACbiC,UAAWA,IAGnBooB,gBAAiBhgB,KACXiD,GAAWioF,GAAmB/C,KAC/BR,IACAuC,GAAiBD,IAClBrmE,GACI9uB,EAAAA,cAACu2F,EAAAA,EAAuB,CACpBC,cAAepB,EACfqB,kBAAmBtB,EACnBjyB,cAAegzB,EACfj1F,SAAUN,KAAKM,SACfD,SAAUL,KAAKK,SACfgiE,gBAAiBriE,KAAKqiE,gBACtBL,UAAWhiE,KAAKgiE,UAChB1wB,WAAY/iC,EACZgjC,WAAYhjC,GAA0BvO,KAAK++C,gBAC3Cs2C,qBAAsBA,GAAwBlF,EAC9C7tB,iBAAkBtiE,KAAKsiE,iBACvBqtB,2BAA4BA,EAC5B2F,qBAAsBA,EACtBnzF,UAAWA,IAGvBqoB,aAAc,CACVP,MAAO,CACHzmB,IAAKyhC,EAAAA,MACLviC,UAAc1C,KAAK2b,gBAAR,kBACXi8B,OAAQi7C,MAKpB,OAAO7yF,KAAKT,MAAM6P,WAAWrB,KAvWvBsB,OAAAA,EAAAA,EAAAA,CAAA,CAATE,EAAAA,GAAQ,qCAKCF,OAAAA,EAAAA,EAAAA,CAAA,CAATE,EAAAA,GAAQ,6CAKCF,OAAAA,EAAAA,EAAAA,CAAA,CAATE,EAAAA,GAAQ,2CAWCF,OAAAA,EAAAA,EAAAA,CAAA,CAATE,EAAAA,GAAQ,8BAkBCF,OAAAA,EAAAA,EAAAA,CAAA,CAATE,EAAAA,GAAQ,qCAmBCF,OAAAA,EAAAA,EAAAA,CAAA,CAATE,EAAAA,GAAQ,mDAsBCF,OAAAA,EAAAA,EAAAA,CAAA,CAATE,EAAAA,GAAQ,qDAMCF,OAAAA,EAAAA,EAAAA,CAAA,CAATE,EAAAA,GAAQ,sCAkBCF,OAAAA,EAAAA,EAAAA,CAAA,CAATE,EAAAA,GAAQ,oCAICF,OAAAA,EAAAA,EAAAA,CAAA,CAATE,EAAAA,GAAQ,2CAICF,OAAAA,EAAAA,EAAAA,CAAA,CAATE,EAAAA,GAAQ,qCAyUTF,OAAAA,EAAAA,EAAAA,CAAA,CADCG,EAAAA,GAAM,0CAgJPH,OAAAA,EAAAA,EAAAA,CAAA,CADCG,EAAAA,GAAM,8CASPH,OAAAA,EAAAA,EAAAA,CAAA,CADCG,EAAAA,GAAM,4CA0EPH,OAAAA,EAAAA,EAAAA,CAAA,CADCG,EAAAA,GAAM,2BA6CPH,OAAAA,EAAAA,EAAAA,CAAA,CADCG,EAAAA,GAAM,uCAyBPH,OAAAA,EAAAA,EAAAA,CAAA,CADCG,EAAAA,GAAM,sCA0GPH,OAAAA,EAAAA,EAAAA,CAAA,CADCG,EAAAA,GAAM,oCAWPH,OAAAA,EAAAA,EAAAA,CAAA,CADCG,EAAAA,GAAM,+BAcPH,OAAAA,EAAAA,EAAAA,CAAA,CADCG,EAAAA,GAAM,+BAaPH,OAAAA,EAAAA,EAAAA,CAAA,CADCG,EAAAA,GAAM,6BAiBPH,OAAAA,EAAAA,EAAAA,CAAA,CADCG,EAAAA,GAAM,uCAUPH,OAAAA,EAAAA,EAAAA,CAAA,CAFCG,EAAAA,GAAM,2CAqBPH,OAAAA,EAAAA,EAAAA,CAAA,CADCG,EAAAA,GAAM,6CAr5BEqjD,EAAyBxjD,OAAAA,EAAAA,EAAAA,CAAA,CAFrCI,EAAAA,gBACAC,EAAAA,GACYmjD,GA66BEg2B,EAAAA,QAAAA,OAAAA,EAAAA,EAAAA,CAAuBh2B,oHCn/BtC,MAAMvhC,EAA6D1hB,IAAkC,IAAjC,oBAAEhB,EAAmB,KAAEC,GAAMe,EAC7F,OAAKf,GAAwB,IAAhBA,EAAKxN,OAKdhC,EAAAA,cAAC6qB,EAAAA,KAAIrnB,OAAAC,OAAA,GAAK8L,GACLC,EAAK5K,IAAKxC,GAEHpC,EAAAA,cAAC6qB,EAAAA,KAAIrnB,OAAAC,OAAA,GAAKrB,EAAegB,eAAc,CAAEqjB,IAAKrkB,EAAe0C,KAAI,aAAa,qCACzE1C,EAAe2C,YACf3C,EAAekB,YACflB,EAAeW,SAVzB,MAkBTovB,EAA4DpH,IAA2C,IAA1C,eAAE3nB,EAAc,YAAEE,EAAW,MAAEP,GAAOgoB,EACrG,OACI/qB,EAAAA,cAAC6qB,EAAAA,KAAIrnB,OAAAC,OAAA,GAAKL,GACLE,EACAP,IAiCEqvB,EAAAA,QA5BkElyB,IAC7E,MAAM,wBACFH,EAAuB,iBACvBS,EAAgB,UAChBwO,EAAS,gBACT3O,EAAe,uBACfoP,EAAsB,MACtBZ,EAAK,QACLa,EAAO,WACPE,EAAU,WACVC,EAAU,aACVC,GACA5P,EAEJ,OAEIF,EAAAA,cAACsrB,EAAAA,OAAM9nB,OAAAC,OAAA,GAAK1D,EAAuB,CAAEwrB,IAAK/qB,IACrCwO,EAAU1O,WAAaoP,EACvBV,EAAUV,SAAWO,EACrBG,EAAUT,YAAclO,GAAmBL,EAAAA,cAACiyB,EAAkBzuB,OAAAC,OAAA,GAAKpD,IACnE2O,EAAUR,gBAAkBiB,GAA0BzP,EAAAA,cAACmyB,EAAsB3uB,OAAAC,OAAA,GAAKgM,IAClFT,EAAUC,kBAAoBW,EAC9BZ,EAAUG,kBAAoBU,EAC9Bb,EAAUI,oBAAsBU,6RC0C9BiiC,IAAAA,EA7DWxhC,IAWkB,IAXjB,SACvBlC,EAAQ,SACR2jC,EAAQ,MACR/kB,EAAK,UACLglB,EAAS,UACTC,EAAS,SACT5sC,EAAQ,SACRrE,EAAQ,SACRD,EACA8B,WAAW,WAAEqvC,EAAU,eAAEC,EAAc,aAAE1sC,EAAY,eAAES,GAAgB,MACvE6oC,GACmBz+B,EACnB,MAAM8f,EAhBoB/qB,CAAAA,GAAuC8F,IACjE9F,EAAS8F,EAAMgG,OAAOlM,OAAS,KAeTmtC,CAAqB/sC,GAE3C,MAAO,CACH6pC,aAAc,CAAE9rC,UAAW,+CAM3B+rC,aACIpvC,EAAAA,cAAC2F,EAAAA,OAAM,CAACtC,UAAU,sCAAsCgB,MAAOqB,EAAcE,MAAM,UAAUE,QAAS7E,GACjGyE,GAQToK,aACI9P,EAAAA,cAAC2F,EAAAA,OAAM,CAACtC,UAAU,wCAAwCgB,MAAO8B,EAAgBP,MAAM,YAAYE,QAAS9E,GACvGmF,GAGTkpC,gBAAiB,CAAEhsC,UAAWkiB,GAAAA,CAAW,mCAAoC,CAAE,aAAclX,KAC7FkV,MACIvjB,EAAAA,cAAA,SAAO2C,GAAG,mCAAmCU,UAAU,0CAClD8uC,GAGTzvC,MAAO2L,GACHrO,EAAAA,cAAA,QAAM2C,GAAG,mCAAmCU,UAAU,yCAAyCe,KAAK,QAAO,YAAW,UACjHguC,GAGT3xB,MACIzgB,EAAAA,cAAA,SACIurB,IAAKymB,EACLphC,KAAK,OACLvN,UAAU,qDAAoD,aAClD8uC,EACZ7sC,SAAU+qB,EACVnrB,MAAO+nB,EAAK,kBACI,wECrEjBD,IAAAA,EAVQzc,IAAA,IAAC,QAAE+X,EAAO,MAAE2E,EAAOnqB,WAAW,aAAEmD,GAAc,OAAEpF,GAA+B0P,EAAA,MAAwB,CAC1H2c,cAAe,CAAE7pB,UAAW,4CAC5B4pB,MAAOjtB,EAAAA,cAAA,QAAMqD,UAAU,6CAA6C4pB,GACpEpd,WAAYyY,GACRtoB,EAAAA,cAAC2F,EAAAA,OAAM,CAACtC,UAAU,sCAAsCgB,MAAO4B,EAAcL,MAAM,OAAOE,QAASjF,GAC9FoF,8kBCoCb,IAAMwgF,EAAN,cAAmCzmF,EAAAA,UAAnCC,kCACW,KAAA0N,MAAoC,CACvCsf,MACKtsB,KAAKT,MAAMsC,SACR7B,KAAKT,MAAMsC,QAAQU,SACnBvC,KAAKT,MAAMsC,QAAQU,QAAQm8C,MAC3B1+C,KAAKT,MAAMsC,QAAQU,QAAQm8C,KAAKC,iBAChC3+C,KAAKT,MAAMsC,QAAQU,QAAQm8C,KAAKqnC,cACpC,GACJ13C,MAAO,GACPS,YAAY,GAGC,KAAAuC,SAA8ChyC,EAAAA,YAE9C,KAAAQ,iBAAiDR,EAAAA,YAwHjD,KAAAS,KAAOC,UAA0B,IAAAimF,EAAA5sE,EAAAxJ,EAAAq2E,EAC9C,MAAMv/E,EAAgB1G,KAAKT,MAAMwB,KAAKC,SAASC,OACzCilF,EAA+D,QAArCF,EAAGhmF,KAAKT,MAAMwB,KAAKolF,0BAAkB,IAAAH,OAAA,EAAlCA,EAAoC/kF,OAEjEE,EAAiBuF,MAAAA,OAAa,EAAbA,EAAexF,aAAaC,eACnD,IAAIilF,EAAsB,GAItBA,EADAl/D,EAAAA,EAAsBlnB,KAAKT,MAAMsC,QAAQU,SAErC2jF,QAAmE9lF,IAArC8lF,EAA2BG,MACnDH,EAA2BG,MAC3BrmF,KAAKsmF,+BAEDtmF,KAAKgN,MAAMsf,MAG7B,MAAMi6D,EAAc7/E,MAAAA,OAAa,EAAbA,EAAexF,aAAa2G,KAAK2+E,aAC/Cl6D,EAAQnrB,EACoC,QADtBiY,EACtBpZ,KAAKT,MAAMsC,QAAQU,QAAQm8C,KAAKqnC,oBAAY,IAAA3sE,EAAAA,EAAI,GAIjC,QAJmCxJ,EAClD22E,MAAAA,EAAAA,EACC7/E,MAAAA,GAAAA,EAAe6D,2BAA6BnD,EAAAA,iBAAiBC,cAAcX,EAAc+/E,iCACpF//E,EAAc+/E,qCACdrmF,SAAS,IAAAwP,EAAAA,EACfw2E,EACAM,EAAchgF,MAAAA,GAAgD,QAAnCu/E,EAAbv/E,EAAexF,aAAa2G,KAAK8+E,uBAAe,IAAAV,OAAA,EAAhDA,EAAkDl+E,OAAQgI,GAChD,UAAnBA,EAAUzC,MAGjBo5E,GAAeA,EAAY,IAAMA,EAAY,GAAGptC,WAEhDt5C,KAAKyX,SAAS,CAAE42B,MAAOq4C,EAAY,GAAGptC,YAG1C,MAAMutC,EAAe7mF,KAAK8mF,wBAAwB9mF,KAAKgN,MAAMqhC,OAC7D,IAAI9tC,EACJ,MAAMwmF,EAAe/mF,KAAK+mF,aAAaz6D,GAEnC/rB,EADAmmF,GAAsC,IAAvBA,EAAYrlF,OAClB,WACFwlF,GAAgBE,EACd,QAEA,WAOb/mF,KAAKT,MAAMU,YAAYH,KAAK,CACxBI,OAAQF,KAAKE,OACbG,SAAUL,KAAKK,SACfC,SAAUN,KAAKM,SAMfC,OAAQA,EACRmN,WAAY4e,IAAUy6D,IAGtBz6D,SACMtsB,KAAKgnF,mBAAmB16D,GAC9B5lB,MAAAA,GAAAA,EAAeugF,4BAA4B,CAAEC,0BAA0B,KAEvExgF,MAAAA,GAAAA,EAAeugF,4BAA4B,CAAEC,0BAA0B,KAI9D,KAAAviF,SAAYwiF,IACzB,MAAM76D,GAAS66D,GAAY,IAAI1iE,QAAQ,IAAIyH,OAAO,OAAQ,MAAO,IACjElsB,KAAKyX,SAAS,CAAE6U,MAAAA,IACZtsB,KAAKT,MAAMU,YAAYyN,WAEvB1N,KAAKT,MAAMU,YAAYyF,aAAY,GACnC1F,KAAKyX,SAAS,CACV2vE,kBAAkB,MAKb,KAAAz4C,cAAgB,CAAC04C,EAAkBx4C,MAClB,IAA1B7uC,KAAKgN,MAAM8hC,YACX9uC,KAAKyX,SAAS,CAAEq3B,YAAY,IAEhC,IAAIw4C,EAAmBD,EACvB,MAEME,EAFeF,EAAS5iE,QAAQ,MAAO,IAERA,QAAQ,wBAAyB,YACtD,QAAZoqB,GAAiC,QAAZA,IACrBy4C,EAAWC,GAEfvnF,KAAKyX,SAAS,CAAE42B,MAAOi5C,IACnBtnF,KAAKT,MAAMU,YAAYyN,WAEvB1N,KAAKT,MAAMU,YAAYyF,aAAY,GACnC1F,KAAKyX,SAAS,CACV2vE,kBAAkB,MAKb,KAAAd,6BAA+B,KAE5CtmF,KAAKT,MAAMU,YAAYyF,aAAY,GACnC1F,KAAKyX,SAAS,CACV2vE,kBAAkB,IAEf,IAGM,KAAAL,aAAgBz6D,GACtBk7D,EAAAA,WAAWC,aAAat7D,KAAKG,GAGvB,KAAAw6D,wBAA2Bz4C,IACxC,IAAIO,GAAkB,EACtB,GACI5uC,KAAKT,MAAMwB,KAAK8uC,4BAChB7vC,KAAKT,MAAMwB,KAAK8uC,2BAA2B,IAC3C7vC,KAAKT,MAAMwB,KAAK8uC,2BAA2B,GAAGC,eAAiB,EACjE,CAEElB,EAAqC,IADd5uC,KAAKT,MAAMwB,KAAK8uC,2BAA2B,GAAGC,eAIzE,MAAM43C,EAAa,gEACbC,EAAgB3nF,KAAKgN,MAAMqhC,MAAQq5C,EAAWv7D,KAAKnsB,KAAKgN,MAAMqhC,OAASA,EAAQq5C,EAAWv7D,KAAKkiB,GAAS,GAC9G,OAAIO,KACO+4C,GAME,KAAAX,mBAAqBjnF,MAAAA,IAC9BC,KAAKT,MAAMwB,KAAKC,SAASC,eACnBjB,KAAKT,MAAMwB,KAAKC,SAASC,OAAO6jD,yBAAyB,CAAEC,sBAAAA,IACjE/kD,KAAKyX,SAAS,CAAE6U,MAAOy4B,MAId,KAAA7kD,OAAS,KACtBF,KAAKT,MAAMuC,UAAUgE,YAAY,mCAEjC9F,KAAKT,MAAMU,YAAY0F,cAiBnB,KAAAszC,qBAAuBl5C,MAAAA,IAC3B,MAAMiB,QAAiBhB,KAAKT,MAAMwB,KAAKC,SAEjCq4C,EAAqB,KADIr4C,MAAAA,OAAQ,EAARA,EAAUE,aAAa2G,KAAK8+E,kBAAmB,IAY9E,OATAl7D,EAAW1U,QAAQ/C,IACf,MAAM0pF,EAAarkD,EAAmB/L,UAAUqwD,GAAQA,EAAKrwF,OAAS0G,EAAE1G,MACpEowF,GAAc,EAEdrkD,EAAmBqkD,GAAc1pF,EAEjCqlC,EAAmBpkC,KAAKjB,KAGzBhT,MAAAA,OAAQ,EAARA,EAAUE,aAAak4C,sBAAsB,CAChDC,mBAAoBA,KAIX,KAAAwuC,wBAA0B9nF,MAAOusB,EAAgB+hB,KAE9D,MA8BMgL,EAA2C,CA9BN,CAEvC,cAAe,oEACf/rC,KAAM,QACNgsC,UAAWjL,EACXkL,sBAAuB,GACvBtuC,oBAAqB,CACjB,CACIE,IAAK,QACLC,MAAO,CACHC,YAAagjC,MAKc,CAEvC,cAAe,oEACf/gC,KAAM,QACNgsC,UAAWhtB,EACXitB,sBAAuB,GACvBtuC,oBAAqB,CACjB,CACIE,IAAK,QACLC,MAAO,CACHC,YAAaihB,OAO7B,OAAOtsB,KAAKi5C,qBAAqBI,IAGpB,KAAA/4C,SAAWP,UACxBC,KAAKT,MAAMuC,UAAUgE,YAAY,qCAEjC,MAAM,MAAEwmB,EAAK,MAAE+hB,GAAUruC,KAAKgN,YACxBhN,KAAK6nF,wBAAwBv7D,EAAO+hB,SACpCruC,KAAK+nF,YAAYz7D,IAQV,KAAAy7D,YAAchoF,MAAAA,IAC3B,MAAM8sD,EAAU7sD,KAAK+mF,aAAaz6D,GAC5Bu6D,EAAe7mF,KAAK8mF,0BAC1B,GAAKj6B,GAAYg6B,EAWb7mF,KAAKT,MAAMU,YAAYoG,gBACjBrG,KAAKgnF,mBAAmB16D,OAZH,KAAA07D,EACtBn7B,GACD7sD,KAAKT,MAAMU,YAAYyF,aAAY,GAElCmhF,GACD7mF,KAAKyX,SAAS,CAAEq3B,YAAY,IAGhC,MAAMhvB,GAA6B,QAArBkoE,EAAAhoF,KAAKqxC,SAASnV,eAAO,IAAA8rD,OAAA,EAArBA,EAAuBz9C,QAAUvqC,KAAKqxC,SAASnV,QAC7Dpc,MAAAA,GAAAA,EAAOyqB,UAOE,KAAAlqC,SAAW,KAIxB,GAHAL,KAAKT,MAAMuC,UAAUgE,YAAY,sCAG5B9F,KAAKT,MAAMwB,KAAKC,SAASC,OAC1B,OAGJ,MAAMqrB,EAAQtsB,KAAKT,MAAMwB,KAAKC,SAASC,OAAO8pD,mBACzCz+B,GAKDtsB,KAAKyX,SAAS,CACV6U,MAAAA,IAEJtsB,KAAKT,MAAMU,YAAYyF,aAAY,GACnC1F,KAAKyX,SAAS,CACV2vE,kBAAkB,IAEtBpnF,KAAKT,MAAMU,YAAYoG,WAVvBrG,KAAKT,MAAMU,YAAY0F,cAed,KAAAi0C,iBAAoB91C,IACjC9D,KAAKT,MAAMuC,UAAUC,MAAM+B,GAC3B9D,KAAKT,MAAMU,YAAYyF,aAAY,GACnC1F,KAAKT,MAAMU,YAAY0F,aACvB3F,KAAKyX,SAAS,CACV2vE,kBAAkB,EAClBtjF,aAAAA,KAjZE,kBACN,MAAgF,aAAxE9D,KAAKT,MAAMwB,KAAKC,SAASC,QAAUjB,KAAKT,MAAMwB,KAAKC,SAAST,QAG9D,oBACN,OAAOP,KAAKT,MAAMU,YAAYyN,WAAa1N,KAAKgN,MAAMo6E,iBAGnD5sE,oBAAiB,IAAApS,EACpByD,OAAAA,EAAAA,EAAAA,CACI,IAAM7L,KAAK8L,YACX/L,gBACUC,KAAKF,SAInBiM,OAAAA,EAAAA,EAAAA,CACI,SAAAjL,EAAA,OAAqC,QAArCA,EAAMd,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAH,OAAA,EAA/BA,EAAiCyJ,0BACvCxK,MAAAA,IAAiC,IAAA8F,EAAAI,EAAAG,EAC7B,MAAMqgF,EAAkG,QAAnE5gF,EAAkC,QAAlCI,EAAGjG,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAgF,OAAA,EAA/BA,EAAiCwgF,uCAA+B,IAAA5gF,EAAAA,EAAI,GACtGoiF,GACD7gF,EAAAA,iBAAiBC,cAAco/E,IAChCA,IAAoCzmF,KAAKgN,MAAMsf,OAG/C/hB,GACiC,QAAhCnE,EAACpG,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAmF,GAA/BA,EAAiCg4D,0BAA2B6pB,SAExDjoF,KAAK+nF,YAAYtB,KAKA,QAAnCr+E,EAAIpI,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAmH,GAA/BA,EAAiCgE,4CACjCL,OAAAA,EAAAA,EAAAA,CACI,SAAArC,EAAA,OAAqC,QAArCA,EAAM1J,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAyI,OAAA,EAA/BA,EAAiC4C,eACvCA,IACQA,GAAiBA,EAAcC,gBAAkBC,EAAAA,cAAcs5E,sBAAwBx5E,EAAcxI,cACrG9D,KAAK45C,iBAAiBttC,EAAcxI,gBAKhDiI,OAAAA,EAAAA,EAAAA,CACI,SAAApC,EAAA,OAAqC,QAArCA,EAAM3J,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAA0I,OAAA,EAA/BA,EAAiC+C,oBACvCA,IACQA,IAAuBC,EAAAA,eAAem5E,sBACjCl5E,OAAAA,EAAAA,qBAAAA,CAAqB5M,KAAKH,iBAAkBG,KAAKT,MAAMsC,QAAQuH,kBAOjFyD,sBAAsBC,EAA6CC,GACtE,OAAI/M,KAAKgN,QAAUD,GAAa/M,KAAKT,MAAMwB,OAAS+L,EAAU/L,KAM3DkM,SAAM,IAAAlD,EAAAE,EACT,MACIzJ,QAAQ,UAAEkC,GAAW,UACrBP,EACAlC,aAAa,QAAEuN,EAAO,uBAAEe,IACxBvO,KAAKT,OACH,iBAAE6nF,EAAgB,aAAEtjF,GAAiB9D,KAAKgN,MAC1Csf,EAA2D,QAAtDviB,EAAkC,QAAlCE,EAAGjK,KAAKT,MAAMwB,KAAKC,SAASC,cAAM,IAAAgJ,OAAA,EAA/BA,EAAiC8gD,0BAAkB,IAAAhhD,EAAAA,EAAI,GAE/DgE,EAASC,EAAAA,EAAAA,EAAA,GACRhO,KAAKT,OACLS,KAAKgN,OAAK,IACbqhC,MAAOruC,KAAKgN,MAAMqhC,MAClBS,WAAY9uC,KAAKgN,MAAM8hC,WACvBjvC,iBAAkBG,KAAKH,iBACvB8E,SAAU3E,KAAK2E,SACfgqC,cAAe3uC,KAAK2uC,cACpBzuC,OAAQF,KAAKE,OACbG,SAAUL,KAAKK,SACfC,SAAUN,KAAKM,SAEfoO,YAAa,CACTA,YAAa1O,KAAKT,MAClBmD,UAAWkiB,GAAAA,CAAW,4BAA6BliB,EAAW8K,EAAU,OAAS,QAGrFU,MAAOk5E,GAAoBtjF,GACvBzE,EAAAA,cAAC8O,EAAAA,eAActL,OAAAC,OAAA,GAAK,CAAEY,MAAOvB,EAAUmB,kBAAmBM,QAASE,KAEvE6rC,gBAAiBniC,EACX06E,EAAmB,CACfvgE,SAAUpZ,EACV+d,MAAAA,EACAnqB,UAAAA,EACAjC,OAAQF,KAAKE,cAEjBE,EACNwvC,eAAiBpiC,OAcXpN,EAbAgxC,EAAkB,CACd9kB,MAAOtsB,KAAKgN,MAAMsf,MAClB+hB,MAAOruC,KAAKgN,MAAMqhC,MAClB3gC,SAAU1N,KAAKmoF,cACfhmF,UAAAA,EACAkvC,SAAUrxC,KAAKqxC,SACf1sC,SAAU3E,KAAK2E,SACfgqC,cAAe3uC,KAAK2uC,cACpB2C,WAAY/iC,EACZjO,SAAUN,KAAKM,SACfixC,WAAYhjC,KAA4B+d,EACxCjsB,SAAUL,KAAKK,aAK7B,OAAOL,KAAKT,MAAM6P,WAAWrB,KAnHvBsB,OAAAA,EAAAA,EAAAA,CAAA,CAATE,EAAAA,GAAQ,gCAICF,OAAAA,EAAAA,EAAAA,CAAA,CAATE,EAAAA,GAAQ,kCAuYTF,OAAAA,EAAAA,EAAAA,CAAA,CADCG,EAAAA,GAAM,uCA3ZLs2E,EAAoBz2E,OAAAA,EAAAA,EAAAA,CAAA,CAFzBI,EAAAA,gBACAC,EAAAA,GACKo2E,GAuaSA,EAAAA,QAAAA,qCCxef,u3CC4DA,MAAM+E,UAA2BxrF,EAAAA,cAO7BC,YAAYC,GACRC,MAAMD,GAPO,KAAAurF,cAAoDzrF,EAAAA,YAEpD,KAAA0rF,YAA+C1rF,EAAAA,YA8H/C,KAAA2rF,aAAe,KAC5B,MAAM,SAAEC,EAAQ,QAAEz9E,EAAO,aAAE09E,EAAY,gBAAEn4C,EAAe,gBAAEo4C,EAAe,SAAE9qF,EAAQ,SAAEC,EAAQ,SAAEw1D,GAAa91D,KAAKT,OAC3G,aAAEwF,EAAY,eAAES,EAAc,wBAAE4lF,GAA4Bt1B,EAE5DxkB,GAAa9jC,GAAWlN,EACxBixC,GAAa/jC,GAAWy9E,GAAYl4C,GAAmB1yC,EAE7D,IAAK8qF,IAAqB75C,IAAcC,EACpC,OAAO,KAGXvxC,KAAK6P,QAAQ6b,cAAcC,MAAQs/D,EAAWpkE,EAAAA,kBAAkBwkE,KAAOxkE,EAAAA,kBAAkBykE,aACzF,MAAMsS,EAAoB5tF,OAAAA,EAAAA,uBAAAA,CAAuBhQ,KAAKT,MAAMsF,iBAAmB7E,KAAK6P,SACpF7P,KAAK6P,QAAQ6b,cAAcC,MAAQ9E,EAAAA,kBAAkB0kE,OACrD,MAAMsS,EAAsB7tF,OAAAA,EAAAA,uBAAAA,CAAuBhQ,KAAKT,MAAMsF,iBAAmB7E,KAAK6P,SAEtF,OACIxQ,EAAAA,cAAA,OAAKqD,UAAU,mCACV4uC,GACGjyC,EAAAA,cAAC2F,EAAAA,OAAMnC,OAAAC,OAAA,CACHJ,UAAWiM,GAAAA,CAAU,oCAAqC,CAAE,gBAAiBu8E,IAC7ExnF,MAAOunF,EAAWlmF,EAAeqmF,EACjCnmF,MAAM,UACNC,SAAUgmF,EACV/lF,QAAS7E,GACLs9F,GAEH3S,GAAYl4C,EAAkBhuC,EAAeqmF,GAGrD75C,GACGlyC,EAAAA,cAAC2F,EAAAA,OAAMnC,OAAAC,OAAA,CACHJ,UAAU,sCACVgB,MAAO8B,EACPP,MAAM,YACNE,QAAS9E,GACLw9F,GAEHr4F,KAOJ,KAAAimF,6BAA+B,KAC5C,MAAMC,EAAO1rF,KAAK+qF,YAAY7uD,QAcxByvD,EAAQD,GAAQA,EAAKjhD,eAAkBihD,EAAKjhD,cAbvB,6dAc3BkhD,GAASA,EAAMphD,OAASohD,EAAMphD,SAGjB,KAAAqhD,kBAAoB,KAEjC,MAAM18E,EACFlP,KAAK8qF,eACL9qF,KAAK8qF,cAAc5uD,SACnBl8B,KAAK8qF,cAAc5uD,QAAQqO,OAC1BvqC,KAAK8qF,cAAc5uD,QACxBhtB,GAAcA,EAAWq7B,SAGZ,KAAAshD,cAAgB,KAE7B,MAAMC,EAAW9rF,KAAKT,MAAMyiC,UAAYhiC,KAAK+qF,aAAe/qF,KAAK+qF,YAAY7uD,SAAYl8B,KAAK+qF,YAAY7uD,QAC1G4vD,GAAYA,EAAS70B,kBAGR,KAAA80B,SAAW,KACxB,MAAM,KAAEzqB,EAAI,MAAE59D,GAAU1D,KAAKT,OACrBi7F,WAAYsD,EAAM,KAAI,KAAE1sF,EAAO,IAAO1N,GAAS,GACvD,OACIrE,EAAAA,cAACy+F,EAAG,CAACp7F,UAAU,kCACXrD,EAAAA,cAAA,QAAMqD,UAAU,uCACX4+D,EAAO,EAAC,KAAI,KAEhBlwD,GAAQ/R,EAAAA,cAAA,QAAMqD,UAAU,uCAAuC0O,KAM3D,KAAA66E,YAAe5oE,GACrBhhB,GAAAA,CAAIghB,EAAM,0BAA4B,GAGhC,KAAA6oE,OAAU7oE,GAChBhhB,GAAAA,CAAIghB,EAAM,OAAS,GA3N1BrjB,KAAK6P,QAAUC,OAAAA,EAAAA,iBAAAA,CAAiB,QAASvQ,EAAMsF,iBAAmB,IAG/DiuD,mBAAmBq5B,GAItB,MAAM,SAAEC,EAAQ,QAAE5+E,EAAO,OAAE6+E,EAAM,SAAEpB,EAAQ,OAAE/qF,EAAM,YAAEosF,EAAW,SAAE36D,EAAQ,YAAE1xB,EAAW,cAAEmJ,GAAkBpJ,KAAKT,MAG5G6sF,GAAY5+E,GACZ6+E,IAmBJ,KAdoBF,EAAU3+E,SAAW2+E,EAAUlB,YAAckB,EAAUjsF,UAC3DsN,GAAWy9E,KAAc/qF,KAErCF,KAAK4rF,oBACL5rF,KAAK6rF,iBAKLM,EAAU3+E,UAAYA,GACtBxN,KAAKyrF,+BAILa,GAAeljF,EAAe,CAC9B,MAAMmjF,EAAkBvsF,KAAKisF,YAAYt6D,GAGzC,GAAI46D,EAAgBlrF,OAAS,EACzB,IAAK,MAAMmrF,KAAeD,EAAiB,CACvC,MAAMl4C,EAAUr0C,KAAKksF,OAAOM,GACtBC,EAAaxsF,MAAAA,OAAW,EAAXA,EAAaszC,UAAUc,GAE1C,GAAIo4C,MAAAA,GAAAA,EAAY/+E,SAEZ,YADA0pD,OAAAA,EAAAA,EAAAA,CAAsB/iB,EAASjrC,QAKvCwD,OAAAA,EAAAA,EAAAA,CAAqB5M,KAAK+qF,YAAa3hF,IAK5C6D,SACH,MAAM,MACFvJ,EAAK,SACLwB,EAAQ,WACRwnF,EAAU,SACVN,EAAQ,SACRnB,EAAQ,SACRt5D,EAAQ,QACRnkB,EAAO,UACPqlC,EAAS,WACTplC,EAAU,eACV6kC,EAAc,gBACd64C,EAAe,OACfjrF,EAAM,SACN41D,GACA91D,KAAKT,OACH,eAAEwtF,GAAmBj3B,EAE3B91D,KAAK6P,QAAQ6b,cAAcC,MAAQ9E,EAAAA,kBAAkB8lE,eACrD,MAAMC,EAAsB58E,OAAAA,EAAAA,uBAAAA,CAAuBhQ,KAAKT,MAAMsF,iBAAmB7E,KAAK6P,SAChF8X,EAAUwjE,GAAmB39E,GAAWy9E,GAAY/qF,EAE1D,OACIb,EAAAA,cAAA,OACIqD,UAAWiM,GAAAA,CAAU,2BAA4B,CAC7Cs+E,OAAQb,EACRc,SAAUR,EACVS,QAAST,EACTU,OAAQnC,EACRoC,OAAQnoF,EACRooF,YAAah7C,EACbptC,SAAAA,EACAqoF,MAAO//E,EACPggF,QAAS36C,EACT46C,SAAUhgF,IAEdmd,IAAK5qB,KAAK+qF,aAEV1rF,EAAAA,cAAA,OAAKqD,UAAU,mCACV1C,KAAK+rF,WAELpkE,GACGtoB,EAAAA,cAAC2F,EAAAA,OAAMnC,OAAAC,OAAA,CACHgqF,SAAU9sF,KAAK8qF,cACfpoF,UAAU,oCACVgB,MAAOqpF,EACP9nF,MAAM,OACNE,QAASjF,EACTuD,KAAK,SAAQ,aACDC,GAASA,EAAM0N,KAAO,GAAG27E,KAAkBrpF,EAAM0N,OAAS,IAClEw7E,GAEHG,IAKb1tF,EAAAA,cAAA,OACIqD,UAAWiM,GAAAA,CAAU,gCAAiC,CAClD0+E,QAASX,KAGbrtF,EAAAA,cAAA,OAAKqD,UAAU,oCAAoCivB,GAElD3xB,KAAKgrF,kBA6GXH,EAAAA,EAAAA,0JC7Of,IAAM6C,EAAN,cAAiCruF,EAAAA,cAAjCC,cAAA,oBAgCW,KAAA0N,MAAkC,CACrC2gF,YAAa,GA0FA,KAAAC,kBAAoB,KACjC,MACI3tF,aAAa,SAAEyyC,EAAQ,UAAEa,IACzBvzC,KAAKT,MACT,OAAOmzC,EAAS3qC,OAAQssC,IACpB,MAAMrnC,EAAQumC,EAAUc,GACxB,QAASrnC,IAAUA,EAAM4D,cAUhB,KAAAmtF,mBAAqB,KAClC,MAAMrrD,EAAqB1yC,KAAKT,MAAMsc,MAAM5X,IAAKof,GAA0BhhB,GAAAA,CAAIghB,EAAM,aAAatb,OAAOi2F,SACzG,IAAIh8F,EAAa,GACjB,IAAK,IAAIi8F,EAAI,EAAGA,EAAIvrD,EAASrxC,OAAS,EAAG48F,IAAK,CAC1C,MAAM5pD,EAAU3B,EAASurD,GACnBC,EAAcxrD,EAASurD,EAAI,GAC7Bj+F,KAAKs0C,2BAA2BD,IAAY6pD,IAC5Cl8F,EAAKk8F,GAGb,OAAOl8F,GAQM,KAAAsyC,2BAA8Bd,IAA6B,IAAA2qD,EACxE,MAAMC,EAAep+F,KAAKT,MAAMU,YAAYszC,UAAUC,GAMtD,QALkCj8B,EAAAA,gBAAgBC,YAEzB,QAFoC2mF,EAEzDC,EAAa1rD,gBAAQ,IAAAyrD,OAAA,EAArBA,EAAuBp2F,OAAOmmF,GAAaA,MAAAA,OAAS,EAATA,EAAWz0E,SAzKhC,yBAkLb,KAAAo0E,QAAW7rF,GACjBhC,KAAK4tF,oBAAoBE,QAAQ9rF,GAG3B,KAAA+rF,MAAS1qE,GACfhhB,GAAAA,CAAIghB,EAAM,aAAe,GAGnB,KAAA2qE,WAAc3qE,GACpBhhB,GAAAA,CAAIghB,EAAM,yBAA2B,GAG/B,KAAAqpE,WAAa,CAACprB,EAAc+8B,EAAuBhqD,MAC5Dr0C,KAAKT,MAAMk+B,cAIXz9B,KAAKT,MAAMyrB,gDAAkDqzE,IAAkBhqD,IAG5EitB,GAAQ,GAAKA,GAAQthE,KAAKgN,MAAM2gF,aAG1B,KAAAvB,SAAY9qB,GAClBA,IAASthE,KAAKgN,MAAM2gF,YAGd,KAAA1C,SAAY3pB,GAClBA,GAAQ,GAAKA,EAAOthE,KAAKgN,MAAM2gF,YAGzB,KAAAtB,OAAS,KACtBrsF,KAAKyX,SAAS,CACVk2E,YAAa3tF,KAAKgN,MAAM2gF,YAAc,KA1MpC,qBACN,OACsC,IAAlC3tF,KAAKT,MAAM41D,qBACwB,IAAnCn1D,KAAKT,MAAM61D,sBAC0B,IAArCp1D,KAAKT,MAAM81D,wBACgC,IAA3Cr1D,KAAKT,MAAMuR,4BAQT,oBACN,IAAK,MAAMuS,KAAQrjB,KAAKT,MAAMsc,MAAO,CAAC,IAADoyE,EACjC,MAAM55C,EAAUr0C,KAAK+tF,MAAM1qE,GACrBrW,EAAQhN,KAAKT,MAAMU,YAAYszC,UAAUc,GAO/C,IALkC98B,EAAAA,gBAAgBC,YAEhC,QAF2Cy2E,EAEzDjhF,EAAM0lC,gBAAQ,IAAAu7C,OAAA,EAAdA,EAAgBlmF,OAAOmmF,GAAaA,MAAAA,OAAS,EAATA,EAAWz0E,SA7B7B,0BAgCazM,EAAM4D,YAAc5D,EAAMU,SACzD,OAAO,EAIf,OAAO,EAOJ8M,oBAIH,MAAMk4B,EAAW1yC,KAAKT,MAAMsc,MAAM5X,IAAKof,GAA0BhhB,GAAAA,CAAIghB,EAAM,aAC3ErjB,KAAKT,MAAMU,YAAYH,KAAK,CAAE4yC,SAAAA,IAG3BzlC,SACH,MAAM,YAAEhN,EAAW,MAAE4b,EAAK,SAAEi6C,GAAa91D,KAAKT,MAC9C,IAAKsc,IAAU5b,EACX,OAAO,KAGX,MAAMkuF,EACFnuF,KAAKT,MAAMuK,kCACX9J,KAAKT,MAAMyrB,iDACVhrB,KAAKT,MAAMmO,WACX1N,KAAKouF,iBACLpuF,KAAKquF,cAEV,IAAIC,GAAyB,EAC7B,MAAM9B,EAAcxsF,KAAK+9F,qBACzB,OACI1+F,EAAAA,cAAA,OAAKqD,UAAU,4BACVmZ,EAAM5X,IAAKof,IAAyB,IAAAkrE,EACjC,MAAMl6C,EAAUr0C,KAAK+tF,MAAM1qE,GACrBi+C,EAAOthE,KAAK6tF,QAAQx5C,GACpB3wC,EAAQ1D,KAAKguF,WAAW3qE,GACxBrW,EAAQhN,KAAKT,MAAMU,YAAYszC,UAAUc,IACzC,QACF7mC,EAAO,UACPqlC,EAAS,WACTplC,EAAU,WACVmD,EAAU,gBACVmiC,EAAe,OACf7yC,EAAM,SACNG,EAAQ,SACRC,EAAQ,eACR2yC,EAAc,eACdX,EAAc,SACd5kC,GACAV,GAAU,GAEd,IAAIs/E,IACEtsF,KAAKT,MAAM6M,6CACXpM,KAAKT,MAAM0zD,6BACZq7B,GACD5gF,EAGJ,OAFA4gF,EAAyBA,GAA0BhC,EAG/CjtF,EAAAA,cAACmvF,EAAAA,EAAU,CACPxsF,GAAIhC,KAAK+tF,MAAM1qE,GACfyC,IAAKuuB,EACLitB,KAAMA,EACN59D,MAAOA,EACPoyD,SAAUA,EACV5wD,UAAW+tC,GAAkBriC,EAC7Bw7E,UAAW+B,GAA+BnuF,KAAKosF,SAAS9qB,GACxD2pB,UAAWkD,GAA+BnuF,KAAKirF,SAAS3pB,GACxDorB,YAAayB,GAA+BnuF,KAAK0sF,WAAWprB,EAAMkrB,EAAan4C,GAC/E62C,aAAcr4C,EACd7Q,SAAUhiC,KAAKT,MAAMyiC,SACrB6Q,UAAWA,EACXplC,WAAYA,EACZ6kC,eAAgBA,EAChB9kC,QAASA,EACTulC,gBAAiBA,EACjBzyC,SAAUA,EACVD,SAAUA,EACVH,OAAQA,EACRmsF,OAAQrsF,KAAKqsF,OACblB,iBAAkBnrF,KAAKT,MAAM20D,2BAA6B5hB,EAC1DztC,iBAAkB7E,KAAKT,MAAMsF,iBAC7B5E,YAAaA,EACbmJ,cAAwC,QAA3BmlF,EAAEvuF,KAAKT,MAAM+R,sBAAc,IAAAi9E,OAAA,EAAzBA,EAA2BnlF,cAC1CkjF,YAAaA,GAEZjtF,EAAAA,aAAmBgkB,EAA4B,CAAEkxB,eAAe,UAlH/EllC,OAAAA,EAAAA,EAAAA,CAAA,CAATE,EAAAA,GAAQ,mCAaCF,OAAAA,EAAAA,EAAAA,CAAA,CAATE,EAAAA,GAAQ,kCAdPm+E,EAAkBr+E,OAAAA,EAAAA,EAAAA,CAAA,CADvBK,EAAAA,GACKg+E,GAgNSA,EAAAA,EAAAA,qCCvQf,gBAyBeniE,EAAAA,EAR8E3b,IAAc,IAAb,MAAElM,GAAOkM,EACnG,OAAKlM,EAIErE,EAAAA,cAAA,KAAGqD,UAAU,6CAA6CgB,GAHtD,ktBC2Bf,MAAM46F,EAAyD1uF,IAS1D,IAT2D,MAC5DxN,EAAK,MACLwgB,EAAK,QACL/gB,EAAO,GACPG,EAAE,SACFC,EAAQ,mBACR4vB,EAAkB,SAClBC,EAAQ,SACRC,GACHniB,EACG,OACIvQ,EAAAA,cAAA,KAAGqD,UAAW,6BAA6BqvB,GACvC1yB,EAAAA,cAAA,QAAMqD,UAAU,8BAA8BkgB,GAC7CxgB,GAAmB,IAAVA,EACN/C,EAAAA,cAAC2D,EAAAA,eAAc,CACXjC,KAAM,CACFqB,MAAO,CAAEa,wBAAyBb,IAEtCc,cAAe4uB,EACfjwB,QAASA,EACTG,GAAIA,EACJC,SAAUA,EACVS,UAAU,+BAGdrD,EAAAA,cAAA,QAAMqD,UAAU,8BAA8BmvB,KAMxD0sE,EAA8BA,CAChCh/F,EACA6C,EACAwgB,EACAmP,IAGI1yB,EAAAA,cAACi/F,EAAkB,CACfl8F,MAAOA,EACPwgB,MAAOA,EACP/gB,QAAStC,EAAMsC,QACfG,GAAIzC,EAAMyC,GACVC,SAAU1C,EAAM0C,SAChB4vB,mBAAoBtyB,EAAMsyB,mBAC1BC,SAAUvyB,EAAMuyB,SAChBhwB,UAAWvC,EAAMuC,UACjBiwB,SAAUA,IAKhBG,EAA0BxrB,GACpBA,GAAiBA,EAAcyrB,eAAkB,EAYhDs3B,EAAkBlqD,IAC3B,MAAM,YAAEszB,EAAW,UAAE/qB,GAAcvI,EAAMsI,KACnC22F,EAAe12F,MAAAA,OAAS,EAATA,EAAWC,OAAOC,GAAYA,EAASy2F,eACtD9qE,EAAmC,CACrCs0B,SAAUu2C,MAAAA,OAAY,EAAZA,EAAcv6F,IAAKy6F,GAClBH,EACHh/F,EACAm/F,EAAYC,cACZ7iF,OAAAA,EAAAA,OAAAA,CAAOvc,EAAMgqD,aAAcm1C,EAAYE,WACvC,YAGR5qE,WAAYuqE,EAA4Bh/F,EAAOszB,EAAatzB,EAAM00B,gBAAiB,UAGvF,GAAI10B,EAAMmH,cAAe,CACrB,MAAMiuB,EAzBiBC,EAACluB,EAA+BmB,KAC3D,MAGMgtB,GAAsBnuB,EAAcouB,iBAAmB,IAAInR,OAHzCoR,CAAC/wB,EAAegxB,IAC7BhxB,GAASgxB,EAASC,SAAW,GAEiD,GACnFC,GAAUrtB,EAAKgrB,aAAe,GAAKX,EAAuBxrB,GAChE,OAAOyuB,KAAKC,IAAIP,EAAoBK,IAmBTN,CAAuBr1B,EAAMmH,cAAenH,EAAMsI,MACnEsqB,EAAgBD,EAAuB3yB,EAAMmH,eAC7C4uB,GAA4BzC,GAAe,GAAK8B,EAAiBxC,EAEnEA,EAAgB,IAChBwB,EAAW4B,QAAUgpE,EAA4Bh/F,GAAQ4yB,EAAe5yB,EAAMi2B,cAAgB,iBAAkB,YAGhHb,EAAiB,IACjBhB,EAAWqB,SAAWupE,EAClBh/F,GACCo1B,EACDp1B,EAAMk2B,eAAiB,mBACvB,cAIR9B,EAAWK,WAAauqE,EAA2BvwF,EAAAA,EAAC,GAC3CzO,GAAK,IAAEuyB,cAAU1xB,IACtBk1B,EACA/1B,EAAM00B,gBACN,SAIR,OAAON,sCCxJX,oDAuBAkrE,EAGI,SAAY1mF,GAAZ,IAAAxF,EAAA,KAIO,KAAA8qD,YAAc,WAAM,OAAAqhC,OAAAA,EAAAA,cAAAA,CAAc,gBAAiBnsF,EAAKwF,cAExD,KAAAulD,mBAAqB,WAAM,uBAE3B,KAAAC,cAAgB,WAAiB,iBAPpC39D,KAAKmY,YAAcA,GA8BkB4mF,OAAAA,EAAAA,EAAAA,CAA0C,CACnFvvF,OAhBG,SAAmCsQ,EAA2BgJ,GAAmB,uFACpF,MAAM,CAAN,EAAO,IAAIk6B,EAAAA,UAgBXljC,MATgB,SAACk/E,GACjB,OAAO,IAAIH,EAAmBG,EAAU1tF,eAAe6G,mDCnD3D,uoECQO,MAAMoR,EAAkBxpB,MAAAA,IAC3B,IAAIsI,EACA3B,EACJ,MAAMu4F,EAAsB,GAE5B,IACI52F,QAAkB62F,OAAAA,EAAAA,aAAAA,CAAap2E,GAC/BpiB,QAAsB4vD,OAAAA,EAAAA,iBAAAA,CAAiBxtC,GACzC,MAAO/mB,GACL,MAAMA,EAGV,IAAKsG,IAAcA,EAAUR,KACzB,MAAM,IAAI6hB,MAAM,6BAGpB,IAAKhjB,IAAkBA,EAAcxF,aACjC,MAAM,IAAIwoB,MAAM,mCAGpB,MAAMy1E,EAAa92F,EAAUR,KACvB3G,EAAewF,EAAcxF,aAAa2G,KAEhD,IAAK,MAAMu3F,KAAkBD,EAAWr3F,WAAa,GACjD,IAAK,MAAMu3F,KAAoBn+F,EAAa4G,WAAa,GACjDs3F,EAAe7qF,QAAU6qF,EAAe7qF,SAAW8qF,EAAiB9qF,QACpE0qF,EAAoBhqF,KAAKmqF,EAAe7qF,QAKpD,UACUlM,EAAUi3F,gBAAgB,CAAEC,YAAaN,UACzC52F,EAAUm3F,oBAAoB,UAC9B94F,EAAc+4F,qBAAqB,IAC3C,MAAO19F,GACL,MAAMA,uCC5Cd,qGCUe,UACX+mB,EACApiB,EACAqiB,EACAC,EACAC,EACAnf,IAEO+e,OAAAA,EAAAA,EAAAA,CAAWC,EAAKpiB,EAAeqiB,EAAiBC,EAAUC,EAAoBnf,sCClBzF","sources":["webpack:///./src/modules/checkout-delivery-options/checkout-delivery-options.tsx?6764","webpack:///./src/modules/lds-checkout-terms-and-conditions-4/components/lds-checkout-terms-and-conditions-4.check-box.tsx?dde0","webpack:///./src/modules/lds-checkout-terms-and-conditions-4/components/lds-checkout-terms-and-conditions-4.error-message.tsx?e302","webpack:///./src/modules/lds-checkout-terms-and-conditions-4/components/lds-checkout-terms-and-conditions-4.error-title.tsx?de43","webpack:///./src/modules/lds-checkout-terms-and-conditions-4/lds-checkout-terms-and-conditions-4.tsx?801b","webpack:///./src/modules/lds-checkout-pickup-4/lds-checkout-pickup-4.tsx?3e46","webpack:///./src/modules/checkout/components/get-line-items.tsx?92f8","webpack:///./src/components/section-header/index.tsx?b333","webpack:///./src/common/place-order.tsx?8526","webpack:///./src/modules/checkout-payment-instrument/checkout-payment-instrument.view.tsx?cb45","webpack:///./src/modules/checkout-payment-instrument/components/index.ts?4986","webpack:///./src/modules/checkout/components/index.ts?0f03","webpack:///./src/modules/checkout-loyalty/components/checkout-loyalty-label.tsx?e02b","webpack:///./src/modules/checkout-gift-card/components/title.tsx?3b2f","webpack:///./src/modules/checkout-terms-and-conditions/checkout-terms-and-conditions.tsx?9243","webpack:///./src/modules/checkout-terms-and-conditions/checkout-terms-and-conditions.view.tsx?26e8","webpack:///./src/modules/checkout-delivery-options/components/checkout-delivery-options.description.tsx?840c","webpack:///./src/modules/lds-checkout-shipping-options/lds-checkout-shipping-options.props.autogenerated.ts?7c8a","webpack:///./src/modules/lds-checkout-shipping-options/components/lds-checkout-shipping-options.description.tsx?d33b","webpack:///./src/modules/lds-checkout-shipping-options/components/lds-checkout-shipping-options.error-message.tsx?46fb","webpack:///./src/modules/lds-checkout-shipping-options/components/lds-checkout-shipping-options.error-title.tsx?7317","webpack:///./src/modules/lds-checkout-shipping-options/components/lds-checkout-shipping-options.radio-button.tsx?e0b5","webpack:///./src/modules/lds-checkout-shipping-options/lds-checkout-shipping-options.tsx?2102","webpack:///./src/modules/checkout-terms-and-conditions/components/checkout-terms-and-conditions.error-title.tsx?f908","webpack:///./src/common/get-checkout-return-url.tsx?1758","webpack:///./src/modules/checkout-guest-profile/components/get-show-contact-info.tsx?e9b5","webpack:///./src/modules/checkout-loyalty/components/index.ts?c7e2","webpack:///./src/modules/lds-checkout-terms-and-conditions-4/lds-checkout-terms-and-conditions-4.view.tsx?7433","webpack:///./src/modules/checkout-terms-and-conditions/components/checkout-terms-and-conditions.check-box.tsx?3b17","webpack:///./src/modules/checkout-loyalty/components/checkout-loyalty-text.tsx?895a","webpack:///./src/modules/lds-checkout-delivery-options-4/lds-checkout-delivery-options-4.props.autogenerated.ts?8585","webpack:///./src/modules/lds-checkout-delivery-options-4/components/lds-checkout-delivery-options-4.description.tsx?c748","webpack:///./src/modules/lds-checkout-delivery-options-4/components/lds-checkout-delivery-options-4.error-message.tsx?639c","webpack:///./src/modules/lds-checkout-delivery-options-4/components/lds-checkout-delivery-options-4.error-title.tsx?0d57","webpack:///./src/modules/lds-checkout-delivery-options-4/components/lds-checkout-delivery-options-4.radio-button.tsx?6a24","webpack:///./src/modules/lds-checkout-delivery-options-4/lds-checkout-delivery-options-4.tsx?636b","webpack:///./src/modules/lds-checkout-payment-instrument/lds-checkout-payment-instrument.view.tsx?2b20","webpack:///./src/modules/lds-checkout-shipping-options/lds-checkout-shipping-options.view.tsx?2cc5","webpack:///./src/order-summary-lineitem.tsx?8a98","webpack:///./src/modules/checkout-delivery-options/components/checkout-delivery-options.radio-button.tsx?9df9","webpack:///./src/modules/checkout-payment-instrument/components/payment-information.tsx?213f","webpack:///../../src/index.ts?0e3e","webpack:///./src/modules/media-gallery/utils/helper.ts?b895","webpack:///./src/modules/media-gallery/utils/get-valid-product-images.ts?a364","webpack:///./src/modules/media-gallery/media-gallery.tsx?24d7","webpack:///./src/modules/checkout-gift-card/components/get-item.tsx?d186","webpack:///./src/modules/checkout-express-payment-container/checkout-express-payment-container.view.tsx?4299","webpack:///./src/modules/lds-checkout-pickup-4/components/lds-checkout-pickup-4-utility.ts?c279","webpack:///./src/modules/lds-checkout-pickup-4/components/lds-checkout-pickup-4-date-dropdown.tsx?c495","webpack:///./src/modules/lds-checkout-pickup-4/components/lds-checkout-pickup-4-timeslot-dropdown.tsx?f37a","webpack:///./src/modules/lds-checkout-contact-4/lds-checkout-contact-4.view.tsx?887a","webpack:///./src/modules/checkout-section-container/index.ts?d045","webpack:///./src/modules/checkout-gift-card/index.ts?cf2f","webpack:///./src/modules/checkout-terms-and-conditions/components/index.ts?ee9a","webpack:///./src/modules/active-image/active-image.view.tsx?a935","webpack:///./src/modules/checkout-delivery-options/components/checkout-delivery-options.error-message.tsx?8ca3","webpack:///./src/modules/lds-checkout-pickup-4/lds-checkout-pickup-4.view.tsx?1529","webpack:///./src/modules/checkout-terms-and-conditions/components/checkout-terms-and-conditions.error-message.tsx?c6a5","webpack:///./src/modules/checkout-guest-profile/index.ts?933a","webpack:///./src/modules/checkout-guest-profile/components/get-add-contact-info.tsx?c9f6","webpack:///../../../src/module-state-manager/with-module-state.tsx?61ca","webpack:///./src/modules/lds-checkout-customer-account-payment-4/components/get-account-payment-form-edit-mode.tsx?ea4d","webpack:///./src/modules/lds-checkout-customer-account-payment-4/components/get-account-payment-form-summary-mode.tsx?e242","webpack:///./src/modules/lds-checkout-customer-account-payment-4/lds-checkout-customer-account-payment-4.tsx?bb25","webpack:///./src/modules/checkout-gift-card/components/get-form.tsx?4540","webpack:///./src/modules/checkout-gift-card/checkout-gift-card.tsx?8fc3","webpack:///../../src/checkout-state.ts?acd8","webpack:///./src/modules/checkout-loyalty/index.ts?6df4","webpack:///./src/modules/checkout-gift-card/components/get-list.tsx?a3f3","webpack:///./src/common/index.ts?f3e7","webpack:///./src/modules/checkout/index.ts?ffcc","webpack:///./src/modules/checkout-guest-profile/checkout-guest-profile.view.tsx?2e47","webpack:///./src/modules/checkout-loyalty/checkout-loyalty.view.tsx?b79f","webpack:///./src/modules/checkout/checkout.view.tsx?e4cc","webpack:///./src/modules/checkout/components/get-invoice-payment-summary.tsx?9549","webpack:///./src/modules/checkout/checkout.tsx?6737","webpack:///./src/checkout-errors/checkout-errors.ts?a9e0","webpack:///./src/common/error.tsx?096f","webpack:///./src/modules/gift-card-balance-check/components/get-form.tsx?e249","webpack:///./src/modules/gift-card-balance-check/components/get-item.tsx?4862","webpack:///./src/modules/gift-card-balance-check/gift-card-balance-check.tsx?d1f8","webpack:///./src/modules/checkout-express-payment-container/checkout-express-payment-container.tsx?1d63","webpack:///../../../src/module-state-manager/module-state.ts?7579","webpack:///./src/modules/lds-checkout-payment-instrument-2/lds-checkout-payment-instrument-2.view.tsx?69dc","webpack:///./src/common/checkout.tsx?29a4","webpack:///./src/modules/checkout-terms-and-conditions/index.ts?c226","webpack:///./src/modules/checkout-loyalty/components/checkout-loyalty-input.tsx?cadb","webpack:///./src/modules/lds-checkout-terms-and-conditions/lds-checkout-terms-and-conditions.view.tsx?e228","webpack:///./src/modules/checkout-guest-profile/components/index.ts?c035","webpack:///./src/common/iframe.tsx?feca","webpack:///./src/modules/media-gallery/media-gallery.view.tsx?5061","webpack:///./src/common/country-codes.tsx?befd","webpack:///./src/modules/active-image-utilities/active-product.tsx?69b2","webpack:///./src/modules/active-image-utilities/additional-content.tsx?6946","webpack:///./src/modules/active-image-utilities/image-mapper.tsx?dd86","webpack:///./src/modules/active-image/active-image.tsx?00d3","webpack:///./src/modules/lds-checkout-terms-and-conditions/components/lds-checkout-terms-and-conditions.check-box.tsx?0f1d","webpack:///./src/modules/lds-checkout-terms-and-conditions/components/lds-checkout-terms-and-conditions.error-message.tsx?22f5","webpack:///./src/modules/lds-checkout-terms-and-conditions/components/lds-checkout-terms-and-conditions.error-title.tsx?33ad","webpack:///./src/modules/lds-checkout-terms-and-conditions/lds-checkout-terms-and-conditions.tsx?b0cd","webpack:///./src/modules/lds-checkout-contact-4/components/get-add-contact-info.tsx?d50d","webpack:///./src/modules/lds-checkout-contact-4/components/get-show-contact-info.tsx?e60e","webpack:///./src/modules/lds-checkout-contact-4/lds-checkout-contact-4.tsx?e551","webpack:///./src/modules/checkout-section-container/components/loading.tsx?2e57","webpack:///./src/modules/lds-checkout-customer-account-payment-4/lds-checkout-customer-account-payment-4.view.tsx?2d7a","webpack:///./src/common/with-visibility-observer.tsx?95e4","webpack:///./src/modules/lds-checkout-contact-section/lds-checkout-contact-section.view.tsx?ad40","webpack:///./src/common/payment-instrument-message.ts?53ea","webpack:///./src/modules/lds-checkout-4/components/alert.tsx?2308","webpack:///./src/modules/lds-checkout-4/components/get-invoice-payment-summary.tsx?86e7","webpack:///./src/modules/lds-checkout-4/components/get-line-items.tsx?6a25","webpack:///./src/modules/lds-checkout-4/components/get-order-summary.tsx?a908","webpack:///./src/modules/lds-checkout-4/components/guided-card.tsx?151f","webpack:///./src/modules/lds-checkout-4/components/guided-form.tsx?0acc","webpack:///./src/modules/lds-checkout-4/components/place-order-button.tsx?d574","webpack:///./src/modules/lds-checkout-4/lds-checkout-4.tsx?d558","webpack:///./src/modules/lds-checkout-4/methods/place-order.ts?6f30","webpack:///./src/modules/checkout/components/alert.tsx?cb1e","webpack:///./src/modules/checkout-section-container/checkout-section-container.view.tsx?b4ab","webpack:///./src/modules/checkout-gift-card/checkout-gift-card.view.tsx?d99f","webpack:///./src/modules/checkout-guest-profile/checkout-guest-profile.tsx?c2ce","webpack:///./src/modules/lds-checkout-payment-instrument/components/payment-information.tsx?8193","webpack:///./src/modules/lds-checkout-payment-instrument/lds-checkout-payment-instrument.tsx?7a3f","webpack:///./src/modules/lds-checkout-pickup-4/components/lds-checkout-pickup-4-group.tsx?08f6","webpack:///./src/modules/checkout-section-container/checkout-section-container.tsx?c853","webpack:///./src/modules/lds-checkout-payment-instrument-2/components/payment-information.tsx?3395","webpack:///./src/modules/lds-checkout-payment-instrument-2/lds-checkout-payment-instrument-2.tsx?8ba7","webpack:///./src/modules/checkout/components/place-order-button.tsx?9b41","webpack:///../../../src/module-state-manager/index.ts?8e3a","webpack:///./src/common/waiting.tsx?8095","webpack:///./src/modules/lds-checkout-delivery-options-4/lds-checkout-delivery-options-4.view.tsx?5f86","webpack:///./src/modules/checkout-gift-card/components/index.ts?5d18","webpack:///./src/modules/checkout/components/get-order-summary.tsx?4a81","webpack:///./src/modules/checkout/methods/checkout.ts?7b6b","webpack:///./src/common/add-payment-form.tsx?1cf5","webpack:///./src/modules/gift-card-balance-check/gift-card-balance-check.view.tsx?a0c9","webpack:///./src/modules/checkout-loyalty/checkout-loyalty.tsx?8b4b","webpack:///./src/modules/lds-checkout-4/lds-checkout-4.view.tsx?a205","webpack:///../../src/checkout-utilities.data.ts?b2cc","webpack:///./src/index.ts?ffb4","webpack:///./src/modules/checkout-payment-instrument/checkout-payment-instrument.tsx?17da","webpack:///./src/modules/checkout-delivery-options/checkout-delivery-options.view.tsx?1e75","webpack:///./src/modules/lds-checkout-contact-section/components/get-add-contact-info.tsx?e7b0","webpack:///./src/modules/lds-checkout-contact-section/components/get-show-contact-info.tsx?4484","webpack:///./src/modules/lds-checkout-contact-section/lds-checkout-contact-section.tsx?9bd2","webpack:///./src/modules/checkout-payment-instrument/index.ts?dc38","webpack:///./src/modules/checkout/components/guided-card.tsx?58e0","webpack:///./src/modules/checkout/components/guided-form.tsx?f018","webpack:///./src/modules/checkout-delivery-options/components/checkout-delivery-options.error-title.tsx?f7e7","webpack:///./src/invoice-summary-lineitem.tsx?5f61","webpack:///../../src/checkout-state-data-action.ts?8344","webpack:///./src/modules/checkout-delivery-options/index.ts?16f4","webpack:///./src/common/empty-active-cart.tsx?dc76","webpack:///./src/modules/checkout-delivery-options/components/index.ts?4521","webpack:///./src/modules/checkout/methods/place-order.ts?5aa0","webpack:///./src/modules/checkout-express-payment-container/index.ts?85bd"],"sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { PriceComponent } from '@msdyn365-commerce/components';\nimport { CheckoutModule, ErrorLocation, ICheckoutState } from '@msdyn365-commerce/global-state';\nimport { Cart, ChannelDeliveryOptionConfiguration, FilterDeliveryModeOption } from '@msdyn365-commerce/retail-proxy';\nimport { getDeliveryOptionsAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g';\nimport { Address, CartLine, DeliveryOption } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\nimport { QueryResultSettingsProxy, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, Waiting } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport get from 'lodash/get';\nimport { action, computed, observable, reaction, when } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { ErrorComponent } from '../../common/error';\nimport { ICheckoutDeliveryOptionsData } from './checkout-delivery-options.data';\nimport {\n filterDeliveryModeOption,\n ICheckoutDeliveryOptionsProps,\n useDefaultDeliveryOption\n} from './checkout-delivery-options.props.autogenerated';\nimport DescriptionComponent from './components/checkout-delivery-options.description';\nimport ErrorMessageComponent from './components/checkout-delivery-options.error-message';\nimport ErrorTitleComponent from './components/checkout-delivery-options.error-title';\nimport RadioButtonComponent from './components/checkout-delivery-options.radio-button';\nimport { focusOnCheckoutError } from '../../checkout-errors';\n\nexport interface ICheckoutDeliveryOptionsModuleProps\n extends ICheckoutDeliveryOptionsProps,\n IModuleStateProps {}\n\nexport interface ICheckoutDeliveryOption {\n DeliveryOption: INodeProps;\n description?: React.ReactNode;\n price?: React.ReactNode;\n}\n\nexport interface ICheckoutDeliveryOptionEdit extends ICheckoutDeliveryOption {\n code: string;\n radioButton?: React.ReactNode;\n}\n\nexport interface ICheckoutDeliveryOptionsList {\n DeliveryOptionsList: INodeProps;\n list: ICheckoutDeliveryOptionEdit[];\n}\n\nexport interface ICheckoutDeliveryOptionsError {\n Error: INodeProps;\n title: React.ReactNode;\n message: React.ReactNode;\n}\n\nexport interface ICheckoutDeliveryOptionsViewState {\n isLoading: boolean;\n isError: boolean;\n isShowList: boolean;\n isShowSelected: boolean;\n isShowSaveButton: boolean;\n isShowEditButton: boolean;\n isShowCancelButton: boolean;\n}\n\nexport interface ICheckoutDeliveryOptionsViewProps extends ICheckoutDeliveryOptionsProps<{}> {\n CheckoutDeliveryOptions: IModuleProps;\n selectedItemId: string;\n deliveryOptionsData: DeliveryOption[];\n isLoading: boolean;\n errorMessageData: string;\n viewState: ICheckoutDeliveryOptionsViewState;\n deliveryOptions?: ICheckoutDeliveryOptionsList;\n deliveryOptionSelected?: ICheckoutDeliveryOption;\n errorMessage?: ICheckoutDeliveryOptionsError;\n waiting?: React.ReactNode;\n saveButton?: React.ReactNode;\n editButton?: React.ReactNode;\n cancelButton?: React.ReactNode;\n alert?: React.ReactNode;\n checkoutErrorRef?: React.RefObject;\n onDeliveryOptionChange(event: React.ChangeEvent): void;\n onSave(): void;\n onEdit(): void;\n onCancel(): void;\n}\n\n/**\n *\n * CheckoutDeliveryOptions component.\n * @extends {React.Component>}\n */\n// @ts-expect-error\n@withModuleState\n@observer\nclass CheckoutDeliveryOptions extends React.Component {\n @observable private selectedItemId: string = '';\n\n @observable private deliveryOptions: DeliveryOption[] = [];\n\n @observable private isLoading: boolean = false;\n\n @observable private errorMessage?: string;\n\n @computed private get isDataReady(): boolean {\n return (this.props.data.checkout.result && this.props.data.checkout.status) === 'SUCCESS';\n }\n\n public get expressPaymentDetailsFromCartPage() {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\n const properties =\n this.props.data.cart?.result?.cart?.ExtensionProperties?.find(property => property.Key === 'expressPaymentDetails')?.Value\n ?.StringValue ?? '';\n\n return properties ? JSON.parse(properties) : null;\n }\n\n public get isExpressPaymentAppliedInCartPage(): boolean {\n return this.expressPaymentDetailsFromCartPage?.isExpressCheckoutAppliedInCartPage ?? false;\n }\n\n private cartDeliveryMode?: string;\n\n private retailMultiplePickUpOptionEnabled?: boolean = false;\n\n private channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration;\n\n private readonly telemetryContent?: ITelemetryContent;\n\n private readonly isSelectDefaultOptionEnabled?: boolean;\n\n private readonly checkoutErrorRef: React.RefObject = React.createRef();\n\n public constructor(props: ICheckoutDeliveryOptionsModuleProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.isSelectDefaultOptionEnabled =\n this.props.config.useDefaultDeliveryOption && this.props.config.useDefaultDeliveryOption !== useDefaultDeliveryOption.none;\n }\n\n public async componentDidMount(): Promise {\n when(\n () => this.isDataReady,\n async () => {\n await this.init();\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.shippingAddress,\n async () => {\n await this.loadDeliveryOptions();\n this.props.moduleState.setIsCancellable(false);\n\n await this.props.data.checkout.result?.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: true });\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.isExpressCheckoutApplied,\n async isExpressCheckoutApplied => {\n if (isExpressCheckoutApplied && this.canShip() && !this.isExpressPaymentAppliedInCartPage) {\n await this.loadDeliveryOptions();\n this.props.moduleState.setIsCancellable(false);\n\n await this.props.data.checkout.result?.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: true });\n }\n }\n );\n\n if (this.props.data.checkout.result?.shouldEnableCheckoutErrorDisplayMessaging) {\n reaction(\n () => this.props.data.checkout.result?.checkoutError,\n checkoutError => {\n if (\n checkoutError &&\n checkoutError.errorLocation === ErrorLocation.CheckoutDeliveryOptions &&\n checkoutError.errorMessage\n ) {\n this.setError(checkoutError.errorMessage);\n }\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.checkoutErrorFocus,\n checkoutErrorFocus => {\n if (checkoutErrorFocus === CheckoutModule.CheckoutDeliveryOptions) {\n focusOnCheckoutError(this.checkoutErrorRef, this.props.context.actionContext);\n }\n }\n );\n }\n }\n\n public shouldComponentUpdate(nextProps: ICheckoutDeliveryOptionsModuleProps, nextState: ICheckoutDeliveryOptionsViewState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n this.channelDeliveryOptionConfig = this.props.data.channelDeliveryOptionConfig?.result;\n this.retailMultiplePickUpOptionEnabled = this.props.data.featureState?.result?.find(\n feature => feature.Name === multiplePickupStoreSwitchName\n )?.IsEnabled;\n\n if (!this.canShip()) {\n this.props.context.telemetry.error('Checkout delivery options content is empty, module wont render');\n return null;\n }\n\n const {\n moduleState: { isReady, isUpdating, hasError }\n } = this.props;\n const isError = !this.isLoading && hasError;\n const isShowList = !this.isLoading && !hasError && isUpdating && !this.isSelectDefaultOptionEnabled;\n const isShowSelected = !this.isLoading && !hasError && isReady;\n const { errorMessageTitle, deliveryOptionAriaLabel } = this.props.resources;\n\n const viewProps = {\n ...this.props,\n onDeliveryOptionChange: this.onDeliveryOptionChange,\n selectedItemId: this.selectedItemId,\n deliveryOptionsData: this.deliveryOptions,\n isLoading: this.isLoading,\n alert: this.errorMessage && ,\n errorMessageData: this.errorMessage,\n viewState: {\n isLoading: this.isLoading,\n isError,\n isShowList,\n isShowSelected,\n isShowSaveButton: isShowList && !this.props.moduleState.hasExternalSubmitGroup,\n isShowEditButton: isShowSelected && !this.props.moduleState.hasExternalSubmitGroup,\n isShowCancelButton: isShowList && !this.props.moduleState.hasExternalSubmitGroup && !!this.getSavedDeliveryOption()\n },\n CheckoutDeliveryOptions: {\n moduleProps: this.props,\n className: classname('ms-checkout-delivery-options', this.props.config.className)\n },\n deliveryOptions: {\n DeliveryOptionsList: {\n className: 'ms-checkout-delivery-options__list',\n role: 'list',\n 'aria-label': deliveryOptionAriaLabel\n },\n list: this.getDeliveryOptionList()\n },\n deliveryOptionSelected: this.getDeliveryOptionSelected(),\n errorMessage: this.getErrorMessage(),\n waiting: ,\n checkoutErrorRef: this.checkoutErrorRef,\n saveButton: this.getSaveButton(),\n editButton: this.getEditButton(),\n cancelButton: this.getCancelButton(),\n onSave: this.onSave,\n onEdit: this.onEdit,\n onCancel: this.onCancel\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n @action\n private readonly init = async (): Promise => {\n this.props.moduleState.init({\n onEdit: this.isSelectDefaultOptionEnabled ? undefined : this.onEdit,\n onCancel: this.isSelectDefaultOptionEnabled ? undefined : this.onCancel,\n onSubmit: this.isSelectDefaultOptionEnabled ? undefined : this.onSubmit,\n status:\n !(this.props.config.useDefaultDeliveryOption === useDefaultDeliveryOption.notDisplaySelectedDeliveryOption) &&\n this.canShip()\n ? 'updating'\n : 'disabled'\n });\n\n this.cartDeliveryMode = this.getSavedDeliveryOption();\n await this.loadDeliveryOptions();\n };\n\n private readonly canShip = (): boolean => {\n const hasInvoice = this.props.data.checkout.result?.checkoutCart.hasInvoiceLine;\n return !hasInvoice && this.getCartLinesForShipping().length > 0;\n };\n\n private readonly isDeliveryModeExists = (deliveryMode: string | undefined): boolean => {\n if (deliveryMode) {\n if (this.deliveryOptions.find(deliveryOption => deliveryOption.Code === deliveryMode)) {\n return true;\n }\n }\n return false;\n };\n\n private readonly getDeliveryOptionSelected = (): ICheckoutDeliveryOption | null => {\n const selectedItem = this.deliveryOptions.find(deliveryOption => deliveryOption.Code === this.selectedItemId);\n if (!selectedItem) {\n this.props.context.telemetry.error('Checkout delivery options content is empty, module wont render');\n return null;\n }\n\n const { id, typeName, context } = this.props;\n const { priceFree } = this.props.resources;\n const price = get(selectedItem, 'ShippingChargeAmount', 0);\n const channelConfig = this.props.context.request.channel;\n return {\n DeliveryOption: { className: 'ms-checkout-delivery-options__option-selected' },\n description: ,\n price: (\n \n )\n };\n };\n\n private readonly getErrorMessage = (): ICheckoutDeliveryOptionsError => {\n const { errorMessageTitle } = this.props.resources;\n return {\n // @ts-expect-error\n CheckoutDeliveryOptionsError: { tag: 'span', className: 'ms-address-form__error', role: 'alert', 'aria-live': 'assertive' },\n title: ,\n message: \n };\n };\n\n private readonly getDeliveryOptionList = (): ICheckoutDeliveryOptionEdit[] => {\n const count = this.deliveryOptions.length;\n const { priceFree } = this.props.resources;\n const { id, typeName, context } = this.props;\n const channelConfig = this.props.context.request.channel;\n\n return this.deliveryOptions.map((deliveryOption: DeliveryOption, index: number) => {\n return {\n DeliveryOption: { className: 'ms-checkout-delivery-options__option', role: 'listitem' },\n code: deliveryOption.Code || '',\n radioButton: (\n \n ),\n description: (\n \n ),\n price: (\n \n )\n };\n });\n };\n\n private readonly getSaveButton = (): React.ReactNode => {\n const { saveBtnLabel = 'Save' } = this.props.resources;\n return (\n \n {saveBtnLabel}\n \n );\n };\n\n private readonly getEditButton = (): React.ReactNode => {\n const { editBtnLabel = 'Change' } = this.props.resources;\n return (\n \n );\n };\n\n private readonly getCancelButton = (): React.ReactNode => {\n const { cancelBtnLabel = 'Cancel' } = this.props.resources;\n return (\n \n );\n };\n\n private readonly setError = (errorMessage: string): void => {\n this.props.telemetry.error(errorMessage);\n this.props.moduleState.setHasError(true);\n this.props.moduleState.onUpdating();\n this.errorMessage = errorMessage;\n };\n\n private readonly clearError = (): void => {\n this.props.moduleState.setHasError(false);\n this.errorMessage = undefined;\n };\n\n private readonly onSave = async (): Promise => {\n await this.onSubmit();\n };\n\n private readonly onEdit = async (): Promise => {\n this.props.telemetry.information('Delivery options onEdit is called.');\n\n this.clearError();\n this.onUpdating();\n await this.props.data.checkout.result?.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: true });\n };\n\n private readonly onSubmit = async (): Promise => {\n this.props.telemetry.information('Delivery options onSubmit is called.');\n\n await this.updateCartDeliverySpecification(this.selectedItemId);\n await this.props.data.checkout.result?.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: false });\n };\n\n private readonly onCancel = async (): Promise => {\n this.props.telemetry.information('Delivery options onCancel is called.');\n\n // Reset to the saved value\n const savedDeliveryOption = this.getSavedDeliveryOption();\n if (savedDeliveryOption) {\n this.selectedItemId = savedDeliveryOption;\n this.onReady();\n\n await this.props.data.checkout.result?.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: false });\n } else {\n this.onUpdating();\n }\n };\n\n private readonly getSavedDeliveryOption = (): string | undefined => {\n const cartLinesForShipping = this.getCartLinesForShipping();\n return cartLinesForShipping[0] && cartLinesForShipping[0].DeliveryMode;\n };\n\n private readonly updateCartDeliverySpecification = async (deliveryModeId: string): Promise => {\n if (deliveryModeId.trim() === '') {\n return;\n }\n\n const { resources } = this.props;\n const checkoutState = this.props.data.checkout.result as ICheckoutState;\n const updateCartDeliverySpecificationInput = {\n deliveryModeId,\n shippingAddress: checkoutState.shippingAddress,\n channelDeliveryOptionConfig: this.retailMultiplePickUpOptionEnabled ? this.channelDeliveryOptionConfig : undefined\n };\n\n this.clearError();\n this.onPending();\n\n await checkoutState.checkoutCart\n .updateCartDeliverySpecification(updateCartDeliverySpecificationInput)\n .then(response => {\n if (response.status === 'FAILED') {\n const errorMessage = `${response.errorDetails?.LocalizedMessage}`;\n this.setError(StringExtensions.isNullOrEmpty(errorMessage) ? resources.genericErrorMessage : errorMessage);\n }\n\n this.onReady();\n this.props.moduleState.setIsCancellable(true);\n })\n .catch(() => {\n this.setError(resources.genericErrorMessage);\n });\n };\n\n private readonly getCartLinesForShipping = (): CartLine[] => {\n const { request } = this.props.context;\n const pickupDeliveryModeCode = request && request.channel && request.channel.PickupDeliveryModeCode;\n const emailDeliveryModeCode = request && request.channel && request.channel.EmailDeliveryModeCode;\n\n return this.retailMultiplePickUpOptionEnabled\n ? ((this.props.data.checkout.result && this.props.data.checkout.result.checkoutCart.cart.CartLines) || []).filter(cartLine =>\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\n ? cartLine.DeliveryMode !==\n this.channelDeliveryOptionConfig?.PickupDeliveryModeCodes?.find(\n deliveryMode => deliveryMode === cartLine.DeliveryMode\n ) && cartLine.DeliveryMode !== emailDeliveryModeCode\n : cartLine\n )\n : ((this.props.data.checkout.result && this.props.data.checkout.result.checkoutCart.cart.CartLines) || []).filter(cartLine =>\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\n ? cartLine.DeliveryMode !== pickupDeliveryModeCode && cartLine.DeliveryMode !== emailDeliveryModeCode\n : cartLine\n );\n };\n\n private readonly getDeliveryOptions = async (shippingAddress: Address): Promise => {\n if (!this.props.data.checkout.result) {\n return;\n }\n\n const { context, resources, config } = this.props;\n const cartState = this.props.data.checkout.result?.checkoutCart;\n const cartId = (cartState.cart as Cart).Id;\n\n if (context) {\n this.isLoading = true;\n this.deliveryOptions = [];\n this.selectedItemId = '';\n this.clearError();\n\n try {\n let originalDeliveryMode: string = '';\n const shippingCartLines = this.getCartLinesForShipping();\n const hasShippingDeliveryLines = shippingCartLines && shippingCartLines.length > 0 && shippingCartLines[0].DeliveryMode;\n if (hasShippingDeliveryLines) {\n // First store the delivery mode, so that we can restore the shipping information.\n originalDeliveryMode = shippingCartLines[0].DeliveryMode || '';\n\n // Clear the delivery information on retail server, so GetDeliveryOptions charge calculation works correctly\n const cart = cartState.cart;\n await cartState.clearCartLinesDeliveryInformation({\n cart,\n channelDeliveryOptionConfiguration: this.channelDeliveryOptionConfig\n });\n }\n\n // TODO: Check if we can move this getDeliveryOptions to checkout state\n let deliveryOptionFilter: FilterDeliveryModeOption;\n switch (config.filterDeliveryModeOption) {\n case filterDeliveryModeOption.none:\n deliveryOptionFilter = FilterDeliveryModeOption.None;\n break;\n case filterDeliveryModeOption.filterOutNonCarrierDeliveryMode:\n deliveryOptionFilter = FilterDeliveryModeOption.FilterOutNonCarrierDeliveryMode;\n break;\n default:\n deliveryOptionFilter = FilterDeliveryModeOption.FilterOutNonCarrierDeliveryMode;\n }\n const response = await getDeliveryOptionsAsync(\n {\n callerContext: context.actionContext,\n queryResultSettings: QueryResultSettingsProxy.getPagingFromInputDataOrDefaultValue(context.actionContext)\n },\n cartId,\n shippingAddress,\n [],\n deliveryOptionFilter,\n true\n );\n\n if (hasShippingDeliveryLines) {\n await this.updateCartDeliverySpecification(originalDeliveryMode);\n }\n\n if (response && response.length > 0) {\n this.deliveryOptions = response;\n }\n } catch {\n this.setError(resources.genericErrorMessage);\n }\n\n if (this.deliveryOptions.length === 0) {\n this.setError(resources.deliveryOptionsNotFound);\n } else if (this.cartDeliveryMode && this.isDeliveryModeExists(this.cartDeliveryMode)) {\n this.selectedItemId = this.cartDeliveryMode;\n this.cartDeliveryMode = undefined;\n this.onReady();\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\n this.props.data.checkout.result?.updateHasCartDeliveryMode({ newHasCartDeliveryMode: true });\n\n if (!this.props.data.checkout.result?.isPaymentVerificationRedirection) {\n await this.props.data.checkout.result.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: false });\n }\n } else {\n this.onUpdating();\n this.selectedItemId = this.deliveryOptions.length > 0 ? this.deliveryOptions[0].Code || '' : ''; // By default, select first delivery\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\n this.props.data.checkout.result?.updateHasCartDeliveryMode({ newHasCartDeliveryMode: !!this.isSelectDefaultOptionEnabled });\n }\n\n this.isLoading = false;\n }\n };\n\n private readonly getStoredDeliveryOptions = async (): Promise => {\n if (!this.props.data.checkout.result) {\n return;\n }\n\n const { context } = this.props;\n const cartState = this.props.data.checkout.result.checkoutCart;\n\n if (context) {\n this.isLoading = true;\n this.deliveryOptions = [];\n this.selectedItemId = '';\n this.clearError();\n\n let originalDeliveryMode: string = '';\n const shippingCartLines = this.getCartLinesForShipping();\n const hasShippingDeliveryLines = shippingCartLines && shippingCartLines.length > 0 && shippingCartLines[0].DeliveryMode;\n if (hasShippingDeliveryLines) {\n // First store the delivery mode, so that we can restore the shipping information.\n originalDeliveryMode = shippingCartLines[0].DeliveryMode || '';\n\n // Clear the delivery information on retail server, so GetDeliveryOptions charge calculation works correctly\n const cart = cartState.cart;\n await cartState.clearCartLinesDeliveryInformation({\n cart,\n channelDeliveryOptionConfiguration: this.channelDeliveryOptionConfig\n });\n if (hasShippingDeliveryLines) {\n await this.updateCartDeliverySpecification(originalDeliveryMode);\n }\n }\n\n if (this.cartDeliveryMode) {\n this.selectedItemId = this.cartDeliveryMode;\n this.cartDeliveryMode = undefined;\n this.onReady();\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\n this.props.data.checkout.result?.updateHasCartDeliveryMode({ newHasCartDeliveryMode: true });\n\n if (!this.props.data.checkout.result.isPaymentVerificationRedirection) {\n await this.props.data.checkout.result.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: false });\n }\n }\n\n this.isLoading = false;\n }\n };\n\n private readonly loadDeliveryOptions = async (): Promise => {\n const shippingAddress = this.props.data.checkout.result?.shippingAddress;\n\n if (this.canShip() && shippingAddress) {\n if (\n !this.props.data.checkout.result?.isPaymentVerificationRedirection ||\n this.isSelectDefaultOptionEnabled ||\n this.props.data.checkout.result?.isExpressCheckoutApplied\n ) {\n await this.getDeliveryOptions(shippingAddress);\n }\n\n if (this.props.data.checkout.result?.isPaymentVerificationRedirection) {\n await this.getStoredDeliveryOptions();\n }\n\n if (\n this.isSelectDefaultOptionEnabled ||\n this.props.data.checkout.result?.isExpressCheckoutApplied ||\n this.isExpressPaymentAppliedInCartPage\n ) {\n this.onSubmit();\n }\n }\n };\n\n private readonly onDeliveryOptionChange = (event: React.ChangeEvent) => {\n const deliveryModeId = event.currentTarget.value;\n this.selectedItemId = deliveryModeId;\n };\n\n private readonly onReady = () => {\n if (!(this.props.config.useDefaultDeliveryOption === useDefaultDeliveryOption.notDisplaySelectedDeliveryOption)) {\n this.props.moduleState.onReady();\n }\n };\n\n private readonly onUpdating = () => {\n if (!(this.props.config.useDefaultDeliveryOption === useDefaultDeliveryOption.notDisplaySelectedDeliveryOption)) {\n this.props.moduleState.onUpdating();\n }\n };\n\n private readonly onPending = () => {\n if (!this.isSelectDefaultOptionEnabled) {\n this.props.moduleState.onPending();\n }\n };\n}\n\nexport default CheckoutDeliveryOptions;\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport interface ICheckoutTermsAndConditionsCheckboxProps {\r\n isChecked: boolean;\r\n ariaLabel?: string;\r\n disabled: boolean;\r\n id?: string;\r\n telemetryContent?: ITelemetryContent;\r\n onChange(event: React.ChangeEvent): void;\r\n}\r\n\r\n/**\r\n * AddPaymentForm SFC.\r\n * @param root0\r\n * @param root0.isChecked\r\n * @param root0.ariaLabel\r\n * @param root0.disabled\r\n * @param root0.telemetryContent\r\n * @param root0.onChange\r\n * @param root0.id\r\n * @extends {React.FC}\r\n */\r\nconst CheckoutTermsAndConditionsCheckbox: React.FC = ({\r\n isChecked,\r\n ariaLabel,\r\n disabled,\r\n telemetryContent,\r\n onChange,\r\n id\r\n}) => {\r\n const payLoad = getPayloadObject('click', telemetryContent!, '');\r\n const attribute = getTelemetryAttributes(telemetryContent!, payLoad);\r\n\r\n return (\r\n <>\r\n \r\n \r\n );\r\n};\r\n\r\nexport default CheckoutTermsAndConditionsCheckbox;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as React from 'react';\r\n\r\nexport interface ICheckoutTermsAndConditionsErrorMessageProps {\r\n message?: string;\r\n}\r\n\r\n/**\r\n * AddPaymentForm SFC.\r\n * @param root0\r\n * @param root0.message\r\n * @extends {React.FC}\r\n */\r\nconst CheckoutTermsAndConditionsErrorMessage: React.FC = ({ message }) => {\r\n if (!message) {\r\n return null;\r\n }\r\n\r\n return

{message}

;\r\n};\r\n\r\nexport default CheckoutTermsAndConditionsErrorMessage;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as React from 'react';\r\n\r\nexport interface ICheckoutTermsAndConditionsErrorTitleProps {\r\n title?: string;\r\n}\r\n\r\n/**\r\n * AddPaymentForm SFC.\r\n * @param root0\r\n * @param root0.title\r\n * @extends {React.FC}\r\n */\r\nconst CheckoutTermsAndConditionsErrorTitle: React.FC = ({ title }) => {\r\n if (!title) {\r\n return null;\r\n }\r\n\r\n return

{title}

;\r\n};\r\n\r\nexport default CheckoutTermsAndConditionsErrorTitle;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as MsDyn365 from '@msdyn365-commerce/core';\r\nimport { IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\r\nimport { Button, getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport { CheckoutModule, ErrorLocation } from '@msdyn365-commerce/global-state';\r\nimport classname from 'classnames';\r\nimport { action, computed, observable, reaction, when } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport { ILdsCheckoutTermsAndConditions4Data } from './lds-checkout-terms-and-conditions-4.data';\r\nimport { ILdsCheckoutTermsAndConditions4Props } from './lds-checkout-terms-and-conditions-4.props.autogenerated';\r\nimport CheckboxComponent from './components/lds-checkout-terms-and-conditions-4.check-box';\r\nimport ErrorMessageComponent from './components/lds-checkout-terms-and-conditions-4.error-message';\r\nimport ErrorTitleComponent from './components/lds-checkout-terms-and-conditions-4.error-title';\r\nimport { focusOnCheckoutError } from '@msdyn365-commerce-modules/checkout';\r\nimport { IChurchRetailChannelPolicyEntity } from '../../actions/DataServiceEntities.g';\r\n\r\nexport interface ICheckoutTermsAndConditionsModuleProps\r\n extends ILdsCheckoutTermsAndConditions4Props,\r\n IModuleStateProps {}\r\n\r\nexport interface ICheckoutTermsAndConditions {\r\n termsAndConditionAcceptance: INodeProps;\r\n checkBox: React.ReactNode;\r\n description: React.ReactNode;\r\n}\r\n\r\nexport interface ICheckoutTermsAndConditionsError {\r\n error: INodeProps;\r\n title: React.ReactNode;\r\n message: React.ReactNode;\r\n}\r\n\r\nexport interface ICheckoutTermsAndConditionsViewState {\r\n isError: boolean;\r\n isShowSaveButton: boolean;\r\n isShowEditButton: boolean;\r\n isShowCancelButton: boolean;\r\n}\r\n\r\nexport interface ICheckoutTermsAndConditionsViewProps extends ILdsCheckoutTermsAndConditions4Props<{}> {\r\n checkoutTermsAndConditions: IModuleProps;\r\n isTermsAccepted: boolean;\r\n errorMessageData: string;\r\n viewState: ICheckoutTermsAndConditionsViewState;\r\n termsAndConditionsContent: ICheckoutTermsAndConditions;\r\n salesAndRefundPolicy?: IChurchRetailChannelPolicyEntity | undefined;\r\n errorMessage?: ICheckoutTermsAndConditionsError;\r\n saveButton?: React.ReactNode;\r\n editButton?: React.ReactNode;\r\n cancelButton?: React.ReactNode;\r\n checkoutErrorRef?: React.RefObject;\r\n onChange(event: React.ChangeEvent): void;\r\n onSave(): void;\r\n onEdit(): void;\r\n onCancel(): void;\r\n}\r\n\r\n/**\r\n *\r\n * CheckoutTermsAndConditions component.\r\n * @extends {React.Component>}\r\n */\r\n// @ts-expect-error\r\n@withModuleState\r\n@observer\r\nclass CheckoutTermsAndConditions extends React.Component {\r\n private readonly telemetryContent: ITelemetryContent;\r\n\r\n private readonly checkoutErrorRef: React.RefObject = React.createRef();\r\n\r\n @observable private isTermsAccepted: boolean = true;\r\n\r\n @observable private errorMessage?: string;\r\n\r\n constructor(props: ICheckoutTermsAndConditionsModuleProps) {\r\n super(props);\r\n this.telemetryContent = getTelemetryObject(\r\n this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry\r\n );\r\n }\r\n\r\n @computed get isDataReady(): boolean {\r\n return (this.props.data.checkout.result && this.props.data.checkout.status) === 'SUCCESS';\r\n }\r\n\r\n @computed get isShowButtons(): boolean {\r\n const { showControlButtons } = this.props.config;\r\n return !this.props.moduleState.hasExternalSubmitGroup && (showControlButtons || false);\r\n }\r\n\r\n @computed get isAutoSave(): boolean {\r\n const { showControlButtons } = this.props.config;\r\n return !this.props.moduleState.hasExternalSubmitGroup && !showControlButtons;\r\n }\r\n\r\n @computed get defaultTermsAndConditionAcceptedValue(): boolean {\r\n const { showCheckbox } = this.props.config;\r\n return !showCheckbox;\r\n }\r\n\r\n public async componentDidMount(): Promise {\r\n when(\r\n () => this.isDataReady,\r\n async () => {\r\n await this.init();\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.props.data.checkout.result && this.props.data.checkout.result.isTermsAndConditionAccepted,\r\n async () => {\r\n this.isTermsAccepted =\r\n this.props.data.checkout.result?.isTermsAndConditionAccepted || this.defaultTermsAndConditionAcceptedValue;\r\n }\r\n );\r\n\r\n if (this.props.data.checkout.result?.shouldEnableCheckoutErrorDisplayMessaging) {\r\n reaction(\r\n () => this.props.data.checkout.result?.checkoutError,\r\n checkoutError => {\r\n if (\r\n checkoutError &&\r\n checkoutError.errorLocation === ErrorLocation.CheckoutTermsAndConditions &&\r\n checkoutError.errorMessage\r\n ) {\r\n this.setError(checkoutError.errorMessage);\r\n }\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.props.data.checkout.result?.checkoutErrorFocus,\r\n checkoutErrorFocus => {\r\n if (checkoutErrorFocus === CheckoutModule.CheckoutTermsAndConditions) {\r\n void focusOnCheckoutError(this.checkoutErrorRef, this.props.context.actionContext);\r\n }\r\n }\r\n );\r\n }\r\n }\r\n\r\n public shouldComponentUpdate(\r\n nextProps: ICheckoutTermsAndConditionsModuleProps,\r\n nextState: ICheckoutTermsAndConditionsViewState\r\n ): boolean {\r\n if (this.state === nextState && this.props === nextProps) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const {\r\n moduleState: { isReady, hasError },\r\n config: { className }\r\n } = this.props;\r\n const isTermsAndConditionAccepted = this.props.data.checkout.result?.isTermsAndConditionAccepted;\r\n const isError = hasError;\r\n const isShowContent = !isReady;\r\n const isShowSelected = !hasError && isReady;\r\n\r\n const policies = this.props.data.policy.result;\r\n const salesAndRefundPolicy = policies?.find((policy: any) => policy.USEFORCHECKOUT === 1 || policy.UseForCheckout === 1);\r\n\r\n const viewProps = {\r\n ...this.props,\r\n ...this.state,\r\n salesAndRefundPolicy,\r\n isTermsAccepted: this.isTermsAccepted,\r\n errorMessageData: this.errorMessage,\r\n checkoutErrorRef: this.checkoutErrorRef,\r\n viewState: {\r\n isError,\r\n isShowSaveButton: isShowContent && this.isShowButtons,\r\n isShowEditButton: isShowSelected && this.isShowButtons,\r\n isShowCancelButton: isShowContent && this.isShowButtons && isTermsAndConditionAccepted\r\n },\r\n checkoutTermsAndConditions: {\r\n moduleProps: this.props,\r\n className: classname('ms-checkout-terms-and-conditions', className)\r\n },\r\n termsAndConditionsContent: this.getTermsAndConditions(),\r\n errorMessage: this.getErrorMessage(),\r\n saveButton: this.getSaveButton(),\r\n editButton: this.getEditButton(),\r\n cancelButton: this.getCancelButton(),\r\n onSave: this.onSubmit,\r\n onEdit: this.onEdit,\r\n onCancel: this.onCancel,\r\n onChange: this.onChange\r\n };\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n public handleTextChange = (event: MsDyn365.ContentEditableEvent) => (this.props.config.description = event.target.value);\r\n\r\n private readonly getTermsAndConditions = (): ICheckoutTermsAndConditions => {\r\n const {\r\n moduleState: { isReady },\r\n config: { showCheckbox, description }\r\n } = this.props;\r\n const isDisabled = isReady && !this.isAutoSave;\r\n const isTermsAndConditionAccepted = this.isTermsAccepted;\r\n const { checkboxAriaLabel } = this.props.resources;\r\n return {\r\n termsAndConditionAcceptance: { className: 'ms-checkout-terms-and-conditions__container' },\r\n checkBox: showCheckbox && (\r\n \r\n ),\r\n description: (\r\n \r\n )\r\n };\r\n };\r\n\r\n @action\r\n private readonly init = async (): Promise => {\r\n const {\r\n data,\r\n config: { showCheckbox }\r\n } = this.props;\r\n\r\n const hasInvoiceLine = this.props.data.checkout.result?.checkoutCart.hasInvoiceLine;\r\n\r\n // If hasInvoiceLine is true, this is for b2b and isTermsAccepted should be true\r\n if (hasInvoiceLine || data.checkout.result?.isTermsAndConditionAccepted || !showCheckbox) {\r\n await this.updateTermsAndConditionsAcceptance(true);\r\n this.isTermsAccepted = true;\r\n } else if (showCheckbox) {\r\n await this.updateTermsAndConditionsAcceptance(false);\r\n this.isTermsAccepted = false;\r\n }\r\n\r\n this.props.moduleState.init({\r\n onEdit: this.onEdit,\r\n onCancel: this.onCancel,\r\n onSubmit: this.onSubmit,\r\n status: hasInvoiceLine ? 'disabled' : this.isTermsAccepted ? 'ready' : 'updating'\r\n });\r\n };\r\n\r\n private readonly getErrorMessage = (): ICheckoutTermsAndConditionsError => {\r\n const { errorMessageTitle } = this.props.resources;\r\n return {\r\n error: { tag: 'div', className: 'ms-checkout-terms-and-conditions__error', role: 'alert', 'aria-live': 'assertive' },\r\n title: ,\r\n message: \r\n };\r\n };\r\n\r\n private readonly getCancelButton = (): React.ReactNode => {\r\n const { cancelBtnLabel = 'Cancel', cancelBtnAriaLabel } = this.props.resources;\r\n return (\r\n \r\n {cancelBtnLabel}\r\n \r\n );\r\n };\r\n\r\n private readonly getSaveButton = (): React.ReactNode => {\r\n const { saveBtnLabel = 'Save', saveBtnAriaLabel } = this.props.resources;\r\n return (\r\n \r\n {saveBtnLabel}\r\n \r\n );\r\n };\r\n\r\n private readonly getEditButton = (): React.ReactNode => {\r\n const { editBtnLabel = 'Change', editBtnAriaLabel } = this.props.resources;\r\n return (\r\n \r\n {editBtnLabel}\r\n \r\n );\r\n };\r\n\r\n private readonly onEdit = (): void => {\r\n this.props.telemetry.information('Terms and conditions onEdit is called.');\r\n\r\n this.onUpdating();\r\n };\r\n\r\n private readonly onSubmit = async (): Promise => {\r\n this.props.telemetry.information('Terms and conditions onSubmit is called.');\r\n\r\n if (!this.isTermsAccepted) {\r\n if (this.isAutoSave) {\r\n await this.updateTermsAndConditionsAcceptance(this.isTermsAccepted);\r\n } else {\r\n this.setError(this.props.resources.errorMessage);\r\n this.props.moduleState.setHasError(true);\r\n }\r\n } else {\r\n this.clearError();\r\n await this.updateTermsAndConditionsAcceptance(this.isTermsAccepted);\r\n this.props.moduleState.onReady();\r\n }\r\n };\r\n\r\n private readonly onUpdating = () => {\r\n this.props.moduleState.onUpdating();\r\n };\r\n\r\n private readonly setError = (errorMessage: string): void => {\r\n this.props.telemetry.error(errorMessage);\r\n this.props.moduleState.setHasError(true);\r\n this.props.moduleState.onUpdating();\r\n this.errorMessage = errorMessage;\r\n };\r\n\r\n private readonly onCancel = (): void => {\r\n this.props.telemetry.information('Terms and conditions onCancel is called.');\r\n\r\n // Reset to the saved value\r\n if (!this.props.data.checkout.result) {\r\n return;\r\n }\r\n\r\n const isTermsAccepted = this.props.data.checkout.result.isTermsAndConditionAccepted;\r\n if (!isTermsAccepted) {\r\n // It has no saved email, set to status updating and request user to fill the email form\r\n this.props.moduleState.onUpdating();\r\n } else {\r\n // It has saved email, set to status ready\r\n this.isTermsAccepted = true;\r\n this.props.moduleState.setHasError(false);\r\n this.props.moduleState.onReady();\r\n }\r\n };\r\n\r\n private readonly updateTermsAndConditionsAcceptance = async (isTermsAccepted: boolean): Promise => {\r\n if (this.props.data.checkout.result) {\r\n await this.props.data.checkout.result.updateTermsAndConditionsAcceptance({ newIsTermsAndConditionAccepted: isTermsAccepted });\r\n }\r\n };\r\n\r\n private readonly clearError = (): void => {\r\n this.props.moduleState.setHasError(false);\r\n this.errorMessage = undefined;\r\n };\r\n\r\n private readonly onChange = async (event: React.ChangeEvent) => {\r\n const checked = event.target.checked;\r\n this.isTermsAccepted = checked;\r\n\r\n // if (this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout) {\r\n // await this.props.data.checkout.result.updateIsTermsAndConditionsChecked({ newIsTermsAndConditionChecked: checked });\r\n // }\r\n if (this.props.data.checkout.result) {\r\n await this.props.data.checkout.result.updateIsTermsAndConditionsChecked({ newIsTermsAndConditionChecked: checked });\r\n }\r\n\r\n // if (this.isAutoSave) {\r\n // await this.onSubmit();\r\n // }\r\n await this.onSubmit();\r\n };\r\n}\r\n\r\nexport default CheckoutTermsAndConditions;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { CheckoutModule, ErrorLocation, ICheckoutState } from '@msdyn365-commerce/global-state';\r\nimport { getEstimatedPickupTimeslotAvailabilitiesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\r\nimport {\r\n CartLine,\r\n LineDeliverySpecification,\r\n OrgUnitLocation,\r\n PickupTimeslotAvailability,\r\n PickupTimeslotAvailabilitySearchCriteria,\r\n ProductDeliveryOptions,\r\n SimpleProduct\r\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport { IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\r\nimport {\r\n ArrayExtensions,\r\n getFallbackImageUrl,\r\n getSimpleProducts,\r\n ObjectExtensions,\r\n ProductInput\r\n} from '@msdyn365-commerce-modules/retail-actions';\r\nimport { format, IModuleProps, isNullOrWhiteSpace, Waiting } from '@msdyn365-commerce-modules/utilities';\r\nimport classname from 'classnames';\r\nimport { action, computed, observable, reaction, when } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport { ILdsCheckoutPickup4Data } from './lds-checkout-pickup-4.data';\r\nimport { ILdsCheckoutPickup4Props } from './lds-checkout-pickup-4.props.autogenerated';\r\nimport {\r\n CheckoutPickupDateDropdown,\r\n CheckoutPickupError,\r\n CheckoutPickupTimeslotDropdown,\r\n getDate,\r\n getTimeslot,\r\n getUTCDateWithoutTime\r\n} from './components';\r\nimport {\r\n CheckoutPickupAddress,\r\n CheckoutPickupCartLines,\r\n CheckoutPickupGroupHeader,\r\n CheckoutPickupTimeslotInfo,\r\n DefaultImageSettings,\r\n ICheckoutPickupAddressProps,\r\n ICheckoutPickupCartLineInfo,\r\n ICheckoutPickupCartLinesProps,\r\n ICheckoutPickupGroup,\r\n ICheckoutPickupGroupHeaderProps,\r\n ICheckoutPickupGroupViewProps,\r\n ICheckoutPickupTimeslotInfoProps,\r\n PickupTimeslotAvailabilityState\r\n} from './components/lds-checkout-pickup-4-group';\r\nimport { focusOnCheckoutError } from '@msdyn365-commerce-modules/checkout';\r\n\r\nexport interface ICheckoutPickupModuleProps extends ILdsCheckoutPickup4Props, IModuleStateProps {}\r\n\r\nexport interface ICheckoutPickupState {\r\n pickupGroups: ICheckoutPickupGroup[];\r\n}\r\n\r\nexport interface ICheckoutPickupViewState {\r\n isLoading: boolean;\r\n isHeaderError: boolean;\r\n isShowDropdown: boolean;\r\n isShowSelected: boolean;\r\n}\r\n\r\nexport interface ICheckoutPickupViewProps extends ILdsCheckoutPickup4Props<{}> {\r\n checkoutPickup: IModuleProps;\r\n viewState: ICheckoutPickupViewState;\r\n headerError: React.ReactNode;\r\n waiting: React.ReactNode;\r\n pickupGroups: ICheckoutPickupGroupViewProps[];\r\n checkoutErrorRef?: React.RefObject;\r\n}\r\n\r\n/**\r\n *\r\n * CheckoutPickup component.\r\n * @extends {React.Component}\r\n */\r\n// @ts-expect-error\r\n@withModuleState\r\n@observer\r\nclass CheckoutPickup extends React.Component {\r\n private readonly checkoutErrorRef: React.RefObject = React.createRef();\r\n\r\n @observable private isLoading: boolean = false;\r\n\r\n @observable private headerErrorMessage?: string;\r\n\r\n @computed get isDataReady(): boolean {\r\n return (\r\n (this.props.data.checkout.result && this.props.data.checkout.status) === 'SUCCESS' &&\r\n (this.props.data.orgUnitLocations.result && this.props.data.orgUnitLocations.status) === 'SUCCESS'\r\n );\r\n }\r\n\r\n constructor(props: ICheckoutPickupModuleProps) {\r\n super(props);\r\n this.state = { pickupGroups: [] };\r\n\r\n this.setDateHandler = this.setDateHandler.bind(this);\r\n this.setTimeslotHandler = this.setTimeslotHandler.bind(this);\r\n }\r\n\r\n public componentDidMount(): void {\r\n when(\r\n () => this.isDataReady,\r\n async () => {\r\n await this.initPickupGroup();\r\n this.initModuleState();\r\n }\r\n );\r\n\r\n if (this.props.data.checkout.result?.shouldEnableCheckoutErrorDisplayMessaging) {\r\n reaction(\r\n () => this.props.data.checkout.result?.checkoutError,\r\n checkoutError => {\r\n if (checkoutError && checkoutError.errorLocation === ErrorLocation.CheckoutPickup && checkoutError.errorMessage) {\r\n this.setError(checkoutError.errorMessage);\r\n }\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.props.data.checkout.result?.checkoutErrorFocus,\r\n checkoutErrorFocus => {\r\n if (checkoutErrorFocus === CheckoutModule.CheckoutPickup) {\r\n void focusOnCheckoutError(this.checkoutErrorRef, this.props.context.actionContext);\r\n }\r\n }\r\n );\r\n }\r\n }\r\n\r\n public shouldComponentUpdate(nextProps: ICheckoutPickupModuleProps, nextState: ICheckoutPickupState): boolean {\r\n if (this.state === nextState && this.props.data === nextProps.data) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n if (!this.isDataReady || !this.canPickup()) {\r\n return null;\r\n }\r\n\r\n const { resources, config, context } = this.props;\r\n\r\n const {\r\n pickupDateLabel,\r\n pickupTimeslotLabel,\r\n pickupDateDefaultText,\r\n pickupTimeslotDefaultText,\r\n itemsText,\r\n singleItemText,\r\n pickupDateTimeslotText,\r\n pickupTimeslotPlaceHolder,\r\n pickupLocationLabel\r\n } = resources;\r\n\r\n const { locale } = context.request;\r\n const { className, imageSettings } = config;\r\n const defaultClassName = 'ms-checkout-pickup';\r\n const groupsViewProps: ICheckoutPickupGroupViewProps[] = [];\r\n\r\n this.state.pickupGroups.forEach((value, index) => {\r\n // Divider line for each pickup group\r\n const groupDivider: React.ReactNode = index !== 0 &&
;\r\n\r\n // Heading for each group\r\n const itemText = value.lineDeliverySpecs.length > 1 ? itemsText : singleItemText;\r\n const headerProps: ICheckoutPickupGroupHeaderProps = {\r\n moduleClassName: defaultClassName,\r\n storeInfo: `${value.pickupModeName}, ${value.storeName}`,\r\n items: `(${format(itemText, value.lineDeliverySpecs.length)})`\r\n };\r\n const groupHeader: React.ReactNode = ;\r\n\r\n // Line images\r\n const cartlines: ICheckoutPickupCartLineInfo[] = value.cartLines\r\n .filter(x => !ObjectExtensions.isNullOrUndefined(x.product))\r\n .map(line => ({\r\n lineId: line.cartLine.LineId || '',\r\n imageProps: {\r\n requestContext: context.actionContext.requestContext,\r\n className: `${defaultClassName}__group-line-image`,\r\n altText: line.product?.Name,\r\n src: line.product?.PrimaryImageUrl || '',\r\n fallBackSrc: getFallbackImageUrl(line.product?.ItemId, context.actionContext.requestContext.apiSettings),\r\n gridSettings: context.request.gridSettings!,\r\n imageSettings: imageSettings || DefaultImageSettings,\r\n loadFailureBehavior: 'empty'\r\n },\r\n quantity: line.cartLine.Quantity || 0\r\n }));\r\n const lineImageProps: ICheckoutPickupCartLinesProps = {\r\n moduleClassName: defaultClassName,\r\n cartLines: cartlines.filter(x => !ObjectExtensions.isNullOrUndefined(x))\r\n };\r\n const cartLineImages: React.ReactNode = ;\r\n\r\n // Selected pickup date and timeslot node\r\n const dateString = getDate(value.selectedDate, locale);\r\n const timeslotString = getTimeslot(\r\n pickupTimeslotPlaceHolder,\r\n value.selectedTimeslot?.StartDateTime,\r\n value.selectedTimeslot?.EndDateTime,\r\n locale\r\n );\r\n const timeslotInfoProps: ICheckoutPickupTimeslotInfoProps = {\r\n moduleClassName: defaultClassName,\r\n title: pickupDateTimeslotText,\r\n content: `${dateString} ${timeslotString}`\r\n };\r\n const selectedDateTimeslotNode: React.ReactNode = ;\r\n\r\n // Pickup address\r\n const addressProps: ICheckoutPickupAddressProps = {\r\n moduleClassName: defaultClassName,\r\n title: pickupLocationLabel,\r\n address: value.pickupAddress\r\n };\r\n const pickupAddress: React.ReactNode = ;\r\n\r\n // Pickup date and timeslot dropdown list\r\n const dropdownClassName = `${defaultClassName}__group-datetime-dropdown`;\r\n const labelClassName = `${dropdownClassName}-label`;\r\n const dropdownSelectClassName = `${dropdownClassName}-select`;\r\n const dateDropdownNode: React.ReactNode = (\r\n \r\n );\r\n\r\n const timeslotDropdownNode: React.ReactNode = (\r\n \r\n );\r\n\r\n const viewProp: ICheckoutPickupGroupViewProps = {\r\n moduleProps: { ...this.props },\r\n pickupGroupContainer: { className: `${defaultClassName}__group` },\r\n dateTimeslotContainer: { className: `${defaultClassName}__group-datetime` },\r\n pickupStoreId: value.pickupStoreId,\r\n pickupModeName: value.pickupModeName,\r\n deliveryMode: value.deliveryMode,\r\n groupDivider,\r\n groupHeader,\r\n groupErrorMessage: ,\r\n cartLineImages,\r\n pickupDateDropdown: dateDropdownNode,\r\n pickupTimeslotDropdown: timeslotDropdownNode,\r\n selectedDateTimeslot: selectedDateTimeslotNode,\r\n pickupAddress\r\n };\r\n\r\n groupsViewProps.push(viewProp);\r\n });\r\n\r\n const {\r\n moduleState: { isReady, hasError }\r\n } = this.props;\r\n const isHeaderError = !this.isLoading && this.headerErrorMessage !== undefined;\r\n const isShowDropdown = !this.isLoading && !isReady;\r\n const isShowSelected = !this.isLoading && !hasError && isReady;\r\n\r\n const viewProps: ICheckoutPickupViewProps = {\r\n ...this.props,\r\n checkoutPickup: {\r\n moduleProps: this.props,\r\n className: classname(defaultClassName, className)\r\n },\r\n viewState: {\r\n isLoading: this.isLoading,\r\n isHeaderError,\r\n isShowSelected,\r\n isShowDropdown\r\n },\r\n headerError: ,\r\n waiting: ,\r\n pickupGroups: groupsViewProps,\r\n checkoutErrorRef: this.checkoutErrorRef\r\n };\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n @action\r\n public async setDateHandler(pickupStoreId: string, deliveryMode: string, pickupDate: Date | undefined): Promise {\r\n const oldGroup = this.state.pickupGroups.find(\r\n group => group.pickupStoreId === pickupStoreId && group.deliveryMode === deliveryMode\r\n );\r\n if (!oldGroup) {\r\n return;\r\n }\r\n\r\n const newGroup: ICheckoutPickupGroup = { ...oldGroup };\r\n newGroup.selectedDate = pickupDate;\r\n newGroup.selectedTimeslot = undefined; // Clear the selected timeslot in any case\r\n newGroup.timeslotErrorMessage = undefined; // Clear the timeslot error message if any\r\n newGroup.lineDeliverySpecs.forEach((lineSpec: LineDeliverySpecification) => {\r\n if (lineSpec.DeliverySpecification) {\r\n lineSpec.DeliverySpecification.PickupTimeslotStartDateTime = undefined;\r\n lineSpec.DeliverySpecification.PickupTimeslotEndDateTime = undefined;\r\n }\r\n });\r\n\r\n if (pickupDate) {\r\n // Date is set\r\n const searchCriteria: PickupTimeslotAvailabilitySearchCriteria = {\r\n DeliveryModeCode: newGroup.deliveryMode,\r\n StoreId: newGroup.pickupStoreId,\r\n StartDate: pickupDate,\r\n EndDate: pickupDate,\r\n SearchOptionValue: 2 // Test runtime does not recognize PickupTimeslotAvailabilitySearchOption.All\r\n };\r\n const timeslotResults: PickupTimeslotAvailability[] = await getEstimatedPickupTimeslotAvailabilitiesAsync(\r\n { callerContext: this.props.context.actionContext, queryResultSettings: {}, bypassCache: 'get' },\r\n searchCriteria\r\n );\r\n\r\n newGroup.availableTimeslots = timeslotResults.filter(value => (value.AvailableCapacity || 0) > 0);\r\n newGroup.dateErrorMessage =\r\n newGroup.availableTimeslots.length === 0 ? this.props.resources.noAvailableTimeslotError : undefined;\r\n } else {\r\n // Date is not set\r\n newGroup.availableTimeslots = [];\r\n newGroup.dateErrorMessage = undefined;\r\n }\r\n\r\n const groups = this.state.pickupGroups.map(group => {\r\n if (group.pickupStoreId === pickupStoreId && group.deliveryMode === deliveryMode) {\r\n return newGroup;\r\n }\r\n return group;\r\n });\r\n\r\n this.setState({ pickupGroups: groups });\r\n }\r\n\r\n @action\r\n public setTimeslotHandler(pickupStoreId: string, deliveryMode: string, pickupTimeslot: PickupTimeslotAvailability | undefined): void {\r\n const oldGroup = this.state.pickupGroups.find(\r\n group => group.pickupStoreId === pickupStoreId && group.deliveryMode === deliveryMode\r\n );\r\n if (!oldGroup) {\r\n return;\r\n }\r\n\r\n const newGroup: ICheckoutPickupGroup = { ...oldGroup };\r\n\r\n newGroup.selectedTimeslot = pickupTimeslot;\r\n newGroup.lineDeliverySpecs.forEach((lineSpec: LineDeliverySpecification) => {\r\n if (lineSpec.DeliverySpecification) {\r\n lineSpec.DeliverySpecification.PickupTimeslotStartDateTime = pickupTimeslot?.StartDateTime;\r\n lineSpec.DeliverySpecification.PickupTimeslotEndDateTime = pickupTimeslot?.EndDateTime;\r\n }\r\n });\r\n\r\n if (pickupTimeslot) {\r\n newGroup.timeslotErrorMessage = undefined;\r\n }\r\n\r\n const groups = this.state.pickupGroups.map(group => {\r\n if (group.pickupStoreId === pickupStoreId && group.deliveryMode === deliveryMode) {\r\n return newGroup;\r\n }\r\n return group;\r\n });\r\n\r\n this.setState({ pickupGroups: groups });\r\n }\r\n\r\n @action\r\n private readonly initModuleState = (): void => {\r\n this.props.moduleState.init({\r\n onEdit: this.onEdit,\r\n onSubmit: this.onSubmit,\r\n status: this.canPickup() ? (this.isPickupTimeSlotSet() ? 'ready' : 'updating') : 'disabled'\r\n });\r\n };\r\n\r\n private readonly onEdit = (): void => {\r\n this.props.moduleState.onUpdating();\r\n };\r\n\r\n private readonly onReady = (): void => {\r\n this.props.moduleState.onReady();\r\n };\r\n\r\n private readonly onPending = (): void => {\r\n this.props.moduleState.onPending();\r\n };\r\n\r\n private readonly onSubmit = async (): Promise => {\r\n await this.updateCartLinePickupDateTimeslot();\r\n };\r\n\r\n private readonly setError = (errorMessage: string, isHeaderError: boolean = true): void => {\r\n this.props.telemetry.error(errorMessage);\r\n this.props.moduleState.setHasError(true);\r\n this.props.moduleState.onUpdating();\r\n if (isHeaderError) {\r\n this.headerErrorMessage = errorMessage;\r\n }\r\n };\r\n\r\n private readonly clearError = (): void => {\r\n this.props.moduleState.setHasError(false);\r\n this.headerErrorMessage = undefined;\r\n };\r\n\r\n @action\r\n private readonly initPickupGroup = async (): Promise => {\r\n const pickupCartLines: CartLine[] = this.getCartLinesforPickup();\r\n let products: SimpleProduct[] = [];\r\n try {\r\n products = await this.getProductsByCartLines(\r\n this.props.data.checkout.result?.checkoutCart.cart.ChannelId || 0,\r\n pickupCartLines\r\n );\r\n } catch (error) {\r\n // @ts-ignore\r\n this.props.telemetry.error(error);\r\n }\r\n const pickupGroups: ICheckoutPickupGroup[] = [];\r\n const locations: OrgUnitLocation[] = this.props.data.orgUnitLocations.result || [];\r\n this.isLoading = true;\r\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\r\n const { featureState, deliveryOptions } = this.props?.data;\r\n const retailMultiplePickUpOptionEnabled = featureState?.result?.find(feature => feature.Name === multiplePickupStoreSwitchName)\r\n ?.IsEnabled;\r\n\r\n for (const line of pickupCartLines) {\r\n const group: ICheckoutPickupGroup | undefined = pickupGroups.find(\r\n x => x.pickupStoreId === line.FulfillmentStoreId && x.deliveryMode === line.DeliveryMode\r\n );\r\n const product: SimpleProduct | undefined = products.find(x => x.RecordId === line.ProductId);\r\n const lineDeliverySpecification: LineDeliverySpecification = {\r\n LineId: line.LineId,\r\n DeliverySpecification: {\r\n DeliveryModeId: line.DeliveryMode,\r\n DeliveryPreferenceTypeValue: 2,\r\n PickUpStoreId: line.FulfillmentStoreId,\r\n PickupTimeslotStartDateTime: line.PickupTimeslotStartDateTime,\r\n PickupTimeslotEndDateTime: line.PickupTimeslotEndDateTime,\r\n DeliveryAddress: line.ShippingAddress\r\n }\r\n };\r\n if (group) {\r\n group.lineDeliverySpecs.push(lineDeliverySpecification);\r\n group.cartLines.push({ cartLine: line, product });\r\n } else {\r\n // Group not exists yet\r\n const location: OrgUnitLocation | undefined = locations.find(x => x.OrgUnitNumber === line.FulfillmentStoreId);\r\n const storeName: string = this.getStoreName(location, line);\r\n const selectedDate: Date | undefined =\r\n line.PickupTimeslotStartDateTime && getUTCDateWithoutTime(line.PickupTimeslotStartDateTime);\r\n const selectedTimeslot =\r\n line.PickupTimeslotStartDateTime && line.PickupTimeslotEndDateTime\r\n ? { StartDateTime: line.PickupTimeslotStartDateTime, EndDateTime: line.PickupTimeslotEndDateTime }\r\n : undefined;\r\n const newGroup: ICheckoutPickupGroup = {\r\n pickupModeName: retailMultiplePickUpOptionEnabled\r\n ? this.getPickupModeDescription(\r\n this.props.resources.generalPickupText,\r\n line.DeliveryMode,\r\n deliveryOptions?.result,\r\n product\r\n )\r\n : this.props.resources.generalPickupText,\r\n pickupStoreId: line.FulfillmentStoreId || '',\r\n deliveryMode: line.DeliveryMode || '',\r\n storeName,\r\n pickupAddress: line.ShippingAddress,\r\n availabilityState: PickupTimeslotAvailabilityState.None,\r\n lineDeliverySpecs: [lineDeliverySpecification],\r\n cartLines: [{ cartLine: line, product }],\r\n availableDates: [],\r\n availableTimeslots: [],\r\n selectedDate,\r\n selectedTimeslot\r\n };\r\n\r\n let dailyGroupingResults: PickupTimeslotAvailability[] = [];\r\n try {\r\n const searchCriteria: PickupTimeslotAvailabilitySearchCriteria = {\r\n DeliveryModeCode: newGroup.deliveryMode,\r\n StoreId: newGroup.pickupStoreId,\r\n SearchOptionValue: 1 // Test runtime does not recognize PickupTimeslotAvailabilitySearchOption.DailyGroupingTimeslotOnly\r\n };\r\n dailyGroupingResults = await getEstimatedPickupTimeslotAvailabilitiesAsync(\r\n { callerContext: this.props.context.actionContext, queryResultSettings: {} },\r\n searchCriteria\r\n );\r\n } catch (error) {\r\n // @ts-ignore\r\n this.props.telemetry.error(error);\r\n }\r\n newGroup.availabilityState = this.getPickupTimeslotAvailabilityState(dailyGroupingResults);\r\n if (newGroup.availabilityState === PickupTimeslotAvailabilityState.NotAvailable) {\r\n newGroup.groupErrorMessage = this.props.resources.noAvailableDateError;\r\n this.setError(newGroup.groupErrorMessage, false);\r\n }\r\n dailyGroupingResults.forEach(value => {\r\n if (value.StartDateTime && (value.AvailableCapacity || 0) > 0) {\r\n newGroup.availableDates.push(getUTCDateWithoutTime(value.StartDateTime));\r\n }\r\n });\r\n\r\n if (selectedDate) {\r\n let timeslotResults: PickupTimeslotAvailability[] = [];\r\n try {\r\n const searchCriteria: PickupTimeslotAvailabilitySearchCriteria = {\r\n DeliveryModeCode: newGroup.deliveryMode,\r\n StoreId: newGroup.pickupStoreId,\r\n StartDate: selectedDate,\r\n EndDate: selectedDate,\r\n SearchOptionValue: 2 // Test runtime does not recognize PickupTimeslotAvailabilitySearchOption.All\r\n };\r\n timeslotResults = await getEstimatedPickupTimeslotAvailabilitiesAsync(\r\n { callerContext: this.props.context.actionContext, queryResultSettings: {}, bypassCache: 'get' },\r\n searchCriteria\r\n );\r\n } catch (error) {\r\n // @ts-ignore\r\n this.props.telemetry.error(error);\r\n }\r\n newGroup.availableTimeslots = timeslotResults.filter(value => (value.AvailableCapacity || 0) > 0);\r\n }\r\n pickupGroups.push(newGroup);\r\n }\r\n }\r\n\r\n const filteredPickupGroups = pickupGroups.filter(\r\n group =>\r\n group.availabilityState === PickupTimeslotAvailabilityState.Available ||\r\n group.availabilityState === PickupTimeslotAvailabilityState.NotAvailable\r\n );\r\n\r\n if (!ArrayExtensions.hasElements(filteredPickupGroups)) {\r\n this.props.context.telemetry.error('Data is not ready or pickup group is empty, module wont render.');\r\n }\r\n this.isLoading = false;\r\n this.setState({ pickupGroups: filteredPickupGroups });\r\n };\r\n\r\n @action\r\n private readonly updateCartLinePickupDateTimeslot = async (): Promise => {\r\n if (!this.validateTimeslot()) {\r\n return;\r\n }\r\n const { resources } = this.props;\r\n let lineSpecs: LineDeliverySpecification[] = [];\r\n\r\n this.state.pickupGroups.forEach(group => {\r\n lineSpecs = lineSpecs.concat(group.lineDeliverySpecs);\r\n });\r\n\r\n this.clearError();\r\n this.onPending();\r\n\r\n try {\r\n const checkoutState = this.props.data.checkout.result as ICheckoutState;\r\n const response = await checkoutState.checkoutCart.updateCartLinePickupDateTimeslot({ lineDeliverySpecifications: lineSpecs });\r\n\r\n if (response.status === 'FAILED') {\r\n this.setError(resources.genericErrorMessage);\r\n } else {\r\n this.onReady();\r\n this.props.moduleState.setIsCancellable(true);\r\n }\r\n } catch {\r\n this.setError(resources.genericErrorMessage);\r\n }\r\n };\r\n\r\n private readonly getProductsByCartLines = async (channelId: number, cartLines: CartLine[]): Promise => {\r\n const actionContext = this.props.context.actionContext;\r\n const productInputs = cartLines\r\n .filter(line => !ObjectExtensions.isNullOrUndefined(line.ProductId))\r\n .map(\r\n line =>\r\n new ProductInput(\r\n line.ProductId || 0,\r\n actionContext.requestContext.apiSettings,\r\n channelId,\r\n undefined,\r\n actionContext.requestContext\r\n )\r\n );\r\n return getSimpleProducts(productInputs, actionContext);\r\n };\r\n\r\n private readonly validateTimeslot = (): boolean => {\r\n let validationResult = true;\r\n this.state.pickupGroups.forEach(group => {\r\n switch (group.availabilityState) {\r\n case PickupTimeslotAvailabilityState.NotAvailable:\r\n // Need customer to select another store in this case\r\n validationResult = false;\r\n break;\r\n case PickupTimeslotAvailabilityState.Available:\r\n if (!group.selectedDate || !group.selectedTimeslot) {\r\n if (!group.selectedDate) {\r\n group.dateErrorMessage = this.props.resources.pickupDateRequired;\r\n }\r\n if (!group.selectedTimeslot) {\r\n group.timeslotErrorMessage = this.props.resources.pickupTimeslotRequired;\r\n }\r\n this.setError(this.props.resources.pickupDateTimeslotRequired, false);\r\n validationResult = false;\r\n } else {\r\n group.dateErrorMessage = undefined;\r\n group.timeslotErrorMessage = undefined;\r\n }\r\n break;\r\n\r\n // We consider timeslot not defined as fallback case\r\n case PickupTimeslotAvailabilityState.NotDefined:\r\n default:\r\n }\r\n });\r\n\r\n return validationResult;\r\n };\r\n\r\n private readonly getStoreName = (orgUnitLocation: OrgUnitLocation | undefined, cartLine: CartLine): string => {\r\n return orgUnitLocation?.OrgUnitName || cartLine.ShippingAddress?.Name || cartLine.FulfillmentStoreId || '';\r\n };\r\n\r\n private readonly canPickup = (): boolean => {\r\n return ArrayExtensions.hasElements(this.state.pickupGroups);\r\n };\r\n\r\n private readonly isPickupTimeSlotSet = (): boolean => {\r\n return (\r\n ArrayExtensions.hasElements(this.state.pickupGroups) &&\r\n this.state.pickupGroups.every(\r\n group =>\r\n !ObjectExtensions.isNullOrUndefined(group.selectedTimeslot?.StartDateTime) &&\r\n !ObjectExtensions.isNullOrUndefined(group.selectedTimeslot?.EndDateTime)\r\n )\r\n );\r\n };\r\n\r\n private readonly getCartLinesforPickup = (): CartLine[] => {\r\n return this.props.data.checkout.result?.checkoutCart.cart.CartLines?.filter(line => this.isPickupLine(line)) || [];\r\n };\r\n\r\n private readonly isPickupMode = (deliveryMode: string | undefined): boolean => {\r\n const pickupDeliveryModeCode = this.props.context.request.channel?.PickupDeliveryModeCode;\r\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\r\n const { channelDeliveryOptionConfig, featureState } = this.props?.data;\r\n const retailMultiplePickUpOptionEnabled = featureState?.result?.find(feature => feature.Name === multiplePickupStoreSwitchName)\r\n ?.IsEnabled;\r\n if (retailMultiplePickUpOptionEnabled && deliveryMode !== undefined) {\r\n const pickupDeliveryMode = channelDeliveryOptionConfig?.result?.PickupDeliveryModeCodes?.includes(deliveryMode);\r\n return pickupDeliveryMode !== undefined ? pickupDeliveryMode : false;\r\n }\r\n return deliveryMode !== undefined && pickupDeliveryModeCode !== undefined && deliveryMode === pickupDeliveryModeCode;\r\n };\r\n\r\n private readonly isPickupLine = (line: CartLine): boolean => {\r\n return (\r\n this.isPickupMode(line.DeliveryMode) && line.FulfillmentStoreId !== undefined && !isNullOrWhiteSpace(line.FulfillmentStoreId)\r\n );\r\n };\r\n\r\n private readonly getPickupModeDescription = (\r\n resourceString: string,\r\n deliveryMode?: string,\r\n deliveryOptions?: ProductDeliveryOptions[],\r\n product?: SimpleProduct\r\n ): string => {\r\n let deliveryOption: string = resourceString;\r\n if (ArrayExtensions.hasElements(deliveryOptions) && product !== undefined) {\r\n let foundProductDeliveryOption: any;\r\n // eslint-disable-next-line prefer-const\r\n foundProductDeliveryOption = deliveryOptions?.find(deliveryO => {\r\n return deliveryO && deliveryO.ProductId === product.RecordId;\r\n });\r\n const deliveryDesc = foundProductDeliveryOption?.DeliveryOptions\r\n ? foundProductDeliveryOption?.DeliveryOptions?.find((option: any) => option.Code === deliveryMode)?.Description\r\n : resourceString;\r\n if (deliveryDesc !== undefined && deliveryDesc !== 'Pickup') {\r\n deliveryOption = deliveryDesc;\r\n }\r\n }\r\n return deliveryOption;\r\n };\r\n\r\n private readonly getPickupTimeslotAvailabilityState = (dailyResult: PickupTimeslotAvailability[]) => {\r\n let state: PickupTimeslotAvailabilityState = PickupTimeslotAvailabilityState.None;\r\n if (!ArrayExtensions.hasElements(dailyResult)) {\r\n state = PickupTimeslotAvailabilityState.NotDefined;\r\n } else if (dailyResult.every(date => (date.AvailableCapacity || 0) <= 0)) {\r\n state = PickupTimeslotAvailabilityState.NotAvailable;\r\n } else {\r\n state = PickupTimeslotAvailabilityState.Available;\r\n }\r\n return state;\r\n };\r\n}\r\n\r\nexport default CheckoutPickup;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CartLineItemComponent } from '@msdyn365-commerce/components';\nimport MsDyn365, * as Msdyn365 from '@msdyn365-commerce/core';\nimport { isChannelTypeB2B } from '@msdyn365-commerce/core';\nimport { CartLine, OrgUnitLocation, SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { getProductUrlSync, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n INodeProps,\n ITelemetryContent,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport get from 'lodash/get';\nimport groupBy from 'lodash/groupBy';\nimport * as React from 'react';\n\nimport { ICheckoutData } from '../checkout.data';\nimport { ICheckoutProps } from '../checkout.props.autogenerated';\n\ntype deliveryType = 'pickup' | 'ship' | 'email';\n\nexport interface IPickUpAtStore {\n PickUpAtStore: INodeProps;\n label: React.ReactNode;\n location: React.ReactNode;\n}\n\nexport interface IEmailDelivery {\n EmailDelivery: INodeProps;\n label: React.ReactNode;\n}\n\nexport interface ILineItem {\n LineId: string;\n LineItem: INodeProps;\n item?: React.ReactNode;\n pickUpAtStore?: IPickUpAtStore;\n emailDelivery?: IEmailDelivery;\n}\n\nexport interface ILineItemDeliveryGroup {\n LineItemDeliveryGroup: INodeProps;\n LineItemList: INodeProps;\n heading: React.ReactNode;\n lineItemWraper?: React.ReactNode;\n lineItemWraperIcon?: React.ReactNode;\n lineItems: ILineItem[];\n}\n\nexport interface ILineItems {\n LineItems: INodeProps;\n Header: INodeProps;\n heading: React.ReactNode;\n editLink: React.ReactNode;\n itemsForPickup?: ILineItemDeliveryGroup;\n itemsForShip?: ILineItemDeliveryGroup;\n itemsForEmail?: ILineItemDeliveryGroup;\n itemsGroupWithMulitplePickupMode?: ILineItemDeliveryGroup[];\n}\n\nexport const getLineItems = (input: ICheckoutProps, telemetryContent?: ITelemetryContent): ILineItems | undefined => {\n const pickupDeliveryModeCode = get(input, 'context.request.channel.PickupDeliveryModeCode');\n const emailDeliveryModeCode = get(input, 'context.request.channel.EmailDeliveryModeCode');\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n const { channelDeliveryOptionConfig, featureState } = input.data;\n const retailMultiplePickUpOptionEnabled = featureState?.result?.find(feature => feature.Name === multiplePickupStoreSwitchName)\n ?.IsEnabled;\n\n const _getDeliveryLocation = (cartLine: CartLine): string => {\n const orgUnitLocations = get(input, 'data.orgUnitLocations.result');\n if (!cartLine.FulfillmentStoreId || !orgUnitLocations) {\n return '';\n }\n\n const locationMatch = (orgUnitLocations || []).find((location: OrgUnitLocation): boolean => {\n return location.OrgUnitNumber === cartLine.FulfillmentStoreId;\n });\n\n return locationMatch && locationMatch.OrgUnitName;\n };\n\n const _getProduct = (productId: number): SimpleProduct | undefined => {\n const products = get(input, 'data.products.result') || [];\n return products.find((_product: SimpleProduct) => {\n return productId === _product.RecordId;\n });\n };\n\n const _getLineItemComponent = (cartLine: CartLine): JSX.Element | undefined => {\n const product = cartLine.ProductId && _getProduct(cartLine.ProductId);\n const {\n id,\n typeName,\n context,\n config: { imageSettings, showShippingChargesForLineItems },\n resources: {\n quantityDisplayString,\n productDimensionTypeColor,\n productDimensionTypeSize,\n productDimensionTypeStyle,\n productDimensionTypeAmount,\n configString,\n inputQuantityAriaLabel,\n discountStringText,\n shippingCharges\n },\n context: {\n request: { gridSettings }\n }\n } = input;\n const catalogs = input.data.catalogs?.result;\n if (!product) {\n return;\n }\n\n let productUrl = getProductUrlSync(product, context.actionContext, undefined);\n if (MsDyn365.isBrowser && isChannelTypeB2B(context.actionContext.requestContext)) {\n const fullUrl = new URL(productUrl, window.location.href);\n fullUrl.searchParams.set('catalogid', `${cartLine.CatalogId ?? 0}`);\n productUrl = fullUrl.href;\n }\n const currencyCode = get(input, 'context.request.channel.Currency');\n return (\n \n );\n };\n\n const _getPickUpAtStoreComponents = (pickupDeliveryLocation: string): IPickUpAtStore => {\n const {\n resources: { pickUpAtStoreWithLocationText }\n } = input;\n\n return {\n PickUpAtStore: { className: 'ms-checkout__pick-up-at-store' },\n label: {pickUpAtStoreWithLocationText},\n location:
{pickupDeliveryLocation}
\n };\n };\n\n const _getEmailDeliveryComponents = (): IEmailDelivery => {\n const {\n resources: { emailDeliveryText }\n } = input;\n\n return {\n EmailDelivery: { className: 'ms-checkout__email-delivery' },\n label: {emailDeliveryText}\n };\n };\n\n const _getLineItemsComponents = (items: CartLine[]): ILineItem[] => {\n return items.map(cartLine => {\n const pickupDeliveryLocation = _getDeliveryLocation(cartLine);\n const isPickUp = _getCartPickDeliveryMode(cartLine);\n const isEmailDelivery =\n cartLine.DeliveryMode && cartLine.DeliveryMode !== '' ? cartLine.DeliveryMode === emailDeliveryModeCode : false;\n return {\n LineId: cartLine.LineId || '',\n LineItem: { className: 'ms-checkout__line-item' },\n item: _getLineItemComponent(cartLine),\n pickUpAtStore: isPickUp ? _getPickUpAtStoreComponents(pickupDeliveryLocation) : undefined,\n emailDelivery: isEmailDelivery ? _getEmailDeliveryComponents() : undefined\n };\n });\n };\n\n const _getCartPickDeliveryMode = (cartLineItem: CartLine): boolean => {\n return !StringExtensions.isNullOrWhitespace(cartLineItem.DeliveryMode)\n ? retailMultiplePickUpOptionEnabled\n ? cartLineItem.DeliveryMode ===\n channelDeliveryOptionConfig?.result?.PickupDeliveryModeCodes?.find(\n deliveryMode => deliveryMode === cartLineItem.DeliveryMode\n )\n : cartLineItem.DeliveryMode === pickupDeliveryModeCode\n : false;\n };\n\n const _getCartShipDeliveryMode = (cartLineItem: CartLine): boolean => {\n return !StringExtensions.isNullOrWhitespace(cartLineItem.DeliveryMode)\n ? retailMultiplePickUpOptionEnabled\n ? cartLineItem.DeliveryMode !==\n channelDeliveryOptionConfig?.result?.PickupDeliveryModeCodes?.find(\n deliveryMode => deliveryMode === cartLineItem.DeliveryMode\n )\n : cartLineItem.DeliveryMode !== pickupDeliveryModeCode\n : false;\n };\n\n const _getGroupTitleComponent = (count: number, type: deliveryType): string => {\n const {\n resources: { itemLabel, itemsLabel, inStorePickUpLabel, shippingCountCheckoutLineItem }\n } = input;\n\n let emailDeliveryModeDesc: string = '';\n\n input.data.deliveryOptions.result?.find(productDeliveryOptions => {\n emailDeliveryModeDesc = emailDeliveryModeDesc\n ? emailDeliveryModeDesc\n : productDeliveryOptions.DeliveryOptions?.find(deliveryOption => deliveryOption.Code === emailDeliveryModeCode)\n ?.Description!;\n });\n\n const suffix = count > 1 ? itemsLabel : itemLabel;\n const title =\n type === 'ship'\n ? shippingCountCheckoutLineItem\n : type === 'pickup'\n ? inStorePickUpLabel\n : `${emailDeliveryModeDesc} (${count} ${suffix})`;\n return title.replace('{count}', count.toString()).replace('{suffix}', suffix);\n };\n\n const _countItems = (items: CartLine[]): number => {\n return items.reduce((count, item) => {\n return count + (item.Quantity || 0);\n }, 0);\n };\n\n const _filterItemsByDiliveryType = (type: deliveryType): CartLine[] => {\n const cart = get(input, 'data.checkout.result.checkoutCart.cart');\n if (type === 'ship') {\n return cart.CartLines.filter((cartLine: CartLine) =>\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\n ? _getCartShipDeliveryMode(cartLine) && cartLine.DeliveryMode !== emailDeliveryModeCode\n : cartLine\n );\n } else if (type === 'pickup') {\n return cart.CartLines.filter((cartLine: CartLine) =>\n cartLine.DeliveryMode && cartLine.DeliveryMode !== '' ? _getCartPickDeliveryMode(cartLine) : null\n );\n }\n return cart.CartLines.filter((cartLine: CartLine) => cartLine.DeliveryMode === emailDeliveryModeCode);\n };\n\n const _getLineItemsByDeliveryType = (type: deliveryType): ILineItemDeliveryGroup | undefined => {\n if ((pickupDeliveryModeCode === '' || pickupDeliveryModeCode === undefined) && (type === 'pickup' || type === 'email')) {\n return;\n }\n\n const items = _filterItemsByDiliveryType(type);\n\n if (items.length === 0) {\n return undefined;\n }\n\n const count = _countItems(items);\n const title = _getGroupTitleComponent(count, type);\n\n return {\n LineItemDeliveryGroup: { className: classnames('ms-checkout__line-items-delivery-group', type) },\n LineItemList: { className: 'ms-checkout__line-items-list' },\n heading:
{title}
,\n lineItems: _getLineItemsComponents(items)\n };\n };\n\n const _getLineItems = (): ILineItems | undefined => {\n const {\n context,\n config: { lineItemsHeading },\n data: { products },\n resources: { editCartText }\n } = input;\n\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.EditCart);\n const attribute = getTelemetryAttributes(telemetryContent!, payLoad);\n const cart = get(input, 'data.checkout.result.checkoutCart.cart');\n const groupClass = retailMultiplePickUpOptionEnabled ? ' multiple-pickup-enabled' : '';\n if (!cart || !cart.CartLines || cart.CartLines.length === 0 || !products) {\n return undefined;\n }\n\n return {\n LineItems: { className: `ms-checkout__line-items${groupClass}` },\n Header: { className: 'ms-checkout__line-items-header' },\n heading: lineItemsHeading && lineItemsHeading.text && (\n \n ),\n editLink: (\n \n {editCartText}\n \n ),\n itemsForPickup: _getLineItemsByDeliveryType('pickup'),\n itemsForShip: _getLineItemsByDeliveryType('ship'),\n itemsForEmail: _getLineItemsByDeliveryType('email'),\n itemsGroupWithMulitplePickupMode: retailMultiplePickUpOptionEnabled\n ? _getLineItemsByDeliveryTypeWithMulitplePickupMode()\n : undefined\n };\n };\n\n const handleLineItemHeadingChange = (event: Msdyn365.ContentEditableEvent) => {\n const {\n config: { lineItemsHeading }\n } = input;\n if (lineItemsHeading) {\n lineItemsHeading.text = event.target.value;\n }\n };\n\n const _getGroupTitleComponentWithMultiplePickUp = (\n count: number,\n type: deliveryType,\n deliveryMode?: string,\n fulFillmentStoreId?: string\n ): string => {\n const {\n resources: { itemLabel, itemsLabel }\n } = input;\n\n let emailDeliveryModeDesc: string = '';\n let pickupDeliveryModeDesc: string = '';\n\n input.data.deliveryOptions.result?.find(productDeliveryOptions => {\n emailDeliveryModeDesc = emailDeliveryModeDesc\n ? emailDeliveryModeDesc\n : productDeliveryOptions.DeliveryOptions?.find(deliveryOption => deliveryOption.Code === emailDeliveryModeCode)\n ?.Description!;\n });\n\n input.data.deliveryOptions.result?.find(productDeliveryOptions => {\n pickupDeliveryModeDesc = pickupDeliveryModeDesc\n ? pickupDeliveryModeDesc\n : productDeliveryOptions.DeliveryOptions?.find(deliveryOption => deliveryOption.Code === deliveryMode)?.Description!;\n });\n\n const pickupTitle: string = `${pickupDeliveryModeDesc}, ${fulFillmentStoreId}`;\n const suffix = count > 1 ? itemsLabel : itemLabel;\n const title =\n type === 'ship'\n ? `(${count} ${suffix})`\n : type === 'pickup'\n ? `${pickupTitle} (${count} ${suffix})`\n : `${emailDeliveryModeDesc} (${count} ${suffix})`;\n return title.replace('{count}', count.toString()).replace('{suffix}', suffix);\n };\n\n const _filterItemsByMultiplePickupMode = (): CartLine[][] => {\n const cart = get(input, 'data.checkout.result.checkoutCart.cart');\n const getGroupByStorePickup = (items: CartLine[]) => groupBy(items, item => item.FulfillmentStoreId);\n const getGroupByDelivery = (items: CartLine[]) => groupBy(items, item => item.DeliveryMode);\n const groupDelivery = getGroupByDelivery(cart.CartLines);\n const cartLinesGroup: CartLine[] = [];\n const cartLinesGrp: CartLine[][] = [];\n\n // 1) Group by store and pick up mode\n Object.entries(groupDelivery).forEach(([deliveryMode, groupByDeliveryType]) => {\n // @ts-expect-error\n groupDelivery[deliveryMode] = getGroupByStorePickup(groupByDeliveryType);\n cartLinesGroup.push(getGroupByStorePickup(groupByDeliveryType));\n });\n\n Object.keys(cartLinesGroup).forEach(key => {\n const cartLines = cartLinesGroup[key];\n Object.keys(cartLines).forEach(index => {\n const cartLine = cartLines[index];\n cartLinesGrp.push(cartLine);\n });\n });\n\n return cartLinesGrp;\n };\n\n const _getLineItemsByDeliveryTypeWithMulitplePickupMode = (): ILineItemDeliveryGroup[] | undefined => {\n if (pickupDeliveryModeCode === '' || pickupDeliveryModeCode === undefined) {\n return;\n }\n\n const {\n resources: { multiplePickUpLabel, shippingLable }\n } = input;\n\n const items = _filterItemsByMultiplePickupMode();\n\n if (items.length === 0) {\n return undefined;\n }\n\n const lineItemDeliveryGroup: ILineItemDeliveryGroup[] = [];\n items.map(item => {\n const count = _countItems(item);\n const cartLine = item[0];\n const pickupDeliveryLocation = _getDeliveryLocation(cartLine);\n const type: deliveryType =\n cartLine.FulfillmentStoreId && cartLine.DeliveryMode\n ? 'pickup'\n : cartLine.FulfillmentStoreId === '' &&\n cartLine.DeliveryMode === emailDeliveryModeCode &&\n !StringExtensions.isNullOrEmpty(emailDeliveryModeCode)\n ? 'email'\n : 'ship';\n const title = _getGroupTitleComponentWithMultiplePickUp(count, type, cartLine.DeliveryMode, pickupDeliveryLocation);\n const groupTitle = type === 'pickup' ? multiplePickUpLabel : type === 'ship' ? shippingLable : 'email';\n const iconClass = `ms-checkout__line-items-group-title-multiple-pickup-${type}icon`;\n lineItemDeliveryGroup.push({\n LineItemDeliveryGroup: { className: classnames('ms-checkout__line-items-delivery-group multiple-pickup', type) },\n LineItemList: { className: 'ms-checkout__line-items-list' },\n lineItemWraperIcon:
,\n lineItemWraper:
{groupTitle}
,\n heading:
{title}
,\n lineItems: _getLineItemsComponents(item)\n });\n });\n\n return lineItemDeliveryGroup;\n };\n\n return _getLineItems();\n};\n","import React from 'react';\r\n\r\nexport const SectionHeader: React.FC = ({ sectionNumber, headingText, canEdit, editButton }) => {\r\n const sectionContainerStyle: React.CSSProperties = {\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n backgroundColor: '#EFF0F0',\r\n height: '60px',\r\n borderTop: '1px solid #878A8C',\r\n borderBottom: '1px solid #D0D3D3'\r\n };\r\n\r\n const sectionHeaderStyle: React.CSSProperties = {\r\n lineHeight: '60px',\r\n paddingRight: '16px',\r\n paddingLeft: '18px',\r\n fontFamily: `\"Ensign:Sans\", Arial,\"noto sans\" ,sans-serif`,\r\n fontStyle: 'normal',\r\n fontWeight: 'bold',\r\n fontSize: '20px',\r\n color: '#000000'\r\n };\r\n return (\r\n
\r\n
{`${sectionNumber}. ${headingText}`}
\r\n
{canEdit && editButton}
\r\n
\r\n );\r\n};\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getUrlSync, IActionContext } from '@msdyn365-commerce/core';\nimport { ICheckoutState } from '@msdyn365-commerce/global-state';\nimport { SalesOrder, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { CartCheckout } from './checkout';\nimport { EmptyActiveCart } from './empty-active-cart';\n\nexport const PlaceOrder = async (\n ctx: IActionContext,\n checkoutState: ICheckoutState | undefined,\n orderedProducts: SimpleProduct[] | undefined,\n redirect: boolean,\n updatedCartVersion?: number,\n isPaymentVerificationRedirection?: boolean\n) => {\n return new Promise(async (resolve: () => void, reject: (reason?: Error) => void) => {\n ctx.telemetry.information('Checkout place-order method is triggered.');\n\n let salesOrder: SalesOrder;\n\n // Proceed checkout\n try {\n salesOrder = await CartCheckout(ctx, updatedCartVersion, isPaymentVerificationRedirection);\n } catch (error) {\n reject(error);\n return;\n }\n\n // Remove purchased items from the active cart\n try {\n ctx.telemetry.information('Checkout emptyActiveCart is called.');\n await EmptyActiveCart(ctx);\n } catch (error) {\n reject(error);\n return;\n }\n\n if (redirect) {\n ctx.telemetry.information('Redirect to order confirmation page.');\n\n // Redirect to the order confirmation page\n const orderConfirmationUrl = getUrlSync('orderConfirmation', ctx) || '';\n if (!orderConfirmationUrl) {\n reject(new Error('Error: No orderConfirmationUrl'));\n return;\n }\n\n const separator = orderConfirmationUrl.includes('?') ? '&' : '?';\n const url = `${orderConfirmationUrl}${separator}transactionId=${salesOrder.Id}`;\n window.location.assign(url);\n } else {\n ctx.telemetry.information('Not redirect to order confirmation page.');\n\n if (checkoutState) {\n const result = await checkoutState.updateSalesOrder({\n newSalesOrder: salesOrder,\n newOrderedProducts: orderedProducts || []\n });\n\n if (result.status === 'FAILED') {\n reject(new Error('Error: Updating error state failed'));\n return;\n }\n } else {\n reject(new Error('Error: No checkout state'));\n return;\n }\n resolve();\n }\n });\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICheckoutPaymentInstrumentViewProps, ICheckoutPaymentOverlayModal } from './checkout-payment-instrument';\n\nconst OverlayModal: React.FC = ({ modal }) => {\n return ;\n};\n\nconst CheckoutPaymentInstrumentView: React.FC = ({\n checkoutPaymentInstrument,\n checkoutErrorRef,\n className,\n id,\n waiting,\n alert,\n paymentInformation,\n addPaymentForm,\n overlayModal,\n ...restProps\n}) => (\n \n {waiting}\n {alert}\n {paymentInformation}\n {addPaymentForm}\n {overlayModal && }\n \n);\n\nexport default CheckoutPaymentInstrumentView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nexport * from './payment-information';\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nexport * from './alert';\nexport * from './get-line-items';\nexport * from './get-order-summary';\nexport * from './guided-card';\nexport * from './guided-form';\nexport * from './place-order-button';\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface ICheckoutLoyaltyLabelProps {\n className: string;\n text: string;\n htmlFor: string;\n}\n\n/**\n * AddPaymentForm SFC.\n * @param root0\n * @param root0.className\n * @param root0.text\n * @param root0.htmlFor\n * @extends {React.FC}\n */\nconst CheckoutLoyaltyLabel: React.FC = ({ className, text, htmlFor }) => {\n return (\n \n );\n};\n\nexport default CheckoutLoyaltyLabel;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\ninterface IGiftCardTitleProps {\n title: string;\n}\n\nconst GiftCardTitle: React.FC = ({ title }) => ;\n\nexport default GiftCardTitle;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as MsDyn365 from '@msdyn365-commerce/core';\nimport { IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\nimport { Button, getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport { CheckoutModule, ErrorLocation } from '@msdyn365-commerce/global-state';\nimport classname from 'classnames';\nimport { action, computed, observable, reaction, when } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { ICheckoutTermsAndConditionsData } from './checkout-terms-and-conditions.data';\nimport { ICheckoutTermsAndConditionsProps } from './checkout-terms-and-conditions.props.autogenerated';\nimport CheckboxComponent from './components/checkout-terms-and-conditions.check-box';\nimport ErrorMessageComponent from './components/checkout-terms-and-conditions.error-message';\nimport ErrorTitleComponent from './components/checkout-terms-and-conditions.error-title';\nimport { focusOnCheckoutError } from '../../checkout-errors';\n\nexport interface ICheckoutTermsAndConditionsModuleProps\n extends ICheckoutTermsAndConditionsProps,\n IModuleStateProps {}\n\nexport interface ICheckoutTermsAndConditions {\n termsAndConditionAcceptance: INodeProps;\n checkBox: React.ReactNode;\n description: React.ReactNode;\n}\n\nexport interface ICheckoutTermsAndConditionsError {\n error: INodeProps;\n title: React.ReactNode;\n message: React.ReactNode;\n}\n\nexport interface ICheckoutTermsAndConditionsViewState {\n isError: boolean;\n isShowSaveButton: boolean;\n isShowEditButton: boolean;\n isShowCancelButton: boolean;\n}\n\nexport interface ICheckoutTermsAndConditionsViewProps extends ICheckoutTermsAndConditionsProps<{}> {\n checkoutTermsAndConditions: IModuleProps;\n isTermsAccepted: boolean;\n errorMessageData: string;\n viewState: ICheckoutTermsAndConditionsViewState;\n termsAndConditionsContent: ICheckoutTermsAndConditions;\n errorMessage?: ICheckoutTermsAndConditionsError;\n saveButton?: React.ReactNode;\n editButton?: React.ReactNode;\n cancelButton?: React.ReactNode;\n checkoutErrorRef?: React.RefObject;\n onChange(event: React.ChangeEvent): void;\n onSave(): void;\n onEdit(): void;\n onCancel(): void;\n}\n\n/**\n *\n * CheckoutTermsAndConditions component.\n * @extends {React.Component>}\n */\n// @ts-expect-error\n@withModuleState\n@observer\nclass CheckoutTermsAndConditions extends React.Component {\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly checkoutErrorRef: React.RefObject = React.createRef();\n\n @observable private isTermsAccepted: boolean = true;\n\n @observable private errorMessage?: string;\n\n constructor(props: ICheckoutTermsAndConditionsModuleProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n @computed get isDataReady(): boolean {\n return (this.props.data.checkout.result && this.props.data.checkout.status) === 'SUCCESS';\n }\n\n @computed get isShowButtons(): boolean {\n const { showControlButtons } = this.props.config;\n return !this.props.moduleState.hasExternalSubmitGroup && (showControlButtons || false);\n }\n\n @computed get isAutoSave(): boolean {\n const { showControlButtons } = this.props.config;\n return !this.props.moduleState.hasExternalSubmitGroup && !showControlButtons;\n }\n\n @computed get defaultTermsAndConditionAcceptedValue(): boolean {\n const { showCheckbox } = this.props.config;\n return !showCheckbox;\n }\n\n public async componentDidMount(): Promise {\n when(\n () => this.isDataReady,\n async () => {\n await this.init();\n }\n );\n\n reaction(\n () => this.props.data.checkout.result && this.props.data.checkout.result.isTermsAndConditionAccepted,\n async () => {\n this.isTermsAccepted =\n this.props.data.checkout.result?.isTermsAndConditionAccepted || this.defaultTermsAndConditionAcceptedValue;\n }\n );\n\n if (this.props.data.checkout.result?.shouldEnableCheckoutErrorDisplayMessaging) {\n reaction(\n () => this.props.data.checkout.result?.checkoutError,\n checkoutError => {\n if (\n checkoutError &&\n checkoutError.errorLocation === ErrorLocation.CheckoutTermsAndConditions &&\n checkoutError.errorMessage\n ) {\n this.setError(checkoutError.errorMessage);\n }\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.checkoutErrorFocus,\n checkoutErrorFocus => {\n if (checkoutErrorFocus === CheckoutModule.CheckoutTermsAndConditions) {\n focusOnCheckoutError(this.checkoutErrorRef, this.props.context.actionContext);\n }\n }\n );\n }\n }\n\n public shouldComponentUpdate(\n nextProps: ICheckoutTermsAndConditionsModuleProps,\n nextState: ICheckoutTermsAndConditionsViewState\n ): boolean {\n if (this.state === nextState && this.props === nextProps) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const {\n moduleState: { isReady, hasError },\n config: { className }\n } = this.props;\n const isTermsAndConditionAccepted = this.props.data.checkout.result?.isTermsAndConditionAccepted;\n const isError = hasError;\n const isShowContent = !isReady;\n const isShowSelected = !hasError && isReady;\n\n const viewProps = {\n ...this.props,\n ...this.state,\n isTermsAccepted: this.isTermsAccepted,\n errorMessageData: this.errorMessage,\n checkoutErrorRef: this.checkoutErrorRef,\n viewState: {\n isError,\n isShowSaveButton: isShowContent && this.isShowButtons,\n isShowEditButton: isShowSelected && this.isShowButtons,\n isShowCancelButton: isShowContent && this.isShowButtons && isTermsAndConditionAccepted\n },\n checkoutTermsAndConditions: {\n moduleProps: this.props,\n className: classname('ms-checkout-terms-and-conditions', className)\n },\n termsAndConditionsContent: this.getTermsAndConditions(),\n errorMessage: this.getErrorMessage(),\n saveButton: this.getSaveButton(),\n editButton: this.getEditButton(),\n cancelButton: this.getCancelButton(),\n onSave: this.onSubmit,\n onEdit: this.onEdit,\n onCancel: this.onCancel,\n onChange: this.onChange\n };\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleTextChange = (event: MsDyn365.ContentEditableEvent) => (this.props.config.description = event.target.value);\n\n private readonly getTermsAndConditions = (): ICheckoutTermsAndConditions => {\n const {\n moduleState: { isReady },\n config: { showCheckbox, description }\n } = this.props;\n const isDisabled = isReady && !this.isAutoSave;\n const isTermsAndConditionAccepted = this.isTermsAccepted;\n const { checkboxAriaLabel } = this.props.resources;\n return {\n termsAndConditionAcceptance: { className: 'ms-checkout-terms-and-conditions__container' },\n checkBox: showCheckbox && (\n \n ),\n description: (\n \n )\n };\n };\n\n @action\n private readonly init = async (): Promise => {\n const {\n data,\n config: { showCheckbox }\n } = this.props;\n\n const hasInvoiceLine = this.props.data.checkout.result?.checkoutCart.hasInvoiceLine;\n\n // If hasInvoiceLine is true, this is for b2b and isTermsAccepted should be true\n if (hasInvoiceLine || data.checkout.result?.isTermsAndConditionAccepted || !showCheckbox) {\n await this.updateTermsAndConditionsAcceptance(true);\n this.isTermsAccepted = true;\n } else if (showCheckbox) {\n await this.updateTermsAndConditionsAcceptance(false);\n this.isTermsAccepted = false;\n }\n\n this.props.moduleState.init({\n onEdit: this.onEdit,\n onCancel: this.onCancel,\n onSubmit: this.onSubmit,\n status: hasInvoiceLine ? 'disabled' : this.isTermsAccepted ? 'ready' : 'updating'\n });\n\n if (this.props.data.checkout.result?.isPaymentVerificationRedirection) {\n this.isTermsAccepted = true;\n this.props.moduleState.setHasError(false);\n this.props.moduleState.onReady();\n }\n };\n\n private readonly getErrorMessage = (): ICheckoutTermsAndConditionsError => {\n const { errorMessageTitle } = this.props.resources;\n return {\n error: { tag: 'div', className: 'ms-checkout-terms-and-conditions__error', role: 'alert', 'aria-live': 'assertive' },\n title: ,\n message: \n };\n };\n\n private readonly getCancelButton = (): React.ReactNode => {\n const { cancelBtnLabel = 'Cancel', cancelBtnAriaLabel } = this.props.resources;\n return (\n \n {cancelBtnLabel}\n \n );\n };\n\n private readonly getSaveButton = (): React.ReactNode => {\n const { saveBtnLabel = 'Save', saveBtnAriaLabel } = this.props.resources;\n return (\n \n {saveBtnLabel}\n \n );\n };\n\n private readonly getEditButton = (): React.ReactNode => {\n const { editBtnLabel = 'Change', editBtnAriaLabel } = this.props.resources;\n return (\n \n {editBtnLabel}\n \n );\n };\n\n private readonly onEdit = (): void => {\n this.props.telemetry.information('Terms and conditions onEdit is called.');\n\n this.onUpdating();\n };\n\n private readonly onSubmit = async (): Promise => {\n this.props.telemetry.information('Terms and conditions onSubmit is called.');\n\n if (!this.isTermsAccepted) {\n if (this.isAutoSave) {\n await this.updateTermsAndConditionsAcceptance(this.isTermsAccepted);\n } else {\n this.setError(this.props.resources.errorMessage);\n this.props.moduleState.setHasError(true);\n }\n } else {\n this.clearError();\n await this.updateTermsAndConditionsAcceptance(this.isTermsAccepted);\n this.props.moduleState.onReady();\n }\n };\n\n private readonly onUpdating = () => {\n this.props.moduleState.onUpdating();\n };\n\n private readonly setError = (errorMessage: string): void => {\n this.props.telemetry.error(errorMessage);\n this.props.moduleState.setHasError(true);\n this.props.moduleState.onUpdating();\n this.errorMessage = errorMessage;\n };\n\n private readonly onCancel = (): void => {\n this.props.telemetry.information('Terms and conditions onCancel is called.');\n\n // Reset to the saved value\n if (!this.props.data.checkout.result) {\n return;\n }\n\n const isTermsAccepted = this.props.data.checkout.result.isTermsAndConditionAccepted;\n if (!isTermsAccepted) {\n // It has no saved email, set to status updating and request user to fill the email form\n this.props.moduleState.onUpdating();\n } else {\n // It has saved email, set to status ready\n this.isTermsAccepted = true;\n this.props.moduleState.setHasError(false);\n this.props.moduleState.onReady();\n }\n };\n\n private readonly updateTermsAndConditionsAcceptance = async (isTermsAccepted: boolean): Promise => {\n if (this.props.data.checkout.result) {\n await this.props.data.checkout.result.updateTermsAndConditionsAcceptance({ newIsTermsAndConditionAccepted: isTermsAccepted });\n }\n };\n\n private readonly clearError = (): void => {\n this.props.moduleState.setHasError(false);\n this.errorMessage = undefined;\n };\n\n private readonly onChange = async (event: React.ChangeEvent) => {\n const checked = event.target.checked;\n this.isTermsAccepted = checked;\n\n if (this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout) {\n await this.props.data.checkout.result.updateIsTermsAndConditionsChecked({ newIsTermsAndConditionChecked: checked });\n }\n\n if (this.isAutoSave) {\n await this.onSubmit();\n }\n };\n}\n\nexport default CheckoutTermsAndConditions;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport {\n ICheckoutTermsAndConditions,\n ICheckoutTermsAndConditionsError,\n ICheckoutTermsAndConditionsViewProps\n} from './checkout-terms-and-conditions';\n\nconst TermsAndCondition: React.FC = ({ termsAndConditionAcceptance, checkBox, description }) => {\n return (\n \n {checkBox}\n {description}\n \n );\n};\n\nconst ErrorMessage: React.FC = ({ error, title, message }) => {\n return (\n \n {title}\n {message}\n \n );\n};\n\nconst CheckoutTermsAndConditionsView: React.FC = props => {\n const {\n checkoutTermsAndConditions,\n checkoutErrorRef,\n viewState,\n termsAndConditionsContent,\n errorMessage,\n saveButton,\n editButton,\n cancelButton\n } = props;\n\n return (\n // TODO: All wrapper div should be provided by viewProps. Once SDK provide the sln, update markup.\n \n {viewState.isError && errorMessage && }\n \n {viewState.isShowSaveButton && saveButton}\n {viewState.isShowEditButton && editButton}\n {viewState.isShowCancelButton && cancelButton}\n \n );\n};\n\nexport default CheckoutTermsAndConditionsView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface ICheckoutDeliveryOptionsDescriptionProps {\n description?: string;\n}\n\n/**\n * AddPaymentForm SFC.\n * @param root0\n * @param root0.description\n * @extends {React.FC}\n */\nconst CheckoutDeliveryOptionsDescription: React.FC = ({ description }) => {\n if (!description) {\n return null;\n }\n\n return {description};\n};\n\nexport default CheckoutDeliveryOptionsDescription;\n","/**\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. See License.txt in the project root for license information.\r\n * ILdsCheckoutShippingOptions contentModule Interface Properties\r\n * THIS FILE IS AUTO-GENERATED - MANUAL MODIFICATIONS WILL BE LOST\r\n */\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\n\r\nexport const enum filterDeliveryModeOption {\r\n none = 'none',\r\n filterOutNonCarrierDeliveryMode = 'filterOutNonCarrierDeliveryMode'\r\n}\r\n\r\nexport const enum useDefaultDeliveryOption {\r\n none = 'none',\r\n displaySelectedDeliveryOption = 'displaySelectedDeliveryOption',\r\n notDisplaySelectedDeliveryOption = 'notDisplaySelectedDeliveryOption'\r\n}\r\n\r\nexport interface ILdsCheckoutShippingOptionsConfig extends Msdyn365.IModuleConfig {\r\n heading?: IHeadingData;\r\n filterDeliveryModeOption?: filterDeliveryModeOption;\r\n useDefaultDeliveryOption?: useDefaultDeliveryOption;\r\n className?: string;\r\n clientRender?: boolean;\r\n}\r\n\r\nexport interface ILdsCheckoutShippingOptionsResources {\r\n deliveryOptionsNotFound: string;\r\n genericErrorMessage: string;\r\n errorMessageTitle: string;\r\n ariaLabelText: string;\r\n priceFree: string;\r\n saveBtnLabel: string;\r\n editBtnLabel: string;\r\n cancelBtnLabel: string;\r\n deliveryOptionAriaLabel: string;\r\n}\r\n\r\nexport const enum HeadingTag {\r\n h1 = 'h1',\r\n h2 = 'h2',\r\n h3 = 'h3',\r\n h4 = 'h4',\r\n h5 = 'h5',\r\n h6 = 'h6'\r\n}\r\n\r\nexport interface IHeadingData {\r\n text: string;\r\n tag?: HeadingTag;\r\n}\r\n\r\nexport interface ILdsCheckoutShippingOptionsProps extends Msdyn365.IModule {\r\n resources: ILdsCheckoutShippingOptionsResources;\r\n config: ILdsCheckoutShippingOptionsConfig;\r\n}\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as React from 'react';\r\n\r\nexport interface ICheckoutDeliveryOptionsDescriptionProps {\r\n description?: string;\r\n}\r\n\r\n/**\r\n * AddPaymentForm SFC.\r\n * @param root0\r\n * @param root0.description\r\n * @extends {React.FC}\r\n */\r\nconst CheckoutDeliveryOptionsDescription: React.FC = ({ description }) => {\r\n if (!description) {\r\n return null;\r\n }\r\n\r\n return {description};\r\n};\r\n\r\nexport default CheckoutDeliveryOptionsDescription;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as React from 'react';\r\n\r\nexport interface ICheckoutDeliveryOptionsErrorMessageProps {\r\n message?: string;\r\n}\r\n\r\n/**\r\n * AddPaymentForm SFC.\r\n * @param root0\r\n * @param root0.message\r\n * @extends {React.FC}\r\n */\r\nconst CheckoutDeliveryOptionsErrorMessage: React.FC = ({ message }) => {\r\n if (!message) {\r\n return null;\r\n }\r\n\r\n return

{message}

;\r\n};\r\n\r\nexport default CheckoutDeliveryOptionsErrorMessage;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as React from 'react';\r\n\r\nexport interface ICheckoutDeliveryOptionsErrorTitleProps {\r\n title?: string;\r\n}\r\n\r\n/**\r\n * AddPaymentForm SFC.\r\n * @param root0\r\n * @param root0.title\r\n * @extends {React.FC}\r\n */\r\nconst CheckoutDeliveryOptionsErrorTitle: React.FC = ({ title }) => {\r\n if (!title) {\r\n return null;\r\n }\r\n\r\n return

{title}

;\r\n};\r\n\r\nexport default CheckoutDeliveryOptionsErrorTitle;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport interface ICheckoutDeliveryOptionsRadioButtonProps {\r\n isChecked: boolean;\r\n value?: string;\r\n ariaSetSize: number;\r\n ariaPosInSet: number;\r\n ariaLabel?: string;\r\n telemetryContent?: ITelemetryContent;\r\n onChange(event: React.ChangeEvent): void;\r\n}\r\n\r\n/**\r\n * AddPaymentForm SFC.\r\n * @param root0\r\n * @param root0.isChecked\r\n * @param root0.value\r\n * @param root0.ariaSetSize\r\n * @param root0.ariaPosInSet\r\n * @param root0.ariaLabel\r\n * @param root0.telemetryContent\r\n * @param root0.onChange\r\n * @extends {React.FC}\r\n */\r\nconst CheckoutDeliveryOptionsRadioButton: React.FC = ({\r\n isChecked,\r\n value,\r\n ariaSetSize,\r\n ariaPosInSet,\r\n ariaLabel,\r\n telemetryContent,\r\n onChange\r\n}) => {\r\n if (!value) {\r\n return null;\r\n }\r\n\r\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.DeliveryOptions);\r\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default CheckoutDeliveryOptionsRadioButton;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { PriceComponent } from '@msdyn365-commerce/components';\r\nimport { CheckoutModule, ErrorLocation, ICheckoutState } from '@msdyn365-commerce/global-state';\r\nimport { Cart, ChannelDeliveryOptionConfiguration, FilterDeliveryModeOption } from '@msdyn365-commerce/retail-proxy';\r\nimport { getDeliveryOptionsAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g';\r\nimport { Address, CartLine, DeliveryOption } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport { IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\r\nimport { QueryResultSettingsProxy, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Button, getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, Waiting } from '@msdyn365-commerce-modules/utilities';\r\nimport classname from 'classnames';\r\nimport get from 'lodash/get';\r\nimport { action, computed, observable, reaction, when } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport { ErrorComponent } from '@msdyn365-commerce-modules/checkout';\r\nimport { ILdsCheckoutShippingOptionsData } from './lds-checkout-shipping-options.data';\r\nimport {\r\n filterDeliveryModeOption,\r\n ILdsCheckoutShippingOptionsProps,\r\n useDefaultDeliveryOption\r\n} from './lds-checkout-shipping-options.props.autogenerated';\r\nimport DescriptionComponent from './components/lds-checkout-shipping-options.description';\r\nimport ErrorMessageComponent from './components/lds-checkout-shipping-options.error-message';\r\nimport ErrorTitleComponent from './components/lds-checkout-shipping-options.error-title';\r\nimport RadioButtonComponent from './components/lds-checkout-shipping-options.radio-button';\r\nimport { focusOnCheckoutError } from '@msdyn365-commerce-modules/checkout';\r\n\r\nexport interface ICheckoutDeliveryOptionsModuleProps\r\n extends ILdsCheckoutShippingOptionsProps,\r\n IModuleStateProps {}\r\n\r\nexport interface ICheckoutDeliveryOption {\r\n DeliveryOption: INodeProps;\r\n description?: React.ReactNode;\r\n price?: React.ReactNode;\r\n}\r\n\r\nexport interface ICheckoutDeliveryOptionEdit extends ICheckoutDeliveryOption {\r\n code: string;\r\n radioButton?: React.ReactNode;\r\n}\r\n\r\nexport interface ICheckoutDeliveryOptionsList {\r\n DeliveryOptionsList: INodeProps;\r\n list: ICheckoutDeliveryOptionEdit[];\r\n}\r\n\r\nexport interface ICheckoutDeliveryOptionsError {\r\n Error: INodeProps;\r\n title: React.ReactNode;\r\n message: React.ReactNode;\r\n}\r\n\r\nexport interface ICheckoutDeliveryOptionsViewState {\r\n isLoading: boolean;\r\n isError: boolean;\r\n isShowList: boolean;\r\n isShowSelected: boolean;\r\n isShowSaveButton: boolean;\r\n isShowEditButton: boolean;\r\n isShowCancelButton: boolean;\r\n}\r\n\r\nexport interface ICheckoutDeliveryOptionsViewProps extends ILdsCheckoutShippingOptionsProps<{}> {\r\n CheckoutDeliveryOptions: IModuleProps;\r\n selectedItemId: string;\r\n deliveryOptionsData: DeliveryOption[];\r\n isLoading: boolean;\r\n errorMessageData: string;\r\n viewState: ICheckoutDeliveryOptionsViewState;\r\n deliveryOptions?: ICheckoutDeliveryOptionsList;\r\n deliveryOptionSelected?: ICheckoutDeliveryOption;\r\n errorMessage?: ICheckoutDeliveryOptionsError;\r\n waiting?: React.ReactNode;\r\n saveButton?: React.ReactNode;\r\n editButton?: React.ReactNode;\r\n cancelButton?: React.ReactNode;\r\n alert?: React.ReactNode;\r\n checkoutErrorRef?: React.RefObject;\r\n onDeliveryOptionChange(event: React.ChangeEvent): void;\r\n onSave(): void;\r\n onEdit(): void;\r\n onCancel(): void;\r\n}\r\n\r\n/**\r\n *\r\n * CheckoutDeliveryOptions component.\r\n * @extends {React.Component>}\r\n */\r\n// @ts-expect-error\r\n@withModuleState\r\n@observer\r\nclass CheckoutDeliveryOptions extends React.Component {\r\n @observable private selectedItemId: string = '';\r\n\r\n @observable private deliveryOptions: DeliveryOption[] = [];\r\n\r\n @observable private isLoading: boolean = false;\r\n\r\n @observable private errorMessage?: string;\r\n\r\n @computed private get isDataReady(): boolean {\r\n return (this.props.data.checkout.result && this.props.data.checkout.status) === 'SUCCESS';\r\n }\r\n\r\n public get expressPaymentDetailsFromCartPage() {\r\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\r\n const properties =\r\n this.props.data.cart?.result?.cart?.ExtensionProperties?.find(property => property.Key === 'expressPaymentDetails')?.Value\r\n ?.StringValue ?? '';\r\n\r\n return properties ? JSON.parse(properties) : null;\r\n }\r\n\r\n public get isExpressPaymentAppliedInCartPage(): boolean {\r\n return this.expressPaymentDetailsFromCartPage?.isExpressCheckoutAppliedInCartPage ?? false;\r\n }\r\n\r\n private cartDeliveryMode?: string;\r\n\r\n private retailMultiplePickUpOptionEnabled?: boolean = false;\r\n\r\n private channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration;\r\n\r\n private readonly telemetryContent?: ITelemetryContent;\r\n\r\n private readonly isSelectDefaultOptionEnabled?: boolean;\r\n\r\n private readonly checkoutErrorRef: React.RefObject = React.createRef();\r\n\r\n public constructor(props: ICheckoutDeliveryOptionsModuleProps) {\r\n super(props);\r\n this.telemetryContent = getTelemetryObject(\r\n this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry\r\n );\r\n this.isSelectDefaultOptionEnabled =\r\n this.props.config.useDefaultDeliveryOption && this.props.config.useDefaultDeliveryOption !== useDefaultDeliveryOption.none;\r\n }\r\n\r\n public async componentDidMount(): Promise {\r\n when(\r\n () => this.isDataReady,\r\n async () => {\r\n await this.init();\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.props.data.checkout.result?.shippingAddress,\r\n async () => {\r\n await this.loadDeliveryOptions();\r\n this.props.moduleState.setIsCancellable(false);\r\n\r\n await this.props.data.checkout.result?.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: true });\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.props.data.checkout.result?.isExpressCheckoutApplied,\r\n async isExpressCheckoutApplied => {\r\n if (isExpressCheckoutApplied && this.canShip() && !this.isExpressPaymentAppliedInCartPage) {\r\n await this.loadDeliveryOptions();\r\n this.props.moduleState.setIsCancellable(false);\r\n\r\n await this.props.data.checkout.result?.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: true });\r\n }\r\n }\r\n );\r\n\r\n if (this.props.data.checkout.result?.shouldEnableCheckoutErrorDisplayMessaging) {\r\n reaction(\r\n () => this.props.data.checkout.result?.checkoutError,\r\n checkoutError => {\r\n if (\r\n checkoutError &&\r\n checkoutError.errorLocation === ErrorLocation.CheckoutDeliveryOptions &&\r\n checkoutError.errorMessage\r\n ) {\r\n this.setError(checkoutError.errorMessage);\r\n }\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.props.data.checkout.result?.checkoutErrorFocus,\r\n checkoutErrorFocus => {\r\n if (checkoutErrorFocus === CheckoutModule.CheckoutDeliveryOptions) {\r\n void focusOnCheckoutError(this.checkoutErrorRef, this.props.context.actionContext);\r\n }\r\n }\r\n );\r\n }\r\n }\r\n\r\n public shouldComponentUpdate(nextProps: ICheckoutDeliveryOptionsModuleProps, nextState: ICheckoutDeliveryOptionsViewState): boolean {\r\n if (this.state === nextState && this.props.data === nextProps.data) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\r\n this.channelDeliveryOptionConfig = this.props.data.channelDeliveryOptionConfig?.result;\r\n this.retailMultiplePickUpOptionEnabled = this.props.data.featureState?.result?.find(\r\n feature => feature.Name === multiplePickupStoreSwitchName\r\n )?.IsEnabled;\r\n\r\n if (!this.canShip()) {\r\n this.props.context.telemetry.error('Checkout delivery options content is empty, module wont render');\r\n return null;\r\n }\r\n\r\n const {\r\n moduleState: { isReady, isUpdating, hasError }\r\n } = this.props;\r\n const isError = !this.isLoading && hasError;\r\n const isShowList = !this.isLoading && !hasError && isUpdating && !this.isSelectDefaultOptionEnabled;\r\n const isShowSelected = !this.isLoading && !hasError && isReady;\r\n const { errorMessageTitle, deliveryOptionAriaLabel } = this.props.resources;\r\n\r\n const viewProps = {\r\n ...this.props,\r\n onDeliveryOptionChange: this.onDeliveryOptionChange,\r\n selectedItemId: this.selectedItemId,\r\n deliveryOptionsData: this.deliveryOptions,\r\n isLoading: this.isLoading,\r\n alert: this.errorMessage && ,\r\n errorMessageData: this.errorMessage,\r\n viewState: {\r\n isLoading: this.isLoading,\r\n isError,\r\n isShowList,\r\n isShowSelected,\r\n // isShowSaveButton: isShowList && !this.props.moduleState.hasExternalSubmitGroup,\r\n isShowSaveButton: isShowList,\r\n isShowEditButton: isShowSelected && !this.props.moduleState.hasExternalSubmitGroup,\r\n // isShowCancelButton: isShowList && !this.props.moduleState.hasExternalSubmitGroup && !!this.getSavedDeliveryOption()\r\n isShowCancelButton: isShowList && !!this.getSavedDeliveryOption()\r\n },\r\n CheckoutDeliveryOptions: {\r\n moduleProps: this.props,\r\n className: classname('ms-checkout-delivery-options', this.props.config.className)\r\n },\r\n deliveryOptions: {\r\n DeliveryOptionsList: {\r\n className: 'ms-checkout-delivery-options__list',\r\n role: 'list',\r\n 'aria-label': deliveryOptionAriaLabel\r\n },\r\n list: this.getDeliveryOptionList()\r\n },\r\n deliveryOptionSelected: this.getDeliveryOptionSelected(),\r\n errorMessage: this.getErrorMessage(),\r\n waiting: ,\r\n checkoutErrorRef: this.checkoutErrorRef,\r\n saveButton: this.getSaveButton(),\r\n editButton: this.getEditButton(),\r\n cancelButton: this.getCancelButton(),\r\n onSave: this.onSave,\r\n onEdit: this.onEdit,\r\n onCancel: this.onCancel\r\n };\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n @action\r\n private readonly init = async (): Promise => {\r\n this.props.moduleState.init({\r\n onEdit: this.isSelectDefaultOptionEnabled ? undefined : this.onEdit,\r\n onCancel: this.isSelectDefaultOptionEnabled ? undefined : this.onCancel,\r\n onSubmit: this.isSelectDefaultOptionEnabled ? undefined : this.onSubmit,\r\n status:\r\n !(this.props.config.useDefaultDeliveryOption === useDefaultDeliveryOption.notDisplaySelectedDeliveryOption) &&\r\n this.canShip()\r\n ? 'updating'\r\n : 'disabled'\r\n });\r\n\r\n this.cartDeliveryMode = this.getSavedDeliveryOption();\r\n await this.loadDeliveryOptions();\r\n };\r\n\r\n private readonly canShip = (): boolean => {\r\n const hasInvoice = this.props.data.checkout.result?.checkoutCart.hasInvoiceLine;\r\n return !hasInvoice && this.getCartLinesForShipping().length > 0;\r\n };\r\n\r\n private readonly isDeliveryModeExists = (deliveryMode: string | undefined): boolean => {\r\n if (deliveryMode) {\r\n if (this.deliveryOptions.find(deliveryOption => deliveryOption.Code === deliveryMode)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n\r\n private readonly getDeliveryOptionSelected = (): ICheckoutDeliveryOption | null => {\r\n const selectedItem = this.deliveryOptions.find(deliveryOption => deliveryOption.Code === this.selectedItemId);\r\n if (!selectedItem) {\r\n this.props.context.telemetry.error('Checkout delivery options content is empty, module wont render');\r\n return null;\r\n }\r\n\r\n const { id, typeName, context } = this.props;\r\n const { priceFree } = this.props.resources;\r\n const price = get(selectedItem, 'ShippingChargeAmount', 0);\r\n\r\n return {\r\n DeliveryOption: { className: 'ms-checkout-delivery-options__option-selected' },\r\n description: ,\r\n price: (\r\n \r\n )\r\n };\r\n };\r\n\r\n private readonly getErrorMessage = (): ICheckoutDeliveryOptionsError => {\r\n const { errorMessageTitle } = this.props.resources;\r\n return {\r\n // @ts-expect-error\r\n CheckoutDeliveryOptionsError: { tag: 'span', className: 'ms-address-form__error', role: 'alert', 'aria-live': 'assertive' },\r\n title: ,\r\n message: \r\n };\r\n };\r\n\r\n private readonly getDeliveryOptionList = (): ICheckoutDeliveryOptionEdit[] => {\r\n const count = this.deliveryOptions.length;\r\n const { priceFree } = this.props.resources;\r\n const { id, typeName, context } = this.props;\r\n\r\n return this.deliveryOptions.map((deliveryOption: DeliveryOption, index: number) => {\r\n return {\r\n DeliveryOption: { className: 'ms-checkout-delivery-options__option', role: 'listitem' },\r\n code: deliveryOption.Code || '',\r\n radioButton: (\r\n \r\n ),\r\n description: (\r\n \r\n ),\r\n price: (\r\n \r\n )\r\n };\r\n });\r\n };\r\n\r\n private readonly getSaveButton = (): React.ReactNode => {\r\n const { saveBtnLabel = 'Save' } = this.props.resources;\r\n return (\r\n \r\n {saveBtnLabel}\r\n \r\n );\r\n };\r\n\r\n private readonly getEditButton = (): React.ReactNode => {\r\n const { editBtnLabel = 'Change' } = this.props.resources;\r\n return (\r\n \r\n );\r\n };\r\n\r\n private readonly getCancelButton = (): React.ReactNode => {\r\n const { cancelBtnLabel = 'Cancel' } = this.props.resources;\r\n return (\r\n \r\n );\r\n };\r\n\r\n private readonly setError = (errorMessage: string): void => {\r\n this.props.telemetry.error(errorMessage);\r\n this.props.moduleState.setHasError(true);\r\n this.props.moduleState.onUpdating();\r\n this.errorMessage = errorMessage;\r\n };\r\n\r\n private readonly clearError = (): void => {\r\n this.props.moduleState.setHasError(false);\r\n this.errorMessage = undefined;\r\n };\r\n\r\n private readonly onSave = async (): Promise => {\r\n await this.onSubmit();\r\n };\r\n\r\n private readonly onEdit = async (): Promise => {\r\n this.props.telemetry.information('Delivery options onEdit is called.');\r\n\r\n this.clearError();\r\n this.onUpdating();\r\n await this.props.data.checkout.result?.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: true });\r\n };\r\n\r\n private readonly onSubmit = async (): Promise => {\r\n this.props.telemetry.information('Delivery options onSubmit is called.');\r\n\r\n await this.updateCartDeliverySpecification(this.selectedItemId);\r\n await this.props.data.checkout.result?.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: false });\r\n };\r\n\r\n private readonly onCancel = async (): Promise => {\r\n this.props.telemetry.information('Delivery options onCancel is called.');\r\n\r\n // Reset to the saved value\r\n const savedDeliveryOption = this.getSavedDeliveryOption();\r\n if (savedDeliveryOption) {\r\n this.selectedItemId = savedDeliveryOption;\r\n this.onReady();\r\n\r\n await this.props.data.checkout.result?.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: false });\r\n } else {\r\n this.onUpdating();\r\n }\r\n };\r\n\r\n private readonly getSavedDeliveryOption = (): string | undefined => {\r\n const cartLinesForShipping = this.getCartLinesForShipping();\r\n return cartLinesForShipping[0] && cartLinesForShipping[0].DeliveryMode;\r\n };\r\n\r\n private readonly updateCartDeliverySpecification = async (deliveryModeId: string): Promise => {\r\n if (deliveryModeId.trim() === '') {\r\n return;\r\n }\r\n\r\n const { resources } = this.props;\r\n const checkoutState = this.props.data.checkout.result as ICheckoutState;\r\n const updateCartDeliverySpecificationInput = {\r\n deliveryModeId,\r\n shippingAddress: checkoutState.shippingAddress,\r\n channelDeliveryOptionConfig: this.retailMultiplePickUpOptionEnabled ? this.channelDeliveryOptionConfig : undefined\r\n };\r\n\r\n this.clearError();\r\n this.onPending();\r\n\r\n await checkoutState.checkoutCart\r\n .updateCartDeliverySpecification(updateCartDeliverySpecificationInput)\r\n .then(response => {\r\n if (response.status === 'FAILED') {\r\n const errorMessage = `${response.errorDetails?.LocalizedMessage}`;\r\n this.setError(StringExtensions.isNullOrEmpty(errorMessage) ? resources.genericErrorMessage : errorMessage);\r\n }\r\n\r\n this.onReady();\r\n this.props.moduleState.setIsCancellable(true);\r\n })\r\n .catch(() => {\r\n this.setError(resources.genericErrorMessage);\r\n });\r\n };\r\n\r\n private readonly getCartLinesForShipping = (): CartLine[] => {\r\n const { request } = this.props.context;\r\n const pickupDeliveryModeCode = request && request.channel && request.channel.PickupDeliveryModeCode;\r\n const emailDeliveryModeCode = request && request.channel && request.channel.EmailDeliveryModeCode;\r\n\r\n return this.retailMultiplePickUpOptionEnabled\r\n ? ((this.props.data.checkout.result && this.props.data.checkout.result.checkoutCart.cart.CartLines) || []).filter(cartLine =>\r\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\r\n ? cartLine.DeliveryMode !==\r\n this.channelDeliveryOptionConfig?.PickupDeliveryModeCodes?.find(\r\n deliveryMode => deliveryMode === cartLine.DeliveryMode\r\n ) && cartLine.DeliveryMode !== emailDeliveryModeCode\r\n : cartLine\r\n )\r\n : ((this.props.data.checkout.result && this.props.data.checkout.result.checkoutCart.cart.CartLines) || []).filter(cartLine =>\r\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\r\n ? cartLine.DeliveryMode !== pickupDeliveryModeCode && cartLine.DeliveryMode !== emailDeliveryModeCode\r\n : cartLine\r\n );\r\n };\r\n\r\n private readonly getDeliveryOptions = async (shippingAddress: Address): Promise => {\r\n if (!this.props.data.checkout.result) {\r\n return;\r\n }\r\n\r\n const { context, resources, config } = this.props;\r\n const cartState = this.props.data.checkout.result?.checkoutCart;\r\n const cartId = (cartState.cart as Cart).Id;\r\n\r\n if (context) {\r\n this.isLoading = true;\r\n this.deliveryOptions = [];\r\n this.selectedItemId = '';\r\n this.clearError();\r\n\r\n try {\r\n let originalDeliveryMode: string = '';\r\n const shippingCartLines = this.getCartLinesForShipping();\r\n const hasShippingDeliveryLines = shippingCartLines && shippingCartLines.length > 0 && shippingCartLines[0].DeliveryMode;\r\n if (hasShippingDeliveryLines) {\r\n // First store the delivery mode, so that we can restore the shipping information.\r\n originalDeliveryMode = shippingCartLines[0].DeliveryMode || '';\r\n\r\n // Clear the delivery information on retail server, so GetDeliveryOptions charge calculation works correctly\r\n const cart = cartState.cart;\r\n await cartState.clearCartLinesDeliveryInformation({\r\n cart,\r\n channelDeliveryOptionConfiguration: this.channelDeliveryOptionConfig\r\n });\r\n }\r\n\r\n // TODO: Check if we can move this getDeliveryOptions to checkout state\r\n let deliveryOptionFilter: FilterDeliveryModeOption;\r\n switch (config.filterDeliveryModeOption) {\r\n case filterDeliveryModeOption.none:\r\n deliveryOptionFilter = FilterDeliveryModeOption.None;\r\n break;\r\n case filterDeliveryModeOption.filterOutNonCarrierDeliveryMode:\r\n deliveryOptionFilter = FilterDeliveryModeOption.FilterOutNonCarrierDeliveryMode;\r\n break;\r\n default:\r\n deliveryOptionFilter = FilterDeliveryModeOption.FilterOutNonCarrierDeliveryMode;\r\n }\r\n const response = await getDeliveryOptionsAsync(\r\n {\r\n callerContext: context.actionContext,\r\n queryResultSettings: QueryResultSettingsProxy.getPagingFromInputDataOrDefaultValue(context.actionContext)\r\n },\r\n cartId,\r\n shippingAddress,\r\n [],\r\n deliveryOptionFilter,\r\n true\r\n );\r\n\r\n if (hasShippingDeliveryLines) {\r\n await this.updateCartDeliverySpecification(originalDeliveryMode);\r\n }\r\n\r\n if (response && response.length > 0) {\r\n this.deliveryOptions = response;\r\n }\r\n } catch {\r\n this.setError(resources.genericErrorMessage);\r\n }\r\n\r\n if (this.deliveryOptions.length === 0) {\r\n this.setError(resources.deliveryOptionsNotFound);\r\n } else if (this.cartDeliveryMode && this.isDeliveryModeExists(this.cartDeliveryMode)) {\r\n this.selectedItemId = this.cartDeliveryMode;\r\n this.cartDeliveryMode = undefined;\r\n this.onReady();\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\r\n this.props.data.checkout.result?.updateHasCartDeliveryMode({ newHasCartDeliveryMode: true });\r\n\r\n if (!this.props.data.checkout.result?.isPaymentVerificationRedirection) {\r\n await this.props.data.checkout.result.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: false });\r\n }\r\n } else {\r\n this.onUpdating();\r\n this.selectedItemId = this.deliveryOptions.length > 0 ? this.deliveryOptions[0].Code || '' : ''; // By default, select first delivery\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\r\n this.props.data.checkout.result?.updateHasCartDeliveryMode({ newHasCartDeliveryMode: !!this.isSelectDefaultOptionEnabled });\r\n }\r\n\r\n this.isLoading = false;\r\n }\r\n };\r\n\r\n private readonly getStoredDeliveryOptions = async (): Promise => {\r\n if (!this.props.data.checkout.result) {\r\n return;\r\n }\r\n\r\n const { context } = this.props;\r\n const cartState = this.props.data.checkout.result.checkoutCart;\r\n\r\n if (context) {\r\n this.isLoading = true;\r\n this.deliveryOptions = [];\r\n this.selectedItemId = '';\r\n this.clearError();\r\n\r\n let originalDeliveryMode: string = '';\r\n const shippingCartLines = this.getCartLinesForShipping();\r\n const hasShippingDeliveryLines = shippingCartLines && shippingCartLines.length > 0 && shippingCartLines[0].DeliveryMode;\r\n if (hasShippingDeliveryLines) {\r\n // First store the delivery mode, so that we can restore the shipping information.\r\n originalDeliveryMode = shippingCartLines[0].DeliveryMode || '';\r\n\r\n // Clear the delivery information on retail server, so GetDeliveryOptions charge calculation works correctly\r\n const cart = cartState.cart;\r\n await cartState.clearCartLinesDeliveryInformation({\r\n cart,\r\n channelDeliveryOptionConfiguration: this.channelDeliveryOptionConfig\r\n });\r\n if (hasShippingDeliveryLines) {\r\n await this.updateCartDeliverySpecification(originalDeliveryMode);\r\n }\r\n }\r\n\r\n if (this.cartDeliveryMode) {\r\n this.selectedItemId = this.cartDeliveryMode;\r\n this.cartDeliveryMode = undefined;\r\n this.onReady();\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\r\n this.props.data.checkout.result?.updateHasCartDeliveryMode({ newHasCartDeliveryMode: true });\r\n\r\n if (!this.props.data.checkout.result.isPaymentVerificationRedirection) {\r\n await this.props.data.checkout.result.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: false });\r\n }\r\n }\r\n\r\n this.isLoading = false;\r\n }\r\n };\r\n\r\n private readonly loadDeliveryOptions = async (): Promise => {\r\n const shippingAddress = this.props.data.checkout.result?.shippingAddress;\r\n\r\n if (this.canShip() && shippingAddress) {\r\n if (\r\n !this.props.data.checkout.result?.isPaymentVerificationRedirection ||\r\n this.isSelectDefaultOptionEnabled ||\r\n this.props.data.checkout.result?.isExpressCheckoutApplied\r\n ) {\r\n await this.getDeliveryOptions(shippingAddress);\r\n }\r\n\r\n if (this.props.data.checkout.result?.isPaymentVerificationRedirection) {\r\n await this.getStoredDeliveryOptions();\r\n }\r\n\r\n if (\r\n this.isSelectDefaultOptionEnabled ||\r\n this.props.data.checkout.result?.isExpressCheckoutApplied ||\r\n this.isExpressPaymentAppliedInCartPage\r\n ) {\r\n void this.onSubmit();\r\n }\r\n }\r\n };\r\n\r\n private readonly onDeliveryOptionChange = (event: React.ChangeEvent) => {\r\n const deliveryModeId = event.currentTarget.value;\r\n this.selectedItemId = deliveryModeId;\r\n };\r\n\r\n private readonly onReady = () => {\r\n if (!(this.props.config.useDefaultDeliveryOption === useDefaultDeliveryOption.notDisplaySelectedDeliveryOption)) {\r\n this.props.moduleState.onReady();\r\n }\r\n };\r\n\r\n private readonly onUpdating = () => {\r\n if (!(this.props.config.useDefaultDeliveryOption === useDefaultDeliveryOption.notDisplaySelectedDeliveryOption)) {\r\n this.props.moduleState.onUpdating();\r\n }\r\n };\r\n\r\n private readonly onPending = () => {\r\n if (!this.isSelectDefaultOptionEnabled) {\r\n this.props.moduleState.onPending();\r\n }\r\n };\r\n}\r\n\r\nexport default CheckoutDeliveryOptions;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface ICheckoutTermsAndConditionsErrorTitleProps {\n title?: string;\n}\n\n/**\n * AddPaymentForm SFC.\n * @param root0\n * @param root0.title\n * @extends {React.FC}\n */\nconst CheckoutTermsAndConditionsErrorTitle: React.FC = ({ title }) => {\n if (!title) {\n return null;\n }\n\n return

{title}

;\n};\n\nexport default CheckoutTermsAndConditionsErrorTitle;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IActionContext, getUrlSync } from '@msdyn365-commerce/core';\n\nexport const GetCheckoutReturnUrl = (actionContext: IActionContext): string => {\n let returnUrl = getUrlSync('checkout', actionContext) || '';\n const absoluteUrlRegExp = new RegExp('^(?:[a-z]+:)?//', 'i');\n const isAbsoluteUrl = absoluteUrlRegExp.test(returnUrl);\n if (window && !isAbsoluteUrl) {\n returnUrl = `${window.location.origin}${returnUrl}`;\n }\n\n return `${returnUrl}${!returnUrl.includes('?') ? '?' : '&'}pv=1`;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Button, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IShowContactInfoInput {\n canEdit: boolean;\n email: string;\n resources: {\n editBtnLabel: string;\n };\n onEdit(): void;\n}\n\nexport interface IShowContactInfo {\n showInfoProps: INodeProps;\n email: React.ReactNode;\n editButton?: React.ReactNode;\n}\n\nconst getContactInfo = ({ canEdit, email, resources: { editBtnLabel }, onEdit }: IShowContactInfoInput): IShowContactInfo => ({\n showInfoProps: { className: 'ms-checkout-guest-profile__selected-item' },\n email: {email},\n editButton: canEdit && (\n \n )\n});\n\nexport default getContactInfo;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nexport * from './checkout-loyalty-input';\nexport * from './checkout-loyalty-label';\nexport * from './checkout-loyalty-text';\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport {\r\n ICheckoutTermsAndConditions,\r\n ICheckoutTermsAndConditionsError,\r\n ICheckoutTermsAndConditionsViewProps\r\n} from './lds-checkout-terms-and-conditions-4';\r\n// @ts-ignore\r\nimport { Error } from '@churchofjesuschrist/eden-alert';\r\n\r\ninterface ILdsCheckoutTermsAndConditions extends ICheckoutTermsAndConditions {\r\n resources?: any;\r\n salesAndRefundPolicy?: any;\r\n context?: any;\r\n}\r\n\r\nconst TermsAndCondition: React.FC = ({\r\n termsAndConditionAcceptance,\r\n checkBox,\r\n description,\r\n salesAndRefundPolicy,\r\n resources,\r\n context\r\n}) => {\r\n const [title, setTitle] = React.useState();\r\n\r\n React.useEffect(() => {\r\n const sessionTitle = sessionStorage.getItem('salesData');\r\n\r\n if (!title) {\r\n setTitle(sessionTitle);\r\n }\r\n }, []);\r\n\r\n // const linkURL = salesAndRefundPolicy?.URL.replace('%1', salesAndRefundPolicy.LDSPublisherLanguage).replace(\r\n // '%2',\r\n // salesAndRefundPolicy.LDSPublisherCountry\r\n // );\r\n const onClick = async (policyType: string) => {\r\n const encodedString = encodeURIComponent(policyType);\r\n\r\n window.open(`${window.location.origin}${context.request.sitePath}/termsandconditions?policy=${encodedString}`);\r\n };\r\n\r\n return (\r\n \r\n {checkBox}\r\n {/* {description} */}\r\n
\r\n {`${resources.agreementText} `}\r\n \r\n salesAndRefundPolicy && salesAndRefundPolicy.PolicyType ? onClick(salesAndRefundPolicy.PolicyType) : ''\r\n }\r\n target='_blank'\r\n rel='noreferrer'\r\n style={{ cursor: 'pointer' }}\r\n >\r\n {title || salesAndRefundPolicy?.DESCRIPTION || salesAndRefundPolicy?.Description}\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nconst ErrorMessage: React.FC = ({ error, title, message }) => {\r\n return (\r\n // \r\n // @ts-ignore\r\n {message.props.message}\r\n // \r\n );\r\n};\r\n\r\nconst CheckoutTermsAndConditionsView: React.FC = props => {\r\n const {\r\n checkoutTermsAndConditions,\r\n checkoutErrorRef,\r\n viewState,\r\n termsAndConditionsContent,\r\n errorMessage,\r\n saveButton,\r\n editButton,\r\n cancelButton,\r\n salesAndRefundPolicy,\r\n resources\r\n } = props;\r\n\r\n return (\r\n // TODO: All wrapper div should be provided by viewProps. Once SDK provide the sln, update markup.\r\n \r\n {viewState.isError && errorMessage && }\r\n \r\n {viewState.isShowSaveButton && saveButton}\r\n {viewState.isShowEditButton && editButton}\r\n {viewState.isShowCancelButton && cancelButton}\r\n \r\n );\r\n};\r\n\r\nexport default CheckoutTermsAndConditionsView;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ICheckoutTermsAndConditionsCheckboxProps {\n isChecked: boolean;\n ariaLabel?: string;\n disabled: boolean;\n id?: string;\n telemetryContent?: ITelemetryContent;\n onChange(event: React.ChangeEvent): void;\n}\n\n/**\n * AddPaymentForm SFC.\n * @param root0\n * @param root0.isChecked\n * @param root0.ariaLabel\n * @param root0.disabled\n * @param root0.telemetryContent\n * @param root0.onChange\n * @param root0.id\n * @extends {React.FC}\n */\nconst CheckoutTermsAndConditionsCheckbox: React.FC = ({\n isChecked,\n ariaLabel,\n disabled,\n telemetryContent,\n onChange,\n id\n}) => {\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n const attribute = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n <>\n \n \n );\n};\n\nexport default CheckoutTermsAndConditionsCheckbox;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface ICheckoutLoyaltyTextProps {\n className: string;\n text?: string;\n}\n\n/**\n * AddPaymentForm SFC.\n * @param root0\n * @param root0.className\n * @param root0.text\n * @extends {React.FC}\n */\nconst CheckoutLoyaltyText: React.FC = ({ className, text }) => {\n if (!text) {\n return null;\n }\n\n return {text};\n};\n\nexport default CheckoutLoyaltyText;\n","/**\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. See License.txt in the project root for license information.\r\n * ILdsCheckoutDeliveryOptions4 contentModule Interface Properties\r\n * THIS FILE IS AUTO-GENERATED - MANUAL MODIFICATIONS WILL BE LOST\r\n */\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\n\r\nexport const enum filterDeliveryModeOption {\r\n none = 'none',\r\n filterOutNonCarrierDeliveryMode = 'filterOutNonCarrierDeliveryMode'\r\n}\r\n\r\nexport const enum useDefaultDeliveryOption {\r\n none = 'none',\r\n displaySelectedDeliveryOption = 'displaySelectedDeliveryOption',\r\n notDisplaySelectedDeliveryOption = 'notDisplaySelectedDeliveryOption'\r\n}\r\n\r\nexport interface ILdsCheckoutDeliveryOptions4Config extends Msdyn365.IModuleConfig {\r\n heading?: IHeadingData;\r\n filterDeliveryModeOption?: filterDeliveryModeOption;\r\n useDefaultDeliveryOption?: useDefaultDeliveryOption;\r\n className?: string;\r\n clientRender?: boolean;\r\n}\r\n\r\nexport interface ILdsCheckoutDeliveryOptions4Resources {\r\n deliveryOptionsNotFound: string;\r\n genericErrorMessage: string;\r\n errorMessageTitle: string;\r\n ariaLabelText: string;\r\n priceFree: string;\r\n saveBtnLabel: string;\r\n editBtnLabel: string;\r\n cancelBtnLabel: string;\r\n deliveryOptionAriaLabel: string;\r\n}\r\n\r\nexport const enum HeadingTag {\r\n h1 = 'h1',\r\n h2 = 'h2',\r\n h3 = 'h3',\r\n h4 = 'h4',\r\n h5 = 'h5',\r\n h6 = 'h6'\r\n}\r\n\r\nexport interface IHeadingData {\r\n text: string;\r\n tag?: HeadingTag;\r\n}\r\n\r\nexport interface ILdsCheckoutDeliveryOptions4Props extends Msdyn365.IModule {\r\n resources: ILdsCheckoutDeliveryOptions4Resources;\r\n config: ILdsCheckoutDeliveryOptions4Config;\r\n}\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as React from 'react';\r\n\r\nexport interface ICheckoutDeliveryOptionsDescriptionProps {\r\n description?: string;\r\n}\r\n\r\n/**\r\n * AddPaymentForm SFC.\r\n * @param root0\r\n * @param root0.description\r\n * @extends {React.FC}\r\n */\r\nconst CheckoutDeliveryOptionsDescription: React.FC = ({ description }) => {\r\n if (!description) {\r\n return null;\r\n }\r\n\r\n return {description};\r\n};\r\n\r\nexport default CheckoutDeliveryOptionsDescription;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as React from 'react';\r\n\r\nexport interface ICheckoutDeliveryOptionsErrorMessageProps {\r\n message?: string;\r\n}\r\n\r\n/**\r\n * AddPaymentForm SFC.\r\n * @param root0\r\n * @param root0.message\r\n * @extends {React.FC}\r\n */\r\nconst CheckoutDeliveryOptionsErrorMessage: React.FC = ({ message }) => {\r\n if (!message) {\r\n return null;\r\n }\r\n\r\n return

{message}

;\r\n};\r\n\r\nexport default CheckoutDeliveryOptionsErrorMessage;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as React from 'react';\r\n\r\nexport interface ICheckoutDeliveryOptionsErrorTitleProps {\r\n title?: string;\r\n}\r\n\r\n/**\r\n * AddPaymentForm SFC.\r\n * @param root0\r\n * @param root0.title\r\n * @extends {React.FC}\r\n */\r\nconst CheckoutDeliveryOptionsErrorTitle: React.FC = ({ title }) => {\r\n if (!title) {\r\n return null;\r\n }\r\n\r\n return

{title}

;\r\n};\r\n\r\nexport default CheckoutDeliveryOptionsErrorTitle;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport interface ICheckoutDeliveryOptionsRadioButtonProps {\r\n isChecked: boolean;\r\n value?: string;\r\n ariaSetSize: number;\r\n ariaPosInSet: number;\r\n ariaLabel?: string;\r\n telemetryContent?: ITelemetryContent;\r\n onChange(event: React.ChangeEvent): void;\r\n}\r\n\r\n/**\r\n * AddPaymentForm SFC.\r\n * @param root0\r\n * @param root0.isChecked\r\n * @param root0.value\r\n * @param root0.ariaSetSize\r\n * @param root0.ariaPosInSet\r\n * @param root0.ariaLabel\r\n * @param root0.telemetryContent\r\n * @param root0.onChange\r\n * @extends {React.FC}\r\n */\r\nconst CheckoutDeliveryOptionsRadioButton: React.FC = ({\r\n isChecked,\r\n value,\r\n ariaSetSize,\r\n ariaPosInSet,\r\n ariaLabel,\r\n telemetryContent,\r\n onChange\r\n}) => {\r\n if (!value) {\r\n return null;\r\n }\r\n\r\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.DeliveryOptions);\r\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default CheckoutDeliveryOptionsRadioButton;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { PriceComponent } from '@msdyn365-commerce/components';\r\nimport { CheckoutModule, ErrorLocation, ICheckoutState } from '@msdyn365-commerce/global-state';\r\nimport { Cart, ChannelDeliveryOptionConfiguration, FilterDeliveryModeOption } from '@msdyn365-commerce/retail-proxy';\r\nimport { getDeliveryOptionsAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g';\r\nimport { Address, CartLine, DeliveryOption } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport { IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\r\nimport { QueryResultSettingsProxy, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Button, getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, Waiting } from '@msdyn365-commerce-modules/utilities';\r\nimport classname from 'classnames';\r\nimport get from 'lodash/get';\r\nimport { action, computed, observable, reaction, when } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport { ErrorComponent } from '@msdyn365-commerce-modules/checkout';\r\nimport { ILdsCheckoutDeliveryOptions4Data } from './lds-checkout-delivery-options-4.data';\r\nimport {\r\n filterDeliveryModeOption,\r\n ILdsCheckoutDeliveryOptions4Props,\r\n useDefaultDeliveryOption\r\n} from './lds-checkout-delivery-options-4.props.autogenerated';\r\nimport DescriptionComponent from './components/lds-checkout-delivery-options-4.description';\r\nimport ErrorMessageComponent from './components/lds-checkout-delivery-options-4.error-message';\r\nimport ErrorTitleComponent from './components/lds-checkout-delivery-options-4.error-title';\r\nimport RadioButtonComponent from './components/lds-checkout-delivery-options-4.radio-button';\r\nimport { focusOnCheckoutError } from '@msdyn365-commerce-modules/checkout';\r\n\r\nexport interface ICheckoutDeliveryOptionsModuleProps\r\n extends ILdsCheckoutDeliveryOptions4Props,\r\n IModuleStateProps {}\r\n\r\nexport interface ICheckoutDeliveryOption {\r\n DeliveryOption: INodeProps;\r\n description?: React.ReactNode;\r\n price?: React.ReactNode;\r\n}\r\n\r\nexport interface ICheckoutDeliveryOptionEdit extends ICheckoutDeliveryOption {\r\n code: string;\r\n radioButton?: React.ReactNode;\r\n}\r\n\r\nexport interface ICheckoutDeliveryOptionsList {\r\n DeliveryOptionsList: INodeProps;\r\n list: ICheckoutDeliveryOptionEdit[];\r\n}\r\n\r\nexport interface ICheckoutDeliveryOptionsError {\r\n Error: INodeProps;\r\n title: React.ReactNode;\r\n message: React.ReactNode;\r\n}\r\n\r\nexport interface ICheckoutDeliveryOptionsViewState {\r\n isLoading: boolean;\r\n isError: boolean;\r\n isShowList: boolean;\r\n isShowSelected: boolean;\r\n isShowSaveButton: boolean;\r\n isShowEditButton: boolean;\r\n isShowCancelButton: boolean;\r\n}\r\n\r\nexport interface ICheckoutDeliveryOptionsViewProps extends ILdsCheckoutDeliveryOptions4Props<{}> {\r\n CheckoutDeliveryOptions: IModuleProps;\r\n selectedItemId: string;\r\n deliveryOptionsData: DeliveryOption[];\r\n isLoading: boolean;\r\n errorMessageData: string;\r\n viewState: ICheckoutDeliveryOptionsViewState;\r\n deliveryOptions?: ICheckoutDeliveryOptionsList;\r\n deliveryOptionSelected?: ICheckoutDeliveryOption;\r\n errorMessage?: ICheckoutDeliveryOptionsError;\r\n waiting?: React.ReactNode;\r\n saveButton?: React.ReactNode;\r\n editButton?: React.ReactNode;\r\n cancelButton?: React.ReactNode;\r\n alert?: React.ReactNode;\r\n checkoutErrorRef?: React.RefObject;\r\n onDeliveryOptionChange(event: React.ChangeEvent): void;\r\n onSave(): void;\r\n onEdit(): void;\r\n onCancel(): void;\r\n}\r\n\r\n/**\r\n *\r\n * CheckoutDeliveryOptions component.\r\n * @extends {React.Component>}\r\n */\r\n// @ts-expect-error\r\n@withModuleState\r\n@observer\r\nclass CheckoutDeliveryOptions extends React.Component {\r\n @observable private selectedItemId: string = '';\r\n\r\n @observable private deliveryOptions: DeliveryOption[] = [];\r\n\r\n @observable private isLoading: boolean = false;\r\n\r\n @observable private errorMessage?: string;\r\n\r\n @computed private get isDataReady(): boolean {\r\n return (this.props.data.checkout.result && this.props.data.checkout.status) === 'SUCCESS';\r\n }\r\n\r\n public get expressPaymentDetailsFromCartPage() {\r\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\r\n const properties =\r\n this.props.data.cart?.result?.cart?.ExtensionProperties?.find(property => property.Key === 'expressPaymentDetails')?.Value\r\n ?.StringValue ?? '';\r\n\r\n return properties ? JSON.parse(properties) : null;\r\n }\r\n\r\n public get isExpressPaymentAppliedInCartPage(): boolean {\r\n return this.expressPaymentDetailsFromCartPage?.isExpressCheckoutAppliedInCartPage ?? false;\r\n }\r\n\r\n private cartDeliveryMode?: string;\r\n\r\n private retailMultiplePickUpOptionEnabled?: boolean = false;\r\n\r\n private channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration;\r\n\r\n private readonly telemetryContent?: ITelemetryContent;\r\n\r\n private readonly isSelectDefaultOptionEnabled?: boolean;\r\n\r\n private readonly checkoutErrorRef: React.RefObject = React.createRef();\r\n\r\n public constructor(props: ICheckoutDeliveryOptionsModuleProps) {\r\n super(props);\r\n this.telemetryContent = getTelemetryObject(\r\n this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry\r\n );\r\n this.isSelectDefaultOptionEnabled =\r\n this.props.config.useDefaultDeliveryOption && this.props.config.useDefaultDeliveryOption !== useDefaultDeliveryOption.none;\r\n }\r\n\r\n public async componentDidMount(): Promise {\r\n when(\r\n () => this.isDataReady,\r\n async () => {\r\n await this.init();\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.props.data.checkout.result?.shippingAddress,\r\n async () => {\r\n await this.loadDeliveryOptions();\r\n this.props.moduleState.setIsCancellable(false);\r\n\r\n await this.props.data.checkout.result?.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: true });\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.props.data.checkout.result?.isExpressCheckoutApplied,\r\n async isExpressCheckoutApplied => {\r\n if (isExpressCheckoutApplied && this.canShip() && !this.isExpressPaymentAppliedInCartPage) {\r\n await this.loadDeliveryOptions();\r\n this.props.moduleState.setIsCancellable(false);\r\n\r\n await this.props.data.checkout.result?.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: true });\r\n }\r\n }\r\n );\r\n\r\n if (this.props.data.checkout.result?.shouldEnableCheckoutErrorDisplayMessaging) {\r\n reaction(\r\n () => this.props.data.checkout.result?.checkoutError,\r\n checkoutError => {\r\n if (\r\n checkoutError &&\r\n checkoutError.errorLocation === ErrorLocation.CheckoutDeliveryOptions &&\r\n checkoutError.errorMessage\r\n ) {\r\n this.setError(checkoutError.errorMessage);\r\n }\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.props.data.checkout.result?.checkoutErrorFocus,\r\n checkoutErrorFocus => {\r\n if (checkoutErrorFocus === CheckoutModule.CheckoutDeliveryOptions) {\r\n void focusOnCheckoutError(this.checkoutErrorRef, this.props.context.actionContext);\r\n }\r\n }\r\n );\r\n }\r\n }\r\n\r\n public shouldComponentUpdate(nextProps: ICheckoutDeliveryOptionsModuleProps, nextState: ICheckoutDeliveryOptionsViewState): boolean {\r\n if (this.state === nextState && this.props.data === nextProps.data) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\r\n this.channelDeliveryOptionConfig = this.props.data.channelDeliveryOptionConfig?.result;\r\n this.retailMultiplePickUpOptionEnabled = this.props.data.featureState?.result?.find(\r\n feature => feature.Name === multiplePickupStoreSwitchName\r\n )?.IsEnabled;\r\n\r\n if (!this.canShip()) {\r\n this.props.context.telemetry.error('Checkout delivery options content is empty, module wont render');\r\n return null;\r\n }\r\n\r\n const {\r\n moduleState: { isReady, isUpdating, hasError }\r\n } = this.props;\r\n const isError = !this.isLoading && hasError;\r\n const isShowList = !this.isLoading && !hasError && isUpdating && !this.isSelectDefaultOptionEnabled;\r\n const isShowSelected = !this.isLoading && !hasError && isReady;\r\n const { errorMessageTitle, deliveryOptionAriaLabel } = this.props.resources;\r\n\r\n const viewProps = {\r\n ...this.props,\r\n onDeliveryOptionChange: this.onDeliveryOptionChange,\r\n selectedItemId: this.selectedItemId,\r\n deliveryOptionsData: this.deliveryOptions,\r\n isLoading: this.isLoading,\r\n alert: this.errorMessage && ,\r\n errorMessageData: this.errorMessage,\r\n viewState: {\r\n isLoading: this.isLoading,\r\n isError,\r\n isShowList,\r\n isShowSelected,\r\n isShowSaveButton: isShowList && !this.props.moduleState.hasExternalSubmitGroup,\r\n isShowEditButton: isShowSelected && !this.props.moduleState.hasExternalSubmitGroup,\r\n isShowCancelButton: isShowList && !this.props.moduleState.hasExternalSubmitGroup && !!this.getSavedDeliveryOption()\r\n },\r\n CheckoutDeliveryOptions: {\r\n moduleProps: this.props,\r\n className: classname('ms-checkout-delivery-options', this.props.config.className)\r\n },\r\n deliveryOptions: {\r\n DeliveryOptionsList: {\r\n className: 'ms-checkout-delivery-options__list',\r\n role: 'list',\r\n 'aria-label': deliveryOptionAriaLabel\r\n },\r\n list: this.getDeliveryOptionList()\r\n },\r\n deliveryOptionSelected: this.getDeliveryOptionSelected(),\r\n errorMessage: this.getErrorMessage(),\r\n waiting: ,\r\n checkoutErrorRef: this.checkoutErrorRef,\r\n saveButton: this.getSaveButton(),\r\n editButton: this.getEditButton(),\r\n cancelButton: this.getCancelButton(),\r\n onSave: this.onSave,\r\n onEdit: this.onEdit,\r\n onCancel: this.onCancel\r\n };\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n @action\r\n private readonly init = async (): Promise => {\r\n this.props.moduleState.init({\r\n onEdit: this.isSelectDefaultOptionEnabled ? undefined : this.onEdit,\r\n onCancel: this.isSelectDefaultOptionEnabled ? undefined : this.onCancel,\r\n onSubmit: this.isSelectDefaultOptionEnabled ? undefined : this.onSubmit,\r\n status:\r\n !(this.props.config.useDefaultDeliveryOption === useDefaultDeliveryOption.notDisplaySelectedDeliveryOption) &&\r\n this.canShip()\r\n ? 'updating'\r\n : 'disabled'\r\n });\r\n\r\n this.cartDeliveryMode = this.getSavedDeliveryOption();\r\n await this.loadDeliveryOptions();\r\n };\r\n\r\n private readonly canShip = (): boolean => {\r\n const hasInvoice = this.props.data.checkout.result?.checkoutCart.hasInvoiceLine;\r\n return !hasInvoice && this.getCartLinesForShipping().length > 0;\r\n };\r\n\r\n private readonly isDeliveryModeExists = (deliveryMode: string | undefined): boolean => {\r\n if (deliveryMode) {\r\n if (this.deliveryOptions.find(deliveryOption => deliveryOption.Code === deliveryMode)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n\r\n private readonly getDeliveryOptionSelected = (): ICheckoutDeliveryOption | null => {\r\n const selectedItem = this.deliveryOptions.find(deliveryOption => deliveryOption.Code === this.selectedItemId);\r\n if (!selectedItem) {\r\n this.props.context.telemetry.error('Checkout delivery options content is empty, module wont render');\r\n return null;\r\n }\r\n\r\n const { id, typeName, context } = this.props;\r\n const { priceFree } = this.props.resources;\r\n const price = get(selectedItem, 'ShippingChargeAmount', 0);\r\n\r\n return {\r\n DeliveryOption: { className: 'ms-checkout-delivery-options__option-selected' },\r\n description: ,\r\n price: (\r\n \r\n )\r\n };\r\n };\r\n\r\n private readonly getErrorMessage = (): ICheckoutDeliveryOptionsError => {\r\n const { errorMessageTitle } = this.props.resources;\r\n return {\r\n // @ts-expect-error\r\n CheckoutDeliveryOptionsError: { tag: 'span', className: 'ms-address-form__error', role: 'alert', 'aria-live': 'assertive' },\r\n title: ,\r\n message: \r\n };\r\n };\r\n\r\n private readonly getDeliveryOptionList = (): ICheckoutDeliveryOptionEdit[] => {\r\n const count = this.deliveryOptions.length;\r\n const { priceFree } = this.props.resources;\r\n const { id, typeName, context } = this.props;\r\n\r\n return this.deliveryOptions.map((deliveryOption: DeliveryOption, index: number) => {\r\n return {\r\n DeliveryOption: { className: 'ms-checkout-delivery-options__option', role: 'listitem' },\r\n code: deliveryOption.Code || '',\r\n radioButton: (\r\n \r\n ),\r\n description: (\r\n \r\n ),\r\n price: (\r\n \r\n )\r\n };\r\n });\r\n };\r\n\r\n private readonly getSaveButton = (): React.ReactNode => {\r\n const { saveBtnLabel = 'Save' } = this.props.resources;\r\n return (\r\n \r\n {saveBtnLabel}\r\n \r\n );\r\n };\r\n\r\n private readonly getEditButton = (): React.ReactNode => {\r\n const { editBtnLabel = 'Change' } = this.props.resources;\r\n return (\r\n \r\n );\r\n };\r\n\r\n private readonly getCancelButton = (): React.ReactNode => {\r\n const { cancelBtnLabel = 'Cancel' } = this.props.resources;\r\n return (\r\n \r\n );\r\n };\r\n\r\n private readonly setError = (errorMessage: string): void => {\r\n this.props.telemetry.error(errorMessage);\r\n this.props.moduleState.setHasError(true);\r\n this.props.moduleState.onUpdating();\r\n this.errorMessage = errorMessage;\r\n };\r\n\r\n private readonly clearError = (): void => {\r\n this.props.moduleState.setHasError(false);\r\n this.errorMessage = undefined;\r\n };\r\n\r\n private readonly onSave = async (): Promise => {\r\n await this.onSubmit();\r\n };\r\n\r\n private readonly onEdit = async (): Promise => {\r\n this.props.telemetry.information('Delivery options onEdit is called.');\r\n\r\n this.clearError();\r\n this.onUpdating();\r\n await this.props.data.checkout.result?.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: true });\r\n };\r\n\r\n private readonly onSubmit = async (): Promise => {\r\n this.props.telemetry.information('Delivery options onSubmit is called.');\r\n\r\n await this.updateCartDeliverySpecification(this.selectedItemId);\r\n await this.props.data.checkout.result?.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: false });\r\n };\r\n\r\n private readonly onCancel = async (): Promise => {\r\n this.props.telemetry.information('Delivery options onCancel is called.');\r\n\r\n // Reset to the saved value\r\n const savedDeliveryOption = this.getSavedDeliveryOption();\r\n if (savedDeliveryOption) {\r\n this.selectedItemId = savedDeliveryOption;\r\n this.onReady();\r\n\r\n await this.props.data.checkout.result?.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: false });\r\n } else {\r\n this.onUpdating();\r\n }\r\n };\r\n\r\n private readonly getSavedDeliveryOption = (): string | undefined => {\r\n const cartLinesForShipping = this.getCartLinesForShipping();\r\n return cartLinesForShipping[0] && cartLinesForShipping[0].DeliveryMode;\r\n };\r\n\r\n private readonly updateCartDeliverySpecification = async (deliveryModeId: string): Promise => {\r\n if (deliveryModeId.trim() === '') {\r\n return;\r\n }\r\n\r\n const { resources } = this.props;\r\n const checkoutState = this.props.data.checkout.result as ICheckoutState;\r\n const updateCartDeliverySpecificationInput = {\r\n deliveryModeId,\r\n shippingAddress: checkoutState.shippingAddress,\r\n channelDeliveryOptionConfig: this.retailMultiplePickUpOptionEnabled ? this.channelDeliveryOptionConfig : undefined\r\n };\r\n\r\n this.clearError();\r\n this.onPending();\r\n\r\n await checkoutState.checkoutCart\r\n .updateCartDeliverySpecification(updateCartDeliverySpecificationInput)\r\n .then(response => {\r\n if (response.status === 'FAILED') {\r\n const errorMessage = `${response.errorDetails?.LocalizedMessage}`;\r\n this.setError(StringExtensions.isNullOrEmpty(errorMessage) ? resources.genericErrorMessage : errorMessage);\r\n }\r\n\r\n this.onReady();\r\n this.props.moduleState.setIsCancellable(true);\r\n })\r\n .catch(() => {\r\n this.setError(resources.genericErrorMessage);\r\n });\r\n };\r\n\r\n private readonly getCartLinesForShipping = (): CartLine[] => {\r\n const { request } = this.props.context;\r\n const pickupDeliveryModeCode = request && request.channel && request.channel.PickupDeliveryModeCode;\r\n const emailDeliveryModeCode = request && request.channel && request.channel.EmailDeliveryModeCode;\r\n\r\n return this.retailMultiplePickUpOptionEnabled\r\n ? ((this.props.data.checkout.result && this.props.data.checkout.result.checkoutCart.cart.CartLines) || []).filter(cartLine =>\r\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\r\n ? cartLine.DeliveryMode !==\r\n this.channelDeliveryOptionConfig?.PickupDeliveryModeCodes?.find(\r\n deliveryMode => deliveryMode === cartLine.DeliveryMode\r\n ) && cartLine.DeliveryMode !== emailDeliveryModeCode\r\n : cartLine\r\n )\r\n : ((this.props.data.checkout.result && this.props.data.checkout.result.checkoutCart.cart.CartLines) || []).filter(cartLine =>\r\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\r\n ? cartLine.DeliveryMode !== pickupDeliveryModeCode && cartLine.DeliveryMode !== emailDeliveryModeCode\r\n : cartLine\r\n );\r\n };\r\n\r\n private readonly getDeliveryOptions = async (shippingAddress: Address): Promise => {\r\n if (!this.props.data.checkout.result) {\r\n return;\r\n }\r\n\r\n const { context, resources, config } = this.props;\r\n const cartState = this.props.data.checkout.result?.checkoutCart;\r\n const cartId = (cartState.cart as Cart).Id;\r\n\r\n if (context) {\r\n this.isLoading = true;\r\n this.deliveryOptions = [];\r\n this.selectedItemId = '';\r\n this.clearError();\r\n\r\n try {\r\n let originalDeliveryMode: string = '';\r\n const shippingCartLines = this.getCartLinesForShipping();\r\n const hasShippingDeliveryLines = shippingCartLines && shippingCartLines.length > 0 && shippingCartLines[0].DeliveryMode;\r\n if (hasShippingDeliveryLines) {\r\n // First store the delivery mode, so that we can restore the shipping information.\r\n originalDeliveryMode = shippingCartLines[0].DeliveryMode || '';\r\n\r\n // Clear the delivery information on retail server, so GetDeliveryOptions charge calculation works correctly\r\n const cart = cartState.cart;\r\n await cartState.clearCartLinesDeliveryInformation({\r\n cart,\r\n channelDeliveryOptionConfiguration: this.channelDeliveryOptionConfig\r\n });\r\n }\r\n\r\n // TODO: Check if we can move this getDeliveryOptions to checkout state\r\n let deliveryOptionFilter: FilterDeliveryModeOption;\r\n switch (config.filterDeliveryModeOption) {\r\n case filterDeliveryModeOption.none:\r\n deliveryOptionFilter = FilterDeliveryModeOption.None;\r\n break;\r\n case filterDeliveryModeOption.filterOutNonCarrierDeliveryMode:\r\n deliveryOptionFilter = FilterDeliveryModeOption.FilterOutNonCarrierDeliveryMode;\r\n break;\r\n default:\r\n deliveryOptionFilter = FilterDeliveryModeOption.FilterOutNonCarrierDeliveryMode;\r\n }\r\n const response = await getDeliveryOptionsAsync(\r\n {\r\n callerContext: context.actionContext,\r\n queryResultSettings: QueryResultSettingsProxy.getPagingFromInputDataOrDefaultValue(context.actionContext)\r\n },\r\n cartId,\r\n shippingAddress,\r\n [],\r\n deliveryOptionFilter,\r\n true\r\n );\r\n\r\n if (hasShippingDeliveryLines) {\r\n await this.updateCartDeliverySpecification(originalDeliveryMode);\r\n }\r\n\r\n if (response && response.length > 0) {\r\n this.deliveryOptions = response;\r\n }\r\n } catch {\r\n this.setError(resources.genericErrorMessage);\r\n }\r\n\r\n if (this.deliveryOptions.length === 0) {\r\n this.setError(resources.deliveryOptionsNotFound);\r\n } else if (this.cartDeliveryMode && this.isDeliveryModeExists(this.cartDeliveryMode)) {\r\n this.selectedItemId = this.cartDeliveryMode;\r\n this.cartDeliveryMode = undefined;\r\n this.onReady();\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\r\n this.props.data.checkout.result?.updateHasCartDeliveryMode({ newHasCartDeliveryMode: true });\r\n\r\n if (!this.props.data.checkout.result?.isPaymentVerificationRedirection) {\r\n await this.props.data.checkout.result.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: false });\r\n }\r\n } else {\r\n this.onUpdating();\r\n this.selectedItemId = this.deliveryOptions.length > 0 ? this.deliveryOptions[0].Code || '' : ''; // By default, select first delivery\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\r\n this.props.data.checkout.result?.updateHasCartDeliveryMode({ newHasCartDeliveryMode: !!this.isSelectDefaultOptionEnabled });\r\n }\r\n\r\n this.isLoading = false;\r\n }\r\n };\r\n\r\n private readonly getStoredDeliveryOptions = async (): Promise => {\r\n if (!this.props.data.checkout.result) {\r\n return;\r\n }\r\n\r\n const { context } = this.props;\r\n const cartState = this.props.data.checkout.result.checkoutCart;\r\n\r\n if (context) {\r\n this.isLoading = true;\r\n this.deliveryOptions = [];\r\n this.selectedItemId = '';\r\n this.clearError();\r\n\r\n let originalDeliveryMode: string = '';\r\n const shippingCartLines = this.getCartLinesForShipping();\r\n const hasShippingDeliveryLines = shippingCartLines && shippingCartLines.length > 0 && shippingCartLines[0].DeliveryMode;\r\n if (hasShippingDeliveryLines) {\r\n // First store the delivery mode, so that we can restore the shipping information.\r\n originalDeliveryMode = shippingCartLines[0].DeliveryMode || '';\r\n\r\n // Clear the delivery information on retail server, so GetDeliveryOptions charge calculation works correctly\r\n const cart = cartState.cart;\r\n await cartState.clearCartLinesDeliveryInformation({\r\n cart,\r\n channelDeliveryOptionConfiguration: this.channelDeliveryOptionConfig\r\n });\r\n if (hasShippingDeliveryLines) {\r\n await this.updateCartDeliverySpecification(originalDeliveryMode);\r\n }\r\n }\r\n\r\n if (this.cartDeliveryMode) {\r\n this.selectedItemId = this.cartDeliveryMode;\r\n this.cartDeliveryMode = undefined;\r\n this.onReady();\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\r\n this.props.data.checkout.result?.updateHasCartDeliveryMode({ newHasCartDeliveryMode: true });\r\n\r\n if (!this.props.data.checkout.result.isPaymentVerificationRedirection) {\r\n await this.props.data.checkout.result.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: false });\r\n }\r\n }\r\n\r\n this.isLoading = false;\r\n }\r\n };\r\n\r\n private readonly loadDeliveryOptions = async (): Promise => {\r\n const shippingAddress = this.props.data.checkout.result?.shippingAddress;\r\n\r\n if (this.canShip() && shippingAddress) {\r\n if (\r\n !this.props.data.checkout.result?.isPaymentVerificationRedirection ||\r\n this.isSelectDefaultOptionEnabled ||\r\n this.props.data.checkout.result?.isExpressCheckoutApplied\r\n ) {\r\n await this.getDeliveryOptions(shippingAddress);\r\n }\r\n\r\n if (this.props.data.checkout.result?.isPaymentVerificationRedirection) {\r\n await this.getStoredDeliveryOptions();\r\n }\r\n\r\n if (\r\n this.isSelectDefaultOptionEnabled ||\r\n this.props.data.checkout.result?.isExpressCheckoutApplied ||\r\n this.isExpressPaymentAppliedInCartPage\r\n ) {\r\n void this.onSubmit();\r\n }\r\n }\r\n };\r\n\r\n private readonly onDeliveryOptionChange = (event: React.ChangeEvent) => {\r\n const deliveryModeId = event.currentTarget.value;\r\n this.selectedItemId = deliveryModeId;\r\n };\r\n\r\n private readonly onReady = () => {\r\n if (!(this.props.config.useDefaultDeliveryOption === useDefaultDeliveryOption.notDisplaySelectedDeliveryOption)) {\r\n this.props.moduleState.onReady();\r\n }\r\n };\r\n\r\n private readonly onUpdating = () => {\r\n if (!(this.props.config.useDefaultDeliveryOption === useDefaultDeliveryOption.notDisplaySelectedDeliveryOption)) {\r\n this.props.moduleState.onUpdating();\r\n }\r\n };\r\n\r\n private readonly onPending = () => {\r\n if (!this.isSelectDefaultOptionEnabled) {\r\n this.props.moduleState.onPending();\r\n }\r\n };\r\n}\r\n\r\nexport default CheckoutDeliveryOptions;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { ICheckoutPaymentInstrumentViewProps, ICheckoutPaymentOverlayModal } from './lds-checkout-payment-instrument';\r\n\r\nimport {\r\n getIdentificationTypesAsync,\r\n getIdentificationTypesApplicabilityRulesAsync\r\n // churchValidatePaymentAsync\r\n} from '../../actions/DataActionExtension.g';\r\n// @ts-ignore\r\nimport { Secondary } from '@churchofjesuschrist/eden-buttons';\r\n// @ts-ignore\r\nimport { Error } from '@churchofjesuschrist/eden-alert';\r\n\r\nconst OverlayModal: React.FC = ({ modal }) => {\r\n return ;\r\n};\r\n\r\nconst CheckoutPaymentInstrumentView: React.FC = props => {\r\n const {\r\n checkoutPaymentInstrument,\r\n // className,\r\n // id,\r\n waiting,\r\n alert,\r\n paymentInformation,\r\n addPaymentForm,\r\n overlayModal,\r\n updateFunction,\r\n context,\r\n resources,\r\n updatePaymentAttributes\r\n // ...restProps\r\n } = props;\r\n const [taxIdResults, setTaxIdResults] = React.useState();\r\n const [isError, setIsError] = React.useState(false);\r\n const [idType, setIdType] = React.useState('');\r\n const [taxId, setTaxId] = React.useState('');\r\n const [paymentTypeId, setPaymentTypeId] = React.useState('');\r\n const [isVisible, setIsVisible] = React.useState(false);\r\n const [userCountry, setUserCountry] = React.useState();\r\n const [hasRefreshed, setHasRefreshed] = React.useState(false);\r\n const [updateTaxId, setUpdateTaxId] = React.useState(false);\r\n\r\n const idTypeInputStyle: React.CSSProperties = {\r\n width: '100%',\r\n border: isError ? '1px solid red' : '1px solid rgb(135, 138, 140)',\r\n boxSizing: 'border-box',\r\n borderRadius: '2px',\r\n margin: '8px 0px',\r\n lineHeight: '22px',\r\n padding: '8px',\r\n fontSize: '16px',\r\n fontFamily: `\"Ensign:Sans\",Arial,\"noto sans\" ,sans-serif`,\r\n fontStyle: 'normal'\r\n };\r\n\r\n const idTypeStyle: React.CSSProperties = {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'flex-start',\r\n width: '100%',\r\n marginTop: '15px'\r\n };\r\n\r\n const handleSelect = async (option: any) => {\r\n const selectedOption = taxIdResults.filter((taxId: any) => {\r\n return taxId.TypeId === option;\r\n });\r\n if (selectedOption && selectedOption[0]) {\r\n sessionStorage.setItem('TaxId', selectedOption[0].TypeId);\r\n if (selectedOption[0].Description.toLowerCase().includes('boleta')) {\r\n setUpdateTaxId(true);\r\n } else {\r\n setUpdateTaxId(false);\r\n }\r\n }\r\n\r\n setIdType(selectedOption[0].TypeId);\r\n };\r\n\r\n const onInputChange = (value: any) => {\r\n if (isError === true) {\r\n setIsError(false);\r\n }\r\n sessionStorage.setItem('idNum', value);\r\n setTaxId(value);\r\n };\r\n\r\n const getTaxIdInfo = async () => {\r\n const ctx = { callerContext: context.actionContext };\r\n let idTypes;\r\n // @ts-ignore\r\n if (props.data.cart && props.data.cart.result) {\r\n const getUserCountry: any =\r\n // @ts-ignore\r\n props.data.cart && props.data.cart.result && props.data.cart.result.cart && props.data.cart.result.cart.ExtensionProperties\r\n ? // @ts-ignore\r\n props.data.cart.result.cart.ExtensionProperties.filter((property: any) => {\r\n return property.Key === 'Country';\r\n })\r\n : '';\r\n setUserCountry(getUserCountry);\r\n sessionStorage.setItem('taxIdRegion', getUserCountry[0].Value.StringValue);\r\n\r\n idTypes = await getIdentificationTypesAsync(ctx, getUserCountry[0].Value.StringValue).catch((err: any) => {\r\n return console.log(err);\r\n });\r\n if (idTypes && idTypes[0]) {\r\n sessionStorage.setItem('taxIdCheck', 'true');\r\n } else {\r\n sessionStorage.setItem('taxIdCheck', 'false');\r\n setIsVisible(true);\r\n }\r\n }\r\n\r\n return setTaxIdResults(idTypes);\r\n };\r\n const waitForUpdateFunction = async () => {\r\n await updateFunction();\r\n };\r\n React.useEffect(() => {\r\n const sessionTaxId = sessionStorage.getItem('TaxId');\r\n const sessionIdNum = sessionStorage.getItem('idNum');\r\n if (sessionTaxId) {\r\n setIdType(sessionTaxId);\r\n if (sessionTaxId.toLocaleLowerCase().includes('boleta')) {\r\n setUpdateTaxId(true);\r\n }\r\n }\r\n if (sessionIdNum) {\r\n setTaxId(sessionIdNum);\r\n }\r\n // void waitForUpdateFunction();\r\n void getTaxIdInfo();\r\n }, []);\r\n\r\n React.useEffect(() => {\r\n const paymentType = sessionStorage.getItem('paymentTypeId');\r\n\r\n if (paymentType === '7' && hasRefreshed === false && props.isVisible === true) {\r\n setHasRefreshed(true);\r\n void waitForUpdateFunction();\r\n }\r\n\r\n if (paymentType) {\r\n setPaymentTypeId(paymentType);\r\n }\r\n }, [props]);\r\n\r\n const insertDash = (str: string) => {\r\n // Check if the string contains a \"-\"\r\n if (str.includes('-')) {\r\n // If it does, do nothing\r\n return str;\r\n } else {\r\n // If it does not, insert a \"-\" between the second to last and last characters\r\n return `${str.slice(0, -1)}-${str.slice(-1)}`;\r\n }\r\n };\r\n\r\n const onClickCustom = async () => {\r\n const ctx = { callerContext: context.actionContext };\r\n let newTaxId: string = taxId;\r\n const userCountryRegion = sessionStorage.getItem('taxIdRegion');\r\n\r\n if (updateTaxId === true && userCountryRegion && userCountryRegion === 'CHL') {\r\n newTaxId = insertDash(taxId);\r\n setTaxId(newTaxId);\r\n }\r\n\r\n const taxIdCheck = await getIdentificationTypesApplicabilityRulesAsync(\r\n ctx,\r\n userCountry[0].Value.StringValue,\r\n idType,\r\n newTaxId\r\n ).catch(err => {\r\n console.log(err);\r\n setIsError(true);\r\n });\r\n if (taxIdCheck) {\r\n await updatePaymentAttributes(idType, newTaxId).then(() => {\r\n setIsVisible(true);\r\n });\r\n }\r\n };\r\n if (props.config.sensePassWithCreditCard && props.config.sensePassWithCreditCard === true) {\r\n if (paymentTypeId && paymentTypeId === '103' && props.id.includes('lds-checkout-payment-instrument__0')) {\r\n return (\r\n \r\n {taxIdResults && taxIdResults[0] ? (\r\n
\r\n \r\n \r\n \r\n onInputChange(e.target.value)}\r\n value={taxId}\r\n disabled={isVisible}\r\n />\r\n {isError && {resources.taxIdErrorMessage}}\r\n {isVisible === false && onClickCustom()}>{resources.applyPaymentLabel}}\r\n
\r\n ) : null}\r\n {isVisible &&
{waiting}
}\r\n {/* @ts-ignore */}\r\n {alert && alert.props.message && {alert.props.message}}\r\n {paymentInformation}\r\n {isVisible && addPaymentForm}\r\n {overlayModal && }\r\n
\r\n );\r\n } else if (paymentTypeId && paymentTypeId !== '103' && !props.id.includes('lds-checkout-payment-instrument__0')) {\r\n return (\r\n \r\n {taxIdResults && taxIdResults[0] ? (\r\n
\r\n \r\n \r\n \r\n onInputChange(e.target.value)}\r\n value={taxId}\r\n disabled={isVisible}\r\n />\r\n {isError && {resources.taxIdErrorMessage}}\r\n {isVisible === false && onClickCustom()}>{resources.applyPaymentLabel}}\r\n
\r\n ) : null}\r\n {isVisible &&
{waiting}
}\r\n {/* @ts-ignore */}\r\n {alert && alert.props.message && {alert.props.message}}\r\n {paymentInformation}\r\n {isVisible && addPaymentForm}\r\n {overlayModal && }\r\n
\r\n );\r\n } else {\r\n return null;\r\n }\r\n } else {\r\n return (\r\n \r\n {taxIdResults && taxIdResults[0] ? (\r\n
\r\n \r\n \r\n \r\n onInputChange(e.target.value)}\r\n value={taxId}\r\n disabled={isVisible}\r\n />\r\n {isError && {resources.taxIdErrorMessage}}\r\n {isVisible === false && onClickCustom()}>{resources.applyPaymentLabel}}\r\n
\r\n ) : null}\r\n {isVisible &&
{waiting}
}\r\n {/* @ts-ignore */}\r\n {alert && alert.props.message && {alert.props.message}}\r\n {paymentInformation}\r\n {isVisible && addPaymentForm}\r\n {overlayModal && }\r\n
\r\n );\r\n }\r\n};\r\n\r\nexport default CheckoutPaymentInstrumentView;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport {\r\n ICheckoutDeliveryOption,\r\n ICheckoutDeliveryOptionEdit,\r\n ICheckoutDeliveryOptionsList,\r\n ICheckoutDeliveryOptionsViewProps\r\n} from './lds-checkout-shipping-options';\r\n// @ts-ignore\r\nimport { Error } from '@churchofjesuschrist/eden-alert';\r\n// @ts-ignore\r\nimport { Secondary, Ghost } from '@churchofjesuschrist/eden-buttons';\r\n\r\nconst DeliveryOptionList: React.FC = ({ DeliveryOptionsList, list }) => {\r\n if (!list || list.length === 0) {\r\n return null;\r\n }\r\n const filteredList = list.filter(item => item.code.toLowerCase() !== 'default');\r\n return (\r\n \r\n {filteredList.map((deliveryOption: ICheckoutDeliveryOptionEdit) => {\r\n return (\r\n \r\n {deliveryOption.radioButton}\r\n {deliveryOption.description}\r\n {deliveryOption.price}\r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst DeliveryOptionSelected: React.FC = ({ DeliveryOption, description, price }) => {\r\n return (\r\n \r\n {description}\r\n {price}\r\n \r\n );\r\n};\r\n\r\nconst CheckoutDeliveryOptionsView: React.FC = props => {\r\n const {\r\n CheckoutDeliveryOptions,\r\n checkoutErrorRef,\r\n viewState,\r\n deliveryOptions,\r\n deliveryOptionSelected,\r\n alert,\r\n waiting,\r\n saveButton,\r\n // editButton,\r\n cancelButton\r\n } = props;\r\n\r\n return (\r\n // TODO: All wrapper div should be provided by viewProps. Once SDK provide the sln, update markup.\r\n \r\n {viewState.isLoading && waiting}\r\n {/* @ts-ignore */}\r\n {viewState.isError && alert && {alert.props.message}}\r\n {viewState.isShowList && deliveryOptions && }\r\n {viewState.isShowSelected && deliveryOptionSelected && }\r\n {/* {viewState.isShowSaveButton && saveButton} */}\r\n {/* {saveButton} */}\r\n
\r\n {viewState.isShowCancelButton && (\r\n
\r\n {cancelButton && (\r\n // @ts-ignore\r\n cancelButton.props.onClick()}>\r\n {/* @ts-ignore */}\r\n {cancelButton.props.children}\r\n \r\n )}\r\n
\r\n )}\r\n {viewState.isShowSaveButton && saveButton && (\r\n
\r\n {saveButton && (\r\n // @ts-ignore\r\n saveButton.props.onClick()}>\r\n {/* @ts-ignore */}\r\n {saveButton.props.children}\r\n \r\n )}\r\n
\r\n )}\r\n
\r\n {/* {viewState.isShowEditButton && editButton}\r\n {viewState.isShowCancelButton && cancelButton} */}\r\n {/*
*/}\r\n
\r\n );\r\n};\r\n\r\nexport default CheckoutDeliveryOptionsView;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { PriceComponent } from '@msdyn365-commerce/components';\nimport { ICoreContext, ITelemetry } from '@msdyn365-commerce/core';\nimport { ICheckoutState, IGiftCardExtend } from '@msdyn365-commerce/global-state';\nimport { Cart, ChannelConfiguration, ChannelDeliveryOptionConfiguration } from '@msdyn365-commerce/retail-proxy';\nimport * as React from 'react';\n\nexport interface IOrderSummaryProps {\n subTotalLabel: string;\n shippingLabel: string;\n taxLabel: string;\n orderTotalLabel: string;\n loyaltyLabel?: string;\n giftcardLabel?: string;\n totalDiscountsLabel: string;\n context: ICoreContext;\n telemetry: ITelemetry;\n cart: Cart;\n channelConfiguration: ChannelConfiguration;\n id: string;\n typeName: string;\n otherChargeLabel?: string;\n freeText?: string;\n toBeCalculatedText?: string;\n checkoutState?: ICheckoutState;\n retailMultiplePickUpOptionEnabled?: boolean;\n channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration;\n isTaxIncludedInPrice?: boolean;\n isShowTaxBreakup?: boolean;\n customerAccountLabel?: string;\n}\n\nexport interface IOrderSummaryLines {\n subtotal: React.ReactNode;\n shipping?: React.ReactNode;\n otherCharge?: React.ReactNode;\n tax: React.ReactNode;\n orderTotal: React.ReactNode;\n totalDiscounts?: React.ReactNode;\n giftCard?: React.ReactNode;\n loyalty?: React.ReactNode;\n customerAccount?: React.ReactNode;\n}\n\ninterface IOrderSummaryLineProps {\n label: string;\n context: ICoreContext;\n telemetry: ITelemetry;\n price?: number;\n freeText?: string;\n toBeCalculatedText?: string;\n id: string;\n typeName: string;\n cssLabel: string;\n priceCurrency?: string;\n}\n\ninterface IShippingOrderLine {\n cart: Cart;\n channelConfiguration: ChannelConfiguration;\n canShip?: boolean;\n hasDeliveryMethod?: boolean;\n hasShippingMethod?: boolean;\n freightFee?: number;\n}\n\nconst OrderSummaryLine: React.FC = ({\n price,\n label,\n context,\n id,\n typeName,\n toBeCalculatedText,\n freeText,\n cssLabel,\n priceCurrency\n}) => {\n return (\n

\n {label}\n {price || price === 0 ? (\n \n ) : (\n {toBeCalculatedText}\n )}\n

\n );\n};\n\nconst _buildOrderSummarySection = (\n props: IOrderSummaryProps,\n price: number | undefined,\n cssLabel: string,\n label: string = ''\n): React.ReactNode => {\n return (\n \n );\n};\n\nconst _computedLoyaltyAmount = (checkoutState: ICheckoutState): number => {\n return (checkoutState && checkoutState.loyaltyAmount) || 0;\n};\n\nconst _computedCustomerAccountAmount = (checkoutState: ICheckoutState): number => {\n return (checkoutState && checkoutState.customerAccountAmount) || 0;\n};\n\nconst _computeGiftCardAmount = (checkoutState: ICheckoutState, cart: Cart): number => {\n const giftCardCounter = (count: number, giftCard: IGiftCardExtend) => {\n return count + (giftCard.Balance || 0);\n };\n const giftCardTotalValue = (checkoutState.giftCardExtends || []).reduce(giftCardCounter, 0);\n const amount = (cart.TotalAmount || 0) - _computedLoyaltyAmount(checkoutState);\n return Math.min(giftCardTotalValue, amount);\n};\n\nconst getDeliveryConfiguration = (\n cart: Cart,\n channelConfiguration: ChannelConfiguration,\n channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration,\n retailMultiplePickUpOptionEnabled?: boolean,\n isTaxIncludedInPrice?: boolean,\n isShowTaxBreakup?: boolean\n): IShippingOrderLine => {\n const pickupDeliveryModeCode = channelConfiguration && channelConfiguration.PickupDeliveryModeCode;\n const emailDeliveryModeCode = channelConfiguration && channelConfiguration.EmailDeliveryModeCode;\n const cartLines = cart.CartLines || [];\n const deliveryModes = cartLines.map(cartLine => cartLine.DeliveryMode);\n const taxOnShippingCharge = cart.TaxOnShippingCharge !== undefined ? cart.TaxOnShippingCharge : 0;\n const shippingChargeAmount = cart.ShippingChargeAmount !== undefined ? cart.ShippingChargeAmount : 0;\n\n // isTaxIncludedInPrice isShowTaxBreakup useProperties\n // False False/True shippingChargeAmount\n // True True shippingChargeAmount\n // True false shippingChargeAmount + taxOnShippingCharge\n // if either of isTaxIncludedInPrice or isShowTaxBreakup is undefined then we will execute old logic\n let freightFee: number | undefined = 0;\n if (isTaxIncludedInPrice === undefined || isShowTaxBreakup === undefined) {\n freightFee = cart.ShippingChargeAmount;\n } else {\n freightFee = isTaxIncludedInPrice && !isShowTaxBreakup ? shippingChargeAmount + taxOnShippingCharge : cart.ShippingChargeAmount;\n }\n const canShip = deliveryModes.some(\n deliveryMode =>\n !(\n deliveryMode !== '' &&\n (deliveryMode ===\n getDeliveryMode(deliveryMode, retailMultiplePickUpOptionEnabled, channelDeliveryOptionConfig, pickupDeliveryModeCode) ||\n deliveryMode === emailDeliveryModeCode)\n )\n );\n const hasDeliveryMethod = deliveryModes.some(deliveryMode => !!deliveryMode && deliveryMode !== emailDeliveryModeCode);\n const hasShippingMethod = deliveryModes.some(\n deliveryMode =>\n !!deliveryMode &&\n deliveryMode !==\n getDeliveryMode(deliveryMode, retailMultiplePickUpOptionEnabled, channelDeliveryOptionConfig, pickupDeliveryModeCode) &&\n deliveryMode !== emailDeliveryModeCode\n );\n return {\n canShip,\n hasDeliveryMethod,\n hasShippingMethod,\n freightFee\n } as IShippingOrderLine;\n};\n\nconst getDeliveryMode = (\n deliveryMode?: string,\n featureSate: boolean = false,\n channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration,\n pickupDeliveryMode?: string\n) => {\n if (!featureSate) {\n return pickupDeliveryMode;\n }\n return channelDeliveryOptionConfig?.PickupDeliveryModeCodes?.find(dM => dM === deliveryMode);\n};\n\n// eslint-disable-next-line complexity\nexport const OrderSummary = (props: IOrderSummaryProps) => {\n const {\n SubtotalAmount,\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Existing Property.\n SubtotalAmountWithoutTax,\n TaxAmount,\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Existing Property.\n TaxOnNonShippingCharges,\n DiscountAmount = 0,\n TotalAmount,\n OtherChargeAmount\n } = props.cart;\n\n const { canShip, hasDeliveryMethod, hasShippingMethod, freightFee } = getDeliveryConfiguration(\n props.cart,\n props.channelConfiguration,\n props.channelDeliveryOptionConfig,\n props.retailMultiplePickUpOptionEnabled,\n props.isTaxIncludedInPrice,\n props.isShowTaxBreakup\n );\n\n let reactNodes: IOrderSummaryLines;\n // if either of isTaxIncludedInPrice or isShowTaxBreakup is undefined then we will execute old logic\n if (props.isTaxIncludedInPrice === undefined || props.isShowTaxBreakup === undefined) {\n reactNodes = {\n subtotal: _buildOrderSummarySection(props, SubtotalAmount, 'sub-total', props.subTotalLabel),\n tax: _buildOrderSummarySection(props, hasDeliveryMethod ? TaxAmount : undefined, 'tax-amount', props.taxLabel),\n orderTotal: _buildOrderSummarySection(props, TotalAmount, 'total', props.orderTotalLabel),\n otherCharge:\n (OtherChargeAmount && _buildOrderSummarySection(props, OtherChargeAmount, 'other-charges', props.otherChargeLabel)) ||\n undefined\n };\n } else {\n const otherChargeAmount = OtherChargeAmount !== undefined ? OtherChargeAmount : 0;\n const taxOnNonShippingCharges = TaxOnNonShippingCharges !== undefined ? TaxOnNonShippingCharges : 0;\n const isTaxGreaterThanZero = TaxAmount !== undefined && TaxAmount > 0;\n // isTaxIncludedInPrice isShowTaxBreakup useProperties\n // False False/True otherChargeAmount\n // True True otherChargeAmount\n // True false otherChargeAmount+TaxOnNonShippingCharges\n\n const otherChargeAmountTotal =\n props.isTaxIncludedInPrice && !props.isShowTaxBreakup ? otherChargeAmount + taxOnNonShippingCharges : otherChargeAmount;\n\n const subtotalAmountActual = props.isTaxIncludedInPrice && props.isShowTaxBreakup ? SubtotalAmountWithoutTax : SubtotalAmount;\n\n reactNodes = {\n subtotal: _buildOrderSummarySection(props, subtotalAmountActual, 'sub-total', props.subTotalLabel),\n tax: props.isShowTaxBreakup\n ? _buildOrderSummarySection(\n props,\n hasDeliveryMethod || isTaxGreaterThanZero ? TaxAmount : undefined,\n 'tax-amount',\n props.taxLabel\n )\n : '',\n orderTotal: _buildOrderSummarySection(props, TotalAmount, 'total', props.orderTotalLabel),\n otherCharge:\n (OtherChargeAmount && _buildOrderSummarySection(props, otherChargeAmountTotal, 'other-charges', props.otherChargeLabel)) ||\n undefined\n };\n }\n if (canShip) {\n reactNodes.shipping = _buildOrderSummarySection(props, hasShippingMethod ? freightFee : undefined, 'shipping', props.shippingLabel);\n }\n if (props.checkoutState) {\n const giftCardAmount = _computeGiftCardAmount(props.checkoutState, props.cart);\n const loyaltyAmount = _computedLoyaltyAmount(props.checkoutState);\n const customerAccountAmount = _computedCustomerAccountAmount(props.checkoutState);\n const totalAmountAfterGiftCard = (TotalAmount || 0) - giftCardAmount - loyaltyAmount - customerAccountAmount;\n\n if (loyaltyAmount > 0) {\n reactNodes.loyalty = _buildOrderSummarySection(props, -loyaltyAmount, 'loyalty', props.loyaltyLabel || 'Loyalty amount');\n }\n\n if (giftCardAmount > 0) {\n reactNodes.giftCard = _buildOrderSummarySection(props, -giftCardAmount, 'gift-card', props.giftcardLabel || 'Gift card amount');\n }\n\n if (customerAccountAmount > 0) {\n reactNodes.customerAccount = _buildOrderSummarySection(\n props,\n -customerAccountAmount,\n 'customer-credit-amount',\n props.customerAccountLabel || 'Customer Credit amount'\n );\n }\n\n reactNodes.orderTotal = _buildOrderSummarySection(\n { ...props, freeText: undefined },\n totalAmountAfterGiftCard,\n 'total',\n props.orderTotalLabel\n );\n }\n\n if (DiscountAmount > 0) {\n reactNodes.totalDiscounts = _buildOrderSummarySection(props, -DiscountAmount, 'total-discounts', props.totalDiscountsLabel);\n }\n\n return reactNodes;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ICheckoutDeliveryOptionsRadioButtonProps {\n isChecked: boolean;\n value?: string;\n ariaSetSize: number;\n ariaPosInSet: number;\n ariaLabel?: string;\n telemetryContent?: ITelemetryContent;\n onChange(event: React.ChangeEvent): void;\n}\n\n/**\n * AddPaymentForm SFC.\n * @param root0\n * @param root0.isChecked\n * @param root0.value\n * @param root0.ariaSetSize\n * @param root0.ariaPosInSet\n * @param root0.ariaLabel\n * @param root0.telemetryContent\n * @param root0.onChange\n * @extends {React.FC}\n */\nconst CheckoutDeliveryOptionsRadioButton: React.FC = ({\n isChecked,\n value,\n ariaSetSize,\n ariaPosInSet,\n ariaLabel,\n telemetryContent,\n onChange\n}) => {\n if (!value) {\n return null;\n }\n\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.DeliveryOptions);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n \n );\n};\n\nexport default CheckoutDeliveryOptionsRadioButton;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Address, TenderLine, TokenizedPaymentCard } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { Button } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IPaymentInformationProps {\n resources: {\n changePaymentButtonText: string;\n cardTitle: string;\n cardNumberLabel: string;\n expiresDateLabel: string;\n addressTitle: string;\n };\n tokenizedPaymentCard?: TokenizedPaymentCard;\n tenderLine?: TenderLine;\n billingAddress?: Address;\n canEdit?: boolean;\n onEdit?(): void;\n}\n\n/**\n * PaymentInformation SFC.\n * @param root0\n * @param root0.resources\n * @param root0.resources.changePaymentButtonText\n * @param root0.resources.cardTitle\n * @param root0.resources.cardNumberLabel\n * @param root0.resources.expiresDateLabel\n * @param root0.resources.addressTitle\n * @param root0.tokenizedPaymentCard\n * @param root0.tenderLine\n * @param root0.billingAddress\n * @param root0.onEdit\n * @param root0.canEdit\n * @extends {React.SFC}\n */\nconst PaymentInformation: React.SFC = ({\n resources: { changePaymentButtonText, cardTitle, cardNumberLabel, expiresDateLabel, addressTitle },\n tokenizedPaymentCard,\n tenderLine,\n billingAddress,\n onEdit,\n canEdit\n}) => {\n const { NameOnCard = '', CardTypeId, CardTokenInfo = {}, ExpirationMonth = 0, ExpirationYear = 0 } = tokenizedPaymentCard || {};\n const { MaskedCardNumber = '' } = CardTokenInfo || tenderLine || {};\n const cardLastNDigit = MaskedCardNumber.substr(-4);\n\n // @ts-expect-error\n const isValidCardNumber = !isNaN(cardLastNDigit) && cardLastNDigit !== '';\n const { Name, Street, StreetNumber, City, State, ZipCode, ThreeLetterISORegionName, Phone } = billingAddress || {};\n\n return (\n
\n

{cardTitle}

\n

{NameOnCard}

\n {CardTypeId &&

{CardTypeId}

}\n {isValidCardNumber && (\n

\n {cardNumberLabel} {` `} {cardLastNDigit}\n

\n )}\n {(ExpirationMonth > 0 || ExpirationYear > 0) && (\n

\n {expiresDateLabel} {` `} {ExpirationMonth}/{ExpirationYear}\n

\n )}\n {billingAddress && (\n <>\n

{addressTitle}

\n

\n {Name}\n {` `}\n {Street}\n

\n {StreetNumber &&

{StreetNumber}

}\n

\n {City},{State}\n {` `}\n {ZipCode}\n {` `}\n {ThreeLetterISORegionName}\n {` `}\n {Phone}\n

\n \n )}\n {canEdit && (\n \n )}\n
\n );\n};\n\nexport default React.memo(PaymentInformation);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport checkoutStateDataAction from './checkout-state-data-action';\n\nexport * from './checkout-state';\nexport * from './checkout-state-data-action';\nexport * from './module-state-manager';\nexport * from './checkout-utilities.data';\n\nexport { checkoutStateDataAction };\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IImageData, IRequestContext, IVideoData } from '@msdyn365-commerce/core';\n\nexport enum MediaType {\n /**\n * The None.\n */\n None = 0,\n /**\n * The Image type.\n */\n Image = 1,\n /**\n * The video type.\n */\n Video = 2,\n /**\n * The file type.\n */\n File = 3\n}\n\nexport interface IMediaData extends IImageData {\n mediaTypeValue?: MediaType;\n displayOrder?: number;\n videoData?: IVideoData;\n}\n\n/**\n * Gets correct alt text for image based on configuration of site.\n * @param productName Product name.\n * @param context Current request context.\n * @param imageAltText Alt-text from CMS image.\n */\nexport function getAltText(\n context: IRequestContext,\n shouldUseCmsAltText: boolean,\n productName?: string,\n imageAltText?: string\n): string | undefined {\n if (!context?.app?.config?.OmniChannelMedia) {\n return productName;\n }\n if (shouldUseCmsAltText) {\n return imageAltText;\n }\n return productName;\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n commerceApiRequest,\n commerceVideoMetadataRequest,\n getCatalogId,\n IActionContext,\n IImageData,\n IImageSettings,\n IVideoData\n} from '@msdyn365-commerce/core';\nimport { MediaLocation, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport {\n ArrayExtensions,\n getMediaLocationsForSelectedVariant,\n MediaLocationsForSelectedVariantInput\n} from '@msdyn365-commerce-modules/retail-actions';\nimport { getAltText } from './helper';\n\nasync function validateMediaLocationAsync(mediaLocation: MediaLocation): Promise<[IImageData, boolean]> {\n const imageData: IImageData = {\n src: mediaLocation.Uri || '',\n altText: mediaLocation.AltText || ''\n };\n if (mediaLocation.IsApplicableForChildEntities) {\n imageData.additionalProperties = { isApplicableForChildEntities: 'true' };\n }\n\n if (imageData.src === '') {\n return [imageData, false];\n }\n\n return new Promise<[IImageData, boolean]>(resolve => {\n try {\n const http = new XMLHttpRequest();\n http.open('HEAD', imageData.src!, true);\n\n http.addEventListener('load', () => {\n resolve([imageData, http.status === 200 || http.status === 201]);\n });\n\n http.addEventListener('error', () => {\n resolve([imageData, false]);\n });\n\n http.send();\n } catch {\n resolve([imageData, false]);\n }\n });\n}\n\nexport async function getValidProductImages(\n productId: number,\n channelId: number,\n actionContext: IActionContext,\n imageSettings: IImageSettings,\n selectedProduct?: SimpleProduct\n): Promise {\n const catalogId = getCatalogId(actionContext.requestContext);\n const actionInput = new MediaLocationsForSelectedVariantInput(productId, channelId, selectedProduct, catalogId);\n\n return getMediaLocationsForSelectedVariant(actionInput, actionContext)\n .then(mediaLocations => {\n if (mediaLocations) {\n return Promise.all(mediaLocations.map(mediaLocation => validateMediaLocationAsync(mediaLocation))).then(pairs => {\n return pairs.filter(pair => pair[1]).map(pair => pair[0]);\n });\n }\n\n return [];\n })\n .catch(error => {\n actionContext.telemetry.exception(error);\n actionContext.telemetry.debug('Unable to get Media Locations for Selected Variant');\n return [];\n });\n}\n\n/**\n * Gets product variant images on dimension change of buy-box module for Omni scenario.\n * @param productId Product record id.\n * @param shouldUseCmsAltText Alt-text source to use.\n * @param channelId Current channel id.\n * @param actionContext Current action context.\n * @param productName Product name.\n * @param selectedProduct Currently selected variant product.\n * @returns List of images.\n */\n\nexport async function getProductImages(\n productId: number,\n shouldUseCmsAltText: boolean,\n channelId: number,\n actionContext: IActionContext,\n productName?: string,\n selectedProduct?: SimpleProduct\n): Promise {\n const catalogId = getCatalogId(actionContext.requestContext);\n if (actionContext.requestContext?.params?.isPreview) {\n const response = await commerceApiRequest(actionContext.requestContext, 'msdyn365-ochannel-product-info', 'post', {\n productId: productId,\n channelId: channelId,\n catalogId: catalogId\n });\n if (response.status !== 200) {\n actionContext.telemetry.debug('Unable to get Media Locations for Selected Variant for preview scenario');\n return [];\n }\n const previewImageData = response?.data as MediaLocation[];\n if (previewImageData) {\n return previewImageData.map(mediaLocation => {\n return {\n src: mediaLocation.Uri ?? '',\n altText: getAltText(actionContext.requestContext, shouldUseCmsAltText, productName, mediaLocation.AltText),\n displayOrder: mediaLocation.DisplayOrder,\n mediaTypeValue: mediaLocation.MediaTypeValue,\n additionalProperties: mediaLocation.IsApplicableForChildEntities\n ? {\n isApplicableForChildEntities: 'true'\n }\n : undefined\n };\n });\n }\n return [];\n }\n const actionInput = new MediaLocationsForSelectedVariantInput(productId, channelId, selectedProduct, catalogId);\n return getMediaLocationsForSelectedVariant(actionInput, actionContext)\n .then(mediaLocations => {\n if (mediaLocations) {\n return mediaLocations.map(mediaLocation => {\n return {\n src: mediaLocation.Uri ?? '',\n altText: getAltText(actionContext.requestContext, shouldUseCmsAltText, productName, mediaLocation.AltText),\n displayOrder: mediaLocation.DisplayOrder,\n mediaTypeValue: mediaLocation.MediaTypeValue,\n additionalProperties: mediaLocation.IsApplicableForChildEntities\n ? {\n isApplicableForChildEntities: 'true'\n }\n : undefined\n };\n });\n }\n return [];\n })\n .catch(error => {\n actionContext.telemetry.exception(error);\n actionContext.telemetry.debug('Unable to get Media Locations for Selected Variant');\n return [];\n });\n}\n\nexport async function validateProductImages(\n mediaLocations: MediaLocation[],\n actionContext: IActionContext,\n imageSettings: IImageSettings\n): Promise {\n return Promise.all(mediaLocations.map(mediaLocation => validateMediaLocationAsync(mediaLocation)))\n .then(pairs => {\n return pairs.filter(pair => pair[1]).map(pair => pair[0]);\n })\n .catch(error => {\n actionContext.telemetry.exception(error);\n actionContext.telemetry.debug('Unable to validate product images');\n return [];\n });\n}\n\n/**\n * GetVideoMetadataFromAPI - Makes API call to get video metadata.\n * @param videoId: Video Id\n * @param actionContext: Action context\n * @returns: Returns the meta data of the video.\n */\nexport async function getVideoMetadataFromApi(videoId: string, actionContext: IActionContext): Promise {\n let videoPlayerData: IVideoData | undefined;\n if (videoId) {\n const response = await commerceVideoMetadataRequest(actionContext.requestContext, [videoId]);\n\n if (response.status !== 200) {\n actionContext.telemetry.debug(`Unable to get video metadata for videoId: ${videoId}`);\n return;\n }\n\n const videoData = response.data as [];\n if (videoData && ArrayExtensions.hasElements(videoData)) {\n videoPlayerData = videoData[0];\n }\n }\n return videoPlayerData;\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Carousel, ICarouselProps, Player, IPlayerData, IPlayerOptions, IVideoMetadata } from '@msdyn365-commerce/components';\nimport { IImageData, IImageSettings, Image, Video } from '@msdyn365-commerce/core';\nimport { MediaLocation, MediaType, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, getFallbackImageUrl, ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n defaultDataScale,\n IComponentNodeProps,\n ImagefullView,\n IModalViewProps,\n IModuleProps,\n inlineZoomImageOnHover,\n inlineZoomImageOnMouseMove,\n inlineZoomImageOnMouseOut,\n inlineZoomInitClick,\n INodeProps,\n ISingleSlideCarouselProps,\n isMobile,\n KeyCodes,\n NodeTag,\n onContainerZoomInit,\n onMouseMoveLensContainer,\n onMouseOutLensContainer,\n onMouseOverImageContainer,\n removeContainerZoomStyle,\n removeInlineZoomStyle,\n SingleSlideCarousel,\n VariantType\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { reaction } from 'mobx';\nimport * as React from 'react';\n\nimport { IMediaGalleryData } from './media-gallery.data';\nimport { imageSource, imageZoom, IMediaGalleryProps, thumbnailsOrientation } from './media-gallery.props.autogenerated';\nimport { getProductImages, getValidProductImages, getVideoMetadataFromApi, validateProductImages } from './utils';\nimport { getAltText, IMediaData } from './utils/helper';\n\n/**\n * IMediaGalleryState Interface.\n */\nexport interface IMediaGalleryState {\n animating: boolean;\n activeIndex: number;\n isImageZoomed: boolean;\n modalIsOpen: boolean;\n lastUpdate?: number;\n isMobileImageZoomed?: boolean;\n mediaGalleryItems?: IMediaData[];\n isInitialLoad?: boolean;\n shouldUseOptimizedImage?: boolean;\n}\n\n/**\n * IMediaGalleryThumbnailsViewProps Interface.\n */\nexport interface IMediaGalleryThumbnailsViewProps {\n ThumbnailsContainerProps: INodeProps;\n SingleSlideCarouselComponentProps: INodeProps;\n items?: IMediaGalleryThumbnailItemViewProps[];\n}\n\n/**\n * IMediaGalleryThumbnailItemViewProps Interface.\n */\nexport interface IMediaGalleryThumbnailItemViewProps {\n ThumbnailItemContainerProps: INodeProps;\n Picture: React.ReactElement;\n}\n\n/**\n * IMediaGalleryViewProps Interface.\n */\nexport interface IMediaGalleryViewProps extends IMediaGalleryProps {\n state: IMediaGalleryState;\n MediaGallery: IModuleProps;\n CarouselProps: INodeProps;\n Thumbnails: IMediaGalleryThumbnailsViewProps;\n Modal?: React.ReactElement | null;\n callbackToggle?(): void;\n callbackThumbnailClick?(index: number): void;\n callbackThumbnailKeyDown?(index: number): void;\n}\n\n/**\n * Props for carousel.\n */\ninterface IMediaGalleryCarouselItems {\n items: ItemType[];\n keys: (string | undefined)[];\n}\n\n/**\n * Media gallery component.\n */\nclass MediaGallery extends React.Component, IMediaGalleryState> {\n private readonly _inlineZoomDivRef: Map = new Map();\n\n private readonly fullScreenOverlayButtonRef: React.RefObject = React.createRef();\n private readonly player: React.RefObject = React.createRef();\n\n private mediaGalleryImages: IImageData[] = [];\n\n private fallbackImage?: string;\n\n private readonly defaultGalleryImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=767&h=767&m=8', w: 0, h: 0 },\n sm: { q: 'w=600&h=600&m=8', w: 0, h: 0 },\n md: { q: 'w=600&h=772&m=8', w: 0, h: 0 },\n lg: { q: 'h=772&m=8', w: 0, h: 0 }\n },\n lazyload: true,\n cropFocalRegion: true\n };\n\n private readonly defaultThumbnailImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=100&m=8', w: 100, h: 0 },\n lg: { q: 'w=100&m=8', w: 100, h: 0 }\n },\n lazyload: true,\n cropFocalRegion: true\n };\n\n private readonly _zoomedImageSettings: IImageSettings;\n\n public constructor(props: IMediaGalleryProps) {\n super(props);\n this._toggleModal = this._toggleModal.bind(this);\n this.state = {\n activeIndex: 0,\n animating: false,\n isImageZoomed: false,\n modalIsOpen: false,\n isInitialLoad: true,\n shouldUseOptimizedImage: !!this.props.config.skipImageValidation\n };\n\n this._zoomedImageSettings =\n props.config.zoomedImageSettings ?? props.config.galleryImageSettings ?? this.defaultGalleryImageSettings;\n\n this._onImageMouseOut = this._onImageMouseOut.bind(this);\n this._inlineZoomImageOnHover = this._inlineZoomImageOnHover.bind(this);\n this._onInlineImageClick = this._onInlineImageClick.bind(this);\n this._onContainerZoomImageClick = this._onContainerZoomImageClick.bind(this);\n this._onMouseOutLensContainer = this._onMouseOutLensContainer.bind(this);\n }\n\n public isMobile(): boolean {\n const size = isMobile({ variant: VariantType.Viewport, context: this.props.context.request });\n return size === 'xs';\n }\n\n public async componentDidMount(): Promise {\n const source = this.props.config.imageSource ?? imageSource.pageContext;\n const shouldUpdateOnPartialDimensionSelection = this.props.config.shouldUpdateOnPartialDimensionSelection;\n this._setRenderType();\n if (!this.props.context.request.app?.config?.OmniChannelMedia) {\n if (source === imageSource.pageContext) {\n if (this.state.mediaGalleryItems === undefined && this.props.data.mediaLocationsForSelectedVariant.result) {\n const images = await validateProductImages(\n this.props.data.mediaLocationsForSelectedVariant.result,\n this.props.context.actionContext,\n this.props.config.thumbnailImageSettings ?? this.defaultThumbnailImageSettings\n );\n await this._setImages(images);\n } else if (this.state.mediaGalleryItems === undefined && this.props.data.product.result) {\n const product = this.props.data.product.result;\n const images = await getValidProductImages(\n product.RecordId,\n +this.props.context.request.apiSettings.channelId,\n this.props.context.actionContext,\n this.props.config.thumbnailImageSettings ?? this.defaultThumbnailImageSettings,\n product.productVariant\n );\n\n await this._setImages(images);\n } else {\n await this._setImages([]);\n }\n }\n }\n\n reaction(\n () => {\n const product = this.props.data.product.result;\n if (!product) {\n return null;\n }\n\n if (!shouldUpdateOnPartialDimensionSelection || !product.productVariant?.RecordId) {\n return `${product.RecordId}`;\n }\n\n return `${product.RecordId}-${product.productVariant.RecordId}`;\n },\n async () => {\n const product = this.props.data.product.result;\n let images: IImageData[] = [];\n if (product) {\n if (this.props.context.app?.config?.OmniChannelMedia) {\n images = await getProductImages(\n product.RecordId,\n this.shouldUseCmsAltText(),\n +this.props.context.request.apiSettings.channelId,\n this.props.context.actionContext,\n product.Name,\n shouldUpdateOnPartialDimensionSelection ? product.productVariant : undefined\n );\n } else {\n images = await getValidProductImages(\n product.RecordId,\n +this.props.context.request.apiSettings.channelId,\n this.props.context.actionContext,\n this.props.config.thumbnailImageSettings ?? this.defaultThumbnailImageSettings,\n shouldUpdateOnPartialDimensionSelection ? product.productVariant : undefined\n );\n }\n await this._setImages(images);\n } else {\n await this._setImages([]);\n }\n },\n { fireImmediately: true }\n );\n\n if (source === imageSource.productId && this.props.data.mediaLocations.result) {\n const images = await validateProductImages(\n this.props.data.mediaLocations.result,\n this.props.context.actionContext,\n this.props.config.thumbnailImageSettings ?? this.defaultThumbnailImageSettings\n );\n await this._setImages(images);\n }\n }\n\n public shouldComponentUpdate(nextProps: IMediaGalleryProps, nextState: IMediaGalleryState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n const { id, config, resources } = this.props;\n\n const { className, showPaginationTooltip } = config;\n\n const isVertical: boolean = config.thumbnailsOrientation === thumbnailsOrientation.vertical;\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing -- || is required.\n const isFullscreenAllowed: boolean = this.isMobile() || config.allowFullScreen || false;\n const zoomViewMode: string =\n config.imageZoom === imageZoom.inline ? imageZoom.inline : config.imageZoom === imageZoom.container ? imageZoom.container : '';\n const source = this.props.config.imageSource ?? imageSource.pageContext;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- Site level config can be of any type.\n const emptyPlaceHolderImage = this.props.context.app.config?.placeholderImageName as string;\n if (this.props.data.product.result) {\n this.fallbackImage = getFallbackImageUrl(\n this.props.data.product.result.ItemId,\n this.props.context.request.apiSettings,\n this.props.context.request.app?.config?.OmniChannelMedia\n );\n }\n if (emptyPlaceHolderImage && this.fallbackImage) {\n this.fallbackImage = `${this.fallbackImage},${emptyPlaceHolderImage}`;\n }\n if (this.props.config.skipImageValidation && !this.state.mediaGalleryItems && this.state.isInitialLoad) {\n let images: IImageData[] = [];\n let mediaLocations: MediaLocation[] = [];\n if (source === imageSource.pageContext && this.props.data.mediaLocationsForSelectedVariant.result) {\n mediaLocations = this.props.data.mediaLocationsForSelectedVariant.result;\n } else if (source === imageSource.productId && this.props.data.mediaLocations.result) {\n mediaLocations = this.props.data.mediaLocations.result;\n }\n images = mediaLocations.map(mediaLocation => {\n return {\n src: mediaLocation.Uri ?? '',\n altText: getAltText(\n this.props.context.actionContext.requestContext,\n this.shouldUseCmsAltText(),\n this.props.data.product.result?.Name,\n mediaLocation.AltText\n )\n };\n });\n const curatedImages = this.props.config.images ?? [];\n this.mediaGalleryImages = [...this._filterMasterImageFromVariant(images), ...curatedImages];\n }\n const mediaGalleryCarouselItems = this._getMediaGalleryItems(isFullscreenAllowed, zoomViewMode);\n const mediaGalleryThumbnailCarouselItems = this._getMediaGalleryThumbnailItems();\n const viewProps: IMediaGalleryViewProps = {\n ...(this.props as IMediaGalleryProps),\n state: this.state,\n MediaGallery: {\n moduleProps: this.props,\n className: classnames(`ms-media-gallery ${isVertical ? 'vertical' : ''}`, className)\n },\n Modal: isFullscreenAllowed ? this.imageModalSlider(zoomViewMode) : null,\n callbackToggle: this.openModalDialog,\n callbackThumbnailClick: this._generateOnThumbnailClick,\n callbackThumbnailKeyDown: this._generateOnThumbnailKeyDown,\n CarouselProps: {\n tag: Carousel,\n className: 'ms-media-gallery__carousel',\n items: mediaGalleryCarouselItems.items,\n activeIndex: this.state.activeIndex,\n next: this.next,\n previous: this.previous,\n interval: false,\n directionTextPrev: resources.previousScreenshotFlipperText,\n directionTextNext: resources.nextScreenshotFlipperText,\n onIndicatorsClickHandler: this.goToIndex,\n showPaginationTooltip: showPaginationTooltip === true,\n indicatorAriaText: resources.ariaLabelForSlide,\n handleOnExited: this.onExited,\n handleOnExiting: this.onExiting,\n key: mediaGalleryCarouselItems.keys\n } as IComponentNodeProps,\n Thumbnails: {\n ThumbnailsContainerProps: { className: 'ms-media-gallery__thumbnails-container' },\n SingleSlideCarouselComponentProps: {\n tag: SingleSlideCarousel,\n className: 'ms-media-gallery__thumbnails',\n vertical: isVertical,\n flipperPrevLabel: resources.previousScreenshotFlipperText,\n flipperNextLabel: resources.nextScreenshotFlipperText,\n parentId: id,\n useTabList: true,\n key: JSON.stringify(mediaGalleryThumbnailCarouselItems.keys)\n } as IComponentNodeProps,\n items: mediaGalleryThumbnailCarouselItems.items\n }\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Zoomed out image on previous/next click.\n */\n public updateZoomedInImage(): void {\n this.setState({ isImageZoomed: false });\n }\n\n private readonly onExiting = () => {\n this.setState({ animating: true });\n };\n\n private readonly onExited = () => {\n this.setState({ animating: false });\n };\n\n /**\n * On click next in carousel.\n */\n private readonly next = (): void => {\n removeInlineZoomStyle();\n if (this.isLastItem() === undefined) {\n return;\n }\n\n const nextIndex = this.isLastItem() ? 0 : this.state.activeIndex + 1;\n this.goToIndex(nextIndex);\n\n this.updateZoomedInImage();\n };\n\n /**\n * On click previous in carousel.\n */\n private readonly previous = (): void => {\n removeInlineZoomStyle();\n const images = this.state.mediaGalleryItems;\n const nextIndex = this.isFirstItem() ? (images ? images.length - 1 : 0) : this.state.activeIndex - 1;\n this.goToIndex(nextIndex);\n this.updateZoomedInImage();\n };\n\n private readonly goToIndex = (index: number): void => {\n const { autoplay } = this.props.config;\n const currentIndex = this.state.activeIndex;\n const mediaItems = this.state.mediaGalleryItems;\n if (autoplay && mediaItems) {\n if (mediaItems[`${index}`]?.mediaTypeValue === MediaType.Video) {\n this.player.current?.play();\n } else if (mediaItems[`${currentIndex}`].mediaTypeValue === MediaType.Video) {\n this.player.current?.pause();\n }\n }\n this.setState({ activeIndex: index });\n };\n\n private _getMediaGalleryThumbnailItems(): IMediaGalleryCarouselItems {\n const mediaGalleryItems = this.state.mediaGalleryItems ?? this.mediaGalleryImages;\n const thumbnailImageSettings = this.props.config.thumbnailImageSettings;\n if (thumbnailImageSettings) {\n thumbnailImageSettings.cropFocalRegion = true;\n }\n\n const hasMediaGalleryItems = ArrayExtensions.hasElements(mediaGalleryItems);\n\n if (!hasMediaGalleryItems) {\n if (this.state.lastUpdate) {\n const defaultKey = 0;\n return {\n items: [this._getEmptyThumbnailItem(thumbnailImageSettings, defaultKey, this.state.activeIndex)],\n keys: ['empty']\n };\n }\n return { items: [], keys: [] };\n }\n\n return {\n items: [\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n ...mediaGalleryItems!.map((item: IMediaData, index: number) => {\n if (item.mediaTypeValue === MediaType.Video) {\n return this.getVideoThumbNailItem(\n item,\n thumbnailImageSettings ?? this.defaultThumbnailImageSettings,\n index,\n this.state.activeIndex\n );\n } else {\n return this._getThumbnailItem(\n item,\n thumbnailImageSettings ?? this.defaultThumbnailImageSettings,\n index,\n this.state.activeIndex\n );\n }\n })\n ],\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n keys: [...mediaGalleryItems!.map(item => item.src)]\n };\n }\n\n private _getMediaGalleryItems(isFullscreenAllowed: boolean, zoomViewMode: string): IMediaGalleryCarouselItems {\n const mediaGalleryItems = this.state.mediaGalleryItems ?? this.mediaGalleryImages;\n const galleryImageSettings = this.props.config.galleryImageSettings;\n if (galleryImageSettings) {\n galleryImageSettings.cropFocalRegion = true;\n }\n\n const zoomView = isFullscreenAllowed ? 'fullscreen' : zoomViewMode;\n\n const hasMediaGalleryItems = ArrayExtensions.hasElements(mediaGalleryItems);\n\n if (!hasMediaGalleryItems) {\n if (this.state.lastUpdate) {\n return { items: [this._renderEmptyImage(galleryImageSettings)], keys: ['empty'] };\n }\n return { items: [], keys: [] };\n }\n\n return {\n items: [\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n ...mediaGalleryItems!.map((item: IMediaData, index: number) => {\n return this._renderCarouselItemImageView(\n zoomView,\n item,\n galleryImageSettings ?? this.defaultGalleryImageSettings,\n index\n );\n })\n ],\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n keys: [...mediaGalleryItems!.map(item => item.src)]\n };\n }\n\n private async _setImages(images?: IMediaData[]): Promise {\n const curatedImage = this.props.config.images || [];\n const mediaToSet: IMediaData[] = this._filterMasterImageFromVariant(images);\n\n void Promise.all(\n mediaToSet.map(async mediaData => {\n if (mediaData.mediaTypeValue === MediaType.Video && mediaData.src) {\n try {\n const url = new URL(mediaData.src);\n const videoId = url.searchParams.get('CVID');\n if (videoId) {\n mediaData.videoData = await getVideoMetadataFromApi(videoId, this.props.context.actionContext);\n }\n } catch (error) {\n if (this.props.telemetry) {\n this.props.telemetry.debug('Error while fetching videoId');\n }\n }\n }\n return mediaData;\n })\n ).then(mediaData => {\n const mediaItems = mediaData.filter(element => {\n return (\n element.mediaTypeValue !== MediaType.Video ||\n (element.mediaTypeValue === MediaType.Video && element.videoData !== undefined)\n );\n });\n\n this.setState({\n mediaGalleryItems: [...mediaItems, ...curatedImage],\n activeIndex: 0,\n lastUpdate: Date.now(),\n shouldUseOptimizedImage: false\n });\n });\n\n this.setState({\n mediaGalleryItems: [...mediaToSet, ...curatedImage],\n activeIndex: 0,\n lastUpdate: Date.now(),\n shouldUseOptimizedImage: false\n });\n }\n\n private _setRenderType(): void {\n this.setState({\n isInitialLoad: false\n });\n }\n\n private _renderCarouselItemImageView(\n zoomView: string,\n media: IMediaData,\n imageSettings: IImageSettings,\n index: number,\n isInPopup: boolean = false\n ): React.ReactNode {\n if (media.mediaTypeValue === MediaType.Video) {\n if (isInPopup || zoomView !== 'fullscreen') {\n return <>{this._renderCarouselItemVideo(media, index, imageSettings)};\n }\n return <>{this._renderVideoThumbnail(media, index, imageSettings)};\n } else {\n if (this.isMobile()) {\n if (isInPopup) {\n return this._renderImageInContainerOnZoom(media, this._zoomedImageSettings, index);\n }\n return this._renderImageFullScreenOnZoom(media, imageSettings, index);\n }\n\n switch (zoomView) {\n case 'container': {\n return this._renderImageInContainerOnZoom(media, this._zoomedImageSettings, index);\n }\n case 'inline': {\n return this._renderImageInlineOnZoom(media, this._zoomedImageSettings, index);\n }\n case 'fullscreen': {\n return this._renderImageFullScreenOnZoom(media, imageSettings, index);\n }\n\n // No default\n }\n return <>{this._getCarouselItem(media, imageSettings, index, isInPopup)};\n }\n }\n\n private _filterMasterImageFromVariant(images?: IImageData[]): IImageData[] {\n const shouldHidePrimaryImages = this.props.config.shouldHideMasterProductImagesForVariant ?? true;\n let variantImages = images ?? [];\n const isVariantProduct =\n !ObjectExtensions.isNullOrUndefined(this.props.data.product.result?.MasterProductId) ||\n !ObjectExtensions.isNullOrUndefined(this.props.data.product.result?.productVariant);\n const itemId = this.props.data.product.result?.ItemId;\n if (shouldHidePrimaryImages && isVariantProduct && itemId) {\n variantImages = variantImages.filter(item => {\n const isApplicableForChildEntities = item.additionalProperties?.isApplicableForChildEntities;\n return !isApplicableForChildEntities;\n });\n if (!ArrayExtensions.hasElements(variantImages)) {\n variantImages = images ?? [];\n }\n }\n return variantImages;\n }\n\n private readonly _renderCarouselItemVideo = (mediaData: IMediaData, index: number, imageSettings: IImageSettings): React.ReactNode => {\n const videoData = mediaData.videoData;\n if (videoData) {\n const options: IPlayerOptions = this.props.config as IPlayerOptions;\n const playerResources = this.props.resources;\n const videoMetaData: IVideoMetadata = {};\n videoMetaData.videoId = videoData.id;\n videoMetaData.title = videoData.title;\n videoMetaData.duration = videoData.playTime;\n if (videoData.thumbnail) {\n videoMetaData.posterframeUrl = videoData.thumbnail.src;\n }\n if (videoData._links?.binaryReferences) {\n videoMetaData.videoBinaryReferences = videoData._links.binaryReferences;\n }\n const videoPlayerData: IPlayerData = { options, metaData: videoMetaData };\n const attributes = {\n id: `${this.props.id}__carousel-item__${index}`\n };\n return (\n \n );\n }\n return this._renderEmptyImage(imageSettings);\n };\n\n private readonly _getCarouselItem = (\n image: IImageData,\n imageSettings: IImageSettings,\n index: number,\n isInPopup: boolean = false\n ): React.ReactNode => (\n \n );\n\n private readonly _getThumbnailItem = (\n image: IImageData,\n imageSettings: IImageSettings,\n index: number,\n modifiedActiveIndex: number\n ): IMediaGalleryThumbnailItemViewProps => {\n const classes = classnames(\n 'ms-media-gallery__thumbnail-item',\n modifiedActiveIndex === index ? 'ms-media-gallery__thumbnail-item-active' : ''\n );\n\n return {\n ThumbnailItemContainerProps: {\n tag: 'li' as NodeTag,\n className: classes,\n role: 'tab',\n tabIndex: 0,\n key: index,\n 'aria-label': image.altText,\n 'aria-selected': modifiedActiveIndex === index,\n onClick: this._generateOnThumbnailClick(index),\n onKeyDown: this._generateOnThumbnailKeyDown(index)\n },\n Picture: (\n \n )\n };\n };\n\n /**\n * Gets the video thumbnail item to display media gallery.\n * @param props - The Media gallery view props from business layer.\n * @returns Return thumbnail view props which will be used to render video.\n */\n private readonly getVideoThumbNailItem = (\n mediaData: IMediaData,\n imageSettings: IImageSettings,\n index: number,\n modifiedActiveIndex: number\n ): IMediaGalleryThumbnailItemViewProps => {\n const classes = classnames(\n 'ms-media-gallery__thumbnail-item',\n modifiedActiveIndex === index ? 'ms-media-gallery__thumbnail-item-active' : ''\n );\n\n const videoData = mediaData.videoData;\n let image: IImageData;\n if (videoData?.thumbnail) {\n image = videoData.thumbnail;\n } else {\n image = {\n src: 'empty'\n };\n }\n\n return {\n ThumbnailItemContainerProps: {\n tag: 'li' as NodeTag,\n className: classes,\n role: 'tab',\n tabIndex: 0,\n key: index,\n 'aria-label': image.altText,\n 'aria-selected': modifiedActiveIndex === index,\n onClick: this._generateOnThumbnailClick(index),\n onKeyDown: this._generateOnThumbnailKeyDown(index)\n },\n Picture: (\n \n )\n };\n };\n\n /**\n * Ref Handler.\n * @param index -Remove item click function.\n * @returns Set inline zoom.\n */\n private readonly _refHandler = (index: number) => (divRef: HTMLDivElement) => {\n this._inlineZoomDivRef.set(index, divRef);\n };\n\n private readonly _generateOnThumbnailKeyDown = (index: number) => {\n return (event: React.KeyboardEvent) => {\n if (event.which === KeyCodes.Enter || event.which === KeyCodes.Space) {\n event.preventDefault();\n\n this.goToIndex(index);\n }\n };\n };\n\n private readonly _generateOnThumbnailClick = (index: number) => {\n return (event: React.MouseEvent) => {\n event.preventDefault();\n\n this.goToIndex(index);\n };\n };\n\n private _renderImageInlineOnZoom(image: IImageData, imageSettings: IImageSettings, index: number): React.ReactNode {\n return (\n \n \n \n
\n );\n }\n\n private _inlineZoomImageOnHover(event: React.MouseEvent): void {\n inlineZoomImageOnHover(event, this.props.config.dataScale ?? String(defaultDataScale));\n }\n\n private _handleMobileViewZoomedImageClick(event: React.MouseEvent) {\n const target = this.state.shouldUseOptimizedImage ? (event.target as HTMLImageElement) : event.currentTarget;\n const mobileZoomedInImageClassName = 'msc-mobile-zoomed-in';\n if (!this.state.isMobileImageZoomed) {\n const bounds = target.getBoundingClientRect();\n const dataScale = Number(this.props.config.dataScale ?? defaultDataScale);\n\n const positionX = event.clientX - bounds.left;\n const positionY = event.clientY - bounds.top;\n const scaledPositionX = positionX * dataScale;\n const scaledPositionY = positionY * dataScale;\n\n target.style.transform = `scale(${dataScale})`;\n target.classList.add(mobileZoomedInImageClassName);\n target.parentElement!.style.overflow = 'auto';\n target.parentElement!.scrollTo(scaledPositionX - positionX, scaledPositionY - positionY);\n this.setState({\n isMobileImageZoomed: true\n });\n } else {\n target.style.transform = '';\n target.classList.remove(mobileZoomedInImageClassName);\n target.parentElement!.style.overflow = '';\n this.setState({\n isMobileImageZoomed: false\n });\n }\n }\n\n private _onInlineImageClick(event: React.MouseEvent): void {\n if (window.innerWidth <= 768) {\n // $msv-breakpoint-m\n this._handleMobileViewZoomedImageClick(event);\n return;\n }\n inlineZoomInitClick(event, this.props.config.dataScale ?? String(defaultDataScale));\n this.setState({\n isImageZoomed: true\n });\n }\n\n private _onImageMouseOut(event: React.MouseEvent): void {\n inlineZoomImageOnMouseOut(event);\n this.setState({\n isImageZoomed: false\n });\n }\n\n private _onContainerZoomImageClick(event: React.MouseEvent): void {\n if (window.innerWidth <= 768) {\n // $msv-breakpoint-m\n this._handleMobileViewZoomedImageClick(event);\n return;\n }\n\n onContainerZoomInit(event);\n\n this.setState({\n isImageZoomed: true\n });\n }\n\n private _onMouseOutLensContainer(event: React.MouseEvent): void {\n onMouseOutLensContainer(event);\n\n this.setState({\n isImageZoomed: false\n });\n }\n\n private _renderImageInContainerOnZoom(image: IImageData, imageSettings: IImageSettings, index: number): React.ReactNode {\n return (\n
\n \n \n
\n );\n }\n\n private _renderImageFullScreenOnZoom(image: IImageData, imageSettings: IImageSettings, index: number): React.ReactNode {\n return (\n
\n \n
\n {}\n \n
\n
\n );\n }\n\n /**\n * Render the video thumbnail in full screen.\n * @param mediaData - Media Data.\n * @param index - Index\n * @param imageSettings - Image settings.\n * @returns - JSX.Element\n */\n private readonly _renderVideoThumbnail = (mediaData: IMediaData, index: number, imageSettings: IImageSettings): React.ReactNode => {\n const videoData = mediaData.videoData;\n let image: IImageData;\n if (videoData?.thumbnail) {\n image = videoData.thumbnail;\n } else {\n image = {\n src: 'empty'\n };\n }\n\n return (\n
\n \n
\n {}\n \n
\n
\n );\n };\n\n private _mapProductToImageData(product: SimpleProduct): IImageData {\n return {\n src: product.PrimaryImageUrl ?? ''\n };\n }\n\n private _renderEmptyImage(imageSettings: IImageSettings | undefined): React.ReactNode {\n return (\n
\n \n
\n );\n }\n\n private _getEmptyThumbnailItem(\n imageSettings: IImageSettings | undefined,\n index: number,\n modifiedActiveIndex: number\n ): IMediaGalleryThumbnailItemViewProps {\n const classes = classnames(\n 'ms-media-gallery__thumbnail-item',\n modifiedActiveIndex === index ? 'ms-media-gallery__thumbnail-item-active' : ''\n );\n return {\n ThumbnailItemContainerProps: {\n tag: 'li' as NodeTag,\n className: classes,\n role: 'tab',\n tabIndex: 0,\n key: 'empty',\n 'aria-label': '',\n 'aria-selected': modifiedActiveIndex === index,\n onClick: this._generateOnThumbnailClick(index),\n onKeyDown: this._generateOnThumbnailKeyDown(index)\n },\n Picture: (\n \n )\n };\n }\n\n private readonly isFirstItem = () => this.state.activeIndex === 0;\n\n private readonly isLastItem = () => {\n const images = this.state.mediaGalleryItems;\n return images && this.state.activeIndex === images.length - 1;\n };\n\n private readonly openModalDialog = (): void => {\n this._toggleModal();\n };\n\n private _toggleModal(): void {\n if (this.state.modalIsOpen) {\n this.fullScreenOverlayButtonRef.current?.focus();\n const parentDiv = this._inlineZoomDivRef.get(this.state.activeIndex);\n if (parentDiv && parentDiv.children && parentDiv.children.length >= 2) {\n const image = parentDiv.children[1].querySelector('img');\n if (image) {\n image.removeAttribute('style');\n }\n }\n this.setState({\n isImageZoomed: false\n });\n }\n this.setState({\n isImageZoomed: false,\n modalIsOpen: !this.state.modalIsOpen\n });\n removeInlineZoomStyle();\n removeContainerZoomStyle();\n }\n\n private readonly imageModalSlider = (ZoomView: string): React.ReactElement => {\n const {\n data: {\n product: { result: product }\n },\n resources\n } = this.props;\n let mediaGalleryItems = this.state.mediaGalleryItems;\n\n if (!mediaGalleryItems && product) {\n mediaGalleryItems = [this._mapProductToImageData(product)];\n }\n const carouselprops = {\n tag: Carousel,\n className: 'ms-media-gallery__carousel',\n items:\n mediaGalleryItems &&\n mediaGalleryItems.map((item: IImageData, index: number) =>\n this._renderCarouselItemImageView(ZoomView, item, this._zoomedImageSettings, index, true)\n ),\n activeIndex: this.state.activeIndex,\n next: this.next,\n previous: this.previous,\n interval: false,\n directionTextPrev: resources.previousScreenshotFlipperText,\n directionTextNext: resources.nextScreenshotFlipperText,\n onIndicatorsClickHandler: this.goToIndex,\n showPaginationTooltip: true,\n hideIndicator: false,\n keyboard: false,\n handleOnExited: this.onExited,\n handleOnExiting: this.onExiting,\n isDisabledFunctionality: this.state.isMobileImageZoomed\n } as IComponentNodeProps;\n const carousel = ;\n\n const imageModalSliderProps: IModalViewProps = {\n modalIsOpen: this.state.modalIsOpen,\n ontoggle: this._toggleModal,\n galleryCarousel: carousel,\n classNames: classnames('ms-media-gallery__modal', 'msc-modal-input-required')\n };\n return ImagefullView(imageModalSliderProps) as React.ReactElement;\n };\n\n private shouldUseCmsAltText = (): boolean => {\n if (this.props.config.altTextSource === 'product') {\n return false;\n } else {\n return true;\n }\n };\n}\n\nexport default MediaGallery;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IGiftCardExtend } from '@msdyn365-commerce/global-state';\nimport { Button, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IGetItemInput {\n giftCard: IGiftCardExtend;\n canRemove: boolean;\n resources: {\n enteredGiftCardLabel: string;\n giftCardAvailableBalanceLabel: string;\n removeGiftCardButton: string;\n };\n getFormattedPrice(price?: number, currencyCode?: string): string;\n onRemoveGiftCard(giftCardNumber: string): void;\n}\n\nexport interface IItem {\n itemProps: INodeProps;\n id?: string;\n selectedGiftCard: React.ReactNode;\n removeButton?: React.ReactNode;\n}\n\n/**\n * On remove function.\n * @param onRemoveGiftCard -Gift card number function.\n * @param giftCard -Gift card values.\n * @returns Call of onRemoveGiftCard function.\n */\nconst onRemoveHandler = (onRemoveGiftCard: (giftCardNumber: string) => void, giftCard: IGiftCardExtend) => (): void => {\n onRemoveGiftCard(giftCard.Id ?? '');\n};\n\n/**\n * GiftCardItem component.\n * @param root0\n * @param root0.giftCard\n * @param root0.getFormattedPrice\n * @param root0.canRemove\n * @param root0.onRemoveGiftCard\n * @param root0.resources\n * @param root0.resources.enteredGiftCardLabel\n * @param root0.resources.giftCardAvailableBalanceLabel\n * @param root0.resources.removeGiftCardButton\n * @extends {React.PureComponent}\n */\nexport const getItem = ({\n giftCard,\n getFormattedPrice,\n canRemove,\n onRemoveGiftCard,\n resources: { enteredGiftCardLabel, giftCardAvailableBalanceLabel, removeGiftCardButton }\n}: IGetItemInput): IItem => {\n const balance = getFormattedPrice(giftCard.Balance, giftCard.CardCurrencyCode);\n const giftCardLast4Digit = (giftCard.Id || '').substr(-4);\n\n const itemProps = {\n className: 'ms-checkout-gift-card__item'\n };\n\n const selectedGiftCard = (\n \n {enteredGiftCardLabel}\n {` `}\n {giftCardLast4Digit}\n {' ('}\n {giftCardAvailableBalanceLabel}\n {` `}\n {balance}\n {')'}\n \n );\n\n const removeButton = canRemove && (\n \n );\n\n return {\n itemProps,\n id: giftCard.Id,\n selectedGiftCard,\n removeButton\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICheckoutExpressPaymentContainerViewProps } from './checkout-express-payment-container';\n\ninterface IContainerItemsComponent {\n isLoadingClassName: string;\n items: React.ReactNode[];\n}\n\nconst ContainerItemsComponent: React.FC = ({ isLoadingClassName, items }) => (\n
{items}
\n);\n\nconst CheckoutExpressPaymentContainerView: React.FC = ({\n checkoutPlainContainerProps,\n items,\n isReady,\n waiting,\n title,\n headerProps\n}) => {\n const isLoadingClassName: string = isReady ? 'showContainer' : 'notShowContainer';\n return (\n \n {title}\n {!isReady && waiting}\n \n \n );\n};\n\nexport default CheckoutExpressPaymentContainerView;\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { format } from '@msdyn365-commerce-modules/utilities';\r\n\r\nexport function getDate(date: Date | undefined, locale: string): string {\r\n if (!date) {\r\n return '';\r\n }\r\n const options: any = {\r\n timeZone: 'UTC',\r\n dateStyle: 'full'\r\n };\r\n const dateFormateLocale = locale === 'en-US' ? 'en-GB' : locale;\r\n const formatter = new Intl.DateTimeFormat(dateFormateLocale, options);\r\n return formatter.format(new Date(date));\r\n}\r\n\r\nexport const getTimeslot = (placeHolder: string, startDate: Date | undefined, endDate: Date | undefined, locale: string): string => {\r\n if (!startDate || !endDate) {\r\n return '';\r\n }\r\n const options: Intl.DateTimeFormatOptions = {\r\n hour: 'numeric',\r\n minute: 'numeric',\r\n hour12: true,\r\n timeZone: 'UTC'\r\n };\r\n const formatter = new Intl.DateTimeFormat(locale, options);\r\n return format(placeHolder, formatter.format(new Date(startDate)), formatter.format(new Date(endDate)));\r\n};\r\n\r\nexport const getUTCDateWithoutTime = (input: Date): Date => {\r\n const date: Date = new Date(input);\r\n return new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), 0, 0, 0));\r\n};\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { LabeledDropdown } from '@msdyn365-commerce-modules/utilities';\r\nimport {\r\n ILabeledDropdownOnChangeNotification,\r\n ILabeledDropdownOption\r\n} from '@msdyn365-commerce-modules/utilities/dist/types/labeled-dropdown/LabeledDropdown.props';\r\nimport { computed } from 'mobx';\r\nimport * as React from 'react';\r\n\r\nimport { CheckoutPickupError } from './lds-checkout-pickup-4-group';\r\nimport { getDate } from './lds-checkout-pickup-4-utility';\r\n\r\nexport interface IPickupDropdownProps {\r\n pickupStoreId: string;\r\n deliveryMode: string;\r\n\r\n className: string;\r\n labelClassname?: string;\r\n labelText: string;\r\n defaultText: string;\r\n errorMessage?: string;\r\n\r\n locale: string;\r\n\r\n // Props for the LabeledDropdown component\r\n dropdownId: string;\r\n controlledByParent: boolean;\r\n toggleColor?: string;\r\n dropdownClassname?: string;\r\n}\r\n\r\nexport interface IPickupDateDropdownProps extends IPickupDropdownProps {\r\n availableDates: Date[];\r\n selectedDate?: Date;\r\n setDateHandler(pickupStoreId: string, deliveryMode: string, pickupDate: Date | undefined): void;\r\n}\r\n\r\n/**\r\n *\r\n * CheckoutPickupDateDropdown component.\r\n * @extends {React.Component}\r\n */\r\nexport class CheckoutPickupDateDropdown extends React.PureComponent {\r\n private readonly defaultKey: number = -1;\r\n\r\n private readonly defaultOption: ILabeledDropdownOption;\r\n\r\n // As the LabeledDropdown control only offers key and value, we need to map the key with date and timeslot data\r\n @computed get getDateMap(): Map {\r\n const map = new Map();\r\n this.props.availableDates.forEach((value, index) => {\r\n map.set(index.toString(), value);\r\n });\r\n return map;\r\n }\r\n\r\n constructor(props: IPickupDateDropdownProps) {\r\n super(props);\r\n this.defaultOption = { key: this.defaultKey.toString(), value: props.defaultText };\r\n this.updateDateSelection = this.updateDateSelection.bind(this);\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const {\r\n className,\r\n labelClassname,\r\n labelText,\r\n errorMessage,\r\n dropdownId,\r\n availableDates,\r\n selectedDate,\r\n controlledByParent,\r\n toggleColor,\r\n dropdownClassname\r\n } = this.props;\r\n\r\n const { dropdownOptions, selectedOption } = this.mapDatesToOptions(availableDates, selectedDate);\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n\r\n private readonly updateDateSelection = (notification: ILabeledDropdownOnChangeNotification): void => {\r\n const { pickupStoreId, deliveryMode, setDateHandler } = this.props;\r\n const date: Date | undefined = this.getDate(notification);\r\n setDateHandler(pickupStoreId, deliveryMode, date);\r\n };\r\n\r\n private readonly getDate = (notification: ILabeledDropdownOnChangeNotification): Date | undefined => {\r\n const key: string = notification.selectedOption.key;\r\n if (key === this.defaultKey.toString() || !this.getDateMap.has(key)) {\r\n return undefined;\r\n }\r\n return this.getDateMap.get(key);\r\n };\r\n\r\n private readonly mapDatesToOptions = (\r\n dates: Date[],\r\n selectedDate: Date | undefined\r\n ): { dropdownOptions: ILabeledDropdownOption[]; selectedOption: ILabeledDropdownOption | undefined } => {\r\n const { locale } = this.props;\r\n let options: ILabeledDropdownOption[] = [];\r\n let selectedOption: ILabeledDropdownOption = this.defaultOption;\r\n\r\n options = dates.map((value: Date, index: number) => {\r\n return {\r\n key: index.toString(),\r\n value: getDate(value, locale)\r\n };\r\n });\r\n options.unshift(this.defaultOption);\r\n\r\n const index: number = dates.findIndex((value: Date) => selectedDate !== undefined && selectedDate.getTime() === value.getTime());\r\n if (index >= 0 && selectedDate) {\r\n selectedOption = {\r\n key: index.toString(),\r\n value: getDate(selectedDate, locale)\r\n };\r\n }\r\n\r\n return {\r\n dropdownOptions: options,\r\n selectedOption\r\n };\r\n };\r\n}\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { PickupTimeslotAvailability } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport { LabeledDropdown } from '@msdyn365-commerce-modules/utilities';\r\nimport {\r\n ILabeledDropdownOnChangeNotification,\r\n ILabeledDropdownOption\r\n} from '@msdyn365-commerce-modules/utilities/dist/types/labeled-dropdown/LabeledDropdown.props';\r\nimport { computed } from 'mobx';\r\nimport * as React from 'react';\r\n\r\nimport { IPickupDropdownProps } from './lds-checkout-pickup-4-date-dropdown';\r\nimport { CheckoutPickupError } from './lds-checkout-pickup-4-group';\r\nimport { getTimeslot } from './lds-checkout-pickup-4-utility';\r\n\r\nexport interface IPickupTimeslotDropdownProps extends IPickupDropdownProps {\r\n availableTimeslots: PickupTimeslotAvailability[];\r\n selectedTimeslot?: PickupTimeslotAvailability;\r\n timeslotPlaceHolder: string;\r\n setTimeslotHandler(pickupStoreId: string, deliveryMode: string, pickupTimeslot: PickupTimeslotAvailability | undefined): void;\r\n}\r\n\r\n/**\r\n *\r\n * CheckoutPickupTimeslotDropdown component.\r\n * @extends {React.Component}\r\n */\r\nexport class CheckoutPickupTimeslotDropdown extends React.PureComponent {\r\n private readonly defaultKey: number = -1;\r\n\r\n private readonly defaultOption: ILabeledDropdownOption;\r\n\r\n // As the LabeledDropdown control only offers key and value, we need to map the key with date and timeslot data\r\n @computed get getTimeslotMap(): Map {\r\n const map = new Map();\r\n this.props.availableTimeslots.forEach((value, index) => {\r\n map.set(index.toString(), value);\r\n });\r\n return map;\r\n }\r\n\r\n constructor(props: IPickupTimeslotDropdownProps) {\r\n super(props);\r\n this.defaultOption = { key: this.defaultKey.toString(), value: props.defaultText };\r\n this.updateTimeslotSelection = this.updateTimeslotSelection.bind(this);\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const {\r\n className,\r\n labelClassname,\r\n labelText,\r\n errorMessage,\r\n dropdownId,\r\n availableTimeslots,\r\n selectedTimeslot,\r\n controlledByParent,\r\n toggleColor,\r\n dropdownClassname\r\n } = this.props;\r\n\r\n const { dropdownOptions, selectedOption } = this.mapTimeslotsToOptions(availableTimeslots, selectedTimeslot);\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n\r\n private readonly updateTimeslotSelection = (notification: ILabeledDropdownOnChangeNotification): void => {\r\n const { pickupStoreId, deliveryMode, setTimeslotHandler } = this.props;\r\n const timeslot: PickupTimeslotAvailability | undefined = this.getTimeslot(notification);\r\n setTimeslotHandler(pickupStoreId, deliveryMode, timeslot);\r\n };\r\n\r\n private readonly getTimeslot = (notification: ILabeledDropdownOnChangeNotification): PickupTimeslotAvailability | undefined => {\r\n const key: string = notification.selectedOption.key;\r\n if (key === this.defaultKey.toString() || !this.getTimeslotMap.has(key)) {\r\n return undefined;\r\n }\r\n return this.getTimeslotMap.get(key);\r\n };\r\n\r\n private readonly mapTimeslotsToOptions = (\r\n timeslots: PickupTimeslotAvailability[],\r\n selectedTimeslot: PickupTimeslotAvailability | undefined\r\n ): { dropdownOptions: ILabeledDropdownOption[]; selectedOption: ILabeledDropdownOption | undefined } => {\r\n const { timeslotPlaceHolder, locale } = this.props;\r\n let options: ILabeledDropdownOption[] = [];\r\n let selectedOption: ILabeledDropdownOption = this.defaultOption;\r\n\r\n options = timeslots.map((value: PickupTimeslotAvailability, index: number) => {\r\n return {\r\n key: index.toString(),\r\n value: getTimeslot(timeslotPlaceHolder, value.StartDateTime, value.EndDateTime, locale)\r\n };\r\n });\r\n options.unshift(this.defaultOption);\r\n\r\n const index: number = timeslots.findIndex(\r\n value =>\r\n selectedTimeslot !== undefined &&\r\n selectedTimeslot.StartDateTime?.getTime() === value.StartDateTime?.getTime() &&\r\n selectedTimeslot.EndDateTime?.getTime() === value.EndDateTime?.getTime()\r\n );\r\n if (index >= 0 && selectedTimeslot) {\r\n selectedOption = {\r\n key: index.toString(),\r\n value: getTimeslot(timeslotPlaceHolder, selectedTimeslot.StartDateTime, selectedTimeslot.EndDateTime, locale)\r\n };\r\n }\r\n\r\n return {\r\n dropdownOptions: options,\r\n selectedOption\r\n };\r\n };\r\n}\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IAddContactInfo, ICheckoutGuestProfileViewProps, IShowContactInfo } from './lds-checkout-contact-4';\r\n// @ts-ignore\r\nimport { Secondary, Ghost } from '@churchofjesuschrist/eden-buttons';\r\n// @ts-ignore\r\nimport { Error } from '@churchofjesuschrist/eden-alert';\r\n\r\ninterface ILdsAddContactInfo extends IAddContactInfo {\r\n phone: string;\r\n phoneError: boolean;\r\n loading: boolean;\r\n onChangePhone(phone: string, country?: string): void;\r\n isPhoneRequired: any;\r\n country?: any;\r\n resources?: any;\r\n}\r\n\r\ninterface ILdsShowContactInfo extends IShowContactInfo {\r\n phone: string;\r\n resources?: any;\r\n}\r\n\r\nexport const ShowContactInfo: React.FC = ({ showInfoProps, email, editButton, phone }) => (\r\n \r\n
\r\n {email}\r\n {phone}\r\n
\r\n {editButton}\r\n
\r\n);\r\n\r\nexport const AddContactInfo: React.FC = props => {\r\n const {\r\n addFormProps,\r\n submitButton,\r\n // cancelButton,\r\n inputGroupProps,\r\n label,\r\n error,\r\n input,\r\n onChangePhone,\r\n phone,\r\n resources,\r\n isPhoneRequired,\r\n country,\r\n phoneError,\r\n loading\r\n } = props;\r\n const titleStyle: React.CSSProperties = {\r\n fontFamily: `\"Ensign:Sans\",Arial,\"noto sans\" ,sans-serif`,\r\n fontStyle: 'normal',\r\n fontWeight: 600,\r\n fontSize: '18px',\r\n lineHeight: '22px',\r\n paddingBottom: '8px'\r\n };\r\n const descriptionStyle: React.CSSProperties = {\r\n fontFamily: `\"Ensign:Sans\",Arial,\"noto sans\" ,sans-serif`,\r\n fontStyle: 'normal',\r\n fontWeight: 400,\r\n fontSize: '14px',\r\n lineHeight: '19px',\r\n paddingBottom: '8px'\r\n };\r\n\r\n return (\r\n \r\n
{resources.contactInformationHeader}
\r\n
{resources.contactInformationExplanation}
\r\n \r\n {/* {error} */}\r\n \r\n {/* @ts-ignore */}\r\n {error && error.props && error.props.children && (\r\n
\r\n {/* @ts-ignore */}\r\n {error.props.children}\r\n
\r\n )}\r\n input.props.onChange(e)}\r\n style={{\r\n border: '1px solid #878A8C',\r\n boxSizing: 'border-box',\r\n borderRadius: '2px',\r\n padding: '8px',\r\n width: '100%',\r\n maxWidth: 'none',\r\n marginBottom: '5px'\r\n }}\r\n // @ts-ignore\r\n value={input.props.value}\r\n type='text'\r\n />\r\n {/* {input} */}\r\n
\r\n \r\n \r\n {phoneError && (\r\n
\r\n {/* @ts-ignore */}\r\n {resources.phoneRequiredError}\r\n
\r\n )}\r\n
\r\n onChangePhone(e.target.value, country)}\r\n value={phone}\r\n />\r\n
\r\n
\r\n
\r\n
\r\n {submitButton && (\r\n submitButton.props.onClick()}\r\n disabled={loading}\r\n >\r\n {/* @ts-ignore */}\r\n {submitButton.props.title}\r\n \r\n )}\r\n
\r\n
\r\n {/* {submitButton}\r\n {cancelButton} */}\r\n
\r\n );\r\n};\r\n//Cancel Button\r\n// {/*
\r\n// {cancelButton && (\r\n// // @ts-ignore\r\n// cancelButton.props.onClick()}>\r\n// {/* @ts-ignore */}\r\n// {cancelButton.props.title}\r\n// \r\n// )}\r\n//
*/}\r\n\r\nconst CheckoutGuestProfileView: React.FC = props => {\r\n const [country, setCountry] = React.useState();\r\n const {\r\n moduleProps,\r\n checkoutErrorRef,\r\n alert,\r\n showContactInfo,\r\n addContactInfo,\r\n onChangePhone,\r\n phone,\r\n phoneError,\r\n resources,\r\n loading\r\n } = props;\r\n let isPhoneRequired = false;\r\n if (\r\n props.data.churchRetailChannelCountry &&\r\n props.data.churchRetailChannelCountry.result &&\r\n props.data.churchRetailChannelCountry.result[0] &&\r\n props.data.churchRetailChannelCountry.result[0].PHONENUMBERREQ > 0\r\n ) {\r\n const phoneNumberReq = props.data.churchRetailChannelCountry.result[0].PHONENUMBERREQ;\r\n isPhoneRequired = phoneNumberReq === 1;\r\n }\r\n React.useEffect(() => {\r\n if (\r\n props.data.checkout &&\r\n // @ts-ignore\r\n props.data.checkout.result.checkoutCart &&\r\n // @ts-ignore\r\n props.data.checkout.result.checkoutCart &&\r\n // @ts-ignore\r\n props.data.checkout.result.checkoutCart.cart &&\r\n // @ts-ignore\r\n props.data.checkout.result.checkoutCart.cart.ExtensionProperties\r\n ) {\r\n // @ts-ignore\r\n const userCountry = props.data.checkout.result.checkoutCart.cart.ExtensionProperties.filter((value: any) => {\r\n return value.Key === 'Country';\r\n });\r\n\r\n if (userCountry) {\r\n setCountry(userCountry[0].Value?.StringValue);\r\n }\r\n }\r\n }, []);\r\n\r\n return (\r\n \r\n {alert}\r\n {showContactInfo && }\r\n {addContactInfo && (\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default CheckoutGuestProfileView;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport CheckoutSectionContainer from './checkout-section-container';\nimport CheckoutSectionContainerView from './checkout-section-container.view';\n\nexport * from './checkout-section-container';\nexport { ICheckoutSectionContainerConfig, ICheckoutSectionContainerProps, width } from './checkout-section-container.props.autogenerated';\nexport * from './checkout-section-container.view';\nexport * from './components/loading';\n\nexport { CheckoutSectionContainer, CheckoutSectionContainerView };\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport CheckoutGiftCard from './checkout-gift-card';\nimport CheckoutGiftCardView from './checkout-gift-card.view';\n\nexport * from './checkout-gift-card';\nexport * from './checkout-gift-card.data';\nexport * from './checkout-gift-card.props.autogenerated';\nexport * from './checkout-gift-card.view';\nexport * from './components';\n\nexport { CheckoutGiftCard, CheckoutGiftCardView };\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nexport * from './checkout-terms-and-conditions.check-box';\nexport * from './checkout-terms-and-conditions.error-message';\nexport * from './checkout-terms-and-conditions.error-title';\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IActiveImageAdditionalContentViewProps } from '../active-image-utilities';\nimport { IActiveImageViewProps } from './active-image';\n\n/**\n * Render Additional Content.\n * @param additionalContent - Additional content view props.\n * @returns JSX Element.\n */\nconst renderAdditionalContent = (additionalContent: IActiveImageAdditionalContentViewProps) => {\n return (\n \n {additionalContent.heading}\n \n {additionalContent.text}\n {additionalContent.links}\n \n \n );\n};\n\n/**\n * Render View.\n * @param props - The view props.\n * @returns -The JSX Element.\n */\nexport const activeImageView: React.FC = props => {\n return (\n \n \n {props.imageMapper}\n \n {props.title}\n {props.text}\n {props.additionalContent && renderAdditionalContent(props.additionalContent)}\n \n {props.links}\n \n \n \n \n {props.overlay}\n {props.productCard}\n \n \n );\n};\n\nexport default activeImageView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface ICheckoutDeliveryOptionsErrorMessageProps {\n message?: string;\n}\n\n/**\n * AddPaymentForm SFC.\n * @param root0\n * @param root0.message\n * @extends {React.FC}\n */\nconst CheckoutDeliveryOptionsErrorMessage: React.FC = ({ message }) => {\n if (!message) {\n return null;\n }\n\n return

{message}

;\n};\n\nexport default CheckoutDeliveryOptionsErrorMessage;\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { ICheckoutPickupViewProps } from './lds-checkout-pickup-4';\r\nimport { ICheckoutPickupGroupViewProps } from './components/lds-checkout-pickup-4-group';\r\nimport { getTimeslot } from './components';\r\nimport styled from 'styled-components';\r\n\r\nconst CheckoutPickupView: React.FC = props => {\r\n const { checkoutPickup, checkoutErrorRef, viewState, headerError, waiting, pickupGroups } = props;\r\n const SectionHeader = styled.div`\r\n display: flex;\r\n font-family: Ensign:Sans;\r\n font-size: 18px;\r\n font-weight: bold;\r\n `;\r\n // color: #212225;\r\n\r\n return (\r\n \r\n {viewState.isLoading && waiting}\r\n {viewState.isHeaderError && headerError}\r\n {pickupGroups.map(\r\n (pickupGroupViewProps: ICheckoutPickupGroupViewProps, index: number): React.ReactElement => {\r\n const {\r\n pickupGroupContainer,\r\n dateTimeslotContainer,\r\n groupDivider,\r\n groupHeader,\r\n groupErrorMessage,\r\n // cartLineImages,\r\n pickupDateDropdown,\r\n pickupTimeslotDropdown,\r\n selectedDateTimeslot,\r\n pickupAddress\r\n } = pickupGroupViewProps;\r\n const options: any = {\r\n timeZone: 'UTC',\r\n dateStyle: 'full'\r\n };\r\n\r\n const dateFormateLocale = props.context.request.locale === 'en-US' ? 'en-GB' : props.context.request.locale;\r\n const formatter = new Intl.DateTimeFormat(dateFormateLocale, options);\r\n // return formatter.format(new Date(date));\r\n let selectedTimeSlot: any;\r\n if (\r\n pickupTimeslotDropdown &&\r\n // @ts-ignore\r\n pickupTimeslotDropdown.props &&\r\n // @ts-ignore\r\n pickupTimeslotDropdown.props.selectedTimeslot &&\r\n // @ts-ignore\r\n pickupTimeslotDropdown.props.selectedTimeslot.StartDateTime\r\n ) {\r\n selectedTimeSlot = getTimeslot(\r\n props.resources.pickupTimeslotPlaceHolder,\r\n // @ts-ignore\r\n pickupTimeslotDropdown.props.selectedTimeslot.StartDateTime || '',\r\n // @ts-ignore\r\n pickupTimeslotDropdown.props.selectedTimeslot.EndDateTime || '',\r\n props.context.request.locale\r\n );\r\n }\r\n\r\n return (\r\n \r\n {groupDivider}\r\n {/* @ts-ignore */}\r\n {groupHeader.props.storeInfo}\r\n {/* {groupHeader} */}\r\n {groupErrorMessage}\r\n {/* {cartLineImages} */}\r\n {viewState.isShowDropdown && (\r\n \r\n {pickupDateDropdown}\r\n {pickupTimeslotDropdown}\r\n \r\n )}\r\n {viewState.isShowSelected && pickupAddress}\r\n {/* {viewState.isShowSelected && selectedDateTimeslot} */}\r\n {/*
{moment(pickupTimeslotStartDateTime).format('dddd, D MMMM YYYY')}
*/}\r\n {viewState.isShowSelected &&\r\n pickupTimeslotDropdown &&\r\n // @ts-ignore\r\n pickupTimeslotDropdown.props &&\r\n // @ts-ignore\r\n pickupTimeslotDropdown.props.selectedTimeslot &&\r\n // @ts-ignore\r\n pickupTimeslotDropdown.props.selectedTimeslot.StartDateTime &&\r\n // @ts-ignore\r\n pickupTimeslotDropdown.props.selectedTimeslot.EndDateTime && (\r\n
\r\n {/* @ts-ignore */}\r\n \r\n {/* @ts-ignore */}\r\n {selectedDateTimeslot.props.title}\r\n \r\n \r\n {/* @ts-ignore */}\r\n {formatter.format(new Date(pickupTimeslotDropdown.props.selectedTimeslot.StartDateTime))}\r\n \r\n \r\n {selectedTimeSlot || ''}\r\n \r\n {/* @ts-ignore */}\r\n {/* {moment(pickupTimeslotDropdown.props.selectedTimeslot.StartDateTime).format('LT')} -{' '} */}\r\n {/* @ts-ignore */}\r\n {/* {moment(pickupTimeslotDropdown.props.selectedTimeslot.EndDateTime).format('LT')} */}\r\n
\r\n )}\r\n
\r\n );\r\n }\r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default CheckoutPickupView;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface ICheckoutTermsAndConditionsErrorMessageProps {\n message?: string;\n}\n\n/**\n * AddPaymentForm SFC.\n * @param root0\n * @param root0.message\n * @extends {React.FC}\n */\nconst CheckoutTermsAndConditionsErrorMessage: React.FC = ({ message }) => {\n if (!message) {\n return null;\n }\n\n return

{message}

;\n};\n\nexport default CheckoutTermsAndConditionsErrorMessage;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport CheckoutGuestProfile from './checkout-guest-profile';\nimport CheckoutGuestProfileView from './checkout-guest-profile.view';\n\nexport * from './checkout-guest-profile';\nexport * from './checkout-guest-profile.data';\nexport {\n ICheckoutGuestProfileConfig,\n ICheckoutGuestProfileProps,\n ICheckoutGuestProfileResources\n} from './checkout-guest-profile.props.autogenerated';\nexport * from './checkout-guest-profile.view';\nexport * from './components';\n\nexport { CheckoutGuestProfile, CheckoutGuestProfileView };\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Button, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nexport interface IAddContactInfoInput {\n inputRef?: React.RefObject;\n hasError: boolean;\n email: string;\n resources: {\n emailLabel: string;\n emailErrortext: string;\n saveBtnLabel: string;\n cancelBtnLabel: string;\n };\n canSubmit: boolean;\n canCancel: boolean;\n onChange(email: string): void;\n onSubmit(): void;\n onCancel(): void;\n}\n\nexport interface IAddContactInfo {\n addFormProps: INodeProps;\n submitButton: React.ReactNode;\n cancelButton: React.ReactNode;\n inputGroupProps: INodeProps;\n label: React.ReactNode;\n error: React.ReactNode;\n input: React.ReactNode;\n}\n\n/**\n * On Input change handler function.\n * @param onChange -On change input function.\n * @returns Call of onChange function.\n */\nconst onInputChangeHandler = (onChange: (email: string) => void) => (event: React.ChangeEvent): void => {\n onChange(event.target.value || '');\n};\n\nconst getAddContactInfo = ({\n hasError,\n inputRef,\n email,\n canSubmit,\n canCancel,\n onChange,\n onSubmit,\n onCancel,\n resources: { emailLabel, emailErrortext, saveBtnLabel, cancelBtnLabel }\n}: IAddContactInfoInput): IAddContactInfo => {\n const onInputChange = onInputChangeHandler(onChange);\n\n return {\n addFormProps: { className: 'ms-checkout-guest-profile__add-contact-info' },\n submitButton: canSubmit && (\n \n ),\n cancelButton: canCancel && (\n \n ),\n inputGroupProps: { className: classnames('ms-checkout-guest-profile__input', { 'is-invalid': hasError }) },\n label: (\n \n ),\n error: hasError && (\n \n {emailErrortext}\n \n ),\n input: (\n \n )\n };\n};\n\nexport default getAddContactInfo;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IModule } from '@msdyn365-commerce/core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport isMatch from 'lodash/isMatch';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { getModuleStates, updateModuleStates } from './module-state';\nimport { IModuleState, IModuleStateManager, IModuleStateProps, IModuleStates } from './module-state.data';\n\nexport interface IProps extends IModule, IModuleStateProps {\n enableControl?: boolean;\n}\n\nconst sectionContainerModuleId = 'section-container';\nconst paymentInstrumentModuleId = 'payment-instrument';\n\nconst withModuleState =

(WrappedComponent: React.ComponentType

): React.ComponentType

=> {\n /**\n *\n * ModuleState component.\n * @extends {React.Component

}\n */\n @observer\n class ModuleState extends React.Component

{\n constructor(props: P) {\n super(props);\n this.initializeState();\n }\n\n public shouldComponentUpdate(nextProps: IModuleStateProps): boolean {\n if (this.props === nextProps) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const { id } = this.props;\n return ;\n }\n\n private readonly initializeState = (): void => {\n const { id, typeName, context } = this.props;\n const states = getModuleStates(context.actionContext);\n if (!states) {\n this.props.telemetry.error('withModuleState initializeState() - states not found');\n return;\n }\n\n if (states[id]) {\n // State has been initialized\n return;\n }\n\n updateModuleStates(\n {\n ...states,\n [id]: {\n id,\n typeName,\n hasInitialized: false,\n hasError: false,\n isRequired: true,\n isCancellable: true,\n isSubmitContainer: false,\n status: undefined,\n childIds: []\n }\n },\n context.actionContext\n );\n };\n\n /**\n * GetModuleStateManager\n * Get module state manager by id.\n * @param id\n */\n private readonly getModuleStateManager = (id: string): IModuleStateManager => {\n const moduleState = this.get()[id];\n return {\n ...moduleState!,\n hasInitialized: this.validate(id, { hasInitialized: true }, true), // All has initialized is initialized\n hasError: this.validate(id, { hasError: true }), // Partial has error is error\n isReady: this.validate(id, { status: 'ready' }, true, true), // All ready is ready (exclued disabled and skipped)\n isUpdating: this.validate(id, { status: 'updating' }), // Partial updating is updating\n isPending: this.validate(id, { status: 'pending' }), // Partial pending is pending\n isSkipped: this.validate(id, { status: 'skipped' }, true, true), // All skipped is skipped (exclued disabled)\n isDisabled: this.validate(id, { status: 'disabled' }, true), // All disabled is disabled\n isCancelAllowed: this.validate(id, { isCancellable: true }, true, true), // Partial not allowed is not allowed\n shouldSubmitContainer: this.validate(id, { isSubmitContainer: true }), // Partial submit is submit.\n hasExternalSubmitGroup: this.hasExternalSubmitGroup(),\n hasModuleState: this.hasModuleState(id),\n setIsRequired: (value: boolean): void => {\n this.update(id, { isRequired: value });\n },\n setIsCancellable: (value: boolean): void => {\n this.update(id, { isCancellable: value });\n },\n setIsSubmitContainer: (value: boolean): void => {\n this.update(id, { isSubmitContainer: value });\n },\n setHasError: (value: boolean): void => {\n this.update(id, { hasError: value });\n },\n onReady: (): void => {\n this.update(id, { status: 'ready' });\n },\n onUpdating: (): void => {\n this.update(id, { status: 'updating' });\n },\n onPending: (): void => {\n this.update(id, { status: 'pending' });\n },\n onSkip: (): void => {\n this.update(id, { status: 'skipped' });\n },\n onDisable: (): void => {\n this.update(id, { status: 'disabled' });\n },\n getModule: (moduleId: string): IModuleStateManager => this.getModuleStateManager(moduleId),\n getModuleByTypeName: (typeName: string): IModuleStateManager => this.getModuleStateManagerByTypeName(typeName),\n init: (options?: Partial): void => {\n if (moduleState?.hasInitialized) {\n // State has been initialized\n return;\n }\n this.update(id, {\n hasInitialized: true,\n ...options\n });\n }\n };\n };\n\n /**\n * GetModuleStateManagerByTypeName\n * Get module state manager by type name.\n * @param typeName\n */\n private readonly getModuleStateManagerByTypeName = (typeName: string): IModuleStateManager => {\n const moduleStates = getModuleStates(this.props.context.actionContext);\n const moduleState = Object.values(moduleStates).find(_moduleState => _moduleState?.typeName === typeName);\n return this.getModuleStateManager((moduleState && moduleState.id) || '');\n };\n\n /**\n * Get\n * Get all module states.\n */\n private readonly get = (): IModuleStates => {\n return getModuleStates(this.props.context.actionContext);\n };\n\n /**\n * Update\n * Update module state.\n * @param id\n * @param value\n */\n private readonly update = (id: string, value: Partial): void => {\n // Console.log('withModuleState - update', id, value);\n const modules = this.get();\n if (!modules[id]) {\n this.props.telemetry.error(`withModuleState update() - Module state with id ${id} is not found.`);\n return;\n }\n modules[id] = {\n ...modules[id]!,\n ...value\n };\n };\n\n private readonly _validateLeaf = (id: string, source: Partial): boolean => {\n const modules = this.get();\n const module = modules[id];\n if (!module) {\n return false;\n }\n return isMatch(module, source);\n };\n\n private readonly _validateContainer = (\n id: string,\n source: Partial,\n allMatched?: boolean,\n skipSkippableItem?: boolean\n ): boolean => {\n const modules = this.get();\n const module = modules[id];\n if (!module) {\n // Module doesn't has module state\n return !!allMatched;\n }\n\n if (skipSkippableItem && (module.status === 'disabled' || module.status === 'skipped')) {\n // Skip disabled or skipped modules\n return !!allMatched;\n }\n\n // It is leaf module\n if (!module.childIds || module.childIds.length === 0) {\n return this._validateLeaf(id, source);\n }\n\n let childIds = module.childIds;\n\n if (this.props.context.app.config.shouldEnableSinglePaymentAuthorizationCheckout) {\n // For new checkout flow, we bypass the isReady check for payment section container to enable the place order button.\n childIds = childIds.filter(childId => !this._isPaymentSectionContainer(childId));\n }\n\n // It is container module\n const method = allMatched ? 'every' : 'some';\n return childIds[method](childId => this._validateContainer(childId, source, allMatched, skipSkippableItem));\n };\n\n /**\n * Check if it is a section container with payment module.\n * @param moduleId -- The id of the module.\n * @returns If it is a section container with payment module.\n */\n private readonly _isPaymentSectionContainer = (moduleId: string): boolean => {\n if (!moduleId.includes(sectionContainerModuleId)) {\n return false;\n }\n\n const modules = this.get();\n const module = modules[moduleId];\n\n if (module && ArrayExtensions.hasElements(module.childIds.filter(childId => childId.includes(paymentInstrumentModuleId)))) {\n return true;\n }\n\n return false;\n };\n\n /**\n * Validate\n * Validate current module and all its child module match the provided condition.\n * @param id\n * @param source\n * @param allMatched\n * @param skipSkippableItem\n */\n private readonly validate = (\n id: string,\n source: Partial,\n allMatched?: boolean,\n skipSkippableItem?: boolean\n ): boolean => {\n const modules = this.get();\n const module = modules[id];\n if (!module) {\n return false;\n }\n\n // It is leaf module\n if (!module.childIds || module.childIds.length === 0) {\n return this._validateLeaf(id, source);\n }\n\n // It is container module\n return this._validateContainer(id, source, allMatched, skipSkippableItem);\n };\n\n /**\n * HasExternalSubmitGroup\n * Module will use external submit group.\n */\n private readonly hasExternalSubmitGroup = (): boolean => {\n return !!this.props.enableControl;\n };\n\n /**\n * HasModuleState\n * Module is using module state manager.\n * @param id\n */\n private readonly hasModuleState = (id: string): boolean => {\n const modules = this.get();\n const module = modules[id];\n return !!module;\n };\n }\n\n return ModuleState;\n};\n\nexport default withModuleState;\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { Customer } from '@msdyn365-commerce/retail-proxy';\r\nimport { Alert, Button, INodeProps, NodeTag, getLocaleBasedCustomizedPrice, ILocalizedPrice } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { ILdsCheckoutCustomerAccountPayment4Resources } from '../lds-checkout-customer-account-payment-4.props.autogenerated';\r\n\r\nexport interface IGetAccountPaymentEditViewFormInput {\r\n resources: ILdsCheckoutCustomerAccountPayment4Resources;\r\n customizedAmt: string;\r\n amount: number;\r\n amountVariable: string;\r\n maxAmount: number;\r\n customer: Customer | undefined;\r\n customerCreatedDate: string;\r\n availableCredit: string;\r\n showCreditLimit: boolean;\r\n errorMessage: string | undefined;\r\n creditSectionIsExpanded: boolean;\r\n orderTotal: string;\r\n excessCredit: string | undefined;\r\n appliedAmount: string | undefined;\r\n locale: string;\r\n onAddPayment(): Promise;\r\n onChangePaymentAmount(customizedAmt: string, paymentAmount: number, amountVariable: string): void;\r\n onToggleCreditSection(): void;\r\n onRemovePayment(): Promise;\r\n}\r\n\r\nexport interface IAccountPaymentEditViewForm {\r\n formProps: INodeProps;\r\n inputLabel: React.ReactNode;\r\n inputAmount: React.ReactNode;\r\n addPaymentButton: React.ReactNode;\r\n customerName: React.ReactNode;\r\n customerAccountNumber: React.ReactNode;\r\n customerSince: React.ReactNode;\r\n accountCredit: React.ReactNode;\r\n alert: React.ReactNode;\r\n accountDetails: React.ReactNode;\r\n appliedLine: React.ReactNode;\r\n bottomBorder: React.ReactNode;\r\n}\r\n\r\n/**\r\n * On Add Account Payment Function.\r\n * @param onAddPayment -On Add Payment Function.\r\n * @returns Call of Add payment function.\r\n */\r\nconst onAddAccountPayment = (onAddPayment: () => Promise) => async (event: React.SyntheticEvent): Promise => {\r\n event.preventDefault();\r\n await onAddPayment();\r\n};\r\n\r\n/**\r\n * On Change Amount Function.\r\n * @param onChangePaymentAmount -On Change Payment Amount Function.\r\n * @returns Call of Change payment Amount function.\r\n */\r\nconst onChangeAmountHandler = (\r\n customizedAmt: string,\r\n paymentAmount: number,\r\n amountVariable: string,\r\n locale: string,\r\n onChangePaymentAmount: (customizedAmt: string, paymentAmount: number, amountVariable: string) => void\r\n) => (event: React.ChangeEvent) => {\r\n const value = event.target.value;\r\n const customState: ILocalizedPrice = {\r\n customizedAmount: customizedAmt,\r\n amountVariable: amountVariable,\r\n paymentAmount: paymentAmount\r\n };\r\n const returnModifiedState = getLocaleBasedCustomizedPrice(value, customState, locale, keyCode);\r\n customizedAmt = returnModifiedState.customizedAmount as string;\r\n paymentAmount = returnModifiedState.paymentAmount as number;\r\n amountVariable = returnModifiedState.amountVariable as string;\r\n onChangePaymentAmount(customizedAmt, paymentAmount, amountVariable);\r\n keyCode = 0;\r\n};\r\n\r\nlet keyCode: number = 0;\r\nexport const getAccountPaymentFormEditMode = (options: IGetAccountPaymentEditViewFormInput): IAccountPaymentEditViewForm => {\r\n const {\r\n resources,\r\n onAddPayment,\r\n amount,\r\n customizedAmt,\r\n amountVariable,\r\n onChangePaymentAmount,\r\n maxAmount,\r\n customer,\r\n customerCreatedDate,\r\n availableCredit,\r\n showCreditLimit,\r\n errorMessage,\r\n onToggleCreditSection,\r\n creditSectionIsExpanded,\r\n orderTotal,\r\n excessCredit,\r\n onRemovePayment,\r\n appliedAmount,\r\n locale\r\n } = options;\r\n\r\n const {\r\n addPaymentButtonLabel,\r\n inputAmountLabel,\r\n inputAmountAriaLabel,\r\n customerSinceLabel,\r\n accountCreditLabel,\r\n creditDetailsSectionLabel,\r\n orderTotalLabel,\r\n availableCreditLabel,\r\n creditExcessLabel,\r\n appliedCustomerAccountPaymentLabel,\r\n removeCustomerAccountPaymentLabel,\r\n accountCreditDetails\r\n } = resources;\r\n\r\n const inputLabel = (\r\n \r\n {inputAmountLabel}\r\n \r\n );\r\n\r\n const formProps = {\r\n className: 'ms-checkout-customer-account__form-edit',\r\n onSubmit: onAddAccountPayment(onAddPayment),\r\n tag: 'form' as NodeTag\r\n };\r\n\r\n const addPaymentButton = (\r\n maxAmount || amount <= 0 || Number.isNaN(amount)}\r\n >\r\n {addPaymentButtonLabel}\r\n \r\n );\r\n\r\n const inputAmount = (\r\n (keyCode = event.which)}\r\n aria-label={inputAmountAriaLabel}\r\n aria-valuemin={0}\r\n aria-valuemax={maxAmount}\r\n aria-valuenow={amount}\r\n min={0}\r\n max={maxAmount}\r\n />\r\n );\r\n\r\n const customerName =

{customer?.Name}
;\r\n\r\n const customerAccountNumber =
#{customer?.AccountNumber}
;\r\n\r\n const customerSince = (\r\n
\r\n {customerSinceLabel}\r\n {customerCreatedDate}\r\n
\r\n );\r\n\r\n const accountCredit = (\r\n <>\r\n {accountCreditLabel}\r\n {showCreditLimit && {availableCredit}}\r\n \r\n \r\n );\r\n\r\n const accountDetails = creditSectionIsExpanded ? (\r\n
\r\n <>\r\n
\r\n \r\n \r\n {creditDetailsSectionLabel}\r\n \r\n
\r\n \r\n
\r\n {availableCreditLabel}\r\n {availableCredit}\r\n
\r\n
\r\n {orderTotalLabel}\r\n {orderTotal}\r\n
\r\n
\r\n {creditExcessLabel}\r\n {excessCredit ?? '0'}\r\n
\r\n
\r\n ) : (\r\n undefined\r\n );\r\n\r\n const alert = (\r\n \r\n {errorMessage}\r\n \r\n );\r\n\r\n const appliedLine = appliedAmount ? (\r\n
\r\n {appliedCustomerAccountPaymentLabel}\r\n {appliedAmount}\r\n \r\n {removeCustomerAccountPaymentLabel}\r\n \r\n
\r\n ) : (\r\n undefined\r\n );\r\n\r\n const bottomBorder =
;\r\n\r\n return {\r\n formProps,\r\n inputLabel,\r\n inputAmount,\r\n addPaymentButton,\r\n customerName,\r\n customerAccountNumber,\r\n customerSince,\r\n accountCredit,\r\n alert,\r\n accountDetails,\r\n appliedLine,\r\n bottomBorder\r\n };\r\n};\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { Button, INodeProps, NodeTag } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { ILdsCheckoutCustomerAccountPayment4Resources } from '../lds-checkout-customer-account-payment-4.props.autogenerated';\r\n\r\nexport interface IGetAccountPaymentSummaryViewFormInput {\r\n resources: ILdsCheckoutCustomerAccountPayment4Resources;\r\n amount: number;\r\n appliedAmount: string | undefined;\r\n}\r\n\r\nexport interface IAccountPaymentSummaryViewForm {\r\n formProps: INodeProps;\r\n label: React.ReactNode;\r\n paymentAmount: React.ReactNode;\r\n addPaymentButton: React.ReactNode;\r\n appliedLine: React.ReactNode;\r\n bottomBorder: React.ReactNode;\r\n alert?: React.ReactNode;\r\n paymentAmountInput?: React.ReactNode;\r\n}\r\n\r\nexport const getAccountPaymentFormSummaryMode = (options: IGetAccountPaymentSummaryViewFormInput): IAccountPaymentSummaryViewForm => {\r\n const { resources, amount, appliedAmount } = options;\r\n\r\n const { addPaymentButtonLabel, inputAmountSummaryLabel, appliedCustomerAccountPaymentLabel, inputAmountAriaLabel } = resources;\r\n\r\n const label = (\r\n \r\n );\r\n\r\n const formProps = {\r\n className: 'ms-checkout-customer-account__form-summary',\r\n tag: 'form' as NodeTag\r\n };\r\n\r\n const paymentAmount = ;\r\n\r\n const paymentAmountInput = (\r\n \r\n );\r\n\r\n const addPaymentButton = (\r\n \r\n );\r\n\r\n const appliedLine = appliedAmount ? (\r\n
\r\n {appliedCustomerAccountPaymentLabel}\r\n {appliedAmount}\r\n
\r\n ) : (\r\n undefined\r\n );\r\n\r\n const bottomBorder =
;\r\n\r\n return {\r\n formProps,\r\n label,\r\n paymentAmount,\r\n addPaymentButton,\r\n appliedLine,\r\n bottomBorder,\r\n paymentAmountInput\r\n };\r\n};\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { CustomerBalances } from '@msdyn365-commerce/retail-proxy';\r\nimport { IModuleStateManager, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\r\nimport { IModuleProps } from '@msdyn365-commerce-modules/utilities';\r\nimport { CheckoutModule, ErrorLocation } from '@msdyn365-commerce/global-state';\r\nimport classnames from 'classnames';\r\nimport get from 'lodash/get';\r\nimport { action, computed, reaction, when } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\nimport { AttributeValueBase } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\n\r\nimport { ILdsCheckoutCustomerAccountPayment4Data } from './lds-checkout-customer-account-payment-4.data';\r\nimport { ILdsCheckoutCustomerAccountPayment4Props } from './lds-checkout-customer-account-payment-4.props.autogenerated';\r\nimport { getAccountPaymentFormEditMode, IAccountPaymentEditViewForm } from './components/get-account-payment-form-edit-mode';\r\nimport { getAccountPaymentFormSummaryMode, IAccountPaymentSummaryViewForm } from './components/get-account-payment-form-summary-mode';\r\nimport { ErrorComponent } from '@msdyn365-commerce-modules/checkout';\r\nimport { focusOnCheckoutError } from '@msdyn365-commerce-modules/checkout';\r\n\r\nexport interface ICheckoutCustomerAccountPaymentViewProps\r\n extends ILdsCheckoutCustomerAccountPayment4Props {\r\n checkoutCustomerAccount: IModuleProps;\r\n summaryView: IAccountPaymentSummaryViewForm;\r\n editView: IAccountPaymentEditViewForm;\r\n moduleState: IModuleStateManager;\r\n alert?: React.ReactNode;\r\n checkoutErrorRef?: React.RefObject;\r\n updatePaymentAttributes?: any;\r\n}\r\n\r\nexport interface ICheckoutCustomerAccountPaymentState {\r\n paymentAmount: number;\r\n isCreditSectionExpanded: boolean;\r\n customizedAmt: string;\r\n amountVariable: string;\r\n errorMessage?: string;\r\n handleSaveAndContinue?: boolean;\r\n}\r\n\r\n/**\r\n *\r\n * CheckoutCustomerAccount component.\r\n * @extends {React.Component>}\r\n */\r\n// @ts-expect-error\r\n@withModuleState\r\n@observer\r\nexport class CheckoutCustomerAccountPayment extends React.Component<\r\n ICheckoutCustomerAccountPaymentViewProps,\r\n ICheckoutCustomerAccountPaymentState\r\n> {\r\n private readonly defaultLocale: string = 'en-us';\r\n @computed get isCustomerAccountPaymentEnabled(): boolean {\r\n const customerInfo = get(this.props, 'data.customerInformation.result');\r\n const platform = get(this.props, 'context.request.app.platform');\r\n\r\n return (\r\n customerInfo &&\r\n customerInfo.AllowOnAccountPayment === true &&\r\n platform &&\r\n (platform.enableCustomerAccountPayment === 'all' ||\r\n (platform.enableCustomerAccountPayment === 'b2b' && customerInfo.IsB2b === true) ||\r\n (platform.enableCustomerAccountPayment === 'b2c' && customerInfo.IsB2b === false))\r\n );\r\n }\r\n\r\n @computed get getLoyaltyAmount(): number {\r\n const checkoutState = this.props.data.checkout.result;\r\n if (!checkoutState || !checkoutState.loyaltyAmount) {\r\n return 0;\r\n }\r\n return checkoutState.loyaltyAmount;\r\n }\r\n\r\n @computed get maxPaymentAmount(): number {\r\n const cart = this.props.data.checkout.result ? this.props.data.checkout.result.checkoutCart.cart : undefined;\r\n if (!cart) {\r\n return 0;\r\n }\r\n\r\n // Use customer account after loyalty.\r\n const amountDue = Math.max(0, (cart.TotalAmount || 0) - this.getLoyaltyAmount);\r\n\r\n // If the user has a mandatory credit limit, then the max amount must not be more than that\r\n if (this.props.data.customerInformation?.result?.MandatoryCreditLimit) {\r\n return Math.min(this.getAvailableCredit(this.props.data.creditBalances?.result), amountDue);\r\n }\r\n return amountDue;\r\n }\r\n\r\n @computed get errorMessage(): string | undefined {\r\n if (this.state.paymentAmount > this.maxPaymentAmount) {\r\n return this.props.resources.invalidAmountExceedAmountDueMessage;\r\n }\r\n\r\n if (this.state.paymentAmount < 0) {\r\n return this.props.resources.invalidAmountNegativeMessage;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n @computed get currencyCode(): string | undefined {\r\n return get(this.props, 'context.request.channel.Currency');\r\n }\r\n\r\n @computed get availableCredit(): number {\r\n const creditBalances = get(this.props, 'data.creditBalances.result');\r\n\r\n return creditBalances ? this.getAvailableCredit(creditBalances) : 0;\r\n }\r\n\r\n @computed get orderTotal(): number {\r\n const orderTotal = get(this.props, 'data.checkout.result.checkoutCart.cart.TotalAmount');\r\n\r\n return orderTotal ? orderTotal : 0;\r\n }\r\n\r\n @computed get formattedExcessCredit(): string | undefined {\r\n const excessCredit = this.availableCredit - this.orderTotal;\r\n return excessCredit < 0 ? this.props.context.cultureFormatter.formatCurrency(excessCredit, this.currencyCode) : undefined;\r\n }\r\n\r\n @computed get isDataReady(): boolean {\r\n return (this.props.data.checkout.result && this.props.data.checkout.status) === 'SUCCESS';\r\n }\r\n\r\n private readonly baseClassName: string = 'ms-checkout-customer-account';\r\n\r\n private readonly checkoutErrorRef: React.RefObject = React.createRef();\r\n\r\n public constructor(props: ICheckoutCustomerAccountPaymentViewProps) {\r\n super(props);\r\n const locale = get(this.props, 'context.request.locale') || this.defaultLocale;\r\n this.state = {\r\n paymentAmount: this.maxPaymentAmount,\r\n isCreditSectionExpanded: false,\r\n customizedAmt: new Intl.NumberFormat(locale).format(this.maxPaymentAmount),\r\n amountVariable: this.maxPaymentAmount.toString(),\r\n handleSaveAndContinue: false\r\n };\r\n }\r\n\r\n public async componentDidMount(): Promise {\r\n when(\r\n () => this.isDataReady,\r\n async () => {\r\n await this.init();\r\n }\r\n );\r\n\r\n // When the cart.TotalAmount gets updated (like if selecting the delivery option adds a charge) we need to update the amount based on the new total amount.\r\n reaction(\r\n () =>\r\n this.props.data.checkout.result &&\r\n this.props.data.checkout.result.checkoutCart.cart &&\r\n this.props.data.checkout.result.checkoutCart.cart.TotalAmount,\r\n totalAmount => {\r\n this.updateMaxAmount(this.maxPaymentAmount);\r\n }\r\n );\r\n\r\n if (this.props.data.checkout.result?.shouldEnableCheckoutErrorDisplayMessaging) {\r\n reaction(\r\n () => this.props.data.checkout.result?.checkoutError,\r\n checkoutError => {\r\n if (\r\n checkoutError &&\r\n checkoutError.errorLocation === ErrorLocation.CheckoutCustomerAccountPayment &&\r\n checkoutError.errorMessage\r\n ) {\r\n this._setErrorMessage(checkoutError.errorMessage);\r\n }\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.props.data.checkout.result?.checkoutErrorFocus,\r\n checkoutErrorFocus => {\r\n if (checkoutErrorFocus === CheckoutModule.CheckoutCustomerAccountPayment) {\r\n void focusOnCheckoutError(this.checkoutErrorRef, this.props.context.actionContext);\r\n }\r\n }\r\n );\r\n }\r\n }\r\n\r\n public shouldComponentUpdate(\r\n nextProps: ILdsCheckoutCustomerAccountPayment4Props,\r\n nextState: ICheckoutCustomerAccountPaymentState\r\n ): boolean {\r\n if (this.state === nextState && this.props.data === nextProps.data) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const customerInfo = this.props.data.customerInformation?.result;\r\n\r\n if (!this.isCustomerAccountPaymentEnabled) {\r\n this.props.context.telemetry.information(\r\n 'customer account payments will not display, because the feature is disabled or not enabled for this type of customer'\r\n );\r\n return null;\r\n }\r\n\r\n const checkoutState = this.props.data.checkout.result;\r\n const cart = checkoutState ? checkoutState.checkoutCart.cart : undefined;\r\n const hasInvoiceLine = checkoutState?.checkoutCart.hasInvoiceLine;\r\n const creditBalances = this.props.data.creditBalances.result;\r\n\r\n if (!cart || hasInvoiceLine) {\r\n return null;\r\n }\r\n const resources = this.props.resources;\r\n const locale = get(this.props, 'context.request.locale') || this.defaultLocale;\r\n\r\n const customerSinceDate = new Date(customerInfo?.CreatedDateTime || 0).toLocaleDateString(locale);\r\n\r\n const hasError = this.props.moduleState.hasError;\r\n const errorMessage = this.state.errorMessage;\r\n\r\n const props = {\r\n ...this.props,\r\n updatePaymentAttributes: this.updatePaymentAttributes,\r\n checkoutErrorRef: this.checkoutErrorRef,\r\n checkoutCustomerAccount: {\r\n moduleProps: this.props,\r\n className: classnames(this.baseClassName)\r\n },\r\n alert: hasError && errorMessage && (\r\n \r\n ),\r\n editView: getAccountPaymentFormEditMode({\r\n onAddPayment: this.addPayment,\r\n resources,\r\n customizedAmt: this.state.customizedAmt,\r\n amountVariable: this.state.amountVariable,\r\n amount: this.state.paymentAmount,\r\n onChangePaymentAmount: this.onChangePaymentAmount,\r\n maxAmount: this.maxPaymentAmount,\r\n customer: customerInfo,\r\n customerCreatedDate: customerSinceDate,\r\n availableCredit: this.props.context.cultureFormatter.formatCurrency(\r\n this.getAvailableCredit(creditBalances),\r\n this.currencyCode\r\n ),\r\n showCreditLimit: customerInfo?.MandatoryCreditLimit || false,\r\n errorMessage: this.errorMessage,\r\n onToggleCreditSection: this.toggleCreditSection,\r\n creditSectionIsExpanded: this.state.isCreditSectionExpanded,\r\n orderTotal: this.props.context.cultureFormatter.formatCurrency(this.orderTotal, this.currencyCode),\r\n excessCredit: this.formattedExcessCredit,\r\n onRemovePayment: this.removePayment,\r\n appliedAmount:\r\n checkoutState && checkoutState.customerAccountAmount > 0\r\n ? this.props.context.cultureFormatter.formatCurrency(checkoutState.customerAccountAmount, this.currencyCode)\r\n : undefined,\r\n locale:\r\n this.props.context && this.props.context.request && this.props.context.request.locale\r\n ? this.props.context.request.locale\r\n : this.defaultLocale\r\n }),\r\n summaryView: getAccountPaymentFormSummaryMode({\r\n resources,\r\n amount: this.state.paymentAmount,\r\n appliedAmount:\r\n checkoutState && checkoutState.customerAccountAmount > 0\r\n ? this.props.context.cultureFormatter.formatCurrency(checkoutState.customerAccountAmount, this.currencyCode)\r\n : undefined\r\n })\r\n };\r\n\r\n return this.props.renderView(props) as React.ReactElement;\r\n }\r\n\r\n private readonly getAvailableCredit = (creditBalances: CustomerBalances | undefined) => {\r\n let availableCredit = 0;\r\n\r\n if (!creditBalances) {\r\n return 0;\r\n }\r\n\r\n if (creditBalances.InvoiceAccountCreditLimit === 0) {\r\n availableCredit = creditBalances.CreditLimit - creditBalances.Balance - creditBalances.PendingBalance;\r\n } else {\r\n availableCredit =\r\n creditBalances.InvoiceAccountCreditLimit -\r\n creditBalances.InvoiceAccountBalance -\r\n creditBalances.InvoiceAccountPendingBalance;\r\n }\r\n\r\n return availableCredit;\r\n };\r\n\r\n private readonly addPayment = async (): Promise => {\r\n const checkoutState = this.props.data.checkout.result;\r\n\r\n if (!checkoutState) {\r\n this.props.context.telemetry.error('checkout state not found');\r\n return;\r\n }\r\n\r\n this.setState({ handleSaveAndContinue: true });\r\n this._clearError();\r\n await checkoutState.updateCustomerAccountAmount({ newAmount: this.state.paymentAmount });\r\n this.props.context.telemetry.information('customer account payment amount updated');\r\n };\r\n\r\n private updateCartAttributes = async (attributes: AttributeValueBase[]) => {\r\n const checkout = await this.props.data.checkout;\r\n const currentAttributeValues = checkout?.checkoutCart.attributeValues || [];\r\n const newAttributeValues = [...currentAttributeValues];\r\n const addedAttributes = newAttributeValues.concat(attributes);\r\n\r\n // attributes.forEach(x => {\r\n // const matchIndex = newAttributeValues.findIndex(attr => attr.Name === x.Name);\r\n // if (matchIndex > -1) {\r\n // // eslint-disable-next-line security/detect-object-injection\r\n // newAttributeValues[matchIndex] = x;\r\n // } else {\r\n // newAttributeValues.push(x);\r\n // }\r\n // });\r\n\r\n return checkout?.checkoutCart.updateAttributeValues({\r\n newAttributeValues: addedAttributes\r\n });\r\n };\r\n\r\n private updatePaymentAttributes = async (idType: string, taxId: string) => {\r\n const taxIdAttribute: AttributeValueBase = {\r\n // @ts-expect-error -- Need to provide data type.\r\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.AttributeTextValue',\r\n Name: 'IDENTIFICATIONTYPE',\r\n TextValue: idType,\r\n TextValueTranslations: [],\r\n ExtensionProperties: []\r\n };\r\n const taxNumAttribute: AttributeValueBase = {\r\n // @ts-expect-error -- Need to provide data type.\r\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.AttributeTextValue',\r\n Name: 'IDENTIFICATIONNUMBER',\r\n TextValue: taxId,\r\n TextValueTranslations: [],\r\n ExtensionProperties: []\r\n };\r\n const newAttributeValues: any = [taxIdAttribute, taxNumAttribute];\r\n\r\n return this.updateCartAttributes(newAttributeValues);\r\n };\r\n\r\n private readonly toggleCreditSection = (): void => {\r\n this.setState({\r\n isCreditSectionExpanded: !this.state.isCreditSectionExpanded\r\n });\r\n };\r\n\r\n private readonly init = async (): Promise => {\r\n this.props.moduleState.init({\r\n onCancel: this.handleCancelOrSubmit,\r\n onSubmit: this.handleCancelOrSubmit,\r\n onEdit: this.onEdit\r\n });\r\n\r\n if (this.props.data.checkout.result && this.props.data.checkout.result.customerAccountAmount !== 0) {\r\n this.props.moduleState.onReady();\r\n }\r\n };\r\n\r\n private readonly onChangePaymentAmount = (customizedAmt: string, paymentAmount: number, amountVariable: string): void => {\r\n this.setState({\r\n customizedAmt: customizedAmt,\r\n paymentAmount: paymentAmount,\r\n amountVariable: amountVariable\r\n });\r\n };\r\n\r\n private readonly updateMaxAmount = (newAmount: number): void => {\r\n // If the user has already set an amount, we should not override that in the UI because it will be confusing.\r\n if (this.props.data.checkout.result && this.props.data.checkout.result.customerAccountAmount === 0) {\r\n this.setState({\r\n // We should never allow a negative amount.\r\n paymentAmount: Math.max(0, newAmount),\r\n customizedAmt: Math.max(0, newAmount).toString()\r\n });\r\n }\r\n };\r\n\r\n private readonly onEdit = (): void => {\r\n this.props.telemetry.information('Payment section customer account payment onEdit is called.');\r\n\r\n this.props.moduleState.onUpdating();\r\n };\r\n\r\n private readonly handleCancelOrSubmit = () => {\r\n const checkoutState = this.props.data.checkout.result;\r\n if (checkoutState && checkoutState.customerAccountAmount > 0) {\r\n this.setState({ handleSaveAndContinue: false });\r\n this.props.telemetry.information('Payment section customer account payment onSubmit is called.');\r\n\r\n if (\r\n Msdyn365.isOboRequest(this.props.context.request) &&\r\n checkoutState?.customerAccountAmount !== checkoutState?.checkoutCart.cart.TotalAmount\r\n ) {\r\n this._setErrorMessage(this.props.resources.invalidAmountForOBOMessage);\r\n } else {\r\n this.props.moduleState.onReady();\r\n }\r\n } else if (\r\n checkoutState?.customerAccountAmount === 0 &&\r\n !this.state.handleSaveAndContinue &&\r\n this.props.config.isCheckoutCustomerAccountPaymentRequired\r\n ) {\r\n this._setErrorMessage(this.props.resources.customerAccountCreditErrorMessage);\r\n } else {\r\n this.props.telemetry.information('Payment section customer account payment onCancel is called.');\r\n\r\n // Skip the module\r\n this.props.moduleState.onSkip();\r\n }\r\n };\r\n\r\n private readonly removePayment = async (): Promise => {\r\n const checkoutState = this.props.data.checkout.result;\r\n\r\n if (!checkoutState) {\r\n this.props.context.telemetry.error('checkout state not found');\r\n return;\r\n }\r\n\r\n this.setState({\r\n paymentAmount: 0\r\n });\r\n\r\n this.onChangePaymentAmount('', NaN, '0');\r\n\r\n this._clearError();\r\n await checkoutState.updateCustomerAccountAmount({ newAmount: 0 });\r\n this.props.context.telemetry.information('customer account payment removed');\r\n };\r\n\r\n @action\r\n private readonly _setErrorMessage = (errorMessage: string): void => {\r\n this.props.telemetry.error(errorMessage);\r\n this.props.moduleState.setHasError(true);\r\n this.props.moduleState.onUpdating();\r\n this.setState({\r\n errorMessage\r\n });\r\n };\r\n\r\n private readonly _clearError = (): void => {\r\n this.props.moduleState.setHasError(false);\r\n this.setState({\r\n errorMessage: ''\r\n });\r\n };\r\n}\r\n\r\nexport default CheckoutCustomerAccountPayment;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Alert, Button, INodeProps, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { showAdditionalFields } from '../checkout-gift-card.props.autogenerated';\n\nexport interface IGetFormInput {\n errorMessage: string;\n giftCardNumber: string;\n giftCardPin: string;\n giftCardExp: string;\n inputRef?: React.RefObject;\n inputPinRef?: React.RefObject;\n inputExpRef?: React.RefObject;\n supportExternalGiftCard?: boolean;\n additionalFields?: showAdditionalFields;\n disableAddGiftCard?: boolean;\n resources: {\n applyGiftCardButton: string;\n giftCardFormLabel: string;\n giftCardNumberLabel: string;\n giftCardPinLabel: string;\n giftCardExpLabel: string;\n giftCardAlertLabel: string;\n giftCardPinPlaceholderText: string;\n giftCardExpPlaceholderText: string;\n };\n onEnterGiftCardNumber(giftCardNumber: string): void;\n onEnterGiftCardPin(giftCardPin: string): void;\n onEnterGiftCardExp(giftCardExp: string): void;\n onApplyGiftCard(): Promise;\n}\n\nexport interface IForm {\n formProps: INodeProps;\n label: React.ReactNode;\n inputPinLabel: React.ReactNode;\n inputExpLabel: React.ReactNode;\n alert: React.ReactNode;\n inputProps: INodeProps;\n inputNumProps: INodeProps;\n inputPinProps: INodeProps;\n inputExpProps: INodeProps;\n inputNumber: React.ReactNode;\n inputPin: React.ReactNode;\n inputExp: React.ReactNode;\n applyButton: React.ReactNode;\n supportExternalGiftCard: boolean | undefined;\n showGiftCardPinInput: boolean | undefined;\n showGiftCardExpInput: boolean | undefined;\n alertFieldLabel: React.ReactNode;\n}\n\n/**\n * On Apply Function.\n * @param onApplyGiftCard -On Apply Gift Card Function.\n * @returns Call of Apply Gift Card Function.\n */\nconst onApplyHandler = (onApplyGiftCard: () => Promise) => async (event: React.SyntheticEvent): Promise => {\n event.preventDefault();\n await onApplyGiftCard();\n};\n\n/**\n * On change number Function.\n * @param onEnterGiftCardNumber -On enter gift card number Function.\n * @returns Call of on enter gift card number Function.\n */\nconst onChangeNumberHandler = (onEnterGiftCardNumber: (giftCardNumber: string) => void) => (event: React.ChangeEvent) => {\n const value = (event.target.value || '').replace(new RegExp('[<>]', 'gi'), '');\n onEnterGiftCardNumber(value);\n};\n\n/**\n * On Change pin event.\n * @param onEnterGiftCardPin -On enter gift card pin Function.\n * @returns Call of on enter gift card pin Function.\n */\nconst onChangePinHandler = (onEnterGiftCardPin: (giftCardPin: string) => void) => (event: React.ChangeEvent) => {\n const value = (event.target.value || '').replace(new RegExp('[<>]', 'gi'), '');\n onEnterGiftCardPin(value);\n};\n\n/**\n * On Change Event.\n * @param onEnterGiftCardExp -On enter gift card function.\n * @returns Call of On enter gift card function.\n */\n// Need to filter out the month and year\nconst onChangeExpHandler = (onEnterGiftCardExp: (giftCardExp: string) => void) => (event: React.ChangeEvent) => {\n const value = (event.target.value || '').replace(new RegExp('[<>]', 'gi'), '');\n onEnterGiftCardExp(value);\n};\n\nexport const getForm = (options: IGetFormInput): IForm => {\n const {\n errorMessage,\n inputRef,\n inputPinRef,\n inputExpRef,\n giftCardNumber,\n giftCardPin,\n giftCardExp,\n onEnterGiftCardNumber,\n onEnterGiftCardPin,\n onEnterGiftCardExp,\n onApplyGiftCard,\n supportExternalGiftCard,\n additionalFields,\n disableAddGiftCard,\n resources: {\n applyGiftCardButton,\n giftCardFormLabel,\n giftCardNumberLabel,\n giftCardPinLabel,\n giftCardExpLabel,\n giftCardAlertLabel,\n giftCardPinPlaceholderText,\n giftCardExpPlaceholderText\n }\n } = options;\n\n const formProps = {\n className: classnames('ms-checkout-gift-card__form', { 'is-invalid': !!errorMessage }),\n onSubmit: onApplyHandler(onApplyGiftCard),\n tag: 'form' as NodeTag\n };\n\n const label = (\n \n );\n\n const inputPinLabel = (\n \n );\n\n const inputExpLabel = (\n \n );\n\n const alertFieldLabel = (\n \n );\n\n const alert = (\n \n {errorMessage}\n \n );\n\n const inputProps = {\n className: 'ms-checkout-gift-card__input-fields'\n };\n\n const inputNumProps = {\n className: 'ms-checkout-gift-card__input-num-fields'\n };\n\n const inputPinProps = {\n className: 'ms-checkout-gift-card__input-pin-fields'\n };\n\n const inputExpProps = {\n className: 'ms-checkout-gift-card__input-exp-fields'\n };\n\n const inputNumber = (\n \n );\n\n const inputPin = (\n \n );\n\n const inputExp = (\n \n );\n\n const applyButton = (\n \n {applyGiftCardButton}\n \n );\n\n let showGiftCardPinInput = false;\n let showGiftCardExpInput = false;\n\n switch (additionalFields) {\n case showAdditionalFields.pin:\n showGiftCardPinInput = true;\n break;\n case showAdditionalFields.expirationDate:\n showGiftCardExpInput = true;\n break;\n case showAdditionalFields.pinAndExpirationDate:\n showGiftCardPinInput = true;\n showGiftCardExpInput = true;\n break;\n default:\n }\n\n return {\n formProps,\n label,\n inputPinLabel,\n inputExpLabel,\n alert,\n inputProps,\n inputNumProps,\n inputPinProps,\n inputExpProps,\n inputNumber,\n inputPin,\n inputExp,\n applyButton,\n supportExternalGiftCard,\n showGiftCardPinInput,\n showGiftCardExpInput,\n alertFieldLabel\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CheckoutModule, ErrorLocation, IGiftCardExtend } from '@msdyn365-commerce/global-state';\nimport {\n getGiftCardAsync,\n getTenderTypesAsync,\n resolveCardTypesAsync\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\nimport {\n CardType,\n CardTypeInfo,\n GiftCard,\n RetailOperation,\n TenderType\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { IModuleStateProps, withModuleState, EnabledPaymentsForOBO } from '@msdyn365-commerce-modules/checkout-utilities';\nimport { IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport { computed, reaction, when } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { OPERATIONS } from '../checkout';\nimport { ICheckoutGiftCardData } from './checkout-gift-card.data';\nimport { ICheckoutGiftCardProps } from './checkout-gift-card.props.autogenerated';\nimport { getForm, IForm } from './components/get-form';\nimport { getList, IList } from './components/get-list';\nimport TitleCompoent from './components/title';\nimport { focusOnCheckoutError } from '../../checkout-errors';\n\nexport * from './components/get-form';\nexport * from './components/get-item';\nexport * from './components/get-list';\n\ninterface ICheckoutGiftCardState {\n isFetchingGiftCard: boolean;\n errorMessage: string;\n giftCardNumber: string;\n giftCardPin: string;\n giftCardExp: string;\n}\n\nenum SupportedGiftCardType {\n Internal = 'internal',\n External = 'external',\n Both = 'both'\n}\n\nexport interface ICheckoutGiftCardModuleProps extends ICheckoutGiftCardProps, IModuleStateProps {}\n\nexport interface IShowResource {\n title: React.ReactNode;\n list?: IList;\n}\n\nexport interface IAddResource {\n form: IForm;\n list?: IList;\n}\n\nexport interface ICheckoutGiftCardViewProps extends ICheckoutGiftCardProps<{}>, ICheckoutGiftCardState {\n className?: string;\n\n showGiftCard?: IShowResource;\n addGiftCard?: IAddResource;\n\n checkoutGiftCardProps: IModuleProps;\n couldPaidByGiftCard?: boolean;\n isEnabled?: boolean;\n checkoutErrorRef?: React.RefObject;\n onEdit?(): void;\n onCancel?(): void;\n onSubmit?(): void;\n enterGiftCardNumber?(giftCardNumber: string): void;\n enterGiftCardPin?(giftCardNumber: string): void;\n enterGiftCardExp?(giftCardNumber: string): void;\n removeGiftCard?(giftCardNumber: string): void;\n applyGiftCard?(): void;\n}\n\n/**\n *\n * CheckoutGiftCard component.\n * @extends {React.Component, ICheckoutGiftCardState>}\n */\n@observer\nexport class CheckoutGiftCard extends React.Component {\n public state: ICheckoutGiftCardState = {\n isFetchingGiftCard: false,\n errorMessage: '',\n giftCardNumber: '',\n giftCardPin: '',\n giftCardExp: ''\n };\n\n private readonly inputRef: React.RefObject = React.createRef();\n\n private readonly inputPinRef: React.RefObject = React.createRef();\n\n private readonly inputExpRef: React.RefObject = React.createRef();\n\n private readonly checkoutErrorRef: React.RefObject = React.createRef();\n\n @computed get isDataReady(): boolean {\n return (this.props.data.checkout.result && this.props.data.checkout.status) === 'SUCCESS';\n }\n\n @computed get getLoyaltyAmount(): number {\n const checkoutState = this.props.data.checkout.result;\n if (!checkoutState || !checkoutState.loyaltyAmount) {\n return 0;\n }\n return checkoutState.loyaltyAmount;\n }\n\n @computed get getCustomerAccountAmount(): number {\n const checkoutState = this.props.data.checkout.result;\n return checkoutState && checkoutState.customerAccountAmount ? checkoutState.customerAccountAmount : 0;\n }\n\n @computed get getGiftCardTotalAmount(): number {\n const checkoutState = this.props.data.checkout.result;\n if (!checkoutState || !checkoutState.giftCardExtends) {\n return 0;\n }\n return checkoutState.giftCardExtends.reduce((count: number, giftCard: IGiftCardExtend) => {\n const balance: number = giftCard.Balance || 0;\n return count + balance;\n }, 0);\n }\n\n @computed get disableAddGiftCard(): boolean {\n const cart = this.props.data.checkout.result ? this.props.data.checkout.result.checkoutCart.cart : undefined;\n if (!cart) {\n return true;\n }\n return (cart.TotalAmount || 0) - this.getLoyaltyAmount - this.getGiftCardTotalAmount <= 0;\n }\n\n @computed get shouldPayGiftCard(): boolean {\n const cart = this.props.data.checkout.result ? this.props.data.checkout.result.checkoutCart.cart : undefined;\n if (!cart) {\n return false;\n }\n\n // Use gift card card when loyalty points do not cover the total amount\n const amountDue = (cart.TotalAmount || 0) - this.getLoyaltyAmount - this.getCustomerAccountAmount;\n return amountDue > 0;\n }\n\n @computed get hasSelectedItem(): boolean {\n const {\n data: { checkout }\n } = this.props;\n const giftCards = checkout.result && checkout.result.giftCardExtends;\n return !!giftCards && giftCards.length > 0;\n }\n\n public componentDidMount(): void {\n when(\n () => this.isDataReady,\n () => {\n this.init();\n }\n );\n\n if (this.props.data.checkout.result?.shouldEnableCheckoutErrorDisplayMessaging) {\n reaction(\n () => this.props.data.checkout.result?.checkoutError,\n checkoutError => {\n if (checkoutError && checkoutError.errorLocation === ErrorLocation.CheckoutGiftCard && checkoutError.errorMessage) {\n this.setError(checkoutError.errorMessage);\n }\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.checkoutErrorFocus,\n checkoutErrorFocus => {\n if (checkoutErrorFocus === CheckoutModule.CheckoutGiftCard) {\n focusOnCheckoutError(this.checkoutErrorRef, this.props.context.actionContext);\n }\n }\n );\n }\n }\n\n public shouldComponentUpdate(nextProps: ICheckoutGiftCardModuleProps, nextState: ICheckoutGiftCardState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const {\n moduleState: { isReady },\n data: { checkout },\n config: { className, showAdditionalFields },\n resources\n } = this.props;\n const { errorMessage, giftCardNumber, giftCardPin, giftCardExp } = this.state;\n const giftCards = checkout.result && checkout.result.giftCardExtends;\n const additionalFields = showAdditionalFields;\n const supportedGiftCardType = this.props.context.app.config.giftCardSupported;\n\n if (!this.isEnabled() || (!this.shouldPayGiftCard && !isReady)) {\n this.props.context.telemetry.error('Checkout giftcard content is empty, module wont render');\n return null;\n }\n\n if (this.props.context.request.user.isOBORequest && EnabledPaymentsForOBO.GiftCard === 0) {\n this.props.context.telemetry.information('isOBORequest is enabled, Checkout gift card module wont render');\n return null;\n }\n\n const supportExternalGiftCard = supportedGiftCardType !== SupportedGiftCardType.Internal;\n\n const moduleClassName = classname('ms-checkout-gift-card', className, isReady ? 'show' : 'add');\n\n const viewProps: ICheckoutGiftCardViewProps = {\n ...this.props,\n ...this.state,\n className: moduleClassName,\n checkoutErrorRef: this.checkoutErrorRef,\n\n checkoutGiftCardProps: { moduleProps: this.props, className: moduleClassName },\n couldPaidByGiftCard: this.couldPaidByGiftCard(),\n isEnabled: this.isEnabled(),\n onEdit: this.onEdit,\n onCancel: this.onCancel,\n onSubmit: this.onSubmit,\n enterGiftCardNumber: this.enterGiftCardNumber,\n enterGiftCardPin: this.enterGiftCardPin,\n enterGiftCardExp: this.enterGiftCardExp,\n removeGiftCard: this.removeGiftCard,\n applyGiftCard: this.applyGiftCard,\n showGiftCard: isReady\n ? {\n title: ,\n list: getList({\n canRemove: false,\n getFormattedPrice: this.getFormattedPrice,\n giftCards: giftCards && [...giftCards], // Note: ReadOnly Checkout State GiftCard[] is not assignable to GiftCard[] type\n onRemoveGiftCard: this.removeGiftCard,\n resources\n })\n }\n : undefined,\n addGiftCard: !isReady\n ? {\n form: getForm({\n errorMessage,\n giftCardNumber,\n giftCardPin,\n giftCardExp,\n inputRef: this.inputRef,\n inputPinRef: this.inputPinRef,\n inputExpRef: this.inputExpRef,\n resources,\n onEnterGiftCardNumber: this.enterGiftCardNumber,\n onEnterGiftCardPin: this.enterGiftCardPin,\n onEnterGiftCardExp: this.enterGiftCardExp,\n onApplyGiftCard: this.applyGiftCard,\n supportExternalGiftCard,\n additionalFields,\n disableAddGiftCard: this.disableAddGiftCard\n }),\n list: getList({\n canRemove: true,\n getFormattedPrice: this.getFormattedPrice,\n giftCards: giftCards && [...giftCards], // Note: ReadOnly Checkout State GiftCard[] is not assignable to GiftCard[] type\n onRemoveGiftCard: this.removeGiftCard,\n resources\n })\n }\n : undefined\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private readonly init = (): void => {\n this.props.moduleState.init({\n onEdit: this.onEdit,\n onCancel: this.onCancel,\n onSubmit: this.onSubmit,\n isRequired: false,\n ...(!this.isEnabled() && { status: 'disabled' })\n });\n\n const giftCards = this.props.data.checkout.result?.giftCardExtends;\n if (giftCards && giftCards.length > 0) {\n this.props.moduleState.onReady();\n } else if (this.props.data.checkout.result?.isPaymentVerificationRedirection) {\n this.props.moduleState.onSkip();\n }\n };\n\n private readonly couldPaidByGiftCard = (): boolean => {\n const cart = this.props.data.checkout.result ? this.props.data.checkout.result.checkoutCart?.cart : undefined;\n if (!cart) {\n return false;\n }\n\n // Use gift card when it is not free\n return (cart.TotalAmount || 0) > 0;\n };\n\n private readonly isEnabled = (): boolean => {\n if (\n !this.props.context.request.user.isAuthenticated &&\n this.props.context.app.config.giftCardSupported !== SupportedGiftCardType.External &&\n !this.props.config.shouldBeEnabledForGuest\n ) {\n return false;\n }\n return this.couldPaidByGiftCard();\n };\n\n private readonly onEdit = (): void => {\n this.props.telemetry.information('Payment section gift card onEdit is called.');\n\n // Show add gift card form\n this.props.moduleState.onUpdating();\n };\n\n private readonly onCancel = (): void => {\n this.props.telemetry.information('Payment section gift card onCancel is called.');\n\n this.handleCancelOrSubmit();\n };\n\n private readonly onSubmit = (): void => {\n this.props.telemetry.information('Payment section gift card onSubmit is called.');\n\n this.handleCancelOrSubmit();\n };\n\n private readonly handleCancelOrSubmit = () => {\n if (this.hasSelectedItem) {\n // Show summary screen\n this.props.moduleState.onReady();\n } else {\n // Skip the module\n this.props.moduleState.onSkip();\n }\n };\n\n private readonly getFormattedPrice = (price: number = 0, currencyCode: string = 'USD'): string => {\n return this.props.context.cultureFormatter.formatCurrency(price, currencyCode);\n };\n\n private readonly enterGiftCardNumber = (giftCardNumber: string): void => {\n this.setState({\n giftCardNumber\n });\n this.clearError();\n };\n\n private readonly enterGiftCardPin = (giftCardPin: string): void => {\n this.setState({\n giftCardPin\n });\n this.clearError();\n };\n\n private readonly enterGiftCardExp = (giftCardExp: string): void => {\n this.setState({\n giftCardExp\n });\n this.clearError();\n };\n\n private readonly setError = (errorMessage: string): void => {\n this.props.telemetry.error('Error', errorMessage);\n this.props.telemetry.debug('Error', errorMessage);\n this.props.moduleState.setHasError(true);\n this.setState({\n errorMessage\n });\n };\n\n private readonly clearError = (): void => {\n this.props.moduleState.setHasError(false);\n this.setState({\n errorMessage: ''\n });\n };\n\n private readonly removeGiftCard = async (giftCardNumber: string): Promise => {\n this.props.telemetry.information('Payment section gift card remove is called.');\n\n const checkoutState = this.props.data.checkout.result;\n if (!checkoutState) {\n return;\n }\n\n await checkoutState.removeGiftCard({ giftCardNumber });\n };\n\n private readonly applyGiftCard = async (): Promise => {\n this.props.telemetry.information('Payment section gift card apply is called.');\n\n if (this.state.isFetchingGiftCard) {\n return;\n }\n this.setState({\n isFetchingGiftCard: true\n });\n\n const checkoutState = this.props.data.checkout.result;\n const giftCardNumber = this.state.giftCardNumber.trim();\n const giftCardPin = this.state.giftCardPin.trim();\n const giftCardExp = this.state.giftCardExp.trim();\n\n const giftCardTypes = await this.getGiftCardTypes(giftCardNumber);\n const giftCardType = giftCardTypes && giftCardTypes[0];\n const isPinRequired = giftCardType && giftCardType.IsPinRequired;\n const isExpRequired = giftCardType && giftCardType.IsExpirationDateRequired;\n const tenderTypeId = giftCardType && giftCardType.PaymentMethodId;\n const giftCard = await this.getGiftCard(giftCardNumber, giftCardPin, giftCardExp, isPinRequired, isExpRequired, tenderTypeId);\n\n if (checkoutState && giftCard) {\n await checkoutState.addGiftCard({\n giftCard,\n additionalProperties: { Pin: giftCardPin, ExpirationDate: giftCardExp, TenderTypeId: tenderTypeId }\n });\n this.clearError();\n this.setState({\n giftCardNumber: '',\n giftCardPin: '',\n giftCardExp: '',\n isFetchingGiftCard: false\n });\n return Promise.resolve();\n }\n const input = this.inputRef && this.inputRef.current && this.inputRef.current.focus && (this.inputRef.current as HTMLElement);\n input && input.focus();\n this.setState({\n isFetchingGiftCard: false\n });\n this.props.telemetry.information('Payment section fetching gift card is failed.');\n };\n\n private readonly findGiftcardTenderTypes = (\n tenderTypes: TenderType[],\n operationId: RetailOperation,\n giftcardType: string\n ): string[] | undefined => {\n let matchedTenderTypes: TenderType[] | undefined;\n\n switch (giftcardType) {\n case SupportedGiftCardType.Internal:\n matchedTenderTypes = tenderTypes.filter(\n tenderType => tenderType.OperationId === operationId && tenderType.ConnectorId === ''\n );\n break;\n case SupportedGiftCardType.External:\n matchedTenderTypes = tenderTypes.filter(\n tenderType => tenderType.OperationId === operationId && tenderType.ConnectorId !== ''\n );\n break;\n default:\n throw new Error('Invalid gift card type');\n }\n\n if (matchedTenderTypes) {\n return matchedTenderTypes.map(tenderType => tenderType.TenderTypeId || '');\n }\n return;\n };\n\n private readonly getGiftCard = async (\n giftCardNumber: string,\n giftCardPin: string,\n giftCardExp: string,\n isPinRequired: boolean | undefined,\n isExpRequired: boolean | undefined,\n tenderTypeId: string | undefined\n ): Promise => {\n const {\n resources: { noBalanceError, invalidCardInfoError, invalidCardTypeError, noCardPinError, noCardExpError }\n } = this.props;\n\n const supportedGiftCardType = this.props.context.app.config.giftCardSupported;\n\n if (!tenderTypeId) {\n return undefined;\n }\n\n const tenderTypes = await getTenderTypesAsync({ callerContext: this.props.context.actionContext, queryResultSettings: {} }).catch(\n error => {\n throw error;\n }\n );\n\n if (!tenderTypes) {\n throw new Error('Fail to get gift card tender line');\n }\n const internalGiftcardTenderTypes = this.findGiftcardTenderTypes(\n tenderTypes,\n OPERATIONS.PayGiftCertificate,\n SupportedGiftCardType.Internal\n );\n const externalGiftcardTenderTypes = this.findGiftcardTenderTypes(\n tenderTypes,\n OPERATIONS.PayGiftCertificate,\n SupportedGiftCardType.External\n );\n\n switch (supportedGiftCardType) {\n case undefined:\n case SupportedGiftCardType.Internal:\n if (!internalGiftcardTenderTypes?.includes(tenderTypeId)) {\n this.setError(invalidCardTypeError);\n return undefined;\n }\n break;\n case SupportedGiftCardType.External:\n if (!externalGiftcardTenderTypes?.includes(tenderTypeId)) {\n this.setError(invalidCardTypeError);\n return undefined;\n }\n break;\n case SupportedGiftCardType.Both:\n if (!internalGiftcardTenderTypes?.includes(tenderTypeId) && !externalGiftcardTenderTypes?.includes(tenderTypeId)) {\n this.setError(invalidCardTypeError);\n return undefined;\n }\n break;\n default:\n throw new Error('Unsupported gift card type');\n }\n\n if (isPinRequired && giftCardPin === '') {\n this.setError(noCardPinError);\n return undefined;\n }\n\n if (isExpRequired && giftCardExp === '') {\n this.setError(noCardExpError);\n return undefined;\n }\n\n const month = Number.parseInt(giftCardExp.split('/')[0], 10);\n const year = Number.parseInt(giftCardExp.split('/')[1], 10);\n\n return getGiftCardAsync({ callerContext: this.props.context.actionContext }, giftCardNumber, tenderTypeId, giftCardPin, month, year)\n .then(activeGiftCard => {\n if (!activeGiftCard.Balance || activeGiftCard.Balance === 0) {\n this.setError(noBalanceError);\n return;\n }\n return activeGiftCard;\n })\n .catch(error => {\n this.setError(invalidCardInfoError);\n return undefined;\n });\n };\n\n private readonly getGiftCardTypes = async (giftCardNumber: string): Promise => {\n const {\n resources: { emptyInputError, duplicatedCodeError, invalidCodeError },\n data: { checkout }\n } = this.props;\n\n if (!giftCardNumber) {\n this.setError(emptyInputError);\n return undefined;\n }\n\n const isDuplicated = checkout.result && checkout.result.giftCardExtends.some((card: GiftCard) => card.Id === giftCardNumber);\n if (isDuplicated) {\n this.setError(duplicatedCodeError);\n return undefined;\n }\n\n return resolveCardTypesAsync({ callerContext: this.props.context.actionContext }, giftCardNumber, CardType.GiftCard)\n .then(giftCardTypes => {\n if (!giftCardTypes || giftCardTypes.length === 0 || giftCardTypes[0] === undefined) {\n this.setError(invalidCodeError);\n return;\n }\n return giftCardTypes;\n })\n .catch(error => {\n this.setError(invalidCodeError);\n return undefined;\n });\n };\n}\n\nexport default withModuleState(CheckoutGiftCard);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IGiftCardExtend } from '@msdyn365-commerce/global-state';\nimport { Address, GiftCard, TenderLine, TokenizedPaymentCard } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { action, computed, observable } from 'mobx';\n\n/**\n * State information related to what is needed to succesfully perform a checkout.\n */\nexport class CheckoutState {\n @observable private _tokenizedPaymentCard: TokenizedPaymentCard | undefined;\n\n @computed public get tokenizedPaymentCard(): Readonly | undefined {\n return this._tokenizedPaymentCard;\n }\n\n @observable private _tenderLine: TenderLine | undefined;\n\n @computed public get tenderLine(): Readonly | undefined {\n return this._tenderLine;\n }\n\n @observable private _billingAddress: Address | undefined;\n\n @computed public get billingAddress(): Readonly
| undefined {\n return this._billingAddress;\n }\n\n @observable private _shippingAddress: Address | undefined;\n\n @computed public get shippingAddress(): Readonly
| undefined {\n return this._shippingAddress;\n }\n\n @observable private _cardPrefix: string | undefined;\n\n @computed public get cardPrefix(): Readonly | undefined {\n return this._cardPrefix;\n }\n\n @observable private _giftCards: GiftCard[] = [];\n\n @computed public get giftCards(): readonly GiftCard[] {\n return this._giftCards;\n }\n\n @observable private _giftCardExtends: IGiftCardExtend[] = [];\n\n @computed public get giftCardExtends(): readonly IGiftCardExtend[] {\n return this._giftCardExtends;\n }\n\n @observable private _loyaltyCardNumber?: string;\n\n @computed public get loyaltyCardNumber(): Readonly | undefined {\n return this._loyaltyCardNumber;\n }\n\n @observable private _loyaltyAmount: number = 0;\n\n @computed public get loyaltyAmount(): Readonly | number {\n return this._loyaltyAmount;\n }\n\n @observable private _guestCheckoutEmail: string = '';\n\n @computed public get guestCheckoutEmail(): Readonly | string {\n return this._guestCheckoutEmail;\n }\n\n @observable private _isTermsAndConditionAccepted: boolean = false;\n\n @computed public get isTermsAndConditionAccepted(): Readonly | boolean {\n return this._isTermsAndConditionAccepted;\n }\n\n @observable private _customerAccountAmount: number = 0;\n\n @computed public get customerAccountAmount(): Readonly | number {\n return this._customerAccountAmount;\n }\n\n @action\n public updateTokenizedPaymentCard(newTokenizedPaymentCard: TokenizedPaymentCard): void {\n this._tokenizedPaymentCard = newTokenizedPaymentCard;\n }\n\n @action\n public updateTenderLine(newTenderLine: TenderLine | undefined): void {\n this._tenderLine = newTenderLine;\n }\n\n @action\n public updateShippingAddress(newShippingAddress: Address): void {\n this._shippingAddress = newShippingAddress;\n }\n\n @action\n public updateBillingAddress(newBillingAddress: Address): void {\n this._billingAddress = newBillingAddress;\n }\n\n @action\n public updateCardPrefix(newCardPrefix: string): void {\n this._cardPrefix = newCardPrefix;\n }\n\n @action\n public removeGiftCard(giftCardNumber: string): void {\n this._giftCards = this._giftCards.filter(giftCard => giftCard.Id !== giftCardNumber);\n }\n\n @action\n public removeGiftCardExtend(giftCardNumber: string): void {\n this._giftCardExtends = this._giftCardExtends.filter(giftCard => giftCard.Id !== giftCardNumber);\n }\n\n @action\n public addGiftCard(giftCard: GiftCard): void {\n this._giftCards = [giftCard, ...this._giftCards];\n }\n\n @action\n public addGiftCardExtend(giftCard: IGiftCardExtend): void {\n this._giftCardExtends = [giftCard, ...this._giftCards];\n }\n\n @action\n public updateLoyaltyCardNumber(newLoyaltyCardNumber: string): void {\n this._loyaltyCardNumber = newLoyaltyCardNumber;\n }\n\n @action\n public updateLoyaltyAmount(newAmount: number): void {\n this._loyaltyAmount = newAmount;\n }\n\n @action\n public updateGuestCheckoutEmail(newGuestCheckoutEmail: string): void {\n this._guestCheckoutEmail = newGuestCheckoutEmail;\n }\n\n @action\n public updateTermsAndConditionsAcceptance(newIsTermsAndConditionAccepted: boolean): void {\n this._isTermsAndConditionAccepted = newIsTermsAndConditionAccepted;\n }\n\n @action\n public updateCustomerAccountAmount(newAmount: number): void {\n this._customerAccountAmount = newAmount;\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport CheckoutLoyalty from './checkout-loyalty';\nimport CheckoutLoyaltyView from './checkout-loyalty.view';\n\nexport * from './checkout-loyalty';\nexport * from './checkout-loyalty.data';\nexport * from './checkout-loyalty.props.autogenerated';\nexport * from './checkout-loyalty.view';\nexport * from './components';\n\nexport { CheckoutLoyalty, CheckoutLoyaltyView };\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IGiftCardExtend } from '@msdyn365-commerce/global-state';\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\n\nimport { getItem, IItem } from './get-item';\n\ninterface IGetListInput {\n giftCards?: IGiftCardExtend[];\n canRemove: boolean;\n resources: {\n enteredGiftCardLabel: string;\n giftCardAvailableBalanceLabel: string;\n removeGiftCardButton: string;\n };\n getFormattedPrice(price?: number, currencyCode?: string): string;\n onRemoveGiftCard(giftCardNumber: string): void;\n}\n\nexport interface IList {\n listProps: INodeProps;\n list: IItem[];\n}\n\nexport const getList = ({ giftCards, canRemove, resources, getFormattedPrice, onRemoveGiftCard }: IGetListInput): IList | undefined => {\n if (!giftCards || giftCards.length === 0) {\n return undefined;\n }\n\n const listProps = {\n className: 'ms-checkout-gift-card__list'\n };\n\n const list = giftCards.map(giftCard =>\n getItem({\n canRemove,\n getFormattedPrice,\n giftCard,\n onRemoveGiftCard,\n resources\n })\n );\n\n return {\n listProps,\n list\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nexport * from './add-payment-form';\nexport * from './error';\nexport * from './iframe';\nexport * from './payment-instrument-message';\nexport * from './waiting';\nexport * from './with-visibility-observer';\nexport * from './interfaces';\nexport * from './place-order';\nexport * from './empty-active-cart';\nexport * from './country-codes';\nexport { CartCheckout } from './checkout';\nexport * from './get-checkout-return-url';\n\n/**\n * AsyncResultStatusCode.\n */\nexport enum AsyncResultStatusCode {\n LOADING = 'LOADING',\n SUCCESS = 'SUCCESS',\n FAILED = 'FAILED'\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport Checkout from './checkout';\nimport CheckoutView from './checkout.view';\n\nexport * from './actions/get-products-in-active-checkout-cart';\nexport * from './checkout';\nexport * from './checkout.data';\nexport * from './checkout.props.autogenerated';\nexport * from './checkout.view';\nexport * from './components';\nexport * from './methods';\n\nexport { Checkout, CheckoutView };\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAddContactInfo, ICheckoutGuestProfileViewProps, IShowContactInfo } from './checkout-guest-profile';\n\nexport const ShowContactInfo: React.FC = ({ showInfoProps, email, editButton }) => (\n \n {email}\n {editButton}\n \n);\n\nexport const AddContactInfo: React.FC = ({\n addFormProps,\n submitButton,\n cancelButton,\n inputGroupProps,\n label,\n error,\n input\n}) => (\n \n \n {label}\n {error}\n {input}\n \n {submitButton}\n {cancelButton}\n \n);\n\nconst CheckoutGuestProfileView: React.FC = ({\n moduleProps,\n checkoutErrorRef,\n alert,\n showContactInfo,\n addContactInfo\n}) => {\n return (\n \n {alert}\n {showContactInfo && }\n {addContactInfo && }\n \n );\n};\n\nexport default CheckoutGuestProfileView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICheckoutLoyaltyAdd, ICheckoutLoyaltyRewardPoint, ICheckoutLoyaltyShow, ICheckoutLoyaltyViewProps } from './checkout-loyalty';\n\nconst AddCheckoutLoyalty: React.FC = ({\n heading,\n cardNumber,\n drawer,\n rewardPoints,\n loyaltyAmountContainer,\n appliedLoyaltyAmountContainer,\n loyaltyAmountLabel,\n loyaltyAmountInput,\n loyaltyAmountApplyButton,\n showAppliedAmount,\n loyaltyAmountAppliedText,\n loyaltyAmountAppliedPrice,\n loyaltyAmountRemoveButton\n}) => {\n return (\n <>\n {heading}\n {cardNumber}\n \n {rewardPoints.map((rewardPoint: ICheckoutLoyaltyRewardPoint) => {\n return (\n \n {rewardPoint.title}\n {rewardPoint.availablePointsText}\n {rewardPoint.activePoints}\n {rewardPoint.expiringPointsText}\n {rewardPoint.expiringPoints}\n \n );\n })}\n \n \n {loyaltyAmountLabel}\n {loyaltyAmountInput}\n {loyaltyAmountApplyButton}\n {showAppliedAmount && (\n \n {loyaltyAmountAppliedText}\n {loyaltyAmountAppliedPrice}\n {loyaltyAmountRemoveButton}\n \n )}\n \n \n );\n};\n\nconst ShowCheckoutLoyalty: React.FC = ({ heading, coveredAmountText, amount }) => {\n return (\n <>\n {heading}\n {coveredAmountText}\n {amount}\n \n );\n};\n\nconst CheckoutLoyaltyView: React.FC = props => {\n const { checkoutLoyalty, checkoutErrorRef, alert, viewState, showLoyalty, addLoyalty } = props;\n\n return (\n \n {alert}\n {viewState.isShowLoyalty && }\n {viewState.isShowAddLoyalty && }\n \n );\n};\n\nexport default CheckoutLoyaltyView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node, Waiting } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICheckoutViewProps, ILineItem, ILineItemDeliveryGroup, ILineItems, IOrderSummary, IPickUpAtStore } from './checkout';\nimport { IEmailDelivery } from './components';\nimport { IInvoicePaymentSummary } from './components/get-invoice-payment-summary';\n\nexport const PickUpAtStoreComponent: React.FC = ({ PickUpAtStore, label, location }) => (\n \n {label}\n {location}\n \n);\n\nexport const EmailDeliveryComponent: React.FC = ({ EmailDelivery, label }) => {label};\n\nexport const LineItemComponent: React.FC = ({ LineItem, item, pickUpAtStore, emailDelivery }) => (\n \n {item}\n {pickUpAtStore && }\n {emailDelivery && }\n \n);\n\nexport const LineItemGroupComponent: React.FC = ({ LineItemDeliveryGroup, LineItemList, heading, lineItems }) => (\n \n {heading}\n \n {lineItems.map(lineItem => (\n \n ))}\n \n \n);\n\nexport const LineItemGroupComponentWithMultiplePickUp: React.FC = ({\n LineItemDeliveryGroup,\n LineItemList,\n heading,\n lineItems,\n lineItemWraper,\n lineItemWraperIcon\n}) => (\n \n {lineItemWraperIcon}\n {lineItemWraper}\n {heading}\n \n {lineItems.map(lineItem => (\n \n ))}\n \n \n);\n\nexport const LineItemComponentWithMultiplePickUp: React.FC = ({ LineItem, item, pickUpAtStore, emailDelivery }) => (\n \n {item}\n {emailDelivery && }\n \n);\n\nexport const PickUpAtStoreComponentWithMultiplePickUp: React.FC = ({ PickUpAtStore, label, location }) => (\n \n {label}\n {location}\n \n);\n\nexport const LineItemsComponent: React.FC = ({\n LineItems,\n Header,\n heading,\n editLink,\n itemsForPickup,\n itemsForShip,\n itemsForEmail,\n itemsGroupWithMulitplePickupMode\n}) => (\n \n \n {heading}\n {editLink}\n \n {itemsGroupWithMulitplePickupMode === undefined && itemsForPickup && }\n {itemsGroupWithMulitplePickupMode === undefined && itemsForEmail && }\n {itemsGroupWithMulitplePickupMode === undefined && itemsForShip && }\n {itemsGroupWithMulitplePickupMode !== undefined\n ? itemsGroupWithMulitplePickupMode.map((item, index) => {\n return ;\n })\n : null}\n \n);\n\nconst OrderSummaryComponent: React.FC = ({ heading, lines }) => (\n
\n {heading}\n
\n {lines && (\n <>\n {lines.subtotal}\n {lines.shipping}\n {lines.otherCharge}\n {lines.tax}\n {lines.totalDiscounts}\n {lines.loyalty}\n {lines.customerAccount}\n {lines.giftCard}\n {lines.orderTotal}\n \n )}\n
\n
\n);\n\nconst PaymentSummaryComponent: React.FC = ({ heading, lines }) => (\n
\n {heading}\n
\n {lines && (\n <>\n {lines.invoices}\n {lines.giftCard}\n {lines.loyalty}\n {lines.orderTotal}\n \n )}\n
\n
\n);\n\nconst CheckoutView: React.FC = props => {\n const {\n isPaymentVerificationRedirection,\n shouldEnableSinglePaymentAuthorizationCheckout,\n canShow,\n checkoutProps,\n headerProps,\n hasSalesOrder,\n hasInvoiceLine,\n bodyProps,\n mainProps,\n mainControlProps,\n sideProps,\n sideControlFirstProps,\n sideControlSecondProps,\n termsAndConditionsProps,\n orderConfirmation,\n loading,\n alert,\n title,\n guidedForm,\n orderSummary,\n invoicePaymentSummary,\n lineItems,\n placeOrderButton,\n termsAndConditions,\n keepShoppingButton,\n checkoutExpressPaymentContainer,\n checkoutErrorRef\n } = props;\n\n return (\n \n {!hasSalesOrder && !checkoutExpressPaymentContainer && {title}}\n {!hasSalesOrder && isPaymentVerificationRedirection && shouldEnableSinglePaymentAuthorizationCheckout && !alert && !loading && (\n \n )}\n {!hasSalesOrder && (\n \n {loading}\n {alert}\n {canShow && (\n <>\n \n {checkoutExpressPaymentContainer}\n {checkoutExpressPaymentContainer && {title}}\n {guidedForm}\n {termsAndConditions}\n \n {placeOrderButton}\n {keepShoppingButton}\n \n \n \n {!hasInvoiceLine\n ? orderSummary && \n : invoicePaymentSummary && }\n \n {termsAndConditions}\n {placeOrderButton}\n {keepShoppingButton}\n \n {lineItems && }\n \n {termsAndConditions}\n {placeOrderButton}\n {keepShoppingButton}\n \n \n \n )}\n \n )}\n {hasSalesOrder && orderConfirmation}\n \n );\n};\n\nexport default CheckoutView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IInvoiceSummaryLines, InvoiceSummary } from '@msdyn365-commerce-modules/invoice-payment-summary';\nimport get from 'lodash/get';\nimport * as React from 'react';\n\nimport { ICheckoutData } from '../checkout.data';\nimport { ICheckoutProps } from '../checkout.props.autogenerated';\n\nexport interface IInvoicePaymentSummary {\n heading?: React.ReactNode;\n lines?: IInvoiceSummaryLines;\n}\nexport const getInvoicePaymentSummary = (input: ICheckoutProps): IInvoicePaymentSummary => {\n const {\n data: { checkout },\n resources: { totalAmountLabel, invoiceLabel, invoiceSummaryTitle },\n context,\n typeName,\n id,\n telemetry\n } = input;\n\n const checkoutCart = get(checkout, 'result.checkoutCart');\n const cart = get(checkout, 'result.checkoutCart.cart');\n\n return {\n heading:

{invoiceSummaryTitle}

,\n lines: checkoutCart?.hasInvoiceLine\n ? InvoiceSummary({\n orderTotalLabel: totalAmountLabel,\n invoiceLabel,\n cart,\n context,\n typeName,\n telemetry,\n id,\n checkoutState: checkout.result\n })\n : undefined\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { isChannelTypeB2B } from '@msdyn365-commerce/core';\nimport { AsyncResultStatus, Cart, CartLineValidationResults } from '@msdyn365-commerce/retail-proxy';\nimport {\n updateLineDeliverySpecificationsAsync,\n validateForCheckoutAsync\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g';\nimport {\n Address,\n DeliveryPreferenceType,\n LineDeliverySpecification,\n SimpleProduct,\n TokenizedPaymentCard\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { IModuleStateManager, IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\nimport {\n ArrayExtensions,\n getAvailabilitiesForCartLineItems,\n IProductInventoryInformation,\n ProductAvailabilitiesForCartLineItems,\n validateCartLinesInventory\n} from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IModuleProps,\n INodeProps,\n ITelemetryContent,\n TelemetryConstant,\n Waiting\n} from '@msdyn365-commerce-modules/utilities';\nimport { ErrorCode, ErrorLocation } from '@msdyn365-commerce/global-state';\nimport classnames from 'classnames';\nimport isEmpty from 'lodash/isEmpty';\nimport { action, computed, get, reaction, when } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { ICheckoutData } from './checkout.data';\nimport { ICheckoutHeadingData, ICheckoutProps } from './checkout.props.autogenerated';\nimport AlertComponent from './components/alert';\nimport { getInvoicePaymentSummary, IInvoicePaymentSummary } from './components/get-invoice-payment-summary';\nimport { getLineItems, ILineItems } from './components/get-line-items';\nimport { getOrderSummary, IOrderSummary } from './components/get-order-summary';\nimport GuidedFormComponent from './components/guided-form';\nimport PlaceOrderButtonComponent from './components/place-order-button';\nimport placeOrder from './methods/place-order';\nimport { focusOnCheckoutError, setCheckoutErrors } from '../../checkout-errors';\nimport { AsyncResultStatusCode, IExpressPaymentDetails } from '../../common';\n\nexport * from './components/get-line-items';\nexport * from './components/get-order-summary';\n\n/**\n * Device type.\n */\ntype DeviceType = 'Mobile';\n\n/**\n * The Checkout state.\n */\ninterface ICheckoutState {\n errorMessage: string;\n isValidationPassed: boolean;\n isPlaceOrderLoading?: boolean;\n isPlaceOrderClicked?: boolean;\n}\n\n/**\n * The Checkout view props.\n * @extends ICheckoutProps\n */\nexport interface ICheckoutViewProps extends ICheckoutProps {\n className: string;\n canShow?: boolean;\n isEmptyCart?: boolean;\n isConsentGiven?: boolean;\n hasError?: boolean;\n isPaymentVerificationRedirection?: boolean;\n shouldEnableSinglePaymentAuthorizationCheckout?: boolean;\n cartStatus?: string;\n isMobile?: boolean;\n isEditorialMode?: boolean;\n backToShoppingUrl?: string;\n editCartLink?: string;\n hasSalesOrder: boolean;\n hasInvoiceLine?: boolean;\n\n checkoutProps: IModuleProps;\n headerProps: INodeProps;\n bodyProps: INodeProps;\n mainProps: INodeProps;\n mainControlProps: INodeProps;\n sideProps: INodeProps;\n sideControlFirstProps: INodeProps;\n sideControlSecondProps: INodeProps;\n termsAndConditionsProps: INodeProps;\n\n guidedForm?: React.ReactNode;\n title?: React.ReactNode;\n loading?: React.ReactNode;\n alert?: React.ReactNode;\n orderSummary?: IOrderSummary;\n invoicePaymentSummary?: IInvoicePaymentSummary;\n lineItems?: ILineItems;\n placeOrderButton?: React.ReactNode;\n termsAndConditions?: React.ReactNode;\n keepShoppingButton?: React.ReactNode;\n orderConfirmation?: React.ReactNode;\n\n checkoutExpressPaymentContainer?: React.ReactNode;\n checkoutErrorRef?: React.RefObject;\n}\n\n/**\n * The checkout module props interface.\n */\nexport interface ICheckoutModuleProps extends ICheckoutProps, IModuleStateProps {}\n\nconst expressPaymentSectionClassName = 'msc-express-payment-container';\n\n/**\n *\n * CheckoutContainer component.\n * @extends {React.Component}\n */\n// @ts-expect-error\n@withModuleState\n@observer\nclass Checkout extends React.PureComponent {\n @computed get cartStatus(): Msdyn365.AsyncResultStatus {\n return this.props.data.checkout?.status;\n }\n\n @computed get isEmptyCart(): boolean {\n if (this.isEditorialMode) {\n // Editorial mode: Ignore empty cart\n return false;\n }\n const cart = this.props.data.checkout?.result?.checkoutCart?.cart;\n return this.cartStatus === 'SUCCESS' && !!cart && !isEmpty(cart) && (!cart.CartLines || cart.CartLines.length === 0);\n }\n\n @computed get hasError(): boolean {\n const cart = this.props.data.checkout?.result?.checkoutCart?.cart;\n return this.cartStatus === 'FAILED' || (this.cartStatus === 'SUCCESS' && (!cart || isEmpty(cart)));\n }\n\n @computed get isEditorialMode(): boolean {\n return this.props.context.request.params.isEditor;\n }\n\n @computed get canPlaceOrder(): boolean {\n const isTermsAndConditionAccepted = this.props.data.checkout.result && this.props.data.checkout.result?.isTermsAndConditionAccepted;\n\n const shouldEnableSinglePaymentAuthorizationCheckout =\n this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout ?? false;\n\n const disableForOBO = Msdyn365.isOboRequest(this.props.context.request) && !this.isPaidOffByCustomerAccount;\n\n // If isTermsAndConditionAccepted is undefined means TermsAndCondition module is not added to page and we should able to place order.\n return (\n this.props.moduleState.isReady &&\n (isTermsAndConditionAccepted === undefined || isTermsAndConditionAccepted || shouldEnableSinglePaymentAuthorizationCheckout) &&\n (this.state.errorMessage === '' ||\n shouldEnableSinglePaymentAuthorizationCheckout ||\n (this.props.data.checkout.result?.isPaymentVerificationRedirection ?? false)) &&\n !(shouldEnableSinglePaymentAuthorizationCheckout && disableForOBO)\n );\n }\n\n @computed get isPaidOffByCustomerAccount(): boolean {\n const amountDue = this.props.data.checkout.result?.checkoutCart.cart.TotalAmount ?? 0;\n const customerAccountAmount = this.props.data.checkout.result?.customerAccountAmount ?? 0;\n\n return customerAccountAmount === amountDue;\n }\n\n @computed get isCartReady(): boolean {\n return (\n !!this.props.data.checkout.result?.checkoutCart?.cart &&\n this.props.data.customerInformation.status !== 'LOADING' &&\n this.props.data.featureState.status !== 'LOADING'\n );\n }\n\n public get expressPaymentDetailsFromCartPage(): IExpressPaymentDetails | null {\n const properties =\n this.props.data.checkout?.result?.checkoutCart?.cart?.ExtensionProperties?.find(\n property => property.Key === 'expressPaymentDetails'\n )?.Value?.StringValue ?? '';\n return properties ? (JSON.parse(properties) as IExpressPaymentDetails) : null;\n }\n\n public state: ICheckoutState = {\n errorMessage: '',\n isValidationPassed: false,\n isPlaceOrderLoading: false,\n isPlaceOrderClicked: false\n };\n\n private readonly telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n private readonly checkoutErrorRef: React.RefObject = React.createRef();\n\n public componentDidMount(): void {\n const {\n resources: { genericErrorMessage }\n } = this.props;\n\n when(\n () => this.asyncResultStatus !== AsyncResultStatusCode.LOADING,\n async () => {\n if (this.expressPaymentDetailsFromCartPage) {\n const {\n email,\n tenderLine,\n tokenizedPaymentCard,\n paymentTenderType: paymentTenderTypeFromCartPage,\n isExpressCheckoutAppliedInCartPage,\n isExpressAddressAppliedInCartPage,\n cardPaymentAcceptResult,\n address\n } = this.expressPaymentDetailsFromCartPage;\n\n this.props.data.checkout.result?.updateExpressCheckoutDetails({\n newEmailAddressFromExpressCheckout: email ?? '',\n newTenderLine: tenderLine,\n newTokenizedPaymentCard: tokenizedPaymentCard,\n newPaymentTenderType: paymentTenderTypeFromCartPage,\n newIsExpressCheckoutApplied: isExpressCheckoutAppliedInCartPage,\n newIsExpressAddressApplied: isExpressAddressAppliedInCartPage,\n newCardPaymentAcceptResult: cardPaymentAcceptResult\n });\n\n if (isExpressAddressAppliedInCartPage && address) {\n this.props.data.checkout.result?.updateBillingAddressFromExpressCheckout({\n newBillingAddressFromExpressCheckout: address\n });\n this.props.data.checkout.result?.updateShippingAddressFromExpressCheckout({\n newShippingAddressFromExpressCheckout: address\n });\n } else {\n void this._saveShippingAndBillingAddress(tokenizedPaymentCard);\n }\n\n this.props.data.checkout.result?.checkoutCart.updateExtensionProperties({\n newExtensionProperties: [\n {\n Key: 'expressPaymentDetails',\n Value: { StringValue: '' }\n }\n ]\n });\n }\n }\n );\n\n when(\n () => this.hasError,\n () => {\n this.setState({\n errorMessage: genericErrorMessage\n });\n this.props.context.telemetry.error('Failed to get cart');\n }\n );\n\n when(\n () => {\n return this.isEmptyCart;\n },\n () => {\n this.redirectToCartPage('Cart is empty, but no editCartLink found');\n }\n );\n\n when(\n () => this.isCartReady,\n () => {\n this.validateForCheckout();\n }\n );\n\n reaction(\n () => this.props.moduleState.isReady,\n () => {\n this.onContainerReady();\n }\n );\n\n // Reaction to call place order when isPaymentSectionContainerReady is true for new checkout flow.\n reaction(\n () => this.props.data.checkout.result?.isPaymentSectionContainerReady,\n async isReady => {\n if (\n this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout &&\n isReady &&\n !this.props.data.checkout.result?.redirectAdditionalContext &&\n (!this.props.data.checkout.result?.isExpressCheckoutApplied ||\n this.props.data.checkout.result?.isPaymentVerificationRedirection)\n ) {\n if (!this.state.isPlaceOrderLoading) {\n this.setState({ isPlaceOrderLoading: true });\n }\n\n this.props.telemetry.information(\n 'Call onPlaceOrder as reaction when isPaymentSectionContainerReady is updated for single auth payment.'\n );\n\n await this.onPlaceOrder();\n\n // If 3D authentication redirection, don't update isPlaceOrderLoading\n if (!this.props.data.checkout.result.isPaymentVerificationRequired) {\n this.setState({ isPlaceOrderLoading: false });\n }\n }\n }\n );\n\n // Reaction to enable place order button when isPaymentSectionContainerHasError is true for new checkout flow.\n reaction(\n () => this.props.data.checkout.result?.isPaymentSectionContainerHasError,\n hasError => {\n if (this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout && hasError) {\n this.setState({ isPlaceOrderLoading: false });\n\n this.props.telemetry.information(\n 'Enable place order button as reaction when isPaymentSectionContainerHasError is updated to true for single auth payment.'\n );\n } else {\n this.props.telemetry.information(\n 'No reaction when isPaymentSectionContainerHasError is updated to false or not single auth payment.'\n );\n }\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.isBillingAddressHasError,\n hasError => {\n if (this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout && hasError) {\n this.setState({ isPlaceOrderLoading: false });\n\n this.props.data.checkout.result?.updateIsBillingAddressHasError({ newIsBillingAddressHasError: false });\n\n this.props.telemetry.information(\n 'Enable place order button as reaction when isBillingAddressHasError is updated to true for single auth payment.'\n );\n } else {\n this.props.telemetry.information(\n 'No reaction when isBillingAddressHasError is updated to false or not single auth payment.'\n );\n }\n }\n );\n\n // Reaction to enable place order button when redirection is true for new checkout flow.\n reaction(\n () => this.canPlaceOrder,\n async () => {\n if (this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout && this.canPlaceOrder) {\n if (this.props.data.checkout.result?.isPaymentVerificationRedirection) {\n await this.props.data.checkout.result.updateIsPlaceOrderEnabledInRedirection({\n newIsPlaceOrderEnabledInRedirection: true\n });\n\n this.props.telemetry.information(\n 'Set isPaymentVerificationRedirection to true as reaction when canPlaceOrder is updated to true for single auth payment.'\n );\n } else {\n this.props.telemetry.information(\n 'No reaction when canPlaceOrder is updated to true but isPaymentVerificationRedirection is false for single auth payment.'\n );\n this.props.telemetry.information(\n `isOBORequest is ${Msdyn365.isOboRequest(this.props.context.request)} and canPlaceOrder is ${\n this.canPlaceOrder\n }.`\n );\n }\n } else {\n this.props.telemetry.information('No reaction when canPlaceOrder is updated to false or not single auth payment.');\n }\n }\n );\n\n // Reaction to update the error message when there is a checkout error.\n reaction(\n () => this.props.data.checkout.result?.checkoutError,\n checkoutError => {\n const checkoutErrorLocation: boolean = checkoutError?.errorLocation === ErrorLocation.Checkout;\n // If there is an Error in CheckoutPaymentInstrument module, checkout error location will be updated.\n const checkoutPaymentErrorLocation: boolean =\n checkoutError?.errorCode === ErrorCode.Microsoft_Dynamics_Commerce_Runtime_UnableToAuthorizePayment\n ? checkoutError.errorLocation === ErrorLocation.CheckoutPaymentInstrument\n : checkoutErrorLocation;\n if (\n this.props.data.checkout.result?.shouldEnableCheckoutErrorDisplayMessaging &&\n checkoutError &&\n checkoutError.errorMessage &&\n (checkoutErrorLocation ? checkoutErrorLocation : checkoutPaymentErrorLocation)\n ) {\n this._setErrorMessage(checkoutError.errorMessage);\n }\n }\n );\n }\n\n public componentDidUpdate(): void {\n if (\n this.props.data.checkout.result?.shouldEnableCheckoutErrorDisplayMessaging &&\n this.props.data.checkout.result?.shouldFocusOnCheckoutError &&\n this.state.errorMessage\n ) {\n focusOnCheckoutError(this.checkoutErrorRef, this.props.context.actionContext);\n }\n }\n\n // eslint-disable-next-line complexity -- ignore the complexity.\n public render(): JSX.Element {\n const {\n moduleState,\n config: { className, checkoutHeading, disableGuidedCheckoutFlow },\n resources,\n context: {\n request: {\n user: { isAuthenticated }\n }\n }\n } = this.props;\n const { errorMessage } = this.state;\n const { backToShopping, placeOrderText, confirmPaymentText, cookieConsentRequiredMessage, genericErrorMessage } = resources;\n const checkoutClass = classnames('ms-checkout', className);\n const allCheckoutInformation = this.getSlotItems('checkoutInformation');\n\n // @ts-expect-error - check the key of slot\n const checkoutInformation = allCheckoutInformation?.filter(info => !info?.key.includes('express-payment'));\n\n // @ts-expect-error - check the key of slot\n const checkoutExpressPaymentContainer = allCheckoutInformation?.find(info => info?.key.includes('express-payment'));\n\n const isConsentGiven =\n this.props.context.request &&\n this.props.context.request.cookies &&\n this.props.context.request.cookies.isConsentGiven &&\n this.props.context.request.cookies.isConsentGiven();\n\n const isMobile =\n this.props.context.request &&\n this.props.context.request.device &&\n (this.props.context.request.device.Type as DeviceType) === 'Mobile';\n\n const backToShoppingUrl = Msdyn365.getUrlSync('home', this.props.context.actionContext) || '';\n const editCartLink = Msdyn365.getUrlSync('cart', this.props.context.actionContext) || '';\n\n const termsAndConditions =\n this.props.slots.termsAndConditions && this.props.slots.termsAndConditions.length > 0 && this.props.slots.termsAndConditions[0];\n\n const payLoad = getPayloadObject('click', this.telemetryContent, TelemetryConstant.BackToShopping);\n const backToShoppingAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n\n const hasInvoiceLine = this.props.data.checkout && this.props.data.checkout.result?.checkoutCart.hasInvoiceLine;\n const checkoutBtnText = hasInvoiceLine ? confirmPaymentText : placeOrderText;\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\n const shouldEnableSinglePaymentAuthorizationCheckout =\n this.props.data.checkout?.result?.shouldEnableSinglePaymentAuthorizationCheckout ?? false;\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check null/undefined.\n const isExpressCheckoutApplied = this.props.data.checkout?.result?.isExpressCheckoutApplied ?? false;\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check null/undefined.\n const hasShippingAddress = this.props.data.checkout?.result?.hasShippingAddress;\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check null/undefined.\n const hasCartDeliveryMode = this.props.data.checkout?.result?.hasCartDeliveryMode;\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check null/undefined.\n const hasGuestCheckoutEmail = this.props.data.checkout?.result?.hasGuestCheckoutEmail;\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check null/undefined.\n const isTermsAndConditionAccepted = this.props.data.checkout?.result?.isTermsAndConditionAccepted;\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check null/undefined.\n const isPaymentVerificationRedirection = this.props.data.checkout?.result?.isPaymentVerificationRedirection ?? false;\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check null/undefined.\n const shouldEnableCheckoutErrorDisplayMessaging =\n this.props.data.checkout?.result?.shouldEnableCheckoutErrorDisplayMessaging ?? false;\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check null/undefined.\n const shouldFocusOnCheckoutError = this.props.data.checkout?.result?.shouldFocusOnCheckoutError;\n\n let hasExpressPaymentContainer = false;\n\n if (\n typeof window !== 'undefined' &&\n (document?.getElementsByClassName(expressPaymentSectionClassName) as HTMLCollectionOf)[0]?.style.display === ''\n ) {\n hasExpressPaymentContainer = true;\n }\n\n let viewProps: ICheckoutViewProps = {\n ...this.props,\n className: checkoutClass,\n checkoutErrorRef: this.checkoutErrorRef,\n isEmptyCart: this.isEmptyCart,\n isConsentGiven,\n hasError: this.hasError,\n isPaymentVerificationRedirection: this.props.data.checkout?.result?.isPaymentVerificationRedirection,\n shouldEnableSinglePaymentAuthorizationCheckout,\n hasSalesOrder:\n this.props.data.checkout &&\n this.props.data.checkout.result !== undefined &&\n this.props.data.checkout.result.salesOrder !== undefined,\n hasInvoiceLine,\n cartStatus: this.cartStatus,\n isMobile,\n backToShoppingUrl,\n editCartLink,\n isEditorialMode: this.isEditorialMode,\n orderConfirmation:\n this.props.slots.orderConfirmation && this.props.slots.orderConfirmation.length > 0\n ? this.props.slots.orderConfirmation[0]\n : undefined,\n checkoutProps: { moduleProps: this.props, className: checkoutClass },\n headerProps: { className: 'ms-checkout__head' },\n bodyProps: { className: 'ms-checkout__body' },\n mainProps: { className: 'ms-checkout__main' },\n mainControlProps: { className: 'ms-checkout__main-control' },\n sideProps: { className: hasExpressPaymentContainer ? 'ms-checkout__has-express-side' : 'ms-checkout__side' },\n sideControlFirstProps: { className: 'ms-checkout__side-control-first' },\n sideControlSecondProps: { className: 'ms-checkout__side-control-second' },\n termsAndConditionsProps: { className: 'ms-checkout__terms-and-conditions' },\n title: checkoutHeading && this.renderMsdyn365Text(checkoutHeading),\n checkoutExpressPaymentContainer\n };\n\n if (!isConsentGiven && isAuthenticated) {\n viewProps = {\n ...viewProps,\n alert: \n };\n } else if (this.isLoading()) {\n viewProps = {\n ...viewProps,\n loading: \n };\n } else if (this.hasError) {\n viewProps = {\n ...viewProps,\n alert: \n };\n } else {\n viewProps = {\n ...viewProps,\n alert: errorMessage && ,\n canShow: true,\n guidedForm: checkoutInformation ? (\n \n ) : (\n undefined\n ),\n orderSummary: getOrderSummary(this.props),\n invoicePaymentSummary: getInvoicePaymentSummary(this.props),\n lineItems: hasInvoiceLine ? undefined : getLineItems(this.props, this.telemetryContent),\n placeOrderButton: (\n \n ),\n termsAndConditions,\n keepShoppingButton: backToShoppingUrl && (\n \n {backToShopping}\n \n )\n };\n }\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n @computed public get asyncResultStatus(): AsyncResultStatus | undefined {\n const isLoading = Object.values(this.props.data).some(data => get(data, 'status') === AsyncResultStatusCode.LOADING);\n if (isLoading) {\n return AsyncResultStatusCode.LOADING;\n }\n\n const isSuccess = Object.values(this.props.data).every(data => get(data, 'status') === AsyncResultStatusCode.SUCCESS);\n if (isSuccess) {\n return AsyncResultStatusCode.SUCCESS;\n }\n\n const isFailed = Object.values(this.props.data).some(data => get(data, 'status') === AsyncResultStatusCode.FAILED);\n if (isFailed) {\n return AsyncResultStatusCode.FAILED;\n }\n\n return undefined;\n }\n\n /**\n * Renders heading.\n * @param checkoutHeading - The checkout heading.\n * @returns React node.\n */\n public renderMsdyn365Text(checkoutHeading: ICheckoutHeadingData): React.ReactNode {\n return (\n \n );\n }\n\n /**\n * Event handler for heading change event.\n * @param event - The content change event in heading element.\n * @returns The new heading value.\n */\n public handleCheckoutHeadingChange = (event: Msdyn365.ContentEditableEvent) =>\n (this.props.config.checkoutHeading!.text = event.target.value);\n\n /**\n * Checks if cart is loading.\n * @returns True if is loading, false otherwise.\n */\n private readonly isLoading = (): boolean => {\n return !this.cartStatus || this.cartStatus === 'LOADING' || this.isEmptyCart || !this.state.isValidationPassed;\n };\n\n /**\n * Get slot items.\n * @param key - The slot key.\n * @returns React node or undefined.\n */\n private readonly getSlotItems = (key: string): React.ReactNode[] | undefined => {\n const { slots } = this.props;\n return slots && slots[key] && slots[key].length > 0 ? slots[key] : undefined;\n };\n\n /**\n * Trigger the payment section container submit when placing order.\n */\n private readonly triggerPaymentWithPlaceOrder = async (): Promise => {\n this.setState({ isPlaceOrderLoading: true });\n\n await this.props.data.checkout.result?.updateShouldTriggerPaymentWithPlaceOrder({\n newShouldTriggerPaymentWithPlaceOrder: !this.props.data.checkout.result.shouldTriggerPaymentWithPlaceOrder\n });\n };\n\n /**\n * On place order.\n * @returns Void promise.\n */\n private readonly onPlaceOrder = async (): Promise => {\n const {\n resources: { checkoutOutOfStockErrorMessage },\n context: {\n actionContext,\n app: {\n config: { enableStockCheck = false }\n }\n },\n slots: { orderConfirmation },\n data: { checkout, products }\n } = this.props;\n\n this.props.telemetry.information('Checkout onPlaceOrder is called.');\n this.setState({ isPlaceOrderClicked: true });\n\n // If hasInvoiceLine is true, no inventory check\n if (\n !this.props.data.checkout.result?.checkoutCart.hasInvoiceLine &&\n enableStockCheck &&\n (await this.isOverMaxQuantity((await checkout).checkoutCart.cart, await products))\n ) {\n this.setState({\n errorMessage: checkoutOutOfStockErrorMessage\n });\n this.props.context.telemetry.error(checkoutOutOfStockErrorMessage);\n } else {\n const hasOrderConfirmation = orderConfirmation && orderConfirmation.length > 0;\n\n const updatedCartVersion = await this.updateCartLineEmailAddress(this.props.data.checkout.result?.guestCheckoutEmail || '');\n\n await placeOrder(\n actionContext,\n this.props.data.checkout.result,\n this.props.data.products.result,\n !hasOrderConfirmation,\n updatedCartVersion,\n this.props.data.checkout.result?.isPaymentVerificationRedirection\n ).catch(error => {\n this.handleCheckoutError(error);\n });\n\n await checkout.result?.updateIsPaymentSectionContainerReady({ newIsPaymentSectionContainerReady: false });\n }\n };\n\n /**\n * Update receipt email address for electronic cart line.\n * @param newGuestCheckoutEmail - The guest checkout email.\n * @returns The updated cart version.\n */\n private readonly updateCartLineEmailAddress = async (newGuestCheckoutEmail: string): Promise => {\n const emailDeliveryModeCode = this.props.context.request.channel?.EmailDeliveryModeCode;\n\n const emailDeliveryCartLines = this.props.data.checkout.result?.checkoutCart.cart.CartLines?.filter(\n cartLine => cartLine.DeliveryMode && cartLine.DeliveryMode !== '' && cartLine.DeliveryMode === emailDeliveryModeCode\n );\n\n let updatedCartVersion: number | undefined;\n if (emailDeliveryCartLines && emailDeliveryCartLines.length > 0) {\n const lineDeliverySpecifications: LineDeliverySpecification[] = emailDeliveryCartLines.map(line => {\n return {\n LineId: line.LineId,\n DeliverySpecification: {\n DeliveryModeId: emailDeliveryModeCode,\n DeliveryPreferenceTypeValue: DeliveryPreferenceType.ElectronicDelivery,\n ElectronicDeliveryEmailAddress: newGuestCheckoutEmail\n }\n };\n });\n\n await updateLineDeliverySpecificationsAsync(\n { callerContext: this.props.context.actionContext },\n (await this.props.data.checkout).checkoutCart.cart.Id,\n lineDeliverySpecifications\n )\n .then(updatedCart => {\n updatedCartVersion = updatedCart.Version;\n })\n .catch(error => {\n this.props.context.actionContext.telemetry.exception(error);\n throw new Error('[updateLineDeliverySpecificationsAsync] Unable to update electronic delivery email address in cart');\n });\n }\n\n return updatedCartVersion;\n };\n\n /**\n * Return true if any product in the cart is over its max quantity.\n * @param cart -- The checkout cart.\n * @param products -- The checkout products.\n * @returns - Is any product in the cart is over max quantity.\n */\n private readonly isOverMaxQuantity = async (cart: Cart, products: SimpleProduct[]): Promise => {\n let isOverMaxQuantity = false;\n const emailDeliveryModeCode = this.props.context.request.channel?.EmailDeliveryModeCode;\n\n await getAvailabilitiesForCartLineItems(\n new ProductAvailabilitiesForCartLineItems(this.props.context.actionContext.requestContext.apiSettings),\n this.props.context.actionContext\n )\n .then(productInventoryInformation => {\n const productsThatShouldValidateInventory: IProductInventoryInformation[] = [];\n\n cart.CartLines?.map(cartline => {\n const cartlineProduct = products.find(product => product.RecordId === cartline.ProductId);\n\n // If product is non-stocked or cartline is electronic delivery, then no inventory check\n const isStockedItem = cartlineProduct?.Behavior?.IsStockedProduct;\n const isEmailDelivery =\n cartline.DeliveryMode && cartline.DeliveryMode !== '' ? cartline.DeliveryMode === emailDeliveryModeCode : false;\n const shouldSkipInventoryCheck = !isStockedItem || isEmailDelivery;\n if (!shouldSkipInventoryCheck && ArrayExtensions.hasElements(productInventoryInformation)) {\n const foundProductAvailability = productInventoryInformation.find(productInventory => {\n return productInventory.ProductAvailableQuantity?.ProductId! === cartline.ProductId;\n });\n if (foundProductAvailability) {\n productsThatShouldValidateInventory.push(foundProductAvailability);\n }\n }\n });\n\n const cartLinesInventoryValidation = validateCartLinesInventory(\n cart.CartLines ?? [],\n productsThatShouldValidateInventory,\n this.props.context.actionContext,\n products,\n emailDeliveryModeCode\n );\n\n // If is invalid then exceeds the available quantity\n isOverMaxQuantity = !cartLinesInventoryValidation.isValid;\n return isOverMaxQuantity;\n })\n .catch(error => {\n this.props.context.actionContext.telemetry.exception(error);\n throw new Error('[getAvailabilitiesForCartLineItems] Unable to get availabilities for products in checkout cart');\n });\n\n return isOverMaxQuantity;\n };\n\n /**\n * Gets active child in module state.\n * @returns - The module state manager collection.\n */\n private readonly getActiveChildModuleStates = (): IModuleStateManager[] => {\n const { childIds, getModule } = this.props.moduleState;\n return childIds\n .map(getModule)\n .filter((state): state is IModuleStateManager => !!state && !state.isDisabled && state.hasModuleState);\n };\n\n /**\n * On container ready.\n */\n private readonly onContainerReady = (): void => {\n this.props.telemetry.information('Checkout onContainerReady is called.');\n\n this.getActiveChildModuleStates().forEach(state => {\n state.isReady && state.onContainerReady && state.onContainerReady();\n });\n };\n\n /**\n * Redirects to cart page.\n * @param notFoundEditCartLinkMessage - Not found edit cart link message.\n */\n private readonly redirectToCartPage = (notFoundEditCartLinkMessage: string): void => {\n const editCartLink = Msdyn365.getUrlSync('cart', this.props.context.actionContext) || '';\n if (window && editCartLink) {\n window.location.assign(editCartLink);\n } else {\n this.setState({\n errorMessage: this.props.resources.genericErrorMessage\n });\n this.props.context.telemetry.error(notFoundEditCartLinkMessage);\n }\n };\n\n /**\n * Validates for checkout.\n * @param retry - Retry flag.\n */\n private readonly validateForCheckout = (retry: boolean = true): void => {\n const notFoundEditCartLinkMessage = \"Cart doesn't pass validation, but no editCartLink found\";\n const cart = this.props.data.checkout.result!.checkoutCart.cart;\n const { Id, Version } = cart;\n const isOrderQuantityLimitsFeatureEnabledInHq =\n this.props.data.featureState.result?.find(\n featureState => featureState.Name === 'Dynamics.AX.Application.RetailDefaultOrderQuantityLimitsFeature'\n )?.IsEnabled || false;\n const isEcommerceQuantityLimitsFeatureEnabledInHq =\n this.props.data.featureState.result?.find(\n featureState => featureState.Name === 'Dynamics.AX.Application.EcommerceQuantityLimitConfigurationsFeature'\n )?.IsEnabled || false;\n const defaultOrderQuantityLimitsFeatureConfig = this.props.context?.request?.app?.platform?.enableDefaultOrderQuantityLimits;\n const customerInfo = this.props.data.customerInformation.result;\n const isB2BSite = isChannelTypeB2B(this.props.context.actionContext.requestContext);\n\n const isOrderQuantityLimitsFeatureEnabledInSiteSettings =\n defaultOrderQuantityLimitsFeatureConfig === 'all' ||\n (customerInfo &&\n ((defaultOrderQuantityLimitsFeatureConfig === 'b2b' && isB2BSite) ||\n (defaultOrderQuantityLimitsFeatureConfig === 'b2c' && !isB2BSite)));\n if (\n (isOrderQuantityLimitsFeatureEnabledInHq && isOrderQuantityLimitsFeatureEnabledInSiteSettings) ||\n isEcommerceQuantityLimitsFeatureEnabledInHq\n ) {\n if (Version && Id) {\n validateForCheckoutAsync({ callerContext: this.props.context.actionContext, bypassCache: 'none' }, Id, Version)\n .then((result: CartLineValidationResults) => {\n if (result.ValidationFailuresByCartLines?.length !== 0) {\n this.redirectToCartPage(notFoundEditCartLinkMessage);\n } else {\n this.setState({ isValidationPassed: true });\n }\n })\n .catch(error => {\n this.props.telemetry.warning(error);\n this.props.telemetry.debug('Unable to validate Cart');\n if (retry && error.name === 'Microsoft_Dynamics_Commerce_Runtime_InvalidCartVersion') {\n const cartState = this.props.data.checkout.result?.checkoutCart;\n cartState\n ?.refreshCart({})\n .then(() => {\n this.validateForCheckout(false);\n })\n .catch((refreshError: Error) => {\n this.props.telemetry.warning(refreshError.message);\n this.props.telemetry.debug('Unable to refresh Cart');\n });\n } else {\n this.redirectToCartPage(notFoundEditCartLinkMessage);\n }\n });\n } else {\n this.redirectToCartPage(notFoundEditCartLinkMessage);\n }\n } else {\n this.setState({ isValidationPassed: true });\n }\n };\n\n @action\n private readonly _setErrorMessage = (errorMessage: string): void => {\n this.props.telemetry.error(errorMessage);\n this.props.moduleState.setHasError(true);\n this.props.moduleState.onUpdating();\n this.setState({\n errorMessage\n });\n };\n\n /**\n * Save the address as Shipping and Billing address.\n * @param tokenizedPaymentCard - Tokenized payment card.\n */\n private readonly _saveShippingAndBillingAddress = async (tokenizedPaymentCard?: TokenizedPaymentCard): Promise => {\n const checkoutState = this.props.data.checkout.result;\n\n // For Paypal, the address returned in TokenizedPaymentCard will be used as both shipping and billing address.\n if (checkoutState && tokenizedPaymentCard && tokenizedPaymentCard.Zip) {\n const address: Address = this._getAddressFromTokenizedPaymentCard(tokenizedPaymentCard);\n\n await checkoutState.updateBillingAddressFromExpressCheckout({ newBillingAddressFromExpressCheckout: address });\n await checkoutState.updateShippingAddressFromExpressCheckout({ newShippingAddressFromExpressCheckout: address });\n }\n };\n\n /**\n * Get address from tokenizedPaymentCard.\n * @param tokenizedPaymentCard -- The tokenizedPaymentCard from the payment.\n * @returns The address.\n */\n private readonly _getAddressFromTokenizedPaymentCard = (tokenizedPaymentCard: TokenizedPaymentCard): Address => {\n const address: Address = {\n TwoLetterISORegionName: tokenizedPaymentCard.Country,\n Name: tokenizedPaymentCard.NameOnCard,\n Street: tokenizedPaymentCard.Address1,\n StreetNumber: tokenizedPaymentCard.Address2,\n City: tokenizedPaymentCard.City,\n State: tokenizedPaymentCard.State,\n ZipCode: tokenizedPaymentCard.Zip,\n Phone: tokenizedPaymentCard.Phone\n };\n\n return address;\n };\n\n /**\n * Handle checkout errors.\n * @param error -- The error on checkout api failure.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private readonly handleCheckoutError = (error: any) => {\n const {\n resources: {\n genericErrorMessage,\n invalidCartVersionErrorMessage,\n missingRequiredCartTenderLinesErrorMessage,\n timeoutErrorMessage\n },\n context: { actionContext }\n } = this.props;\n const checkoutResult = this.props.data.checkout.result;\n const apiError = error && error.message;\n if (error?.statusCode === 500) {\n const errorMessage = timeoutErrorMessage;\n this.setState({\n errorMessage\n });\n this.props.telemetry.exception(error);\n this.setState({ isPlaceOrderLoading: false });\n return;\n }\n if (checkoutResult && checkoutResult.shouldEnableCheckoutErrorDisplayMessaging) {\n const errorCode = error && error.name ? error.name : '';\n // apiError message will be used if errorcode resource/enums is unavailable\n setCheckoutErrors(errorCode, this.props.resources, !!checkoutResult.isExpressCheckoutApplied, actionContext, apiError);\n } else {\n let errorMessage = genericErrorMessage;\n this.setState({ isPlaceOrderClicked: false });\n\n if (error && error.name === 'Microsoft_Dynamics_Commerce_Runtime_InvalidCartVersion') {\n errorMessage = invalidCartVersionErrorMessage;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- unknown error type.\n } else if (error && error.name === 'Microsoft_Dynamics_Commerce_Runtime_MissingRequiredCartTenderLines') {\n errorMessage = missingRequiredCartTenderLinesErrorMessage;\n } else if (error && error.name === 'Microsoft_Dynamics_Commerce_Runtime_ExclusiveCouponCannotBeAppliedWithOtherCoupons') {\n // If api error is not available show generic message\n errorMessage = apiError || genericErrorMessage;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- unknown error type.\n if (\n this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout &&\n error.data?.AdditionalContext &&\n !this.props.data.checkout.result?.isPaymentVerificationRedirection\n ) {\n return;\n }\n\n this.setState({\n errorMessage\n });\n this.props.telemetry.exception(error);\n }\n };\n}\n\nexport default Checkout;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IActionContext } from '@msdyn365-commerce/core';\nimport {\n CheckoutModule,\n ErrorCode,\n ErrorLocation,\n ErrorMessageResource,\n getCheckoutState,\n ICheckoutError,\n ICheckoutState\n} from '@msdyn365-commerce/global-state/';\n\n// eslint-disable-next-line @typescript-eslint/no-extraneous-class -- create global class\nexport class CheckoutErrors {\n public static readonly ActionError: ICheckoutError = {\n errorCode: ErrorCode.ActionError,\n errorMessageResource: ErrorMessageResource.checkoutTimeoutErrorMessage,\n errorLocation: ErrorLocation.Checkout\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_BlockedLoyaltyCard: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_BlockedLoyaltyCard,\n errorMessageResource: ErrorMessageResource.blockedLoyaltyCardErrorMessage,\n errorLocation: ErrorLocation.CheckoutLoyalty\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_CustomerAccountLimitSignDifferentFromAmountDue: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_CustomerAccountLimitSignDifferentFromAmountDue,\n errorMessageResource: ErrorMessageResource.customerAccountLimitSignDifferentFromAmountDueErrorMessage,\n errorLocation: ErrorLocation.CheckoutCustomerAccountPayment\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentExceedsAvailableCreditLimit: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentExceedsAvailableCreditLimit,\n errorMessageResource: ErrorMessageResource.customerAccountPaymentExceedsAvailableCreditLimitErrorMessage,\n errorLocation: ErrorLocation.Checkout\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentExceedsCustomerAccountFloorLimit: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentExceedsCustomerAccountFloorLimit,\n errorMessageResource: ErrorMessageResource.customerAccountPaymentExceedsCustomerAccountFloorLimitErrorMessage,\n errorLocation: ErrorLocation.CheckoutCustomerAccountPayment\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentExceedsTotalAmountForCarryOutAndReturnItems: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentExceedsTotalAmountForCarryOutAndReturnItems,\n errorMessageResource: ErrorMessageResource.customerAccountPaymentExceedsTotalAmountForCarryOutAndReturnItemsErrorMessage,\n errorLocation: ErrorLocation.CheckoutCustomerAccountPayment\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentForCustomerWithoutAllowOnAccount: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentForCustomerWithoutAllowOnAccount,\n errorMessageResource: ErrorMessageResource.customerAccountPaymentForCustomerWithoutAllowOnAccountErrorMessage,\n errorLocation: ErrorLocation.CheckoutCustomerAccountPayment\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentNotAllowedForOpenInvoices: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentNotAllowedForOpenInvoices,\n errorMessageResource: ErrorMessageResource.customerAccountPaymentNotAllowedForOpenInvoicesErrorMessage,\n errorLocation: ErrorLocation.CheckoutCustomerAccountPayment\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_FraudRisk: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_FraudRisk,\n errorMessageResource: ErrorMessageResource.fraudRiskErrorMessage,\n errorLocation: ErrorLocation.CheckoutPaymentInstrument\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_GiftCardBalanceInquiryFailed: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_GiftCardBalanceInquiryFailed,\n errorMessageResource: ErrorMessageResource.giftCardBalanceInquiryFailedErrorMessage,\n errorLocation: ErrorLocation.CheckoutGiftCard\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_GiftCardCurrencyMismatch: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_GiftCardCurrencyMismatch,\n errorMessageResource: ErrorMessageResource.giftCardCurrencyMismatchErrorMessage,\n errorLocation: ErrorLocation.CheckoutGiftCard\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_InvalidCartVersion: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_InvalidCartVersion,\n errorMessageResource: ErrorMessageResource.invalidCartVersionErrorMessage,\n errorLocation: ErrorLocation.Checkout\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_InvalidLoyaltyCardNumber: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_InvalidLoyaltyCardNumber,\n errorMessageResource: ErrorMessageResource.invalidLoyaltyCardNumberErrorMessage,\n errorLocation: ErrorLocation.CheckoutLoyalty\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_InvalidPaymentRequest: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_InvalidPaymentRequest,\n errorMessageResource: ErrorMessageResource.invalidPaymentRequestErrorMessage,\n errorLocation: ErrorLocation.CheckoutPaymentInstrument\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_InvalidPaymentRequest_Console: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_InvalidPaymentRequest,\n errorMessageResource: ErrorMessageResource.invalidPaymentRequestConsoleErrorMessage,\n errorLocation: ErrorLocation.Console\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_MissingRequiredCartTenderLines: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_MissingRequiredCartTenderLines,\n errorMessageResource: ErrorMessageResource.missingRequiredCartTenderLinesErrorMessage,\n errorLocation: ErrorLocation.CheckoutPaymentInstrument\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_MultipleCustomerAccountPaymentsNotAllowed: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_MultipleCustomerAccountPaymentsNotAllowed,\n errorMessageResource: ErrorMessageResource.multipleCustomerAccountPaymentsNotAllowedErrorMessage,\n errorLocation: ErrorLocation.CheckoutCustomerAccountPayment\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_NoMoreThanOneLoyaltyTender: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_NoMoreThanOneLoyaltyTender,\n errorMessageResource: ErrorMessageResource.noMoreThanOneLoyaltyTenderErrorMessage,\n errorLocation: ErrorLocation.CheckoutLoyalty\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_NoResponseFromGatewayForGiftCardBalanceInquiry: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_NoResponseFromGatewayForGiftCardBalanceInquiry,\n errorMessageResource: ErrorMessageResource.noResponseFromGatewayForGiftCardBalanceInquiryErrorMessage,\n errorLocation: ErrorLocation.CheckoutGiftCard\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_NoTenderLoyaltyCard: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_NoTenderLoyaltyCard,\n errorMessageResource: ErrorMessageResource.noTenderLoyaltyCardErrorMessage,\n errorLocation: ErrorLocation.CheckoutLoyalty\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_NotEnoughRewardPoints: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_NotEnoughRewardPoints,\n errorMessageResource: ErrorMessageResource.notEnoughRewardPointsErrorMessage,\n errorLocation: ErrorLocation.CheckoutLoyalty\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_PaymentAlreadyVoided: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_PaymentAlreadyVoided,\n errorMessageResource: ErrorMessageResource.paymentAlreadyVoidedErrorMessage,\n errorLocation: ErrorLocation.CheckoutPaymentInstrument\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_PaymentAmountExceedsGiftBalance: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_PaymentAmountExceedsGiftBalance,\n errorMessageResource: ErrorMessageResource.paymentAmountExceedsGiftBalanceErrorMessage,\n errorLocation: ErrorLocation.CheckoutGiftCard\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_PaymentRequiresMerchantProperties: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_PaymentRequiresMerchantProperties,\n errorMessageResource: ErrorMessageResource.paymentRequiresMerchantPropertiesErrorMessage,\n errorLocation: ErrorLocation.CheckoutPaymentInstrument\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_PaymentRequiresMerchantProperties_Console: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_PaymentRequiresMerchantProperties,\n errorMessageResource: ErrorMessageResource.paymentRequiresMerchantPropertiesConsoleErrorMessage,\n errorLocation: ErrorLocation.Console\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_PaymentUsingUnauthorizedAccount: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_PaymentUsingUnauthorizedAccount,\n errorMessageResource: ErrorMessageResource.paymentUsingUnauthorizedAccountErrorMessage,\n errorLocation: ErrorLocation.CheckoutCustomerAccountPayment\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_RefundAmountMoreThanAllowed: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_RefundAmountMoreThanAllowed,\n errorMessageResource: ErrorMessageResource.refundAmountMoreThanAllowedErrorMessage,\n errorLocation: ErrorLocation.CheckoutLoyalty\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_UnableToAuthorizePayment: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_UnableToAuthorizePayment,\n errorMessageResource: ErrorMessageResource.unableToAuthorizePaymentErrorMessage,\n errorLocation: ErrorLocation.CheckoutPaymentInstrument\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_UnableToAuthorizePaymentCardAdditionalContextRequired: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_UnableToAuthorizePaymentCardAdditionalContextRequired,\n errorMessageResource: ErrorMessageResource.unableToAuthorizePaymentCardAdditionalContextRequiredErrorMessage,\n errorLocation: ErrorLocation.CheckoutPaymentInstrument\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_UnableToAuthorizePaymentCardTypeMissingOrNotSupported: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_UnableToAuthorizePaymentCardTypeMissingOrNotSupported,\n errorMessageResource: ErrorMessageResource.unableToAuthorizePaymentCardTypeMissingOrNotSupportedErrorMessage,\n errorLocation: ErrorLocation.CheckoutPaymentInstrument\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_UnableToCancelPayment: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_UnableToCancelPayment,\n errorMessageResource: ErrorMessageResource.unableToCancelPaymentErrorMessage,\n errorLocation: ErrorLocation.CheckoutPaymentInstrument\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_UnableToReadCardTokenInfo: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_UnableToReadCardTokenInfo,\n errorMessageResource: ErrorMessageResource.unableToReadCardTokenInfoErrorMessage,\n errorLocation: ErrorLocation.CheckoutPaymentInstrument\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_UnableToRetrieveCardPaymentAcceptResult: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_UnableToRetrieveCardPaymentAcceptResult,\n errorMessageResource: ErrorMessageResource.unableToRetrieveCardPaymentAcceptResultErrorMessage,\n errorLocation: ErrorLocation.CheckoutPaymentInstrument\n };\n\n public static readonly checkoutErrorsList: ICheckoutError[] = [\n CheckoutErrors.ActionError,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_BlockedLoyaltyCard,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_CustomerAccountLimitSignDifferentFromAmountDue,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentExceedsAvailableCreditLimit,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentExceedsCustomerAccountFloorLimit,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentExceedsTotalAmountForCarryOutAndReturnItems,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentForCustomerWithoutAllowOnAccount,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentNotAllowedForOpenInvoices,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_FraudRisk,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_GiftCardBalanceInquiryFailed,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_GiftCardCurrencyMismatch,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_InvalidCartVersion,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_InvalidLoyaltyCardNumber,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_InvalidPaymentRequest,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_InvalidPaymentRequest_Console,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_MissingRequiredCartTenderLines,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_MultipleCustomerAccountPaymentsNotAllowed,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_NoMoreThanOneLoyaltyTender,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_NoResponseFromGatewayForGiftCardBalanceInquiry,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_NoTenderLoyaltyCard,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_NotEnoughRewardPoints,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_PaymentAlreadyVoided,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_PaymentAmountExceedsGiftBalance,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_PaymentRequiresMerchantProperties,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_PaymentRequiresMerchantProperties_Console,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_PaymentUsingUnauthorizedAccount,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_RefundAmountMoreThanAllowed,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_UnableToAuthorizePayment,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_UnableToAuthorizePaymentCardAdditionalContextRequired,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_UnableToAuthorizePaymentCardTypeMissingOrNotSupported,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_UnableToCancelPayment,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_UnableToReadCardTokenInfo,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_UnableToRetrieveCardPaymentAcceptResult\n ];\n}\n\nexport async function setCheckoutErrors(\n errorCode: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n resources: any,\n isExpressCheckoutApplied: boolean,\n ctx: IActionContext,\n apiError?: string | undefined\n): Promise {\n let clientCheckoutError: ICheckoutError | undefined;\n const consoleCheckoutErrors: ICheckoutError[] = [];\n\n const checkoutState: ICheckoutState = await getCheckoutState(ctx).catch((error: Error) => {\n ctx.telemetry.exception(error);\n throw error;\n });\n\n // find the checkout errors\n for (const checkoutError of CheckoutErrors.checkoutErrorsList) {\n if (errorCode === checkoutError.errorCode) {\n if (checkoutError.errorLocation === ErrorLocation.Console) {\n const consoleCheckoutError: ICheckoutError = {\n errorCode: checkoutError.errorCode,\n errorMessageResource: checkoutError.errorMessageResource,\n errorLocation: checkoutError.errorLocation\n };\n consoleCheckoutErrors.push(consoleCheckoutError);\n } else {\n if (clientCheckoutError) {\n ctx.telemetry.exception(new Error('Invalid number of client checkout errors.'));\n throw new Error('Invalid number of client checkout errors.');\n } else {\n clientCheckoutError = {\n errorCode: checkoutError.errorCode,\n errorMessageResource: checkoutError.errorMessageResource,\n errorLocation: checkoutError.errorLocation\n };\n }\n }\n }\n }\n\n // log the console checkout errors\n for (const consoleCheckoutError of consoleCheckoutErrors) {\n consoleCheckoutError.errorMessage = getCheckoutErrorMessage(resources, consoleCheckoutError.errorMessageResource!, apiError!);\n console.log(consoleCheckoutError.errorMessage);\n }\n\n // handle the client checkout error\n if (clientCheckoutError) {\n clientCheckoutError.errorMessage = getCheckoutErrorMessage(resources, clientCheckoutError.errorMessageResource!, apiError!);\n\n if (isExpressCheckoutApplied && clientCheckoutError.errorLocation === ErrorLocation.CheckoutPaymentInstrument) {\n clientCheckoutError.errorLocation = ErrorLocation.Checkout;\n }\n\n await checkoutState.updateCheckoutError({ newCheckoutError: clientCheckoutError });\n await checkoutState.updateShouldFocusOnCheckoutError({ newShouldFocusOnCheckoutError: true });\n } else {\n // if could not map to any checkout error(s), show the API error message over generic error\n if (consoleCheckoutErrors.length === 0) {\n const genericError = {\n errorLocation: ErrorLocation.Checkout\n };\n if (apiError) {\n genericError['errorMessage'] = apiError;\n } else {\n genericError['errorMessage'] = resources.genericErrorMessage;\n }\n\n await checkoutState.updateCheckoutError({ newCheckoutError: genericError });\n await checkoutState.updateShouldFocusOnCheckoutError({ newShouldFocusOnCheckoutError: true });\n }\n }\n}\n\nexport async function focusOnCheckoutError(checkoutErrorRef: React.RefObject, ctx: IActionContext): Promise {\n const checkoutState: ICheckoutState = await getCheckoutState(ctx).catch((error: Error) => {\n ctx.telemetry.exception(error);\n throw error;\n });\n\n checkoutErrorRef.current && checkoutErrorRef.current.scrollIntoView();\n\n await checkoutState.updateCheckoutErrorFocus({ newCheckoutErrorFocus: CheckoutModule.None });\n await checkoutState.updateShouldFocusOnCheckoutError({ newShouldFocusOnCheckoutError: false });\n}\n\nexport async function setCheckoutErrorFocus(checkoutModuleId: string, ctx: IActionContext): Promise {\n const checkoutState: ICheckoutState = await getCheckoutState(ctx).catch((error: Error) => {\n ctx.telemetry.exception(error);\n throw error;\n });\n\n for (const checkoutModule of Object.keys(CheckoutModule)) {\n if (checkoutModuleId.includes(CheckoutModule[checkoutModule])) {\n await checkoutState.updateCheckoutErrorFocus({ newCheckoutErrorFocus: CheckoutModule[checkoutModule] });\n return;\n }\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getCheckoutErrorMessage(resources: any, errorMessageResource: ErrorMessageResource, errorMessageFromAPI: string): string {\n const errorResource = Object.keys(resources).find(resource => resource === errorMessageResource);\n // return API error when error resource string is not found in checkout definition file\n return errorResource !== undefined ? resources[errorResource] : errorMessageFromAPI;\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\n/**\n * The payment error.\n */\nexport interface IPaymentError {\n title: string;\n message: string;\n className?: string;\n}\n\n/**\n * The payment error.\n * @param param0 - First param.\n * @param param0.title - Title.\n * @param param0.message - Message.\n * @param param0.className - ClassName.\n * @returns React node.\n */\nexport const ErrorComponent: React.FC = ({ title, message, className = 'ms-checkout-payment-instrument' }) => (\n
\n

{title}

\n

{message}

\n
\n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Alert, Button, INodeProps, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { showAdditionalFields } from '../gift-card-balance-check.props.autogenerated';\n\nexport interface IGetFormInput {\n errorMessage: string;\n giftCardNumber: string;\n giftCardPin: string;\n giftCardExp: string;\n inputRef?: React.RefObject;\n inputPinRef?: React.RefObject;\n inputExpRef?: React.RefObject;\n supportExternalGiftCard?: boolean;\n additionalFields?: showAdditionalFields;\n resources: {\n balanceCheckButton: string;\n giftCardFormLabel: string;\n giftCardNumberLabel: string;\n giftCardPinLabel: string;\n giftCardExpLabel: string;\n giftCardAlertLabel: string;\n giftCardPinPlaceholderText: string;\n giftCardExpPlaceholderText: string;\n };\n onEnterGiftCardNumber(giftCardNumber: string): void;\n onEnterGiftCardPin(giftCardPin: string): void;\n onEnterGiftCardExp(giftCardExp: string): void;\n onApplyGiftCard(): Promise;\n}\n\nexport interface IForm {\n formProps: INodeProps;\n label: React.ReactNode;\n inputPinLabel: React.ReactNode;\n inputExpLabel: React.ReactNode;\n alert: React.ReactNode;\n inputProps: INodeProps;\n inputNumProps: INodeProps;\n inputPinProps: INodeProps;\n inputExpProps: INodeProps;\n inputNumber: React.ReactNode;\n inputPin: React.ReactNode;\n inputExp: React.ReactNode;\n applyButton: React.ReactNode;\n supportExternalGiftCard: boolean | undefined;\n showGiftCardPinInput: boolean | undefined;\n showGiftCardExpInput: boolean | undefined;\n alertFieldLabel: React.ReactNode;\n}\n\n/**\n * On apply function.\n * @param onApplyGiftCard -On apply gift card.\n * @returns Apply gift card.\n */\nconst onApplyHandler = (onApplyGiftCard: () => Promise) => async (event: React.SyntheticEvent): Promise => {\n event.preventDefault();\n await onApplyGiftCard();\n};\n\n/**\n * On change number function.\n * @param onEnterGiftCardNumber -On enter gift card number.\n * @returns On gift card enter pin function result.\n */\nconst onChangeNumberHandler = (onEnterGiftCardNumber: (giftCardNumber: string) => void) => (event: React.ChangeEvent) => {\n const value = (event.target.value || '').replace(new RegExp('[<>]', 'gi'), '');\n onEnterGiftCardNumber(value);\n};\n\n/**\n * On change pin function.\n * @param onEnterGiftCardPin -On enter gift card pin.\n * @returns On enter gift card pin function result.\n */\nconst onChangePinHandler = (onEnterGiftCardPin: (giftCardPin: string) => void) => (event: React.ChangeEvent) => {\n const value = (event.target.value || '').replace(new RegExp('[<>]', 'gi'), '');\n onEnterGiftCardPin(value);\n};\n\n/**\n * On change exp function.\n * @param onEnterGiftCardExp -On enter gift card.\n * @returns On enter gift card function result.\n */\nconst onChangeExpHandler = (onEnterGiftCardExp: (giftCardExp: string) => void) => (event: React.ChangeEvent) => {\n const value = (event.target.value || '').replace(new RegExp('[<>]', 'gi'), '');\n onEnterGiftCardExp(value);\n};\n\nexport const getForm = (options: IGetFormInput): IForm => {\n const {\n errorMessage,\n inputRef,\n inputPinRef,\n inputExpRef,\n giftCardNumber,\n giftCardPin,\n giftCardExp,\n onEnterGiftCardNumber,\n onEnterGiftCardPin,\n onEnterGiftCardExp,\n onApplyGiftCard,\n supportExternalGiftCard,\n additionalFields,\n resources: {\n balanceCheckButton,\n giftCardFormLabel,\n giftCardNumberLabel,\n giftCardPinLabel,\n giftCardExpLabel,\n giftCardAlertLabel,\n giftCardPinPlaceholderText,\n giftCardExpPlaceholderText\n }\n } = options;\n\n const formProps = {\n className: classnames('ms-gift-card-balance-check__form', { 'is-invalid': !!errorMessage }),\n onSubmit: onApplyHandler(onApplyGiftCard),\n tag: 'form' as NodeTag\n };\n\n const label = (\n \n );\n\n const inputPinLabel = (\n \n );\n\n const inputExpLabel = (\n \n );\n\n const alertFieldLabel = (\n \n );\n\n const alert = (\n \n {errorMessage}\n \n );\n\n const inputProps = {\n className: 'ms-gift-card-balance-check__input-fields'\n };\n\n const inputNumProps = {\n className: 'ms-gift-card-balance-check__input-num-fields'\n };\n\n const inputPinProps = {\n className: 'ms-gift-card-balance-check__input-pin-fields'\n };\n\n const inputExpProps = {\n className: 'ms-gift-card-balance-check__input-exp-fields'\n };\n\n const inputNumber = (\n \n );\n\n const inputPin = (\n \n );\n\n const inputExp = (\n \n );\n\n const applyButton = (\n \n {balanceCheckButton}\n \n );\n\n let showGiftCardPinInput = false;\n let showGiftCardExpInput = false;\n\n switch (additionalFields) {\n case showAdditionalFields.pin:\n showGiftCardPinInput = true;\n break;\n case showAdditionalFields.expirationDate:\n showGiftCardExpInput = true;\n break;\n case showAdditionalFields.pinAndExpirationDate:\n showGiftCardPinInput = true;\n showGiftCardExpInput = true;\n break;\n default:\n }\n\n return {\n formProps,\n label,\n inputPinLabel,\n inputExpLabel,\n alert,\n inputProps,\n inputNumProps,\n inputPinProps,\n inputExpProps,\n inputNumber,\n inputPin,\n inputExp,\n applyButton,\n supportExternalGiftCard,\n showGiftCardPinInput,\n showGiftCardExpInput,\n alertFieldLabel\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { GiftCard } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IGetItemInput {\n giftCard: GiftCard;\n resources: {\n enteredGiftCardLabel: string;\n giftCardAvailableBalanceLabel: string;\n };\n getFormattedPrice(price?: number, currencyCode?: string): string;\n}\n\nexport interface IItem {\n itemProps: INodeProps;\n id?: string;\n selectedGiftCard: React.ReactNode;\n removeButton?: React.ReactNode;\n}\n\n/**\n * GiftCardItem component.\n * @param root0\n * @param root0.giftCard\n * @param root0.getFormattedPrice\n * @param root0.resources\n * @param root0.resources.enteredGiftCardLabel\n * @param root0.resources.giftCardAvailableBalanceLabel\n * @extends {React.PureComponent}\n */\nexport const getItem = ({\n giftCard,\n getFormattedPrice,\n resources: { enteredGiftCardLabel, giftCardAvailableBalanceLabel }\n}: IGetItemInput): IItem => {\n const balance = getFormattedPrice(giftCard.Balance, giftCard.CardCurrencyCode);\n const giftCardLast4Digit = (giftCard.Id || '').substr(-4);\n\n const itemProps = {\n className: 'ms-gift-card-balance-check__item'\n };\n\n const selectedGiftCard = (\n \n {enteredGiftCardLabel}\n {` `}\n {giftCardLast4Digit}\n {` `}({giftCardAvailableBalanceLabel}\n {` `}\n {balance})\n \n );\n\n return {\n itemProps,\n id: giftCard && giftCard.Id,\n selectedGiftCard\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n getGiftCardAsync,\n getTenderTypesAsync,\n resolveCardTypesAsync\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\nimport {\n CardType,\n CardTypeInfo,\n GiftCard,\n RetailOperation,\n TenderType\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport * as React from 'react';\n\nimport { OPERATIONS } from '../checkout';\nimport { getForm, IForm } from './components/get-form';\nimport { getItem, IItem } from './components/get-item';\nimport { IGiftCardBalanceCheckProps } from './gift-card-balance-check.props.autogenerated';\n\ninterface IGiftCardBalanceCheckState {\n isFetchingGiftCard: boolean;\n errorMessage: string;\n giftCardNumber: string;\n giftCardPin: string;\n giftCardExp: string;\n giftCard?: GiftCard;\n}\n\nenum SupportedGiftCardType {\n Internal = 'internal',\n External = 'external',\n Both = 'both'\n}\n\nexport interface IGiftCardBalanceCheckModuleProps extends IGiftCardBalanceCheckProps<{}> {}\n\nexport interface IGiftCardBalanceCheckViewProps extends IGiftCardBalanceCheckProps<{}>, IGiftCardBalanceCheckState {\n className?: string;\n\n form: IForm;\n item?: IItem;\n\n giftCardBalanceCheckProps: IModuleProps;\n\n enterGiftCardNumber?(giftCardNumber: string): void;\n enterGiftCardPin?(giftCardPin: string): void;\n enterGiftCardExp?(giftCardExp: string): void;\n applyGiftCard?(): void;\n}\n\n/**\n *\n * GiftCardBalanceCheck component.\n * @extends {React.Component}\n */\nexport class GiftCardBalanceCheck extends React.Component {\n public state: IGiftCardBalanceCheckState = {\n isFetchingGiftCard: false,\n errorMessage: '',\n giftCardNumber: '',\n giftCardPin: '',\n giftCardExp: ''\n };\n\n private readonly inputRef: React.RefObject = React.createRef();\n\n private readonly inputPinRef: React.RefObject = React.createRef();\n\n private readonly inputExpRef: React.RefObject = React.createRef();\n\n public shouldComponentUpdate(nextProps: IGiftCardBalanceCheckModuleProps, nextState: IGiftCardBalanceCheckState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const {\n config: { className, showAdditionalFields },\n resources\n } = this.props;\n const { errorMessage, giftCardNumber, giftCardPin, giftCardExp } = this.state;\n\n const supportedGiftCardType = this.props.context.app.config.giftCardSupported;\n\n if (!this._isEnabled()) {\n this.props.context.telemetry.error('Gift card balance check is not supported, module wont render');\n return null;\n }\n\n const supportExternalGiftCard = supportedGiftCardType !== SupportedGiftCardType.Internal;\n\n const moduleClassName = classname('ms-gift-card-balance-check', className);\n\n const viewProps: IGiftCardBalanceCheckViewProps = {\n ...this.props,\n ...this.state,\n className: moduleClassName,\n giftCardBalanceCheckProps: { moduleProps: this.props, className: moduleClassName },\n\n enterGiftCardNumber: this._enterGiftCardNumber,\n enterGiftCardPin: this._enterGiftCardPin,\n enterGiftCardExp: this._enterGiftCardExp,\n applyGiftCard: this._applyGiftCard,\n\n form: getForm({\n errorMessage,\n giftCardNumber,\n giftCardPin,\n giftCardExp,\n inputRef: this.inputRef,\n inputPinRef: this.inputPinRef,\n inputExpRef: this.inputExpRef,\n resources,\n supportExternalGiftCard,\n additionalFields: showAdditionalFields,\n onEnterGiftCardNumber: this._enterGiftCardNumber,\n onEnterGiftCardPin: this._enterGiftCardPin,\n onEnterGiftCardExp: this._enterGiftCardExp,\n onApplyGiftCard: this._applyGiftCard\n }),\n item:\n this.state.giftCard &&\n getItem({\n giftCard: this.state.giftCard,\n getFormattedPrice: this._getFormattedPrice,\n resources\n })\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private readonly _isEnabled = (): boolean => {\n if (\n !this.props.context.request.user.isAuthenticated &&\n this.props.context.app.config.giftCardSupported !== SupportedGiftCardType.External &&\n !this.props.config.shouldBeEnabledForGuest\n ) {\n return false;\n }\n return true;\n };\n\n private readonly _getFormattedPrice = (price: number = 0, currencyCode: string = 'USD'): string => {\n return this.props.context.cultureFormatter.formatCurrency(price, currencyCode);\n };\n\n private readonly _enterGiftCardNumber = (giftCardNumber: string): void => {\n this.setState({\n giftCardNumber\n });\n this._clearError();\n };\n\n private readonly _enterGiftCardPin = (giftCardPin: string): void => {\n this.setState({\n giftCardPin\n });\n this._clearError();\n };\n\n private readonly _enterGiftCardExp = (giftCardExp: string): void => {\n this.setState({\n giftCardExp\n });\n this._clearError();\n };\n\n private readonly _clearError = (): void => {\n this.setState({\n errorMessage: ''\n });\n };\n\n private readonly _setError = (errorMessage: string): void => {\n this.props.telemetry.error('Error', errorMessage);\n this.props.telemetry.debug('Error', errorMessage);\n this.setState({\n errorMessage\n });\n };\n\n private readonly _applyGiftCard = async (): Promise => {\n if (this.state.isFetchingGiftCard) {\n return;\n }\n this.setState({\n isFetchingGiftCard: true\n });\n\n const giftCardNumber = this.state.giftCardNumber.trim();\n const giftCardPin = this.state.giftCardPin.trim();\n const giftCardExp = this.state.giftCardExp.trim();\n\n const giftCardTypes = await this._getGiftCardTypes(giftCardNumber);\n const giftCardType = giftCardTypes && giftCardTypes[0];\n const isPinRequired = giftCardType && giftCardType.IsPinRequired;\n const isExpRequired = giftCardType && giftCardType.IsExpirationDateRequired;\n const tenderTypeId = giftCardType && giftCardType.PaymentMethodId;\n const giftCard = await this._getGiftCard(giftCardNumber, giftCardPin, giftCardExp, isPinRequired, isExpRequired, tenderTypeId);\n\n if (giftCard) {\n this._clearError();\n this.setState({\n giftCardNumber: '',\n giftCardPin: '',\n giftCardExp: '',\n isFetchingGiftCard: false,\n giftCard\n });\n return Promise.resolve();\n }\n const input = this.inputRef && this.inputRef.current && this.inputRef.current.focus && (this.inputRef.current as HTMLElement);\n input && input.focus();\n this.setState({\n isFetchingGiftCard: false,\n giftCard: undefined\n });\n };\n\n private readonly _findGiftcardTenderTypes = (\n tenderTypes: TenderType[],\n operationId: RetailOperation,\n giftcardType: string\n ): string[] | undefined => {\n let matchedTenderTypes: TenderType[] | undefined;\n\n switch (giftcardType) {\n case SupportedGiftCardType.Internal:\n matchedTenderTypes = tenderTypes.filter(\n tenderType => tenderType.OperationId === operationId && tenderType.ConnectorId === ''\n );\n break;\n case SupportedGiftCardType.External:\n matchedTenderTypes = tenderTypes.filter(\n tenderType => tenderType.OperationId === operationId && tenderType.ConnectorId !== ''\n );\n break;\n default:\n throw new Error('Invalid gift card type');\n }\n\n if (matchedTenderTypes) {\n return matchedTenderTypes.map(tenderType => tenderType.TenderTypeId || '');\n }\n return;\n };\n\n private readonly _getGiftCard = async (\n giftCardNumber: string,\n giftCardPin: string,\n giftCardExp: string,\n isPinRequired: boolean | undefined,\n isExpRequired: boolean | undefined,\n tenderTypeId: string | undefined\n ): Promise => {\n const {\n resources: { invalidCardTypeError, noBalanceError, invalidCardInfoError, noCardPinError, noCardExpError }\n } = this.props;\n\n const supportedGiftCardType = this.props.context.app.config.giftCardSupported;\n\n if (!tenderTypeId) {\n return undefined;\n }\n\n const tenderTypes = await getTenderTypesAsync({ callerContext: this.props.context.actionContext, queryResultSettings: {} }).catch(\n error => {\n throw error;\n }\n );\n\n if (!tenderTypes) {\n throw new Error('Fail to get gift card tender line');\n }\n\n const internalGiftcardTenderTypes = this._findGiftcardTenderTypes(\n tenderTypes,\n OPERATIONS.PayGiftCertificate,\n SupportedGiftCardType.Internal\n );\n const externalGiftcardTenderTypes = this._findGiftcardTenderTypes(\n tenderTypes,\n OPERATIONS.PayGiftCertificate,\n SupportedGiftCardType.External\n );\n\n switch (supportedGiftCardType) {\n case undefined:\n case SupportedGiftCardType.Internal:\n if (!internalGiftcardTenderTypes?.includes(tenderTypeId)) {\n this._setError(invalidCardTypeError);\n return undefined;\n }\n break;\n case SupportedGiftCardType.External:\n if (!externalGiftcardTenderTypes?.includes(tenderTypeId)) {\n this._setError(invalidCardTypeError);\n return undefined;\n }\n break;\n case SupportedGiftCardType.Both:\n if (!internalGiftcardTenderTypes?.includes(tenderTypeId) && !externalGiftcardTenderTypes?.includes(tenderTypeId)) {\n this._setError(invalidCardTypeError);\n return undefined;\n }\n break;\n default:\n throw new Error('Unsupported gift card type');\n }\n\n if (!this.props.context.request.user.isAuthenticated && internalGiftcardTenderTypes?.includes(tenderTypeId)) {\n this._setError(invalidCardTypeError);\n return undefined;\n }\n\n if (isPinRequired && giftCardPin === '') {\n this._setError(noCardPinError);\n return undefined;\n }\n\n if (isExpRequired && giftCardExp === '') {\n this._setError(noCardExpError);\n return undefined;\n }\n\n const month = Number.parseInt(giftCardExp.split('/')[0], 10);\n const year = Number.parseInt(giftCardExp.split('/')[1], 10);\n\n return getGiftCardAsync({ callerContext: this.props.context.actionContext }, giftCardNumber, tenderTypeId, giftCardPin, month, year)\n .then(activeGiftCard => {\n if (!activeGiftCard.Balance || activeGiftCard.Balance === 0) {\n this._setError(noBalanceError);\n return;\n }\n return activeGiftCard;\n })\n .catch(error => {\n this._setError(invalidCardInfoError);\n return undefined;\n });\n };\n\n private readonly _getGiftCardTypes = async (giftCardNumber: string): Promise => {\n const {\n resources: { emptyInputError, invalidCodeError }\n } = this.props;\n\n if (!giftCardNumber) {\n this._setError(emptyInputError);\n return undefined;\n }\n\n return resolveCardTypesAsync({ callerContext: this.props.context.actionContext }, giftCardNumber, CardType.GiftCard)\n .then(giftCardTypes => {\n if (!giftCardTypes || giftCardTypes.length === 0 || giftCardTypes[0] === undefined) {\n this._setError(invalidCodeError);\n return;\n }\n return giftCardTypes;\n })\n .catch(error => {\n this._setError(invalidCodeError);\n return undefined;\n });\n };\n}\n\nexport default GiftCardBalanceCheck;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { IModuleStateProps, EnabledPaymentsForOBO } from '@msdyn365-commerce-modules/checkout-utilities';\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport classname from 'classnames';\n\nimport { reaction } from 'mobx';\nimport { ICheckoutExpressPaymentContainerData } from './checkout-express-payment-container.data';\nimport {\n ICheckoutExpressPaymentContainerProps,\n ICheckoutExpressPaymentContainerHeadingData\n} from './checkout-express-payment-container.props.autogenerated';\nimport { WaitingComponent } from '../../common/waiting';\n\n/**\n * ICheckoutExpressPaymentContainerModuleProps interface.\n */\nexport interface ICheckoutExpressPaymentContainerModuleProps\n extends ICheckoutExpressPaymentContainerProps,\n IModuleStateProps {}\n\nexport interface ICheckoutExpressPaymentContainerViewProps\n extends ICheckoutExpressPaymentContainerProps<{}>,\n ICheckoutExpressPaymentContainerState {\n checkoutPlainContainerProps: IModuleProps;\n items: React.ReactNode[];\n isReady?: boolean;\n waiting?: React.ReactNode;\n title?: React.ReactNode;\n headerProps: INodeProps;\n}\n\n/**\n * Checkout Express Payment Container State.\n */\nexport interface ICheckoutExpressPaymentContainerState {\n isReady?: boolean;\n shouldHideExpressPaymentContainer?: boolean;\n}\n\n/**\n *\n * CheckoutExpressPaymentContainer component\n * @extends {React.PureComponent>}\n */\n@observer\nexport class CheckoutExpressPaymentContainer extends React.PureComponent<\n ICheckoutExpressPaymentContainerProps,\n ICheckoutExpressPaymentContainerState\n> {\n private readonly moduleClassName: string = 'ms-checkout-express-section-container';\n\n public constructor(props: ICheckoutExpressPaymentContainerModuleProps) {\n super(props);\n this.state = {\n isReady: false,\n shouldHideExpressPaymentContainer: this.props.data.checkout.result?.shippingAddressFromExpressCheckout ? true : false\n };\n }\n\n public componentDidMount(): void {\n reaction(\n () => this.props.data.checkout.result?.isExpressPaymentModulesReady,\n () => {\n const items = this._getItems();\n if (items.length === 0) {\n this.props.context.telemetry.error('Checkout express payment container content is empty, module wont render');\n } else {\n let isReady = true;\n\n for (const item of items) {\n // @ts-ignore\n if (item.key.includes('checkout-express')) {\n // @ts-ignore\n const extensionPropertyKey = `is${item.props.config.paymentTenderType}ExpressModuleReady`;\n\n const isModuleReady =\n this.props.data.checkout.result?.isExpressPaymentModulesReady?.find(\n property => property.Key === extensionPropertyKey\n )?.Value?.BooleanValue ?? false;\n isReady = isReady && isModuleReady;\n }\n }\n this.setState({ isReady });\n }\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.isExpressCheckoutApplied,\n isExpressCheckoutApplied => {\n this.setState({ shouldHideExpressPaymentContainer: isExpressCheckoutApplied });\n }\n );\n }\n\n public render(): JSX.Element | null {\n const {\n config: { checkoutExpressPaymentContainerHeading },\n resources: { checkoutExpressPaymentSectionLoadingMessage },\n data: { checkout }\n } = this.props;\n\n if (!checkout.result || checkout.result?.isExpressCheckoutApplied || checkout.result?.isPaymentVerificationRedirection) {\n this.props.context.telemetry.information('Other payment is applied, checkout express payment container module wont render');\n return null;\n }\n\n if (this.props.context.request.user.isOBORequest && EnabledPaymentsForOBO.ExpressPayment === 0) {\n this.props.context.telemetry.information('isOBORequest is enabled, Checkout express payment container module wont render');\n return null;\n }\n\n const items = this._getItems();\n if (items.length === 0) {\n this.props.context.telemetry.error('Checkout express payment container content is empty, module wont render');\n return null;\n }\n\n const shouldHideExpressPaymentContainerClassName: string = this.state.shouldHideExpressPaymentContainer ? 'hide' : '';\n\n const moduleClassName = classname(\n 'ms-checkout-express-payment-container',\n this.props.config.className,\n shouldHideExpressPaymentContainerClassName\n );\n\n const viewProps: ICheckoutExpressPaymentContainerViewProps = {\n ...this.props,\n\n checkoutPlainContainerProps: {\n moduleProps: this.props,\n className: moduleClassName\n },\n items: items,\n isReady: this.state.isReady,\n waiting: ,\n title: checkoutExpressPaymentContainerHeading && this._renderMsdyn365Text(checkoutExpressPaymentContainerHeading),\n headerProps: { className: 'ms-checkout-express-payment-container__head' }\n };\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private readonly _getItems = (): React.ReactNode[] => {\n const { slots } = this.props;\n return (slots && slots.primary && slots.primary.length && slots.primary) || [];\n };\n\n /**\n * Renders heading.\n * @param checkoutExpressPaymentContainerHeading - The checkout express container heading.\n * @returns React node.\n */\n private _renderMsdyn365Text(checkoutExpressPaymentContainerHeading: ICheckoutExpressPaymentContainerHeadingData): React.ReactNode {\n return (\n \n );\n }\n\n /**\n * Event handler for heading change event.\n * @param event - The content change event in heading element.\n * @returns The new heading value.\n */\n private _handleCheckoutExpressContainerHeadingChange = (event: Msdyn365.ContentEditableEvent) =>\n (this.props.config.checkoutExpressPaymentContainerHeading!.text = event.target.value);\n}\n\nexport default CheckoutExpressPaymentContainer;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CacheType, IActionContext, IActionInput } from '@msdyn365-commerce/core';\n\nimport { IModuleStates } from './module-state.data';\n\n/**\n * GetModulesInput.\n */\nexport class ModuleStatesCacheKey implements IActionInput {\n public getCacheKey = () => 'ModuleState';\n\n public getCacheObjectType = () => 'ModuleState';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\nexport function getModuleStates(ctx: IActionContext): IModuleStates {\n const cacheKey = new ModuleStatesCacheKey();\n\n let moduleStates = ctx.get(cacheKey.getCacheObjectType(), cacheKey.getCacheKey());\n if (moduleStates) {\n return moduleStates;\n }\n ctx.update(cacheKey, {});\n moduleStates = ctx.get(cacheKey.getCacheObjectType(), cacheKey.getCacheKey());\n return moduleStates;\n}\n\nexport function updateModuleStates(value: IModuleStates, ctx: IActionContext): void {\n const cacheKey = new ModuleStatesCacheKey();\n ctx.update(cacheKey, value);\n}\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { ICheckoutPaymentInstrumentViewProps, ICheckoutPaymentOverlayModal } from './lds-checkout-payment-instrument-2';\r\n\r\nimport {\r\n getIdentificationTypesAsync,\r\n getIdentificationTypesApplicabilityRulesAsync\r\n // churchValidatePaymentAsync\r\n} from '../../actions/DataActionExtension.g';\r\n// @ts-ignore\r\nimport { Secondary } from '@churchofjesuschrist/eden-buttons';\r\n\r\nconst OverlayModal: React.FC = ({ modal }) => {\r\n return ;\r\n};\r\n\r\nconst CheckoutPaymentInstrumentView: React.FC = props => {\r\n const {\r\n checkoutPaymentInstrument,\r\n // className,\r\n // id,\r\n waiting,\r\n alert,\r\n paymentInformation,\r\n addPaymentForm,\r\n overlayModal,\r\n updateFunction,\r\n context,\r\n resources,\r\n updatePaymentAttributes\r\n // ...restProps\r\n } = props;\r\n // return (\r\n // \r\n // {waiting}\r\n // {alert}\r\n // {paymentInformation}\r\n // {addPaymentForm}\r\n // {overlayModal && }\r\n // \r\n // );\r\n\r\n const [taxIdResults, setTaxIdResults] = React.useState();\r\n const [isError, setIsError] = React.useState(false);\r\n const [idType, setIdType] = React.useState();\r\n const [taxId, setTaxId] = React.useState();\r\n const [isVisible, setIsVisible] = React.useState(false);\r\n const [userCountry, setUserCountry] = React.useState();\r\n const [hasRefreshed, setHasRefreshed] = React.useState(false);\r\n\r\n const idTypeInputStyle: React.CSSProperties = {\r\n width: '100%',\r\n border: isError ? '1px solid red' : '1px solid rgb(135, 138, 140)',\r\n boxSizing: 'border-box',\r\n borderRadius: '2px',\r\n margin: '8px 0px',\r\n lineHeight: '22px',\r\n padding: '8px',\r\n fontSize: '16px',\r\n fontFamily: `\"Ensign:Sans\",Arial,\"noto sans\" ,sans-serif`,\r\n fontStyle: 'normal'\r\n };\r\n\r\n const idTypeStyle: React.CSSProperties = {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'flex-start',\r\n width: '100%',\r\n marginTop: '15px'\r\n };\r\n\r\n const handleSelect = async (option: any) => {\r\n const selectedOption = taxIdResults.filter((taxId: any) => {\r\n return taxId.TypeId === option;\r\n });\r\n if (selectedOption && selectedOption[0]) {\r\n sessionStorage.setItem('TaxId', selectedOption[0].TypeId);\r\n }\r\n\r\n setIdType(selectedOption[0].TypeId);\r\n };\r\n\r\n const onInputChange = (value: any) => {\r\n if (isError === true) {\r\n setIsError(false);\r\n }\r\n sessionStorage.setItem('idNum', value);\r\n setTaxId(value);\r\n };\r\n\r\n const getTaxIdInfo = async () => {\r\n const ctx = { callerContext: context.actionContext };\r\n let idTypes;\r\n // @ts-ignore\r\n if (props.data.cart && props.data.cart.result) {\r\n const getUserCountry: any =\r\n // @ts-ignore\r\n props.data.cart && props.data.cart.result && props.data.cart.result.cart && props.data.cart.result.cart.ExtensionProperties\r\n ? // @ts-ignore\r\n props.data.cart.result.cart.ExtensionProperties.filter((property: any) => {\r\n return property.Key === 'Country';\r\n })\r\n : '';\r\n setUserCountry(getUserCountry);\r\n\r\n idTypes = await getIdentificationTypesAsync(ctx, getUserCountry[0].Value.StringValue).catch((err: any) => {\r\n return console.log(err);\r\n });\r\n if (idTypes && idTypes[0]) {\r\n sessionStorage.setItem('taxIdCheck', 'true');\r\n } else {\r\n sessionStorage.setItem('taxIdCheck', 'false');\r\n setIsVisible(true);\r\n }\r\n }\r\n\r\n return setTaxIdResults(idTypes);\r\n };\r\n const waitForUpdateFunction = async () => {\r\n await updateFunction();\r\n };\r\n React.useEffect(() => {\r\n const sessionTaxId = sessionStorage.getItem('TaxId');\r\n const sessionIdNum = sessionStorage.getItem('idNum');\r\n if (sessionTaxId) {\r\n setIdType(sessionTaxId);\r\n }\r\n if (sessionIdNum) {\r\n setTaxId(sessionIdNum);\r\n }\r\n // void waitForUpdateFunction();\r\n void getTaxIdInfo();\r\n }, []);\r\n\r\n React.useEffect(() => {\r\n const paymentType = sessionStorage.getItem('paymentTypeId');\r\n\r\n if (paymentType === '7' && hasRefreshed === false && props.isVisible === true) {\r\n setHasRefreshed(true);\r\n void waitForUpdateFunction();\r\n }\r\n }, [props]);\r\n\r\n const onClickCustom = async () => {\r\n const ctx = { callerContext: context.actionContext };\r\n\r\n const taxIdCheck = await getIdentificationTypesApplicabilityRulesAsync(ctx, userCountry[0].Value.StringValue, idType, taxId).catch(\r\n err => {\r\n console.log(err);\r\n setIsError(true);\r\n }\r\n );\r\n if (taxIdCheck) {\r\n await updatePaymentAttributes(idType, taxId).then(() => {\r\n setIsVisible(true);\r\n });\r\n }\r\n };\r\n\r\n return (\r\n \r\n {taxIdResults && taxIdResults[0] ? (\r\n
\r\n \r\n \r\n \r\n onInputChange(e.target.value)}\r\n value={taxId}\r\n disabled={isVisible}\r\n />\r\n {isError && {resources.taxIdErrorMessage}}\r\n {isVisible === false && onClickCustom()}>{resources.applyPaymentLabel}}\r\n
\r\n ) : null}\r\n {isVisible &&
{waiting}
}\r\n {alert}\r\n {paymentInformation}\r\n {isVisible && addPaymentForm}\r\n {overlayModal && }\r\n
\r\n );\r\n};\r\n\r\nexport default CheckoutPaymentInstrumentView;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IActionContext } from '@msdyn365-commerce/core';\nimport { getCheckoutState } from '@msdyn365-commerce/global-state';\nimport { checkoutAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g';\nimport { getTenderTypesAsync, resolveCardTypesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\nimport {\n Address,\n CardPaymentAcceptResult,\n CardType,\n CartTenderLine,\n RetailOperation,\n SalesOrder,\n TenderType,\n TokenizedPaymentCard\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\nexport const OPERATIONS = {\n PayCard: 201,\n PayGiftCertificate: 214,\n PayLoyalty: 207,\n PayCustomerAccount: 202\n};\n\nconst getCardTypeId = async (ctx: IActionContext, cardPrefix: string = ''): Promise => {\n try {\n const response = await resolveCardTypesAsync({ callerContext: ctx }, cardPrefix, CardType.Unknown);\n if (response && response.length > 0) {\n return response[0].TypeId;\n }\n } catch (error) {\n ctx.telemetry.error('Call to resolveCardTypesAsync failed.', error);\n }\n return undefined;\n};\n\nconst findTenderIdTypeByOperationId = (tenderTypes: TenderType[], operationId: RetailOperation): string | undefined => {\n const matchedTenderType = tenderTypes.find(tenderType => tenderType.OperationId === operationId);\n if (matchedTenderType) {\n return matchedTenderType.TenderTypeId;\n }\n return;\n};\n\nconst roundNumber = (value: number) => Number(value.toFixed(2));\n\nasync function getLoyaltyTenderLine(\n ctx: IActionContext,\n LoyaltyCardId: string,\n Amount: number = 0,\n Currency: string = 'USD'\n): Promise {\n const tenderTypes = await getTenderTypesAsync({ callerContext: ctx, queryResultSettings: {} }).catch(error => {\n throw error;\n });\n\n if (!tenderTypes) {\n throw new Error('Fail to get gift card tender line');\n }\n\n const TenderTypeId = findTenderIdTypeByOperationId(tenderTypes, OPERATIONS.PayLoyalty);\n return {\n // @ts-expect-error\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CartTenderLine',\n\n 'Amount@odata.type': '#Decimal',\n Currency,\n TenderTypeId,\n Amount,\n LoyaltyCardId\n };\n}\n\nasync function getGiftCardTenderLine(\n ctx: IActionContext,\n GiftCardId: string = '',\n Amount: number = 0,\n Currency: string = 'USD',\n tenderTypeId?: string,\n giftCardPin?: string,\n giftCardExpirationYear?: number,\n giftCardExpirationMonth?: number\n): Promise {\n let TenderTypeId = tenderTypeId;\n\n if (!TenderTypeId) {\n const tenderTypes = await getTenderTypesAsync({ callerContext: ctx, queryResultSettings: {} }).catch(error => {\n throw error;\n });\n if (!tenderTypes) {\n throw new Error('Fail to get gift card tender line');\n }\n TenderTypeId = findTenderIdTypeByOperationId(tenderTypes, OPERATIONS.PayGiftCertificate);\n }\n\n const GiftCardPin = giftCardPin;\n const GiftCardExpirationYear = giftCardExpirationYear;\n const GiftCardExpirationMonth = giftCardExpirationMonth;\n return {\n // @ts-expect-error\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CartTenderLine',\n 'Amount@odata.type': '#Decimal',\n Currency,\n TenderTypeId,\n Amount,\n GiftCardId,\n GiftCardPin,\n GiftCardExpirationYear,\n GiftCardExpirationMonth\n };\n}\n\nasync function getCreditCardTenderLine(\n ctx: IActionContext,\n tokenizedPaymentCard: TokenizedPaymentCard,\n cardPrefix: string = '',\n Amount: number = 0,\n Currency: string = 'USD',\n billingAddress?: Address\n): Promise {\n const tenderTypes = await getTenderTypesAsync({ callerContext: ctx, queryResultSettings: {} }).catch(error => {\n throw error;\n });\n\n let cartTypeId = tokenizedPaymentCard.CardTypeId;\n\n if (!cartTypeId) {\n cartTypeId = await getCardTypeId(ctx, cardPrefix);\n }\n\n if (!tenderTypes) {\n throw new Error('Fail to get card tender type');\n }\n\n if (!cartTypeId) {\n throw new Error('Fail to get card type id');\n }\n\n const TenderTypeId = tokenizedPaymentCard.TenderType ?? findTenderIdTypeByOperationId(tenderTypes, OPERATIONS.PayCard);\n const cardTenderLine: CartTenderLine = {\n // @ts-expect-error\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CartTenderLine',\n 'Amount@odata.type': '#Decimal',\n Currency,\n Amount,\n TenderTypeId,\n CardTypeId: cartTypeId\n };\n cardTenderLine.TokenizedPaymentCard = {\n ...tokenizedPaymentCard,\n CardTypeId: cartTypeId,\n\n // @ts-expect-error\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.TokenizedPaymentCard',\n House: tokenizedPaymentCard.House || 'N/A',\n ...(tokenizedPaymentCard.CardTokenInfo && {\n CardTokenInfo: {\n ...tokenizedPaymentCard.CardTokenInfo,\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CardTokenInfo'\n }\n }),\n ...(billingAddress && {\n Phone: billingAddress.Phone,\n Country: billingAddress.ThreeLetterISORegionName,\n Address1: billingAddress.Street,\n City: billingAddress.City,\n State: billingAddress.State,\n Zip: billingAddress.ZipCode\n })\n };\n\n return cardTenderLine;\n}\n\n/**\n * Get credit card tender line.\n * @param context - Action context.\n * @param amount - Due amount for credit card.\n * @param currency - Currency.\n * @param cardPaymentAcceptResult - CardPaymentAcceptResult.\n * @param billingAddress - BillingAddress.\n * @returns - The credit card tender line.\n */\nasync function getCreditCardTenderLineForSinglePaymentAuth(\n context: IActionContext,\n amount: number = 0,\n currency: string = 'USD',\n cardPaymentAcceptResult?: CardPaymentAcceptResult,\n billingAddress?: Address\n): Promise {\n const tenderTypes = await getTenderTypesAsync({ callerContext: context, queryResultSettings: {} }).catch(error => {\n throw error;\n });\n\n const tenderTypeId = findTenderIdTypeByOperationId(tenderTypes, OPERATIONS.PayCard);\n\n if (cardPaymentAcceptResult) {\n cardPaymentAcceptResult.TokenizedPaymentCard = {\n // @ts-expect-error\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.TokenizedPaymentCard',\n House: 'N/A',\n ...(billingAddress && {\n Phone: billingAddress.Phone,\n Country: billingAddress.ThreeLetterISORegionName,\n Address1: billingAddress.Street,\n City: billingAddress.City,\n State: billingAddress.State,\n Zip: billingAddress.ZipCode\n })\n };\n }\n\n const cardTenderLine: CartTenderLine = {\n // @ts-expect-error -- existing data.\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CartTenderLine',\n 'Amount@odata.type': '#Decimal',\n Currency: currency,\n Amount: amount,\n TenderTypeId: tenderTypeId,\n CardPaymentAcceptResult: cardPaymentAcceptResult\n };\n\n return cardTenderLine;\n}\n\nasync function createCustomerAccountTenderLine(ctx: IActionContext, Amount: number, Currency: string = 'USD'): Promise {\n const CustomerId = null;\n if (!ctx.requestContext.user.isAuthenticated) {\n ctx.telemetry.error('A customer id is required to pay with customer account');\n }\n\n const tenderTypes = await getTenderTypesAsync({ callerContext: ctx, queryResultSettings: {} }).catch(error => {\n throw error;\n });\n\n if (!tenderTypes) {\n ctx.telemetry.error('No tender types found for this channel');\n }\n\n const TenderTypeId = findTenderIdTypeByOperationId(tenderTypes, OPERATIONS.PayCustomerAccount);\n if (!TenderTypeId) {\n ctx.telemetry.error('No customer account tender type');\n }\n return {\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CartTenderLine',\n 'Amount@odata.type': '#Decimal',\n Currency,\n TenderTypeId,\n Amount,\n\n // @ts-expect-error\n CustomerId\n };\n}\n\nexport const CartCheckout = async (\n ctx: IActionContext,\n updatedCartVersion?: number,\n isPaymentVerificationRedirection?: boolean\n): Promise => {\n const checkoutState = await getCheckoutState(ctx).catch(error => {\n throw error;\n });\n\n const cartState = checkoutState.checkoutCart;\n\n const channelConfiguration = ctx.requestContext.channel;\n\n if (!cartState || Object.keys(cartState).length === 0 || !channelConfiguration) {\n throw new Error('Fail to placeOrder');\n }\n\n const {\n giftCardExtends,\n tokenizedPaymentCard,\n cardPrefix,\n guestCheckoutEmail,\n billingAddress,\n loyaltyAmount,\n cardPaymentAcceptResult,\n shouldEnableSinglePaymentAuthorizationCheckout,\n isExpressCheckoutApplied,\n isExpressAddressApplied\n } = checkoutState;\n const { Currency } = channelConfiguration;\n\n let amountDue = cartState.cart.AmountDue || 0;\n let cartTenderLines;\n const getTenderLinePromises = [];\n const loyaltyCardNumber = cartState.cart.LoyaltyCardId;\n\n // Pay by loyalty first\n if (loyaltyAmount && loyaltyCardNumber) {\n const chargedAmount = roundNumber(Math.min(loyaltyAmount, amountDue));\n const loyaltyTenderLinePromise = getLoyaltyTenderLine(ctx, loyaltyCardNumber, chargedAmount, Currency);\n getTenderLinePromises.push(loyaltyTenderLinePromise);\n amountDue = roundNumber(amountDue - chargedAmount);\n\n ctx.telemetry.information('Checkout loyalty tender line is added.');\n } else {\n ctx.telemetry.information('Checkout loyalty tender line is not added when no loyaltyAmount or loyaltyCardNumber.');\n }\n\n // Then by customer account\n if (checkoutState.customerAccountAmount > 0) {\n const chargedAmount = roundNumber(Math.min(checkoutState.customerAccountAmount, amountDue));\n const customerAccountTenderLinePromise = createCustomerAccountTenderLine(ctx, chargedAmount, Currency);\n getTenderLinePromises.push(customerAccountTenderLinePromise);\n amountDue = roundNumber(amountDue - chargedAmount);\n\n ctx.telemetry.information('Checkout customer account amount tender line is added.');\n } else {\n ctx.telemetry.information('Checkout customer account amount tender line is not added when customerAccountAmount is 0.');\n }\n\n // Then by gift card\n if (giftCardExtends && giftCardExtends.length > 0) {\n giftCardExtends.some(giftCardExtend => {\n if (giftCardExtend.Balance && amountDue > 0) {\n const chargedAmount = roundNumber(Math.min(giftCardExtend.Balance, amountDue));\n const tenderTypeId = giftCardExtend.TenderTypeId;\n const giftCardPin = giftCardExtend.Pin;\n const giftCardExpirationYear = giftCardExtend.ExpirationDate\n ? Number.parseInt(giftCardExtend.ExpirationDate?.split('/')[1], 10)\n : undefined;\n const giftCardExpirationMonth = giftCardExtend.ExpirationDate\n ? Number.parseInt(giftCardExtend.ExpirationDate?.split('/')[0], 10)\n : undefined;\n const creditCardTenderLinePromise = getGiftCardTenderLine(\n ctx,\n giftCardExtend.Id,\n chargedAmount,\n Currency,\n tenderTypeId,\n giftCardPin,\n giftCardExpirationYear,\n giftCardExpirationMonth\n );\n getTenderLinePromises.push(creditCardTenderLinePromise);\n amountDue = roundNumber(amountDue - chargedAmount);\n\n ctx.telemetry.information('Checkout gift card tender line is added.');\n } else {\n ctx.telemetry.information('Checkout gift card tender line is not added when no balance or no remaining balance.');\n }\n return amountDue === 0;\n });\n }\n\n // Pay the rest by credit card\n if (amountDue > 0) {\n let creditCardTenderLinePromise: Promise;\n\n if (\n shouldEnableSinglePaymentAuthorizationCheckout &&\n (!(isExpressCheckoutApplied && !isExpressAddressApplied) || (isExpressCheckoutApplied && isPaymentVerificationRedirection))\n ) {\n creditCardTenderLinePromise = getCreditCardTenderLineForSinglePaymentAuth(\n ctx,\n amountDue,\n Currency,\n cardPaymentAcceptResult,\n billingAddress\n );\n } else {\n if (!tokenizedPaymentCard) {\n throw new Error('Fail to placeOrder: no token found');\n }\n creditCardTenderLinePromise = getCreditCardTenderLine(\n ctx,\n tokenizedPaymentCard,\n cardPrefix,\n amountDue,\n Currency,\n billingAddress\n );\n }\n\n getTenderLinePromises.push(creditCardTenderLinePromise);\n\n ctx.telemetry.information('Checkout credit card tender line is added.');\n } else {\n ctx.telemetry.information('Checkout credit card tender line is not added when no remaining balance for credit card.');\n }\n\n if (getTenderLinePromises.length > 0) {\n // When payment methods is required\n cartTenderLines = await Promise.all(getTenderLinePromises).catch(error => {\n throw error;\n });\n\n if (!cartTenderLines || cartTenderLines.length === 0) {\n throw new Error('Fail to placeOrder: fail to get cart tender lines');\n }\n } else {\n ctx.telemetry.information('TenderLinePromises length is 0.');\n }\n\n const cartVersion = updatedCartVersion || cartState.cart.Version;\n\n ctx.telemetry.information('Checkout checkoutAsync is called.');\n\n // Proceed checkout\n const salesOrder = await checkoutAsync(\n { callerContext: ctx, bypassCache: 'get' },\n cartState.cart.Id,\n guestCheckoutEmail,\n undefined,\n undefined,\n cartTenderLines || null,\n cartVersion\n ).catch(async error => {\n if (checkoutState.shouldEnableSinglePaymentAuthorizationCheckout) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- unknown type.\n if (error.data?.AdditionalContext) {\n ctx.telemetry.warning('CheckoutAsync call failed. AdditionalContext is sent for single payment auth.');\n\n await checkoutState.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: true });\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- unknown type.\n await checkoutState.updateRedirectAdditionalContext({\n newRedirectAdditionalContext: error?.data?.AdditionalContext as string\n });\n await checkoutState.updateRedirectPaymentConnectorId({\n newRedirectPaymentConnectorId: cardPaymentAcceptResult?.Settings?.PaymentConnectorId as string\n });\n } else {\n ctx.telemetry.warning('CheckoutAsync call failed. AdditionalContext is not sent for single payment auth.');\n\n await checkoutState.updateIsCheckoutCallFailed({ newIsCheckoutCallFailed: true });\n\n await checkoutState.updateCheckoutErrorPaymentConnectorId({\n newCheckoutErrorPaymentConnectorId: cardPaymentAcceptResult?.Settings?.PaymentConnectorId as string\n });\n\n if (isPaymentVerificationRedirection) {\n ctx.telemetry.warning('RefreshCart when isPaymentVerificationRedirection is true.');\n\n await checkoutState.checkoutCart.refreshCart({});\n await checkoutState.updateIsExpressCheckoutApplied({ newIsExpressCheckoutApplied: false });\n await checkoutState.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: false });\n }\n }\n }\n\n throw error;\n });\n\n if (!salesOrder) {\n ctx.telemetry.error('Failed to placeOrder: fail to checkout.');\n throw new Error('Fail to placeOrder: fail to checkout');\n }\n\n return salesOrder;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport CheckoutTermsAndConditions from './checkout-terms-and-conditions';\nimport CheckoutTermsAndConditionsView from './checkout-terms-and-conditions.view';\n\nexport * from './checkout-terms-and-conditions';\nexport * from './checkout-terms-and-conditions.data';\nexport {\n ICheckoutTermsAndConditionsConfig,\n ICheckoutTermsAndConditionsProps,\n ICheckoutTermsAndConditionsResources\n} from './checkout-terms-and-conditions.props.autogenerated';\nexport * from './checkout-terms-and-conditions.view';\nexport * from './components';\n\nexport { CheckoutTermsAndConditions, CheckoutTermsAndConditionsView };\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface ICheckoutLoyaltyInput {\n className: string;\n type: string;\n value: string | number;\n min: number;\n max: number;\n ariaValueMax: number;\n ariaValueMin: number;\n ariaValueNow: number;\n id: string;\n step: string;\n onChange(event: React.ChangeEvent): void;\n onBlur(event: React.FocusEvent): void;\n}\n\nconst AdressInput: React.FC = ({\n className,\n type,\n value,\n min,\n max,\n step,\n ariaValueMax,\n ariaValueMin,\n ariaValueNow,\n onChange,\n onBlur,\n id\n}) => (\n \n);\n\nexport default AdressInput;\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport {\r\n ICheckoutTermsAndConditions,\r\n ICheckoutTermsAndConditionsError,\r\n ICheckoutTermsAndConditionsViewProps\r\n} from './lds-checkout-terms-and-conditions';\r\n// @ts-ignore\r\nimport { Error } from '@churchofjesuschrist/eden-alert';\r\n\r\ninterface ILdsCheckoutTermsAndConditions extends ICheckoutTermsAndConditions {\r\n resources?: any;\r\n salesAndRefundPolicy?: any;\r\n context?: any;\r\n}\r\n\r\nconst TermsAndCondition: React.FC = ({\r\n termsAndConditionAcceptance,\r\n checkBox,\r\n description,\r\n salesAndRefundPolicy,\r\n resources,\r\n context\r\n}) => {\r\n const [title, setTitle] = React.useState();\r\n\r\n React.useEffect(() => {\r\n const sessionTitle = sessionStorage.getItem('salesData');\r\n\r\n if (!title) {\r\n setTitle(sessionTitle);\r\n }\r\n }, []);\r\n\r\n // const linkURL = salesAndRefundPolicy?.URL.replace('%1', salesAndRefundPolicy.LDSPublisherLanguage).replace(\r\n // '%2',\r\n // salesAndRefundPolicy.LDSPublisherCountry\r\n // );\r\n const onClick = async (policyType: string) => {\r\n const encodedString = encodeURIComponent(policyType);\r\n\r\n window.open(`${window.location.origin}${context.request.sitePath}/termsandconditions?policy=${encodedString}`);\r\n };\r\n\r\n return (\r\n \r\n {checkBox}\r\n {/* {description} */}\r\n
\r\n {`${resources.agreementText} `}\r\n \r\n salesAndRefundPolicy && salesAndRefundPolicy.PolicyType ? onClick(salesAndRefundPolicy.PolicyType) : ''\r\n }\r\n target='_blank'\r\n rel='noreferrer'\r\n style={{ cursor: 'pointer' }}\r\n >\r\n {title || salesAndRefundPolicy?.DESCRIPTION || salesAndRefundPolicy?.Description}\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nconst ErrorMessage: React.FC = ({ error, title, message }) => {\r\n return (\r\n // \r\n {message}\r\n // \r\n );\r\n};\r\n\r\nconst CheckoutTermsAndConditionsView: React.FC = props => {\r\n const {\r\n checkoutTermsAndConditions,\r\n checkoutErrorRef,\r\n viewState,\r\n termsAndConditionsContent,\r\n errorMessage,\r\n saveButton,\r\n editButton,\r\n cancelButton,\r\n salesAndRefundPolicy,\r\n resources\r\n } = props;\r\n\r\n return (\r\n // TODO: All wrapper div should be provided by viewProps. Once SDK provide the sln, update markup.\r\n \r\n {viewState.isError && errorMessage && }\r\n \r\n {viewState.isShowSaveButton && saveButton}\r\n {viewState.isShowEditButton && editButton}\r\n {viewState.isShowCancelButton && cancelButton}\r\n \r\n );\r\n};\r\n\r\nexport default CheckoutTermsAndConditionsView;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nexport * from './get-add-contact-info';\nexport * from './get-show-contact-info';\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IPaymentConnectorPostMessage } from './payment-instrument-message';\n\n/**\n * Payment iFrame interface.\n */\nexport interface IPaymentFrameElementProps {\n className?: string;\n moduleName?: string;\n iframeAriaLabel: string;\n displayContent?: string;\n sourceUrl?: string;\n requestUrlOrigin?: string;\n messageOrigin?: string;\n // eslint-disable-next-line @typescript-eslint/naming-convention -- public props.\n css?: string;\n height?: number;\n // eslint-disable-next-line @typescript-eslint/naming-convention -- public event.\n onIFrameMessage?(event: MessageEvent): void;\n}\n\n/**\n * Default post message name.\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention -- Existing name.\nexport const POST_MESSAGE_NAME = 'message';\n\n/**\n * Get host name.\n * @param url - The url.\n * @returns The host name.\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention -- Public props.\nconst getHostName = (url: string = ''): string => {\n return (url.includes('//') ? url.split('/')[2] : url.split('/')[0]).toLowerCase();\n};\n\n/**\n *\n * IFrameElement component.\n * @extends {React.PureComponent}\n */\nexport class Iframe extends React.PureComponent {\n private readonly iframeRef: React.RefObject;\n\n // eslint-disable-next-line @typescript-eslint/explicit-member-accessibility -- Existing code.\n constructor(props: IPaymentFrameElementProps) {\n super(props);\n this.iframeRef = React.createRef();\n }\n\n public componentDidMount(): void {\n window.addEventListener(POST_MESSAGE_NAME, this.onEvent);\n\n this.updateContentDocument();\n }\n\n public componentDidUpdate(previousProps: IPaymentFrameElementProps): void {\n if (previousProps.displayContent !== this.props.displayContent) {\n this.updateContentDocument();\n }\n }\n\n public componentWillUnmount(): void {\n window.removeEventListener(POST_MESSAGE_NAME, this.onEvent);\n }\n\n public render(): JSX.Element | null {\n const { sourceUrl, className, iframeAriaLabel, height, moduleName = 'checkout-payment-instrument' } = this.props;\n return (\n \n );\n }\n\n /**\n * Post message.\n * @param parameters - Payment connector post message.\n */\n public postMessage = (parameters: IPaymentConnectorPostMessage): void => {\n if (this.iframeRef.current?.contentWindow?.postMessage) {\n this.iframeRef.current.contentWindow.postMessage(parameters.message, parameters.targetOrigin);\n }\n };\n\n /**\n * On event.\n * @param event - The message event.\n */\n private readonly onEvent = (event: MessageEvent) => {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- IFrame.\n const { sourceUrl, onIFrameMessage, requestUrlOrigin, messageOrigin } = this.props;\n const sourceHost = getHostName(sourceUrl);\n const eventHost = getHostName(event.origin);\n const requestHost = getHostName(requestUrlOrigin);\n const messageHost = getHostName(messageOrigin);\n\n // Important: security check\n // check actual origin matches with expected origin\n if (\n !onIFrameMessage ||\n (sourceUrl && !(sourceHost === eventHost || requestHost === eventHost || messageHost === eventHost)) ||\n (!sourceUrl && !(requestHost === eventHost || messageHost === eventHost))\n ) {\n return;\n }\n\n onIFrameMessage(event);\n };\n\n /**\n * Update content document.\n */\n private readonly updateContentDocument = (): void => {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Existing props.\n const { displayContent, sourceUrl, css } = this.props;\n if (!sourceUrl && displayContent && this.iframeRef.current) {\n const innerDocument = this.iframeRef.current.contentDocument;\n\n if (innerDocument) {\n innerDocument.open();\n innerDocument.write(displayContent);\n if (css) {\n // Append custom style\n const style = document.createElement('style');\n const cssNote = document.createTextNode(css);\n style.appendChild(cssNote);\n innerDocument.head.appendChild(style);\n }\n\n innerDocument.close();\n }\n }\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IMediaGalleryThumbnailItemViewProps, IMediaGalleryThumbnailsViewProps, IMediaGalleryViewProps } from '../..';\n\nconst MediaGalleryView: React.FC = props => {\n const { CarouselProps, Thumbnails, MediaGallery, Modal } = props;\n\n return (\n \n \n {Modal}\n {_renderThumbnails(Thumbnails)}\n \n );\n};\n\nconst _renderThumbnails = (thumbnails: IMediaGalleryThumbnailsViewProps): JSX.Element => {\n const { ThumbnailsContainerProps, SingleSlideCarouselComponentProps, items } = thumbnails;\n\n return (\n \n {items && items.map(_renderThumbnailItem)}\n \n );\n};\n\nconst _renderThumbnailItem = (thumbnail: IMediaGalleryThumbnailItemViewProps): JSX.Element => {\n const { ThumbnailItemContainerProps, Picture } = thumbnail;\n\n return {Picture};\n};\n\nexport default MediaGalleryView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nconst countryISOMapping: { [key: string]: string } = {\n AF: 'AFG',\n AX: 'ALA',\n AL: 'ALB',\n DZ: 'DZA',\n AS: 'ASM',\n AD: 'AND',\n AO: 'AGO',\n AI: 'AIA',\n AQ: 'ATA',\n AG: 'ATG',\n AR: 'ARG',\n AM: 'ARM',\n AW: 'ABW',\n AU: 'AUS',\n AT: 'AUT',\n AZ: 'AZE',\n BS: 'BHS',\n BH: 'BHR',\n BD: 'BGD',\n BB: 'BRB',\n BY: 'BLR',\n BE: 'BEL',\n BZ: 'BLZ',\n BJ: 'BEN',\n BM: 'BMU',\n BT: 'BTN',\n BO: 'BOL',\n BA: 'BIH',\n BW: 'BWA',\n BV: 'BVT',\n BR: 'BRA',\n VG: 'VGB',\n IO: 'IOT',\n BN: 'BRN',\n BG: 'BGR',\n BF: 'BFA',\n BI: 'BDI',\n KH: 'KHM',\n CM: 'CMR',\n CA: 'CAN',\n CV: 'CPV',\n KY: 'CYM',\n CF: 'CAF',\n TD: 'TCD',\n CL: 'CHL',\n CN: 'CHN',\n HK: 'HKG',\n MO: 'MAC',\n CX: 'CXR',\n CC: 'CCK',\n CO: 'COL',\n KM: 'COM',\n CG: 'COG',\n CD: 'COD',\n CK: 'COK',\n CR: 'CRI',\n CI: 'CIV',\n HR: 'HRV',\n CU: 'CUB',\n CY: 'CYP',\n CZ: 'CZE',\n DK: 'DNK',\n DJ: 'DJI',\n DM: 'DMA',\n DO: 'DOM',\n EC: 'ECU',\n EG: 'EGY',\n SV: 'SLV',\n GQ: 'GNQ',\n ER: 'ERI',\n EE: 'EST',\n ET: 'ETH',\n FK: 'FLK',\n FO: 'FRO',\n FJ: 'FJI',\n FI: 'FIN',\n FR: 'FRA',\n GF: 'GUF',\n PF: 'PYF',\n TF: 'ATF',\n GA: 'GAB',\n GM: 'GMB',\n GE: 'GEO',\n DE: 'DEU',\n GH: 'GHA',\n GI: 'GIB',\n GR: 'GRC',\n GL: 'GRL',\n GD: 'GRD',\n GP: 'GLP',\n GU: 'GUM',\n GT: 'GTM',\n GG: 'GGY',\n GN: 'GIN',\n GW: 'GNB',\n GY: 'GUY',\n HT: 'HTI',\n HM: 'HMD',\n VA: 'VAT',\n HN: 'HND',\n HU: 'HUN',\n IS: 'ISL',\n IN: 'IND',\n ID: 'IDN',\n IR: 'IRN',\n IQ: 'IRQ',\n IE: 'IRL',\n IM: 'IMN',\n IL: 'ISR',\n IT: 'ITA',\n JM: 'JAM',\n JP: 'JPN',\n JE: 'JEY',\n JO: 'JOR',\n KZ: 'KAZ',\n KE: 'KEN',\n KI: 'KIR',\n KP: 'PRK',\n KR: 'KOR',\n KW: 'KWT',\n KG: 'KGZ',\n LA: 'LAO',\n LV: 'LVA',\n LB: 'LBN',\n LS: 'LSO',\n LR: 'LBR',\n LY: 'LBY',\n LI: 'LIE',\n LT: 'LTU',\n LU: 'LUX',\n MK: 'MKD',\n MG: 'MDG',\n MW: 'MWI',\n MY: 'MYS',\n MV: 'MDV',\n ML: 'MLI',\n MT: 'MLT',\n MH: 'MHL',\n MQ: 'MTQ',\n MR: 'MRT',\n MU: 'MUS',\n YT: 'MYT',\n MX: 'MEX',\n FM: 'FSM',\n MD: 'MDA',\n MC: 'MCO',\n MN: 'MNG',\n ME: 'MNE',\n MS: 'MSR',\n MA: 'MAR',\n MZ: 'MOZ',\n MM: 'MMR',\n NA: 'NAM',\n NR: 'NRU',\n NP: 'NPL',\n NL: 'NLD',\n AN: 'ANT',\n NC: 'NCL',\n NZ: 'NZL',\n NI: 'NIC',\n NE: 'NER',\n NG: 'NGA',\n NU: 'NIU',\n NF: 'NFK',\n MP: 'MNP',\n NO: 'NOR',\n OM: 'OMN',\n PK: 'PAK',\n PW: 'PLW',\n PS: 'PSE',\n PA: 'PAN',\n PG: 'PNG',\n PY: 'PRY',\n PE: 'PER',\n PH: 'PHL',\n PN: 'PCN',\n PL: 'POL',\n PT: 'PRT',\n PR: 'PRI',\n QA: 'QAT',\n RE: 'REU',\n RO: 'ROU',\n RU: 'RUS',\n RW: 'RWA',\n BL: 'BLM',\n SH: 'SHN',\n KN: 'KNA',\n LC: 'LCA',\n MF: 'MAF',\n PM: 'SPM',\n VC: 'VCT',\n WS: 'WSM',\n SM: 'SMR',\n ST: 'STP',\n SA: 'SAU',\n SN: 'SEN',\n RS: 'SRB',\n SC: 'SYC',\n SL: 'SLE',\n SG: 'SGP',\n SK: 'SVK',\n SI: 'SVN',\n SB: 'SLB',\n SO: 'SOM',\n ZA: 'ZAF',\n GS: 'SGS',\n SS: 'SSD',\n ES: 'ESP',\n LK: 'LKA',\n SD: 'SDN',\n SR: 'SUR',\n SJ: 'SJM',\n SZ: 'SWZ',\n SE: 'SWE',\n CH: 'CHE',\n SY: 'SYR',\n TW: 'TWN',\n TJ: 'TJK',\n TZ: 'TZA',\n TH: 'THA',\n TL: 'TLS',\n TG: 'TGO',\n TK: 'TKL',\n TO: 'TON',\n TT: 'TTO',\n TN: 'TUN',\n TR: 'TUR',\n TM: 'TKM',\n TC: 'TCA',\n TV: 'TUV',\n UG: 'UGA',\n UA: 'UKR',\n AE: 'ARE',\n GB: 'GBR',\n US: 'USA',\n UM: 'UMI',\n UY: 'URY',\n UZ: 'UZB',\n VU: 'VUT',\n VE: 'VEN',\n VN: 'VNM',\n VI: 'VIR',\n WF: 'WLF',\n EH: 'ESH',\n YE: 'YEM',\n ZM: 'ZMB',\n ZW: 'ZWE',\n XK: 'XKX'\n};\n\n/**\n * Convert two-letter ISO country code to tree-letter ISO country code.\n * @param countryCode {string} The two-letter country code.\n * @returns The three-letter country code or empty string if not found.\n */\nexport const getThreeLetterCountryCode = (countryCode: string) => {\n return countryISOMapping[countryCode] || '';\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { PriceComponent, RatingComponent } from '@msdyn365-commerce/components';\nimport {\n IComponent,\n IComponentProps,\n ICoreContext,\n IGridSettings,\n IImageData,\n IImageSettings,\n Image,\n IRequestContext\n} from '@msdyn365-commerce/core';\nimport { ProductPrice, ProductSearchResult } from '@msdyn365-commerce/retail-proxy';\nimport { format } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\n/**\n * IActiveProductProps interface.\n */\nexport interface IActiveProductProps extends IComponentProps<{ product?: ProductSearchResult }> {\n className?: string;\n imageSettings?: IImageSettings;\n savingsText?: string;\n freePriceText?: string;\n originalPriceText?: string;\n currentPriceText?: string;\n ratingAriaLabel?: string;\n}\n\n/**\n * IActiveProduct interface.\n */\nexport interface IActiveProduct extends IComponent {}\n\n/**\n * RenderDescription function.\n * @param description - Product description string.\n * @returns - Returns JSX.Element | null.\n */\nfunction renderDescription(description?: string): JSX.Element | null {\n return

{description}

;\n}\n\n/**\n * GetRatingAriaLabel function.\n * @param rating - Product rating number.\n * @param ratingAriaLabel - Product rating aria label.\n * @returns - Returns string.\n */\nfunction getRatingAriaLabel(rating?: number, ratingAriaLabel?: string): string {\n const numberTwo: number = 2;\n if (rating && ratingAriaLabel) {\n const roundedRating = rating.toFixed(numberTwo);\n return format(ratingAriaLabel || '', roundedRating, '5');\n }\n return '';\n}\n\n/**\n * RenderRating function.\n * @param context - The core context.\n * @param typeName - The type name of the module.\n * @param ratingId - The rating id.\n * @param avgRating - The average rating.\n * @param totalRatings - The total ratings.\n * @param ariaLabel - The rating aria label.\n * @returns - Returns JSX.Element | null.\n */\nfunction renderRating(\n context: ICoreContext,\n typeName: string,\n ratingId: string,\n avgRating?: number,\n totalRatings?: number,\n ariaLabel?: string\n): JSX.Element | null {\n if (!avgRating) {\n return null;\n }\n\n const numberRatings = totalRatings?.toString() ?? undefined;\n const ratingAriaLabel = getRatingAriaLabel(avgRating, ariaLabel);\n\n return (\n \n );\n}\n\n/**\n * RenderPrice function.\n * @param context - The core context.\n * @param typeName - The type name of the module.\n * @param productId - The product id.\n * @param basePrice - The base price of the product.\n * @param adjustedPrice - The adjusted price of the product.\n * @param savingsText - The savings text of the product.\n * @param freePriceText - The free price text.\n * @param originalPriceText - The original price text.\n * @returns - Returns JSX.Element | null.\n */\nfunction renderPrice(\n context: ICoreContext,\n typeName: string,\n productId: string,\n basePrice?: number,\n adjustedPrice?: number,\n savingsText?: string,\n freePriceText?: string,\n originalPriceText?: string\n): JSX.Element | null {\n const price: ProductPrice = {\n BasePrice: basePrice,\n AdjustedPrice: adjustedPrice,\n CustomerContextualPrice: adjustedPrice\n };\n\n return (\n \n );\n}\n\n/**\n * RenderProductPlacementImage function.\n * @param requestContext - RequestContext.\n * @param imageSettings - The product image settings.\n * @param gridSettings - The viewport gird settings.\n * @param imageUrl - The product image url.\n * @param altText - The product image alt text.\n * @returns - Returns JSX.Element | null.\n */\nfunction renderProductPlacementImage(\n requestContext: IRequestContext,\n imageSettings?: IImageSettings,\n gridSettings?: IGridSettings,\n imageUrl?: string,\n altText?: string\n): JSX.Element | null {\n if (!imageUrl || !gridSettings || !imageSettings) {\n return null;\n }\n const imgData: IImageData = {\n src: imageUrl,\n altText: altText ? altText : ''\n };\n const imageProps = {\n gridSettings,\n imageSettings\n };\n imageProps.imageSettings.cropFocalRegion = true;\n return ;\n}\n\n/**\n * ActiveProduct constant.\n * @param props - The active product props.\n * @param props.data - The product search result data.\n * @param props.context - The core context.\n * @param props.imageSettings - The prodcut image settings.\n * @param props.savingsText - The product savings text.\n * @param props.freePriceText - The free price text.\n * @param props.originalPriceText - The original price text.\n * @param props.ratingAriaLabel - The product rating aria label.\n * @param props.typeName - The type name of the module.\n * @param props.id - The id of the product.\n * @returns - Returns JSX.Element | null.\n */\nexport const ActiveProductComponent: React.FC = ({\n data,\n context,\n imageSettings,\n savingsText,\n freePriceText,\n originalPriceText,\n ratingAriaLabel,\n typeName,\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Do not need naming convention check for library prameters\n id\n}) => {\n const product = data.product;\n if (!product) {\n return null;\n }\n\n return (\n <>\n
\n
\n {renderProductPlacementImage(\n context.actionContext.requestContext,\n imageSettings,\n context.request.gridSettings,\n product.PrimaryImageUrl,\n product.Name\n )}\n
\n
\n

{product.Name}

\n {renderPrice(context, typeName, id, product.BasePrice, product.Price, savingsText, freePriceText, originalPriceText)}\n {renderDescription(product.Description)}\n {!context.app.config.hideRating &&\n renderRating(context, typeName, id, product.AverageRating, product.TotalRatings, ratingAriaLabel)}\n
\n
\n \n );\n};\n\nexport default ActiveProductComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\n/**\n * ILinksData: Interface for\n * Additional content.\n */\ninterface ILinksData {\n linkText?: string;\n linkUrl: Msdyn365.ILinkData;\n ariaLabel?: string;\n isOpenInNewTab?: boolean;\n}\n\n/**\n * IAdditionalContentData: Interface for\n * Active content.\n */\ninterface IAdditionalContentData {\n heading?: string;\n subtext?: string;\n links?: ILinksData[];\n}\n\n/**\n * IActiveImageAdditionalContentProps: Interface for\n * Active Image Additional Content Component props.\n */\nexport interface IActiveImageAdditionalContentProps {\n requestContext: Msdyn365.IRequestContext;\n additionalContent: IAdditionalContentData | undefined;\n handleAdditionalTextChange(event: Msdyn365.ContentEditableEvent): void;\n handleAdditionalParagraphChange(event: Msdyn365.ContentEditableEvent): void;\n handleAdditionalLinkTextChange(linkIndex: number, event: Msdyn365.ContentEditableEvent): void;\n}\n\n/**\n * IActiveImageAdditionalContentViewProps: Interface for\n * Active Image Additional Content view props.\n */\nexport interface IActiveImageAdditionalContentViewProps {\n additionalContentNode: INodeProps;\n heading: React.ReactNode;\n text: React.ReactNode;\n links: React.ReactNode;\n additionalContentContainer: INodeProps;\n additionalContentItemLinks: INodeProps;\n}\n\n/**\n * Renders additional content heading.\n * @param additionalContentHeading - Additional content heading.\n * @param props - Active Image Additional content component props.\n * @returns Heading Node.\n */\nconst renderHeading = (additionalContentHeading: string, props: IActiveImageAdditionalContentProps) => {\n const requestContext = props.requestContext;\n return (\n {\n props.handleAdditionalTextChange(event);\n },\n requestContext\n }}\n />\n );\n};\n\n/**\n * Renders additional content heading.\n * @param additionalContentParagraphText - Additional content paragraph text.\n * @param props - Active Image Additional content component props.\n * @returns Paragraph Node.\n */\nconst renderParagraph = (additionalContentParagraphText: string, props: IActiveImageAdditionalContentProps) => {\n const requestContext = props.requestContext;\n return (\n {\n props.handleAdditionalTextChange(event);\n },\n requestContext\n }}\n />\n );\n};\n\n/**\n * Renders additional content heading.\n * @param ctaLink - Additional content link.\n * @param props - Active Image Additional content component props.\n * @param linkIndex - Additional content link index.\n * @returns Link Node.\n */\nconst renderLinks = (ctaLink: ILinksData, props: IActiveImageAdditionalContentProps, linkIndex: number) => {\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: ctaLink.ariaLabel,\n className: 'msc-active-image__details__additional-content__cta__links',\n linkText: ctaLink.linkText,\n linkUrl: ctaLink.linkUrl.destinationUrl,\n openInNewTab: ctaLink.isOpenInNewTab,\n role: 'button'\n };\n const requestContext = props.requestContext;\n return (\n {\n props.handleAdditionalLinkTextChange(linkIndex, event);\n },\n requestContext\n }}\n />\n );\n};\n\n/**\n * Create node for each additonal content item.\n * @param item - Active Image additonal content item props.\n * @param props - Active Image Additional content component props.\n * @returns IActiveImageAdditionalContentItemViewProps.\n */\nconst assembleNode = (item: IAdditionalContentData, props: IActiveImageAdditionalContentProps): IActiveImageAdditionalContentViewProps => {\n const headingNode = item.heading && renderHeading(item.heading, props);\n const paragraphNode = item.subtext && renderParagraph(item.subtext, props);\n const linksNode = item.links?.map((ctaLink: ILinksData, index: number) => {\n return renderLinks(ctaLink, props, index);\n });\n\n return {\n additionalContentNode: { className: 'msc-active-image__details__additional-content' },\n heading: headingNode,\n text: paragraphNode,\n links: linksNode,\n additionalContentContainer: { className: 'msc-active-image__details__additional-content__container' },\n additionalContentItemLinks: { className: 'msc-active-image__details__additional__content__cta' }\n };\n};\n\n/**\n * ActiveImageAdditionalContent component.\n * @param props - Active Image Additional content component props.\n * @returns Active Image Additional content view props.\n */\nexport const activeImageAdditionalContent = (\n props: IActiveImageAdditionalContentProps\n): IActiveImageAdditionalContentViewProps | undefined => {\n const { additionalContent } = props;\n if (!additionalContent) {\n return undefined;\n }\n\n return assembleNode(additionalContent, props);\n};\n\nexport default activeImageAdditionalContent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { IImageData, Image, IRequestContext } from '@msdyn365-commerce/core';\nimport { ProductSearchResult } from '@msdyn365-commerce/retail-proxy';\nimport React from 'react';\n\n/**\n * @type AreaEvent for active points\n */\ntype AreaEvent = Event | React.MouseEvent | React.FocusEvent;\n\n/**\n * @interface IRgbColor\n * @description - The IRgbColor interface contract.\n */\nexport interface IRgbColor {\n rValue: number;\n gValue: number;\n bValue: number;\n}\n\n/**\n * @interface IArea\n * @description - The IArea interface contract.\n */\nexport interface IArea {\n areaId: string;\n coords: number[];\n href?: string;\n center?: number[];\n primaryImageUrl?: string;\n productUrl: string;\n productSearchResult?: ProductSearchResult;\n}\n\n/**\n * @interface IArea\n * @description - The IArea interface contract.\n */\nexport interface IAreaMap {\n name: string;\n areas: IArea[];\n}\n\n/**\n * @enum CanvasCalculations\n * @description - The canvas calculations enum.\n */\nexport enum CanvasCalculations {\n defaultWidth = 0,\n defaultHeight = 0,\n defaultPositionX = 0,\n defaultPositionY = 0,\n defaultScale = 1,\n halfDivisor = 2,\n doubleMultiplier = 2,\n buttonHeight = 30,\n buttonPadding = 30,\n paddingAdjustment = 3,\n expandAnimationStartWidth = 10,\n expandAnimationEndWidth = 40,\n collapseAnimationStartWidth = 40,\n collapseAnimationEndWidth = 8,\n expandRadius = 12,\n collapseRadius = 8,\n rotation = 1.57,\n startAngle = 0,\n endAngle = 7,\n clearMargin = 50,\n clearHeight = 100,\n clearWidth = 100,\n textFadeInStartValue = 0,\n textFadeOutStartValue = 0.5,\n textFadeInterval = 0.01\n}\n\n/**\n * @enum CanvasStyles\n * @description - The canvas styles enum.\n */\nexport enum CanvasStyles {\n color = '#FFFFFF',\n buttonTextClor = '#000000'\n}\n\n/**\n * @enum\n * @description - The canvas styles enum.\n */\nexport interface IImageMapperResources {\n buttonText?: string;\n altText?: string;\n}\n\n/**\n * @interface IImageMapperProps\n * @description - The IImageMapperProps interface contract.\n */\nexport interface IImageMapperProps {\n imageData: IImageData;\n areaMap: IAreaMap;\n viewPort: string;\n requestContext: IRequestContext;\n color?: string;\n buttonTextClor?: string;\n width?: number;\n imgWidth?: number;\n activeImageRefs: React.RefObject;\n imageMapperResources?: IImageMapperResources;\n onLoad?(): void;\n onClick?(area: IArea, index: number, event: AreaEvent): void;\n onFocus?(area: IArea, index: number, event: AreaEvent): void;\n onMouseEnter?(area: IArea, index: number, event: AreaEvent): void;\n onMouseLeave?(area: IArea, index: number, event: AreaEvent): void;\n}\n\n/**\n * ImageMapper.\n */\nexport class ImageMapper extends React.Component {\n private readonly _backgroundImage: React.RefObject;\n\n private readonly _container: React.RefObject;\n\n private readonly _canvas: React.RefObject;\n\n private _isDesktopViewPort: boolean = false;\n\n private _context: CanvasRenderingContext2D | null | undefined = null;\n\n public constructor(props: IImageMapperProps) {\n super(props);\n this._backgroundImage = React.createRef();\n this._container = React.createRef();\n this._canvas = React.createRef();\n }\n\n /**\n * ComponentDidMount method.\n */\n public componentDidMount(): void {\n const { viewPort } = this.props;\n this.initCanvas();\n this._isDesktopViewPort = viewPort === 'lg' || viewPort === 'xl';\n this.renderAreas();\n this._context = null;\n }\n\n /**\n * ComponentDidUpdate method.\n */\n public componentDidUpdate(): void {\n const { viewPort } = this.props;\n this.initCanvas();\n this._isDesktopViewPort = viewPort === 'lg' || viewPort === 'xl';\n }\n\n /**\n * ShouldComponentUpdate method.\n * @param nextProps - Next props.\n * @returns Returns boolean.\n */\n public shouldComponentUpdate(nextProps: IImageMapperProps): boolean {\n let shouldRender = false;\n if (nextProps !== this.props) {\n shouldRender = true;\n }\n return shouldRender;\n }\n\n /**\n * GetActiveImageWidth method - Gets the active image width.\n * @returns Returns number | undefined.\n */\n public getActiveImageWidth = (): number | undefined => {\n if (MsDyn365.isBrowser) {\n const activeImageReferenceValue = this.props.activeImageRefs;\n if (activeImageReferenceValue.current !== null) {\n return activeImageReferenceValue.current.clientWidth;\n }\n }\n return undefined;\n };\n\n /**\n * GetActiveImageHeight method - Gets the active image height.\n * @returns Returns number | undefined.\n */\n public getActiveImageHeight = (): number | undefined => {\n if (MsDyn365.isBrowser) {\n const activeImageReferenceValue = this.props.activeImageRefs;\n if (activeImageReferenceValue.current !== null) {\n return activeImageReferenceValue.current.clientHeight;\n }\n }\n return undefined;\n };\n\n /**\n * ConvertHexToRgb method - This method takes color in HEX format and returns IRgbColor color object.\n * @param hexColor -The color hex value.\n * @returns -Returns IRgbColor object.\n */\n public convertHexToRgb = (hexColor: string): IRgbColor => {\n // RegEx used to execute the conversion of the hex color to rgb value.\n const regEx = new RegExp('^#?([a-f\\\\d]{2})([a-f\\\\d]{2})([a-f\\\\d]{2})$', 'u');\n\n // RegEx.exec method executes a search for a match in a specified string. Returns a result array, or null.\n const result = regEx.exec(hexColor);\n const defaultValue = 0;\n return result\n ? {\n rValue: Number.parseInt(result[1], 16),\n gValue: Number.parseInt(result[2], 16),\n bValue: Number.parseInt(result[3], 16)\n }\n : {\n rValue: defaultValue,\n gValue: defaultValue,\n bValue: defaultValue\n };\n };\n\n /**\n * ApplyFadingTransition method - Applys fading transition to button text.\n * @param text -The button text.\n * @param coords -The coordinates.\n * @param rgbColor -The RGB color object.\n * @param alpha -The alpha value of the button text.\n */\n public applyFadingTransition = (text: string, coords: number[], rgbColor: IRgbColor, alpha: number): void => {\n const halfDivisor: number = CanvasCalculations.halfDivisor;\n const context = this._canvas.current?.getContext('2d') ?? this._context;\n if (context && this._isDesktopViewPort) {\n const buttonPadding = CanvasCalculations.buttonPadding;\n const paddingAdjustment = CanvasCalculations.paddingAdjustment;\n const buttonWidth = context.measureText(text).width + buttonPadding;\n context.fillStyle = `rgba(${rgbColor.rValue}, ${rgbColor.gValue}, ${rgbColor.bValue}, ${alpha} )`;\n if (MsDyn365.isBrowser && document.body.parentElement && document.body.parentElement.getAttribute('dir') === 'rtl') {\n context.fillText(text, coords[0] + buttonWidth / halfDivisor - buttonPadding / halfDivisor, coords[1] + paddingAdjustment);\n } else {\n context.fillText(text, coords[0] - buttonWidth / halfDivisor + buttonPadding / halfDivisor, coords[1] + paddingAdjustment);\n }\n }\n };\n\n /**\n * Draw button method - Draws button and contains fixed hight, padding values.\n * @param text -The button text.\n * @param coords -The coordinates.\n */\n public drawButton = (text: string, coords: number[]): void => {\n const { color = CanvasStyles.color, buttonTextClor = CanvasStyles.buttonTextClor } = this.props;\n const halfDivisor: number = CanvasCalculations.halfDivisor;\n const context = this._canvas.current?.getContext('2d') ?? this._context;\n if (context && this._isDesktopViewPort) {\n const buttonHeight = CanvasCalculations.buttonHeight;\n const buttonPadding = CanvasCalculations.buttonPadding;\n const paddingAdjustment = CanvasCalculations.paddingAdjustment;\n const buttonWidth = context.measureText(text).width + buttonPadding;\n const buttonPositionX = coords[0] - buttonWidth / halfDivisor;\n const buttonPositionY = coords[1] - buttonHeight / halfDivisor;\n const arcsize = buttonHeight / halfDivisor;\n\n context.beginPath();\n context.moveTo(buttonPositionX + arcsize, buttonPositionY);\n context.lineTo(buttonPositionX + buttonWidth - arcsize, buttonPositionY);\n context.arcTo(\n buttonPositionX + buttonWidth,\n buttonPositionY,\n buttonPositionX + buttonWidth,\n buttonPositionY + arcsize,\n arcsize\n );\n context.lineTo(buttonPositionX + buttonWidth, buttonPositionY + buttonHeight - arcsize);\n context.arcTo(\n buttonPositionX + buttonWidth,\n buttonPositionY + buttonHeight,\n buttonPositionX + buttonWidth - arcsize,\n buttonPositionY + buttonHeight,\n arcsize\n );\n context.lineTo(buttonPositionX + arcsize, buttonPositionY + buttonHeight);\n context.arcTo(buttonPositionX, buttonPositionY + buttonHeight, buttonPositionX, buttonPositionY - arcsize, arcsize);\n context.lineTo(buttonPositionX, buttonPositionY + arcsize);\n context.arcTo(buttonPositionX, buttonPositionY, buttonPositionX + arcsize, buttonPositionY, arcsize);\n context.lineTo(buttonPositionX + arcsize, buttonPositionY);\n context.stroke();\n context.closePath();\n context.fillStyle = color;\n context.fill();\n context.fillStyle = buttonTextClor;\n if (MsDyn365.isBrowser && document.body.parentElement && document.body.parentElement.getAttribute('dir') === 'rtl') {\n context.fillText(text, coords[0] + buttonWidth / halfDivisor - buttonPadding / halfDivisor, coords[1] + paddingAdjustment);\n } else {\n context.fillText(text, coords[0] - buttonWidth / halfDivisor + buttonPadding / halfDivisor, coords[1] + paddingAdjustment);\n }\n }\n };\n\n /**\n * ExpandAnimation method - Shows expand animation and contains fixed values to draw the circle and ellipse shapes.\n * @param coords -Coordinates.\n */\n public expandAnimation = (coords: number[]): void => {\n const { color = CanvasStyles.color, buttonTextClor = CanvasStyles.buttonTextClor } = this.props;\n const buttonText = this.props.imageMapperResources?.buttonText;\n let animationStartWidth = CanvasCalculations.expandAnimationStartWidth;\n const pointPositionX = coords[0];\n const pointPositionY = coords[1];\n const animationEndWidth = CanvasCalculations.expandAnimationEndWidth;\n const radius = CanvasCalculations.expandRadius;\n const rotation = CanvasCalculations.rotation;\n const startAngle = CanvasCalculations.startAngle;\n const endAngle = CanvasCalculations.endAngle;\n let textFadeInValue = CanvasCalculations.textFadeInStartValue;\n const buttonTextClorInRgb = this.convertHexToRgb(buttonTextClor.toLocaleLowerCase());\n\n /**\n * Animate method - Reders expand animation.\n */\n const animate = () => {\n const context = this._canvas.current?.getContext('2d') ?? this._context;\n if (!context) {\n return;\n }\n context.beginPath();\n context.ellipse(pointPositionX, pointPositionY, radius, animationStartWidth, rotation, startAngle, endAngle);\n context.fillStyle = color;\n context.fill();\n context.fillStyle = color;\n if (buttonText) {\n if (animationStartWidth < animationEndWidth) {\n requestAnimationFrame(animate);\n this.applyFadingTransition(buttonText, coords, buttonTextClorInRgb, textFadeInValue);\n textFadeInValue += CanvasCalculations.textFadeInterval;\n animationStartWidth++;\n } else {\n this.drawButton(buttonText, [pointPositionX, pointPositionY]);\n }\n }\n };\n\n if (this._isDesktopViewPort) {\n animate();\n }\n };\n\n /**\n * CollapseAnimation method - Shows collapse animation and contains fixed values to draw the circle and ellipse shapes.\n * @param coords -Coordinates.\n */\n public collapseAnimation = (coords: number[]): void => {\n const { color = CanvasStyles.color, buttonTextClor = CanvasStyles.buttonTextClor } = this.props;\n const buttonText = this.props.imageMapperResources?.buttonText;\n let animationStartWidth = CanvasCalculations.collapseAnimationStartWidth;\n const pointPositionX = coords[0];\n const pointPositionY = coords[1];\n const animationEndWidth = CanvasCalculations.collapseAnimationEndWidth;\n const rotation = CanvasCalculations.rotation;\n const clearMargin = CanvasCalculations.clearMargin;\n const clearHeight = CanvasCalculations.clearHeight;\n const clearWidth = CanvasCalculations.clearWidth;\n const radius = CanvasCalculations.collapseRadius;\n const startAngle = CanvasCalculations.startAngle;\n const endAngle = CanvasCalculations.endAngle;\n let textFadeOutValue = CanvasCalculations.textFadeOutStartValue;\n const buttonTextClorInRgb = this.convertHexToRgb(buttonTextClor.toLocaleLowerCase());\n\n /**\n * Animate method - Renders collapse animation.\n */\n const animate = () => {\n const context = this._canvas.current?.getContext('2d') ?? this._context;\n if (!context) {\n return;\n }\n context.beginPath();\n context.clearRect(pointPositionX - clearMargin, pointPositionY - clearMargin, clearWidth, clearHeight);\n context.ellipse(pointPositionX, pointPositionY, radius, animationStartWidth, rotation, startAngle, endAngle);\n context.fillStyle = color;\n context.fill();\n if (animationEndWidth < animationStartWidth && buttonText) {\n requestAnimationFrame(animate);\n this.applyFadingTransition(buttonText, coords, buttonTextClorInRgb, textFadeOutValue);\n textFadeOutValue -= CanvasCalculations.textFadeInterval;\n animationStartWidth--;\n }\n };\n\n if (this._isDesktopViewPort) {\n animate();\n }\n };\n\n /**\n * DrawCircle method - Renders active points.\n * @param coords -Coordinates.\n */\n public drawCircle = (coords: number[]): void => {\n const { color = CanvasStyles.color, viewPort } = this.props;\n const doubleMultiplier: number = CanvasCalculations.doubleMultiplier;\n const startAngle: number = CanvasCalculations.startAngle;\n const context = this._canvas.current?.getContext('2d') ?? this._context;\n const radius = viewPort === 'xs' || viewPort === 'sm' ? coords[2] * doubleMultiplier : coords[2];\n if (!context) {\n return;\n }\n context.fillStyle = color;\n context.beginPath();\n context.strokeStyle = color;\n context.arc(coords[0], coords[1], radius, startAngle, Math.PI * doubleMultiplier);\n context.closePath();\n context.stroke();\n context.fill();\n };\n\n /**\n * ScaleCoords method - To scale the active point coordinates based on the window size.\n * @param coords -Coordinates.\n * @returns -Returns number[].\n */\n public scaleCoords = (coords: number[]): number[] => {\n const { imgWidth } = this.props;\n const defaultWidth: number = CanvasCalculations.defaultWidth;\n const defaultScale: number = CanvasCalculations.defaultScale;\n\n // Calculate scale based on current 'width' and the original 'imgWidth'\n const width = this.getActiveImageWidth();\n const scale = width && imgWidth && imgWidth > defaultWidth ? width / imgWidth : defaultScale;\n return coords.map(coord => coord * scale);\n };\n\n /**\n * RenderPrefilledAreas method - To render active points in case of events.\n */\n public renderPrefilledAreas = (): void => {\n const { areaMap } = this.props;\n areaMap.areas.map(area => {\n this.drawCircle(this.scaleCoords(area.coords));\n return null;\n });\n };\n\n /**\n * ComputeCenter method - To re-calculate the center of active point based on window size.\n * @param area -IArea.\n * @returns -Returns number[].\n */\n public computeCenter = (area: IArea): number[] => {\n const scaledCoords = this.scaleCoords(area.coords);\n return [scaledCoords[0], scaledCoords[1]];\n };\n\n /**\n * HandleHoverOn method - To handle mouse hover on event.\n * @param area -IArea.\n */\n public handleHoverOn = (area: IArea): void => {\n if (area.center && this._canvas.current) {\n this.drawCircle(this.scaleCoords(area.coords));\n this.expandAnimation(area.center);\n }\n };\n\n /**\n * HandleHoverOff method - To handle mouse hover off event.\n * @param area -IArea.\n */\n public handleHoverOff = (area: IArea): void => {\n if (this._canvas.current) {\n const context = this._canvas.current.getContext('2d') ?? this._context;\n const canvasPositionX: number = CanvasCalculations.defaultPositionX;\n const canvasPositionY: number = CanvasCalculations.defaultPositionY;\n\n if (!context) {\n return;\n }\n context.clearRect(canvasPositionX, canvasPositionY, this._canvas.current.width, this._canvas.current.height);\n this.renderPrefilledAreas();\n if (area.center) {\n this.collapseAnimation(area.center);\n }\n }\n };\n\n /**\n * Click method - Mouse click event.\n * @param area -IArea.\n * @param index - Number.\n * @returns - Void.\n */\n public click = (area: IArea, index: number) => (event: AreaEvent): void => {\n const { onClick } = this.props;\n if (onClick) {\n event.preventDefault();\n onClick(area, index, event);\n }\n };\n\n /**\n * HoverOn method - Mouse hover on event.\n * @param area -IArea.\n * @param index - Number.\n * @returns - Void.\n */\n public hoverOn = (area: IArea, index: number) => (event: AreaEvent): void => {\n const { onMouseEnter } = this.props;\n this.handleHoverOn(area);\n if (onMouseEnter) {\n onMouseEnter(area, index, event);\n }\n };\n\n /**\n * HoverOff method - Mouse hover off event.\n * @param area - IArea.\n * @param index - Number.\n * @returns - Void.\n */\n public hoverOff = (area: IArea, index: number) => (event: AreaEvent): void => {\n const { onMouseLeave } = this.props;\n\n this.handleHoverOff(area);\n\n if (onMouseLeave) {\n onMouseLeave(area, index, event);\n }\n };\n\n /**\n * RenderAreas method - Renders active points at given coordinates.\n * @returns -Returns JSX.Element[].\n */\n public renderAreas = (): JSX.Element[] => {\n const { areaMap, viewPort } = this.props;\n const buttonText = this.props.imageMapperResources?.buttonText ? this.props.imageMapperResources.buttonText : '';\n const altText = this.props.imageMapperResources?.altText ? this.props.imageMapperResources.altText : '';\n const doubleMultiplier: number = CanvasCalculations.doubleMultiplier;\n\n return areaMap.areas.map((area, index) => {\n const scaledCoords = this.scaleCoords(area.coords);\n const xsRadius = area.coords[2] * doubleMultiplier;\n if (viewPort === 'xs') {\n scaledCoords[2] = xsRadius;\n }\n const center = this.computeCenter(area);\n const extendedArea = { ...area, scaledCoords, center };\n const areaKey = `area-${index}`;\n const altTextWithProductName = altText\n .replace('{buttonText}', buttonText ? buttonText : '')\n .replace('{productName}', area.productSearchResult?.Name ? area.productSearchResult.Name : '');\n return (\n \n );\n });\n };\n\n /**\n * InitCanvas method - To render the canvas.\n */\n public initCanvas = (): void => {\n if (!this._canvas.current || !this._backgroundImage.current || !this._container.current) {\n return;\n }\n\n const { color, onLoad } = this.props;\n const defaultWidth: number = CanvasCalculations.defaultWidth;\n const defaultHeight: number = CanvasCalculations.defaultHeight;\n\n const canvasWidth = this.getActiveImageWidth() ?? defaultWidth;\n const canvasHeight = this.getActiveImageHeight() ?? defaultHeight;\n\n this._canvas.current.width = canvasWidth;\n this._canvas.current.height = canvasHeight;\n this._container.current.style.width = `${canvasWidth}px`;\n\n const context = this._canvas.current.getContext('2d') ?? this._context;\n if (!context) {\n return;\n }\n context.fillStyle = color ?? '';\n\n if (onLoad) {\n onLoad();\n }\n\n this.renderPrefilledAreas();\n };\n\n /**\n * Render method - To render the image mapper component with active image, canvas and active points.\n * @returns -Returns JSX.Element | null.\n */\n public render(): JSX.Element | null {\n const { imageData, areaMap, requestContext } = this.props;\n\n return (\n
\n \n \n \n {this.renderAreas()}\n \n
\n );\n }\n}\n\nexport default ImageMapper;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as MsDyn365 from '@msdyn365-commerce/core';\nimport { ProductSearchResult } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, getProductPageUrlSync } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IModuleProps,\n INodeProps,\n isMobile,\n ITelemetryContent,\n VariantType\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport {\n activeImageAdditionalContent,\n ActiveProductComponent,\n IActiveImageAdditionalContentViewProps,\n IArea,\n IAreaMap,\n IImageMapperProps,\n ImageMapper\n} from '../active-image-utilities';\nimport { IActiveImageData } from './active-image.data';\nimport { IActiveImageProps } from './active-image.props.autogenerated';\n\n/**\n * @type AreaEvent for active points\n */\ntype AreaEvent = Event | React.MouseEvent | React.FocusEvent;\n\n/**\n * @interface IActiveImageViewProps\n * @classdesc - The IActiveImageViewProps interface contract.\n */\nexport interface IActiveImageViewProps extends IActiveImageProps<{}>, IImageMapperProps {\n activePointContainer: IModuleProps;\n activePointDetailsContainer: INodeProps;\n imageMapper: React.ReactNode;\n overlay: React.ReactNode;\n productCard: React.ReactNode;\n title?: React.ReactNode;\n text?: React.ReactNode;\n links?: React.ReactNode;\n detailsContainer?: INodeProps;\n detailsContainerCta?: INodeProps;\n additionalContent?: IActiveImageAdditionalContentViewProps;\n productCardleftPosition: number;\n productCardtopPosition: number;\n handleAdditionalText?(event: MsDyn365.ContentEditableEvent): void;\n handleAdditionalParagraph?(event: MsDyn365.ContentEditableEvent): void;\n handleAdditionalLinkText?(event: MsDyn365.ContentEditableEvent): void;\n}\n\n/**\n * @interface IActiveImageLinksData\n * @classdesc - The IActiveImageLinksData interface contract.\n */\nexport interface IActiveImageLinksData {\n linkText?: string;\n linkUrl: MsDyn365.ILinkData;\n ariaLabel?: string;\n willOpenInNewTab?: boolean;\n}\n\n/**\n * @interface IActiveImageState\n * @classdesc - The IActiveImageState interface contract.\n */\ninterface IActiveImageState {\n clientWidth: number;\n area: IArea | null;\n viewport: string;\n overlayClass: string;\n}\n\n/**\n * @enum ActiveImageConstants\n * @description - The active image constants enum.\n */\nexport enum ActiveImageConstants {\n timeoutInterval = 200,\n enterKey = 'Enter',\n escKey = 'Escape'\n}\n\n/**\n *\n * ActiveImage class.\n * @extends {React.PureComponent & IImageMapperProps, IActiveImageState>}\n */\nexport class ActiveImage extends React.PureComponent & IImageMapperProps, IActiveImageState> {\n private readonly _telemetryContent: ITelemetryContent;\n\n private _isDesktopViewPort: boolean;\n\n private readonly _defaultProductCardWidth: number = 315;\n\n private readonly _defaultProdutCardHight: number = 490;\n\n private readonly _activePoints: IArea[] = [];\n\n private readonly _activeImageRefs: React.RefObject;\n\n private readonly _activeImageClass: string;\n\n private readonly _productCardDivRef: React.RefObject;\n\n public constructor(props: IActiveImageProps & IImageMapperProps) {\n super(props);\n this._telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n const viewport = isMobile({ variant: VariantType.Browser, context: this.props.context.request });\n this._activeImageClass = `msc-active-image-${this.getActiveImageId()}`;\n this.state = {\n clientWidth: 0,\n area: null,\n viewport,\n overlayClass: ''\n };\n this._isDesktopViewPort = viewport === 'lg' || viewport === 'xl';\n this._activeImageRefs = React.createRef();\n this._productCardDivRef = React.createRef();\n }\n\n public componentDidMount(): void {\n if (MsDyn365.msdyn365Commerce.isBrowser) {\n window.addEventListener('resize', this.updateClientWidth);\n document.addEventListener('keydown', this.keyDown, false);\n document.addEventListener('mousedown', this._handleOutsideClick);\n }\n setTimeout(() => {\n this.updateClientWidth();\n }, ActiveImageConstants.timeoutInterval);\n\n if (MsDyn365.msdyn365Commerce.isBrowser && this._activeImageRefs.current) {\n const images: HTMLCollectionOf = this._activeImageRefs.current.getElementsByClassName(\n 'msc-thumbnail_image msc-active-image-img'\n );\n if (ArrayExtensions.hasElements(Array.from(images))) {\n images[0].removeAttribute('usemap');\n }\n }\n }\n\n /**\n * AddActivePoints method - To handle add Active Points.\n * @param area - IArea.\n * @param product - ProductSearchResult.\n * @param coords - Coords.\n * @param productUrl - String.\n */\n public addActivePoints = (area: IArea | undefined, product: ProductSearchResult, coords: number[], productUrl: string): void => {\n if (!area) {\n this._activePoints.push({\n areaId: product.RecordId.toString(),\n coords,\n primaryImageUrl: product.PrimaryImageUrl ?? '',\n productUrl,\n productSearchResult: product\n });\n }\n };\n\n /**\n * ComponentWillUnmount method.\n */\n public componentWillUnmount(): void {\n if (MsDyn365.msdyn365Commerce.isBrowser) {\n window.removeEventListener('resize', this.updateClientWidth);\n document.removeEventListener('keydown', (this.keyDown as unknown) as EventListener, false);\n document.removeEventListener('mousedown', this._handleOutsideClick, false);\n }\n }\n\n /**\n * UpdateClientWidth method to update client width in state.\n */\n public updateClientWidth = (): void => {\n const viewport = isMobile({ variant: VariantType.Browser, context: this.props.context.request });\n this.setState({ clientWidth: this.getActiveImageWidth(), viewport });\n this._isDesktopViewPort = viewport === 'lg' || viewport === 'xl';\n };\n\n /**\n * Render method.\n * @returns - Returns JSX.Element | null.\n */\n public render(): JSX.Element | null {\n const viewProps: IActiveImageViewProps = {\n ...(this.props as IImageMapperProps & IActiveImageProps<{}>),\n activePointContainer: {\n moduleProps: this.props,\n className: classnames('msc-active-image', this._activeImageClass, this.props.config.className)\n },\n activePointDetailsContainer: {\n tag: 'div',\n className: classnames('msc-active-image-wrapper', this._activeImageClass, this.props.config.className),\n ref: this._activeImageRefs\n },\n imgWidth: this.props.config.canvasWidth,\n imageMapper: this.renderImageMapper(),\n overlay: this.renderOverlay(),\n productCard: this.renderProductCard(),\n productCardleftPosition: this.getProductCardPositionX(),\n productCardtopPosition: this.getProductCardPositionY(),\n title: this.renderActiveImageDetailsHeading(),\n text: this.renderActiveImageDetailsParagraph(),\n links: this.renderActiveImageDetailsLinks(),\n detailsContainer: { className: 'msc-active-image__details' },\n detailsContainerCta: { className: 'msc-active-image__details__cta' },\n additionalContent: activeImageAdditionalContent({\n requestContext: this.props.context.request,\n additionalContent: this.props.config.additionalContent,\n handleAdditionalTextChange: this.handleAdditionalTextChange,\n handleAdditionalParagraphChange: this.handleAdditionalParagraphChange,\n handleAdditionalLinkTextChange: this.handleAdditionalLinkTextChange\n }),\n handleAdditionalText: this.handleAdditionalTextChange,\n handleAdditionalParagraph: this.handleAdditionalParagraphChange,\n handleAdditionalLinkText: this.handleAdditionalTextChange\n };\n\n return this.props.renderView(viewProps);\n }\n\n /**\n * RenderImageMapper method - To render image mapper.\n * @returns - Returns React.ReactNode | null.\n */\n public renderImageMapper = (): React.ReactNode | null => {\n const { config, context } = this.props;\n const defaultPosition: number = 0;\n const defaultLength: number = 0;\n const productResults = this.props.data.products.result;\n if (config.activePoints && productResults) {\n for (const product of productResults) {\n for (const configProduct of config.activePoints) {\n if (product.ItemId === configProduct.itemId) {\n const productUrl = getProductPageUrlSync(product.Name ?? '', product.RecordId, context.actionContext, undefined);\n const coords = [\n configProduct.xPosition ?? defaultPosition,\n configProduct.yPosition ?? defaultPosition,\n configProduct.radius ?? defaultPosition\n ];\n const area = this._activePoints.find(activePoint => JSON.stringify(activePoint.coords) === JSON.stringify(coords));\n this.addActivePoints(area, product, coords, productUrl);\n }\n }\n }\n }\n const mappedArea: IAreaMap = {\n name: `map-${this._activeImageClass}`,\n areas: this._activePoints.length > defaultLength ? this._activePoints : []\n };\n\n // If image is null, we want to render the placeholder SVG - by passing image data with empty src\n return (\n \n );\n };\n\n /**\n * EnterArea method - To handle mouse enter event.\n * @param area - Active point area.\n * @param index - Active point index.\n * @param event - Active point AreaEvent.\n */\n public enterArea = (area: IArea, index: number, event: AreaEvent): void => {\n this.setState({ area, overlayClass: 'msc-active-image-overlay' });\n if (this.props.onMouseEnter) {\n this.props.onMouseEnter(area, index, event);\n }\n if (event.type.toLocaleLowerCase() === 'click' && this._isDesktopViewPort) {\n window.open(area.productUrl, '_self');\n }\n };\n\n /**\n * LeaveArea method - To handle mouse leave event.\n */\n public leaveArea = (): void => {\n if (this._isDesktopViewPort) {\n this.resetState();\n }\n };\n\n /**\n * ResetState method - To reset the state for area and overlayclass.\n */\n public resetState = (): void => {\n this.setState({ area: null, overlayClass: '' });\n };\n\n /**\n * RenderProductComponent method - To render the product card with product information.\n * @returns - Returns React.ReactNode.\n */\n public renderProductComponent = (): React.ReactNode => {\n if (this.state.area?.productSearchResult) {\n const baseImageUrl: string = this.props.context.request.apiSettings.baseImageUrl;\n const imageUrl: string = this.state.area.primaryImageUrl ?? '';\n const primaryImageUrl: string = `${baseImageUrl}${imageUrl}`;\n const product: ProductSearchResult = this.state.area.productSearchResult;\n product.PrimaryImageUrl = primaryImageUrl;\n\n return (\n \n );\n }\n return React.Fragment;\n };\n\n /**\n * RenderProductCard method - To render product cards.\n * @returns - Returns React.ReactNode.\n */\n public renderProductCard = (): React.ReactNode => {\n const { area } = this.state;\n\n return (\n <>\n {area?.center && (\n
\n
\n {!this._isDesktopViewPort &&
\n
\n )}\n \n );\n };\n\n /**\n * RenderOverlay method - To render overlay for non desktop viewports.\n * @returns - Returns React.ReactNode.\n */\n public renderOverlay = (): React.ReactNode => {\n return <>{!this._isDesktopViewPort &&
};\n };\n\n /**\n * GetProductCardPositionX method - Provides product card x position to the left or right of active point based on available space.\n * For xs, sm and md viewports it provides x position for the center alignment.\n * @returns - Returns number.\n */\n public getProductCardPositionX = (): number => {\n const defaultImageSettings = this.getDefaultImageSettings();\n const productImageSettingsWidth = this.props.config.productImageSettings?.viewports\n ? this.props.config.productImageSettings.viewports.lg?.w\n : defaultImageSettings.viewports.lg?.w;\n const defaultPositionX: number = 0;\n const halfDivisor: number = 2;\n const productCardWidth: number = productImageSettingsWidth ? productImageSettingsWidth : this._defaultProductCardWidth;\n const { area, clientWidth, viewport } = this.state;\n const pointPositionX = area?.center?.[0] ?? clientWidth / halfDivisor;\n const leftAllignPosition = pointPositionX - productCardWidth - productCardWidth / halfDivisor;\n const rightAllignPosition = pointPositionX + productCardWidth / halfDivisor;\n let position: number = (clientWidth - productCardWidth) / halfDivisor;\n if (viewport !== 'xs' && viewport !== 'sm' && viewport !== 'md') {\n if (leftAllignPosition < defaultPositionX) {\n position = rightAllignPosition;\n } else {\n position = leftAllignPosition;\n }\n }\n return position;\n };\n\n /**\n * GetProductCardPositionY method - Provides product card y position in center with respect to active point.\n * For xs, sm and md viewports it provides y position for the center alignment.\n * @returns - Returns number.\n */\n public getProductCardPositionY = (): number => {\n const defaultImageSettings = this.getDefaultImageSettings();\n const productImageSettingsHeight = this.props.config.productImageSettings?.viewports\n ? this.props.config.productImageSettings.viewports.lg?.h\n : defaultImageSettings.viewports.lg?.h;\n const halfDivisor: number = 2;\n const { area, viewport } = this.state;\n const produtCardHight: number = productImageSettingsHeight ? productImageSettingsHeight : this._defaultProdutCardHight;\n const pointPositionY = (this.getActiveImageHeight() - produtCardHight) / halfDivisor;\n let position: number = pointPositionY;\n if (viewport !== 'xs' && viewport !== 'sm' && viewport !== 'md') {\n position = (area?.center?.[1] ?? this.getActiveImageHeight() / halfDivisor) - produtCardHight / halfDivisor;\n }\n return position;\n };\n\n /**\n * GetDefaultImageSettings method.\n * @returns MsDyn365.IImageSettings.\n */\n public getDefaultImageSettings = (): MsDyn365.IImageSettings => {\n const defaultImageSettings: MsDyn365.IImageSettings = {\n viewports: {\n xs: { q: 'w=275&h=275&m=6', w: 275, h: 275 },\n lg: { q: 'w=275&h=275&m=6', w: 275, h: 275 },\n xl: { q: 'w=275&h=275&m=6', w: 275, h: 275 }\n },\n lazyload: true\n };\n\n return defaultImageSettings;\n };\n\n /**\n * KeyDown method - To handle keydown event.\n * @param event - KeyboardEvent.\n */\n public keyDown = (event: KeyboardEvent): void => {\n if (event.key === ActiveImageConstants.enterKey) {\n const target: HTMLElement = event.target as HTMLElement;\n if (target.nodeName === 'AREA') {\n const area: HTMLAreaElement = target as HTMLAreaElement;\n if (area.href) {\n window.open(area.href, '_self');\n }\n }\n }\n if (event.key === ActiveImageConstants.escKey) {\n this.resetState();\n }\n };\n\n /**\n * GetActiveImageWidth method - To get active image width.\n * @returns Returns number.\n */\n public getActiveImageWidth = (): number => {\n const defaultWidth: number = 0;\n if (MsDyn365.msdyn365Commerce.isBrowser) {\n const activeImageReferenceValue = this._activeImageRefs;\n if (activeImageReferenceValue.current !== null) {\n return activeImageReferenceValue.current.clientWidth;\n }\n }\n return defaultWidth;\n };\n\n /**\n * GetActiveImageHeight method - To get active image height.\n * @returns Returns number.\n */\n public getActiveImageHeight = (): number => {\n const defaultHeight: number = 0;\n if (MsDyn365.msdyn365Commerce.isBrowser) {\n const activeImageReferenceValue = this._activeImageRefs;\n if (activeImageReferenceValue.current !== null) {\n return activeImageReferenceValue.current.clientHeight;\n }\n }\n return defaultHeight;\n };\n\n /**\n * HandleLinkTextChange method - To handle link text change event.\n * @param linkIndex - The link index.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleLinkTextChange(linkIndex: number, event: MsDyn365.ContentEditableEvent): void {\n if (this.props.config.links && this.props.config.links[Number(linkIndex)]) {\n this.props.config.links[Number(linkIndex)].linkText = event.target.value;\n }\n }\n\n /**\n * HandleTextChange method - To handle text change event.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleTextChange = (event: MsDyn365.ContentEditableEvent): void => {\n this.props.config.heading!.text = event.target.value;\n };\n\n /**\n * HandleParagraphChange method - To handle paragraph change event.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleParagraphChange = (event: MsDyn365.ContentEditableEvent): void => {\n this.props.config.paragraph = event.target.value;\n };\n\n /**\n * HandleAdditionalTextChange method - To handle additional text change event.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleAdditionalTextChange(event: MsDyn365.ContentEditableEvent): void {\n if (this.props.config.additionalContent) {\n this.props.config.additionalContent.heading = event.target.value;\n }\n }\n\n /**\n * HandleAdditionalLinkTextChange method - To handle additional link text change event.\n * @param linkIndex - The link index.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleAdditionalLinkTextChange(linkIndex: number, event: MsDyn365.ContentEditableEvent): void {\n const additionalContent = this.props.config.additionalContent ?? {};\n if (additionalContent.links) {\n additionalContent.links[Number(linkIndex)].linkText = event.target.value;\n }\n }\n\n /**\n * HandleAdditionalParagraphChange method - To handle additional paragraph change event.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleAdditionalParagraphChange(event: MsDyn365.ContentEditableEvent): void {\n if (this.props.config.additionalContent) {\n this.props.config.additionalContent.subtext = event.target.value;\n }\n }\n\n /**\n * RenderActiveImageDetailsLinks method - To render active image details links.\n * @returns - React node.\n */\n public renderActiveImageDetailsLinks = (): React.ReactNode[] | undefined => {\n const { links } = this.props.config;\n const payLoad = getPayloadObject('click', this._telemetryContent, '');\n\n return links?.map((linkData: IActiveImageLinksData, index: number) => {\n payLoad.contentAction.etext = linkData.linkText;\n const attributes = getTelemetryAttributes(this._telemetryContent, payLoad);\n const linkId = index;\n const editableLink: MsDyn365.ILinksData = {\n ariaLabel: linkData.ariaLabel,\n className: 'msc-active-image__details__cta__link',\n linkText: linkData.linkText,\n linkUrl: linkData.linkUrl.destinationUrl,\n openInNewTab: linkData.willOpenInNewTab,\n role: 'button',\n additionalProperties: attributes\n };\n\n return (\n {\n this.handleLinkTextChange(index, event);\n },\n requestContext: this.props.context.request\n }}\n />\n );\n });\n };\n\n /**\n * RenderActiveImageDetailsHeading method - To render active image details heading.\n * @returns - React.ReactNode | undefined.\n */\n public renderActiveImageDetailsHeading = (): React.ReactNode | undefined => {\n const { heading } = this.props.config;\n\n return (\n heading && (\n \n )\n );\n };\n\n /**\n * RenderActiveImageDetailsParagraph method - To render active image details paragraph.\n * @returns - React.ReactNode | undefined.\n */\n public renderActiveImageDetailsParagraph = (): React.ReactNode | undefined => {\n const { paragraph } = this.props.config;\n\n return (\n paragraph && (\n \n )\n );\n };\n\n /**\n * GetActiveImageId - To get active image id from src.\n * @returns - String.\n */\n public getActiveImageId = (): string => {\n const { activeImage } = this.props.config;\n let activeImageId: string = '';\n if (activeImage?.src) {\n const activeImageSource = activeImage.src.split('/');\n const decrementOne: number = 1;\n const activeImageIdPart = activeImageSource[activeImageSource.length - decrementOne].split('?');\n activeImageId = activeImageIdPart[0] ?? '';\n }\n return activeImageId;\n };\n\n /**\n * Handle outside click method - To handle outside click of the active image product.\n * @param event - Mouse event.\n */\n private readonly _handleOutsideClick = (event: MouseEvent) => {\n if (this._productCardDivRef.current?.contains(event.target as Node)) {\n return;\n }\n this.resetState();\n };\n}\nexport default ActiveImage;\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport interface ICheckoutTermsAndConditionsCheckboxProps {\r\n isChecked: boolean;\r\n ariaLabel?: string;\r\n disabled: boolean;\r\n id?: string;\r\n telemetryContent?: ITelemetryContent;\r\n onChange(event: React.ChangeEvent): void;\r\n}\r\n\r\n/**\r\n * AddPaymentForm SFC.\r\n * @param root0\r\n * @param root0.isChecked\r\n * @param root0.ariaLabel\r\n * @param root0.disabled\r\n * @param root0.telemetryContent\r\n * @param root0.onChange\r\n * @param root0.id\r\n * @extends {React.FC}\r\n */\r\nconst CheckoutTermsAndConditionsCheckbox: React.FC = ({\r\n isChecked,\r\n ariaLabel,\r\n disabled,\r\n telemetryContent,\r\n onChange,\r\n id\r\n}) => {\r\n const payLoad = getPayloadObject('click', telemetryContent!, '');\r\n const attribute = getTelemetryAttributes(telemetryContent!, payLoad);\r\n\r\n return (\r\n <>\r\n \r\n \r\n );\r\n};\r\n\r\nexport default CheckoutTermsAndConditionsCheckbox;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as React from 'react';\r\n\r\nexport interface ICheckoutTermsAndConditionsErrorMessageProps {\r\n message?: string;\r\n}\r\n\r\n/**\r\n * AddPaymentForm SFC.\r\n * @param root0\r\n * @param root0.message\r\n * @extends {React.FC}\r\n */\r\nconst CheckoutTermsAndConditionsErrorMessage: React.FC = ({ message }) => {\r\n if (!message) {\r\n return null;\r\n }\r\n\r\n return

{message}

;\r\n};\r\n\r\nexport default CheckoutTermsAndConditionsErrorMessage;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as React from 'react';\r\n\r\nexport interface ICheckoutTermsAndConditionsErrorTitleProps {\r\n title?: string;\r\n}\r\n\r\n/**\r\n * AddPaymentForm SFC.\r\n * @param root0\r\n * @param root0.title\r\n * @extends {React.FC}\r\n */\r\nconst CheckoutTermsAndConditionsErrorTitle: React.FC = ({ title }) => {\r\n if (!title) {\r\n return null;\r\n }\r\n\r\n return

{title}

;\r\n};\r\n\r\nexport default CheckoutTermsAndConditionsErrorTitle;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as MsDyn365 from '@msdyn365-commerce/core';\r\nimport { IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\r\nimport { Button, getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport { CheckoutModule, ErrorLocation } from '@msdyn365-commerce/global-state';\r\nimport classname from 'classnames';\r\nimport { action, computed, observable, reaction, when } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport { ILdsCheckoutTermsAndConditionsData } from './lds-checkout-terms-and-conditions.data';\r\nimport { ILdsCheckoutTermsAndConditionsProps } from './lds-checkout-terms-and-conditions.props.autogenerated';\r\nimport CheckboxComponent from './components/lds-checkout-terms-and-conditions.check-box';\r\nimport ErrorMessageComponent from './components/lds-checkout-terms-and-conditions.error-message';\r\nimport ErrorTitleComponent from './components/lds-checkout-terms-and-conditions.error-title';\r\nimport { focusOnCheckoutError } from '@msdyn365-commerce-modules/checkout';\r\nimport { IChurchRetailChannelPolicyEntity } from '../../actions/DataServiceEntities.g';\r\n\r\nexport interface ICheckoutTermsAndConditionsModuleProps\r\n extends ILdsCheckoutTermsAndConditionsProps,\r\n IModuleStateProps {}\r\n\r\nexport interface ICheckoutTermsAndConditions {\r\n termsAndConditionAcceptance: INodeProps;\r\n checkBox: React.ReactNode;\r\n description: React.ReactNode;\r\n}\r\n\r\nexport interface ICheckoutTermsAndConditionsError {\r\n error: INodeProps;\r\n title: React.ReactNode;\r\n message: React.ReactNode;\r\n}\r\n\r\nexport interface ICheckoutTermsAndConditionsViewState {\r\n isError: boolean;\r\n isShowSaveButton: boolean;\r\n isShowEditButton: boolean;\r\n isShowCancelButton: boolean;\r\n}\r\n\r\nexport interface ICheckoutTermsAndConditionsViewProps extends ILdsCheckoutTermsAndConditionsProps<{}> {\r\n checkoutTermsAndConditions: IModuleProps;\r\n isTermsAccepted: boolean;\r\n errorMessageData: string;\r\n viewState: ICheckoutTermsAndConditionsViewState;\r\n termsAndConditionsContent: ICheckoutTermsAndConditions;\r\n salesAndRefundPolicy?: IChurchRetailChannelPolicyEntity | undefined;\r\n errorMessage?: ICheckoutTermsAndConditionsError;\r\n saveButton?: React.ReactNode;\r\n editButton?: React.ReactNode;\r\n cancelButton?: React.ReactNode;\r\n checkoutErrorRef?: React.RefObject;\r\n onChange(event: React.ChangeEvent): void;\r\n onSave(): void;\r\n onEdit(): void;\r\n onCancel(): void;\r\n}\r\n\r\n/**\r\n *\r\n * CheckoutTermsAndConditions component.\r\n * @extends {React.Component>}\r\n */\r\n// @ts-expect-error\r\n@withModuleState\r\n@observer\r\nclass CheckoutTermsAndConditions extends React.Component {\r\n private readonly telemetryContent: ITelemetryContent;\r\n\r\n private readonly checkoutErrorRef: React.RefObject = React.createRef();\r\n\r\n @observable private isTermsAccepted: boolean = true;\r\n\r\n @observable private errorMessage?: string;\r\n\r\n constructor(props: ICheckoutTermsAndConditionsModuleProps) {\r\n super(props);\r\n this.telemetryContent = getTelemetryObject(\r\n this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry\r\n );\r\n }\r\n\r\n @computed get isDataReady(): boolean {\r\n return (this.props.data.checkout.result && this.props.data.checkout.status) === 'SUCCESS';\r\n }\r\n\r\n @computed get isShowButtons(): boolean {\r\n const { showControlButtons } = this.props.config;\r\n return !this.props.moduleState.hasExternalSubmitGroup && (showControlButtons || false);\r\n }\r\n\r\n @computed get isAutoSave(): boolean {\r\n const { showControlButtons } = this.props.config;\r\n return !this.props.moduleState.hasExternalSubmitGroup && !showControlButtons;\r\n }\r\n\r\n @computed get defaultTermsAndConditionAcceptedValue(): boolean {\r\n const { showCheckbox } = this.props.config;\r\n return !showCheckbox;\r\n }\r\n\r\n public async componentDidMount(): Promise {\r\n when(\r\n () => this.isDataReady,\r\n async () => {\r\n await this.init();\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.props.data.checkout.result && this.props.data.checkout.result.isTermsAndConditionAccepted,\r\n async () => {\r\n this.isTermsAccepted =\r\n this.props.data.checkout.result?.isTermsAndConditionAccepted || this.defaultTermsAndConditionAcceptedValue;\r\n }\r\n );\r\n\r\n if (this.props.data.checkout.result?.shouldEnableCheckoutErrorDisplayMessaging) {\r\n reaction(\r\n () => this.props.data.checkout.result?.checkoutError,\r\n checkoutError => {\r\n if (\r\n checkoutError &&\r\n checkoutError.errorLocation === ErrorLocation.CheckoutTermsAndConditions &&\r\n checkoutError.errorMessage\r\n ) {\r\n this.setError(checkoutError.errorMessage);\r\n }\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.props.data.checkout.result?.checkoutErrorFocus,\r\n checkoutErrorFocus => {\r\n if (checkoutErrorFocus === CheckoutModule.CheckoutTermsAndConditions) {\r\n void focusOnCheckoutError(this.checkoutErrorRef, this.props.context.actionContext);\r\n }\r\n }\r\n );\r\n }\r\n }\r\n\r\n public shouldComponentUpdate(\r\n nextProps: ICheckoutTermsAndConditionsModuleProps,\r\n nextState: ICheckoutTermsAndConditionsViewState\r\n ): boolean {\r\n if (this.state === nextState && this.props === nextProps) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const {\r\n moduleState: { isReady, hasError },\r\n config: { className }\r\n } = this.props;\r\n const isTermsAndConditionAccepted = this.props.data.checkout.result?.isTermsAndConditionAccepted;\r\n const isError = hasError;\r\n const isShowContent = !isReady;\r\n const isShowSelected = !hasError && isReady;\r\n\r\n const policies = this.props.data.policy.result;\r\n const salesAndRefundPolicy = policies?.find((policy: any) => policy.USEFORCHECKOUT === 1 || policy.UseForCheckout === 1);\r\n\r\n const viewProps = {\r\n ...this.props,\r\n ...this.state,\r\n salesAndRefundPolicy,\r\n isTermsAccepted: this.isTermsAccepted,\r\n errorMessageData: this.errorMessage,\r\n checkoutErrorRef: this.checkoutErrorRef,\r\n viewState: {\r\n isError,\r\n isShowSaveButton: isShowContent && this.isShowButtons,\r\n isShowEditButton: isShowSelected && this.isShowButtons,\r\n isShowCancelButton: isShowContent && this.isShowButtons && isTermsAndConditionAccepted\r\n },\r\n checkoutTermsAndConditions: {\r\n moduleProps: this.props,\r\n className: classname('ms-checkout-terms-and-conditions', className)\r\n },\r\n termsAndConditionsContent: this.getTermsAndConditions(),\r\n errorMessage: this.getErrorMessage(),\r\n saveButton: this.getSaveButton(),\r\n editButton: this.getEditButton(),\r\n cancelButton: this.getCancelButton(),\r\n onSave: this.onSubmit,\r\n onEdit: this.onEdit,\r\n onCancel: this.onCancel,\r\n onChange: this.onChange\r\n };\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n public handleTextChange = (event: MsDyn365.ContentEditableEvent) => (this.props.config.description = event.target.value);\r\n\r\n private readonly getTermsAndConditions = (): ICheckoutTermsAndConditions => {\r\n const {\r\n moduleState: { isReady },\r\n config: { showCheckbox, description }\r\n } = this.props;\r\n const isDisabled = isReady && !this.isAutoSave;\r\n const isTermsAndConditionAccepted = this.isTermsAccepted;\r\n const { checkboxAriaLabel } = this.props.resources;\r\n return {\r\n termsAndConditionAcceptance: { className: 'ms-checkout-terms-and-conditions__container' },\r\n checkBox: showCheckbox && (\r\n \r\n ),\r\n description: (\r\n \r\n )\r\n };\r\n };\r\n\r\n @action\r\n private readonly init = async (): Promise => {\r\n const {\r\n data,\r\n config: { showCheckbox }\r\n } = this.props;\r\n\r\n const hasInvoiceLine = this.props.data.checkout.result?.checkoutCart.hasInvoiceLine;\r\n\r\n // If hasInvoiceLine is true, this is for b2b and isTermsAccepted should be true\r\n if (hasInvoiceLine || data.checkout.result?.isTermsAndConditionAccepted || !showCheckbox) {\r\n await this.updateTermsAndConditionsAcceptance(true);\r\n this.isTermsAccepted = true;\r\n } else if (showCheckbox) {\r\n await this.updateTermsAndConditionsAcceptance(false);\r\n this.isTermsAccepted = false;\r\n }\r\n\r\n this.props.moduleState.init({\r\n onEdit: this.onEdit,\r\n onCancel: this.onCancel,\r\n onSubmit: this.onSubmit,\r\n status: hasInvoiceLine ? 'disabled' : this.isTermsAccepted ? 'ready' : 'updating'\r\n });\r\n };\r\n\r\n private readonly getErrorMessage = (): ICheckoutTermsAndConditionsError => {\r\n const { errorMessageTitle } = this.props.resources;\r\n return {\r\n error: { tag: 'div', className: 'ms-checkout-terms-and-conditions__error', role: 'alert', 'aria-live': 'assertive' },\r\n title: ,\r\n message: \r\n };\r\n };\r\n\r\n private readonly getCancelButton = (): React.ReactNode => {\r\n const { cancelBtnLabel = 'Cancel', cancelBtnAriaLabel } = this.props.resources;\r\n return (\r\n \r\n {cancelBtnLabel}\r\n \r\n );\r\n };\r\n\r\n private readonly getSaveButton = (): React.ReactNode => {\r\n const { saveBtnLabel = 'Save', saveBtnAriaLabel } = this.props.resources;\r\n return (\r\n \r\n {saveBtnLabel}\r\n \r\n );\r\n };\r\n\r\n private readonly getEditButton = (): React.ReactNode => {\r\n const { editBtnLabel = 'Change', editBtnAriaLabel } = this.props.resources;\r\n return (\r\n \r\n {editBtnLabel}\r\n \r\n );\r\n };\r\n\r\n private readonly onEdit = (): void => {\r\n this.props.telemetry.information('Terms and conditions onEdit is called.');\r\n\r\n this.onUpdating();\r\n };\r\n\r\n private readonly onSubmit = async (): Promise => {\r\n this.props.telemetry.information('Terms and conditions onSubmit is called.');\r\n\r\n if (!this.isTermsAccepted) {\r\n if (this.isAutoSave) {\r\n await this.updateTermsAndConditionsAcceptance(this.isTermsAccepted);\r\n } else {\r\n this.setError(this.props.resources.errorMessage);\r\n this.props.moduleState.setHasError(true);\r\n }\r\n } else {\r\n this.clearError();\r\n await this.updateTermsAndConditionsAcceptance(this.isTermsAccepted);\r\n this.props.moduleState.onReady();\r\n }\r\n };\r\n\r\n private readonly onUpdating = () => {\r\n this.props.moduleState.onUpdating();\r\n };\r\n\r\n private readonly setError = (errorMessage: string): void => {\r\n this.props.telemetry.error(errorMessage);\r\n this.props.moduleState.setHasError(true);\r\n this.props.moduleState.onUpdating();\r\n this.errorMessage = errorMessage;\r\n };\r\n\r\n private readonly onCancel = (): void => {\r\n this.props.telemetry.information('Terms and conditions onCancel is called.');\r\n\r\n // Reset to the saved value\r\n if (!this.props.data.checkout.result) {\r\n return;\r\n }\r\n\r\n const isTermsAccepted = this.props.data.checkout.result.isTermsAndConditionAccepted;\r\n if (!isTermsAccepted) {\r\n // It has no saved email, set to status updating and request user to fill the email form\r\n this.props.moduleState.onUpdating();\r\n } else {\r\n // It has saved email, set to status ready\r\n this.isTermsAccepted = true;\r\n this.props.moduleState.setHasError(false);\r\n this.props.moduleState.onReady();\r\n }\r\n };\r\n\r\n private readonly updateTermsAndConditionsAcceptance = async (isTermsAccepted: boolean): Promise => {\r\n if (this.props.data.checkout.result) {\r\n await this.props.data.checkout.result.updateTermsAndConditionsAcceptance({ newIsTermsAndConditionAccepted: isTermsAccepted });\r\n }\r\n };\r\n\r\n private readonly clearError = (): void => {\r\n this.props.moduleState.setHasError(false);\r\n this.errorMessage = undefined;\r\n };\r\n\r\n private readonly onChange = async (event: React.ChangeEvent) => {\r\n const checked = event.target.checked;\r\n this.isTermsAccepted = checked;\r\n\r\n // if (this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout) {\r\n // await this.props.data.checkout.result.updateIsTermsAndConditionsChecked({ newIsTermsAndConditionChecked: checked });\r\n // }\r\n if (this.props.data.checkout.result) {\r\n await this.props.data.checkout.result.updateIsTermsAndConditionsChecked({ newIsTermsAndConditionChecked: checked });\r\n }\r\n\r\n // if (this.isAutoSave) {\r\n // await this.onSubmit();\r\n // }\r\n await this.onSubmit();\r\n };\r\n}\r\n\r\nexport default CheckoutTermsAndConditions;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { Button, INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nexport interface IAddContactInfoInput {\r\n inputRef?: React.RefObject;\r\n hasError: boolean;\r\n email: string;\r\n phone: string;\r\n resources: {\r\n emailLabel: string;\r\n emailErrortext: string;\r\n saveBtnLabel: string;\r\n cancelBtnLabel: string;\r\n };\r\n canSubmit: boolean;\r\n canCancel: boolean;\r\n onChange(email: string): void;\r\n onChangePhone(phone: string): void;\r\n onSubmit(): void;\r\n onCancel(): void;\r\n}\r\n\r\nexport interface IAddContactInfo {\r\n addFormProps: INodeProps;\r\n submitButton: React.ReactNode;\r\n cancelButton: React.ReactNode;\r\n inputGroupProps: INodeProps;\r\n label: React.ReactNode;\r\n error: React.ReactNode;\r\n input: React.ReactNode;\r\n}\r\n\r\n/**\r\n * On Input change handler function.\r\n * @param onChange -On change input function.\r\n * @returns Call of onChange function.\r\n */\r\nconst onInputChangeHandler = (onChange: (email: string) => void) => (event: React.ChangeEvent): void => {\r\n onChange(event.target.value || '');\r\n};\r\n\r\nconst getAddContactInfo = ({\r\n hasError,\r\n inputRef,\r\n email,\r\n canSubmit,\r\n canCancel,\r\n onChange,\r\n onSubmit,\r\n onCancel,\r\n resources: { emailLabel, emailErrortext, saveBtnLabel, cancelBtnLabel },\r\n phone\r\n}: IAddContactInfoInput): IAddContactInfo => {\r\n const onInputChange = onInputChangeHandler(onChange);\r\n\r\n return {\r\n addFormProps: { className: 'ms-checkout-guest-profile__add-contact-info' },\r\n // submitButton: canSubmit && (\r\n // \r\n // ),\r\n submitButton: (\r\n \r\n ),\r\n // cancelButton: canCancel && (\r\n // \r\n // ),\r\n cancelButton: (\r\n \r\n ),\r\n inputGroupProps: { className: classnames('ms-checkout-guest-profile__input', { 'is-invalid': hasError }) },\r\n label: (\r\n \r\n ),\r\n error: hasError && (\r\n \r\n {emailErrortext}\r\n \r\n ),\r\n input: (\r\n \r\n )\r\n };\r\n};\r\n\r\nexport default getAddContactInfo;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { Button, INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport interface IShowContactInfoInput {\r\n canEdit: boolean;\r\n email: string;\r\n resources: {\r\n editBtnLabel: string;\r\n };\r\n onEdit(): void;\r\n}\r\n\r\nexport interface IShowContactInfo {\r\n showInfoProps: INodeProps;\r\n email: React.ReactNode;\r\n editButton?: React.ReactNode;\r\n}\r\n\r\nconst getContactInfo = ({ canEdit, email, resources: { editBtnLabel }, onEdit }: IShowContactInfoInput): IShowContactInfo => ({\r\n showInfoProps: { className: 'ms-checkout-guest-profile__selected-item' },\r\n email: {email},\r\n editButton: canEdit && (\r\n \r\n )\r\n});\r\n\r\nexport default getContactInfo;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\n// import { AttributeValueBase } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport { IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\r\nimport { EmailRegex, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { IModuleProps } from '@msdyn365-commerce-modules/utilities';\r\nimport { CheckoutModule, ErrorLocation } from '@msdyn365-commerce/global-state';\r\nimport classnames from 'classnames';\r\nimport { action, computed, reaction, when } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\nimport { focusOnCheckoutError } from '@msdyn365-commerce-modules/checkout';\r\nimport { ErrorComponent } from '@msdyn365-commerce-modules/checkout';\r\n\r\nimport { ILdsCheckoutContact4Data } from './lds-checkout-contact-4.data';\r\nimport { ILdsCheckoutContact4Props } from './lds-checkout-contact-4.props.autogenerated';\r\nimport getAddContactInfo, { IAddContactInfo } from './components/get-add-contact-info';\r\nimport getShowContactInfo, { IShowContactInfo } from './components/get-show-contact-info';\r\n\r\nexport * from './components/get-add-contact-info';\r\nexport * from './components/get-show-contact-info';\r\n\r\ninterface ICheckoutGuestProfileState {\r\n email: string;\r\n phone: string;\r\n phoneError: boolean;\r\n loading: boolean;\r\n hasCheckoutError?: boolean;\r\n errorMessage?: string;\r\n}\r\n\r\nexport interface ICheckoutGuestProfileModuleProps extends ILdsCheckoutContact4Props, IModuleStateProps {}\r\n\r\nexport interface ICheckoutGuestProfileViewProps extends ILdsCheckoutContact4Props, ICheckoutGuestProfileState {\r\n moduleProps: IModuleProps;\r\n showContactInfo?: IShowContactInfo;\r\n addContactInfo?: IAddContactInfo;\r\n alert?: React.ReactNode;\r\n checkoutErrorRef?: React.RefObject;\r\n phone: any;\r\n phoneError: any;\r\n loading: boolean;\r\n\r\n onChange?(email: string): void;\r\n onChangePhone(phone: string, country?: string): void;\r\n onEdit?(): void;\r\n onSubmit?(): void;\r\n onCancel?(): void;\r\n}\r\n\r\n/**\r\n *\r\n * CheckoutGuestProfile component.\r\n * @extends {React.PureComponent, ICheckoutGuestProfileState>}\r\n */\r\n// @ts-expect-error\r\n@withModuleState\r\n@observer\r\nclass CheckoutGuestProfile extends React.Component {\r\n public state: ICheckoutGuestProfileState = {\r\n email:\r\n (this.props.context &&\r\n this.props.context.request &&\r\n this.props.context.request.user &&\r\n this.props.context.request.user.isAuthenticated &&\r\n this.props.context.request.user.emailAddress) ||\r\n '',\r\n phone: '',\r\n phoneError: false,\r\n loading: false\r\n };\r\n\r\n private readonly inputRef: React.RefObject = React.createRef();\r\n\r\n private readonly checkoutErrorRef: React.RefObject = React.createRef();\r\n\r\n @computed get isDataReady(): boolean {\r\n return (this.props.data.checkout.result && this.props.data.checkout.status) === 'SUCCESS';\r\n }\r\n\r\n @computed get hasEmailError(): boolean {\r\n return this.props.moduleState.hasError && !this.state.hasCheckoutError;\r\n }\r\n\r\n public componentDidMount(): void {\r\n when(\r\n () => this.isDataReady,\r\n async () => {\r\n await this.init();\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.props.data.checkout.result?.isExpressCheckoutApplied,\r\n async isExpressCheckoutApplied => {\r\n const emailAddressFromExpressCheckout = this.props.data.checkout.result?.emailAddressFromExpressCheckout ?? '';\r\n const isEmailFromExpressCheckoutDifferent =\r\n !StringExtensions.isNullOrEmpty(emailAddressFromExpressCheckout) &&\r\n emailAddressFromExpressCheckout !== this.state.email;\r\n\r\n if (\r\n isExpressCheckoutApplied &&\r\n (!this.props.data.checkout.result?.isExpressAddressApplied || isEmailFromExpressCheckoutDifferent)\r\n ) {\r\n await this.submitEmail(emailAddressFromExpressCheckout);\r\n }\r\n }\r\n );\r\n\r\n if (this.props.data.checkout.result?.shouldEnableCheckoutErrorDisplayMessaging) {\r\n reaction(\r\n () => this.props.data.checkout.result?.checkoutError,\r\n checkoutError => {\r\n if (checkoutError && checkoutError.errorLocation === ErrorLocation.CheckoutGuestProfile && checkoutError.errorMessage) {\r\n this._setErrorMessage(checkoutError.errorMessage);\r\n }\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.props.data.checkout.result?.checkoutErrorFocus,\r\n checkoutErrorFocus => {\r\n if (checkoutErrorFocus === CheckoutModule.CheckoutGuestProfile) {\r\n void focusOnCheckoutError(this.checkoutErrorRef, this.props.context.actionContext);\r\n }\r\n }\r\n );\r\n }\r\n }\r\n\r\n public shouldComponentUpdate(nextProps: ICheckoutGuestProfileModuleProps, nextState: ICheckoutGuestProfileState): boolean {\r\n if (this.state === nextState && this.props.data === nextProps.data) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n public render(): JSX.Element {\r\n const {\r\n config: { className },\r\n resources,\r\n moduleState: { isReady, hasExternalSubmitGroup }\r\n } = this.props;\r\n const { hasCheckoutError, errorMessage } = this.state;\r\n const email = this.props.data.checkout.result?.guestCheckoutEmail ?? '';\r\n\r\n const viewProps: ICheckoutGuestProfileViewProps = {\r\n ...this.props,\r\n ...this.state,\r\n phone: this.state.phone,\r\n phoneError: this.state.phoneError,\r\n checkoutErrorRef: this.checkoutErrorRef,\r\n onChange: this.onChange,\r\n onChangePhone: this.onChangePhone,\r\n onEdit: this.onEdit,\r\n onCancel: this.onCancel,\r\n onSubmit: this.onSubmit,\r\n loading: this.state.loading,\r\n\r\n moduleProps: {\r\n moduleProps: this.props,\r\n className: classnames('ms-checkout-guest-profile', className, isReady ? 'show' : 'add')\r\n // className: classnames('ms-checkout-guest-profile', className, 'add')\r\n },\r\n alert: hasCheckoutError && errorMessage && (\r\n \r\n ),\r\n showContactInfo: isReady\r\n ? getShowContactInfo({\r\n canEdit: !hasExternalSubmitGroup,\r\n email,\r\n resources,\r\n onEdit: this.onEdit\r\n })\r\n : undefined,\r\n addContactInfo: !isReady\r\n ? getAddContactInfo({\r\n email: this.state.email,\r\n phone: this.state.phone,\r\n hasError: this.hasEmailError,\r\n resources,\r\n inputRef: this.inputRef,\r\n onChange: this.onChange,\r\n onChangePhone: this.onChangePhone,\r\n canSubmit: !hasExternalSubmitGroup,\r\n onSubmit: this.onSubmit,\r\n canCancel: !hasExternalSubmitGroup && !!email,\r\n onCancel: this.onCancel\r\n })\r\n : undefined\r\n };\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n private readonly init = async (): Promise => {\r\n const checkoutState = this.props.data.checkout.result;\r\n const customerAccountInformation = this.props.data.accountInformation?.result;\r\n\r\n const hasInvoiceLine = checkoutState?.checkoutCart.hasInvoiceLine;\r\n let updateEmail: string = '';\r\n\r\n // if obo enabled and profile selected, we need to send the order status to obo user not store manager.\r\n if (Msdyn365.isOboRequest(this.props.context.request)) {\r\n updateEmail =\r\n customerAccountInformation && customerAccountInformation.Email !== undefined\r\n ? customerAccountInformation.Email\r\n : this.setErrorMsgOboUserEmailEmpty();\r\n } else {\r\n updateEmail = this.state.email;\r\n }\r\n\r\n const emailOnCart = checkoutState?.checkoutCart.cart.ReceiptEmail;\r\n const email = hasInvoiceLine\r\n ? this.props.context.request.user.emailAddress ?? ''\r\n : emailOnCart ??\r\n (checkoutState?.isExpressCheckoutApplied && !StringExtensions.isNullOrEmpty(checkoutState.emailAddressFromExpressCheckout)\r\n ? checkoutState.emailAddressFromExpressCheckout\r\n : undefined) ??\r\n updateEmail;\r\n const phoneOnCart = checkoutState?.checkoutCart.cart.AttributeValues?.filter((attribute: any) => {\r\n return attribute.Name === 'PHONE';\r\n });\r\n const savedPhone = sessionStorage.getItem('phone');\r\n //@ts-ignore\r\n if (phoneOnCart && phoneOnCart[0] && phoneOnCart[0].TextValue) {\r\n //@ts-ignore\r\n this.setState({ phone: phoneOnCart[0].TextValue });\r\n } else if (savedPhone) {\r\n this.setState({ phone: savedPhone });\r\n }\r\n const isPhoneValid = this.isPhoneRequiredAndValid(\r\n // @ts-ignore\r\n phoneOnCart && phoneOnCart[0] && phoneOnCart[0].TextValue ? phoneOnCart[0].TextValue : this.state.phone\r\n );\r\n let status: any;\r\n const isEmailValid = this.isEmailValid(email);\r\n if (phoneOnCart && phoneOnCart.length === 0) {\r\n status = 'updating';\r\n } else if (isPhoneValid && isEmailValid) {\r\n status = 'ready';\r\n } else if (!isPhoneValid && isEmailValid) {\r\n status = 'updating';\r\n } else if (isPhoneValid && !isEmailValid) {\r\n status = 'updating';\r\n } else {\r\n status = 'updating';\r\n }\r\n\r\n this.props.moduleState.init({\r\n onEdit: this.onEdit,\r\n onCancel: this.onCancel,\r\n onSubmit: this.onSubmit,\r\n //Original status line\r\n // status: hasInvoiceLine ? 'disabled' : email && isEmailValid ? 'ready' : 'updating',\r\n //Current status line but getting caught in refresh\r\n // status: 'updating',\r\n //Testing status line to allow pass through after refresh\r\n status: status,\r\n hasError: !!email && !isEmailValid\r\n });\r\n\r\n if (email) {\r\n await this.updateGuestProfile(email);\r\n checkoutState?.updateHasGuestCheckoutEmail({ newHasGuestCheckoutEmail: true });\r\n } else {\r\n checkoutState?.updateHasGuestCheckoutEmail({ newHasGuestCheckoutEmail: false });\r\n }\r\n };\r\n\r\n private readonly onChange = (rowEmail: string): void => {\r\n const email = (rowEmail || '').replace(new RegExp('[<>]', 'gi'), '');\r\n this.setState({ email });\r\n if (this.props.moduleState.hasError) {\r\n // Clear error during user updating the email\r\n this.props.moduleState.setHasError(false);\r\n this.setState({\r\n hasCheckoutError: false\r\n });\r\n }\r\n };\r\n\r\n private readonly onChangePhone = (rowPhone: string, country?: string): void => {\r\n if (this.state.phoneError === true) {\r\n this.setState({ phoneError: false });\r\n }\r\n let phoneNum: string = rowPhone;\r\n const cleanedInput = rowPhone.replace(/\\D/g, '');\r\n\r\n const formattedNumber = cleanedInput.replace(/(\\d{3})(\\d{3})(\\d{4})/, '$1-$2-$3');\r\n if (country === 'KOR' || country === 'USA') {\r\n phoneNum = formattedNumber;\r\n }\r\n this.setState({ phone: phoneNum });\r\n if (this.props.moduleState.hasError) {\r\n // Clear error during user updating the email\r\n this.props.moduleState.setHasError(false);\r\n this.setState({\r\n hasCheckoutError: false\r\n });\r\n }\r\n };\r\n\r\n private readonly setErrorMsgOboUserEmailEmpty = (): string => {\r\n // Clear prior error\r\n this.props.moduleState.setHasError(false);\r\n this.setState({\r\n hasCheckoutError: false\r\n });\r\n return '';\r\n };\r\n\r\n private readonly isEmailValid = (email: string): boolean => {\r\n return EmailRegex.defaultRegex.test(email);\r\n };\r\n\r\n private readonly isPhoneRequiredAndValid = (phone?: string): boolean => {\r\n let isPhoneRequired = false;\r\n if (\r\n this.props.data.churchRetailChannelCountry &&\r\n this.props.data.churchRetailChannelCountry.result &&\r\n this.props.data.churchRetailChannelCountry.result[0] &&\r\n this.props.data.churchRetailChannelCountry.result[0].PHONENUMBERREQ &&\r\n this.props.data.churchRetailChannelCountry.result[0].PHONENUMBERREQ > 0\r\n ) {\r\n const phoneNumberReq = this.props.data.churchRetailChannelCountry.result[0].PHONENUMBERREQ;\r\n isPhoneRequired = phoneNumberReq === 1;\r\n }\r\n\r\n const phoneCheck = /^[\\+]?[(]?[0-9]{0,3}[)]?[-\\s\\.]?[0-9]{3}[-\\s\\.]?[0-9]{4,6}$/im;\r\n const doesPhonePass = this.state.phone ? phoneCheck.test(this.state.phone) : phone ? phoneCheck.test(phone) : '';\r\n if (isPhoneRequired) {\r\n return doesPhonePass ? true : false;\r\n } else {\r\n return true;\r\n }\r\n };\r\n\r\n private readonly updateGuestProfile = async (newGuestCheckoutEmail: string): Promise => {\r\n if (this.props.data.checkout.result) {\r\n await this.props.data.checkout.result.updateGuestCheckoutEmail({ newGuestCheckoutEmail });\r\n this.setState({ email: newGuestCheckoutEmail });\r\n }\r\n };\r\n\r\n private readonly onEdit = (): void => {\r\n this.props.telemetry.information('Guest profile onEdit is called.');\r\n\r\n this.props.moduleState.onUpdating();\r\n };\r\n\r\n private setContactOnShippingCartLines = async (email: string | undefined, phone: string | undefined) => {\r\n const checkout = await this.props.data.checkout;\r\n let address: any;\r\n if (checkout && checkout.checkoutCart && checkout.checkoutCart.cart && checkout.checkoutCart.cart.CartLines) {\r\n address = checkout.checkoutCart.cart.CartLines[0].ShippingAddress;\r\n }\r\n if (address && address.Email !== email) {\r\n address.Phone = phone;\r\n address.Email = email;\r\n // const updatesEmail = await checkout?.checkoutCart.updateShippingAddress({ newShippingAddress: address });\r\n // await checkout.updateBillingAddress({ newBillingAddress: address });\r\n await checkout.updateShippingAddress({ newShippingAddress: address });\r\n }\r\n };\r\n\r\n private readonly updateContactAttributes = async (email?: string, phone?: string): Promise => {\r\n const { addEmailForIframe } = this.props.config;\r\n\r\n if (addEmailForIframe && addEmailForIframe === true) {\r\n await this.setContactOnShippingCartLines(email, phone);\r\n }\r\n };\r\n\r\n private readonly onSubmit = async (): Promise => {\r\n this.props.telemetry.information('Guest profile onSubmit is called.');\r\n\r\n const { email, phone } = this.state;\r\n this.setState({ loading: true });\r\n sessionStorage.setItem('phone', phone);\r\n sessionStorage.setItem('email', email);\r\n await this.submitEmail(email, phone);\r\n // await this.updateContactAttributes(email, phone);\r\n this.setState({ loading: false });\r\n };\r\n\r\n /**\r\n * Submit the email address.\r\n * @param email - The email to be submitted.\r\n *\r\n */\r\n private readonly submitEmail = async (email: string, phone?: string): Promise => {\r\n const isValid = this.isEmailValid(email);\r\n const isPhoneValid = this.isPhoneRequiredAndValid();\r\n if (!isValid || !isPhoneValid) {\r\n if (!isValid) {\r\n this.props.moduleState.setHasError(true);\r\n }\r\n if (!isPhoneValid) {\r\n this.setState({ phoneError: true });\r\n }\r\n\r\n const input = this.inputRef.current?.focus && (this.inputRef.current as HTMLElement);\r\n input?.focus();\r\n } else {\r\n await this.updateContactAttributes(email, phone);\r\n await this.updateGuestProfile(email);\r\n this.props.moduleState.onReady();\r\n }\r\n };\r\n\r\n private readonly onCancel = (): void => {\r\n this.props.telemetry.information('Guest profile onCancel is called.');\r\n\r\n // Reset to the saved value\r\n if (!this.props.data.checkout.result) {\r\n return;\r\n }\r\n\r\n const email = this.props.data.checkout.result.guestCheckoutEmail;\r\n if (!email) {\r\n // It has no saved email, set to status updating and request user to fill the email form\r\n this.props.moduleState.onUpdating();\r\n } else {\r\n // It has saved email, set to status ready\r\n this.setState({\r\n email\r\n });\r\n this.props.moduleState.setHasError(false);\r\n this.setState({\r\n hasCheckoutError: false\r\n });\r\n this.props.moduleState.onReady();\r\n }\r\n };\r\n\r\n @action\r\n private readonly _setErrorMessage = (errorMessage: string): void => {\r\n this.props.telemetry.error(errorMessage);\r\n this.props.moduleState.setHasError(true);\r\n this.props.moduleState.onUpdating();\r\n this.setState({\r\n hasCheckoutError: true,\r\n errorMessage\r\n });\r\n };\r\n}\r\n\r\nexport default CheckoutGuestProfile;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nconst Loading: React.FC = () =>
;\n\nexport default Loading;\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\n// import { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport { Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { ICheckoutCustomerAccountPaymentViewProps } from './lds-checkout-customer-account-payment-4';\r\nimport { IAccountPaymentEditViewForm, IGetAccountPaymentEditViewFormInput } from './components/get-account-payment-form-edit-mode';\r\nimport { IAccountPaymentSummaryViewForm } from './components/get-account-payment-form-summary-mode';\r\n\r\n//@ts-ignore\r\nimport { Primary } from '@churchofjesuschrist/eden-buttons';\r\nimport styled from 'styled-components';\r\n\r\nimport {\r\n getIdentificationTypesAsync,\r\n getIdentificationTypesApplicabilityRulesAsync\r\n // churchValidatePaymentAsync\r\n} from '../../actions/DataActionExtension.g';\r\n// @ts-ignore\r\nimport { Secondary } from '@churchofjesuschrist/eden-buttons';\r\n\r\nexport const SummaryForm: React.FC = ({\r\n formProps,\r\n label,\r\n paymentAmount,\r\n addPaymentButton,\r\n appliedLine,\r\n bottomBorder\r\n}) => (\r\n \r\n <>\r\n {label}\r\n {paymentAmount}\r\n {addPaymentButton}\r\n {appliedLine}\r\n {bottomBorder}\r\n \r\n \r\n);\r\n\r\nexport interface EditFormProps {\r\n accountForm: IAccountPaymentEditViewForm;\r\n submitProps?: IGetAccountPaymentEditViewFormInput;\r\n}\r\ninterface IEditFormExtended extends IAccountPaymentEditViewForm {\r\n paymentLabel?: string;\r\n paymentApplied?: string;\r\n}\r\n\r\nexport const EditForm: React.FC = ({\r\n formProps,\r\n addPaymentButton,\r\n alert,\r\n accountDetails,\r\n appliedLine,\r\n bottomBorder,\r\n paymentLabel,\r\n paymentApplied\r\n}) => {\r\n const PaymentButtonLabel = styled.div`\r\n display: flex;\r\n justify-content: flex-end;\r\n align-items: flex-end;\r\n margin-top: 15px;\r\n `;\r\n return (\r\n \r\n <>\r\n
\r\n \r\n {alert}\r\n {/*@ts-ignore */}\r\n {paymentLabel}\r\n \r\n {appliedLine ?
{paymentApplied}
: null}\r\n {/* {appliedLine} */}\r\n
\r\n {accountDetails}\r\n {bottomBorder}\r\n \r\n
\r\n );\r\n};\r\n\r\nconst CheckoutCustomerAccountView: React.FC = props => {\r\n // const { checkoutCustomerAccount, editView, resources, context, updatePaymentAttributes } = props;\r\n const { editView, resources, context, updatePaymentAttributes } = props;\r\n const [taxIdResults, setTaxIdResults] = React.useState();\r\n const [isError, setIsError] = React.useState(false);\r\n const [idType, setIdType] = React.useState('');\r\n const [taxId, setTaxId] = React.useState('');\r\n const [isVisible, setIsVisible] = React.useState(false);\r\n const [userCountry, setUserCountry] = React.useState();\r\n const [paymentType, setPaymentType] = React.useState();\r\n const [updateTaxId, setUpdateTaxId] = React.useState(false);\r\n\r\n const idTypeInputStyle: React.CSSProperties = {\r\n width: '100%',\r\n border: isError ? '1px solid red' : '1px solid rgb(135, 138, 140)',\r\n boxSizing: 'border-box',\r\n borderRadius: '2px',\r\n margin: '8px 0px',\r\n lineHeight: '22px',\r\n padding: '8px',\r\n fontSize: '16px',\r\n fontFamily: `\"Ensign:Sans\",Arial,\"noto sans\" ,sans-serif`,\r\n fontStyle: 'normal'\r\n };\r\n\r\n const idTypeStyle: React.CSSProperties = {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'flex-start',\r\n width: '100%',\r\n marginTop: '15px'\r\n };\r\n\r\n const handleSelect = async (option: any) => {\r\n const selectedOption = taxIdResults.filter((taxId: any) => {\r\n return taxId.TypeId === option;\r\n });\r\n if (selectedOption && selectedOption[0]) {\r\n sessionStorage.setItem('TaxId', selectedOption[0].TypeId);\r\n if (selectedOption[0].Description.toLowerCase().includes('boleta')) {\r\n setUpdateTaxId(true);\r\n } else {\r\n setUpdateTaxId(false);\r\n }\r\n }\r\n\r\n setIdType(selectedOption[0].TypeId);\r\n };\r\n\r\n const onInputChange = (value: any) => {\r\n if (isError === true) {\r\n setIsError(false);\r\n }\r\n sessionStorage.setItem('idNum', value);\r\n setTaxId(value);\r\n };\r\n\r\n const getTaxIdInfo = async () => {\r\n const ctx = { callerContext: context.actionContext };\r\n let idTypes;\r\n // @ts-ignore\r\n if (props.data.cart && props.data.cart.result) {\r\n const getUserCountry: any =\r\n // @ts-ignore\r\n props.data.cart && props.data.cart.result && props.data.cart.result.cart && props.data.cart.result.cart.ExtensionProperties\r\n ? // @ts-ignore\r\n props.data.cart.result.cart.ExtensionProperties.filter((property: any) => {\r\n return property.Key === 'Country';\r\n })\r\n : '';\r\n setUserCountry(getUserCountry);\r\n sessionStorage.setItem('taxIdRegion', getUserCountry[0].Value.StringValue);\r\n\r\n idTypes = await getIdentificationTypesAsync(ctx, getUserCountry[0].Value.StringValue).catch((err: any) => {\r\n return console.log(err);\r\n });\r\n if (idTypes && idTypes[0]) {\r\n sessionStorage.setItem('taxIdCheck', 'true');\r\n } else {\r\n sessionStorage.setItem('taxIdCheck', 'false');\r\n setIsVisible(true);\r\n }\r\n }\r\n\r\n return setTaxIdResults(idTypes);\r\n };\r\n React.useEffect(() => {\r\n const paymentTypeId = sessionStorage.getItem('paymentTypeId');\r\n if (paymentTypeId && paymentTypeId === '101') {\r\n setIsVisible(true);\r\n }\r\n\r\n setPaymentType(paymentTypeId);\r\n }, [props]);\r\n\r\n React.useEffect(() => {\r\n const sessionTaxId = sessionStorage.getItem('TaxId');\r\n const sessionIdNum = sessionStorage.getItem('idNum');\r\n if (sessionTaxId) {\r\n setIdType(sessionTaxId);\r\n if (sessionTaxId.toLocaleLowerCase().includes('boleta')) {\r\n setUpdateTaxId(true);\r\n }\r\n }\r\n if (sessionIdNum) {\r\n setTaxId(sessionIdNum);\r\n }\r\n void getTaxIdInfo();\r\n }, []);\r\n\r\n const insertDash = (str: string) => {\r\n // Check if the string contains a \"-\"\r\n if (str.includes('-')) {\r\n // If it does, do nothing\r\n return str;\r\n } else {\r\n // If it does not, insert a \"-\" between the second to last and last characters\r\n return `${str.slice(0, -1)}-${str.slice(-1)}`;\r\n }\r\n };\r\n\r\n const onClickCustom = async () => {\r\n const ctx = { callerContext: context.actionContext };\r\n let newTaxId: string = taxId;\r\n const userCountryRegion = sessionStorage.getItem('taxIdRegion');\r\n\r\n if (updateTaxId === true && userCountryRegion && userCountryRegion === 'CHL') {\r\n newTaxId = insertDash(taxId);\r\n setTaxId(newTaxId);\r\n }\r\n\r\n const taxIdCheck = await getIdentificationTypesApplicabilityRulesAsync(\r\n ctx,\r\n userCountry[0].Value.StringValue,\r\n idType,\r\n newTaxId\r\n ).catch(err => {\r\n console.log(err);\r\n setIsError(true);\r\n });\r\n if (taxIdCheck) {\r\n await updatePaymentAttributes(idType, newTaxId).then(() => {\r\n setIsVisible(true);\r\n });\r\n }\r\n };\r\n\r\n // const { checkoutCustomerAccount, summaryView, editView, moduleState } = props;\r\n //@ts-ignore\r\n const paymentLabel = props.resources.applyPaymentLabel;\r\n //@ts-ignore\r\n const paymentApplied = props.resources.paymentApplied;\r\n return (\r\n <>\r\n {taxIdResults && taxIdResults[0] && paymentType !== '101' ? (\r\n
\r\n \r\n \r\n \r\n onInputChange(e.target.value)}\r\n value={taxId}\r\n disabled={isVisible}\r\n />\r\n {isError && {resources.taxIdErrorMessage}}\r\n {isVisible === false && onClickCustom()}>{resources.applyPaymentLabel}}\r\n
\r\n ) : null}\r\n {editView && isVisible && }\r\n \r\n );\r\n};\r\n\r\nexport default CheckoutCustomerAccountView;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\n/**\n * Visibility observer state.\n */\ninterface IVisibilityObserverState {\n isVisible?: boolean;\n errorMessage?: string;\n observer?: MutationObserver;\n}\n\n/**\n * Visibility observer props.\n */\nexport interface IVisibilityObserverProps {\n visibilityObserver?: IVisibilityObserverState;\n}\n\n/**\n * With visibility observer.\n * @param WrappedComponent - Wrapped component.\n * @param className - ClassName.\n * @returns React node.\n */\nexport const withVisibilityObserver =

(\n WrappedComponent: React.ComponentType

,\n className = 'ms-checkout-payment-instrument'\n): React.ComponentType

=> {\n /**\n *\n * VisibilityObserver component.\n * @extends {React.Component

}\n */\n class VisibilityObserver extends React.Component

{\n // eslint-disable-next-line react/state-in-constructor -- Existing pattern.\n public state: IVisibilityObserverState = {\n isVisible: false,\n // eslint-disable-next-line react/no-unused-state -- Need show error.\n errorMessage: '',\n observer: undefined\n };\n\n private readonly selfRef: React.RefObject = React.createRef();\n\n public componentDidMount(): void {\n this.initMutationObserver();\n }\n\n public componentWillUnmount(): void {\n this.stopMutationObserver();\n }\n\n public shouldComponentUpdate(nextProps: IVisibilityObserverProps, nextState: IVisibilityObserverState): boolean {\n if (this.state === nextState && this.props === nextProps) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n return (\n

\n \n
\n );\n }\n\n /**\n * Initial mutation observer.\n */\n private readonly initMutationObserver = (): void => {\n // Select the node that will be observed for mutations\n const targetNode = document.getElementsByTagName('body')[0];\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Better double check.\n if (!targetNode) {\n this.setState({\n // eslint-disable-next-line react/no-unused-state -- Need show error.\n errorMessage: 'No body element found'\n });\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Better double check.\n if (!MutationObserver) {\n this.setState({\n // eslint-disable-next-line react/no-unused-state -- Need show error.\n errorMessage: 'MutationObserver is not supported'\n });\n return;\n }\n\n // Options for the observer (which mutations to observe)\n const config = { attributes: true, childList: true, subtree: true };\n\n // Create an observer instance linked to the callback function\n const mutationObserver = new MutationObserver(() => {\n this.handleVisibilityChange();\n });\n mutationObserver.observe(targetNode, config);\n\n this.setState({\n observer: mutationObserver\n });\n };\n\n /**\n * Stop mutation observer.\n */\n private readonly stopMutationObserver = (): void => {\n this.state.observer?.disconnect();\n };\n\n /**\n * Handle visibility change.\n */\n private readonly handleVisibilityChange = (): void => {\n // If module is visible or not\n const isVisible = !!this.selfRef.current && this.selfRef.current.offsetWidth > 0 && this.selfRef.current.offsetHeight > 0;\n if (!this.state.isVisible && isVisible) {\n this.setState({\n isVisible\n });\n this.stopMutationObserver();\n }\n };\n }\n\n return VisibilityObserver;\n};\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IAddContactInfo, ICheckoutGuestProfileViewProps, IShowContactInfo } from './lds-checkout-contact-section';\r\n// @ts-ignore\r\nimport { Secondary, Ghost } from '@churchofjesuschrist/eden-buttons';\r\n// @ts-ignore\r\nimport { Error } from '@churchofjesuschrist/eden-alert';\r\n\r\ninterface ILdsAddContactInfo extends IAddContactInfo {\r\n phone: string;\r\n phoneError: boolean;\r\n onChangePhone(phone: string, country?: string): void;\r\n isPhoneRequired: any;\r\n country?: any;\r\n resources?: any;\r\n}\r\n\r\ninterface ILdsShowContactInfo extends IShowContactInfo {\r\n phone: string;\r\n resources?: any;\r\n}\r\n\r\nexport const ShowContactInfo: React.FC = ({ showInfoProps, email, editButton, phone }) => (\r\n \r\n
\r\n {phone}\r\n {email}\r\n
\r\n {editButton}\r\n
\r\n);\r\n\r\nexport const AddContactInfo: React.FC = props => {\r\n const {\r\n addFormProps,\r\n submitButton,\r\n cancelButton,\r\n inputGroupProps,\r\n label,\r\n error,\r\n input,\r\n onChangePhone,\r\n phone,\r\n resources,\r\n // isPhoneRequired,\r\n country,\r\n phoneError\r\n } = props;\r\n const titleStyle: React.CSSProperties = {\r\n fontFamily: `\"Ensign:Sans\",Arial,\"noto sans\" ,sans-serif`,\r\n fontStyle: 'normal',\r\n fontWeight: 600,\r\n fontSize: '18px',\r\n lineHeight: '22px',\r\n paddingBottom: '8px'\r\n };\r\n const descriptionStyle: React.CSSProperties = {\r\n fontFamily: `\"Ensign:Sans\",Arial,\"noto sans\" ,sans-serif`,\r\n fontStyle: 'normal',\r\n fontWeight: 400,\r\n fontSize: '14px',\r\n lineHeight: '19px',\r\n paddingBottom: '8px'\r\n };\r\n\r\n return (\r\n \r\n
{resources.contactInformationHeader}
\r\n
{resources.contactInformationExplanation}
\r\n \r\n \r\n {phoneError && (\r\n
\r\n {/* @ts-ignore */}\r\n {resources.phoneRequiredError}\r\n
\r\n )}\r\n
\r\n onChangePhone(e.target.value, country)}\r\n value={phone}\r\n />\r\n
\r\n
\r\n \r\n {label}\r\n {/* {error} */}\r\n {/* @ts-ignore */}\r\n {error && error.props && error.props.children && (\r\n
\r\n {/* @ts-ignore */}\r\n {error.props.children}\r\n
\r\n )}\r\n input.props.onChange(e)}\r\n style={{\r\n border: '1px solid #878A8C',\r\n boxSizing: 'border-box',\r\n borderRadius: '2px',\r\n padding: '8px',\r\n width: '100%',\r\n maxWidth: 'none'\r\n }}\r\n // @ts-ignore\r\n value={input.props.value}\r\n type='text'\r\n />\r\n {/* {input} */}\r\n
\r\n
\r\n
\r\n {cancelButton && (\r\n // @ts-ignore\r\n cancelButton.props.onClick()}>\r\n {/* @ts-ignore */}\r\n {cancelButton.props.title}\r\n \r\n )}\r\n
\r\n
\r\n {submitButton && (\r\n // @ts-ignore\r\n submitButton.props.onClick()}>\r\n {/* @ts-ignore */}\r\n {submitButton.props.title}\r\n \r\n )}\r\n
\r\n
\r\n {/* {submitButton}\r\n {cancelButton} */}\r\n
\r\n );\r\n};\r\n\r\nconst CheckoutGuestProfileView: React.FC = props => {\r\n const [country, setCountry] = React.useState();\r\n const { moduleProps, checkoutErrorRef, alert, showContactInfo, addContactInfo, onChangePhone, phone, phoneError, resources } = props;\r\n let isPhoneRequired = false;\r\n if (\r\n props.data.churchRetailChannelCountry &&\r\n props.data.churchRetailChannelCountry[0] &&\r\n props.data.churchRetailChannelCountry[0].PHONENUMBERREQ > 0\r\n ) {\r\n const phoneNumberReq = props.data.churchRetailChannelCountry[0].PHONENUMBERREQ;\r\n isPhoneRequired = phoneNumberReq === 1;\r\n }\r\n React.useEffect(() => {\r\n if (\r\n props.data.checkout &&\r\n // @ts-ignore\r\n props.data.checkout.result.checkoutCart &&\r\n // @ts-ignore\r\n props.data.checkout.result.checkoutCart &&\r\n // @ts-ignore\r\n props.data.checkout.result.checkoutCart.cart &&\r\n // @ts-ignore\r\n props.data.checkout.result.checkoutCart.cart.ExtensionProperties\r\n ) {\r\n // @ts-ignore\r\n const userCountry = props.data.checkout.result.checkoutCart.cart.ExtensionProperties.filter((value: any) => {\r\n return value.Key === 'Country';\r\n });\r\n\r\n if (userCountry) {\r\n setCountry(userCountry[0].Value?.StringValue);\r\n }\r\n }\r\n }, []);\r\n\r\n return (\r\n \r\n {alert}\r\n {showContactInfo && }\r\n {addContactInfo && (\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default CheckoutGuestProfileView;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/**\n * Payment connect post message type.\n */\nexport enum PaymentConnectorPostMessageType {\n CardPrefix = 'msax-cc-cardprefix',\n Error = 'msax-cc-error',\n Height = 'msax-cc-height',\n Result = 'msax-cc-result',\n Submit = 'msax-cc-submit',\n ExtraContext = 'msax-cc-extracontext',\n Redirect = 'msax-cc-redirect',\n Showoverlay = 'msax-cc-showoverlay',\n Hideoverlay = 'msax-cc-hideoverlay',\n ShippingAddress = 'msax-shipping-address',\n Amount = 'msax-cc-amount'\n}\n\n/**\n * Interface for payment connector post message.\n */\nexport interface IPaymentConnectorPostMessage {\n message: string;\n targetOrigin: string;\n}\n\n/**\n * Payment connector message.\n * @param data - Data with message.\n * @param messageType - Message type.\n * @returns Payment connector post message.\n */\nexport function paymentConnectorMessage(data: string, messageType: PaymentConnectorPostMessageType): IPaymentConnectorPostMessage {\n return {\n message: JSON.stringify({\n type: messageType,\n value: data\n }),\n targetOrigin: '*'\n };\n}\n\n/**\n * Payment connector extra context message.\n * @param data - The data.\n * @returns The payment connector post message.\n */\nexport function paymentConnectorExtraContextMessage(data: string): IPaymentConnectorPostMessage {\n return paymentConnectorMessage(data, PaymentConnectorPostMessageType.ExtraContext);\n}\n\n/**\n * Payment connector submit message.\n * @returns The payment connector post message.\n */\nexport function paymentConnectorSubmitMessage(): IPaymentConnectorPostMessage {\n return paymentConnectorMessage('true', PaymentConnectorPostMessageType.Submit);\n}\n\nexport function paymentConnectorAmountMessage(amount: number): IPaymentConnectorPostMessage {\n return paymentConnectorMessage(`${amount}`, PaymentConnectorPostMessageType.Amount);\n}\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as React from 'react';\r\n\r\ninterface IAlertProps {\r\n message: string;\r\n}\r\n\r\nconst CheckoutAlert: React.FC = ({ message }) => (\r\n

\r\n {message}\r\n

\r\n);\r\n\r\nexport default CheckoutAlert;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { IInvoiceSummaryLines, InvoiceSummary } from '@msdyn365-commerce-modules/invoice-payment-summary';\r\nimport get from 'lodash/get';\r\nimport * as React from 'react';\r\n\r\nimport { ILdsCheckout4Data } from '../lds-checkout-4.data';\r\nimport { ILdsCheckout4Props } from '../lds-checkout-4.props.autogenerated';\r\n\r\nexport interface IInvoicePaymentSummary {\r\n heading?: React.ReactNode;\r\n lines?: IInvoiceSummaryLines;\r\n}\r\nexport const getInvoicePaymentSummary = (input: ILdsCheckout4Props): IInvoicePaymentSummary => {\r\n const {\r\n data: { checkout },\r\n resources: { totalAmountLabel, invoiceLabel, invoiceSummaryTitle },\r\n context,\r\n typeName,\r\n id,\r\n telemetry\r\n } = input;\r\n\r\n const checkoutCart = get(checkout, 'result.checkoutCart');\r\n const cart = get(checkout, 'result.checkoutCart.cart');\r\n\r\n return {\r\n heading:

{invoiceSummaryTitle}

,\r\n lines: checkoutCart?.hasInvoiceLine\r\n ? InvoiceSummary({\r\n orderTotalLabel: totalAmountLabel,\r\n invoiceLabel,\r\n cart,\r\n context,\r\n typeName,\r\n telemetry,\r\n id,\r\n checkoutState: checkout.result\r\n })\r\n : undefined\r\n };\r\n};\r\n","/* eslint-disable security/detect-object-injection */\r\n/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { CartLineItemComponent } from '@msdyn365-commerce/components';\r\nimport MsDyn365, * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { isChannelTypeB2B } from '@msdyn365-commerce/core';\r\nimport { CartLine, OrgUnitLocation, SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport { getProductUrlSync, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n Button,\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n INodeProps,\r\n ITelemetryContent,\r\n TelemetryConstant\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport get from 'lodash/get';\r\nimport groupBy from 'lodash/groupBy';\r\nimport * as React from 'react';\r\n\r\nimport { ILdsCheckout4Data } from '../lds-checkout-4.data';\r\nimport { ILdsCheckout4Props } from '../lds-checkout-4.props.autogenerated';\r\n\r\ntype deliveryType = 'pickup' | 'ship' | 'email';\r\n\r\nexport interface IPickUpAtStore {\r\n PickUpAtStore: INodeProps;\r\n label: React.ReactNode;\r\n location: React.ReactNode;\r\n}\r\n\r\nexport interface IEmailDelivery {\r\n EmailDelivery: INodeProps;\r\n label: React.ReactNode;\r\n}\r\n\r\nexport interface ILineItem {\r\n LineId: string;\r\n LineItem: INodeProps;\r\n item?: React.ReactNode;\r\n pickUpAtStore?: IPickUpAtStore;\r\n emailDelivery?: IEmailDelivery;\r\n}\r\n\r\nexport interface ILineItemDeliveryGroup {\r\n LineItemDeliveryGroup: INodeProps;\r\n LineItemList: INodeProps;\r\n heading: React.ReactNode;\r\n lineItemWraper?: React.ReactNode;\r\n lineItemWraperIcon?: React.ReactNode;\r\n lineItems: ILineItem[];\r\n}\r\n\r\nexport interface ILineItems {\r\n LineItems: INodeProps;\r\n Header: INodeProps;\r\n heading: React.ReactNode;\r\n editLink: React.ReactNode;\r\n itemsForPickup?: ILineItemDeliveryGroup;\r\n itemsForShip?: ILineItemDeliveryGroup;\r\n itemsForEmail?: ILineItemDeliveryGroup;\r\n itemsGroupWithMulitplePickupMode?: ILineItemDeliveryGroup[];\r\n}\r\n\r\nexport const getLineItems = (\r\n input: ILdsCheckout4Props,\r\n telemetryContent?: ITelemetryContent\r\n): ILineItems | undefined => {\r\n const pickupDeliveryModeCode = get(input, 'context.request.channel.PickupDeliveryModeCode');\r\n const emailDeliveryModeCode = get(input, 'context.request.channel.EmailDeliveryModeCode');\r\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\r\n const { channelDeliveryOptionConfig, featureState } = input.data;\r\n const retailMultiplePickUpOptionEnabled = featureState?.result?.find(feature => feature.Name === multiplePickupStoreSwitchName)\r\n ?.IsEnabled;\r\n\r\n const _getDeliveryLocation = (cartLine: CartLine): string => {\r\n const orgUnitLocations = get(input, 'data.orgUnitLocations.result');\r\n if (!cartLine.FulfillmentStoreId || !orgUnitLocations) {\r\n return '';\r\n }\r\n\r\n const locationMatch = (orgUnitLocations || []).find((location: OrgUnitLocation): boolean => {\r\n return location.OrgUnitNumber === cartLine.FulfillmentStoreId;\r\n });\r\n\r\n return locationMatch && locationMatch.OrgUnitName;\r\n };\r\n\r\n const _getProduct = (productId: number): SimpleProduct | undefined => {\r\n const products = get(input, 'data.products.result') || [];\r\n return products.find((_product: SimpleProduct) => {\r\n return productId === _product.RecordId;\r\n });\r\n };\r\n\r\n const _getLineItemComponent = (cartLine: CartLine): JSX.Element | undefined => {\r\n const product = cartLine.ProductId && _getProduct(cartLine.ProductId);\r\n const {\r\n id,\r\n typeName,\r\n context,\r\n config: { imageSettings, showShippingChargesForLineItems },\r\n resources: {\r\n quantityDisplayString,\r\n productDimensionTypeColor,\r\n productDimensionTypeSize,\r\n productDimensionTypeStyle,\r\n productDimensionTypeAmount,\r\n configString,\r\n inputQuantityAriaLabel,\r\n discountStringText,\r\n shippingCharges\r\n },\r\n context: {\r\n request: { gridSettings }\r\n }\r\n } = input;\r\n const catalogs = input.data.catalogs?.result;\r\n if (!product) {\r\n return;\r\n }\r\n\r\n let productUrl = getProductUrlSync(product, context.actionContext, undefined);\r\n if (MsDyn365.isBrowser && isChannelTypeB2B(context.actionContext.requestContext)) {\r\n const fullUrl = new URL(productUrl, window.location.href);\r\n fullUrl.searchParams.set('catalogid', `${cartLine.CatalogId ?? 0}`);\r\n productUrl = fullUrl.href;\r\n }\r\n\r\n return (\r\n \r\n );\r\n };\r\n\r\n const _getPickUpAtStoreComponents = (pickupDeliveryLocation: string): IPickUpAtStore => {\r\n const {\r\n resources: { pickUpAtStoreWithLocationText }\r\n } = input;\r\n\r\n return {\r\n PickUpAtStore: { className: 'ms-checkout__pick-up-at-store' },\r\n label: {pickUpAtStoreWithLocationText},\r\n location:
{pickupDeliveryLocation}
\r\n };\r\n };\r\n\r\n const _getEmailDeliveryComponents = (): IEmailDelivery => {\r\n const {\r\n resources: { emailDeliveryText }\r\n } = input;\r\n\r\n return {\r\n EmailDelivery: { className: 'ms-checkout__email-delivery' },\r\n label: {emailDeliveryText}\r\n };\r\n };\r\n\r\n const _getLineItemsComponents = (items: CartLine[]): ILineItem[] => {\r\n return items.map(cartLine => {\r\n const pickupDeliveryLocation = _getDeliveryLocation(cartLine);\r\n const isPickUp = _getCartPickDeliveryMode(cartLine);\r\n const isEmailDelivery =\r\n cartLine.DeliveryMode && cartLine.DeliveryMode !== '' ? cartLine.DeliveryMode === emailDeliveryModeCode : false;\r\n return {\r\n LineId: cartLine.LineId || '',\r\n LineItem: { className: 'ms-checkout__line-item' },\r\n item: _getLineItemComponent(cartLine),\r\n pickUpAtStore: isPickUp ? _getPickUpAtStoreComponents(pickupDeliveryLocation) : undefined,\r\n emailDelivery: isEmailDelivery ? _getEmailDeliveryComponents() : undefined\r\n };\r\n });\r\n };\r\n\r\n const _getCartPickDeliveryMode = (cartLineItem: CartLine): boolean => {\r\n return !StringExtensions.isNullOrWhitespace(cartLineItem.DeliveryMode)\r\n ? retailMultiplePickUpOptionEnabled\r\n ? cartLineItem.DeliveryMode ===\r\n channelDeliveryOptionConfig?.result?.PickupDeliveryModeCodes?.find(\r\n deliveryMode => deliveryMode === cartLineItem.DeliveryMode\r\n )\r\n : cartLineItem.DeliveryMode === pickupDeliveryModeCode\r\n : false;\r\n };\r\n\r\n const _getCartShipDeliveryMode = (cartLineItem: CartLine): boolean => {\r\n return !StringExtensions.isNullOrWhitespace(cartLineItem.DeliveryMode)\r\n ? retailMultiplePickUpOptionEnabled\r\n ? cartLineItem.DeliveryMode !==\r\n channelDeliveryOptionConfig?.result?.PickupDeliveryModeCodes?.find(\r\n deliveryMode => deliveryMode === cartLineItem.DeliveryMode\r\n )\r\n : cartLineItem.DeliveryMode !== pickupDeliveryModeCode\r\n : false;\r\n };\r\n\r\n const _getGroupTitleComponent = (count: number, type: deliveryType): string => {\r\n const {\r\n resources: { itemLabel, itemsLabel, inStorePickUpLabel, shippingCountCheckoutLineItem }\r\n } = input;\r\n\r\n let emailDeliveryModeDesc: string = '';\r\n\r\n input.data.deliveryOptions.result?.find(productDeliveryOptions => {\r\n emailDeliveryModeDesc = emailDeliveryModeDesc\r\n ? emailDeliveryModeDesc\r\n : productDeliveryOptions.DeliveryOptions?.find(deliveryOption => deliveryOption.Code === emailDeliveryModeCode)\r\n ?.Description!;\r\n });\r\n\r\n const suffix = count > 1 ? itemsLabel : itemLabel;\r\n const title =\r\n type === 'ship'\r\n ? shippingCountCheckoutLineItem\r\n : type === 'pickup'\r\n ? inStorePickUpLabel\r\n : `${emailDeliveryModeDesc} (${count} ${suffix})`;\r\n return title.replace('{count}', count.toString()).replace('{suffix}', suffix);\r\n };\r\n\r\n const _countItems = (items: CartLine[]): number => {\r\n return items.reduce((count, item) => {\r\n return count + (item.Quantity || 0);\r\n }, 0);\r\n };\r\n\r\n const _filterItemsByDiliveryType = (type: deliveryType): CartLine[] => {\r\n const cart = get(input, 'data.checkout.result.checkoutCart.cart');\r\n if (type === 'ship') {\r\n return cart.CartLines.filter((cartLine: CartLine) =>\r\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\r\n ? _getCartShipDeliveryMode(cartLine) && cartLine.DeliveryMode !== emailDeliveryModeCode\r\n : cartLine\r\n );\r\n } else if (type === 'pickup') {\r\n return cart.CartLines.filter((cartLine: CartLine) =>\r\n cartLine.DeliveryMode && cartLine.DeliveryMode !== '' ? _getCartPickDeliveryMode(cartLine) : null\r\n );\r\n }\r\n return cart.CartLines.filter((cartLine: CartLine) => cartLine.DeliveryMode === emailDeliveryModeCode);\r\n };\r\n\r\n const _getLineItemsByDeliveryType = (type: deliveryType): ILineItemDeliveryGroup | undefined => {\r\n if ((pickupDeliveryModeCode === '' || pickupDeliveryModeCode === undefined) && (type === 'pickup' || type === 'email')) {\r\n return;\r\n }\r\n\r\n const items = _filterItemsByDiliveryType(type);\r\n\r\n if (items.length === 0) {\r\n return undefined;\r\n }\r\n\r\n const count = _countItems(items);\r\n const title = _getGroupTitleComponent(count, type);\r\n\r\n return {\r\n LineItemDeliveryGroup: { className: classnames('ms-checkout__line-items-delivery-group', type) },\r\n LineItemList: { className: 'ms-checkout__line-items-list' },\r\n heading:
{title}
,\r\n lineItems: _getLineItemsComponents(items)\r\n };\r\n };\r\n\r\n const _getLineItems = (): ILineItems | undefined => {\r\n const {\r\n context,\r\n config: { lineItemsHeading },\r\n data: { products },\r\n resources: { editCartText }\r\n } = input;\r\n\r\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.EditCart);\r\n const attribute = getTelemetryAttributes(telemetryContent!, payLoad);\r\n const cart = get(input, 'data.checkout.result.checkoutCart.cart');\r\n const groupClass = retailMultiplePickUpOptionEnabled ? ' multiple-pickup-enabled' : '';\r\n if (!cart || !cart.CartLines || cart.CartLines.length === 0 || !products) {\r\n return undefined;\r\n }\r\n\r\n return {\r\n LineItems: { className: `ms-checkout__line-items${groupClass}` },\r\n Header: { className: 'ms-checkout__line-items-header' },\r\n heading: lineItemsHeading && lineItemsHeading.text && (\r\n \r\n ),\r\n editLink: (\r\n \r\n {editCartText}\r\n \r\n ),\r\n itemsForPickup: _getLineItemsByDeliveryType('pickup'),\r\n itemsForShip: _getLineItemsByDeliveryType('ship'),\r\n itemsForEmail: _getLineItemsByDeliveryType('email'),\r\n itemsGroupWithMulitplePickupMode: retailMultiplePickUpOptionEnabled\r\n ? _getLineItemsByDeliveryTypeWithMulitplePickupMode()\r\n : undefined\r\n };\r\n };\r\n\r\n const handleLineItemHeadingChange = (event: Msdyn365.ContentEditableEvent) => {\r\n const {\r\n config: { lineItemsHeading }\r\n } = input;\r\n if (lineItemsHeading) {\r\n lineItemsHeading.text = event.target.value;\r\n }\r\n };\r\n\r\n const _getGroupTitleComponentWithMultiplePickUp = (\r\n count: number,\r\n type: deliveryType,\r\n deliveryMode?: string,\r\n fulFillmentStoreId?: string\r\n ): string => {\r\n const {\r\n resources: { itemLabel, itemsLabel }\r\n } = input;\r\n\r\n let emailDeliveryModeDesc: string = '';\r\n let pickupDeliveryModeDesc: string = '';\r\n\r\n input.data.deliveryOptions.result?.find(productDeliveryOptions => {\r\n emailDeliveryModeDesc = emailDeliveryModeDesc\r\n ? emailDeliveryModeDesc\r\n : productDeliveryOptions.DeliveryOptions?.find(deliveryOption => deliveryOption.Code === emailDeliveryModeCode)\r\n ?.Description!;\r\n });\r\n\r\n input.data.deliveryOptions.result?.find(productDeliveryOptions => {\r\n pickupDeliveryModeDesc = pickupDeliveryModeDesc\r\n ? pickupDeliveryModeDesc\r\n : productDeliveryOptions.DeliveryOptions?.find(deliveryOption => deliveryOption.Code === deliveryMode)?.Description!;\r\n });\r\n\r\n const pickupTitle: string = `${pickupDeliveryModeDesc}, ${fulFillmentStoreId}`;\r\n const suffix = count > 1 ? itemsLabel : itemLabel;\r\n const title =\r\n type === 'ship'\r\n ? `(${count} ${suffix})`\r\n : type === 'pickup'\r\n ? `${pickupTitle} (${count} ${suffix})`\r\n : `${emailDeliveryModeDesc} (${count} ${suffix})`;\r\n return title.replace('{count}', count.toString()).replace('{suffix}', suffix);\r\n };\r\n\r\n const _filterItemsByMultiplePickupMode = (): CartLine[][] => {\r\n const cart = get(input, 'data.checkout.result.checkoutCart.cart');\r\n const getGroupByStorePickup = (items: CartLine[]) => groupBy(items, item => item.FulfillmentStoreId);\r\n const getGroupByDelivery = (items: CartLine[]) => groupBy(items, item => item.DeliveryMode);\r\n const groupDelivery = getGroupByDelivery(cart.CartLines);\r\n const cartLinesGroup: CartLine[] = [];\r\n const cartLinesGrp: CartLine[][] = [];\r\n\r\n // 1) Group by store and pick up mode\r\n Object.entries(groupDelivery).forEach(([deliveryMode, groupByDeliveryType]) => {\r\n // @ts-expect-error\r\n groupDelivery[deliveryMode] = getGroupByStorePickup(groupByDeliveryType);\r\n cartLinesGroup.push(getGroupByStorePickup(groupByDeliveryType));\r\n });\r\n\r\n Object.keys(cartLinesGroup).forEach(key => {\r\n const cartLines = cartLinesGroup[key];\r\n Object.keys(cartLines).forEach(index => {\r\n const cartLine = cartLines[index];\r\n cartLinesGrp.push(cartLine);\r\n });\r\n });\r\n\r\n return cartLinesGrp;\r\n };\r\n\r\n const _getLineItemsByDeliveryTypeWithMulitplePickupMode = (): ILineItemDeliveryGroup[] | undefined => {\r\n if (pickupDeliveryModeCode === '' || pickupDeliveryModeCode === undefined) {\r\n return;\r\n }\r\n\r\n const {\r\n resources: { multiplePickUpLabel, shippingLable }\r\n } = input;\r\n\r\n const items = _filterItemsByMultiplePickupMode();\r\n\r\n if (items.length === 0) {\r\n return undefined;\r\n }\r\n\r\n const lineItemDeliveryGroup: ILineItemDeliveryGroup[] = [];\r\n items.map(item => {\r\n const count = _countItems(item);\r\n const cartLine = item[0];\r\n const pickupDeliveryLocation = _getDeliveryLocation(cartLine);\r\n const type: deliveryType =\r\n cartLine.FulfillmentStoreId && cartLine.DeliveryMode\r\n ? 'pickup'\r\n : cartLine.FulfillmentStoreId === '' &&\r\n cartLine.DeliveryMode === emailDeliveryModeCode &&\r\n !StringExtensions.isNullOrEmpty(emailDeliveryModeCode)\r\n ? 'email'\r\n : 'ship';\r\n const title = _getGroupTitleComponentWithMultiplePickUp(count, type, cartLine.DeliveryMode, pickupDeliveryLocation);\r\n const groupTitle = type === 'pickup' ? multiplePickUpLabel : type === 'ship' ? shippingLable : 'email';\r\n const iconClass = `ms-checkout__line-items-group-title-multiple-pickup-${type}icon`;\r\n lineItemDeliveryGroup.push({\r\n LineItemDeliveryGroup: { className: classnames('ms-checkout__line-items-delivery-group multiple-pickup', type) },\r\n LineItemList: { className: 'ms-checkout__line-items-list' },\r\n lineItemWraperIcon:
,\r\n lineItemWraper:
{groupTitle}
,\r\n heading:
{title}
,\r\n lineItems: _getLineItemsComponents(item)\r\n });\r\n });\r\n\r\n return lineItemDeliveryGroup;\r\n };\r\n\r\n return _getLineItems();\r\n};\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { IOrderSummaryLines, OrderSummary } from '@msdyn365-commerce-modules/order-summary-utilities';\r\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport get from 'lodash/get';\r\nimport * as React from 'react';\r\n\r\nimport { ILdsCheckout4Data } from '../lds-checkout-4.data';\r\nimport { ILdsCheckout4Props } from '../lds-checkout-4.props.autogenerated';\r\n\r\nexport interface IOrderSummary {\r\n orderSummaryProps: INodeProps;\r\n heading?: React.ReactNode;\r\n lines?: IOrderSummaryLines;\r\n}\r\nexport const getOrderSummary = (input: ILdsCheckout4Props): IOrderSummary => {\r\n const {\r\n config: { orderSummaryHeading },\r\n data: { checkout },\r\n resources: {\r\n subTotalLabel,\r\n shippingLabel,\r\n taxLabel,\r\n orderTotalLabel,\r\n loyaltyLabel,\r\n giftcardLabel,\r\n totalDiscountsLabel,\r\n freeText,\r\n toBeCalculatedText,\r\n otherCharges,\r\n customerAccountLabel\r\n },\r\n context,\r\n typeName,\r\n id,\r\n telemetry\r\n } = input;\r\n\r\n const checkoutState = get(checkout, 'result');\r\n const cart = get(checkout, 'result.checkoutCart.cart');\r\n const showLineItems = cart.CartLines && cart.CartLines.length > 0;\r\n const channelConfiguration = context.request.channel!;\r\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\r\n const { channelDeliveryOptionConfig, featureState } = input.data;\r\n const retailMultiplePickUpOptionEnabled = featureState?.result?.find(feature => feature.Name === multiplePickupStoreSwitchName)\r\n ?.IsEnabled;\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- app configs are of generic type\r\n // const isShowOrHideTaxEnabled = context.request.app.config.isEnableShowOrHideSalesTaxECommerceEnabled === true;\r\n\r\n const handleOrderSummaryHeadingChange = (event: Msdyn365.ContentEditableEvent) => {\r\n const {\r\n config: { orderSummaryHeading }\r\n } = input;\r\n if (orderSummaryHeading) {\r\n orderSummaryHeading.text = event.target.value;\r\n }\r\n };\r\n\r\n return {\r\n orderSummaryProps: { className: 'ms-checkout-guest-profile__selected-item' },\r\n heading: orderSummaryHeading && orderSummaryHeading.text && (\r\n \r\n ),\r\n lines: showLineItems\r\n ? OrderSummary({\r\n checkoutState,\r\n cart,\r\n subTotalLabel,\r\n shippingLabel,\r\n taxLabel,\r\n orderTotalLabel,\r\n loyaltyLabel,\r\n giftcardLabel,\r\n totalDiscountsLabel,\r\n freeText,\r\n toBeCalculatedText,\r\n context,\r\n typeName,\r\n id,\r\n channelConfiguration,\r\n telemetry,\r\n otherChargeLabel: otherCharges,\r\n retailMultiplePickUpOptionEnabled,\r\n channelDeliveryOptionConfig: channelDeliveryOptionConfig?.result,\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- existing property.\r\n isTaxIncludedInPrice: cart.IsTaxIncludedInPrice,\r\n isShowTaxBreakup: true,\r\n customerAccountLabel\r\n })\r\n : undefined\r\n };\r\n};\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { IModuleStateManager } from '@msdyn365-commerce-modules/checkout-utilities';\r\nimport { Heading as HeadingType } from '@msdyn365-commerce-modules/data-types';\r\nimport {\r\n // Button,\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n IPayLoad,\r\n ITelemetryContent,\r\n TelemetryConstant\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport { IActionContext } from '@msdyn365-commerce/core';\r\nimport classname from 'classnames';\r\nimport get from 'lodash/get';\r\nimport * as React from 'react';\r\nimport { focusOnCheckoutError, setCheckoutErrorFocus } from '@msdyn365-commerce-modules/checkout';\r\n\r\nimport { SectionHeader } from '../../../components/section-header';\r\n// @ts-ignore\r\nimport { Secondary, Ghost, A11y } from '@churchofjesuschrist/eden-buttons';\r\n\r\nexport interface ICheckoutGuidedCardProps {\r\n id?: string;\r\n step: number;\r\n title?: HeadingType;\r\n disabled?: boolean; // Module is not available\r\n isActive?: boolean; // Step === currentStep\r\n isVisted?: boolean; // Step < currentStep\r\n isExpanded?: boolean;\r\n isReady?: boolean;\r\n isPending?: boolean;\r\n isUpdating?: boolean;\r\n isSubmitting?: boolean;\r\n isCancelAllowed?: boolean;\r\n isMobile?: boolean;\r\n hasInitialized?: boolean;\r\n hasControlGroup?: boolean;\r\n shouldFocus?: boolean;\r\n children: React.ReactNode;\r\n moduleState?: IModuleStateManager;\r\n actionContext?: IActionContext;\r\n resource: {\r\n checkoutStepTitleFormat: string;\r\n saveBtnLabel: string;\r\n changeBtnLabel: string;\r\n cancelBtnLabel: string;\r\n saveAndContinueBtnLabel: string;\r\n };\r\n telemetryContent?: ITelemetryContent;\r\n onEdit?(): void;\r\n onCancel?(): void;\r\n onSubmit?(): void;\r\n onNext(): void;\r\n}\r\n\r\n/**\r\n *\r\n * CheckoutGuidedCard component.\r\n * @extends {React.Component}\r\n */\r\nclass CheckoutGuidedCard extends React.PureComponent {\r\n private readonly editButtonRef: React.RefObject = React.createRef();\r\n\r\n private readonly formCardRef: React.RefObject = React.createRef();\r\n\r\n private readonly payLoad: IPayLoad;\r\n\r\n constructor(props: ICheckoutGuidedCardProps) {\r\n super(props);\r\n this.payLoad = getPayloadObject('click', props.telemetryContent!, '');\r\n }\r\n\r\n public componentDidUpdate(prevProps: ICheckoutGuidedCardProps): void {\r\n /**\r\n * Move to next step when current step is ready.\r\n */\r\n const { isActive, isReady, onNext, isVisted, onEdit, shouldFocus, children, moduleState, actionContext } = this.props;\r\n\r\n // Move to next step after completing the current step\r\n if (isActive && isReady) {\r\n onNext();\r\n }\r\n\r\n // Set the focus to Edit button once edit button appear\r\n // (It happens when current step switch to isReady status)\r\n const prevCanEdit = prevProps.isReady && prevProps.isVisted && !!prevProps.onEdit;\r\n const canEdit = isReady && isVisted && !!onEdit;\r\n if (!prevCanEdit && canEdit) {\r\n this.focusOnEditButton();\r\n this.scrollToTitle();\r\n }\r\n\r\n // Set the focus to the first focusable element\r\n // (It happens when current step switch to isUpdating status)\r\n if (prevProps.isReady && !isReady) {\r\n this.focusOnFirstFocusableElement();\r\n }\r\n\r\n // Set the focus for the checkout error\r\n if (shouldFocus && actionContext) {\r\n const childrenModules = this._getModules(children);\r\n\r\n // Set the focus for the module within the checkout section container\r\n if (childrenModules.length > 0) {\r\n for (const childModule of childrenModules) {\r\n const childId = this._getId(childModule);\r\n const childState = moduleState?.getModule(childId);\r\n\r\n if (childState?.hasError) {\r\n void setCheckoutErrorFocus(childId, actionContext);\r\n return;\r\n }\r\n }\r\n } else {\r\n void focusOnCheckoutError(this.formCardRef, actionContext);\r\n }\r\n }\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const {\r\n title,\r\n disabled,\r\n isExpanded,\r\n isActive,\r\n isVisted,\r\n children,\r\n isReady,\r\n isPending,\r\n isUpdating,\r\n hasInitialized,\r\n hasControlGroup,\r\n onEdit,\r\n resource,\r\n step\r\n } = this.props;\r\n\r\n this.payLoad.contentAction.etext = TelemetryConstant.CheckoutChange;\r\n const changeBtnAttributes = getTelemetryAttributes(this.props.telemetryContent!, this.payLoad);\r\n const canEdit = hasControlGroup && isReady && isVisted && onEdit;\r\n\r\n // const onEditCustom = (num: number) => {\r\n // setCurrentStep(num);\r\n // if (onEdit) {\r\n // onEdit();\r\n // }\r\n // };\r\n\r\n const editButton = (\r\n (onEdit ? onEdit() : null)}\r\n role='button'\r\n aria-label={title && title.text ? `${resource.changeBtnLabel} ${title.text}` : ''}\r\n {...changeBtnAttributes}\r\n >\r\n {resource.changeBtnLabel}\r\n \r\n );\r\n\r\n const isAddressSection =\r\n // @ts-ignore\r\n this.props.children && this.props.children.props && this.props.children.props.typeName.includes('checkout-shipping-address');\r\n\r\n return (\r\n \r\n {this.getTitle(step === 0 && isAddressSection ? true : canEdit, editButton)}\r\n\r\n \r\n
{children}
\r\n\r\n {this.renderFooder()}\r\n
\r\n
\r\n );\r\n }\r\n\r\n private readonly renderFooder = (): JSX.Element | null => {\r\n const { isVisted, isReady, isSubmitting, isCancelAllowed, hasControlGroup, onCancel, onSubmit, resource } = this.props;\r\n // const { saveBtnLabel, cancelBtnLabel, saveAndContinueBtnLabel } = resource;\r\n const { saveBtnLabel, saveAndContinueBtnLabel } = resource;\r\n\r\n const canSubmit = !isReady && onSubmit;\r\n const canCancel = !isReady && isVisted && isCancelAllowed && onCancel;\r\n\r\n if (!hasControlGroup || (!canSubmit && !canCancel)) {\r\n return null;\r\n }\r\n\r\n this.payLoad.contentAction.etext = isVisted ? TelemetryConstant.Save : TelemetryConstant.SaveContinue;\r\n // const saveBtnAttributes = getTelemetryAttributes(this.props.telemetryContent!, this.payLoad);\r\n this.payLoad.contentAction.etext = TelemetryConstant.Cancel;\r\n // const cancelBtnAttributes = getTelemetryAttributes(this.props.telemetryContent!, this.payLoad);\r\n\r\n if (this.props && this.props.id && this.props.id.includes('checkout-shipping-address')) {\r\n return null;\r\n } else if (this.props && this.props.id && this.props.id.includes('checkout-contact')) {\r\n return null;\r\n } else {\r\n return (\r\n
\r\n
\r\n {canCancel && (\r\n
\r\n \r\n {resource.cancelBtnLabel}\r\n \r\n
\r\n )}\r\n \r\n {canSubmit && (\r\n (onSubmit ? onSubmit() : null)}\r\n // {...saveBtnAttributes}\r\n style={{ width: '100%', marginRight: canCancel ? '0px' : '78px' }}\r\n >\r\n {/* @ts-ignore */}\r\n {isVisted && isCancelAllowed ? saveBtnLabel : resource.continueButtonText}\r\n \r\n )}\r\n
\r\n
\r\n
\r\n );\r\n }\r\n };\r\n\r\n private readonly focusOnFirstFocusableElement = (): void => {\r\n const node = this.formCardRef.current as HTMLElement;\r\n const focussableElements = `\r\n a:not([disabled]),\r\n button:not([disabled]),\r\n input[type=submit]:not([disabled]),\r\n input[type=checkbox]:not([disabled]),\r\n input[type=text]:not([disabled]),\r\n input[type=radio]:not([disabled]),\r\n input[type=password]:not([disabled]),\r\n select:not([disabled]),\r\n textarea:not([disabled]),\r\n [tabindex]:not([disabled]):not([tabindex=\"-1\"])\r\n `;\r\n\r\n const child = node && node.querySelector && (node.querySelector(focussableElements) as HTMLElement);\r\n child && child.focus && child.focus();\r\n };\r\n\r\n private readonly focusOnEditButton = (): void => {\r\n // Focus on edit button\r\n const editButton =\r\n this.editButtonRef &&\r\n this.editButtonRef.current &&\r\n // @ts-ignore\r\n this.editButtonRef.current.focus &&\r\n (this.editButtonRef.current as HTMLElement);\r\n editButton && editButton.focus();\r\n };\r\n\r\n private readonly scrollToTitle = (): void => {\r\n // Scroll window to the title of the step that was just completed only in mobile viewport\r\n const formCard = this.props.isMobile && this.formCardRef && this.formCardRef.current && (this.formCardRef.current as HTMLElement);\r\n formCard && formCard.scrollIntoView();\r\n };\r\n\r\n private readonly getTitle = (canEdit?: any, button?: any): JSX.Element => {\r\n const { step, title } = this.props;\r\n const { text = '' } = title || {};\r\n return ;\r\n };\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n private readonly _getModules = (item: React.ReactNode): any[] => {\r\n return get(item, 'props.modules.primary') || [];\r\n };\r\n\r\n private readonly _getId = (item: React.ReactNode): string => {\r\n return get(item, 'id') || '';\r\n };\r\n}\r\n\r\nexport default CheckoutGuidedCard;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { IModuleStateManager } from '@msdyn365-commerce-modules/checkout-utilities';\r\nimport { Heading } from '@msdyn365-commerce-modules/data-types';\r\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport { ICoreContext } from '@msdyn365-commerce/core';\r\nimport get from 'lodash/get';\r\nimport { computed } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport GuidedCard from './guided-card';\r\n\r\nexport interface ICheckoutGuidedFormProps {\r\n items: React.ReactNode[];\r\n moduleState: IModuleStateManager;\r\n disableGuidedCheckoutFlow?: boolean;\r\n isMobile?: boolean;\r\n isEditor?: boolean;\r\n resource: {\r\n checkoutStepTitleFormat: string;\r\n saveBtnLabel: string;\r\n changeBtnLabel: string;\r\n cancelBtnLabel: string;\r\n saveAndContinueBtnLabel: string;\r\n };\r\n requestContext?: ICoreContext;\r\n telemetryContent?: ITelemetryContent;\r\n isPaymentVerificationRedirection?: boolean;\r\n shouldEnableSinglePaymentAuthorizationCheckout?: boolean;\r\n hasError?: boolean;\r\n hasShippingAddress?: boolean | undefined;\r\n hasCartDeliveryMode?: boolean | undefined;\r\n hasGuestCheckoutEmail?: boolean | undefined;\r\n isTermsAndConditionAccepted?: boolean | undefined;\r\n shouldEnableCheckoutErrorDisplayMessaging?: boolean;\r\n shouldFocusOnCheckoutError?: boolean | undefined;\r\n}\r\n\r\ninterface ICheckoutGuidedFormState {\r\n currentStep: number;\r\n}\r\n\r\nconst paymentInstrumentModuleId = 'payment-instrument';\r\n\r\n/**\r\n *\r\n * CheckoutGuidedForm component.\r\n * @extends {React.Component}\r\n */\r\n@observer\r\nclass CheckoutGuidedForm extends React.PureComponent {\r\n @computed public get hasMissingInfo(): boolean {\r\n if (\r\n this.props.hasShippingAddress === false ||\r\n this.props.hasCartDeliveryMode === false ||\r\n this.props.hasGuestCheckoutEmail === false ||\r\n this.props.isTermsAndConditionAccepted === false\r\n ) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n @computed public get hasOrderError(): boolean {\r\n for (const item of this.props.items) {\r\n const childId = this.getId(item);\r\n const state = this.props.moduleState.getModule(childId);\r\n\r\n const isPaymentSectionContainer = ArrayExtensions.hasElements(\r\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\r\n state.childIds?.filter(currentId => currentId?.includes(paymentInstrumentModuleId))\r\n );\r\n\r\n if (!isPaymentSectionContainer && !state.isDisabled && state.hasError) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n public state: ICheckoutGuidedFormState = {\r\n currentStep: 0\r\n };\r\n\r\n public componentDidMount(): void {\r\n /**\r\n * Append child modules.\r\n */\r\n const childIds = this.props.items.map((item: React.ReactNode) => get(item, 'props.id'));\r\n this.props.moduleState.init({ childIds });\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const { moduleState, items, resource } = this.props;\r\n if (!items || !moduleState) {\r\n return null;\r\n }\r\n\r\n const shouldCollapseAfterRedirect =\r\n this.props.isPaymentVerificationRedirection &&\r\n this.props.shouldEnableSinglePaymentAuthorizationCheckout &&\r\n !this.props.hasError &&\r\n !this.hasMissingInfo &&\r\n !this.hasOrderError;\r\n\r\n let previousModuleHasError = false;\r\n\r\n return (\r\n
\r\n {items.map((item: React.ReactNode) => {\r\n const childId = this.getId(item);\r\n const step = this.getStep(childId);\r\n const title = this.getHeading(item);\r\n const state = this.props.moduleState.getModule(childId);\r\n const {\r\n isReady,\r\n isPending,\r\n isUpdating,\r\n isDisabled,\r\n isCancelAllowed,\r\n onEdit,\r\n onCancel,\r\n onSubmit,\r\n hasModuleState,\r\n hasInitialized,\r\n hasError\r\n } = state || ({} as IModuleStateManager);\r\n\r\n const shouldFocus =\r\n !!this.props.shouldEnableCheckoutErrorDisplayMessaging &&\r\n !!this.props.shouldFocusOnCheckoutError &&\r\n !previousModuleHasError &&\r\n hasError;\r\n previousModuleHasError = previousModuleHasError || shouldFocus;\r\n\r\n return (\r\n \r\n {React.cloneElement(item as React.ReactElement, { enableControl: true })}\r\n \r\n );\r\n })}\r\n
\r\n );\r\n }\r\n\r\n private readonly getEnabledModules = (): string[] => {\r\n const {\r\n moduleState: { childIds, getModule }\r\n } = this.props;\r\n return childIds.filter((childId: string) => {\r\n const state = getModule(childId);\r\n return !!state && !state.isDisabled;\r\n });\r\n };\r\n\r\n private readonly getStep = (id: string): number => {\r\n return this.getEnabledModules().indexOf(id);\r\n };\r\n\r\n private readonly getId = (item: React.ReactNode): string => {\r\n return get(item, 'props.id') || '';\r\n };\r\n\r\n private readonly getHeading = (item: React.ReactNode): Heading => {\r\n return get(item, 'props.config.heading') || '';\r\n };\r\n\r\n private readonly isExpanded = (step: number): boolean => {\r\n if (this.props.isEditor) {\r\n // Editorial mode: Expand all the drawers\r\n return true;\r\n }\r\n return step > -1 && step <= this.state.currentStep;\r\n };\r\n\r\n private readonly isActive = (step: number): boolean => {\r\n return step === this.state.currentStep;\r\n };\r\n\r\n private readonly isVisted = (step: number): boolean => {\r\n return step > -1 && step < this.state.currentStep;\r\n };\r\n\r\n private readonly onNext = (): void => {\r\n this.setState({\r\n currentStep: this.state.currentStep + 1\r\n });\r\n };\r\n}\r\n\r\nexport default CheckoutGuidedForm;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { TelemetryEvent } from '@msdyn365-commerce/core';\r\nimport { Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport React, { useState } from 'react';\r\n\r\ninterface ICheckoutPlaceOrderButtonProps {\r\n canPlaceOrder: boolean;\r\n checkoutBtnText: string;\r\n telemetryContent?: ITelemetryContent;\r\n shouldEnableSinglePaymentAuthorizationCheckout?: boolean;\r\n isPlaceOrderLoading?: boolean;\r\n isExpressCheckoutApplied?: boolean;\r\n isPaymentVerificationRedirection?: boolean;\r\n placeOrder(): Promise;\r\n}\r\n\r\nconst buttonsStates: React.Dispatch>[] = [];\r\n\r\n/**\r\n * On place order function.\r\n * @param isBusy -Check is busy.\r\n * @param canPlaceOrder -Check can place order.\r\n * @param placeOrder -Place order function.\r\n * @returns Set state of button.\r\n */\r\nconst onPlaceOrderHandler = (isBusy: boolean, canPlaceOrder: boolean, placeOrder: () => Promise) => async () => {\r\n if (isBusy || !canPlaceOrder) {\r\n return;\r\n }\r\n buttonsStates.map(buttonSetState => {\r\n buttonSetState(true);\r\n return true;\r\n });\r\n await placeOrder();\r\n};\r\n\r\nconst CheckoutPlaceOrderButton: React.FC = ({\r\n checkoutBtnText,\r\n canPlaceOrder,\r\n placeOrder,\r\n telemetryContent,\r\n shouldEnableSinglePaymentAuthorizationCheckout,\r\n isPlaceOrderLoading,\r\n isExpressCheckoutApplied,\r\n isPaymentVerificationRedirection\r\n}) => {\r\n const [isBusy, setIsBusy] = useState(false);\r\n buttonsStates.push(setIsBusy);\r\n const payload = getPayloadObject(TelemetryEvent.Purchase, telemetryContent!, checkoutBtnText, '');\r\n const attributes = getTelemetryAttributes(telemetryContent!, payload);\r\n\r\n if (shouldEnableSinglePaymentAuthorizationCheckout && (!isExpressCheckoutApplied || isPaymentVerificationRedirection)) {\r\n return (\r\n \r\n {checkoutBtnText}\r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n {checkoutBtnText}\r\n \r\n );\r\n};\r\n\r\nexport default CheckoutPlaceOrderButton;\r\n","/* eslint-disable security/detect-object-injection */\r\n/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { AsyncResultStatus, Cart, CartLineValidationResults } from '@msdyn365-commerce/retail-proxy';\r\nimport {\r\n updateLineDeliverySpecificationsAsync,\r\n validateForCheckoutAsync\r\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g';\r\nimport {\r\n Address,\r\n DeliveryPreferenceType,\r\n LineDeliverySpecification,\r\n SimpleProduct,\r\n TokenizedPaymentCard\r\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport { IModuleStateManager, IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\r\nimport {\r\n ArrayExtensions,\r\n getAvailabilitiesForCartLineItems,\r\n IProductInventoryInformation,\r\n ProductAvailabilitiesForCartLineItems,\r\n validateCartLinesInventory\r\n} from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n Button,\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n getTelemetryObject,\r\n IModuleProps,\r\n INodeProps,\r\n ITelemetryContent,\r\n TelemetryConstant,\r\n Waiting\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport { ErrorCode, ErrorLocation } from '@msdyn365-commerce/global-state';\r\nimport classnames from 'classnames';\r\nimport isEmpty from 'lodash/isEmpty';\r\nimport { action, computed, get, reaction, when } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport { ILdsCheckout4Data } from './lds-checkout-4.data';\r\nimport { ICheckoutHeadingData, ILdsCheckout4Props } from './lds-checkout-4.props.autogenerated';\r\nimport AlertComponent from './components/alert';\r\nimport { getInvoicePaymentSummary, IInvoicePaymentSummary } from './components/get-invoice-payment-summary';\r\nimport { getLineItems, ILineItems } from './components/get-line-items';\r\nimport { getOrderSummary, IOrderSummary } from './components/get-order-summary';\r\nimport GuidedFormComponent from './components/guided-form';\r\nimport PlaceOrderButtonComponent from './components/place-order-button';\r\nimport placeOrder from './methods/place-order';\r\nimport { focusOnCheckoutError, setCheckoutErrors } from '@msdyn365-commerce-modules/checkout';\r\nimport { AsyncResultStatusCode, IExpressPaymentDetails } from '@msdyn365-commerce-modules/checkout';\r\n\r\nexport * from './components/get-line-items';\r\nexport * from './components/get-order-summary';\r\n\r\n/**\r\n * Device type.\r\n */\r\ntype DeviceType = 'Mobile';\r\n\r\n/**\r\n * The Checkout state.\r\n */\r\ninterface ICheckoutState {\r\n errorMessage: string;\r\n isValidationPassed: boolean;\r\n isPlaceOrderLoading?: boolean;\r\n isPlaceOrderClicked?: boolean;\r\n}\r\n\r\n/**\r\n * The Checkout view props.\r\n * @extends ILdsCheckout4Props\r\n */\r\nexport interface ICheckoutViewProps extends ILdsCheckout4Props {\r\n className: string;\r\n isPlaceOrderClicked?: boolean;\r\n canShow?: boolean;\r\n isEmptyCart?: boolean;\r\n isConsentGiven?: boolean;\r\n hasError?: boolean;\r\n isPaymentVerificationRedirection?: boolean;\r\n shouldEnableSinglePaymentAuthorizationCheckout?: boolean;\r\n cartStatus?: string;\r\n isMobile?: boolean;\r\n isEditorialMode?: boolean;\r\n backToShoppingUrl?: string;\r\n editCartLink?: string;\r\n hasSalesOrder: boolean;\r\n hasInvoiceLine?: boolean;\r\n\r\n checkoutProps: IModuleProps;\r\n headerProps: INodeProps;\r\n bodyProps: INodeProps;\r\n mainProps: INodeProps;\r\n mainControlProps: INodeProps;\r\n sideProps: INodeProps;\r\n sideControlFirstProps: INodeProps;\r\n sideControlSecondProps: INodeProps;\r\n termsAndConditionsProps: INodeProps;\r\n\r\n guidedForm?: React.ReactNode;\r\n title?: React.ReactNode;\r\n loading?: React.ReactNode;\r\n alert?: React.ReactNode;\r\n orderSummary?: IOrderSummary;\r\n invoicePaymentSummary?: IInvoicePaymentSummary;\r\n lineItems?: ILineItems;\r\n placeOrderButton?: React.ReactNode;\r\n termsAndConditions?: React.ReactNode;\r\n keepShoppingButton?: React.ReactNode;\r\n orderConfirmation?: React.ReactNode;\r\n\r\n checkoutExpressPaymentContainer?: React.ReactNode;\r\n checkoutErrorRef?: React.RefObject;\r\n}\r\n\r\n/**\r\n * The checkout module props interface.\r\n */\r\nexport interface ICheckoutModuleProps extends ILdsCheckout4Props, IModuleStateProps {}\r\n\r\nconst expressPaymentSectionClassName = 'msc-express-payment-container';\r\n\r\n/**\r\n *\r\n * CheckoutContainer component.\r\n * @extends {React.Component}\r\n */\r\n// @ts-expect-error\r\n@withModuleState\r\n@observer\r\nclass Checkout extends React.PureComponent {\r\n @computed get cartStatus(): Msdyn365.AsyncResultStatus {\r\n return this.props.data.checkout?.status;\r\n }\r\n\r\n @computed get isEmptyCart(): boolean {\r\n if (this.isEditorialMode) {\r\n // Editorial mode: Ignore empty cart\r\n return false;\r\n }\r\n const cart = this.props.data.checkout?.result?.checkoutCart?.cart;\r\n return this.cartStatus === 'SUCCESS' && !!cart && !isEmpty(cart) && (!cart.CartLines || cart.CartLines.length === 0);\r\n }\r\n\r\n @computed get hasError(): boolean {\r\n const cart = this.props.data.checkout?.result?.checkoutCart?.cart;\r\n return this.cartStatus === 'FAILED' || (this.cartStatus === 'SUCCESS' && (!cart || isEmpty(cart)));\r\n }\r\n\r\n @computed get isEditorialMode(): boolean {\r\n return this.props.context.request.params.isEditor;\r\n }\r\n\r\n @computed get canPlaceOrder(): boolean {\r\n const isTermsAndConditionAccepted = this.props.data.checkout.result && this.props.data.checkout.result?.isTermsAndConditionAccepted;\r\n\r\n const shouldEnableSinglePaymentAuthorizationCheckout =\r\n this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout ?? false;\r\n\r\n const disableForOBO = Msdyn365.isOboRequest(this.props.context.request) && !this.isPaidOffByCustomerAccount;\r\n\r\n // If isTermsAndConditionAccepted is undefined means TermsAndCondition module is not added to page and we should able to place order.\r\n return (\r\n this.props.moduleState.isReady &&\r\n (isTermsAndConditionAccepted === undefined || isTermsAndConditionAccepted || shouldEnableSinglePaymentAuthorizationCheckout) &&\r\n (this.state.errorMessage === '' ||\r\n shouldEnableSinglePaymentAuthorizationCheckout ||\r\n (this.props.data.checkout.result?.isPaymentVerificationRedirection ?? false)) &&\r\n !(shouldEnableSinglePaymentAuthorizationCheckout && disableForOBO)\r\n );\r\n }\r\n\r\n @computed get isPaidOffByCustomerAccount(): boolean {\r\n const amountDue = this.props.data.checkout.result?.checkoutCart.cart.TotalAmount ?? 0;\r\n const customerAccountAmount = this.props.data.checkout.result?.customerAccountAmount ?? 0;\r\n\r\n return customerAccountAmount === amountDue;\r\n }\r\n\r\n @computed get isCartReady(): boolean {\r\n return (\r\n !!this.props.data.checkout.result?.checkoutCart?.cart &&\r\n this.props.data.customerInformation.status !== 'LOADING' &&\r\n this.props.data.featureState.status !== 'LOADING'\r\n );\r\n }\r\n\r\n public get expressPaymentDetailsFromCartPage(): IExpressPaymentDetails | null {\r\n const properties =\r\n this.props.data.checkout?.result?.checkoutCart?.cart?.ExtensionProperties?.find(\r\n property => property.Key === 'expressPaymentDetails'\r\n )?.Value?.StringValue ?? '';\r\n return properties ? (JSON.parse(properties) as IExpressPaymentDetails) : null;\r\n }\r\n\r\n public state: ICheckoutState = {\r\n errorMessage: '',\r\n isValidationPassed: false,\r\n isPlaceOrderLoading: false,\r\n isPlaceOrderClicked: false\r\n };\r\n\r\n private readonly telemetryContent: ITelemetryContent = getTelemetryObject(\r\n this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry\r\n );\r\n\r\n private readonly checkoutErrorRef: React.RefObject = React.createRef();\r\n\r\n public componentDidMount(): void {\r\n const {\r\n resources: { genericErrorMessage }\r\n } = this.props;\r\n\r\n when(\r\n () => this.asyncResultStatus !== AsyncResultStatusCode.LOADING,\r\n async () => {\r\n if (this.expressPaymentDetailsFromCartPage) {\r\n const {\r\n email,\r\n tenderLine,\r\n tokenizedPaymentCard,\r\n paymentTenderType: paymentTenderTypeFromCartPage,\r\n isExpressCheckoutAppliedInCartPage,\r\n isExpressAddressAppliedInCartPage,\r\n cardPaymentAcceptResult,\r\n address\r\n } = this.expressPaymentDetailsFromCartPage;\r\n\r\n this.props.data.checkout.result?.updateExpressCheckoutDetails({\r\n newEmailAddressFromExpressCheckout: email ?? '',\r\n newTenderLine: tenderLine,\r\n newTokenizedPaymentCard: tokenizedPaymentCard,\r\n newPaymentTenderType: paymentTenderTypeFromCartPage,\r\n newIsExpressCheckoutApplied: isExpressCheckoutAppliedInCartPage,\r\n newIsExpressAddressApplied: isExpressAddressAppliedInCartPage,\r\n newCardPaymentAcceptResult: cardPaymentAcceptResult\r\n });\r\n\r\n if (isExpressAddressAppliedInCartPage && address) {\r\n this.props.data.checkout.result?.updateBillingAddressFromExpressCheckout({\r\n newBillingAddressFromExpressCheckout: address\r\n });\r\n this.props.data.checkout.result?.updateShippingAddressFromExpressCheckout({\r\n newShippingAddressFromExpressCheckout: address\r\n });\r\n } else {\r\n void this._saveShippingAndBillingAddress(tokenizedPaymentCard);\r\n }\r\n\r\n this.props.data.checkout.result?.checkoutCart.updateExtensionProperties({\r\n newExtensionProperties: [\r\n {\r\n Key: 'expressPaymentDetails',\r\n Value: { StringValue: '' }\r\n }\r\n ]\r\n });\r\n }\r\n }\r\n );\r\n\r\n when(\r\n () => this.hasError,\r\n () => {\r\n this.setState({\r\n errorMessage: genericErrorMessage\r\n });\r\n this.props.context.telemetry.error('Failed to get cart');\r\n }\r\n );\r\n\r\n when(\r\n () => {\r\n return this.isEmptyCart;\r\n },\r\n () => {\r\n this.redirectToCartPage('Cart is empty, but no editCartLink found');\r\n }\r\n );\r\n\r\n when(\r\n () => this.isCartReady,\r\n () => {\r\n this.validateForCheckout();\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.props.moduleState.isReady,\r\n () => {\r\n this.onContainerReady();\r\n }\r\n );\r\n\r\n // Reaction to call place order when isPaymentSectionContainerReady is true for new checkout flow.\r\n reaction(\r\n () => this.props.data.checkout.result?.isPaymentSectionContainerReady,\r\n async isReady => {\r\n if (\r\n this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout &&\r\n isReady &&\r\n !this.props.data.checkout.result?.redirectAdditionalContext &&\r\n (!this.props.data.checkout.result?.isExpressCheckoutApplied ||\r\n this.props.data.checkout.result?.isPaymentVerificationRedirection)\r\n ) {\r\n if (!this.state.isPlaceOrderLoading) {\r\n this.setState({ isPlaceOrderLoading: true });\r\n }\r\n\r\n this.props.telemetry.information(\r\n 'Call onPlaceOrder as reaction when isPaymentSectionContainerReady is updated for single auth payment.'\r\n );\r\n\r\n await this.onPlaceOrder();\r\n\r\n // If 3D authentication redirection, don't update isPlaceOrderLoading\r\n if (!this.props.data.checkout.result.isPaymentVerificationRequired) {\r\n this.setState({ isPlaceOrderLoading: false });\r\n }\r\n }\r\n }\r\n );\r\n\r\n // Reaction to enable place order button when isPaymentSectionContainerHasError is true for new checkout flow.\r\n reaction(\r\n () => this.props.data.checkout.result?.isPaymentSectionContainerHasError,\r\n hasError => {\r\n if (this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout && hasError) {\r\n this.setState({ isPlaceOrderLoading: false });\r\n\r\n this.props.telemetry.information(\r\n 'Enable place order button as reaction when isPaymentSectionContainerHasError is updated to true for single auth payment.'\r\n );\r\n } else {\r\n this.props.telemetry.information(\r\n 'No reaction when isPaymentSectionContainerHasError is updated to false or not single auth payment.'\r\n );\r\n }\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.props.data.checkout.result?.isBillingAddressHasError,\r\n hasError => {\r\n if (this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout && hasError) {\r\n this.setState({ isPlaceOrderLoading: false });\r\n\r\n this.props.data.checkout.result?.updateIsBillingAddressHasError({ newIsBillingAddressHasError: false });\r\n\r\n this.props.telemetry.information(\r\n 'Enable place order button as reaction when isBillingAddressHasError is updated to true for single auth payment.'\r\n );\r\n } else {\r\n this.props.telemetry.information(\r\n 'No reaction when isBillingAddressHasError is updated to false or not single auth payment.'\r\n );\r\n }\r\n }\r\n );\r\n\r\n // Reaction to enable place order button when redirection is true for new checkout flow.\r\n reaction(\r\n () => this.canPlaceOrder,\r\n async () => {\r\n if (this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout && this.canPlaceOrder) {\r\n if (this.props.data.checkout.result?.isPaymentVerificationRedirection) {\r\n await this.props.data.checkout.result.updateIsPlaceOrderEnabledInRedirection({\r\n newIsPlaceOrderEnabledInRedirection: true\r\n });\r\n\r\n this.props.telemetry.information(\r\n 'Set isPaymentVerificationRedirection to true as reaction when canPlaceOrder is updated to true for single auth payment.'\r\n );\r\n } else {\r\n this.props.telemetry.information(\r\n 'No reaction when canPlaceOrder is updated to true but isPaymentVerificationRedirection is false for single auth payment.'\r\n );\r\n this.props.telemetry.information(\r\n `isOBORequest is ${Msdyn365.isOboRequest(this.props.context.request)} and canPlaceOrder is ${\r\n this.canPlaceOrder\r\n }.`\r\n );\r\n }\r\n } else {\r\n this.props.telemetry.information('No reaction when canPlaceOrder is updated to false or not single auth payment.');\r\n }\r\n }\r\n );\r\n\r\n // Reaction to update the error message when there is a checkout error.\r\n reaction(\r\n () => this.props.data.checkout.result?.checkoutError,\r\n checkoutError => {\r\n const checkoutErrorLocation: boolean = checkoutError?.errorLocation === ErrorLocation.Checkout;\r\n // If there is an Error in CheckoutPaymentInstrument module, checkout error location will be updated.\r\n const checkoutPaymentErrorLocation: boolean =\r\n checkoutError?.errorCode === ErrorCode.Microsoft_Dynamics_Commerce_Runtime_UnableToAuthorizePayment\r\n ? checkoutError.errorLocation === ErrorLocation.CheckoutPaymentInstrument\r\n : checkoutErrorLocation;\r\n if (\r\n this.props.data.checkout.result?.shouldEnableCheckoutErrorDisplayMessaging &&\r\n checkoutError &&\r\n checkoutError.errorMessage &&\r\n (checkoutErrorLocation ? checkoutErrorLocation : checkoutPaymentErrorLocation)\r\n ) {\r\n this._setErrorMessage(checkoutError.errorMessage);\r\n }\r\n }\r\n );\r\n }\r\n\r\n public componentDidUpdate(): void {\r\n if (\r\n this.props.data.checkout.result?.shouldEnableCheckoutErrorDisplayMessaging &&\r\n this.props.data.checkout.result?.shouldFocusOnCheckoutError &&\r\n this.state.errorMessage\r\n ) {\r\n void focusOnCheckoutError(this.checkoutErrorRef, this.props.context.actionContext);\r\n }\r\n }\r\n\r\n // eslint-disable-next-line complexity -- ignore the complexity.\r\n public render(): JSX.Element {\r\n const {\r\n moduleState,\r\n config: { className, checkoutHeading, disableGuidedCheckoutFlow },\r\n resources,\r\n context: {\r\n request: {\r\n user: { isAuthenticated }\r\n }\r\n }\r\n } = this.props;\r\n const { errorMessage } = this.state;\r\n const { backToShopping, placeOrderText, confirmPaymentText, cookieConsentRequiredMessage, genericErrorMessage } = resources;\r\n const checkoutClass = classnames('ms-checkout', className);\r\n const allCheckoutInformation = this.getSlotItems('checkoutInformation');\r\n\r\n // @ts-expect-error - check the key of slot\r\n const checkoutInformation = allCheckoutInformation?.filter(info => !info?.key.includes('express-payment'));\r\n\r\n // @ts-expect-error - check the key of slot\r\n const checkoutExpressPaymentContainer = allCheckoutInformation?.find(info => info?.key.includes('express-payment'));\r\n\r\n const isConsentGiven =\r\n this.props.context.request &&\r\n this.props.context.request.cookies &&\r\n this.props.context.request.cookies.isConsentGiven &&\r\n this.props.context.request.cookies.isConsentGiven();\r\n\r\n const isMobile =\r\n this.props.context.request &&\r\n this.props.context.request.device &&\r\n (this.props.context.request.device.Type as DeviceType) === 'Mobile';\r\n\r\n const backToShoppingUrl = Msdyn365.getUrlSync('home', this.props.context.actionContext) || '';\r\n const editCartLink = Msdyn365.getUrlSync('cart', this.props.context.actionContext) || '';\r\n\r\n const termsAndConditions =\r\n this.props.slots.termsAndConditions && this.props.slots.termsAndConditions.length > 0 && this.props.slots.termsAndConditions[0];\r\n\r\n const payLoad = getPayloadObject('click', this.telemetryContent, TelemetryConstant.BackToShopping);\r\n const backToShoppingAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\r\n\r\n const hasInvoiceLine = this.props.data.checkout && this.props.data.checkout.result?.checkoutCart.hasInvoiceLine;\r\n const checkoutBtnText = hasInvoiceLine ? confirmPaymentText : placeOrderText;\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\r\n const shouldEnableSinglePaymentAuthorizationCheckout =\r\n this.props.data.checkout?.result?.shouldEnableSinglePaymentAuthorizationCheckout ?? false;\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check null/undefined.\r\n const isExpressCheckoutApplied = this.props.data.checkout?.result?.isExpressCheckoutApplied ?? false;\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check null/undefined.\r\n const hasShippingAddress = this.props.data.checkout?.result?.hasShippingAddress;\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check null/undefined.\r\n const hasCartDeliveryMode = this.props.data.checkout?.result?.hasCartDeliveryMode;\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check null/undefined.\r\n const hasGuestCheckoutEmail = this.props.data.checkout?.result?.hasGuestCheckoutEmail;\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check null/undefined.\r\n const isTermsAndConditionAccepted = this.props.data.checkout?.result?.isTermsAndConditionAccepted;\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check null/undefined.\r\n const isPaymentVerificationRedirection = this.props.data.checkout?.result?.isPaymentVerificationRedirection ?? false;\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check null/undefined.\r\n const shouldEnableCheckoutErrorDisplayMessaging =\r\n this.props.data.checkout?.result?.shouldEnableCheckoutErrorDisplayMessaging ?? false;\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check null/undefined.\r\n const shouldFocusOnCheckoutError = this.props.data.checkout?.result?.shouldFocusOnCheckoutError;\r\n\r\n let hasExpressPaymentContainer = false;\r\n\r\n if (\r\n typeof window !== 'undefined' &&\r\n (document?.getElementsByClassName(expressPaymentSectionClassName) as HTMLCollectionOf)[0]?.style.display === ''\r\n ) {\r\n hasExpressPaymentContainer = true;\r\n }\r\n\r\n let viewProps: ICheckoutViewProps = {\r\n ...this.props,\r\n isPlaceOrderClicked: this.state.isPlaceOrderClicked,\r\n className: checkoutClass,\r\n checkoutErrorRef: this.checkoutErrorRef,\r\n isEmptyCart: this.isEmptyCart,\r\n isConsentGiven,\r\n hasError: this.hasError,\r\n isPaymentVerificationRedirection: this.props.data.checkout?.result?.isPaymentVerificationRedirection,\r\n shouldEnableSinglePaymentAuthorizationCheckout,\r\n hasSalesOrder:\r\n this.props.data.checkout &&\r\n this.props.data.checkout.result !== undefined &&\r\n this.props.data.checkout.result.salesOrder !== undefined,\r\n hasInvoiceLine,\r\n cartStatus: this.cartStatus,\r\n isMobile,\r\n backToShoppingUrl,\r\n editCartLink,\r\n isEditorialMode: this.isEditorialMode,\r\n orderConfirmation:\r\n this.props.slots.orderConfirmation && this.props.slots.orderConfirmation.length > 0\r\n ? this.props.slots.orderConfirmation[0]\r\n : undefined,\r\n checkoutProps: { moduleProps: this.props, className: checkoutClass },\r\n headerProps: { className: 'ms-checkout__head' },\r\n bodyProps: { className: 'ms-checkout__body' },\r\n mainProps: { className: 'ms-checkout__main' },\r\n mainControlProps: { className: 'ms-checkout__main-control' },\r\n sideProps: { className: hasExpressPaymentContainer ? 'ms-checkout__has-express-side' : 'ms-checkout__side' },\r\n sideControlFirstProps: { className: 'ms-checkout__side-control-first' },\r\n sideControlSecondProps: { className: 'ms-checkout__side-control-second' },\r\n termsAndConditionsProps: { className: 'ms-checkout__terms-and-conditions' },\r\n title: checkoutHeading && this.renderMsdyn365Text(checkoutHeading),\r\n checkoutExpressPaymentContainer\r\n };\r\n\r\n if (!isConsentGiven && isAuthenticated) {\r\n viewProps = {\r\n ...viewProps,\r\n alert: \r\n };\r\n } else if (this.isLoading()) {\r\n viewProps = {\r\n ...viewProps,\r\n loading: \r\n };\r\n } else if (this.hasError) {\r\n viewProps = {\r\n ...viewProps,\r\n alert: \r\n };\r\n } else {\r\n viewProps = {\r\n ...viewProps,\r\n alert: errorMessage && ,\r\n canShow: true,\r\n guidedForm: checkoutInformation ? (\r\n \r\n ) : (\r\n undefined\r\n ),\r\n orderSummary: getOrderSummary(this.props),\r\n invoicePaymentSummary: getInvoicePaymentSummary(this.props),\r\n lineItems: hasInvoiceLine ? undefined : getLineItems(this.props, this.telemetryContent),\r\n placeOrderButton: (\r\n \r\n ),\r\n termsAndConditions,\r\n keepShoppingButton: backToShoppingUrl && (\r\n \r\n {backToShopping}\r\n \r\n )\r\n };\r\n }\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n @computed public get asyncResultStatus(): AsyncResultStatus | undefined {\r\n const isLoading = Object.values(this.props.data).some(data => get(data, 'status') === AsyncResultStatusCode.LOADING);\r\n if (isLoading) {\r\n return AsyncResultStatusCode.LOADING;\r\n }\r\n\r\n const isSuccess = Object.values(this.props.data).every(data => get(data, 'status') === AsyncResultStatusCode.SUCCESS);\r\n if (isSuccess) {\r\n return AsyncResultStatusCode.SUCCESS;\r\n }\r\n\r\n const isFailed = Object.values(this.props.data).some(data => get(data, 'status') === AsyncResultStatusCode.FAILED);\r\n if (isFailed) {\r\n return AsyncResultStatusCode.FAILED;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n /**\r\n * Renders heading.\r\n * @param checkoutHeading - The checkout heading.\r\n * @returns React node.\r\n */\r\n public renderMsdyn365Text(checkoutHeading: ICheckoutHeadingData): React.ReactNode {\r\n return (\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Event handler for heading change event.\r\n * @param event - The content change event in heading element.\r\n * @returns The new heading value.\r\n */\r\n public handleCheckoutHeadingChange = (event: Msdyn365.ContentEditableEvent) =>\r\n (this.props.config.checkoutHeading!.text = event.target.value);\r\n\r\n /**\r\n * Checks if cart is loading.\r\n * @returns True if is loading, false otherwise.\r\n */\r\n private readonly isLoading = (): boolean => {\r\n return !this.cartStatus || this.cartStatus === 'LOADING' || this.isEmptyCart || !this.state.isValidationPassed;\r\n };\r\n\r\n /**\r\n * Get slot items.\r\n * @param key - The slot key.\r\n * @returns React node or undefined.\r\n */\r\n private readonly getSlotItems = (key: string): React.ReactNode[] | undefined => {\r\n const { slots } = this.props;\r\n return slots && slots[key] && slots[key].length > 0 ? slots[key] : undefined;\r\n };\r\n\r\n /**\r\n * Trigger the payment section container submit when placing order.\r\n */\r\n private readonly triggerPaymentWithPlaceOrder = async (): Promise => {\r\n this.setState({ isPlaceOrderLoading: true });\r\n\r\n await this.props.data.checkout.result?.updateShouldTriggerPaymentWithPlaceOrder({\r\n newShouldTriggerPaymentWithPlaceOrder: !this.props.data.checkout.result.shouldTriggerPaymentWithPlaceOrder\r\n });\r\n };\r\n\r\n /**\r\n * On place order.\r\n * @returns Void promise.\r\n */\r\n private readonly onPlaceOrder = async (): Promise => {\r\n const {\r\n resources: {\r\n checkoutOutOfStockErrorMessage,\r\n genericErrorMessage,\r\n invalidCartVersionErrorMessage,\r\n missingRequiredCartTenderLinesErrorMessage\r\n },\r\n context: {\r\n actionContext,\r\n app: {\r\n config: { enableStockCheck = false }\r\n }\r\n },\r\n slots: { orderConfirmation },\r\n data: { checkout, products }\r\n } = this.props;\r\n\r\n this.props.telemetry.information('Checkout onPlaceOrder is called.');\r\n this.setState({ isPlaceOrderClicked: true });\r\n\r\n // If hasInvoiceLine is true, no inventory check\r\n if (\r\n !this.props.data.checkout.result?.checkoutCart.hasInvoiceLine &&\r\n enableStockCheck &&\r\n (await this.isOverMaxQuantity((await checkout).checkoutCart.cart, await products))\r\n ) {\r\n this.setState({\r\n errorMessage: checkoutOutOfStockErrorMessage\r\n });\r\n this.props.context.telemetry.error(checkoutOutOfStockErrorMessage);\r\n } else {\r\n const hasOrderConfirmation = orderConfirmation && orderConfirmation.length > 0;\r\n\r\n const updatedCartVersion = await this.updateCartLineEmailAddress(this.props.data.checkout.result?.guestCheckoutEmail || '');\r\n\r\n await placeOrder(\r\n actionContext,\r\n this.props.data.checkout.result,\r\n this.props.data.products.result,\r\n !hasOrderConfirmation,\r\n updatedCartVersion,\r\n this.props.data.checkout.result?.isPaymentVerificationRedirection\r\n ).catch(error => {\r\n const checkoutResult = this.props.data.checkout.result;\r\n\r\n if (checkoutResult && checkoutResult.shouldEnableCheckoutErrorDisplayMessaging) {\r\n const errorCode = error && error.name ? error.name : '';\r\n void setCheckoutErrors(errorCode, this.props.resources, !!checkoutResult.isExpressCheckoutApplied, actionContext);\r\n } else {\r\n let errorMessage = genericErrorMessage;\r\n this.setState({ isPlaceOrderClicked: false });\r\n\r\n if (error && error.name === 'Microsoft_Dynamics_Commerce_Runtime_InvalidCartVersion') {\r\n errorMessage = invalidCartVersionErrorMessage;\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- unknown error type.\r\n } else if (error && error.name === 'Microsoft_Dynamics_Commerce_Runtime_MissingRequiredCartTenderLines') {\r\n errorMessage = missingRequiredCartTenderLinesErrorMessage;\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- unknown error type.\r\n if (\r\n this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout &&\r\n error.data?.AdditionalContext &&\r\n !this.props.data.checkout.result?.isPaymentVerificationRedirection\r\n ) {\r\n return;\r\n }\r\n\r\n this.setState({\r\n errorMessage\r\n });\r\n this.props.telemetry.exception(error);\r\n }\r\n });\r\n\r\n await checkout.result?.updateIsPaymentSectionContainerReady({ newIsPaymentSectionContainerReady: false });\r\n }\r\n };\r\n\r\n /**\r\n * Update receipt email address for electronic cart line.\r\n * @param newGuestCheckoutEmail - The guest checkout email.\r\n * @returns The updated cart version.\r\n */\r\n private readonly updateCartLineEmailAddress = async (newGuestCheckoutEmail: string): Promise => {\r\n const emailDeliveryModeCode = this.props.context.request.channel?.EmailDeliveryModeCode;\r\n\r\n const emailDeliveryCartLines = this.props.data.checkout.result?.checkoutCart.cart.CartLines?.filter(\r\n cartLine => cartLine.DeliveryMode && cartLine.DeliveryMode !== '' && cartLine.DeliveryMode === emailDeliveryModeCode\r\n );\r\n\r\n let updatedCartVersion: number | undefined;\r\n if (emailDeliveryCartLines && emailDeliveryCartLines.length > 0) {\r\n const lineDeliverySpecifications: LineDeliverySpecification[] = emailDeliveryCartLines.map(line => {\r\n return {\r\n LineId: line.LineId,\r\n DeliverySpecification: {\r\n DeliveryModeId: emailDeliveryModeCode,\r\n DeliveryPreferenceTypeValue: DeliveryPreferenceType.ElectronicDelivery,\r\n ElectronicDeliveryEmailAddress: newGuestCheckoutEmail\r\n }\r\n };\r\n });\r\n\r\n await updateLineDeliverySpecificationsAsync(\r\n { callerContext: this.props.context.actionContext },\r\n (await this.props.data.checkout).checkoutCart.cart.Id,\r\n lineDeliverySpecifications\r\n )\r\n .then(updatedCart => {\r\n updatedCartVersion = updatedCart.Version;\r\n })\r\n .catch(error => {\r\n this.props.context.actionContext.telemetry.exception(error);\r\n throw new Error('[updateLineDeliverySpecificationsAsync] Unable to update electronic delivery email address in cart');\r\n });\r\n }\r\n\r\n return updatedCartVersion;\r\n };\r\n\r\n /**\r\n * Return true if any product in the cart is over its max quantity.\r\n * @param cart -- The checkout cart.\r\n * @param products -- The checkout products.\r\n * @returns - Is any product in the cart is over max quantity.\r\n */\r\n private readonly isOverMaxQuantity = async (cart: Cart, products: SimpleProduct[]): Promise => {\r\n let isOverMaxQuantity = false;\r\n const emailDeliveryModeCode = this.props.context.request.channel?.EmailDeliveryModeCode;\r\n\r\n await getAvailabilitiesForCartLineItems(\r\n new ProductAvailabilitiesForCartLineItems(this.props.context.actionContext.requestContext.apiSettings),\r\n this.props.context.actionContext\r\n )\r\n .then(productInventoryInformation => {\r\n const productsThatShouldValidateInventory: IProductInventoryInformation[] = [];\r\n\r\n cart.CartLines?.map(cartline => {\r\n const cartlineProduct = products.find(product => product.RecordId === cartline.ProductId);\r\n\r\n // If product is non-stocked or cartline is electronic delivery, then no inventory check\r\n const isStockedItem = cartlineProduct?.Behavior?.IsStockedProduct;\r\n const isEmailDelivery =\r\n cartline.DeliveryMode && cartline.DeliveryMode !== '' ? cartline.DeliveryMode === emailDeliveryModeCode : false;\r\n const shouldSkipInventoryCheck = !isStockedItem || isEmailDelivery;\r\n if (!shouldSkipInventoryCheck && ArrayExtensions.hasElements(productInventoryInformation)) {\r\n const foundProductAvailability = productInventoryInformation.find(productInventory => {\r\n return productInventory.ProductAvailableQuantity?.ProductId! === cartline.ProductId;\r\n });\r\n if (foundProductAvailability) {\r\n productsThatShouldValidateInventory.push(foundProductAvailability);\r\n }\r\n }\r\n });\r\n\r\n const cartLinesInventoryValidation = validateCartLinesInventory(\r\n cart.CartLines ?? [],\r\n productsThatShouldValidateInventory,\r\n this.props.context.actionContext,\r\n products,\r\n emailDeliveryModeCode\r\n );\r\n\r\n // If is invalid then exceeds the available quantity\r\n isOverMaxQuantity = !cartLinesInventoryValidation.isValid;\r\n return isOverMaxQuantity;\r\n })\r\n .catch(error => {\r\n this.props.context.actionContext.telemetry.exception(error);\r\n throw new Error('[getAvailabilitiesForCartLineItems] Unable to get availabilities for products in checkout cart');\r\n });\r\n\r\n return isOverMaxQuantity;\r\n };\r\n\r\n /**\r\n * Gets active child in module state.\r\n * @returns - The module state manager collection.\r\n */\r\n private readonly getActiveChildModuleStates = (): IModuleStateManager[] => {\r\n const { childIds, getModule } = this.props.moduleState;\r\n return childIds\r\n .map(getModule)\r\n .filter((state): state is IModuleStateManager => !!state && !state.isDisabled && state.hasModuleState);\r\n };\r\n\r\n /**\r\n * On container ready.\r\n */\r\n private readonly onContainerReady = (): void => {\r\n this.props.telemetry.information('Checkout onContainerReady is called.');\r\n\r\n this.getActiveChildModuleStates().forEach(state => {\r\n state.isReady && state.onContainerReady && state.onContainerReady();\r\n });\r\n };\r\n\r\n /**\r\n * Redirects to cart page.\r\n * @param notFoundEditCartLinkMessage - Not found edit cart link message.\r\n */\r\n private readonly redirectToCartPage = (notFoundEditCartLinkMessage: string): void => {\r\n const editCartLink = Msdyn365.getUrlSync('cart', this.props.context.actionContext) || '';\r\n if (window && editCartLink) {\r\n window.location.assign(editCartLink);\r\n } else {\r\n this.setState({\r\n errorMessage: this.props.resources.genericErrorMessage\r\n });\r\n this.props.context.telemetry.error(notFoundEditCartLinkMessage);\r\n }\r\n };\r\n\r\n /**\r\n * Validates for checkout.\r\n * @param retry - Retry flag.\r\n */\r\n private readonly validateForCheckout = (retry: boolean = true): void => {\r\n const notFoundEditCartLinkMessage = \"Cart doesn't pass validation, but no editCartLink found\";\r\n const cart = this.props.data.checkout.result!.checkoutCart.cart;\r\n const { Id, Version } = cart;\r\n const isOrderQuantityLimitsFeatureEnabledInHq =\r\n this.props.data.featureState.result?.find(\r\n featureState => featureState.Name === 'Dynamics.AX.Application.RetailDefaultOrderQuantityLimitsFeature'\r\n )?.IsEnabled || false;\r\n const defaultOrderQuantityLimitsFeatureConfig = this.props.context?.request?.app?.platform?.enableDefaultOrderQuantityLimits;\r\n const customerInfo = this.props.data.customerInformation.result;\r\n\r\n const isOrderQuantityLimitsFeatureEnabledInSiteSettings =\r\n defaultOrderQuantityLimitsFeatureConfig === 'all' ||\r\n (customerInfo &&\r\n ((defaultOrderQuantityLimitsFeatureConfig === 'b2b' && customerInfo.IsB2b) ||\r\n (defaultOrderQuantityLimitsFeatureConfig === 'b2c' && !customerInfo.IsB2b)));\r\n if (isOrderQuantityLimitsFeatureEnabledInHq && isOrderQuantityLimitsFeatureEnabledInSiteSettings) {\r\n if (Version && Id) {\r\n validateForCheckoutAsync({ callerContext: this.props.context.actionContext, bypassCache: 'none' }, Id, Version)\r\n .then((result: CartLineValidationResults) => {\r\n if (result.ValidationFailuresByCartLines?.length !== 0) {\r\n this.redirectToCartPage(notFoundEditCartLinkMessage);\r\n } else {\r\n this.setState({ isValidationPassed: true });\r\n }\r\n })\r\n .catch(error => {\r\n this.props.telemetry.warning(error);\r\n this.props.telemetry.debug('Unable to validate Cart');\r\n if (retry && error.name === 'Microsoft_Dynamics_Commerce_Runtime_InvalidCartVersion') {\r\n const cartState = this.props.data.checkout.result?.checkoutCart;\r\n cartState\r\n ?.refreshCart({})\r\n .then(() => {\r\n this.validateForCheckout(false);\r\n })\r\n .catch((refreshError: Error) => {\r\n this.props.telemetry.warning(refreshError.message);\r\n this.props.telemetry.debug('Unable to refresh Cart');\r\n });\r\n } else {\r\n this.redirectToCartPage(notFoundEditCartLinkMessage);\r\n }\r\n });\r\n } else {\r\n this.redirectToCartPage(notFoundEditCartLinkMessage);\r\n }\r\n } else {\r\n this.setState({ isValidationPassed: true });\r\n }\r\n };\r\n\r\n @action\r\n private readonly _setErrorMessage = (errorMessage: string): void => {\r\n this.props.telemetry.error(errorMessage);\r\n this.props.moduleState.setHasError(true);\r\n this.props.moduleState.onUpdating();\r\n this.setState({\r\n errorMessage\r\n });\r\n };\r\n\r\n /**\r\n * Save the address as Shipping and Billing address.\r\n * @param tokenizedPaymentCard - Tokenized payment card.\r\n */\r\n private readonly _saveShippingAndBillingAddress = async (tokenizedPaymentCard?: TokenizedPaymentCard): Promise => {\r\n const checkoutState = this.props.data.checkout.result;\r\n\r\n // For Paypal, the address returned in TokenizedPaymentCard will be used as both shipping and billing address.\r\n if (checkoutState && tokenizedPaymentCard && tokenizedPaymentCard.Zip) {\r\n const address: Address = this._getAddressFromTokenizedPaymentCard(tokenizedPaymentCard);\r\n\r\n await checkoutState.updateBillingAddressFromExpressCheckout({ newBillingAddressFromExpressCheckout: address });\r\n await checkoutState.updateShippingAddressFromExpressCheckout({ newShippingAddressFromExpressCheckout: address });\r\n }\r\n };\r\n\r\n /**\r\n * Get address from tokenizedPaymentCard.\r\n * @param tokenizedPaymentCard -- The tokenizedPaymentCard from the payment.\r\n * @returns The address.\r\n */\r\n private readonly _getAddressFromTokenizedPaymentCard = (tokenizedPaymentCard: TokenizedPaymentCard): Address => {\r\n const address: Address = {\r\n TwoLetterISORegionName: tokenizedPaymentCard.Country,\r\n Name: tokenizedPaymentCard.NameOnCard,\r\n Street: tokenizedPaymentCard.Address1,\r\n StreetNumber: tokenizedPaymentCard.Address2,\r\n City: tokenizedPaymentCard.City,\r\n State: tokenizedPaymentCard.State,\r\n ZipCode: tokenizedPaymentCard.Zip,\r\n Phone: tokenizedPaymentCard.Phone\r\n };\r\n\r\n return address;\r\n };\r\n}\r\n\r\nexport default Checkout;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { IActionContext } from '@msdyn365-commerce/core';\r\nimport { ICheckoutState } from '@msdyn365-commerce/global-state';\r\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\r\nimport { PlaceOrder } from '@msdyn365-commerce-modules/checkout';\r\n\r\nexport default async (\r\n ctx: IActionContext,\r\n checkoutState: ICheckoutState | undefined,\r\n orderedProducts: SimpleProduct[] | undefined,\r\n redirect: boolean,\r\n updatedCartVersion?: number,\r\n isPaymentVerificationRedirection?: boolean\r\n) => {\r\n return PlaceOrder(ctx, checkoutState, orderedProducts, redirect, updatedCartVersion, isPaymentVerificationRedirection);\r\n};\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\ninterface IAlertProps {\n message: string;\n}\n\nconst CheckoutAlert: React.FC = ({ message }) => (\n

\n {message}\n

\n);\n\nexport default CheckoutAlert;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICheckoutSectionContainerItem, ICheckoutSectionContainerViewProps } from './checkout-section-container';\n\nconst ItemComponent: React.FC = ({ loading, itemProps, item }) => (\n <>\n {loading}\n {item}\n \n);\n\nconst CheckoutSectionContainerView: React.FC = ({ checkoutPlainContainerProps, items }) => (\n \n {items.map(item => (\n \n ))}\n \n);\n\nexport default CheckoutSectionContainerView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAddResource, ICheckoutGiftCardViewProps, IForm, IItem, IList, IShowResource } from './checkout-gift-card';\n\nexport const From: React.FC = ({\n formProps,\n label,\n inputPinLabel,\n inputExpLabel,\n alert,\n inputProps,\n inputNumProps,\n inputPinProps,\n inputExpProps,\n inputNumber,\n inputPin,\n inputExp,\n applyButton,\n supportExternalGiftCard,\n showGiftCardPinInput,\n showGiftCardExpInput,\n alertFieldLabel\n}) => (\n \n {alert}\n {supportExternalGiftCard ? (\n \n \n {label}\n {inputNumber}\n \n {showGiftCardPinInput && (\n \n {inputPinLabel}\n {inputPin}\n \n )}\n {showGiftCardExpInput && (\n \n {inputExpLabel}\n {inputExp}\n \n )}\n {(showGiftCardPinInput || showGiftCardExpInput) && alertFieldLabel}\n \n ) : (\n <>\n {label}\n {inputNumber}\n \n )}\n {applyButton}\n \n);\n\nexport const SelectedGiftCard: React.FC = ({ itemProps, selectedGiftCard, removeButton }) => (\n \n {selectedGiftCard}\n {removeButton}\n \n);\n\nexport const GiftCardList: React.FC = ({ listProps, list }) => (\n \n {list.map(({ id, ...item }) => (\n \n ))}\n \n);\n\nexport const AddResource: React.FC = ({ form, list }) => (\n <>\n {form && }\n {list && }\n \n);\n\nexport const ShowResource: React.FC = ({ title, list }) => (\n <>\n {title}\n {list && }\n \n);\n\nconst CheckoutGiftCardView: React.FC = props => {\n const { checkoutGiftCardProps, checkoutErrorRef, showGiftCard, addGiftCard } = props;\n return (\n \n {showGiftCard && }\n {addGiftCard && }\n \n );\n};\n\nexport default CheckoutGiftCardView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\nimport { EmailRegex, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport { CheckoutModule, ErrorLocation } from '@msdyn365-commerce/global-state';\nimport classnames from 'classnames';\nimport { action, computed, reaction, when } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport { focusOnCheckoutError } from '../../checkout-errors';\nimport { ErrorComponent } from '../../common';\n\nimport { ICheckoutGuestProfileData } from './checkout-guest-profile.data';\nimport { ICheckoutGuestProfileProps } from './checkout-guest-profile.props.autogenerated';\nimport getAddContactInfo, { IAddContactInfo } from './components/get-add-contact-info';\nimport getShowContactInfo, { IShowContactInfo } from './components/get-show-contact-info';\n\nexport * from './components/get-add-contact-info';\nexport * from './components/get-show-contact-info';\n\ninterface ICheckoutGuestProfileState {\n email: string;\n hasCheckoutError?: boolean;\n errorMessage?: string;\n}\n\nexport interface ICheckoutGuestProfileModuleProps extends ICheckoutGuestProfileProps, IModuleStateProps {}\n\nexport interface ICheckoutGuestProfileViewProps extends ICheckoutGuestProfileProps, ICheckoutGuestProfileState {\n moduleProps: IModuleProps;\n showContactInfo?: IShowContactInfo;\n addContactInfo?: IAddContactInfo;\n alert?: React.ReactNode;\n checkoutErrorRef?: React.RefObject;\n\n onChange?(email: string): void;\n onEdit?(): void;\n onSubmit?(): void;\n onCancel?(): void;\n}\n\n/**\n *\n * CheckoutGuestProfile component.\n * @extends {React.PureComponent, ICheckoutGuestProfileState>}\n */\n// @ts-expect-error\n@withModuleState\n@observer\nclass CheckoutGuestProfile extends React.Component {\n public state: ICheckoutGuestProfileState = {\n email:\n (this.props.context &&\n this.props.context.request &&\n this.props.context.request.user &&\n this.props.context.request.user.isAuthenticated &&\n this.props.context.request.user.emailAddress) ||\n ''\n };\n\n private readonly inputRef: React.RefObject = React.createRef();\n\n private readonly checkoutErrorRef: React.RefObject = React.createRef();\n\n @computed get isDataReady(): boolean {\n return (this.props.data.checkout.result && this.props.data.checkout.status) === 'SUCCESS';\n }\n\n @computed get hasEmailError(): boolean {\n return this.props.moduleState.hasError && !this.state.hasCheckoutError;\n }\n\n public componentDidMount(): void {\n when(\n () => this.isDataReady,\n async () => {\n await this.init();\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.isExpressCheckoutApplied,\n async isExpressCheckoutApplied => {\n const emailAddressFromExpressCheckout = this.props.data.checkout.result?.emailAddressFromExpressCheckout ?? '';\n const isEmailFromExpressCheckoutDifferent =\n !StringExtensions.isNullOrEmpty(emailAddressFromExpressCheckout) &&\n emailAddressFromExpressCheckout !== this.state.email;\n\n if (\n isExpressCheckoutApplied &&\n (!this.props.data.checkout.result?.isExpressAddressApplied || isEmailFromExpressCheckoutDifferent)\n ) {\n await this.submitEmail(emailAddressFromExpressCheckout);\n }\n }\n );\n\n if (this.props.data.checkout.result?.shouldEnableCheckoutErrorDisplayMessaging) {\n reaction(\n () => this.props.data.checkout.result?.checkoutError,\n checkoutError => {\n if (checkoutError && checkoutError.errorLocation === ErrorLocation.CheckoutGuestProfile && checkoutError.errorMessage) {\n this._setErrorMessage(checkoutError.errorMessage);\n }\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.checkoutErrorFocus,\n checkoutErrorFocus => {\n if (checkoutErrorFocus === CheckoutModule.CheckoutGuestProfile) {\n focusOnCheckoutError(this.checkoutErrorRef, this.props.context.actionContext);\n }\n }\n );\n }\n }\n\n public shouldComponentUpdate(nextProps: ICheckoutGuestProfileModuleProps, nextState: ICheckoutGuestProfileState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n const {\n config: { className },\n resources,\n moduleState: { isReady, hasExternalSubmitGroup }\n } = this.props;\n const { hasCheckoutError, errorMessage } = this.state;\n const email = this.props.data.checkout.result?.guestCheckoutEmail ?? '';\n\n const viewProps: ICheckoutGuestProfileViewProps = {\n ...this.props,\n ...this.state,\n checkoutErrorRef: this.checkoutErrorRef,\n onChange: this.onChange,\n onEdit: this.onEdit,\n onCancel: this.onCancel,\n onSubmit: this.onSubmit,\n\n moduleProps: {\n moduleProps: this.props,\n className: classnames('ms-checkout-guest-profile', className, isReady ? 'show' : 'add')\n },\n alert: hasCheckoutError && errorMessage && (\n \n ),\n showContactInfo: isReady\n ? getShowContactInfo({\n canEdit: !hasExternalSubmitGroup,\n email,\n resources,\n onEdit: this.onEdit\n })\n : undefined,\n addContactInfo: !isReady\n ? getAddContactInfo({\n email: this.state.email,\n hasError: this.hasEmailError,\n resources,\n inputRef: this.inputRef,\n onChange: this.onChange,\n canSubmit: !hasExternalSubmitGroup,\n onSubmit: this.onSubmit,\n canCancel: !hasExternalSubmitGroup && !!email,\n onCancel: this.onCancel\n })\n : undefined\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private readonly init = async (): Promise => {\n const checkoutState = this.props.data.checkout.result;\n const customerAccountInformation = this.props.data.accountInformation?.result;\n\n const hasInvoiceLine = checkoutState?.checkoutCart.hasInvoiceLine;\n let updateEmail: string = '';\n\n // if obo enabled and profile selected, we need to send the order status to obo user not store manager.\n if (Msdyn365.isOboRequest(this.props.context.request)) {\n updateEmail =\n customerAccountInformation && customerAccountInformation.Email !== undefined\n ? customerAccountInformation.Email\n : this.setErrorMsgOboUserEmailEmpty();\n } else {\n updateEmail = this.state.email;\n }\n\n const emailOnCart = checkoutState?.checkoutCart.cart.ReceiptEmail;\n const email = hasInvoiceLine\n ? this.props.context.request.user.emailAddress ?? ''\n : emailOnCart ??\n (checkoutState?.isExpressCheckoutApplied && !StringExtensions.isNullOrEmpty(checkoutState.emailAddressFromExpressCheckout)\n ? checkoutState.emailAddressFromExpressCheckout\n : undefined) ??\n updateEmail;\n\n const isEmailValid = this.isEmailValid(email);\n this.props.moduleState.init({\n onEdit: this.onEdit,\n onCancel: this.onCancel,\n onSubmit: this.onSubmit,\n status: hasInvoiceLine ? 'disabled' : email && isEmailValid ? 'ready' : 'updating',\n hasError: !!email && !isEmailValid\n });\n\n if (email) {\n await this.updateGuestProfile(email);\n checkoutState?.updateHasGuestCheckoutEmail({ newHasGuestCheckoutEmail: true });\n } else {\n checkoutState?.updateHasGuestCheckoutEmail({ newHasGuestCheckoutEmail: false });\n }\n };\n\n private readonly onChange = (rowEmail: string): void => {\n const email = (rowEmail || '').replace(new RegExp('[<>]', 'gi'), '');\n this.setState({ email });\n if (this.props.moduleState.hasError) {\n // Clear error during user updating the email\n this.props.moduleState.setHasError(false);\n this.setState({\n hasCheckoutError: false\n });\n }\n };\n\n private readonly setErrorMsgOboUserEmailEmpty = (): string => {\n // Clear prior error\n this.props.moduleState.setHasError(false);\n this.setState({\n hasCheckoutError: false\n });\n return '';\n };\n\n private readonly isEmailValid = (email: string): boolean => {\n return EmailRegex.defaultRegex.test(email);\n };\n\n private readonly updateGuestProfile = async (newGuestCheckoutEmail: string): Promise => {\n if (this.props.data.checkout.result) {\n await this.props.data.checkout.result.updateGuestCheckoutEmail({ newGuestCheckoutEmail });\n this.setState({ email: newGuestCheckoutEmail });\n }\n };\n\n private readonly onEdit = (): void => {\n this.props.telemetry.information('Guest profile onEdit is called.');\n\n this.props.moduleState.onUpdating();\n };\n\n private readonly onSubmit = async (): Promise => {\n this.props.telemetry.information('Guest profile onSubmit is called.');\n\n const { email } = this.state;\n await this.submitEmail(email);\n };\n\n /**\n * Submit the email address.\n * @param email - The email to be submitted.\n *\n */\n private readonly submitEmail = async (email: string): Promise => {\n const isValid = this.isEmailValid(email);\n if (!isValid) {\n this.props.moduleState.setHasError(true);\n\n const input = this.inputRef.current?.focus && (this.inputRef.current as HTMLElement);\n input?.focus();\n } else {\n this.props.moduleState.onReady();\n await this.updateGuestProfile(email);\n }\n };\n\n private readonly onCancel = (): void => {\n this.props.telemetry.information('Guest profile onCancel is called.');\n\n // Reset to the saved value\n if (!this.props.data.checkout.result) {\n return;\n }\n\n const email = this.props.data.checkout.result.guestCheckoutEmail;\n if (!email) {\n // It has no saved email, set to status updating and request user to fill the email form\n this.props.moduleState.onUpdating();\n } else {\n // It has saved email, set to status ready\n this.setState({\n email\n });\n this.props.moduleState.setHasError(false);\n this.setState({\n hasCheckoutError: false\n });\n this.props.moduleState.onReady();\n }\n };\n\n @action\n private readonly _setErrorMessage = (errorMessage: string): void => {\n this.props.telemetry.error(errorMessage);\n this.props.moduleState.setHasError(true);\n this.props.moduleState.onUpdating();\n this.setState({\n hasCheckoutError: true,\n errorMessage\n });\n };\n}\n\nexport default CheckoutGuestProfile;\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { Address, TenderLine, TokenizedPaymentCard } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport { Button } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport interface IPaymentInformationProps {\r\n resources: {\r\n changePaymentButtonText: string;\r\n cardTitle: string;\r\n cardNumberLabel: string;\r\n expiresDateLabel: string;\r\n addressTitle: string;\r\n };\r\n tokenizedPaymentCard?: TokenizedPaymentCard;\r\n tenderLine?: TenderLine;\r\n billingAddress?: Address;\r\n canEdit?: boolean;\r\n onEdit?(): void;\r\n}\r\n\r\n/**\r\n * PaymentInformation SFC.\r\n * @param root0\r\n * @param root0.resources\r\n * @param root0.resources.changePaymentButtonText\r\n * @param root0.resources.cardTitle\r\n * @param root0.resources.cardNumberLabel\r\n * @param root0.resources.expiresDateLabel\r\n * @param root0.resources.addressTitle\r\n * @param root0.tokenizedPaymentCard\r\n * @param root0.tenderLine\r\n * @param root0.billingAddress\r\n * @param root0.onEdit\r\n * @param root0.canEdit\r\n * @extends {React.SFC}\r\n */\r\nconst PaymentInformation: React.SFC = ({\r\n resources: { changePaymentButtonText, cardTitle, cardNumberLabel, expiresDateLabel, addressTitle },\r\n tokenizedPaymentCard,\r\n tenderLine,\r\n billingAddress,\r\n onEdit,\r\n canEdit\r\n}) => {\r\n const { NameOnCard = '', CardTypeId, CardTokenInfo = {}, ExpirationMonth = 0, ExpirationYear = 0 } = tokenizedPaymentCard || {};\r\n const { MaskedCardNumber = '' } = CardTokenInfo || tenderLine || {};\r\n const cardLastNDigit = MaskedCardNumber.substr(-4);\r\n\r\n // @ts-expect-error\r\n const isValidCardNumber = !isNaN(cardLastNDigit) && cardLastNDigit !== '';\r\n const { Name, Street, StreetNumber, City, State, ZipCode, ThreeLetterISORegionName, Phone } = billingAddress || {};\r\n\r\n return (\r\n
\r\n

{cardTitle}

\r\n

{NameOnCard}

\r\n {CardTypeId &&

{CardTypeId}

}\r\n {isValidCardNumber && (\r\n

\r\n {cardNumberLabel} {cardLastNDigit}\r\n

\r\n )}\r\n {(ExpirationMonth > 0 || ExpirationYear > 0) && (\r\n

\r\n {expiresDateLabel} {ExpirationMonth}/{ExpirationYear}\r\n

\r\n )}\r\n {billingAddress && (\r\n <>\r\n

{addressTitle}

\r\n

\r\n {Name} {Street}\r\n

\r\n {StreetNumber &&

{StreetNumber}

}\r\n

\r\n {City},{State} {ZipCode} {ThreeLetterISORegionName} {Phone}\r\n

\r\n \r\n )}\r\n {canEdit && (\r\n \r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default React.memo(PaymentInformation);\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { AsyncResultStatus, getUrlSync } from '@msdyn365-commerce/core';\r\nimport { IGiftCardExtend } from '@msdyn365-commerce/global-state';\r\nimport { CardType } from '@msdyn365-commerce/retail-proxy';\r\nimport { retrieveCardPaymentAcceptResultAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g';\r\nimport { resolveCardTypesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\r\nimport {\r\n Address,\r\n CardPaymentAcceptResult,\r\n CartLine,\r\n TokenizedPaymentCard,\r\n AttributeValueBase\r\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport { IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\r\nimport { IModuleProps, INodeProps, Modal } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport get from 'lodash/get';\r\nimport { action, computed, reaction, when } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport {\r\n IVisibilityObserverProps,\r\n withVisibilityObserver,\r\n // ILdsCheckoutPaymentInstrumentProps,\r\n AddPaymentFormComponent,\r\n WaitingComponent,\r\n paymentConnectorExtraContextMessage,\r\n PaymentConnectorPostMessageType,\r\n paymentConnectorSubmitMessage,\r\n Iframe,\r\n ErrorComponent,\r\n AsyncResultStatusCode\r\n} from '@msdyn365-commerce-modules/checkout';\r\nimport getCardPaymentAcceptPointAction, { GetCardPaymentAcceptPointInput } from './actions/get-card-payment-accept-point';\r\nimport { ILdsCheckoutPaymentInstrumentData } from './lds-checkout-payment-instrument.data';\r\nimport { ILdsCheckoutPaymentInstrumentProps } from './lds-checkout-payment-instrument.props.autogenerated';\r\nimport PaymentInformationComponent from './components/payment-information';\r\n\r\nexport interface ICheckoutPaymentInstrumentModuleProps\r\n extends ILdsCheckoutPaymentInstrumentProps,\r\n IModuleStateProps,\r\n IVisibilityObserverProps {}\r\n\r\ninterface ICheckoutPaymentInstrumentState {\r\n errorMessage?: string;\r\n isFetchingPaymentConnector?: boolean;\r\n paymentConnectorHeight?: number;\r\n isPaymentVerificationRequried?: boolean;\r\n paymentVerificationPostData?: string;\r\n isPaymentProcessing?: boolean;\r\n isOverlayModal?: boolean;\r\n isExpressCheckoutApplied?: boolean;\r\n}\r\n\r\nexport interface ICheckoutPaymentOverlayModal {\r\n modal: INodeProps;\r\n}\r\n\r\nexport interface ICheckoutPaymentInstrumentViewProps extends ILdsCheckoutPaymentInstrumentProps<{}>, ICheckoutPaymentInstrumentState {\r\n className?: string;\r\n checkoutPaymentInstrument: IModuleProps;\r\n waiting?: React.ReactNode;\r\n alert?: React.ReactNode;\r\n paymentInformation?: React.ReactNode;\r\n addPaymentForm?: React.ReactNode;\r\n overlayModal?: ICheckoutPaymentOverlayModal;\r\n isVisible?: boolean;\r\n updateFunction?: any;\r\n updatePaymentAttributes?: any;\r\n}\r\n\r\nconst zeroAmount = 0;\r\n\r\n/**\r\n *\r\n * CheckoutPaymentInstrument component.\r\n * @extends {React.Component>}\r\n */\r\n// @ts-expect-error\r\n@withModuleState\r\n@observer\r\nexport class CheckoutPaymentInstrument extends React.PureComponent {\r\n @computed get getLoyaltyAmount(): number {\r\n const checkoutState = this.props.data.checkout.result;\r\n return checkoutState && checkoutState.loyaltyAmount ? checkoutState.loyaltyAmount : 0;\r\n }\r\n\r\n @computed get getCustomerAccountAmount(): number {\r\n const checkoutState = this.props.data.checkout.result;\r\n return checkoutState && checkoutState.customerAccountAmount ? checkoutState.customerAccountAmount : 0;\r\n }\r\n\r\n @computed get getGiftCardTotalAmount(): number {\r\n const checkoutState = this.props.data.checkout.result;\r\n if (!checkoutState || !checkoutState.giftCardExtends) {\r\n return 0;\r\n }\r\n return checkoutState.giftCardExtends.reduce((count: number, giftCard: IGiftCardExtend) => {\r\n const balance: number = giftCard.Balance || 0;\r\n return count + balance;\r\n }, 0);\r\n }\r\n\r\n @computed public get amountDue(): number {\r\n const {\r\n data: { checkout }\r\n } = this.props;\r\n if (!checkout.result) {\r\n return 0;\r\n }\r\n\r\n const checkoutResult = checkout.result;\r\n const cart = checkoutResult.checkoutCart.cart;\r\n if (!cart || !cart.CartLines || cart.CartLines.length === 0) {\r\n return 0;\r\n }\r\n\r\n // Use the card for payment after all other payment methods\r\n return (cart.TotalAmount || zeroAmount) - this.getGiftCardTotalAmount - this.getLoyaltyAmount - this.getCustomerAccountAmount;\r\n }\r\n\r\n @computed get shouldPaidByCard(): boolean {\r\n const {\r\n data: { checkout },\r\n config\r\n } = this.props;\r\n if (!checkout.result) {\r\n return false;\r\n }\r\n\r\n const checkoutResult = checkout.result;\r\n\r\n const { paymentTenderType, tokenizedPaymentCard } = checkoutResult;\r\n const isPaidByOtherPaymentSource =\r\n config.paymenTenderType?.toLocaleLowerCase() !== paymentTenderType?.toLocaleLowerCase() && tokenizedPaymentCard;\r\n\r\n return this.amountDue > zeroAmount && !isPaidByOtherPaymentSource;\r\n }\r\n\r\n @computed get isCartContainsItemsForShipping(): boolean {\r\n const pickupDeliveryModeCode = get(this.props, 'context.request.channel.PickupDeliveryModeCode');\r\n const emailDeliveryModeCode = get(this.props, 'context.request.channel.EmailDeliveryModeCode');\r\n const { channelDeliveryOptionConfig, featureState } = this.props.data;\r\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\r\n const retailMultiplePickUpOptionEnabled = featureState?.result?.find(feature => feature.Name === multiplePickupStoreSwitchName)\r\n ?.IsEnabled;\r\n\r\n return retailMultiplePickUpOptionEnabled\r\n ? (get(this.props, 'data.checkout.result.checkoutCart.cart.CartLines') || []).some(\r\n (cartLine: CartLine) =>\r\n cartLine.DeliveryMode !==\r\n channelDeliveryOptionConfig.result?.PickupDeliveryModeCodes?.find(\r\n deliveryMode => deliveryMode === cartLine.DeliveryMode\r\n ) && cartLine.DeliveryMode !== emailDeliveryModeCode\r\n )\r\n : (get(this.props, 'data.checkout.result.checkoutCart.cart.CartLines') || []).some(\r\n (cartLine: CartLine) =>\r\n cartLine.DeliveryMode !== pickupDeliveryModeCode && cartLine.DeliveryMode !== emailDeliveryModeCode\r\n );\r\n }\r\n\r\n @computed get isCartHasSelectedDeliveryMethods(): boolean {\r\n return (get(this.props, 'data.checkout.result.checkoutCart.cart.CartLines') || []).every(\r\n (cartLine: CartLine) => !!cartLine.DeliveryMode\r\n );\r\n }\r\n\r\n @computed get asyncResultStatus(): AsyncResultStatus | undefined {\r\n const isLoading = Object.values(this.props.data).some(data => get(data, 'status') === AsyncResultStatusCode.LOADING);\r\n if (isLoading) {\r\n return AsyncResultStatusCode.LOADING;\r\n }\r\n\r\n const isSuccess = Object.values(this.props.data).every(data => get(data, 'status') === AsyncResultStatusCode.SUCCESS);\r\n if (isSuccess) {\r\n return AsyncResultStatusCode.SUCCESS;\r\n }\r\n\r\n const isFailed = Object.values(this.props.data).some(data => get(data, 'status') === AsyncResultStatusCode.FAILED);\r\n if (isFailed) {\r\n return AsyncResultStatusCode.FAILED;\r\n }\r\n return;\r\n }\r\n\r\n @computed get hasSelectedItem(): boolean {\r\n return !!get(this.props.data, 'checkoutState.result.tokenizedPaymentCard');\r\n }\r\n\r\n @computed get isPaymentVerificationRedirection(): boolean {\r\n const { requestFormData, query } = this.props.context.request;\r\n return !!(requestFormData && query && query.pv === '1');\r\n }\r\n\r\n @computed get requestUrlOrigin(): string {\r\n const origin = get(window, 'location.origin');\r\n const requestUrl =\r\n typeof get(this.props, 'context.request.url.requestUrl') === 'string'\r\n ? new URL(get(this.props, 'context.request.url.requestUrl'))\r\n : get(this.props, 'context.request.url.requestUrl');\r\n return origin || requestUrl.origin;\r\n }\r\n\r\n public state: ICheckoutPaymentInstrumentState = {\r\n isFetchingPaymentConnector: true\r\n };\r\n\r\n private readonly moduleClassName: string = 'ms-checkout-payment-instrument';\r\n\r\n private readonly iframeRef: React.RefObject