{"version":3,"file":"static/js/15.78fdb3a39fcc2d6afa97.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,iHC5OR,MA0BA,EA1BsG5hB,IAAQ,IAAA6hB,EAC1G,MAAM,mBAAEC,EAAkB,QAAEze,EAAO,YAAE3B,EAAW,MAAEqgB,GAAU/hB,EAG5D,IAKIgiB,EALAC,GAAc,EAalB,OAZiE,MAAb,QAAhDJ,EAAA7hB,EAAMnM,QAAQgB,QAAQC,KAAKotB,6BAAqB,IAAAL,OAAA,EAAhDA,EAAkDvrB,UAClD2rB,GAAc,GAMdvgB,GAAeA,EAAY1B,QAE3BgiB,EAA2BtgB,EAAY1B,MAAM0B,YAAYlE,QAAQ,MAAO,KAIxEa,EAAAA,cAACiU,EAAAA,OAAMtU,OAAAiB,OAAA,GAAK6iB,GACPze,EACDhF,EAAAA,cAAA,KAAGC,UAAU,wCAAwC2jB,GAAejiB,EAAM+G,OAAOob,iBAAmBniB,EAAM+G,OAAOqb,uBAAyBpiB,EAAM+G,OAAOqb,uBAAyBJ,GAC/KD,2RCTP1gB,EAA2CjD,IAA6B,IAA5B,cAAEkD,EAAa,MAAEC,GAAOnD,EACtE,OACIC,EAAAA,cAAC8N,EAAAA,KAAInO,OAAAiB,OAAA,GAAKqC,GACLC,GACGA,EAAMjH,KAAKkC,GACA6B,EAAAA,cAAAA,EAAAA,SAAA,KAAG7B,EAAKkF,iBAM7B2gB,EAAsCjW,IAAyC,IAAxC,KAAErE,EAAI,WAAEua,EAAU,QAAEjf,EAAO,MAAE9B,GAAO6K,EAC7E,OAAKkW,EAKDjkB,EAAAA,cAAC8N,EAAAA,KAAInO,OAAAiB,OAAA,GAAK8I,GACL1E,EACA9B,GACGA,EAAMjH,KAAKkC,IACP,MAAM,KAAE+lB,EAAI,IAAE7vB,EAAG,MAAEyC,EAAK,UAAE+M,EAAS,oBAAEsgB,EAAmB,cAAEC,EAAa,WAAEC,EAAU,aAAEC,GAAiBnmB,GAChG,MAAEomB,EAAK,YAAEC,EAAW,MAAEljB,EAAK,QAAEhF,GAAYxF,EAC/C,OACIkJ,EAAAA,cAAC8N,EAAAA,KAAInO,OAAAiB,OAAA,GAAKsjB,EAAI,CAAE7vB,IAAKA,IACjB2L,EAAAA,cAACgD,EAAWrD,OAAAiB,OAAA,GAAKiD,IAChB2gB,GACGxkB,EAAAA,cAAC8N,EAAAA,KAAInO,OAAAiB,OAAA,GAAK2jB,GACLjjB,EACAhF,GAGR6nB,GAAuBC,EACvBC,EACAC,OArBd,MA6BTG,EAA4CzW,IAQ7C,IAR8C,YAC/C0W,EAAW,QACX1f,EAAO,uBACP2f,EAAsB,iBACtBC,EAAgB,UAChBje,EAAS,mBACTke,EAAkB,iBAClBC,GACH9W,EACG,OACIhO,EAAAA,cAAC8N,EAAAA,KAAInO,OAAAiB,OAAA,GAAK8jB,GACL1f,EACA2f,GAA0BC,EAC1Bje,EACD3G,EAAAA,cAACgkB,EAAWrkB,OAAAiB,OAAA,GAAKikB,IACjB7kB,EAAAA,cAACgkB,EAAWrkB,OAAAiB,OAAA,GAAKkkB,MAKvB/e,EAAqDgf,IAWtD,IAAA9W,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,IAXuD,YACxDpJ,EAAW,QACXD,EAAO,MACP9B,EAAK,SACLwB,EAAQ,MACR5N,EAAK,iBACLqO,EAAgB,WAChBC,EAAU,mBACVI,EAAkB,aAClBC,GAEHsf,EADMzW,GAAKC,EAAAA,EAAAA,GAAAwW,EAAAvW,GAGR,MAAM/Y,EAAY6Y,MAAAA,GAAkB,QAAbL,EAALK,EAAOnB,mBAAW,IAAAc,OAAA,EAAlBA,EAAoBxY,UAEhCgZ,EAAeH,MAAAA,GAAkB,QAAbJ,EAALI,EAAOnB,mBAAW,IAAAe,GAAS,QAATA,EAAlBA,EAAoB1Y,eAAO,IAAA0Y,GAAS,QAATA,EAA3BA,EAA6B1X,eAAO,IAAA0X,OAAA,EAApCA,EAAsCQ,OAErDC,EAAWL,MAAAA,GAAkB,QAAbH,EAALG,EAAOnB,mBAAW,IAAAgB,GAAS,QAATA,EAAlBA,EAAoB3Y,eAAO,IAAA2Y,GAAS,QAATA,EAA3BA,EAA6B3X,eAAO,IAAA2X,OAAA,EAApCA,EAAsCQ,SAGjDC,EAAWN,MAAAA,GAAkB,QAAbF,EAALE,EAAOnB,mBAAW,IAAAiB,GAAS,QAATA,EAAlBA,EAAoB5Y,eAAO,IAAA4Y,GAAS,QAATA,EAA3BA,EAA6B5X,eAAO,IAAA4X,GAAS,QAATA,EAApCA,EAAsCtE,eAAO,IAAAsE,OAAA,EAA7CA,EAA+CS,SAC1DH,EACFC,GAJW,CAAC,MAAO,OAIA1P,SAAS0P,IAET,QAAbC,GAAuC,UAAjBH,EADtB,KAGAA,EAAatP,QAAQ,IAAK,KAE7B6lB,EAAiBC,GAAsBjlB,EAAAA,UAAe,GAC7DA,EAAAA,WAAgB,KACZilB,IAAmBnuB,EAAMwK,SAC1B,CAACxK,EAAMwK,QAEV,MAAMwN,EAAiB,CACnBC,KAAM,CACFC,aAAc,CAAC,MACfC,OAAQ,CAAC,QAEbC,GAAI,CACAF,aAAc,CAAC,MACfC,OAAQ,CAAC,QAEbE,KAAM,CACFH,aAAc,CAAC,MAGfC,OAAQ,CAAC,QAEbG,GAAI,CAGAJ,aAAc,GACdC,OAAQ,CACJ,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,SAKNI,EAAyB1P,OAAO2P,yBAAyBC,OAAOC,iBAAiBC,UAAW,SAASrT,IA+C3G,SAASsT,EACLC,EACAC,GAEA,MAAM/N,EAAc8N,EAAiBE,MAAM,GAE3C,QAA4C7b,IAAxChB,SAAS8c,eAAeF,EAAQ1R,KAA6D,OAAxClL,SAAS8c,eAAeF,EAAQ1R,KAIrF0R,EAAQG,kBAAoBlO,EAC5B,GAAmB,6CAAf+N,EAAQ1R,IAAoE,0BAAf0R,EAAQ1R,GAAgC,CACrG,MAAMlJ,EAAQhC,SAAS8c,eAAeF,EAAQ1R,IAC9C,GAAc,OAAVlJ,EAAgB,CAChB,MAEMoM,EA2BtB,SAA2B4O,EAA0BxW,EAAeyW,GAChE,IAAK,IAAIC,EAAI,EAAGA,EAAIF,EAAMpd,QAAQqF,OAAQiY,IAAK,CAC3C,MAAMC,EAASH,EAAMpd,QAAQsd,GAAG1W,MAChC,GAAKyW,GAAuBE,IAAWC,EAAAA,EAAiB5W,KAAayW,GAAuBE,IAAW3W,EACnG,OAAOwW,EAAMpd,QAAQsd,GAAG1W,OA/BE6W,CAAkBrb,EAFX,OAAX0Z,GAAkC,0BAAfkB,EAAQ1R,GAAiC,MAAQyR,EAAiBW,WAE7B,YAAhBzO,GAE1D,QAAsB7N,IAAlBoN,EAA6B,CAC7BpM,EAAMwE,MAAQ4H,EAEd,MAAMwG,EAAQ,IAAI2I,MAAM,SAAU,CAAEC,SAAS,IAC7Cxb,EAAMyb,cAAc7I,SAGzB,CACH,MAAM8I,EAA2B,2BAAfd,EAAQ1R,GAAkCyR,EAAiBW,WAAaX,EAAiBgB,UACrG3b,EAAQhC,SAAS8c,eAAeF,EAAQ1R,IAC9C,QAAclK,IAAVgB,EAAqB,CACrB,QAA+BhB,IAA3Bqb,EACA,OAEJA,EAAuBuB,KAAK5b,EAAO0b,GACnC,MAAMG,EAAU,IAAIN,MAAM,QAAS,CAAEC,SAAS,IAChC,OAAVxb,GACAA,EAAMyb,cAAcI,KAwFxC7Q,EAAAA,WAAgB,MAxKhB,WACI,MAAMmS,EAAmB,CACrB,CAAEpC,gBAAiB,sBAAuB7R,GAAI,wBAC9C,CAAE6R,gBAAiB,WAAY7R,GAAI,wBACnC,CAAE6R,gBAAiB,cAAe7R,GAAI,wBACtC,CAAE6R,gBAAiB,8BAA+B7R,GAAI,wBACtD,CAAE6R,gBAAiB,8BAA+B7R,GAAI,yBACtD,CAAE6R,gBAAiB,qBAAsB7R,GAAI,2BAC7C,CAAE6R,gBAAiB,cAAe7R,GAAI,2BACtC,CAAE6R,gBAAiB,UAAW7R,GAAI,4CAClC,CAAE6R,gBAAiB,8BAA+B7R,GAAI,2BAGpDkU,EAAwBpf,SAAS8c,eAAe,0BAEhDd,EAAe,IAAIO,OAAO8C,OAAOC,KAAKC,OAAOC,aAAaJ,EAAuB,CACnFvC,MAAO,CAAC,WACR4C,sBAAuB,CAAEC,QAAS5D,EAAeJ,IAAWI,EAAeJ,GAAQM,gBAEzD,OAA1BoD,IAGJA,EAAsBlf,aAAa,cAAeuC,EAAUkd,wBAE5DpD,OAAO8C,OAAOC,KAAK1K,MAAMgL,uBAAuBR,GAEhD7C,OAAO8C,OAAOC,KAAK1K,MAAMiL,YAAY7D,EAAc,iBAAiB,KAChE,MAAM8D,EAAQ9D,EAAa+D,WAE3B,QAA+B/e,IAA3Bqb,EACA,OAEJA,EAAuBuB,KAAKwB,EAAuBU,EAAMtY,MACzD,MAAMqW,EAAU,IAAIN,MAAM,SAAU,CAAEC,SAAS,IAC/C4B,EAAsB3B,cAAcI,GACpC,IAAK,MAAMd,KAAmBoC,EAAkB,CAC5C,MAAMa,EAAoBF,EAAMG,mBAC5BD,GAAqBA,EAAkB/a,OAAS,GAEhD+a,EAAkB1Y,SAAQqV,GAAoBD,EAAqBC,EAAkBI,UAkIjGmD,GACgBlgB,SAAS+e,iBAAiB,oDAClCzX,SAAQ6Y,IACZ,MAAMC,EAAWD,EAAwB3Z,MACrCsV,EAAeJ,KAAYI,EAAeJ,GAAQO,OAAOhQ,SAASmU,IAClED,EAAE1B,YAGV,MAAM4B,EAAgBrgB,SAAS8c,eAAe,4CAC/B,SAAXpB,IACA2E,EAAc7Z,MAAQ,OAE1B,MAAMoO,EAAQ,IAAI2I,MAAM,SAAU,CAAEC,SAAS,IAC7C6C,EAAc5C,cAAc7I,KAC7B,IAGH5H,EAAAA,WAAgB,KACZ,MAAM4H,EAAQ,IAAI2I,MAAM,SAAU,CAAEC,SAAS,IAC7C,GAAe,OAAX9B,GAAoB1b,SAASC,cAAc,4CAAmE,CAC9G,MAAMiyB,EAAYlyB,SAASC,cAAc,4CACzCiyB,EAAUhyB,aAAa,gBAAiB,QACvCgyB,EAAUC,WAAiC3rB,MAAQ,MACnD0rB,EAAUC,WAAiC1U,cAAc7I,GACzDsd,EAAUC,WAAiC9kB,SAAWkT,QAAQ,WAEpE,CAACvgB,SAASC,cAAc,8CAG3B+M,EAAAA,WAAgB,KAtGGwT,MACf,MAAMtC,EAAoBle,SAASC,cAAc,0CAC3CwgB,EAAQzgB,SAAS8c,eAAe,yBACtC,GAAI2D,EAAO,CACP,MAAMC,EAAWD,EAAMtC,QAAQ,2BACzBwC,EAAaD,EAASzC,uBAAuB,2BAA2B,GACxE2C,EAAU,WACVC,EAAW,WACjBJ,EAAMvgB,aAAa,gBAAiB,QACpCugB,EAAMvgB,aAAa,OAAQ,OAC3BugB,EAAMvgB,aAAa,YAAa,MACL,IAAvBugB,EAAMja,MAAMvB,QACZiZ,EAAkBhe,aAAa,WAAY,QAE/CugB,EAAMlC,QAAU,KACPkC,EAAMja,MAAMsa,MAAMF,IAAaH,EAAMja,MAAMsa,MAAMD,GAI3CJ,EAAMja,MAAMvB,OAAS,GAC5Byb,EAASlC,UAAUK,IAAI,8BACvB8B,EAAWjC,YAAcjc,EAAUse,iCACnC7C,EAAkBhe,aAAa,WAAY,UAE3CwgB,EAASlC,UAAUC,OAAO,8BAC1BkC,EAAWjC,YAAc,GACzBR,EAAkB8C,gBAAgB,cAVlCN,EAASlC,UAAUK,IAAI,8BACvB8B,EAAWjC,YAAcjc,EAAUse,iCACnC7C,EAAkBhe,aAAa,WAAY,YAqFvDsgB,KACD,CAAU,QAAVnF,EAAErb,gBAAQ,IAAAqb,GAA8D,QAA9DA,EAARA,EAAUyB,eAAe,gCAA6C,IAAAzB,OAAA,EAAtEA,EAAwE7U,QAC7EwG,EAAAA,WAAgB,MA1EhB,WACI,MAAMgR,EAAche,SAASie,uBAAuB,oBAAoB,GAClEC,EAAoBle,SAASC,cAAc,0CAC3Cme,EAASpe,SAAS8c,eAAe,0BACjCuB,EAAYD,GAAqB,OAAXA,EAAmBA,EAAOD,QAAQ,gCAAkDnd,EAC1Gsd,EAAcD,MAAAA,OAAS,EAATA,EAAWJ,uBAAuB,2BAA2B,QAE/Djd,IAAdqd,IACAA,EAAUE,QAAU,KAChBF,MAAAA,GAAAA,EAAWG,UAAUC,OAAO,8BACxBH,IACAA,EAAYI,YAAc,WAIZ1d,IAAtBkd,IACAA,EAAkBS,QAAUC,IAKxB,GAHe,OAAXlD,IAAqC,KAAjB0C,EAAO5X,OAAgB4X,EAAO5X,MAAMvB,OAAS,GAAuC,IAAjC,UAAU4D,KAAKuV,EAAO5X,QAG/E,CACd6X,MAAAA,GAAAA,EAAWG,UAAUK,IAAI,8BACrBP,IACAA,EAAYI,YAAc,mCAE9B,MAAMI,EAAWd,EAAYe,iBAAiB,SAC9C,IAAIC,GAAa,EACjBF,EAASxX,SACT,SAAwB2X,GACE,KAAlBA,EAAQzY,OAAiC,WAAjByY,EAAQzX,OAChCwX,GAAa,MAGjBA,GACAJ,EAAEM,qBAwClBpB,KACD,CAAC9d,SAASie,uBAAuB,oBAAoB,KAGxD,IAAImU,EAAe,EAOnB,OANAplB,EAAAA,WAAgB,OACVolB,EACEA,EAAe,GACfC,SAASC,WAEd,CAACtyB,SAASC,cAAc,wCAEvB+M,EAAAA,cAAC8N,EAAAA,KAAInO,OAAAiB,OAAA,GAAKqE,GACLD,EACA9B,GACGA,EAAMjH,KAAKkC,IACP,MAAM,YAAEsE,EAAW,IAAEpO,EAAG,MAAEoL,EAAK,MAAEkD,EAAK,MAAE3N,GAAUmJ,EAKlD,MAJY,SAAR9J,GAAkBW,IAElBA,EAAM2M,MAAM7D,UAAY,IAGxBkC,EAAAA,cAAC8N,EAAAA,KAAInO,OAAAiB,OAAA,GAAK6B,EAAW,CAAEpO,IAAKA,IACvBoL,EACAkD,EACA3N,MAIhBgwB,GACGhlB,EAAAA,cAAC8N,EAAAA,KAAInO,OAAAiB,OAAA,GAAK9J,EAAM8O,cACZ5F,EAAAA,cAAA,KAAGC,UAAU,mCAAmCxK,EAAU8vB,sBAGjEpgB,GAAoBC,EACpBI,GAAsBC,IAgBnC,EAXmF9D,IAC/E,MAAM,yBAAE6jB,EAAwB,UAAEzY,EAAS,gBAAE0Y,EAAe,uBAAEjY,GAA2B7L,EAEzF,OACI3B,EAAAA,cAACiU,EAAAA,OAAMtU,OAAAiB,OAAA,GAAK4kB,GACPzY,EAAUE,kBAAoBjN,EAAAA,cAACykB,EAAY9kB,OAAAiB,OAAA,GAAK6kB,IAChD1Y,EAAUG,0BAA4BlN,EAAAA,cAAC+F,EAAgBpG,OAAAiB,OAAA,GAAK4M,EAA4BgY,8FCzZrG,MA4DA,EA5DuF7jB,IAAQ,IAAA6hB,EAC3F,MAAM,cACFkC,EAAa,QACb1gB,EAAO,cACP2gB,EAAa,WACbC,EAAU,WACVC,EAAU,aACVC,EAAY,YACZC,EAAW,QAEXC,EAAO,eACPC,GACAtkB,EAEJ,GAAIqkB,EAEA,OADArkB,EAAMnM,QAAQ7D,UAAUmF,MAAM,mDACvB,KAKX,GAAsB,oBAAXyY,OAAwB,CAC/B,MAAM2W,EAA0BlzB,SAASie,uBAAuB,4BAA4B,GAC5FiV,MAAAA,GAAAA,EAAyBC,iBAAiB,SAAS,KAC/C,MAAMC,EAAmBpzB,SAASie,uBAAuB,4BAA4B,GACrFmV,EAAiBD,iBAAiB,SAAS,KACvCC,EAAiBC,UAAY,+BAUzC,MAAMC,EAA+C,QAA9B9C,EAAG7hB,EAAMnM,QAAQgB,QAAQ+vB,aAAK,IAAA/C,OAAA,EAA3BA,EAA6BgD,UAEvD,OAAQZ,IAAeU,EACnBtmB,EAAAA,cAAA,OAAKC,UAAU,gBACV0B,EAAMlM,UAAUgxB,6BAAgCzmB,EAAAA,cAAA,MAAIC,UAAU,uBAAuB0B,EAAMlM,UAAUgxB,6BACrG9kB,EAAMlM,UAAUixB,+BAAkC1mB,EAAAA,cAAA,OAAKC,UAAU,0BAAyBD,EAAAA,cAAA,SAAI2B,EAAMlM,UAAUixB,iCAInH1mB,EAAAA,cAACiU,EAAAA,OAAMtU,OAAAiB,OAAA,GAAK8kB,GACPO,EACAN,EACA3gB,EACA+gB,EACAF,EAEAC,EACAF,wICpDb,MAIA,EAJmF7lB,IAAA,IAAC,YAAEsD,GAAatD,EAAA,OAC/FC,EAAAA,cAAA,KAAGC,UAAU,yCAAyCoD,ICuBpDsjB,EAAoBA,CAACC,EAAwBtmB,KAC/C,IAAKsmB,GAAgC,IAApBA,EAAS3uB,OACtB,OAAO,KAEX,MAAM4uB,EAAuC,GACvCrmB,GAAUC,EAAAA,EAAAA,kBAAiB,QAASH,EAAmB,IAgB7D,OAfAsmB,EAAStsB,SAAQ,CAACwsB,EAAM3kB,KACpB3B,EAAQumB,cAAcC,MAAQF,EAAKG,SACnC,MAAMvmB,GAAaC,EAAAA,EAAAA,wBAAuBL,EAAmBE,GACvD0mB,EAAoC,CACtC9mB,UAAW0mB,EAAK1mB,UAChBH,UAAW,iCACXgnB,SAAUH,EAAKG,SACfE,QAASL,EAAKK,QAAQC,eACtBC,aAAcP,EAAKO,aACnBnnB,KAAM,OACNonB,qBAAsB5mB,GAE1BmmB,EAAcjqB,KAAKsqB,MAGhBL,GAGX,EAtCsE9mB,IAA8D,IAA7D,MAAE2jB,EAAK,iBAAEpjB,EAAgB,aAAEinB,EAAY,eAAEtb,GAAgBlM,EAC5H,GAAqB,IAAjB2jB,EAAMzrB,OACN,OAAO,KAEX,MAAM4uB,EAAgBF,EAAkBjD,EAAOpjB,GAC/C,OACIN,EAAAA,cAAA,OAAKC,UAAU,mCACV4mB,GAAiBA,EAAc5uB,OAAS,EACrC+H,EAAAA,cAACwnB,EAAAA,GAAc,CAAC9D,MAAOmD,EAAeY,UAAW,CAAEF,aAAAA,EAActb,eAAAA,KACjE,4kBCHhB,MAAMyb,UAA4B1nB,EAAAA,cAG9BtO,YAAYiQ,GACRqC,MAAMrC,GAgDH,KAAAgmB,oBAAuB/f,GAA0CvV,KAAKsP,MAAM+G,OAAO1D,QAAQ7E,KAAOyH,EAAMI,OAAOxO,MAE/G,KAAAouB,qBAAwBC,GAAuBjgB,IAC9CvV,KAAKsP,MAAM+G,OAAOgb,OAASrxB,KAAKsP,MAAM+G,OAAOgb,MAAMmE,KACnDx1B,KAAKsP,MAAM+G,OAAOgb,MAAMmE,GAAWZ,SAAWrf,EAAMI,OAAOxO,QAnD/DnH,KAAKiO,kBAAmBwL,EAAAA,EAAAA,oBACpBzZ,KAAKsP,MAAMnM,QAAQgB,QAAQuV,kBAC3B1Z,KAAKsP,MAAMqK,aACX3Z,KAAKsP,MAAMhQ,WAIZkb,SACH,MAAM,OAAEnE,EAAM,UAAEjT,EAAS,KAAE0R,GAAS9U,KAAKsP,OACnC,UAAE1B,EAAS,QAAE+E,EAAO,MAAE0e,GAAUhb,GAChC,+BAAEof,GAAmCryB,EACrCsyB,EAAY5gB,EAAK4gB,UAAUptB,OAE3BqtB,GAAmBD,GAAaA,EAAU9vB,QAAU8vB,EAAU,GAAGE,mBAAsB,IAAIhwB,OAC3FoL,GAAcoE,EAAAA,EAAAA,QAAOqgB,GAAkC,sCAAuCE,GAE9FE,EAASr1B,EAAAA,EAAA,GACRR,KAAKsP,OAAK,IACb1B,UAAAA,EACAynB,oBAAqB,CACjBva,YAAa9a,KAAKsP,MAClB1B,UAAWmN,GAAAA,CAAW,2BAA4B1E,EAAOzI,YAE7D+E,QAASA,GAAWA,EAAQ7E,MACxBH,EAAAA,cAACwnB,EAAAA,GAAa,CACVvnB,UAAU,oCACVkoB,IAAKnjB,EAAQmjB,IACbhoB,KAAM6E,EAAQ7E,KACdsnB,UAAW,CAAEre,OAAQ/W,KAAKs1B,oBAAqB1b,eAAgB5Z,KAAKsP,MAAMnM,QAAQgB,WAG1FktB,MAAOA,GAASA,EAAMzrB,OAAS,GAC3B+H,EAAAA,cAACooB,EAAczoB,OAAAiB,OAAA,GACP,CACA8iB,MAAAA,EACA6D,aAAcl1B,KAAKu1B,qBACnB3b,eAAgB5Z,KAAKsP,MAAMnM,QAAQgB,QACnC8J,iBAAkBjO,KAAKiO,oBAInC+C,YAAarD,EAAAA,cAACqoB,EAAoB,CAAChlB,YAAaA,MAGpD,OAAOhR,KAAKsP,MAAMmL,WAAWob,IAYrC,uGC/EA,MAYA,EAZyEvmB,IACrE,MAAM,oBAAE+lB,EAAmB,QAAE1iB,EAAO,YAAE3B,EAAW,MAAEqgB,GAAU/hB,EAE7D,OACI3B,EAAAA,cAACiU,EAAAA,OAAMtU,OAAAiB,OAAA,GAAK8mB,GACP1iB,EACA3B,EACAqgB,mECTNxvB,eAAeo0B,EAAqBC,EAAgDtzB,GACvF,MAAMuzB,QAAsCC,EAAAA,EAAAA,kBAAiBxzB,GAAKyzB,OAAO5xB,IAErE,MADA7B,EAAItD,UAAUg3B,UAAU7xB,GAClBA,KAGVyxB,EAAiBK,SAAWL,EAAiBK,QAAQC,uBAC/CL,EAAcM,yBAAyB,CAAEC,sBAAuBC,EAAAA,eAAeC,gpBCDlF,MAAMx3B,EAeTC,YACIC,EACAC,EACAC,EACAC,EACAC,GAnBY,KAAAC,sBAAkC,CAAC,2BAA4B,OAAQ,mBAAoB,SA4BpG,KAAAC,kBAAoB,CACvBC,EACAC,EACAC,KAEKC,KAAKC,oBACNC,UAAUC,KAAKC,WAAW,6BAA8B,CACpDC,SAAUA,KAAK,IAAAC,EACX,MAAMC,EAAOC,EAAAA,EAAA,GAAQR,KAAKT,oBAAkB,IAAEE,YAAaO,KAAKP,cAChEO,KAAKC,mBAAqB,IAAIC,UAAUC,KAAKM,mBAAmBF,GAChEP,KAAKC,mBAAmBS,kBAAkBb,EAASC,EAAaC,GACjC,QAA/BO,EAAAK,SAASC,cAAcf,UAAQ,IAAAS,GAA/BA,EAAiCO,aAAa,OAAQ,YACtDC,YAAW,KAAK,IAAAC,EACmB,QAA/BA,EAAAJ,SAASC,cAAcf,UAAQ,IAAAkB,GAA/BA,EAAiCF,aAAa,OAAQ,UACvD,IAEPG,cAAeA,KACPhB,KAAKV,WACLU,KAAKV,UAAU2B,MAAM,uCAG7BC,YAAalB,KAAKmB,kBAKvB,KAAAC,gCAAmC3B,IAClCO,KAAKC,qBACLD,KAAKT,mBAAmBE,YAAcA,EACtCO,KAAKC,mBAAmBoB,WAAWrB,KAAKT,sBAIzC,KAAA+B,mBAAqB,KAAW,IAAAC,EAAAC,EACZ,QAAvBD,EAAAvB,KAAKC,0BAAkB,IAAAsB,GAAvBA,EAAyBE,oBACF,QAAvBD,EAAAxB,KAAKC,0BAAkB,IAAAuB,GAAvBA,EAAyBE,UACzB1B,KAAKC,wBAAqB0B,GAIvB,KAAAC,YAAcC,MAAAA,UACXC,EAA0BC,WAAW,CACvCC,IAAKhC,KAAKmB,eACVc,KAAMjC,KAAKN,kBACXwC,OAAQlC,KAAKP,eAnDjBO,KAAKV,UAAYA,EACjBU,KAAKT,mBAAqBA,EAC1BS,KAAKmB,eAAiB3B,EACtBQ,KAAKP,YAAcA,EACnBO,KAAKN,kBAAoBA,oFCZ1B,MAAMwD,EAOT7D,YAAY8D,EAAuBC,EAA6B9D,GAMzD,KAAA+D,0BAA4B,CAACjB,EAAyBkB,EAAqCpB,KAC9F,MAAMqB,EAAgBrB,GAAU,KAC1BsB,EAAuBF,EAAeG,MAAKC,IAAkBA,EAAcC,SAAW,MAAQJ,IACpG,OAAQC,GAAwBA,EAAqBI,iBAAoBxB,GAGtE,KAAAyB,qBAAwBT,IACpB,CACHU,WAAYV,EAAUW,yBACtBC,aAAcZ,EAAUa,6BAIzB,KAAAC,oBAAsB,IAClBlE,KAAKmD,QAAQgB,QAAQC,KAAKC,gBAG9B,KAAAC,kBAAoBzC,MAAAA,IACvB,IAAI0C,EAAgC,GACpC,GAAIvE,KAAKmD,SAAWnD,KAAKmD,QAAQqB,cAC7B,IACI,MAAM7B,EAAQ,IAAIR,EAAAA,GAAuBC,EAAiBpC,KAAKmD,QAAQgB,QAAQ9B,aAC/EkC,QAAiB7B,EAAAA,EAAAA,IAAuBC,EAAO3C,KAAKmD,QAAQqB,eAC9D,MAAOC,GACDzE,KAAKV,YACLU,KAAKV,UAAUmF,MAAM,qBAAqBA,KAC1CzE,KAAKV,UAAU2B,MAAM,kCAIjC,OAAOyD,QAAQC,QAAQJ,IAIpB,KAAAK,QAAWC,IACVA,IAAWA,EAAQC,2BAA6BD,EAAQoB,QAASpB,EAAQE,KAO1E,KAAAC,mBAAqBnD,MAAAA,UAClB7B,KAAK62B,oCAAoChyB,GACxC7E,KAAKiF,sBAAsBC,EAAAA,WAAYL,IAG3C,KAAAM,sBAAwBtD,MAAAA,UACrB7B,KAAK62B,oCAAoChyB,GACxC7E,KAAKiF,sBAAsBG,EAAAA,cAAeP,IAG9C,KAAAQ,6BAA+BxD,MAAAA,GAC3B7B,KAAKiF,sBAAsBK,EAAAA,qBAAsBT,GAG3C,KAAAI,sBAAwBpD,MACrC0D,EACAV,KAEAA,EAAQW,iBAAmBX,EAAQW,kBAAoB,EAEvD,MAAM7C,EAAQ,IAAI8C,EAAAA,uBAAuBZ,GACzC,OAAO7E,KAAK0F,kBAAkBH,EAAe5C,EAAOkC,IAGvC,KAAAa,kBAAoB7D,MACjC0D,EACA5C,EACAkC,KAEA,IAAIN,EAA6B,GAEjC,GAAIvE,KAAKmD,SAAWnD,KAAKmD,QAAQqB,cAC7B,IACI,MAAMmB,QAAkBJ,EAAc5C,EAAO3C,KAAKmD,QAAQqB,eACtDmB,EAAUC,OAAS,EACnBrB,EAASM,QAAUA,EAAQuB,SAAWvB,EAAUc,EAAUA,EAAUC,OAAS,GAE7ErB,EAASM,QAAUA,EAEvBN,EAAS8B,kBAAoBV,EAC/B,MAAOlB,GACDzE,KAAKV,YACLU,KAAKV,UAAUmF,MAAM,qBAAqBA,KAC1CzE,KAAKV,UAAU2B,MAAM,kCAEzBsD,EAAWvE,KAAK6D,qBAAqB7D,KAAKoD,WAGlD,OAAOsB,QAAQC,QAAQJ,IAQV,KAAAsyB,oCAAsCh1B,MAAAA,IACnD,IAAIiF,EAAoC,GACxC,IACI,MAAMnE,EAAiC,IAAIm0B,EAAAA,wBAAwB92B,KAAKmD,QAAQgB,QAAQ9B,aACxFyE,QAAwBiwB,EAAAA,EAAAA,0BAAyBp0B,EAAO3C,KAAKmD,QAAQqB,eACvE,MAAOC,GAELzE,KAAKV,UAAUmF,MAAM,qBAAqBA,KAC1CzE,KAAKV,UAAU2B,MAAM,kCAEzB,GAAI+1B,EAAAA,gBAAgBC,YAAYnwB,GAAkB,CAC9C,MAAMgD,EAA6ChD,EAAgBrD,MAC/DyzB,GAAWA,EAAQxwB,cAAgB7B,EAAQW,mBAE3CsE,IACAjF,EAAQsyB,8BAAgCrtB,EAAe1D,YAtH/DpG,KAAKmD,QAAUA,EACfnD,KAAKoD,UAAYA,EACjBpD,KAAKV,UAAYA,iCCjClB,IAAKgH,EAMAC,EAKAC,sCAXZ,SAAYF,GACRA,EAAA,cACAA,EAAA,oBACAA,EAAA,oBAHJ,CAAYA,IAAAA,EAAsB,KAMlC,SAAYC,GACRA,EAAA,oBACAA,EAAA,gBAFJ,CAAYA,IAAAA,EAAyB,KAKrC,SAAYC,GACRA,EAAAA,EAAA,kBACAA,EAAAA,EAAA,oBACAA,EAAAA,EAAA,4BACAA,EAAAA,EAAA,0CACAA,EAAAA,EAAA,qBACAA,EAAAA,EAAA,eACAA,EAAAA,EAAA,mBACAA,EAAAA,EAAA,iBACAA,EAAAA,EAAA,uDACAA,EAAAA,EAAA,mBACAA,EAAAA,EAAA,+BACAA,EAAAA,EAAA,+BACAA,EAAAA,EAAA,2CACAA,EAAAA,EAAA,sBACAA,EAAAA,EAAA,wBACAA,EAAAA,EAAA,sBACAA,EAAAA,EAAA,4CAjBJ,CAAYA,IAAAA,EAAe,sGCIpB,MAAMG,EAOTtH,YAAYuH,EAAyCC,EAAkCC,GAyChF,KAAAC,gCAAkC,CACrCC,EACAC,KAEA,MAAMC,EAAmB,CACrBlF,IAAK,GACLmF,MAAOH,GAELI,EAAsC,GAO5C,OALAA,EAAaZ,EAAAA,GAAgBA,EAAAA,GAAgB1B,2BAA6B9E,KAAKqH,mBAC/ED,EAAaZ,EAAAA,GAAgBA,EAAAA,GAAgBP,QAAUjG,KAAKsH,eAAeL,GAC3EG,EAAaZ,EAAAA,GAAgBA,EAAAA,GAAgBP,QAAQsB,QAAQL,GAC7DE,EAAaZ,EAAAA,GAAgBA,EAAAA,GAAgBhB,mBAAqBxF,KAAKwH,uBAEhEJ,GAGJ,KAAAK,0BAA6BrF,GACNpC,KAAK0H,sBAAsBtF,GAE3BuB,QAGvB,KAAAgE,sBAAwB,CAC3B9C,EACA+C,EACAxF,EACAyF,KAEA,IACIC,EADAC,GAAmB,EAavB,OAXsB/H,KAAKgI,iBAAiBnD,EAAQC,0BAA4B1C,GAElE6F,SAAQC,MACbL,GAAiBA,GAAgBK,EAAkBC,OAASN,KAC7DC,EAAgB9H,KAAKoI,iBAAiBF,EAAmBN,EAAiB/C,QACpDlD,IAAlBmG,IACAC,EAAUD,OAKfC,GAGJ,KAAAM,qBAAuB,CAACC,EAA0CrB,KACrE,MAAMpC,EAAmB,GAUzB,QAPkClD,IAA9B2G,EAAOzD,QAAQ0D,WACf1D,EAAQsB,QAAUmC,EAAOzD,QAAQ0D,WAEjC1D,EAAQsB,QAAU,GAIlBc,EAAmB,CACnB,MAAMuB,EAAgBvB,EAAkBxD,MAAKgF,GAASA,EAAMC,YAAcJ,EAAOzD,QAAQ8D,gBACpFH,GAID3D,EAAQoB,MAAQuC,EAAcI,QAC9B/D,EAAQ6D,UAAYF,EAAcE,YAJlC7D,EAAQoB,MAAQ,GAChBpB,EAAQ6D,UAAYJ,EAAOzD,QAAQ8D,eAgC3C,YAxBmChH,IAA/B2G,EAAOzD,QAAQgE,YACfhE,EAAQqB,OAASoC,EAAOzD,QAAQgE,YAEhChE,EAAQqB,OAAS,SAIWvE,IAA5B2G,EAAOzD,QAAQiE,SACfjE,EAAQE,KAAOuD,EAAOzD,QAAQiE,SAE9BjE,EAAQE,KAAO,QAIapD,IAA5B2G,EAAOzD,QAAQkE,UACflE,EAAQmE,aAAeV,EAAOzD,QAAQkE,SACtClE,EAAQoE,WAAaX,EAAOzD,QAAQkE,UAEpClE,EAAQmE,aAAe,GAI3BnE,EAAQqE,YAAcZ,EAAOzD,QAAQsE,iBAE9BtE,GAcM,KAAAuE,eAAiB,CAACvE,EAAkBgD,EAAsBwB,KACvE,GAAIA,EAAeC,OAASD,EAAeC,MAAM1D,OAAS,EAAG,CAEzD,OADc,IAAI2D,OAAOF,EAAeC,OAC3BE,MAAMC,EAAAA,EAAAA,IAAI5E,EAASgD,IAA4B,IAEhE,OAAO,GAxJP7H,KAAK4G,mBAAqBA,EAC1B5G,KAAK6G,gBAAkBA,EACvB7G,KAAK8G,gBAAkBA,EAGpBkB,iBAAiB5F,GACpB,MAAMsH,EAAoB1J,KAAK0H,sBAAsBtF,GACrD,OAAIsH,EACO1J,KAAK2J,yBAAyBD,GAElC,GAGJrC,mBACH,OAAQrH,KAAK4G,oBAAsB,IAAIgD,KAAIlG,IAChC,CACH1B,IAAK0B,EAAcE,gBACnBuD,MAAOzD,EAAcmG,cAK1BvC,eAAeL,GAClB,OAAQA,GAAqB,IAAI2C,KAAInB,IAC1B,CACHzG,IAAKyG,EAAMG,QACXzB,MAAOsB,EAAMC,cAKlBlB,uBACH,OAAQxH,KAAK8G,iBAAmB,IAAI8C,KAAIE,IAC7B,CACH9H,IAAK8H,EAAepD,YACpBS,MAAO2C,EAAestB,gBAqG1BhvB,iBAAiBF,EAAiCN,EAA0B/C,IAChFkF,EAAAA,EAAAA,IAAInC,EAAiB,CAAE,CAACM,EAAkBC,MAAO,OACjD,IAAK,MAAMkB,KAAkBnB,EAAkB8B,iBAAmB,GAC9D,IAAKhK,KAAKoJ,eAAevE,EAASqD,EAAkBC,KAAMkB,GAEtD,OADAU,EAAAA,EAAAA,IAAInC,EAAiB,CAAE,CAACM,EAAkBC,MAAOkB,EAAeY,WACzD,EAcXvC,sBAAsBtF,GAC1B,OAAQpC,KAAK4G,oBAAsB,IAAInD,MAAKC,IAChCA,EAAcE,iBAAmB,IAAIsG,gBAAkB9H,EAAgB8H,gBAI/EP,yBAAyBD,GAC7B,MAAMS,EAAqC,GAE3C,GAAIT,GAAqBA,EAAkBU,mBAAoB,CAC3D,MAAMC,EAAkBrK,KAAKsK,4BAA4B9D,EAAAA,GAAgBhB,kBAAkB,GACvF6E,GACAF,EAAmBI,KAAKF,GAG5B,MAAMG,EAAkBxK,KAAKsK,4BAA4B9D,EAAAA,GAAgBT,MAAM,GAC3EyE,GACAL,EAAmBI,KAAKC,GAG5Bd,EAAkBU,mBAAmBnC,SAAQwC,IACzC,GAAIA,EAAWC,0BAA2B,CACtC,MAAMC,EAAc3K,KAAK6G,gBAAgB+D,cAAcH,EAAWC,2BAC9DC,IACAA,EAAYE,UAAYJ,EAAWK,UAAW,EAC9CX,EAAmBI,KAAKI,QAKpC,MAAMI,EAAmB/K,KAAKsK,4BAA4B9D,EAAAA,GAAgBR,OAAO,GAC7E+E,GACAZ,EAAmBI,KAAKQ,GAG5B,MAAMC,EAAuBhL,KAAKsK,4BAA4B9D,EAAAA,GAAgByE,WAAW,GACrFD,GACAb,EAAmBI,KAAKS,GAIhC,OAAOb,EAGHG,4BAA4BY,EAAuBL,GACvD,MAAMF,EAAc3K,KAAK6G,gBAAgB+D,cAAcM,GAIvD,OAHIP,IACAA,EAAYE,UAAYA,GAErBF,8FCrNR,MAAMQ,EAeT9L,YAAY+D,EAA6BgI,EAA8BC,GAdtD,KAAAC,SAA2B,GAI3B,KAAAC,mBAA6B,MAE7B,KAAAC,gBAA0B,UAE1B,KAAAC,UAAoB,GAOjCzL,KAAKoD,UAAYA,GAAa,GAC9BpD,KAAK0L,cAAgBN,GAAY,GACjCpL,KAAK2L,oBACYhK,IAAb0J,EACMA,EACA,CACI7E,EAAAA,GAAgBhB,iBAChBgB,EAAAA,GAAgBT,KAChBS,EAAAA,GAAgBL,QAChBK,EAAAA,GAAgBzB,KAChByB,EAAAA,GAAgBP,MAChBO,EAAAA,GAAgB1B,yBAChB0B,EAAAA,GAAgBN,QAE9BlG,KAAK4L,QAGFhB,cAAciB,GACjB,OAAO7L,KAAKsL,SAAS7H,MAAKqI,GACfA,EAAKZ,OAASW,IAIrBD,QACJ5L,KAAK+L,SAASvF,EAAAA,GAAgBT,KAAMO,EAAAA,GAAuB0F,OAC3DhM,KAAK+L,SAASvF,EAAAA,GAAgBR,MAAOM,EAAAA,GAAuB0F,MAAOqrB,EAAAA,WAAWC,cAC9Et3B,KAAK+L,SAASvF,EAAAA,GAAgBL,QAASG,EAAAA,GAAuB0F,OAC9DhM,KAAK+L,SAASvF,EAAAA,GAAgBzB,KAAMuB,EAAAA,GAAuB0F,OAC3DhM,KAAK+L,SAASvF,EAAAA,GAAgByF,OAAQ3F,EAAAA,GAAuB0F,OAC7DhM,KAAK+L,SAASvF,EAAAA,GAAgBP,MAAOK,EAAAA,GAAuB4F,UAC5DlM,KAAK+L,SAASvF,EAAAA,GAAgB1B,yBAA0BwB,EAAAA,GAAuB4F,UAC/ElM,KAAK+L,SAASvF,EAAAA,GAAgBN,OAAQI,EAAAA,GAAuB0F,OAC7DhM,KAAK+L,SAASvF,EAAAA,GAAgBwC,aAAc1C,EAAAA,GAAuB0F,OACnEhM,KAAK+L,SAASvF,EAAAA,GAAgB4F,aAAc9F,EAAAA,GAAuB0F,OACnEhM,KAAK+L,SAASvF,EAAAA,GAAgB6F,mBAAoB/F,EAAAA,GAAuB0F,OACzEhM,KAAK+L,SAASvF,EAAAA,GAAgB8F,QAAShG,EAAAA,GAAuB0F,OAC9DhM,KAAK+L,SAASvF,EAAAA,GAAgB+F,SAAUjG,EAAAA,GAAuB0F,OAC/DhM,KAAK+L,SAASvF,EAAAA,GAAgBgG,QAASlG,EAAAA,GAAuB0F,OAC9DhM,KAAK+L,SAASvF,EAAAA,GAAgBiG,mBAAoBnG,EAAAA,GAAuB0F,OACzEhM,KAAK+L,SAASvF,EAAAA,GAAgBhB,iBAAkBc,EAAAA,GAAuB4F,UACvElM,KAAK+L,SAASvF,EAAAA,GAAgByE,UAAW3E,EAAAA,GAAuBoG,UAG5DX,SAASb,EAAuByB,EAAqCyI,GACzE,GAAIpV,KAAK0L,cAAckB,SAAS1B,GAC5B,OAGJ,MAAM2B,EAAUrG,EAAAA,GAAgB0E,GAAM4B,QAAQ,IAAK,IAG7C9C,EAAkBhK,KAAK+M,iBAAiB7B,EAAM2B,EAASuI,GACvDpI,EAAahD,EAAgByM,MAAKxJ,GAAQA,EAAK/B,OAAS3E,EAAAA,GAA0B2G,WAGlFC,EACFnN,KAAKoD,UAAU,GAAGpD,KAAKwL,kBAAkBqB,mBAA2B7M,KAAKoD,UAAU,GAAGpD,KAAKwL,kBAAkBqB,UAC3Gf,EAAqB,CACvBZ,KAAAA,EACAyB,YAAAA,EACAxE,KAAM3B,EAAAA,GAAgB0E,GACtBkC,MAAOJ,EAAahN,KAAKoD,UAAU,GAAGpD,KAAKwL,kBAAkBqB,UAAkBM,EAC/E1B,UAAWzL,KAAKyL,UAChBzB,gBAAAA,EACAa,WAAW,GAGf7K,KAAKsL,SAASf,KAAKuB,GAGfiB,iBAAiB7B,EAAuB/C,EAAciN,GAC1D,MAAMpL,EAA4C,GAElD,IAAK,MAAMqD,KAAYC,OAAOC,KAAKhH,EAAAA,IAA4B,CAC3D,MAAMvE,EAAM,GAAGhC,KAAKwL,kBAAkBrD,IAAOkF,IACvCpD,EAAkBjK,KAAKoD,UAAU,GAAGpB,iBAC1C,OAAQqL,GACJ,KAAK9G,EAAAA,GAA0B2G,SACvBlN,KAAK2L,eAAelI,MAAM+J,GAA8BA,IAAatC,KACrElB,EAAgBO,KAAKvK,KAAKyN,gBAAgBJ,EAAUrN,KAAKuL,mBAAoBtB,IAEjF,MAEJ,KAAK1D,EAAAA,GAA0BgxB,OAC3BvtB,EAAgBO,KAAKvK,KAAKyN,gBAAgBJ,EAAU+H,EAASnL,KAMzE,OAAOD,EAGHyD,gBAAgBvC,EAAiC5B,EAAeW,GACpE,MAAO,CACHiB,KAAAA,EACA5B,MAAAA,EACAW,QAAAA,kCC5HL,IAAKxD,EAOAC,2BAPZ,SAAYD,GACRA,EAAA,UACAA,EAAA,YACAA,EAAA,gBACAA,EAAA,YAJJ,CAAYA,IAAAA,EAAgB,KAO5B,SAAYC,GACRA,EAAA,oBACAA,EAAA,kBACAA,EAAA,kBACAA,EAAA,kBAJJ,CAAYA,IAAAA,EAAW,uICUhB,MA+BP,EA/B4E4I,IACxE,MACIzD,GAAI2rB,EAAM,KACVrvB,EAAI,UACJyF,EAAS,KACT1C,EAAI,UACJsD,EAAS,qBACTC,EAAoB,iBACpBR,EACAS,UAAW+oB,EAAmB,SAC9B9oB,GACAW,EAEEnB,GAAUC,EAAAA,EAAAA,kBAAiB,QAASH,EAAmB9F,GACvDkG,GAAaC,EAAAA,EAAAA,wBAAuBL,EAAmBE,GAC7D,OACIR,EAAAA,cAAA,QAAAL,OAAAiB,OAAA,CACIpG,KAAMA,EACN0D,GAAI2rB,EACJ5pB,UAAW,GAAGA,YAAoBA,YAAoB1C,IACtDA,KAAK,WACLwD,UAAW+oB,EAAmB,eAChBjpB,EACdG,SAAUA,EACVC,QAASJ,GACJC,GAAwB,GACzBJ,2DC4BhB,MAAMc,EAAwBnF,IACJA,GAAmB,IAAIvG,MAAK4F,GACvCA,EAAe6B,OAAS3E,EAAAA,GAA0B2G,WAGvC,CAAE,iBAAiB,GAAS,GAGhDkC,EAAiBA,CAACC,EAA0BC,KAC9C,MAAM,cACFC,EAAa,YACbC,EAAW,oBACXC,EAAmB,uBACnBC,EAAsB,mBACtBC,EAAkB,gBAClB/H,EAAkB,GAAE,cACpBgI,EAAa,iBACbC,EAAgB,gBAChB6nB,GACApoB,EAEJ,OAAOC,EAAc3F,KAAI,CAAC1B,EAAmB4H,KACzC,MAAMC,EAAY,GAAGP,EAAYtF,wBAAwBhC,EAAkBC,KAAK+B,gBAC1ElG,GAAeyF,EAAAA,EAAAA,IAAI7B,EAAiBM,EAAkBC,MACtDyF,EAAYoC,GAAAA,CAAU,yBAA0B,0BAA0B9H,EAAkBC,KAAK+B,gBAAiB,CACpH,iCAAkChC,EAAkB2C,UACpD,6BAA8B7G,IAElC,IAAIrB,EAEJ,GAAIuF,EAAkByE,cAAgBrG,EAAAA,GAAuB0F,MACzDrJ,EACIgL,EAAAA,cAACsC,EAAAA,EAAqB3C,OAAAiB,OAAA,GACd,CACA1C,GAAIkE,EACJ5H,KAAMD,EAAkBC,KACxByF,UAAW,mBACX1C,KAAM,OACNwD,UAAWgpB,MAAAA,EAAAA,EAA6B,IAAV5nB,EAC9B3I,MAAOkI,EAAgBnH,EAAkBC,MACzCsD,UAAWvD,EAAkBuD,UAC7BkD,SAAUiB,EACVnB,qBAAsBU,EAAqBjH,EAAkB8B,yBAItE,GAAI9B,EAAkByE,cAAgBrG,EAAAA,GAAuBoG,SAChE/J,EACIgL,EAAAA,cAACuC,EAAuB5C,OAAAiB,OAAA,GAChB,CACA1C,GAAIkE,EACJ5H,KAAMD,EAAkBC,KACxByF,UAAW,mBACX1C,KAAM,WACNwD,UAAqB,IAAVoB,EACXtB,UAAWa,EAAgBnH,EAAkBC,MAC7CwG,SAAUiB,EACVnB,qBAAsBU,EAAqBjH,EAAkB8B,wBAItE,CACH,MAAM6E,EAAcY,EAAoBvH,EAAkBC,MAC1D,IAAI4G,EAAgBM,EAAgBnH,EAAkBC,MAElDD,EAAkBgD,OAAS1E,EAAAA,GAAgB1B,2BAC3CiK,EAAgBA,GAAiBW,GAGjCxH,EAAkBgD,OAAS1E,EAAAA,GAAgBhB,mBAC3CuJ,EAAgBA,GAAiBY,GAGrChN,EACIgL,EAAAA,cAACwC,EAAAA,EAAuB7C,OAAAiB,OAAA,GAChB,CACA1C,GAAIkE,EACJ5H,KAAMD,EAAkBC,KACxByF,UAAW,mBACXzG,MAAO4H,EACPF,YAAAA,EACAF,SAAUkB,EACVpB,qBAAsBU,EAAqBjH,EAAkB8B,oBAM7E,MAAO,CACHhI,IAAKkG,EAAkBC,KACvBiI,YAAa,CAAExC,UAAAA,EAAW/B,GAAI,GAAGkE,eACjC3C,MAAOO,EAAAA,cAAC0C,EAAAA,EAAqB/C,OAAAiB,OAAA,GAAK,CAAE1C,GAAIkE,EAAWjC,KAAM5F,EAAkBkF,SAC3EkD,MAAO3C,EAAAA,cAAC4C,EAAAA,EAAqBjD,OAAAiB,OAAA,GAAK,CAAEtE,QAASjG,KAC7CrB,MAAAA,OAKC+Q,EAAoBpE,IAC7B,MAAM,mBACF6C,EAAkB,kBAClBC,EAAiB,gBACjB/C,EAAkB,GAAE,UACpBjM,EAAS,SACTiP,EAAQ,SACRC,EAAQ,OACRC,EAAM,uBACNC,EAAsB,WACtBC,EAAU,sBACVC,EAAqB,iBACrBzE,GACAqB,EACEqD,EAAUtD,EAAgBjJ,SAAW+L,EAAqBC,EAEhE,MAAO,CACHQ,YAAa,CAAEhF,UAAW,oBAC1B+E,QAASA,GAAWhF,EAAAA,cAACkF,EAAAA,QAAOvF,OAAAiB,OAAA,CAACX,UAAU,6BAAgC+E,IACvE9B,MAAOzB,EAAeC,EAAiBC,GACvCwD,kBAAmBN,EACnBO,WAAYR,GACR5E,EAAAA,cAACqF,EAAAA,EAAsB1F,OAAAiB,OAAA,GACf,CACAX,UAAWoC,GAAAA,CAAU,wCAAyC,CAAE,oCAAqCyC,IACrG3E,KAAM1K,EAAU6P,sBAChBlF,UAAW3K,EAAU8P,2BACrBlF,SAAUyE,EACVvE,QAASqE,EACTtE,iBAAAA,KAIZkF,oBAAqBX,EACrBY,aAAcd,GACV3E,EAAAA,cAACqF,EAAAA,EAAsB1F,OAAAiB,OAAA,GACf,CACAX,UAAW,0CACXE,KAAM1K,EAAUiQ,wBAChBtF,UAAW3K,EAAUkQ,6BACrBpF,QAASoE,EACTrE,iBAAAA,KAIZoE,SAAUA,IAAY,EACtB5N,MAAO,CACH8O,aAAc,CAAE3F,UAAW,2BAC3BqB,MAAOyD,GAAyBA,EAAsB5O,YAClD6J,EAAAA,cAAC6F,EAAAA,EAA0BlG,OAAAiB,OAAA,GAAK,CAAEU,MAAOyD,EAAsB5O,YAAc,MAEjFmG,QAASyI,GAAyBA,EAAsB1O,cACpD2J,EAAAA,cAAC8F,EAAAA,EAA4BnG,OAAAiB,OAAA,GAAK,CAAEtE,QAASyI,EAAsB1O,cAAgB,mECrN5F,MASP,EATsEsL,IAClE,MAAMrF,EAAUqF,EAAMrF,QACtB,OACI0D,EAAAA,cAAA,QAAMC,UAAU,0BAA0BC,KAAK,QAAO,YAAW,aAC5D5D,GAAW0D,EAAAA,cAAAA,EAAAA,SAAA,KAAG1D,gFCGpB,MAWP,EAXyEqF,IACrE,MAAM,UAAE1B,EAAS,KAAEE,EAAI,UAAEC,EAAWC,SAAU2pB,EAAU,iBAAE1pB,EAAgB,QAAEC,EAAO,KAAEL,GAASyB,EACxFnB,GAAUC,EAAAA,EAAAA,kBAAiB,QAASH,EAAmBH,GACvDO,GAAaC,EAAAA,EAAAA,wBAAuBL,EAAmBE,GAC7D,OACIR,EAAAA,cAAA,SAAAL,OAAAiB,OAAA,CAAQX,UAAWA,EAAS,aAAcG,EAAWC,SAAU2pB,EAAY9pB,KAAMA,EAAMK,QAASA,GAAaG,GACxGP,+ECRN,MA2BP,EA3BiFwB,IAC7E,MAAM,UAAEzE,EAAS,YAAE2F,EAAW,UAAEC,EAAS,KAAEtI,EAAI,MAAEhB,GAAUmI,EAErD1B,EAAY,qDAAqDzF,EAAK+B,gBACtEtF,IAAYuC,GAASA,EAAMvB,OAAS,GACpC8K,EAAYF,EACZ,oEAAoEC,IACpET,GAAAA,CAAUpC,EAAW,CAAE,iCAAkChJ,EAAS,mCAAoCiG,IAC5G,OACI8C,EAAAA,cAAA,QAAMC,UAAWoC,GAAAA,CAAUU,EAAW,CAAE,sCAAuC9L,KAC1E4L,GACG7C,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAAA,QAAMC,UAAW,GAAGA,WAAoB6C,GACxC9C,EAAAA,cAAA,QACIC,UAAWoC,GAAAA,CAAUpC,EAAW,CAC5B,iCAAkChJ,EAClC,mCAAoCiG,IACtC,oBAKb1D,qEC1Bb,MAqCA,EAjB4EmI,IACxE,MAAQzD,GAAI2rB,EAAM,KAAErvB,EAAI,UAAEyF,EAAS,MAAEzG,EAAK,qBAAEsH,EAAoB,YAAEI,EAAW,SAAEF,GAAaW,EAE5F,OACI3B,EAAAA,cAAA,SAAAL,OAAAiB,OAAA,CACI1C,GAAI2rB,EACJ5pB,UAAW,GAAGA,cACdzF,KAAMA,EACNhB,MAAOA,EACPwH,SAAUA,GACLF,GAAwB,IAE5BI,GAAeA,EAAYjF,KAAIkC,GAhCpBgD,EAAC9M,EAAuBmF,EAAgB4H,KAC5D,IAAIC,EAOJ,OALIA,EADe,iBAARhN,EACMA,IAAQ+M,EAEiB,iBAAlBA,IAA+B/M,GAAO,IAAIkI,iBAAmB6E,GAAiB,IAAI7E,cAItGyD,EAAAA,cAAA,UAAQ3L,IAAKA,EAAKmF,MAAOnF,EAAG,gBAAiBgN,GACxC7H,IAsBuC2H,CAAgBhD,EAAK9J,IAAK8J,EAAK3E,MAAOA,iECzBnF,MAAMywB,EAA0ClqB,IAAA,IAAC,MAAEuB,EAAK,QAAEhF,EAAO,UAAE2D,EAAY,kCAAkCF,EAAA,OACpHC,EAAAA,cAAA,OAAKC,UAAW,GAAGA,WAAoBC,KAAK,QAAO,YAAW,aAC1DF,EAAAA,cAAA,KAAGC,UAAW,GAAGA,kBAA2BqB,GAC5CtB,EAAAA,cAAA,KAAGC,UAAW,GAAGA,oBAA6B3D,+DCX/C,MAMP,EANoFqF,IAChF,MAAM,QAAErF,GAAYqF,EAEpB,OAAO3B,EAAAA,cAAA,KAAGC,UAAU,mCAAmC3D,8DCHpD,MAMP,EANgFqF,IAC5E,MAAM,MAAEL,GAAUK,EAElB,OAAO3B,EAAAA,cAAA,KAAGC,UAAU,iCAAiCqB,+ECOlD,MAgCP,EAhCsEK,IAClE,MACIzD,GAAI2rB,EAAM,KACVrvB,EAAI,UACJyF,EAAS,KACT1C,EAAI,MACJ/D,EAAK,UACLsE,EAAS,qBACTgD,EACAC,UAAWmpB,EAAkB,iBAC7B5pB,EAAgB,SAChBU,GACAW,EAEEnB,GAAUC,EAAAA,EAAAA,kBAAiB,QAASH,EAAmB9F,GACvDkG,GAAaC,EAAAA,EAAAA,wBAAuBL,EAAmBE,GAC7D,OACIR,EAAAA,cAAA,QAAAL,OAAAiB,OAAA,CACIpG,KAAMA,EACN0D,GAAI2rB,EACJ5pB,UAAW,GAAGA,YAAoBA,YAAoB1C,IACtDA,KAAMA,EACNwD,UAAWmpB,EACX1wB,MAAOA,EACPsE,UAAWA,GACNgD,GAAwB,GACzBJ,EAAU,CACdM,SAAUA,gECpCf,MAUP,EAVsEW,IAClE,MAAQzD,GAAI2rB,EAAM,KAAE1pB,GAASwB,EAE7B,OACI3B,EAAAA,cAAA,SAAOC,UAAU,0BAA0BsB,QAASsoB,GAC/C1pB,2JCwDb,MAAMgqB,EAAqBA,CAAC/pB,EAAmBgqB,IACpChqB,EAAUjB,QAAQ,gBAAiBirB,GAAe,IAGvDC,EAAiBA,CACnBpqB,EACAjI,EACAsyB,EACA3oB,EACAqD,KAEA,MAAM,UACFvP,EAAS,WACTqP,EAAU,sBACVC,EAAqB,gBACrBrD,EAAe,cACfE,EAAa,cACb2oB,EAAa,gBACbC,EAAe,uBACfC,EAAsB,gBACtBtxB,EAAe,iBACfmH,GACAqB,GACE,WAAExL,EAAa,KAAI,aAAEE,EAAe,MAAS0O,GAAyB,GAE5E,MAAO,CACH2E,KAAM,CAAEzJ,UAAAA,GACRgkB,WAAYjsB,EAAUC,OAAS,EAC/B+M,QAASA,GAAWhF,EAAAA,cAACkF,EAAAA,QAAOvF,OAAAiB,OAAA,CAACX,UAAW,GAAGA,aAAyB+E,IACpE9B,MAAOlL,EAAUiE,KACZ/E,IACG,MAAMwzB,EAAoBhpB,GAAmBA,EAAgBjJ,WAAavB,EAAQuB,SAC5E+rB,EAAckG,GAAqBv0B,GAAcE,EAIjDs0B,GACFhpB,EAAMipB,oCAECjpB,EAAMkpB,2CACNlpB,EAAMmpB,iBAA4BnpB,EAAMopB,gDADU,GAG7D,MAAO,CACH7G,KAAM,CAAEjkB,UAAW,GAAGA,UACtB5L,IAAK6C,EAAQuB,UAAY,EACzBoL,WAAWb,EAAAA,EAAAA,GAAY,CACnBpB,cAAeA,EAAcvH,iBAAiBnD,EAAQC,0BAA4B,IAClFD,QAAAA,EACAiC,gBAAAA,IAEJrC,MAAO,CACHytB,MAAO,CAAEtkB,UAAW,GAAGA,WACvBukB,cAAeA,EACfljB,MAAOtB,EAAAA,cAAC6F,EAAAA,EAA0BlG,OAAAiB,OAAA,GAAK,CAAEU,MAAOnL,GAAc,MAC9DmG,QAAS0D,EAAAA,cAAC8F,EAAAA,EAA4BnG,OAAAiB,OAAA,GAAK,CAAEtE,QAASjG,GAAgB,OAE1E8tB,oBAAqBmG,EAErBlG,cACIpkB,EAAAA,cAACqF,EAAAA,EAAsB1F,OAAAiB,OAAA,GACf,CACAX,UAAWmN,GAAAA,CACP,2CACA,CAAE,oCAAqCtI,GAAc4lB,GACrD,CAAE,oCAAqCC,IAE3CtqB,SAAUyE,GAAc6lB,EACxBxqB,KAAM1K,EAAUu1B,yBAChB5qB,UAAW+pB,EAAmB10B,EAAUw1B,8BAA+B/zB,EAAQkB,MAC/EkI,iBAAAA,EACAC,QAASA,KACLkqB,EAAuBvzB,OAKvCmtB,WACIrkB,EAAAA,cAACqF,EAAAA,EAAsB1F,OAAAiB,OAAA,GACf,CAEAX,UAAWmN,GAAAA,CAAW,gCAAiC,CACnD,oCAAqCud,IAEzCtqB,SAAUyE,GAAc6lB,EACxBxqB,KAAM1K,EAAUy1B,sBAChB9qB,UAAW+pB,EAAmB10B,EAAU01B,2BAA4Bj0B,EAAQkB,MAC5EkI,iBAAAA,EACAC,QAASA,KACLgqB,EAAcrzB,IAElBgJ,KAAM,UAIlBokB,aACItkB,EAAAA,cAACqF,EAAAA,EAAsB1F,OAAAiB,OAAA,GACf,CAEAX,UAAWmN,GAAAA,CAAW,kCAAmC,CACrD,oCAAqCud,IAEzCtqB,SAAUyE,GAAc6lB,EACxBxqB,KAAM1K,EAAU21B,wBAChBhrB,UAAW+pB,EAAmB10B,EAAU41B,6BAA8Bn0B,EAAQkB,MAC9EkI,iBAAAA,EACAC,QAASA,KACLiqB,EAAgBtzB,IAEpBgJ,KAAM,gBAUhCorB,EAAyB3pB,IAC3B,MAAM,UAAE3J,EAAS,6BAAEuzB,GAAiC5pB,EAC9C6pB,EAAmBxzB,EAAUuS,QAAQrT,GAAqBA,EAAQoG,YACxE,OAAO+sB,EAAe,4BAA6BmB,GAAkB,EAAO7pB,EAAO4pB,IAGjFE,EAAuB9pB,IACzB,MAAM,UAAE3J,EAAS,2BAAE0zB,GAA+B/pB,EAC5CgqB,EAAiB3zB,EAAUuS,QAAQrT,IAAsBA,EAAQoG,YACvE,OAAO+sB,EAAe,4BAA6BsB,GAAgB,EAAMhqB,EAAO+pB,IAGvE1H,EAAeriB,IAAoD,IAAAiqB,EAC5E,MAAM,UAAE5zB,EAAS,QAAEgN,EAAO,UAAEvP,EAAS,aAAEgR,EAAY,iBAAEnG,EAAgB,4BAAEurB,GAAgClqB,EACjGmqB,GAAmB9mB,MAAAA,OAAO,EAAPA,EAAS7E,OAC9BH,EAAAA,cAACwnB,EAAAA,GAAa,CACVvnB,UAAU,4BACVkoB,IAAuB,QAApByD,EAAE5mB,EAAQ+mB,kBAAU,IAAAH,EAAAA,EAAI,KAC3BzrB,KAAM6E,EAAQ7E,KACdsnB,UAAW,CACPre,OAAQyiB,GAEF,SAGN5f,eAAgBtK,EAAMqqB,kBAO5BC,GACFtqB,EAAMipB,uCAECjpB,EAAMkpB,2CACNlpB,EAAMmpB,mBACLnpB,EAAMopB,8CAElB,MAAO,CACHrG,YAAa,CAAEzkB,UAAW,mBAC1B+E,QAAS8mB,EACTnH,uBAA6C,IAArB3sB,EAAUC,OAClC2sB,iBAAkB5kB,EAAAA,cAAA,KAAGC,UAAU,+BAA+BxK,EAAUy2B,gCACxEvlB,UACI3G,EAAAA,cAACqF,EAAAA,EAAsB1F,OAAAiB,OAAA,GACf,CACAX,UAAW,uCACXE,KAAM1K,EAAUmR,qBAChBxG,UAAW3K,EAAUoR,0BACrBvG,iBAAAA,EACAC,QAASkG,EACTpG,SAAU4rB,KAItBpH,mBAAoByG,EAAsB3pB,GAC1CmjB,iBAAkB2G,EAAoB9pB,oHC/M9C,MAAM4B,EAAWA,CAACpB,EAAejL,EAAkByK,KAAoD,IAAAwqB,EACnG,MAAM,UAAEn0B,EAAS,sBAAEwL,EAAqB,gBAAE9B,EAAe,UAAEjM,EAAS,gBAAE0D,GAAoBwI,EACpFyqB,EAAyBl1B,EAAQW,mBACgD,QAAjFs0B,EAAAhzB,EAAgBrD,MAAKyzB,GAAWA,EAAQxwB,cAAgB7B,EAAQW,0BAAiB,IAAAs0B,OAAA,EAAjFA,EAAmF1C,cACnF,GACAhmB,EAAWvM,EAAQuB,WAAaiJ,EAAgBjJ,SAChDiL,EAAuB,CACzBzC,QAASwC,EACT,eAAgBA,EAChB,eAAgBzL,EAAUC,OAC1B,gBAAiBkK,EAAQ,EACzB,cAAcsF,EAAAA,EAAAA,QAAOhS,EAAU42B,+BAAgCD,IAGnE,OACIpsB,EAAAA,cAACsC,EAAAA,EAAqB3C,OAAAiB,OAAA,GACd,CACAX,UAAW,qBACXzF,KAAM,uBACN+C,KAAM,QACN/D,OAAQtC,EAAQuB,UAAY,IAAI2K,WAChCpC,SAAUwC,EACV1C,qBAAsB4C,EACtBpD,iBAAkBqB,EAAMrB,qBAMlCqD,EAAyBhC,IAC3B,MAAM,UAAE3J,EAAS,cAAE4J,EAAa,gBAAEzI,GAAoBwI,EAEtD,OAAO3J,EAAUiE,KAAI,CAAC/E,EAASiL,KACpB,CACH9N,IAAK6C,EAAQuB,UAAY,EACzBmL,WAAY,CAAE3D,UAAW,4BACzBjL,MAAOuO,EAASpB,EAAOjL,EAASyK,GAChCkC,WAAWb,EAAAA,EAAAA,GAAY,CACnBpB,cAAeA,EAAcvH,iBAAiBnD,EAAQC,0BAA4B,IAClFD,QAAAA,EACAiC,gBAAAA,SAMH2N,EAAiBnF,IAC1B,MAAM,UAAElM,EAAS,SAAEkP,EAAQ,OAAEC,EAAM,aAAE6B,EAAY,uBAAE5B,GAA2BlD,EAE9E,MAAO,CACH+E,cAAe,CAAEzG,UAAW,sBAC5B0G,UACI3G,EAAAA,cAACqF,EAAAA,EAAsB1F,OAAAiB,OAAA,GACf,CACAX,UAAW,iCACXE,KAAM1K,EAAUmR,qBAChBxG,UAAW3K,EAAUoR,0BACrBtG,QAASkG,EACTnG,iBAAkBqB,EAAMrB,oBAIpC6E,kBAAmBN,EACnBO,WACIpF,EAAAA,cAACqF,EAAAA,EAAsB1F,OAAAiB,OAAA,GACf,CACAX,UAAW,kCACXE,KAAM1K,EAAU6P,sBAChBlF,UAAW3K,EAAU8P,2BACrBhF,QAASqE,EACTtE,iBAAkBqB,EAAMrB,oBAIpCkF,oBAAqBX,EACrBY,aACIzF,EAAAA,cAACqF,EAAAA,EAAsB1F,OAAAiB,OAAA,GACf,CACAX,UAAW,oCACXE,KAAM1K,EAAUiQ,wBAChBtF,UAAW3K,EAAUkQ,6BACrBpF,QAASoE,EACTrE,iBAAkBqB,EAAMrB,oBAIpC4C,MAAOS,EAAsBhC,gGCxG9B,MAAMqB,EAAerB,IACxB,MAAM,cAAEC,EAAa,gBAAEzI,EAAe,QAAEjC,GAAYyK,EAEpD,MAAO,CACHsB,cAAe,CAAEhD,UAAW,sBAC5BiD,MAAOtB,EAAc3F,KAAIkC,IACrB,GAAIA,EAAK3D,OAAS3B,EAAAA,GAAgBA,EAAAA,GAAgBhB,kBAAmB,CACjE,MAAMgK,EAAc1I,EAAgBrD,MAChCqN,GAAoBA,EAAiBpK,YAAYqK,cAAgBlM,EAAQiH,EAAK3D,OAAS,IAAI4I,aAE/F,GAAIvB,EAAa,CACb,MAAMuqB,EAAyBvqB,EAAY4nB,aAAe,GAC1D,MAAO,CACHp1B,IAAK8J,EAAK3D,KACV6I,YACIrD,EAAAA,cAACsD,EAAAA,EAA0B3D,OAAAiB,OAAA,GACnB,CACA1D,UAAWiB,EAAKjB,UAChB2F,YAAa1E,EAAKZ,OAAS1E,EAAAA,GAAgBR,MAC3CyK,UAAW3E,EAAKsB,MAChBjF,KAAM2D,EAAK3D,KACXhB,MAAO4yB,OAO/B,MAAO,CACH/3B,IAAK8J,EAAK3D,KACV6I,YACIrD,EAAAA,cAACsD,EAAAA,EAA0B3D,OAAAiB,OAAA,GACnB,CACA1D,UAAWiB,EAAKjB,UAChB2F,YAAa1E,EAAKZ,OAAS1E,EAAAA,GAAgBR,MAC3CyK,UAAW3E,EAAKsB,MAChBjF,KAAM2D,EAAK3D,KACXhB,OAAQtC,EAAQiH,EAAK3D,OAAS,IAAI4I,41BCJ9D,IAAMkpB,EAAN,cAAuCtsB,EAAAA,UA4BnCtO,YAAmBiQ,GACfqC,MAAMrC,GA1BU,KAAAlN,gBAA0B,MAYtC,KAAAkB,eAAsC,GACtC,KAAAwD,gBAAoC,GAE3B,KAAA6I,mBAA6B,EAI7B,KAAAuqB,oCAA8C,4DAC9C,KAAAC,6BAAuC,+DAEhD,KAAAC,8CAAyD,EACzD,KAAA7B,mCAA6C,EA4LpC,KAAArjB,sBAAwBrT,MAAAA,IACrC7B,KAAKmV,sBACL,MAAMtQ,EAAU7E,KAAKuP,cAAclH,qBAAqBC,EAAQtI,KAAKiH,oBACrE8C,EAAAA,EAAAA,IAAI/J,KAAK4T,iBAAkB,CAAE1N,OAAQ,MACrC6D,EAAAA,EAAAA,IAAI/J,KAAK4T,iBAAkB,CAAEzN,QAAStB,EAAQsB,WAC9C4D,EAAAA,EAAAA,IAAI/J,KAAK4T,iBAAkB,CAAE3K,WAAYpE,EAAQoE,cACjDc,EAAAA,EAAAA,IAAI/J,KAAK4T,iBAAkB,CAAE7O,KAAMF,EAAQE,QAC3CgF,EAAAA,EAAAA,IAAI/J,KAAK4T,iBAAkB,CAAE3N,MAAOpB,EAAQoB,SAC5C8D,EAAAA,EAAAA,IAAI/J,KAAK4T,iBAAkB,CAAE5K,aAAcnE,EAAQmE,gBACnDe,EAAAA,EAAAA,IAAI/J,KAAK4T,iBAAkB,CAAE1K,YAAarE,EAAQqE,cAGlDpI,YAAW,MACPiJ,EAAAA,EAAAA,IAAI/J,KAAK4T,iBAAkB,CAAE1N,OAAQrB,EAAQqB,WAC9C,IAOU,KAAAiP,oBAAsB,KACTnV,KAAKuP,cAAcvH,iBACzChI,KAAK4T,iBAAiB9O,0BAA4B9E,KAAKoC,iBAEzC6F,SAAQmN,IAAS,IAAAL,OACYpT,IAAvC3B,KAAK4T,iBAAiBwB,EAAOjN,OAAwC,QAAjB4M,EAAC/U,KAAKiV,mBAAW,IAAAF,GAAhBA,EAAkBpV,sBAAsBiN,SAASwI,EAAOjN,QAC7GnI,KAAKuP,cAAc6F,EAAOjN,MAAQ,OAG1CnI,KAAKsV,oBAOQ,KAAAA,iBAAmB,KAChCtV,KAAK4H,gBAAkB,IAOV,KAAAyyB,gBAAmB/qB,IAChC,MAAM,KAAEwF,GAASxF,GAEjBwK,EAAAA,EAAAA,KACI,IAAMhF,EAAKxR,eAAegF,SAC1B,KAAK,IAAAgyB,EACDt6B,KAAKsD,eAA2C,QAA7Bg3B,EAAGxlB,EAAKxR,eAAegF,cAAM,IAAAgyB,EAAAA,EAAI,OAI5DxgB,EAAAA,EAAAA,KACI,IAAMhF,EAAKhO,gBAAgBwB,SAC3B,KAAK,IAAAiyB,EACDv6B,KAAK8G,gBAA6C,QAA9ByzB,EAAGzlB,EAAKhO,gBAAgBwB,cAAM,IAAAiyB,EAAAA,EAAI,OAI9DzgB,EAAAA,EAAAA,KACI,IAAMhF,EAAKjQ,QAAQyD,SACnB,KAAK,IAAAkyB,EACDx6B,KAAKqG,kBAAuC,QAAtBm0B,EAAG1lB,EAAKjQ,QAAQyD,cAAM,IAAAkyB,EAAAA,EAAI,OAS3C,KAAAzoB,0BAA4B,KAClC2B,EAAAA,EAAAA,GAAiB,CACpBjB,WAAYzS,KAAKyS,WACjBrP,UAAWpD,KAAKoD,UAChBoM,YAAa9I,EAAAA,EAAYiN,SACzBpE,cAAevP,KAAKuP,cAAcvH,iBAAiBhI,KAAK4T,iBAAiB9O,0BAA4B9E,KAAKoC,iBAC1GsN,uBAAwB1P,KAAKoC,gBAC7BuN,mBAAoB3P,KAAK2P,mBACzBN,gBAAiBrP,KAAK4T,iBACtBhM,gBAAiB5H,KAAK4H,gBACtB8K,sBAAuB1S,KAAK0S,sBAC5BjD,oBAAqBzP,KAAKuP,cAAcxI,gCACpC/G,KAAKoD,UAAUyQ,iCACf7T,KAAKiH,mBAETgH,iBAAkBjO,KAAKiO,iBACvB2B,cAAe5P,KAAK8T,+BACpBjE,iBAAkB7P,KAAK+T,kCACvBxB,OAAQvS,KAAK6V,0BACbvD,SAAUtS,KAAKkU,aAQN,KAAAumB,mBAAqB,KAAwB,IAAAC,EAAAC,EAC1D,MAAM,OAAEtkB,GAAWrW,KAAKsP,MASlBqD,EAAU0D,EAAO1D,SAAW,CAC9B7E,KAAMuI,EAAO1D,QAAQ7E,KACrB4rB,WAAYrjB,EAAO1D,QAAQmjB,KAG/B,OAAOnE,EAAAA,EAAAA,GAAY,CACflf,WAAYzS,KAAKyS,WACjBpD,gBAAiBrP,KAAKqP,gBACtBE,cAAevP,KAAKuP,cACpB5J,UAAW3F,KAAKqG,kBAChBS,gBAAiB9G,KAAK8G,gBACtB1D,UAAWpD,KAAKoD,UAChBuP,QAAAA,EACAumB,6BAA8B7iB,EAAO6iB,6BACrCG,2BAA4BhjB,EAAOgjB,2BACnCM,eAAgB35B,KAAKsP,MAAMnM,QAAQgB,QACnC8J,iBAAkBjO,KAAKiO,iBACvBurB,4BApBiCjkB,IACjCc,EAAO1D,QAAS7E,KAAOyH,EAAMI,OAAOxO,OAoBpC+wB,cAAel4B,KAAK46B,iBACpBzC,gBAAiBn4B,KAAK66B,iBACtBzmB,aAAcpU,KAAK2U,gBACnByjB,uBAAwBp4B,KAAK86B,8BAC7BpC,6CAA8C14B,KAAKo6B,+CAAgD,EACnG3B,iBAA2D,QAA1CiC,EAAA16B,KAAKsP,MAAMwF,KAAKimB,oBAAoBzyB,cAAM,IAAAoyB,OAAA,EAA1CA,EAA4CM,mBAAmB,EAChFxC,0CAAgE,QAAtBmC,EAAA36B,KAAKsP,MAAMnM,QAAQ83B,WAAG,IAAAN,GAAQ,QAARA,EAAtBA,EAAwBtkB,cAAM,IAAAskB,OAAA,EAA9BA,EAAgCnC,4CAA4C,EACtHD,kCAAmCv4B,KAAKu4B,qCAO/B,KAAA1jB,sBAAwBhT,UACrC,MACIiT,MACIhT,2BAA6BwG,OAAQxG,KAEzC9B,KAAKsP,MAEuC,IAAD+F,EAA3CvT,MAAAA,GAAAA,EAA2BkT,iBACX,QAAhBK,EAAArV,KAAKiV,mBAAW,IAAAI,GAAhBA,EAAkBzV,kBAAkB,0BAA2B,oCAAqCI,KAAKkV,yBAShG,KAAAQ,mBAAqB,CAACvN,EAAchB,MACjD4C,EAAAA,EAAAA,IAAI/J,KAAK4T,iBAAkB,CAAE,CAACzL,GAAOhB,IACrCnH,KAAKuP,cAAc5H,sBAAsB3H,KAAK4T,iBAAkB5T,KAAK4H,gBAAiB5H,KAAKoC,gBAAiB+F,IAO/F,KAAA2L,+BAAkCyB,IAC/C,GAA0B,aAAtBA,EAAMI,OAAOzK,KACblL,KAAK0V,mBAAmBH,EAAMI,OAAOxN,KAAMoN,EAAMI,OAAO/G,aACrD,CACH,MAAMzH,GAASoO,EAAMI,OAAOxO,OAAS,IAAI2F,QAAQ,IAAIvD,OAAO,OAAQ,MAAO,IAC3EvJ,KAAK0V,mBAAmBH,EAAMI,OAAOxN,KAAMhB,KAQlC,KAAA4M,kCAAqCwB,IAC9CA,EAAMI,OAAOxN,OAAS3B,EAAAA,GAAgBA,EAAAA,GAAgBhB,kBACtDxF,KAAK0V,mBAAmBH,EAAMI,OAAOxN,MAAOoN,EAAMI,OAAOxO,OAEzDnH,KAAK0V,mBAAmBH,EAAMI,OAAOxN,KAAMoN,EAAMI,OAAOxO,OAExDoO,EAAMI,OAAOxN,OAAS3B,EAAAA,GAAgBA,EAAAA,GAAgB1B,2BACtD9E,KAAK4V,iBAAiBL,EAAMI,OAAOxO,QAS1B,KAAA+zB,iBAAmB,CAAC32B,EAAqC42B,KACtEn7B,KAAKyS,YAAa,EAClBlO,EAASyR,MACJ1N,IACOA,EAAOzD,SACP7E,KAAKqS,UAAW,EAChB8oB,EAAU7yB,KAEVtI,KAAKqS,UAAW,EAChBrS,KAAK0S,sBAAwBpK,GAEjCtI,KAAKyS,YAAa,KAEtB,KACIzS,KAAKqS,UAAW,EAChBrS,KAAKyS,YAAa,MAQb,KAAAoD,0BAA4B,KACzC,IAAK7V,KAAKuP,cAAc5H,sBAAsB3H,KAAK4T,iBAAkB5T,KAAK4H,gBAAiB5H,KAAKoC,iBAC5F,OAEJ,IAAImC,EAEAA,EADAvE,KAAKkS,cAAchO,sBAEflE,KAAKgS,mBAAqBvL,EAAAA,EAAiBqP,OACrC9V,KAAKkS,cAAc/M,sBAAsBnF,KAAK4T,kBAC9C5T,KAAKkS,cAAclN,mBAAmBhF,KAAK4T,kBAE1ClP,QAAQC,QAAQ,CAAEE,QAAS7E,KAAK4T,mBAG/C5T,KAAKk7B,iBAAiB32B,EAAUvE,KAAKiW,wBAOxB,KAAAL,iBAAoBxT,IAA2B,IAAA8T,EAC5DlW,KAAKoC,gBAAkBA,EACvB,MAAM+T,EAAyBnW,KAAKuP,cAAc9H,0BAA0BrF,IAC5E2H,EAAAA,EAAAA,IAAI/J,KAAK4T,iBAAkB,CAAE9O,yBAA0B1C,KACvD2H,EAAAA,EAAAA,IAAI/J,KAAK4T,iBAAkB,CAAEmF,uBAAwB5C,IACrC,QAAhBD,EAAAlW,KAAKiV,mBAAW,IAAAiB,GAAhBA,EAAkB9U,gCAAgC+U,GAClDnW,KAAKmV,uBAOQ,KAAAiB,6BAA+B,KAC5C,MAAM,OAAEC,GAAWrW,KAAKsP,MAClBgH,EAA8C,GAQpD,OANKD,EAAOE,iBACRD,EAAyB/L,KAAK/D,EAAAA,GAAgBhB,kBAGlD8Q,EAAyB/L,KAAK/D,EAAAA,GAAgByE,WAEvCqL,GAMM,KAAAE,mBAAqB,MAE7BxW,KAAKoC,iBACJpC,KAAKgS,mBAAqBvL,EAAAA,EAAiBwL,KAAOjS,KAAKgS,mBAAqBvL,EAAAA,EAAiBqP,QAKnG9V,KAAKkS,cAAc5N,kBAAkBtE,KAAKoC,iBAAiB4T,MAAM1N,IAC3CA,EAAOmO,MAAKhO,GAASA,EAAMG,UAAY5I,KAAK4T,iBAAiB3N,UAI3E8D,EAAAA,EAAAA,IAAI/J,KAAK4T,iBAAkB,CAAE3N,MAAO,KAExCjG,KAAKiH,kBAAoBqB,MAehB,KAAA4O,wBAA2B+B,IACxCjZ,KAAKgS,iBAAmBiH,EACxBjZ,KAAKmV,uBAOQ,KAAA2lB,8BAAiCj2B,IAC9C7E,KAAKqP,gBAAkBxK,EACvB,MAAMN,EAAWvE,KAAKkS,cAAc7M,6BAA6BR,GACjE7E,KAAKk7B,iBAAiB32B,EAAUvE,KAAKo7B,iCAOxB,KAAAR,iBAAoB/1B,IACjC7E,KAAK4T,iBAAgBpT,EAAA,GAAQqE,GAC7B7E,KAAKoC,gBAAkBpC,KAAK4T,iBAAiB9O,0BAA4B,MACzE9E,KAAKkX,wBAAwBzQ,EAAAA,EAAiBqP,SAOjC,KAAA+kB,iBAAoBh2B,IACjCA,EAAQw2B,YAAa,EACrBr7B,KAAKs7B,kBAAoBz2B,EACzB,MAAMN,EAAWvE,KAAKkS,cAAc/M,sBAAsBN,GAC1D7E,KAAKk7B,iBAAiB32B,EAAUvE,KAAKiW,wBAQxB,KAAAslB,8BAAiC12B,IAC9C,MAAM22B,GAAeC,EAAAA,EAAAA,QAAmBz7B,KAAKoD,UAAUs4B,0BAA4B,GAAG72B,EAAQkB,QAC9F,OACI4H,EAAAA,cAAA,OAAKC,UAAU,+BAA8B,YAAW,UACnD4tB,IAQI,KAAA7mB,gBAAkB,KAC/B3U,KAAK4T,iBAAmB,GACxB5T,KAAK6Y,8BACL9O,EAAAA,EAAAA,IAAI/J,KAAK4T,iBAAkB,CAAE9O,yBAA0B9E,KAAKoC,mBAC5D2H,EAAAA,EAAAA,IAAI/J,KAAK4T,iBAAkB,CAAEpO,iBAAkBxF,KAAK2P,qBACpD3P,KAAK6Y,6BACL7Y,KAAKkX,wBAAwBzQ,EAAAA,EAAiBwL,MAOjC,KAAAgE,sBAAyB1R,IAClCA,EAAS8B,oBACTrG,KAAKqG,kBAAoB9B,EAAS8B,mBAEtCrG,KAAKkU,cAOQ,KAAAknB,+BAAkC72B,IAC3CA,EAAS8B,oBACTrG,KAAKqG,kBAAoB9B,EAAS8B,oBAOzB,KAAA6N,WAAa,KAC1BlU,KAAKqP,qBAAkB1N,EACvB3B,KAAKkX,wBAAwBzQ,EAAAA,EAAiB4Q,OA7jB9C,MAAM,QAAElU,EAAO,KAAE2R,EAAI,UAAE1R,EAAS,UAAE9D,GAAcU,KAAKsP,MAErDtP,KAAKoD,UAAYA,EACjBpD,KAAKgS,iBAAmBvL,EAAAA,EAAiB4Q,KACzCrX,KAAKsD,eAAiBwR,EAAKxR,eAAegF,QAAU,GACpDtI,KAAK8G,gBAAkBgO,EAAKhO,gBAAgBwB,QAAU,GACtDtI,KAAKqG,kBAAoByO,EAAKjQ,QAAQyD,QAAU,GAChDtI,KAAK4T,iBAAmB,GACxB5T,KAAK4H,gBAAkB,GACvB5H,KAAKkS,cAAgB,IAAIhP,EAAAA,EAAcC,EAASC,EAAW9D,GAC3DU,KAAKuP,cAAgB,IAAI5I,EAAAA,EACrB3G,KAAKsD,eACL,IAAI6H,EAAAA,EAAe3K,EAAC,GAAK4C,GAAapD,KAAKoW,gCAC3CpW,KAAK8G,iBAET9G,KAAKiO,kBAAmBwL,EAAAA,EAAAA,oBACpBzZ,KAAKsP,MAAMnM,QAAQgB,QAAQuV,kBAC3B1Z,KAAKsP,MAAMqK,aACX3Z,KAAKsP,MAAMhQ,WAIZ,0BACH,MACI6D,SAAS,UACL7D,EACAkF,eACIoV,gBAAgB,QAAEnC,KAG1BpB,QAAQ,sBAAEwD,EAAqB,mBAAEta,IACjCS,KAAKsP,MAuBT,GApBAtP,KAAKq6B,gBAAgBr6B,KAAKsP,YAEoB3N,IAA1C3B,KAAKsP,MAAMwF,KAAKxR,eAAegF,QAC/BtI,KAAK6Y,8BAGTiB,EAAAA,EAAAA,KACI,IAAM9Z,KAAKoC,kBACX,KACIpC,KAAKwW,yBAIbsD,EAAAA,EAAAA,KACI,IAAM9Z,KAAKgS,mBACX,KACIhS,KAAKwW,wBAITqD,EAAuB,CACvB,GAAIpC,IAAYA,EAAQjY,eAEpB,YADAF,EAAUmF,MAAM,8BAIpB,GAAIgT,IAAYA,EAAQsC,gBAEpB,YADAza,EAAUmF,MAAM,4BAIpB,MAAMlE,EAAOC,EAAA,GAA6BjB,GAC1CS,KAAKiV,YAAc,IAAI7V,EAAAA,EACnBE,EACAiB,EACAkX,MAAAA,OAAO,EAAPA,EAASjY,eACTiY,MAAAA,OAAO,EAAPA,EAASwC,4BACTxC,MAAAA,OAAO,EAAPA,EAASyC,oBAGbJ,EAAAA,EAAAA,KACI,SAAAK,EAAA,YACqExY,KAAjB,QAAhDwY,EAAAna,KAAKsP,MAAMwF,KAAKhT,0BAA0BwG,cAAM,IAAA6R,OAAA,EAAhDA,EAAkDpY,cACjD/B,KAAKgS,mBAAqBvL,EAAAA,EAAiBwL,KAAOjS,KAAKgS,mBAAqBvL,EAAAA,EAAiBqP,WAClGjU,UAAW,IAAAmY,QACe,QAAtBA,EAAMha,KAAKiV,mBAAW,IAAA+E,OAAA,EAAhBA,EAAkBpY,kBAAkB5B,KAAKsP,MAAMwF,KAAKhT,gCAIlEgY,EAAAA,EAAAA,KACI,KAAK,IAAAO,EAC+C,QAAhDA,EAAAra,KAAKsP,MAAMwF,KAAKhT,0BAA0BwG,cAAM,IAAA+R,GAAhDA,EAAkDrF,kBAEtDnT,UACQ7B,KAAKgS,mBAAqBvL,EAAAA,EAAiBwL,KAAOjS,KAAKgS,mBAAqBvL,EAAAA,EAAiBqP,cACvF9V,KAAK6U,4BAUxB,2BACuG,IAADyF,EAIlGF,EAJHpa,KAAKgS,mBAAqBvL,EAAAA,EAAiBwL,KAAOjS,KAAKgS,mBAAqBvL,EAAAA,EAAiBqP,OACzC,QAApDwE,EAAIta,KAAKsP,MAAMwF,KAAKhT,0BAA0BwG,cAAM,IAAAgS,GAAhDA,EAAkDtF,sBAC5ChV,KAAK6U,wBAGC,QAAhBuF,EAAApa,KAAKiV,mBAAW,IAAAmF,GAAhBA,EAAkB9Y,qBAUnBq6B,sBACHC,EACAC,GAEA,OAAI77B,KAAKyI,QAAUozB,GAAa77B,KAAKsP,MAAMwF,OAAS8mB,EAAU9mB,KAM3D0F,SAAM,IAAA9I,EAAAoqB,EAAAC,EACT,MAAM,WAAEthB,EAAU,OAAEpE,EAAM,UAAEjT,EAAS,KAAE0R,GAAS9U,KAAKsP,MAC/CyrB,EAAsBjmB,EAAKimB,oBAAoBzyB,OAGrDtI,KAAKo6B,8CACgB,QAAjB1oB,EAAAoD,EAAKwE,oBAAY,IAAA5H,GAAQ,QAARA,EAAjBA,EAAmBpJ,cAAM,IAAAoJ,GAA4E,QAA5EA,EAAzBA,EAA2BjO,MAAK8V,GAAWA,EAAQxT,OAAS/F,KAAKk6B,6CAAoC,IAAAxoB,OAAA,EAArGA,EAAuG8H,aAAa,EAExHxZ,KAAKu4B,mCACgB,QAAjBuD,EAAAhnB,EAAKwE,oBAAY,IAAAwiB,GAAQ,QAARA,EAAjBA,EAAmBxzB,cAAM,IAAAwzB,GAAqE,QAArEA,EAAzBA,EAA2Br4B,MAAK8V,GAAWA,EAAQxT,OAAS/F,KAAKm6B,sCAA6B,IAAA2B,OAAA,EAA9FA,EAAgGtiB,aAAa,EA0CjH,OAAOiB,EAxCQja,EAAAA,EAAA,GACRR,KAAKsP,OAAK,IACbskB,kBAAuC,QAAtBmI,EAAA/7B,KAAKsP,MAAMnM,QAAQ83B,WAAG,IAAAc,GAAQ,QAARA,EAAtBA,EAAwB1lB,cAAM,IAAA0lB,OAAA,EAA9BA,EAAgCvD,4CAC5Cx4B,KAAKu4B,qCACLwC,MAAAA,OAAmB,EAAnBA,EAAqBC,mBAAmB,IACrCrtB,EAAAA,cAACwnB,EAAAA,GAAa,CACVvnB,UAAU,sCAGVE,KACI9N,KAAKo6B,6CACCh3B,EAAU44B,iDACV54B,EAAU64B,sCAIhCjqB,iBAAkBhS,KAAKgS,iBACvB3C,gBAAiBrP,KAAKqP,gBACtBuE,iBAAkB5T,KAAK4T,iBACvBxR,gBAAiBpC,KAAKoC,gBACtB6E,kBAAmBjH,KAAKiH,kBACxBZ,kBAAmBrG,KAAKqG,kBACxBuB,gBAAiB5H,KAAK4H,gBACtB8K,sBAAuB1S,KAAK0S,sBAC5BD,WAAYzS,KAAKyS,WACjBJ,SAAUrS,KAAKqS,SACfzE,UAAWyI,EAAOzI,UAClB8M,UAAW,CACPE,iBAAkB5a,KAAKgS,mBAAqBvL,EAAAA,EAAiB4Q,KAC7DwD,yBAA0B7a,KAAKgS,mBAAqBvL,EAAAA,EAAiB4Q,MAEzE8b,yBAA0B,CACtBrY,YAAa9a,KAAKsP,MAClB1B,UAAWmN,GAAAA,CAAW,gCAAiC1E,EAAOzI,YAElEwlB,gBAAiBpzB,KAAKy6B,qBACtBtf,uBAAwBnb,KAAK+R,4BAC7BmqB,yBAA0Bl8B,KAAKs7B,kBAAoBt7B,KAAKu7B,8BAA8Bv7B,KAAKs7B,mBAAqB,QA6ShHziB,6BACJ,MAAM,QAAE1U,GAAYnE,KAAKsP,MAAMnM,QACzBjB,EAASiC,GAAWA,EAAQsT,SAAWtT,EAAQsT,QAAQwC,4BAE7Dja,KAAKoC,gBAAkBpC,KAAKkS,cAAc7O,0BAA0BrD,KAAKoC,gBAAiBpC,KAAKsD,eAAgBpB,MA3fvGkZ,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,wCACCD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,uCACCD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,uCACCD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,yCACCD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,yCACCD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,wCACCD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,uCACCD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,6CACCD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,kCACCD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,gCACCD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,yCA2MXD,EAAAA,EAAAA,IAAA,CADCnY,EAAAA,IAAM,6CAsBPmY,EAAAA,EAAAA,IAAA,CADCnY,EAAAA,IAAM,2CAiBPmY,EAAAA,EAAAA,IAAA,CADCnY,EAAAA,IAAM,uCA1PLg3B,GAAwB7e,EAAAA,EAAAA,IAAA,CAD7BI,EAAAA,IACKye,GA+lBN,wGCxoBA,MAAMtpB,EAA2CjD,IAA6B,IAA5B,cAAEkD,EAAa,MAAEC,GAAOnD,EACtE,OACIC,EAAAA,cAAC8N,EAAAA,KAAInO,OAAAiB,OAAA,GAAKqC,GACLC,EAAMjH,KAAKkC,GACD6B,EAAAA,cAAAA,EAAAA,SAAA,KAAG7B,EAAKkF,iBAezB2gB,EAAsCjW,IAAyC,IAAxC,KAAErE,EAAI,WAAEua,EAAU,QAAEjf,EAAO,MAAE9B,GAAO6K,EAC7E,OAAKkW,EAKDjkB,EAAAA,cAAC8N,EAAAA,KAAInO,OAAAiB,OAAA,GAAK8I,GACL1E,EACA9B,EAAMjH,KAAKkC,IACR,MAAM,KAAE+lB,EAAI,IAAE7vB,EAAG,MAAEyC,EAAK,UAAE+M,EAAS,oBAAEsgB,EAAmB,cAAEC,EAAa,WAAEC,EAAU,aAAEC,GAAiBnmB,GAChG,MAAEomB,EAAK,YAAEC,EAAW,MAAEljB,EAAK,QAAEhF,GAAYxF,EAC/C,OACIkJ,EAAAA,cAAC8N,EAAAA,KAAInO,OAAAiB,OAAA,GAAKsjB,EAAI,CAAE7vB,IAAKA,IACjB2L,EAAAA,cAACgD,EAAWrD,OAAAiB,OAAA,GAAKiD,IAChB2gB,GACGxkB,EAAAA,cAAC8N,EAAAA,KAAInO,OAAAiB,OAAA,GAAK2jB,GACLjjB,EACAhF,GAGR6nB,GAAuBC,EACvBC,EACAC,OApBV,MAwCTG,EAA4CzW,IAQ7C,IAR8C,YAC/C0W,EAAW,QACX1f,EAAO,uBACP2f,EAAsB,iBACtBC,EAAgB,UAChBje,EAAS,mBACTke,EAAkB,iBAClBC,GACH9W,EACG,OACIhO,EAAAA,cAAC8N,EAAAA,KAAInO,OAAAiB,OAAA,GAAK8jB,GACL1f,EACA2f,GAA0BC,EAC1Bje,EACD3G,EAAAA,cAACgkB,EAAWrkB,OAAAiB,OAAA,GAAKikB,IACjB7kB,EAAAA,cAACgkB,EAAWrkB,OAAAiB,OAAA,GAAKkkB,MAmBvB/e,EAAqDgf,IAUtD,IAVuD,YACxD9f,EAAW,QACXD,EAAO,MACP9B,EAAK,SACLwB,EAAQ,MACR5N,EAAK,iBACLqO,EAAgB,WAChBC,EAAU,mBACVI,EAAkB,aAClBC,GACHsf,EACG,OACI/kB,EAAAA,cAAC8N,EAAAA,KAAInO,OAAAiB,OAAA,GAAKqE,GACLD,EACA9B,EAAMjH,KAAKkC,IACR,MAAM,YAAEsE,EAAW,IAAEpO,EAAG,MAAEoL,EAAK,MAAEkD,EAAK,MAAE3N,GAAUmJ,EAClD,OACI6B,EAAAA,cAAC8N,EAAAA,KAAInO,OAAAiB,OAAA,GAAK6B,EAAW,CAAEpO,IAAKA,IACvBoL,EACAkD,EACA3N,MAIZ0P,GACG1E,EAAAA,cAAC8N,EAAAA,KAAInO,OAAAiB,OAAA,GAAK9J,EAAM8O,cACX9O,EAAMwK,MACNxK,EAAMwF,SAGd6I,GAAoBC,EACpBI,GAAsBC,IA8BnC,EApBmF9D,IAC/E,MAAM,yBACF6jB,EAAwB,eACxBS,EAAc,UACdlZ,EAAS,gBACT0Y,EAAe,uBACfjY,EAAsB,yBACtB+gB,GACA5sB,EAEJ,OACI3B,EAAAA,cAACiU,EAAAA,OAAMtU,OAAAiB,OAAA,GAAK4kB,GACPS,EACAlZ,EAAUE,kBAAoBjN,EAAAA,cAACykB,EAAY9kB,OAAAiB,OAAA,GAAK6kB,IAChD1Y,EAAUG,0BAA4BlN,EAAAA,cAAC+F,EAAgBpG,OAAAiB,OAAA,GAAK4M,IAC5D+gB,8yBC3Gb,MAAMC,UAA+BxuB,EAAAA,UA+BjCtO,YAAmBiQ,GACfqC,MAAMrC,GA7BU,KAAAlN,gBAA0B,MActC,KAAAkB,eAAsC,GAEtC,KAAAwD,gBAAoC,GAI3B,KAAA6I,mBAA6B,EAE7B,KAAA+nB,iBAA4B,EAE5B,KAAA0E,aAAkC,CAAC51B,EAAAA,GAAgBT,KAAMS,EAAAA,GAAgBhB,iBAAkBgB,EAAAA,GAAgByE,WAuErH,KAAAoxB,oBAAsB,KACHr8B,KAAKuP,cAAcvH,iBAAiBhI,KAAKoC,iBAEjDwH,KAAI1B,IACd,OAAQA,EAAkByE,aACtB,KAAKrG,EAAAA,GAAuB0F,MACxBhM,KAAK4T,iBAAiB1L,EAAkBC,MAAQ,GAChD,MACJ,KAAK7B,EAAAA,GAAuBoG,SACxB1M,KAAK4T,iBAAiB1L,EAAkBC,OAAQ,EAChD,MACJ,QACI,OAAQD,EAAkBgD,MACtB,KAAK1E,EAAAA,GAAgB1B,yBACjB9E,KAAK4T,iBAAiB1L,EAAkBC,MAAQnI,KAAKoC,gBACrD,MACJ,KAAKoE,EAAAA,GAAgBhB,iBACjBxF,KAAK4T,iBAAiB1L,EAAkBC,MAAQnI,KAAK2P,mBACrD,MACJ,KAAKnJ,EAAAA,GAAgBP,MACjBjG,KAAK4T,iBAAiB1L,EAAkBC,MAAQ,GAChD,MACJ,QACInI,KAAK4T,iBAAiB1L,EAAkBC,WAAQxG,QAUvD,KAAA04B,gBAAmB/qB,IAChC,MAAM,KAAEwF,GAASxF,GAEjBwK,EAAAA,EAAAA,KACI,IAAMhF,EAAKxR,eAAegF,SAC1B,KAAK,IAAAgyB,EACDt6B,KAAKsD,eAA2C,QAA7Bg3B,EAAGxlB,EAAKxR,eAAegF,cAAM,IAAAgyB,EAAAA,EAAI,OAI5DxgB,EAAAA,EAAAA,KACI,IAAMhF,EAAKhO,gBAAgBwB,SAC3B,KAAK,IAAAiyB,EACDv6B,KAAK8G,gBAA6C,QAA9ByzB,EAAGzlB,EAAKhO,gBAAgBwB,cAAM,IAAAiyB,EAAAA,EAAI,OAI9DzgB,EAAAA,EAAAA,KACI,IAAMhF,EAAKuE,cAAc/Q,SACzB,KAAK,IAAAg0B,EACDt8B,KAAKiH,kBAA6C,QAA5Bq1B,EAAGxnB,EAAKuE,cAAc/Q,cAAM,IAAAg0B,EAAAA,EAAI,OAYjD,KAAAvqB,0BAA4B,KAClC2B,EAAAA,EAAAA,GAAiB,CACpBjB,WAAYzS,KAAKyS,WACjBrP,UAAWpD,KAAKoD,UAChBoM,YAAa9I,EAAAA,EAAY61B,QACzBhtB,cAAevP,KAAKuP,cAAcvH,iBAAiBhI,KAAKoC,iBACxDsN,uBAAwB1P,KAAKoC,gBAC7BuN,mBAAoB3P,KAAK2P,mBACzBN,gBAAiBrP,KAAK4T,iBACtB8jB,gBAAiB13B,KAAK03B,gBACtB9vB,gBAAiB5H,KAAK4H,gBACtByK,SAAUrS,KAAKsP,MAAM+C,SACrBK,sBAAuB1S,KAAK0S,sBAC5BzE,iBAAkBjO,KAAKiO,iBACvBwB,oBAAqBzP,KAAKuP,cAAcxI,gCACpC/G,KAAKoD,UAAUyQ,iCACf7T,KAAKiH,mBAET2I,cAAe5P,KAAK8T,+BACpBjE,iBAAkB7P,KAAK+T,oCAQd,KAAAD,+BAAkCyB,IAC/CvV,KAAKw8B,eAAejnB,EAAMI,OAAOxN,KAAMoN,EAAMI,OAAOxO,QAOvC,KAAA4M,kCAAoClS,MAAAA,IAC7C0T,EAAMI,OAAOxN,OAAS3B,EAAAA,GAAgBA,EAAAA,GAAgB1B,gCAChD9E,KAAKy8B,uBAAuBlnB,EAAMI,OAAOxO,OAE/CnH,KAAKw8B,eAAejnB,EAAMI,OAAOxN,KAAMoN,EAAMI,OAAOxO,QAS3C,KAAAq1B,eAAiB,CAACr0B,EAAchB,KAC7C,MAAM,WAAEu1B,EAAU,WAAE1vB,EAAU,UAAE5J,GAAcpD,KAAKsP,MACnD,IAAIqtB,EAAax1B,EACI,iBAAVA,IACPw1B,GAAcx1B,GAAS,IAAI2F,QAAQ,IAAIvD,OAAO,OAAQ,MAAO,MAEjEQ,EAAAA,EAAAA,IAAI/J,KAAK4T,iBAAkB,CAAE,CAACzL,GAAOw0B,IAEjC38B,KAAK48B,WACD5vB,EACA0vB,GAAW,OAAM/6B,IAGjB3B,KAAKuP,cAAgB,IAAI5I,EAAAA,EACrB3G,KAAKsD,eACL,IAAI6H,EAAAA,EAAe3K,EAAC,GAAK4C,GAAapD,KAAKo8B,aAAc,IACzDp8B,KAAK8G,iBAET41B,GAAW,EAAO18B,KAAK4T,oBAI3B5T,KAAKuP,cAAgB,IAAI5I,EAAAA,EACrB3G,KAAKsD,eACL,IAAI6H,EAAAA,EAAe3K,EAAC,GAAK4C,GAAapD,KAAKo8B,aAAcp8B,KAAKsP,MAAMtC,gBAAarL,EAAY,IAC7F3B,KAAK8G,iBAIL9G,KAAKuP,cAAc5H,sBAAsB3H,KAAK4T,iBAAkB5T,KAAK4H,gBAAiB5H,KAAKoC,iBAC3Fs6B,GAAW,EAAO18B,KAAK4T,kBAEvB8oB,GAAW,OAAM/6B,KAUZ,KAAAi7B,SAAW,KACxB,MAAMrtB,EAAgBvP,KAAKuP,cAAcvH,iBAAiBhI,KAAKoC,iBAC/D,IAAK,MAAM8F,KAAqBqH,EAC5B,GAAIrH,EAAkBgD,OAAS1E,EAAAA,GAAgB1B,0BAA4B9E,KAAK68B,iBAAiB30B,GAAoB,CACjH,MAAM40B,EAAmB98B,KAAK4T,iBAAiB1L,EAAkBC,MAGjE,GAAI20B,GAAqBA,GAAyC,KAArBA,EACzC,OAAO,EAKnB,OAAO,GAQM,KAAAD,iBAAoB30B,IACjC,GACI60B,EAAAA,iBAAiBC,kBAAkB90B,KAClCA,EAAkB8B,iBAC0B,IAA7C9B,EAAkB8B,gBAAgBpE,OAElC,OAAO,EAGX,IAAK,MAAMyD,KAAkBnB,EAAkB8B,gBAC3C,GAAIX,EAAe6B,OAAS3E,EAAAA,GAA0B2G,SAClD,OAAO,EAIf,OAAO,GAiBM,KAAAuvB,uBAAyB56B,MAAAA,IACtC7B,KAAKoC,gBAAkB+E,QAEjBnH,KAAKkS,cAAc5N,kBAAkBtE,KAAKoC,iBAAiB4T,MAAM1N,IACjDA,EAAOmO,MAAKhO,GAASA,EAAMG,UAAY5I,KAAK4T,iBAAiB3N,SAI3EjG,KAAKw8B,eAAe,QAAS,IAGjCx8B,KAAKiH,kBAAoBqB,KAG7BtI,KAAKw8B,eAAe,2BAA4Bx8B,KAAKoC,kBA9RrD,MAAM,QAAEe,EAAO,KAAE2R,EAAI,UAAE1R,EAAS,UAAE9D,GAAcU,KAAKsP,MACrDtP,KAAK4T,iBAAmB,GACxB5T,KAAKoD,UAAYA,EACjBpD,KAAKsD,eAAiBwR,EAAKxR,eAAegF,QAAU,GACpDtI,KAAK8G,gBAAkBgO,EAAKhO,gBAAgBwB,QAAU,GACtDtI,KAAKiH,kBAAoB6N,EAAKuE,cAAc/Q,QAAU,GACtDtI,KAAKuP,cAAgB,IAAI5I,EAAAA,EACrB3G,KAAKsD,eACL,IAAI6H,EAAAA,EAAe3K,EAAC,GAAK4C,GAAapD,KAAKo8B,aAAc9sB,EAAMtC,gBAAarL,EAAY,IACxF3B,KAAK8G,iBAET9G,KAAKkS,cAAgB,IAAIhP,EAAAA,EAAcC,EAASC,EAAW9D,GAC3DU,KAAK4H,gBAAkB,GACvB5H,KAAKiO,kBAAmBwL,EAAAA,EAAAA,oBACpBzZ,KAAKsP,MAAMnM,QAAQgB,QAAQuV,kBAC3B1Z,KAAKsP,MAAMqK,aACX3Z,KAAKsP,MAAMhQ,WAIZ29B,oBAEHj9B,KAAKq6B,gBAAgBr6B,KAAKsP,OAE1BtP,KAAK6Y,6BAGF8iB,sBAAsBC,EAAiDC,GAC1E,OAAI77B,KAAKyI,QAAUozB,GAAa77B,KAAKsP,MAAMwF,OAAS8mB,EAAU9mB,KAM3D0F,SACH,MAAM,WAAEC,EAAU,OAAEpE,EAAM,SAAEhE,EAAQ,aAAE6qB,GAAiBl9B,KAAKsP,MAGxD4tB,GACAl9B,KAAKq8B,sBAkBT,OAAO5hB,EAfQja,EAAAA,EAAA,GACRR,KAAKsP,OAAK,IACblN,gBAAiBpC,KAAKoC,gBACtB6E,kBAAmBjH,KAAKiH,kBACxBW,gBAAiB5H,KAAK4H,gBACtB8K,sBAAuB1S,KAAK0S,sBAC5BL,SAAAA,EACAzE,UAAWyI,EAAOzI,UAClBuuB,uBAAwB,CACpBrhB,YAAa9a,KAAKsP,MAClB1B,UAAWmN,GAAAA,CAAW,8BAA+B1E,EAAOzI,YAEhEuN,uBAAwBnb,KAAK+R,+BA4M7B8G,6BAA0B,IAAAskB,EAC9B,MAAM,QAAEh5B,GAAYnE,KAAKsP,MAAMnM,QACzBjB,EAAwB,QAAlBi7B,EAAGh5B,EAAQsT,eAAO,IAAA0lB,OAAA,EAAfA,EAAiBljB,4BAEhCja,KAAKy8B,uBAAuBz8B,KAAKkS,cAAc7O,0BAA0BrD,KAAKoC,gBAAiBpC,KAAKsD,eAAgBpB,KAGpH6H,EAAAA,EAAAA,IAAI/J,KAAK4T,iBAAkB,CAAEpO,iBAAkBxF,KAAK2P,uBA1S5CyL,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,wCAECD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,uCAECD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,yCAECD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,sCA6Tf,kGC3WA,MAAM3H,EAAqDhG,IAUtD,IAVuD,YACxDkF,EAAW,QACXD,EAAO,MACP9B,EAAK,SACLwB,EAAQ,MACR5N,EAAK,iBACLqO,EAAgB,WAChBC,EAAU,mBACVI,EAAkB,aAClBC,GACH1F,EACG,OACIC,EAAAA,cAAC8N,EAAAA,KAAInO,OAAAiB,OAAA,GAAKqE,GACLD,EACA9B,EAAMjH,KAAKkC,IACR,MAAM,YAAEsE,EAAW,IAAEpO,EAAG,MAAEoL,EAAK,MAAEkD,EAAK,MAAE3N,GAAUmJ,EAClD,OACI6B,EAAAA,cAAC8N,EAAAA,KAAInO,OAAAiB,OAAA,GAAK6B,EAAW,CAAEpO,IAAKA,IACvBoL,EACAiF,GAAY/B,EACZ3N,MAIZ0P,GACG1E,EAAAA,cAAC8N,EAAAA,KAAInO,OAAAiB,OAAA,GAAK9J,EAAM8O,cACX9O,EAAMwK,MACNxK,EAAMwF,SAGd6I,GAAoBC,EACpBI,GAAsBC,IAoBnC,EAV+E9D,IAC3E,MAAM,uBAAE6sB,EAAsB,uBAAEhhB,GAA2B7L,EAE3D,OACI3B,EAAAA,cAACiU,EAAAA,OAAMtU,OAAAiB,OAAA,GAAK4tB,GACRxuB,EAAAA,cAAC+F,EAAgBpG,OAAAiB,OAAA,GAAK4M,mSCpD3B,MAAMiiB,EAA4D1vB,IAOpE,IAPqE,UACtEc,EAAS,MACTrH,EAAK,UACL4G,EAAS,KACTD,EAAI,iBACJG,EAAgB,SAChBU,GACHjB,EACG,MAAM2D,EAAuB,CACzBzC,QAASJ,EACT,eAAgBA,GAGpB,OACIb,EAAAA,cAAA,SAAOC,UAAU,uDACbD,EAAAA,cAACsC,EAAAA,EAAqB3C,OAAAiB,OAAA,GACd,CACArD,KAAM,WACN0C,UAAW,8BACXzG,MAAAA,EACAwH,SAAAA,EACAF,qBAAsB4C,EACtBpD,iBAAAA,KAGRN,EAAAA,cAAA,QAAMC,UAAU,+DAA+DE,KCjC9EuvB,EAA0D3vB,IAAA,IAAC,KAAEI,GAAMJ,EAAA,OAC5EC,EAAAA,cAAA,KAAGC,UAAU,wCAAwCE,urBCgEzD,IAAMwvB,EAAN,cAAqC3vB,EAAAA,UAoCjCtO,YAAmBiQ,GACfqC,MAAMrC,GA5BU,KAAAlN,gBAA0B,MAYtC,KAAAkB,eAAsC,GAEtC,KAAAwD,gBAAoC,GAI3B,KAAA6I,mBAA6B,EAO7B,KAAAumB,iBAAiDvoB,EAAAA,YAyPjD,KAAAuH,sBAAwBrT,MAAAA,IACrC7B,KAAKmV,sBACL,MAAMtQ,EAAU7E,KAAKuP,cAAclH,qBAAqBC,EAAQtI,KAAKiH,oBACrE8C,EAAAA,EAAAA,IAAI/J,KAAK4T,iBAAkB,CAAE1N,OAAQ,MACrC6D,EAAAA,EAAAA,IAAI/J,KAAK4T,iBAAkB,CAAEzN,QAAStB,EAAQsB,WAC9C4D,EAAAA,EAAAA,IAAI/J,KAAK4T,iBAAkB,CAAE3K,WAAYpE,EAAQoE,cACjDc,EAAAA,EAAAA,IAAI/J,KAAK4T,iBAAkB,CAAE7O,KAAMF,EAAQE,QAC3CgF,EAAAA,EAAAA,IAAI/J,KAAK4T,iBAAkB,CAAE3N,MAAOpB,EAAQoB,SAC5C8D,EAAAA,EAAAA,IAAI/J,KAAK4T,iBAAkB,CAAE5K,aAAcnE,EAAQmE,gBACnDe,EAAAA,EAAAA,IAAI/J,KAAK4T,iBAAkB,CAAE1K,YAAarE,EAAQqE,cAGlDpI,YAAW,MACPiJ,EAAAA,EAAAA,IAAI/J,KAAK4T,iBAAkB,CAAE1N,OAAQrB,EAAQqB,WAC9C,IAOU,KAAAiP,oBAAsB,KACTnV,KAAKuP,cAAcvH,iBACzChI,KAAK4T,iBAAiB9O,0BAA4B9E,KAAKoC,iBAEzC6F,SAAQmN,IAAS,IAAAL,OACYpT,IAAvC3B,KAAK4T,iBAAiBwB,EAAOjN,OAAwC,QAAjB4M,EAAC/U,KAAKiV,mBAAW,IAAAF,GAAhBA,EAAkBpV,sBAAsBiN,SAASwI,EAAOjN,QAC7GnI,KAAKuP,cAAc6F,EAAOjN,MAAQ,OAG1CnI,KAAKsV,oBAOQ,KAAAA,iBAAmB,KAChCtV,KAAK4H,gBAAkB,IAQV,KAAA8N,mBAAqB,CAACvN,EAAchB,MACjD4C,EAAAA,EAAAA,IAAI/J,KAAK4T,iBAAkB,CAAE,CAACzL,GAAOhB,IACrCnH,KAAKuP,cAAc5H,sBAAsB3H,KAAK4T,iBAAkB5T,KAAK4H,gBAAiB5H,KAAKoC,gBAAiB+F,IAO/F,KAAAkyB,gBAAmB/qB,IAChC,MAAM,KAAEwF,GAASxF,GAEjBwK,EAAAA,EAAAA,KACI,IAAMhF,EAAKxR,eAAegF,SAC1B,KAAK,IAAAgyB,EACDt6B,KAAKsD,eAA2C,QAA7Bg3B,EAAGxlB,EAAKxR,eAAegF,cAAM,IAAAgyB,EAAAA,EAAI,OAI5DxgB,EAAAA,EAAAA,KACI,IAAMhF,EAAKhO,gBAAgBwB,SAC3B,KAAK,IAAAiyB,EACDv6B,KAAK8G,gBAA6C,QAA9ByzB,EAAGzlB,EAAKhO,gBAAgBwB,cAAM,IAAAiyB,EAAAA,EAAI,OAI9DzgB,EAAAA,EAAAA,KACI,IAAMhF,EAAKuE,cAAc/Q,SACzB,KAAK,IAAAg0B,EACDt8B,KAAKiH,kBAA6C,QAA5Bq1B,EAAGxnB,EAAKuE,cAAc/Q,cAAM,IAAAg0B,EAAAA,EAAI,OASjD,KAAAvqB,0BAA4B,KAA6B,IAAAwrB,EACtE,OAAO7pB,EAAAA,EAAAA,GAAiB,CACpBtQ,UAAWpD,KAAKoD,UAChBoM,YAAa9I,EAAAA,EAAY82B,QACzBjuB,cAAevP,KAAKuP,cAAcvH,iBAA+D,QAA/Cu1B,EAACv9B,KAAK4T,iBAAiB9O,gCAAwB,IAAAy4B,EAAAA,EAAIv9B,KAAKoC,iBAC1GsN,uBAAwB1P,KAAKoC,gBAC7BuN,mBAAoB3P,KAAK2P,mBACzBN,gBAAiBrP,KAAK4T,iBACtBhM,gBAAiB5H,KAAK4H,gBACtB8K,sBAAuB1S,KAAK0S,sBAC5BjD,oBAAqBzP,KAAKuP,cAAcxI,gCACpC/G,KAAKoD,UAAUyQ,iCACf7T,KAAKiH,mBAETgH,iBAAkBjO,KAAKiO,iBACvB2B,cAAe5P,KAAK8T,+BACpBjE,iBAAkB7P,KAAK+T,kCACvBvB,uBAAwBxS,KAAKsP,MAAM0E,YAAYxB,uBAC/CD,OAAQvS,KAAKy9B,iBACbnrB,SAAUtS,KAAKkU,cAoBN,KAAA0B,iBAAoBxT,IAA2B,IAAAiT,EAC5DrV,KAAKoC,gBAAkBA,EACvB,MAAMs7B,EAAyB19B,KAAKuP,cAAc9H,0BAA0BrF,IAC5E2H,EAAAA,EAAAA,IAAI/J,KAAK4T,iBAAkB,CAAE9O,yBAA0B1C,KACvD2H,EAAAA,EAAAA,IAAI/J,KAAK4T,iBAAkB,CAAEmF,uBAAwB2kB,IACrC,QAAhBroB,EAAArV,KAAKiV,mBAAW,IAAAI,GAAhBA,EAAkBjU,gCAAgCs8B,GAClD19B,KAAKmV,uBAOQ,KAAAiB,6BAA+B,KAC5C,MAAM,OAAEC,GAAWrW,KAAKsP,MAClBgH,EAA8C,GAQpD,OANKD,EAAOE,iBACRD,EAAyB/L,KAAK/D,EAAAA,GAAgBhB,kBAGlD8Q,EAAyB/L,KAAK/D,EAAAA,GAAgByE,WAEvCqL,GAMM,KAAAzB,sBAAwBhT,UACrC,MACIiT,MACIhT,2BAA6BwG,OAAQxG,KAEzC9B,KAAKsP,MAEuC,IAAD4G,EAA3CpU,MAAAA,GAAAA,EAA2BkT,iBACX,QAAhBkB,EAAAlW,KAAKiV,mBAAW,IAAAiB,GAAhBA,EAAkBtW,kBAAkB,yBAA0B,mCAAoCI,KAAKkV,yBAQ9F,KAAApB,+BAAkCyB,IAC/C,MAAMpO,GAASoO,EAAMI,OAAOxO,OAAS,IAAI2F,QAAQ,IAAIvD,OAAO,OAAQ,MAAO,IAC3EvJ,KAAK0V,mBAAmBH,EAAMI,OAAOxN,KAAMhB,IAO9B,KAAA4M,kCAAqCwB,IAClDvV,KAAK0V,mBAAmBH,EAAMI,OAAOxN,KAAMoN,EAAMI,OAAOxO,OAEpDoO,EAAMI,OAAOxN,OAAS3B,EAAAA,GAAgBA,EAAAA,GAAgB1B,2BACtD9E,KAAK4V,iBAAiBL,EAAMI,OAAOxO,QAO1B,KAAAqP,mBAAqB,MAE7BxW,KAAKoC,iBACJpC,KAAKgS,mBAAqBvL,EAAAA,EAAiBwL,KAAOjS,KAAKgS,mBAAqBvL,EAAAA,EAAiBqP,QAKnG9V,KAAKkS,cAAc5N,kBAAkBtE,KAAKoC,iBAAiB4T,MAAM1N,IAC3CA,EAAOmO,MAAKhO,GAASA,EAAMG,UAAY5I,KAAK4T,iBAAiB3N,UAI3E8D,EAAAA,EAAAA,IAAI/J,KAAK4T,iBAAkB,CAAE3N,MAAO,KAExCjG,KAAKiH,kBAAoBqB,MAOhB,KAAAqO,iBAAmB,KAAW,IAAAgnB,EAC3C39B,KAAKsP,MAAM0E,YAAY4C,KAAK,CACxBC,OAAQ7W,KAAK49B,yBAA2B,WAAa,WACrD7mB,OAAQ/W,KAAK+W,OACbzE,SAAUtS,KAAKsS,SACf2B,SAAUjU,KAAKiU,WAGnB,MAAM,eAAE4pB,EAAc,sCAAEC,GAAyE,QAAlCH,EAAG39B,KAAKsP,MAAMwF,KAAKgD,SAASxP,cAAM,IAAAq1B,EAAAA,EAAI,GAEjG39B,KAAK49B,2BACDC,GACA79B,KAAK+9B,+BAAiCD,MAAAA,GAAAA,EACtC99B,KAAKkX,wBAAwBzQ,EAAAA,EAAiB0Q,KAAM0mB,GACpD79B,KAAK+V,sBACE/V,KAAKg+B,gCACZh+B,KAAK+9B,gCAAiC,EACtC/9B,KAAKkX,wBAAwBzQ,EAAAA,EAAiB0Q,KAAMnX,KAAKsX,mBAEzDtX,KAAK+9B,gCAAiC,EACtC/9B,KAAKkX,wBAAwBzQ,EAAAA,EAAiBwL,QAmBzC,KAAAgsB,sCAAyC1oB,IACtDvV,KAAK+9B,+BAAiCxoB,EAAME,cAAc7G,QAEtD5O,KAAK+9B,gCAAkC/9B,KAAKsX,gBAC5CtX,KAAKkX,wBAAwBzQ,EAAAA,EAAiB0Q,KAAMnX,KAAKsX,iBAEzDtX,KAAKkX,wBAAwBzQ,EAAAA,EAAiBwL,IAAKjS,KAAK69B,iBAsG/C,KAAAJ,iBAAmB,KACmF,IAADS,EAAAC,EAAlH,IAAKn+B,KAAKuP,cAAc5H,sBAAsB3H,KAAK4T,iBAAkB5T,KAAK4H,gBAAiB5H,KAAKoC,iBAU5F,OATApC,KAAKsP,MAAM0E,YAAYoqB,aAAY,QAGA,QAA/BF,EAAAl+B,KAAKsP,MAAMwF,KAAKgD,SAASxP,cAAM,IAAA41B,GAA/BA,EAAiCG,gDACF,QADgDF,EAC/En+B,KAAKsP,MAAMwF,KAAKgD,SAASxP,cAAM,IAAA61B,GAA/BA,EAAiCG,mCAEjCt+B,KAAKsP,MAAMwF,KAAKgD,SAASxP,OAAOi2B,+BAA+B,CAAEC,6BAA6B,KAMtGx+B,KAAKy+B,mBAAmBz+B,KAAK4T,kBAC7B5T,KAAKkX,wBAAwBzQ,EAAAA,EAAiB0Q,KAAMnX,KAAK4T,kBACzD5T,KAAK+V,sBAMQ,KAAA9B,SAAW,KACxB,OAAQjU,KAAKgS,kBACT,KAAKvL,EAAAA,EAAiBwL,IACtB,KAAKxL,EAAAA,EAAiBqP,OAClB9V,KAAKsP,MAAMhQ,UAAUo/B,YAAY,uDACjC1+B,KAAKy9B,mBACL,MACJ,KAAKh3B,EAAAA,EAAiB0Q,KAClBnX,KAAKsP,MAAMhQ,UAAUo/B,YAAY,8CAC7B1+B,KAAKqP,kBACLrP,KAAKy+B,mBAAmBz+B,KAAKqP,iBAC7BrP,KAAKkX,wBAAwBzQ,EAAAA,EAAiB0Q,KAAMnX,KAAKqP,iBACzDrP,KAAK+V,sBAET,MACJ,QACI/V,KAAKsP,MAAMhQ,UAAUmF,MAAM,uBAOtB,KAAA6N,SAAW,KACxB,OAAQtS,KAAKgS,kBACT,KAAKvL,EAAAA,EAAiBwL,IACtB,KAAKxL,EAAAA,EAAiBqP,OAClB9V,KAAKsP,MAAMhQ,UAAUo/B,YAAY,uDACjC1+B,KAAKkU,aACLlU,KAAKmV,sBACL,MACJ,KAAK1O,EAAAA,EAAiB0Q,KAClBnX,KAAKsP,MAAMhQ,UAAUo/B,YAAY,8CACjC1+B,KAAKkU,aACL,MACJ,QACIlU,KAAKsP,MAAMhQ,UAAUmF,MAAM,uBAOtB,KAAAsS,OAAS,KACtB/W,KAAKsP,MAAMhQ,UAAUo/B,YAAY,qCAE7B1+B,KAAK+9B,gCAAkC/9B,KAAKsX,iBAAmBtX,KAAKg+B,+BACpEh+B,KAAKkX,wBAAwBzQ,EAAAA,EAAiB0Q,KAAMnX,KAAKsX,iBAEzDtX,KAAKkX,wBAAwBzQ,EAAAA,EAAiBwL,IAAKjS,KAAK69B,gBAE5D79B,KAAKsP,MAAM0E,YAAYoF,cAOV,KAAAqlB,mBAAsB55B,IACnC,GAAI7E,KAAKsP,MAAMwF,KAAKgD,SAASxP,OAAQ,CACjC,MAAMq2B,EAAiBn+B,EAAA,GAAQqE,GAE3BA,EAAQC,2BAA6B65B,EAAkB5lB,yBACvD4lB,EAAkB5lB,uBAAyB/Y,KAAKuP,cAAc9H,0BAA0B5C,EAAQC,2BAGpG9E,KAAKsP,MAAMwF,KAAKgD,SAASxP,OAAOs2B,qBAAqB,CACjDD,kBAAAA,EACA1J,qBAAsB,CAClB6I,sCAAuC99B,KAAK+9B,oCAS3C,KAAA7pB,WAAa,KAC1BlU,KAAKkX,wBAAwBzQ,EAAAA,EAAiB0Q,KAAMnX,KAAK69B,gBACzD79B,KAAK+V,sBAQQ,KAAAmB,wBAA0B,CAAC+B,EAA6B5J,KACrErP,KAAKgS,iBAAmBiH,EACxBjZ,KAAKqP,gBAAkBA,EAEnBrP,KAAKgS,mBAAqBvL,EAAAA,EAAiBwL,KAAOjS,KAAKgS,mBAAqBvL,EAAAA,EAAiBqP,SAC7F9V,KAAK4T,iBAAmBpT,EAAA,GAAKR,KAAKqP,kBAAqB,IACvDtF,EAAAA,EAAAA,IAAI/J,KAAK4T,iBAAkB,CACvB9O,yBAA0B9E,KAAK4T,iBAAiB9O,0BAA4B9E,KAAKoC,mBAErF2H,EAAAA,EAAAA,IAAI/J,KAAK4T,iBAAkB,CAAEpO,iBAAkBxF,KAAK4T,iBAAiBpO,kBAAoBxF,KAAK2P,uBAOrF,KAAAoG,mBAAqB,KAC9B/V,KAAKgS,mBAAqBvL,EAAAA,EAAiB0Q,KAC3CnX,KAAKsP,MAAM0E,YAAYkF,UAEvBlZ,KAAKsP,MAAM0E,YAAYoF,cAKd,KAAAylB,iBAAoB76B,IACjChE,KAAKsP,MAAMhQ,UAAUmF,MAAMT,GAC3BhE,KAAKsP,MAAM0E,YAAYoqB,aAAY,GACnCp+B,KAAKsP,MAAM0E,YAAYoF,aACvBpZ,KAAK8+B,SAAS,CACV96B,aAAAA,KAtuBJ,MAAM,QAAEb,EAAO,KAAE2R,EAAI,UAAE1R,EAAS,UAAE9D,GAAcU,KAAKsP,MAErDtP,KAAK4T,iBAAmB,GACxB5T,KAAK4H,gBAAkB,GACvB5H,KAAK+9B,gCAAiC,EACtC/9B,KAAKoD,UAAYA,EACjBpD,KAAKgS,iBAAmBvL,EAAAA,EAAiB4Q,KACzCrX,KAAK8G,gBAAkBgO,EAAKhO,gBAAgBwB,QAAU,GACtDtI,KAAKsD,eAAiBwR,EAAKxR,eAAegF,QAAU,GACpDtI,KAAKiH,kBAAoB6N,EAAKuE,cAAc/Q,QAAU,GACtDtI,KAAKkS,cAAgB,IAAIhP,EAAAA,EAAcC,EAASC,EAAW9D,GAC3DU,KAAKuP,cAAgB,IAAI5I,EAAAA,EACrB3G,KAAKsD,eACL,IAAI6H,EAAAA,EAAe3K,EAAC,GAAK4C,GAAapD,KAAKoW,gCAC3CpW,KAAK8G,iBAET9G,KAAKiO,kBAAmBwL,EAAAA,EAAAA,oBACpBzZ,KAAKsP,MAAMnM,QAAQgB,QAAQuV,kBAC3B1Z,KAAKsP,MAAMqK,aACX3Z,KAAKsP,MAAMhQ,WAGfU,KAAKyI,MAAQ,CACTkS,eAAe,EACfE,0BAA0B,EAC1BkkB,8BAA8B,EAC9B/6B,aAAc,IAMf,0BAAuB,IAAAg7B,EAC1B,MACI77B,SAAS,UACL7D,EACAkF,eACIoV,gBAAgB,QAAEnC,KAG1BpB,QAAQ,sBAAEwD,EAAqB,mBAAEta,IACjCS,KAAKsP,MAoDT,GAjDAtP,KAAKq6B,gBAAgBr6B,KAAKsP,OAE1BtP,KAAKsP,MAAMwF,KAAKgD,SAAS9B,MAAK,KAC1BhW,KAAK6Y,6BACL7Y,KAAK2W,uBAGTmD,EAAAA,EAAAA,KACI,IAAM9Z,KAAKoC,kBACX,KACIpC,KAAKwW,yBAIbsD,EAAAA,EAAAA,KACI,IAAM9Z,KAAKgS,mBACX,KACIhS,KAAKwW,yBAIbsD,EAAAA,EAAAA,KACI,IAAM9Z,KAAKsP,MAAMwF,KAAKgD,SAASxP,QAAUtI,KAAKsP,MAAMwF,KAAKgD,SAASxP,OAAOgP,kBACzEA,IACQtX,KAAKsP,MAAM0E,YAAYvB,aACnB6E,GAAmBtX,KAAK+9B,gCACxB/9B,KAAK+9B,gCAAiC,EACtC/9B,KAAKkX,wBAAwBzQ,EAAAA,EAAiB0Q,KAAMG,IAC7CA,GAAmBtX,KAAK+9B,gCAC/B/9B,KAAKkX,wBAAwBzQ,EAAAA,EAAiB0Q,KAAMG,QAMpEwC,EAAAA,EAAAA,KACI,IAAM9Z,KAAK49B,2BACXA,IAKY,IAADqB,EAJHrB,EACI59B,KAAKsP,MAAM0E,YAAY2jB,YACvB33B,KAAK+W,UAGsB,QAA/BkoB,EAAAj/B,KAAKsP,MAAMwF,KAAKgD,SAASxP,cAAM,IAAA22B,GAA/BA,EAAiCC,qBAAqB,IACtDl/B,KAAKsP,MAAM0E,YAAYmrB,gBAK/BtlB,EAAuB,CACvB,GAAIpC,IAAYA,EAAQjY,eAEpB,YADAF,EAAUmF,MAAM,8BAIpB,GAAIgT,IAAYA,EAAQsC,gBAEpB,YADAza,EAAUmF,MAAM,4BAIpB,MAAMlE,EAAOC,EAAA,GAA6BjB,GAC1CS,KAAKiV,YAAc,IAAI7V,EAAAA,EACnBE,EACAiB,EACAkX,MAAAA,OAAO,EAAPA,EAASjY,eACTiY,MAAAA,OAAO,EAAPA,EAASwC,4BACTxC,MAAAA,OAAO,EAAPA,EAASyC,oBAKTla,KAAKsP,MAAMwF,KAAKhT,0BAA0BwG,QACzCtI,KAAKgS,mBAAqBvL,EAAAA,EAAiBwL,KAAOjS,KAAKgS,mBAAqBvL,EAAAA,EAAiBqP,cAExF9V,KAAKiV,YAAYrT,kBAAkB5B,KAAKsP,MAAMwF,KAAKhT,4BAG7DgY,EAAAA,EAAAA,KACI,SAAAK,EAAA,OACoD,QAAhDA,EAAAna,KAAKsP,MAAMwF,KAAKhT,0BAA0BwG,cAAM,IAAA6R,OAAA,EAAhDA,EAAkDpY,cACjD/B,KAAKgS,mBAAqBvL,EAAAA,EAAiBwL,KAAOjS,KAAKgS,mBAAqBvL,EAAAA,EAAiBqP,WAClGjU,UAAW,IAAAmY,QACe,QAAtBA,EAAMha,KAAKiV,mBAAW,IAAA+E,OAAA,EAAhBA,EAAkBpY,kBAAkB5B,KAAKsP,MAAMwF,KAAKhT,gCAIlEgY,EAAAA,EAAAA,KACI,SAAAO,EAAA,OAAsD,QAAtDA,EAAMra,KAAKsP,MAAMwF,KAAKhT,0BAA0BwG,cAAM,IAAA+R,OAAA,EAAhDA,EAAkDrF,kBACxDnT,gBACU7B,KAAK6U,2BAKY,QAAnCmqB,EAAIh/B,KAAKsP,MAAMwF,KAAKgD,SAASxP,cAAM,IAAA02B,GAA/BA,EAAiCI,6CACjCtlB,EAAAA,EAAAA,KACI,SAAAulB,EAAA,OAAqC,QAArCA,EAAMr/B,KAAKsP,MAAMwF,KAAKgD,SAASxP,cAAM,IAAA+2B,OAAA,EAA/BA,EAAiCC,iBACvCA,IAEQA,GACAA,EAAcC,gBAAkBC,EAAAA,cAAclC,wBAC9CgC,EAAct7B,cAEdhE,KAAK6+B,iBAAiBS,EAAct7B,kBAKhD8V,EAAAA,EAAAA,KACI,SAAA2lB,EAAA,OAAqC,QAArCA,EAAMz/B,KAAKsP,MAAMwF,KAAKgD,SAASxP,cAAM,IAAAm3B,OAAA,EAA/BA,EAAiCC,sBACvCA,IACQA,IAAuB/I,EAAAA,eAAe2G,yBACtCrH,EAAAA,EAAAA,GAAqBj2B,KAAKk2B,iBAAkBl2B,KAAKsP,MAAMnM,QAAQqB,mBAO5E,2BACuG,IAAD8V,EAIlGF,EAJHpa,KAAKgS,mBAAqBvL,EAAAA,EAAiBwL,KAAOjS,KAAKgS,mBAAqBvL,EAAAA,EAAiBqP,OACzC,QAApDwE,EAAIta,KAAKsP,MAAMwF,KAAKhT,0BAA0BwG,cAAM,IAAAgS,GAAhDA,EAAkDtF,sBAC5ChV,KAAK6U,wBAGC,QAAhBuF,EAAApa,KAAKiV,mBAAW,IAAAmF,GAAhBA,EAAkB9Y,qBAInBq6B,sBACHC,EACAC,GAEA,OAAI77B,KAAKyI,QAAUozB,GAAa77B,KAAKsP,MAAMwF,OAAS8mB,EAAU9mB,KAM3D0F,SACH,IAAKxa,KAAK49B,0BAA4B59B,KAAK2/B,gCACvC,OAAO,KAGX,MAAM,UACFv8B,EACA4Q,aAAa,SAAE3B,IACfrS,KAAKsP,OAEH,WAAEmL,EAAU,OAAEpE,GAAWrW,KAAKsP,MAE9BtL,EAAehE,KAAKyI,MAAMzE,aA0ChC,OAAOyW,EAxCQja,EAAAA,EAAA,GACRR,KAAKsP,OAAK,IACb0C,iBAAkBhS,KAAKgS,iBACvB3C,gBAAiBrP,KAAKqP,gBACtBuE,iBAAkB5T,KAAK4T,iBACvBxR,gBAAiBpC,KAAKoC,gBACtB6E,kBAAmBjH,KAAKiH,kBACxBW,gBAAiB5H,KAAK4H,gBACtB8K,sBAAuB1S,KAAK0S,sBAC5B9E,UAAWyI,EAAOzI,UAClB8M,UAAW,CACPC,cAAe3a,KAAKqP,iBAAmBrP,KAAKgS,mBAAqBvL,EAAAA,EAAiB0Q,KAClF0D,yBAA0B7a,KAAKgS,mBAAqBvL,EAAAA,EAAiB0Q,KACrE4nB,6BAA8B/+B,KAAKg+B,gCAAkCh+B,KAAKsP,MAAM0E,YAAYvB,YAEhG6qB,uBAAwB,CACpBxiB,YAAa9a,KAAKsP,MAClB1B,UAAWmN,GAAAA,CAAW,8BAA+B1E,EAAOzI,YAEhE+E,QAAShF,EAAAA,cAAC0vB,EAAqB/vB,OAAAiB,OAAA,GAAK,CAAET,KAAM1K,EAAUw8B,gCACtDtvB,MAAO+B,GAAYrO,GAAgB2J,EAAAA,cAACiqB,EAAAA,EAActqB,OAAAiB,OAAA,GAAK,CAAEU,MAAO7L,EAAUy8B,kBAAmB51B,QAASjG,KACtGkyB,iBAAkBl2B,KAAKk2B,iBAEvB4J,uBACInyB,EAAAA,cAACyvB,EAAsB9vB,OAAAiB,OAAA,GACf,CACAC,UAAWxO,KAAK+9B,+BAChB7yB,KAAM,WACN/D,MAAO,OACP4G,UAAW3K,EAAU28B,sCACrBjyB,KAAM1K,EAAU48B,iCAChB/xB,iBAAkBjO,KAAKiO,iBACvBU,SAAU3O,KAAKi+B,yCAI3BjjB,YAAahb,KAAKib,qBAClBE,uBAAwBnb,KAAK+R,+BAsH7BkJ,qBACuB,IAADglB,EAA1B,OAAIjgC,KAAKqP,iBACEsB,EAAAA,EAAAA,GAAY,CACf9L,QAAS7E,KAAKqP,gBACdE,cAAevP,KAAKuP,cAAcvH,iBAA8D,QAA9Ci4B,EAACjgC,KAAKqP,gBAAgBvK,gCAAwB,IAAAm7B,EAAAA,EAAI,IACpGn5B,gBAAiB9G,KAAK8G,kBAIvB,KA0HH+R,6BAA0B,IAAAskB,EAC9B,MAAM,QAAEh5B,GAAYnE,KAAKsP,MAAMnM,QACzBjB,EAAwB,QAAlBi7B,EAAGh5B,EAAQsT,eAAO,IAAA0lB,OAAA,EAAfA,EAAiBljB,4BAEhCja,KAAKoC,gBAAkBpC,KAAKkS,cAAc7O,0BAA0BrD,KAAKoC,gBAAiBpC,KAAKsD,eAAgBpB,GAiBzG,qCAA0C,IAAAg+B,EAAAC,EAAAC,EAAAC,EAChD,MAAM,QAAEl8B,GAAYnE,KAAKsP,MAAMnM,SAEzB,4BAAEoU,EAA2B,aAAE+B,GAAiBtZ,KAAKsP,MAAMwF,KAC3DhD,EAAuD,QAAtBouB,EAAG5mB,EAAahR,cAAM,IAAA43B,GAAiE,QAAjEA,EAAnBA,EAAqBz8B,MAAK8V,GAF9B,oEAEyCA,EAAQxT,cAAuC,IAAAm6B,OAAA,EAApFA,EACpC1mB,UAEAhC,EAAwC,QAAlB2oB,EAAGh8B,EAAQsT,eAAO,IAAA0oB,OAAA,EAAfA,EAAiBzoB,uBAC1CC,EAAuC,QAAlByoB,EAAGj8B,EAAQsT,eAAO,IAAA2oB,OAAA,EAAfA,EAAiBxoB,sBAG/C,OAAsC,QAA/ByoB,EAAArgC,KAAKsP,MAAMwF,KAAKgD,SAASxP,cAAM,IAAA+3B,IAA/BA,EAAiCtoB,aAAaY,kBAE/C7G,GACE9R,KAAKsP,MAAMwF,KAAKgD,SAASxP,QAAUtI,KAAKsP,MAAMwF,KAAKgD,SAASxP,OAAOyP,aAAaC,KAAKC,WAAc,IAAIxB,MAAK0B,IAAQ,IAAAC,EAAA,OAClHD,EAASE,cAA0C,KAA1BF,EAASE,aAC5BF,EAASE,gBAC6B,QADjBD,EACjBb,EAA4BjP,cAAM,IAAA8P,GAAyB,QAAzBA,EAAlCA,EAAoCE,+BAAuB,IAAAF,OAAA,EAA3DA,EAA6D3U,MACzD8U,GAAgBA,IAAiBJ,EAASE,iBACzCF,EAASE,eAAiBV,EACnCQ,MAERnY,KAAKsP,MAAMwF,KAAKgD,SAASxP,QAAUtI,KAAKsP,MAAMwF,KAAKgD,SAASxP,OAAOyP,aAAaC,KAAKC,WAAc,IAAIxB,MAAK0B,GAC1GA,EAASE,cAA0C,KAA1BF,EAASE,aAC5BF,EAASE,eAAiBb,GAA0BW,EAASE,eAAiBV,EAC9EQ,KAIV,qBAA0B,IAAAmoB,EAChC,OAAsC,QAAtCA,EAAOtgC,KAAKsP,MAAMwF,KAAKgD,SAASxP,cAAM,IAAAg4B,OAAA,EAA/BA,EAAiCzC,eAGlC,sBAA2B,IAAA0C,EACjC,OAAsC,QAAtCA,EAAOvgC,KAAKsP,MAAMwF,KAAKgD,SAASxP,cAAM,IAAAi4B,OAAA,EAA/BA,EAAiCjpB,gBAGlC,uBACN,MAAM6e,EAAgBn2B,KAAKsP,MAAMwF,KAAKgD,SAASxP,OAC/C,OAAO6tB,MAAAA,GAAAA,EAAeqK,cAAgBrK,EAAcqK,cAAgB,EAG9D,6BACN,MAAMrK,EAAgBn2B,KAAKsP,MAAMwF,KAAKgD,SAASxP,OAC/C,OAAK6tB,GAAkBA,EAAcsK,gBAG9BtK,EAAcsK,gBAAgBC,QAAO,CAACC,EAAeC,IACjDD,GAASC,EAASC,SAAW,IACrC,GAJQ,EAOL,+BAAoC,IAAAC,EAC1C,MAAM3K,EAAgBn2B,KAAKsP,MAAMwF,KAAKgD,SAASxP,OAG/C,OAA2C,QAA3Cw4B,EAAO3K,MAAAA,OAAa,EAAbA,EAAe4K,6BAAqB,IAAAD,EAAAA,EAFrB,EAKhB,uBACN,MACIhsB,MAAM,SAAEgD,GAAU,OAClBzB,GACArW,KAAKsP,MACT,IAAKwI,EAASxP,OACV,OAAO,EAGX,MAAM04B,EAAiBlpB,EAASxP,OAC1B0P,EAAOgpB,EAAejpB,aAAaC,KACzC,IAAKA,IAASA,EAAKC,WAAuC,IAA1BD,EAAKC,UAAUrS,OAC3C,OAAO,EAGX,MAAM,kBAAEq7B,EAAiB,qBAAEC,GAAyBF,EAC9CG,EAA6B9qB,EAAO+qB,mBAAqBH,GAAqBC,EAKpF,OAFmBlpB,EAAKqpB,aAAe,GAAKrhC,KAAKshC,uBAAyBthC,KAAKuhC,iBAAmBvhC,KAAKwhC,yBAEpF,IAAML,EAGnB,+BAAoC,IAAAM,EAAAC,EAC1C,OACI1hC,KAAK2hC,qBACqB,QAAzBF,EAACzhC,KAAKsP,MAAMwF,KAAKgD,gBAAQ,IAAA2pB,GAAQ,QAARA,EAAxBA,EAA0Bn5B,cAAM,IAAAm5B,GAAhCA,EAAkCG,qCACN,QAAzBF,EAAC1hC,KAAKsP,MAAMwF,KAAKgD,gBAAQ,IAAA4pB,GAAQ,QAARA,EAAxBA,EAA0Bp5B,cAAM,IAAAo5B,IAAhCA,EAAkCG,uBAItC,sCACN,OAAO1M,EAAAA,GAAsBn1B,KAAKsP,MAAMnM,QAAQgB,UAAwD,IAA5C29B,EAAAA,sBAAsBC,qBAznB1E3mB,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,wCAECD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,sDAECD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,uCAECD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,wCAECD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,uCAECD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,yCAECD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,uCAECD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,6CA4QXD,EAAAA,EAAAA,IAAA,CADCnY,EAAAA,IAAM,6CAsBPmY,EAAAA,EAAAA,IAAA,CADCnY,EAAAA,IAAM,2CAiBPmY,EAAAA,EAAAA,IAAA,CADCnY,EAAAA,IAAM,wCA+NGmY,EAAAA,EAAAA,IAAA,CAATE,EAAAA,IAAQ,oDA6BCF,EAAAA,EAAAA,IAAA,CAATE,EAAAA,IAAQ,oCAICF,EAAAA,EAAAA,IAAA,CAATE,EAAAA,IAAQ,qCAICF,EAAAA,EAAAA,IAAA,CAATE,EAAAA,IAAQ,sCAKCF,EAAAA,EAAAA,IAAA,CAATE,EAAAA,IAAQ,4CAUCF,EAAAA,EAAAA,IAAA,CAATE,EAAAA,IAAQ,8CAOCF,EAAAA,EAAAA,IAAA,CAATE,EAAAA,IAAQ,sCAwBCF,EAAAA,EAAAA,IAAA,CAATE,EAAAA,IAAQ,8CAQCF,EAAAA,EAAAA,IAAA,CAATE,EAAAA,IAAQ,qDA8ITF,EAAAA,EAAAA,IAAA,CADCnY,EAAAA,IAAM,uCAtwBLq6B,GAAsBliB,EAAAA,EAAAA,IAAA,CAF3BG,EAAAA,gBACAC,EAAAA,IACK8hB,GAixBN,wGC10BA,MAAM3sB,EAA2CjD,IAA6B,IAA5B,cAAEkD,EAAa,MAAEC,GAAOnD,EACtE,OACIC,EAAAA,cAAC8N,EAAAA,KAAInO,OAAAiB,OAAA,GAAKqC,GACLC,EAAMjH,KAAKkC,GACD6B,EAAAA,cAAAA,EAAAA,SAAA,KAAG7B,EAAKkF,iBAoBzB0C,EAAqDgI,IAUtD,IAVuD,YACxD9I,EAAW,QACXD,EAAO,MACP9B,EAAK,SACLwB,EAAQ,MACR5N,EAAK,iBACLqO,EAAgB,WAChBC,EAAU,mBACVI,EAAkB,aAClBC,GACHsI,EACG,OACI/N,EAAAA,cAAC8N,EAAAA,KAAInO,OAAAiB,OAAA,GAAKqE,GACLD,EACA9B,EAAMjH,KAAKkC,IACR,MAAM,YAAEsE,EAAW,IAAEpO,EAAG,MAAEoL,EAAK,MAAEkD,EAAK,MAAE3N,GAAUmJ,EAClD,OACI6B,EAAAA,cAAC8N,EAAAA,KAAInO,OAAAiB,OAAA,GAAK6B,EAAW,CAAEpO,IAAKA,IACvBoL,EACAkD,EACA3N,MAIZ0P,GACG1E,EAAAA,cAAC8N,EAAAA,KAAInO,OAAAiB,OAAA,GAAK9J,EAAM8O,cACX9O,EAAMwK,MACNxK,EAAMwF,SAGd6I,GAAoBC,EACpBI,GAAsBC,IAiCnC,EAvB+E9D,IAC3E,MAAM,uBACFguB,EAAsB,iBACtBpH,EAAgB,MAChB5lB,EAAK,UACLoK,EAAS,QACT/H,EAAO,uBACPmtB,EAAsB,YACtB9kB,EAAW,uBACXG,GACA7L,EAEJ,OACI3B,EAAAA,cAACiU,EAAAA,OAAMtU,OAAAiB,OAAA,GAAK+uB,EAAsB,CAAE0E,IAAK9L,IACpCvjB,EACArC,EACAoK,EAAUqkB,8BAAgCe,EAC1CplB,EAAUC,eAAiBhN,EAAAA,cAACgD,EAAWrD,OAAAiB,OAAA,GAAKyM,IAC5CN,EAAUG,0BAA4BlN,EAAAA,cAAC+F,EAAgBpG,OAAAiB,OAAA,GAAK4M,iTC3DlE,MAAM8mB,EAAqEv0B,IAM7E,IAN8E,gBAC/Ew0B,EAAe,UACfrqB,EAAS,MACT5I,EAAK,UACLkzB,EAAS,UACT/+B,GACHsK,EACG,MASM00B,GAAgBC,EAAAA,EAAAA,UAAS,CAAEC,QAASC,EAAAA,YAAYC,QAASr/B,QAT9C,CACbs/B,aAAc,CACVC,GAAI,CAAEC,EAAG,KACTC,GAAI,CAAED,EAAG,KACTE,GAAI,CAAEF,EAAG,MACTG,GAAI,CAAEH,EAAG,MACTI,GAAI,CAAEJ,EAAG,UAIXK,EAAiC,OAAlBZ,GAA4C,OAAlBA,EAE/C,IAAKpL,EAAAA,gBAAgBC,YAAYpf,GAC7B,OAAO,KAGX,OACIlK,EAAAA,cAAA,OAAKC,UAAW,GAAGs0B,mBACfv0B,EAAAA,cAAA,OAAKC,UAAW,GAAGs0B,0BACfv0B,EAAAA,cAAA,OAAKC,UAAW,GAAGs0B,+BAA8CjzB,GACjEtB,EAAAA,cAAA,OAAKC,UAAW,GAAGs0B,+BAA8CC,IAErEx0B,EAAAA,cAAA,OAAKC,UAAW,GAAGs0B,yBACdrqB,EAAUjO,KAAKuO,IACZ,MAAM8qB,EAAY9qB,EAAS+qB,SAT1B,EAUD,IAAIt1B,EAAY,GAAGs0B,gCAKnB,OAHIe,IACAr1B,EAAYmN,GAAAA,CAAWnN,EAAW,wBAGlCD,EAAAA,cAAA,OAAKC,UAAWA,EAAW5L,IAAKmW,EAASgrB,QACrCx1B,EAAAA,cAACy1B,EAAAA,GAAK91B,OAAAiB,OAAA,GAAK4J,EAASkrB,aACnBL,EACKC,GACIt1B,EAAAA,cAAA,OACIE,KAVT,OAUmB,cACEuH,EAAAA,EAAAA,QAAOhS,EAAUkgC,oBAAqBnrB,EAAS+qB,SAAU/qB,EAASkrB,WAAWE,SACzF31B,UAAW,GAAGs0B,uCAEb/pB,EAAS+qB,UAGlBD,GACIt1B,EAAAA,cAAA,yBACqBwK,EAASgrB,OAAM,cACpB,OACZv1B,UAAW,GAAGs0B,uCAEb/pB,EAAS+qB,WAGtBF,GAAgBC,GACdt1B,EAAAA,cAAA,QAAM9B,GAAIsM,EAASgrB,OAAQv1B,UAAU,+BAChCwH,EAAAA,EAAAA,QAAOhS,EAAUkgC,oBAAqBnrB,EAAS+qB,SAAU/qB,EAASkrB,WAAWE,iBAcrGC,EAAuC,CAChDC,UAAW,CACPf,GAAI,CAAEgB,EAAG,6BAA8Bf,EAAG,IAAKgB,EAAG,KAClDb,GAAI,CAAEY,EAAG,6BAA8Bf,EAAG,IAAKgB,EAAG,KAClDZ,GAAI,CAAEW,EAAG,6BAA8Bf,EAAG,IAAKgB,EAAG,MAEtDC,UAAU,EACVC,QAAS,ymBCEb,IAAMpyB,EAAN,cAAsC9D,EAAAA,UA6ClCtO,YAAmBiQ,GAA4B,IAAAw0B,EAC3CnyB,MAAMrC,GAvCU,KAAAlN,gBAA0B,MAI1B,KAAAiE,kBAA+B,GAU/B,KAAAuL,2BAAsC,GAMlD,KAAAtO,eAAsC,GAEtC,KAAAwD,gBAAoC,GAI3B,KAAA6I,mBAA6B,EAM7B,KAAAkC,8BAAwC,kEAEjD,KAAAC,mCAA8C,EAErC,KAAAokB,iBAAiDvoB,EAAAA,YAySjD,KAAAo2B,iBAAmBliC,UAChC,MAAMmiC,EAA8BhkC,KAAKikC,2BACnCpsB,EAAoC,GAE1C,IAAK,IAAD8lB,EACA,MAAMuG,QAAiBlkC,KAAKmkC,yBACO,QAA/BxG,EAAA39B,KAAKsP,MAAMwF,KAAKgD,SAASxP,cAAM,IAAAq1B,OAAA,EAA/BA,EAAiC5lB,aAAaC,KAAKosB,YAAa,EAChEJ,GAEJ,IAAK,MAAMK,KAAQL,EAAiB,CAChC,MAAMM,EAAqCJ,EAASzgC,MAAK8gC,GAAKA,EAAEn+B,WAAai+B,EAAKG,YAClF3sB,EAAUtN,KAAK,CAAE4N,SAAUksB,EAAMC,QAAAA,IAErCtkC,KAAK8+B,SAAS,CAAE2F,eAAgB5sB,IAClC,MAAOpT,GACLzE,KAAKsP,MAAMhQ,UAAUmF,MAAMA,GAC3BzE,KAAK8+B,SAAS,CAAE2F,eAAgB,OASvB,KAAAvvB,sBAAwBrT,MAAAA,IACrC7B,KAAKmV,sBACL,MAAMtQ,EAAU7E,KAAKuP,cAAclH,qBAAqBC,EAAQtI,KAAKiH,oBAErE8C,EAAAA,EAAAA,IAAI/J,KAAK4T,iBAAkB,CAAE1N,OAAQ,MACrC6D,EAAAA,EAAAA,IAAI/J,KAAK4T,iBAAkB,CAAEzN,QAAStB,EAAQsB,WAC9C4D,EAAAA,EAAAA,IAAI/J,KAAK4T,iBAAkB,CAAE3K,WAAYpE,EAAQoE,cACjDc,EAAAA,EAAAA,IAAI/J,KAAK4T,iBAAkB,CAAE7O,KAAMF,EAAQE,QAC3CgF,EAAAA,EAAAA,IAAI/J,KAAK4T,iBAAkB,CAAE3N,MAAOpB,EAAQoB,SAC5C8D,EAAAA,EAAAA,IAAI/J,KAAK4T,iBAAkB,CAAE5K,aAAcnE,EAAQmE,gBACnDe,EAAAA,EAAAA,IAAI/J,KAAK4T,iBAAkB,CAAE1K,YAAarE,EAAQqE,cAGlDpI,YAAW,MACPiJ,EAAAA,EAAAA,IAAI/J,KAAK4T,iBAAkB,CAAE1N,OAAQrB,EAAQqB,WAXjC,IAmBH,KAAAiP,oBAAsB,KACnC,MAAMjN,EAAoBlI,KAAKuP,cAAcvH,iBACzChI,KAAK4T,iBAAiB9O,0BAA4B9E,KAAKoC,iBAE3D,IAAK,MAAMsiC,KAAiBx8B,EAAmB,CAAC,IAAD6M,OAEOpT,IAA9C3B,KAAK4T,iBAAiB8wB,EAAcv8B,OACnB,QAAjB4M,EAAC/U,KAAKiV,mBAAW,IAAAF,GAAhBA,EAAkBpV,sBAAsBiN,SAAS83B,EAAcv8B,QAEhEnI,KAAKuP,cAAcm1B,EAAcv8B,MAAQ,IAGjDnI,KAAKsV,oBAOQ,KAAAA,iBAAmB,KAChCtV,KAAK4H,gBAAkB,IAgBV,KAAAyyB,gBAAmB/qB,IAChC,MAAM,KAAEwF,GAASxF,GAEjBwK,EAAAA,EAAAA,KACI,IAAMhF,EAAKxR,eAAegF,SAC1B,KAAK,IAAAgyB,EACDt6B,KAAKsD,eAA2C,QAA7Bg3B,EAAGxlB,EAAKxR,eAAegF,cAAM,IAAAgyB,EAAAA,EAAI,OAI5DxgB,EAAAA,EAAAA,KACI,IAAMhF,EAAKhO,gBAAgBwB,SAC3B,KAAK,IAAAiyB,EACDv6B,KAAK8G,gBAA6C,QAA9ByzB,EAAGzlB,EAAKhO,gBAAgBwB,cAAM,IAAAiyB,EAAAA,EAAI,OAI9DzgB,EAAAA,EAAAA,KACI,IAAMhF,EAAKjQ,QAAQyD,SACnB,KAAK,IAAAkyB,EACDx6B,KAAKqG,kBAAuC,QAAtBm0B,EAAG1lB,EAAKjQ,QAAQyD,cAAM,IAAAkyB,EAAAA,EAAI,OAIxD1gB,EAAAA,EAAAA,KACI,IAAMhF,EAAKuE,cAAc/Q,SACzB,KAAK,IAAAg0B,EACDt8B,KAAKiH,kBAA6C,QAA5Bq1B,EAAGxnB,EAAKuE,cAAc/Q,cAAM,IAAAg0B,EAAAA,EAAI,OAI9DxiB,EAAAA,EAAAA,KACI,IAAMhF,EAAKwE,aAAahR,SACxB,KAAK,IAAAq8B,EACD3kC,KAAK8R,kCAA4D,QAA3B6yB,EAAG7vB,EAAKwE,aAAahR,cAAM,IAAAq8B,GAEhE,QAFgEA,EAAxBA,EAA0BlhC,MAC/D8V,GAAWA,EAAQxT,OAAS/F,KAAK6R,uCACpC,IAAA8yB,OAAA,EAFwCA,EAEtCnrB,cASE,KAAAyqB,yBAA2B,KAAiB,IAAA/F,EAAAC,EACzD,OAA2G,QAA3GD,EAAsC,QAAtCC,EAAOn+B,KAAKsP,MAAMwF,KAAKgD,SAASxP,cAAM,IAAA61B,GAA6B,QAA7BA,EAA/BA,EAAiCpmB,aAAaC,KAAKC,iBAAS,IAAAkmB,OAAA,EAA5DA,EAA8DjmB,QAAOmsB,GAAQrkC,KAAK4kC,YAAYP,YAAM,IAAAnG,EAAAA,EAAI,IAQlG,KAAA0G,YAAeP,GACrBrkC,KAAK6kC,iBAAiBR,EAAKhsB,qBAA8C1W,IAA5B0iC,EAAKS,oBAAgE,KAA5BT,EAAKS,oBAQrF,KAAAD,iBAAoBtsB,IAA6C,IAAAwsB,EAAA7E,EAC9E,MAAM1oB,EAA2D,QAArCutB,EAAG/kC,KAAKsP,MAAMnM,QAAQgB,QAAQsT,eAAO,IAAAstB,OAAA,EAAlCA,EAAoCrtB,wBAE7D,4BAAEH,EAA2B,aAAE+B,GAAiBtZ,KAAKsP,MAAMwF,KAGjE,IAF6D,QAAtBorB,EAAG5mB,EAAahR,cAAM,IAAA43B,GAAiE,QAAjEA,EAAnBA,EAAqBz8B,MAAK8V,GAF9B,oEAEyCA,EAAQxT,cAAuC,IAAAm6B,OAAA,EAApFA,EACpC1mB,iBACoD7X,IAAjB4W,EAA4B,CAAC,IAADH,EACjE,MAAM4sB,EAAuD,QAArC5sB,EAAGb,EAA4BjP,cAAM,IAAA8P,GAAyB,QAAzBA,EAAlCA,EAAoCE,+BAAuB,IAAAF,OAAA,EAA3DA,EAA6D3B,MACpFwuB,GAAcA,IAAe1sB,IAEjC,YAA8B5W,IAAvBqjC,GAAmCA,EAE9C,YAAwBrjC,IAAjB4W,QAAyD5W,IAA3B6V,GAAwCe,IAAiBf,GASjF,KAAA2sB,wBAA0BtiC,MAAOqjC,EAAmBrtB,KACjE,MAAMrT,EAAgBxE,KAAKsP,MAAMnM,QAAQqB,cACnC2gC,EAAgBttB,EACjBK,QAAOmsB,IAAStH,EAAAA,iBAAiBC,kBAAkBqH,EAAKG,aACxD56B,KACGy6B,GACI,IAAIe,EAAAA,aACAf,EAAKG,WAAa,EAClBhgC,EAAcoV,eAAevX,YAC7B6iC,OACAvjC,EACA6C,EAAcoV,eACdyqB,EAAKgB,WAAa,KAGlC,OAAOC,EAAAA,EAAAA,mBAAkBH,EAAe3gC,IAS3B,KAAAuN,0BAA4B,CAACwzB,EAA4BC,KACtE,MAAMj2B,GACFvP,KAAKgS,mBAAqBvL,EAAAA,EAAiBwL,KAAOjS,KAAKkS,cAAchO,sBAC/DlE,KAAKuP,eAUf,OAAOmE,EAAAA,EAAAA,GAAiB,CACpBjB,WAAYzS,KAAKyS,WACjBrP,UAAWpD,KAAKoD,UAChBoM,YAAa9I,EAAAA,EAAYiN,SACzBpE,cAAeA,EAAcvH,iBAAiBhI,KAAK4T,iBAAiB9O,0BAA4B9E,KAAKoC,iBACrGsN,uBAAwB1P,KAAKoC,gBAC7BuN,mBAAoB3P,KAAK2P,mBACzBN,gBAAiBrP,KAAK4T,iBACtBhM,gBAAiB5H,KAAK4H,gBACtByK,SAAUrS,KAAKqS,SACfK,sBAAuB1S,KAAK0S,sBAC5BzE,iBAAkBjO,KAAKiO,iBACvBwB,oBAAqBF,EAAcxI,gCAC/B/G,KAAKoD,UAAUyQ,iCACf7T,KAAKiH,mBAET2I,cAAe5P,KAAK8T,+BACpBjE,iBAAkB7P,KAAK+T,kCACvBvB,uBAAwBxS,KAAKsP,MAAM0E,YAAYxB,uBAK/CD,OAAQA,KACJvS,KAAKiU,WACLsxB,MAAAA,GAAAA,KAGJjzB,SAAWtS,KAAKqP,iBAAoBrP,KAAKkS,cAAchO,sBAhC7BuhC,KAC1BzlC,KAAKkU,aACLsxB,MAAAA,GAAAA,KA8B+E,UAWtE,KAAArxB,qBAAuB,CACpCuxB,EACAH,EACAC,KASO/wB,EAAAA,EAAAA,GAAc,CACjBlF,cAAevP,KAAKuP,cACpB5J,UAAW3F,KAAKqG,kBAChBjD,UAAWpD,KAAKoD,UAChB0D,gBAAiB9G,KAAK8G,gBACtBuI,gBAAiBrP,KAAK4R,2BACtBT,sBAAuBnR,KAAK0U,uBAC5BlC,uBAAwBxS,KAAKsP,MAAM0E,YAAYxB,uBAC/CvE,iBAAkBjO,KAAKiO,iBAKvBmG,aAAcA,KACVpU,KAAK2U,kBACL+wB,MAAAA,GAAAA,KAMJnzB,OAAQA,KACJvS,KAAK4U,mBACL2wB,MAAAA,GAAAA,KAGJjzB,SAAWtS,KAAKqP,gBA9BUo2B,KAC1BzlC,KAAKkU,aACLsxB,MAAAA,GAAAA,KA4BkC,SAuBzB,KAAA3wB,sBAAwBhT,UACrC,MACIiT,MACIhT,2BAA6BwG,OAAQxG,KAEzC9B,KAAKsP,MAEuC,IAAD+F,EAA3CvT,MAAAA,GAAAA,EAA2BkT,iBACX,QAAhBK,EAAArV,KAAKiV,mBAAW,IAAAI,GAAhBA,EAAkBzV,kBAAkB,0BAA2B,oCAAqCI,KAAKkV,yBAQhG,KAAAR,uBAA0Ba,IACvC,MAAMC,EAAkBD,EAAME,cAActO,MACtCkI,EAAkBrP,KAAKqG,kBAAkB5C,MAAKoB,IAAYA,EAAQuB,UAAY,IAAI2K,aAAeyE,IACnGnG,IACArP,KAAK4R,2BAA6BvC,IASzB,KAAAqG,mBAAqB,CAACvN,EAAchB,MACjD4C,EAAAA,EAAAA,IAAI/J,KAAK4T,iBAAkB,CAAE,CAACzL,GAAOhB,IACrCnH,KAAKuP,cAAc5H,sBAAsB3H,KAAK4T,iBAAkB5T,KAAK4H,gBAAiB5H,KAAKoC,gBAAiB+F,IAO/F,KAAA2L,+BAAkCyB,IAC/C,GAA0B,aAAtBA,EAAMI,OAAOzK,KACblL,KAAK0V,mBAAmBH,EAAMI,OAAOxN,KAAMoN,EAAMI,OAAO/G,aACrD,CACH,MAAMzH,GAASoO,EAAMI,OAAOxO,OAAS,IAAI2F,QAAQ,IAAIvD,OAAO,OAAQ,MAAO,IAC3EvJ,KAAK0V,mBAAmBH,EAAMI,OAAOxN,KAAMhB,KAQlC,KAAA4M,kCAAqCwB,IAClDvV,KAAK0V,mBAAmBH,EAAMI,OAAOxN,KAAMoN,EAAMI,OAAOxO,OAEpDoO,EAAMI,OAAOxN,OAAS3B,EAAAA,GAAgBA,EAAAA,GAAgB1B,2BACtD9E,KAAK4V,iBAAiBL,EAAMI,OAAOxO,QAO1B,KAAA0O,0BAA4B,KACzC,IAAK7V,KAAKuP,cAAc5H,sBAAsB3H,KAAK4T,iBAAkB5T,KAAK4H,gBAAiB5H,KAAKoC,iBAC5F,OAGJ,IAAImC,EAEAA,EADAvE,KAAKkS,cAAchO,uBAAyBlE,KAAK2lC,cAAc3lC,KAAK4T,kBAEhE5T,KAAKgS,mBAAqBvL,EAAAA,EAAiBqP,OACrC9V,KAAKkS,cAAc/M,sBAAsBnF,KAAK4T,kBAC9C5T,KAAKkS,cAAclN,mBAAmBhF,KAAK4T,kBAE1ClP,QAAQC,QAAQ,CAAEE,QAAS7E,KAAK4T,mBAG/C5T,KAAKyS,YAAa,EAClBzS,KAAK+V,qBAELxR,EAASyR,MACJ1N,IACGtI,KAAKyS,YAAa,EAEdnK,EAAOzD,SACP7E,KAAKqS,UAAW,EAChBrS,KAAK4lC,cACDt9B,EAAOjC,kBACPrG,KAAKiW,sBAAsB,CAAE5P,kBAAmBiC,EAAOjC,kBAAmBxB,QAASyD,EAAOzD,UAE1F7E,KAAKiW,sBAAsB,CAAEpR,QAASyD,EAAOzD,YAGjD7E,KAAKqS,UAAW,EAChBrS,KAAK0S,sBAAwBpK,EAC7BtI,KAAK+V,yBAGb,KACI/V,KAAKqS,UAAW,EAChBrS,KAAKyS,YAAa,EAClBzS,KAAK+V,yBASA,KAAAH,iBAAoBxT,IAA2B,IAAA8T,EAC5DlW,KAAKoC,gBAAkBA,EACvB,MAAMs7B,EAAyB19B,KAAKuP,cAAc9H,0BAA0BrF,IAC5E2H,EAAAA,EAAAA,IAAI/J,KAAK4T,iBAAkB,CAAE9O,yBAA0B1C,KACvD2H,EAAAA,EAAAA,IAAI/J,KAAK4T,iBAAkB,CAAEmF,uBAAwB2kB,IACrC,QAAhBxnB,EAAAlW,KAAKiV,mBAAW,IAAAiB,GAAhBA,EAAkB9U,gCAAgCs8B,GAClD19B,KAAKmV,uBAOQ,KAAAiB,6BAA+B,KAC5C,MAAM,OAAEC,GAAWrW,KAAKsP,MAClBgH,EAA8C,GAQpD,OANKD,EAAOE,iBACRD,EAAyB/L,KAAK/D,EAAAA,GAAgBhB,kBAGlD8Q,EAAyB/L,KAAK/D,EAAAA,GAAgByE,WAEvCqL,GAMM,KAAAE,mBAAqB,MAE7BxW,KAAKoC,iBACJpC,KAAKgS,mBAAqBvL,EAAAA,EAAiBwL,KAAOjS,KAAKgS,mBAAqBvL,EAAAA,EAAiBqP,QAKnG9V,KAAKkS,cAAc5N,kBAAkBtE,KAAKoC,iBAAiB4T,MAAM1N,IAC3CA,EAAOmO,MAAKhO,GAASA,EAAMG,UAAY5I,KAAK4T,iBAAiB3N,UAI3E8D,EAAAA,EAAAA,IAAI/J,KAAK4T,iBAAkB,CAAE3N,MAAO,KAGxCjG,KAAKiH,kBAAoBqB,MAiBhB,KAAAoO,mBAAqB,KAClC,GAAI1W,KAAKqG,kBAAmB,CAExB,OADuBrG,KAAKqG,kBAAkB5C,MAAMoB,GAAqBA,EAAQoG,cACvDjL,KAAKqG,kBAAkBT,OAAS,EAAI5F,KAAKqG,kBAAkB,QAAK1E,KASjF,KAAAkkC,yCAA2C,KACxD,GAAI7lC,KAAK8lC,kCAAmC,CACxC,MAAM,qBAAE5E,EAAoB,QAAEr8B,EAAO,kCAAEkhC,GAAsC/lC,KAAK8lC,kCAElF,IAAIE,EAQJ,OALIA,EADAD,EACyBlhC,EAAU7E,KAAKimC,kBAAkBphC,QAAWlD,EAE5Cu/B,EAAuBlhC,KAAKkmC,mCAAmChF,QAAwBv/B,EAG7GqkC,IAUE,KAAAE,mCAAsChF,IACnD,MAAMxD,EAAyBwD,EAAqBiF,QAE9CC,EAA2B1I,EAAyB19B,KAAKqmC,4BAA4B3I,QAA0B/7B,EAEjHykC,GAA4BA,IAA6BpmC,KAAKoC,iBAC9DpC,KAAK4V,iBAAiBwwB,GAgB1B,MAbyB,CACrBrtB,uBAAwB2kB,EACxB33B,KAAMm7B,EAAqBoF,WAC3BpgC,OAAQg7B,EAAqBqF,SAC7Bn6B,aAAc80B,EAAqBsF,SACnCzhC,KAAMm8B,EAAqBn8B,KAC3BkB,MAAOi7B,EAAqBj7B,MAC5BE,QAAS+6B,EAAqBuF,IAC9BzgC,MAAOk7B,EAAqBl7B,MAC5BlB,yBAA0BshC,EAC1B5gC,iBAAkBxF,KAAK2P,qBAWd,KAAAs2B,kBAAqBS,IAClC,MAAMhJ,EAAyBgJ,EAAe3tB,uBAExCqtB,EAA2B1I,EAAyB19B,KAAKqmC,4BAA4B3I,QAA0B/7B,EAEjHykC,GAA4BA,IAA6BpmC,KAAKoC,iBAC9DpC,KAAK4V,iBAAiBwwB,GAS1B,OANa5lC,EAAAA,EAAA,GACNkmC,GAAc,IACjB5hC,yBAA0BshC,EAC1B5gC,iBAAkBxF,KAAK2P,sBAWd,KAAA02B,4BAA+B3I,IAC5C,MAAMh6B,EAAgB1D,KAAKsD,eAAeG,MAAK4c,IAAU,IAAAsmB,EACrD,OAAsB,QAAfA,EAAAtmB,EAAQ1c,eAAO,IAAAgjC,OAAA,EAAfA,EAAiBz8B,iBAAkBwzB,EAAuBxzB,iBAGrE,OAAOxG,MAAAA,OAAa,EAAbA,EAAeE,iBAMT,KAAA+S,iBAAmB,KAChC3W,KAAKsP,MAAM0E,YAAY4C,KAAK,CACxBC,OAAQ7W,KAAK8W,WAAa,WAAa,WACvCC,OAAQ/W,KAAK+W,OACbzE,SAAUtS,KAAKsS,SACf2B,SAAUjU,KAAKiU,WAGnB,MAAMkiB,EAAgBn2B,KAAKsP,MAAMwF,KAAKgD,SAASxP,OAE/C,GAAItI,KAAK8W,WAAY,CACjB,IAAIE,EACJ,MAAM4vB,EAAgC5mC,KAAKikC,2BAGvCjtB,EADAmf,MAAAA,GAAAA,EAAepe,aAAaC,KAAKQ,gBAChB2d,EAAcpe,aAAaC,KAAKQ,gBAEjDwe,EAAAA,gBAAgBC,YAAY2P,SACajlC,IAAzCilC,EAAkB,GAAGpuB,iBACgC,KAArDouB,EAAkB,GAAGpuB,gBAAgBtP,YAEpB09B,EAAkB,GAAGpuB,gBAC/BxY,KAAK6lC,2CACK7lC,KAAK6lC,2CACf7lC,KAAK0W,qBACK1W,KAAK0W,qBAELyf,MAAAA,GAAAA,EAAe0Q,yBAA2B1Q,EAAc2Q,wCAAqCnlC,EAG9GqV,IAAmBhX,KAAKkS,cAActN,QAAQoS,IAC9ChX,KAAKkX,wBAAwBzQ,EAAAA,EAAiB0Q,KAAMH,GACpDhX,KAAKoX,oBAAoBJ,GACzBhX,KAAK+V,qBACLogB,MAAAA,GAAAA,EAAe4Q,yBAAyB,CAAEC,uBAAuB,MAEjEhnC,KAAKkX,wBAAwBzQ,EAAAA,EAAiBwL,KAC9CkkB,MAAAA,GAAAA,EAAe4Q,yBAAyB,CAAEC,uBAAuB,OAQ5D,KAAA/yB,SAAW,KACxB,OAAQjU,KAAKgS,kBACT,KAAKvL,EAAAA,EAAiBwL,IACtB,KAAKxL,EAAAA,EAAiBqP,OAClB9V,KAAKsP,MAAMhQ,UAAUo/B,YAAY,wDACjC1+B,KAAK6V,4BACL,MACJ,KAAKpP,EAAAA,EAAiB4Q,KAClBrX,KAAKsP,MAAMhQ,UAAUo/B,YAAY,+CACjC1+B,KAAK4U,mBACL,MACJ,QACI5U,KAAKsP,MAAMhQ,UAAUmF,MAAM,uBAOtB,KAAA6N,SAAW,KACxB,OAAQtS,KAAKgS,kBACT,KAAKvL,EAAAA,EAAiBwL,IACtB,KAAKxL,EAAAA,EAAiBqP,OAClB9V,KAAKsP,MAAMhQ,UAAUo/B,YAAY,wDACjC1+B,KAAKmV,uBACEnV,KAAKqP,iBAAoBrP,KAAKkS,cAAchO,wBAC/ClE,KAAKkU,aAGT,MACJ,KAAKzN,EAAAA,EAAiB4Q,KAClBrX,KAAKsP,MAAMhQ,UAAUo/B,YAAY,+CAC7B1+B,KAAKqP,iBACLrP,KAAKkU,aAET,MACJ,QACIlU,KAAKsP,MAAMhQ,UAAUmF,MAAM,uBAOtB,KAAAsS,OAAS,KACtB/W,KAAKsP,MAAMhQ,UAAUo/B,YAAY,sCAE7B1+B,KAAKkS,cAAchO,uBAAyBlE,KAAKsX,gBACjDtX,KAAKkX,wBAAwBzQ,EAAAA,EAAiB4Q,KAAMrX,KAAKsX,iBAClDtX,KAAKsX,iBACZtX,KAAKkX,wBAAwBzQ,EAAAA,EAAiBqP,OAAQ9V,KAAKsX,iBAG/DtX,KAAK+V,sBAOQ,KAAAe,SAAW,KAAc,IAAAmwB,EAAAC,EACtC,MAAM,SAAEpvB,EAAQ,4BAAEP,GAAgCvX,KAAKsP,MAAMwF,MACvD,QAAE3Q,GAAYnE,KAAKsP,MAAMnM,QACzBqU,EAAyBrT,GAAWA,EAAQsT,SAAWtT,EAAQsT,QAAQC,uBACvEC,EAAwBxT,GAAWA,EAAQsT,SAAWtT,EAAQsT,QAAQG,sBAC5E,SAAKE,EAASxP,SAAWnE,EAAQsT,SAAWK,EAASxP,OAAOyP,aAAanT,SAAWkT,EAASxP,OAAOyP,aAAaY,kBAK1G3Y,KAAK8R,kCACqC,QADJm1B,EACvCnvB,EAASxP,OAAOyP,aAAaC,KAAKC,iBAAS,IAAAgvB,OAAA,EAA3CA,EAA6CxwB,MAAK0B,IAAQ,IAAAS,EAAA,OACtDT,EAASE,cAA0C,KAA1BF,EAASE,aAC5BF,EAASE,gBAC6B,QADjBO,EACjBrB,EAA4BjP,cAAM,IAAAsQ,GAAyB,QAAzBA,EAAlCA,EAAoCN,+BAAuB,IAAAM,OAAA,EAA3DA,EAA6DnV,MACzD8U,GAAgBA,IAAiBJ,EAASE,iBACzCF,EAASE,eAAiBV,EACnCQ,KAEiC,QAD1C+uB,EACDpvB,EAASxP,OAAOyP,aAAaC,KAAKC,iBAAS,IAAAivB,OAAA,EAA3CA,EAA6CzwB,MAAK0B,GAC9CA,EAASE,cAA0C,KAA1BF,EAASE,aAC5BF,EAASE,eAAiBb,GAA0BW,EAASE,eAAiBV,EAC9EQ,MAOH,KAAAvD,iBAAmB,KAChC5U,KAAKkX,wBAAwBzQ,EAAAA,EAAiB0Q,KAAMnX,KAAK4R,4BACzD5R,KAAKoX,oBAAoBpX,KAAK4R,4BAC9B5R,KAAK+V,sBAMQ,KAAApB,gBAAkB,KAC/B3U,KAAK6Y,6BACL7Y,KAAKkX,wBAAwBzQ,EAAAA,EAAiBwL,MAOjC,KAAAgE,sBAAyB1R,IAClCA,EAAS8B,oBACTrG,KAAKqG,kBAAoB9B,EAAS8B,mBAGlC9B,EAASM,UACT7E,KAAKkX,wBAAwBzQ,EAAAA,EAAiB0Q,KAAM5S,EAASM,SAC7D7E,KAAKoX,oBAAoB7S,EAASM,SAClC7E,KAAK+V,uBAQI,KAAAqB,oBAAuBvS,IACpC,GAAI7E,KAAKsP,MAAMwF,KAAKgD,SAASxP,OAAQ,CACjC,MAAMwQ,EAAkBtY,EAAA,GAAQqE,GAE5BA,EAAQC,2BAA6BgU,EAAmBC,yBACxDD,EAAmBC,uBAAyB/Y,KAAKuP,cAAc9H,0BAA0B5C,EAAQC,2BAGrG9E,KAAKsP,MAAMwF,KAAKgD,SAASxP,OAAO0Q,sBAAsB,CAAEF,mBAAAA,IACxD9Y,KAAKsP,MAAMwF,KAAKgD,SAASxP,OAAOyP,aAAaiB,sBAAsB,CAAEF,mBAAAA,IAAsBud,OAAM5xB,IAC7FzE,KAAKsP,MAAMhQ,UAAUmF,MAAMA,QAYtB,KAAAyP,WAAa,KAC1B,OAAQlU,KAAKgS,kBACT,KAAKvL,EAAAA,EAAiBwL,IACtB,KAAKxL,EAAAA,EAAiBqP,OAClB9V,KAAKkX,wBACDlX,KAAKkS,cAAchO,sBAAwBuC,EAAAA,EAAiB4Q,KAAO5Q,EAAAA,EAAiB0Q,KACpFnX,KAAKsX,iBAET,MACJ,QACItX,KAAKkX,wBAAwBzQ,EAAAA,EAAiB0Q,KAAMnX,KAAKsX,iBAEjEtX,KAAK+V,sBAQQ,KAAAmB,wBAA0B,CAAC+B,EAA6B5J,KACrErP,KAAKgS,iBAAmBiH,EACxBjZ,KAAKqP,gBAAkBA,EAEnBrP,KAAKgS,mBAAqBvL,EAAAA,EAAiBwL,KAAOjS,KAAKgS,mBAAqBvL,EAAAA,EAAiBqP,QAC7F9V,KAAK4T,iBAAmBpT,EAAA,GAAKR,KAAKqP,kBAAqB,IACvDtF,EAAAA,EAAAA,IAAI/J,KAAK4T,iBAAkB,CACvB9O,yBAA0B9E,KAAK4T,iBAAiB9O,0BAA4B9E,KAAKoC,mBAErF2H,EAAAA,EAAAA,IAAI/J,KAAK4T,iBAAkB,CACvBpO,iBAAkBxF,KAAK4T,iBAAiBpO,kBAAoBxF,KAAK2P,sBAE9D3P,KAAKgS,mBAAqBvL,EAAAA,EAAiB4Q,OAClDrX,KAAK4R,2BAA6BpR,EAAA,GAAKR,KAAKqP,kBAAqB,KAOxD,KAAA0G,mBAAqB,KAC9B/V,KAAKgS,mBAAqBvL,EAAAA,EAAiB0Q,KAC3CnX,KAAKsP,MAAM0E,YAAYkF,UAChBlZ,KAAKyS,WACZzS,KAAKsP,MAAM0E,YAAYmF,YAEvBnZ,KAAKsP,MAAM0E,YAAYoF,cAQd,KAAAusB,cAAiB9gC,IAC9B,IAAK,MAAMsiC,KAAmBnnC,KAAKqG,kBAAmB,CAAC,IAAD+gC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAClD,IACiB,QAAbR,EAACviC,EAAQkB,YAAI,IAAAqhC,EAAAA,EAAI,MAAQD,EAAgBphC,OAC1B,QAAfshC,EAACxiC,EAAQqB,cAAM,IAAAmhC,EAAAA,EAAI,MAAQF,EAAgBjhC,SACtB,QAArBohC,EAACziC,EAAQuH,oBAAY,IAAAk7B,EAAAA,EAAI,MAAQH,EAAgB/6B,eACpC,QAAbm7B,EAAC1iC,EAAQE,YAAI,IAAAwiC,EAAAA,EAAI,MAAQJ,EAAgBpiC,OAC3B,QAAdyiC,EAAC3iC,EAAQoB,aAAK,IAAAuhC,EAAAA,EAAI,MAAQL,EAAgBlhC,QAC1B,QAAhBwhC,EAAC5iC,EAAQsB,eAAO,IAAAshC,EAAAA,EAAI,MAAQN,EAAgBhhC,UAC9B,QAAduhC,EAAC7iC,EAAQmB,aAAK,IAAA0hC,EAAAA,EAAI,MAAQP,EAAgBnhC,QACT,QAAjC2hC,EAAC9iC,EAAQC,gCAAwB,IAAA6iC,EAAAA,EAAI,MAAQR,EAAgBriC,2BACpC,QAAzB8iC,EAAC/iC,EAAQW,wBAAgB,IAAAoiC,EAAAA,EAAI,MAAQT,EAAgB3hC,iBAErD,OAAO,EAIf,OAAO,GAIM,KAAAq5B,iBAAoB76B,IACjChE,KAAKsP,MAAMhQ,UAAUmF,MAAMT,GAC3BhE,KAAKsP,MAAM0E,YAAYoqB,aAAY,GACnCp+B,KAAKsP,MAAM0E,YAAYoF,aACvBpZ,KAAK8+B,SAAS,CACV96B,aAAAA,KAIS,KAAA4hC,YAAc,KAC3B5lC,KAAKsP,MAAM0E,YAAYoqB,aAAY,GACnCp+B,KAAK8+B,SAAS,CACV96B,aAAc,MASL,KAAA6jC,YAAeC,GACrBA,EAAUpH,QAAO,CAACC,EAAO0D,IACrB1D,GAAS0D,EAAKnB,UAAY,IAClC,GApoCHljC,KAAKyI,MAAQ,CAAEg8B,eAAgB,IAC/B,MAAM,QAAEthC,EAAO,KAAE2R,EAAI,UAAE1R,EAAS,UAAE9D,GAAcU,KAAKsP,MAErDtP,KAAK4T,iBAAmB,GACxB5T,KAAKoD,UAAYA,EACjBpD,KAAKgS,iBAAmBvL,EAAAA,EAAiB4Q,KACzCrX,KAAKsD,eAAiBwR,EAAKxR,eAAegF,QAAU,GACpDtI,KAAK8G,gBAAkBgO,EAAKhO,gBAAgBwB,QAAU,GACtDtI,KAAKqG,kBAAoByO,EAAKjQ,QAAQyD,QAAU,GAChDtI,KAAKiH,kBAAoB6N,EAAKuE,cAAc/Q,QAAU,GACtDtI,KAAKkS,cAAgB,IAAIhP,EAAAA,EAAcC,EAASC,EAAW9D,GAC3DU,KAAKuP,cAAgB,IAAI5I,EAAAA,EACrB3G,KAAKsD,eACL,IAAI6H,EAAAA,EAAe3K,EAAC,GAAK4C,GAAapD,KAAKoW,gCAC3CpW,KAAK8G,iBAET9G,KAAK4H,gBAAkB,GACvB5H,KAAK8R,kCAA4D,QAA3BgyB,EAAGhvB,EAAKwE,aAAahR,cAAM,IAAAw7B,GAEhE,QAFgEA,EAAxBA,EAA0BrgC,MAC/D8V,GAAWA,EAAQxT,OAAS/F,KAAK6R,uCACpC,IAAAiyB,OAAA,EAFwCA,EAEtCtqB,UACHxZ,KAAKiO,kBAAmBwL,EAAAA,EAAAA,oBACpBzZ,KAAKsP,MAAMnM,QAAQgB,QAAQuV,kBAC3B1Z,KAAKsP,MAAMqK,aACX3Z,KAAKsP,MAAMhQ,WAIZ,0BAAuB,IAAA+/B,EAC1B,MACIl8B,SAAS,UACL7D,EACAkF,eACIoV,gBAAgB,QAAEnC,KAG1BpB,QAAQ,sBAAEwD,EAAqB,mBAAEta,GAAoB,UACrD6D,GACApD,KAAKsP,MAoDT,GAjDAtP,KAAKq6B,gBAAgBr6B,KAAKsP,OAE1BtP,KAAKuP,cAAgB,IAAI5I,EAAAA,EACrB3G,KAAKsD,eACL,IAAI6H,EAAAA,EAAe3K,EAAC,GAAK4C,GAAapD,KAAKoW,gCAC3CpW,KAAK8G,iBAGT9G,KAAKsP,MAAMwF,KAAKgD,SAAS9B,MAAK,KAC1BhW,KAAK6Y,6BACL7Y,KAAK2W,uBAGTmD,EAAAA,EAAAA,KACI,IAAM9Z,KAAKoC,kBACX,KACIpC,KAAKwW,yBAIbsD,EAAAA,EAAAA,KACI,IAAM9Z,KAAKgS,mBACX,KACIhS,KAAKwW,yBAIbsD,EAAAA,EAAAA,KACI,SAAAmlB,EAAA,OAAqC,QAArCA,EAAMj/B,KAAKsP,MAAMwF,KAAKgD,SAASxP,cAAM,IAAA22B,OAAA,EAA/BA,EAAiC6H,sCACvC,KACI,IAAK9mC,KAAK8lC,mCAAqC9lC,KAAK8W,WAAY,CAAC,IAADkoB,EAAA+I,EAC5D,IAAIljC,EAAyC,QAAlCm6B,EAAGh/B,KAAKsP,MAAMwF,KAAKgD,SAASxP,cAAM,IAAA02B,OAAA,EAA/BA,EAAiC8H,mCAE/C,GAAW,QAAXiB,EAAIljC,SAAO,IAAAkjC,GAAPA,EAAShvB,uBAAwB,CACjC,MAAMqtB,EAA2BpmC,KAAKqmC,4BAA4BxhC,EAAQkU,wBAE1ElU,EAAOrE,EAAAA,EAAA,GAAQqE,GAAO,IAAEC,yBAA0BshC,IAE9CA,GAA4BA,IAA6BpmC,KAAKoC,iBAC9DpC,KAAK4V,iBAAiBwwB,GAI9BpmC,KAAKkX,wBAAwBzQ,EAAAA,EAAiBwL,IAAKpN,GACnD7E,KAAK6V,gCAKbgE,EAAuB,CACvB,GAAIpC,IAAYA,EAAQjY,eAEpB,YADAF,EAAUmF,MAAM,8BAIpB,GAAIgT,IAAYA,EAAQsC,gBAEpB,YADAza,EAAUmF,MAAM,4BAIpB,MAAMlE,EAAOC,EAAA,GAA6BjB,GAC1CS,KAAKiV,YAAc,IAAI7V,EAAAA,EACnBE,EACAiB,EACAkX,MAAAA,OAAO,EAAPA,EAASjY,eACTiY,MAAAA,OAAO,EAAPA,EAASwC,4BACTxC,MAAAA,OAAO,EAAPA,EAASyC,oBAKTla,KAAKsP,MAAMwF,KAAKhT,0BAA0BwG,QACzCtI,KAAKgS,mBAAqBvL,EAAAA,EAAiBwL,KAAOjS,KAAKgS,mBAAqBvL,EAAAA,EAAiBqP,cAExF9V,KAAKiV,YAAYrT,kBAAkB5B,KAAKsP,MAAMwF,KAAKhT,4BAG7DgY,EAAAA,EAAAA,KACI,SAAAK,EAAA,OACoD,QAAhDA,EAAAna,KAAKsP,MAAMwF,KAAKhT,0BAA0BwG,cAAM,IAAA6R,OAAA,EAAhDA,EAAkDpY,cACjD/B,KAAKgS,mBAAqBvL,EAAAA,EAAiBwL,KAAOjS,KAAKgS,mBAAqBvL,EAAAA,EAAiBqP,WAClGjU,UAAW,IAAAmY,QACe,QAAtBA,EAAMha,KAAKiV,mBAAW,IAAA+E,OAAA,EAAhBA,EAAkBpY,kBAAkB5B,KAAKsP,MAAMwF,KAAKhT,gCAIlEgY,EAAAA,EAAAA,KACI,SAAAO,EAAA,OAAsD,QAAtDA,EAAMra,KAAKsP,MAAMwF,KAAKhT,0BAA0BwG,cAAM,IAAA+R,OAAA,EAAhDA,EAAkDrF,kBACxDnT,gBACU7B,KAAK6U,2BAKY,QAAnCwqB,EAAIr/B,KAAKsP,MAAMwF,KAAKgD,SAASxP,cAAM,IAAA+2B,GAA/BA,EAAiCD,6CACjCtlB,EAAAA,EAAAA,KACI,SAAA2lB,EAAA,OAAqC,QAArCA,EAAMz/B,KAAKsP,MAAMwF,KAAKgD,SAASxP,cAAM,IAAAm3B,OAAA,EAA/BA,EAAiCH,iBACvCA,IAEQA,GACAA,EAAcC,gBAAkBC,EAAAA,cAAc/tB,yBAC9C6tB,EAAct7B,cAEdhE,KAAK6+B,iBAAiBS,EAAct7B,kBAKhD8V,EAAAA,EAAAA,KACI,SAAAumB,EAAA,OAAqC,QAArCA,EAAMrgC,KAAKsP,MAAMwF,KAAKgD,SAASxP,cAAM,IAAA+3B,OAAA,EAA/BA,EAAiCX,sBACvCA,IACQA,IAAuB/I,EAAAA,eAAellB,0BACtCwkB,EAAAA,EAAAA,GAAqBj2B,KAAKk2B,iBAAkBl2B,KAAKsP,MAAMnM,QAAQqB,yBAMzExE,KAAK+jC,mBAGR,2BACuG,IAADzpB,EAIlGF,EAJHpa,KAAKgS,mBAAqBvL,EAAAA,EAAiBwL,KAAOjS,KAAKgS,mBAAqBvL,EAAAA,EAAiBqP,OACzC,QAApDwE,EAAIta,KAAKsP,MAAMwF,KAAKhT,0BAA0BwG,cAAM,IAAAgS,GAAhDA,EAAkDtF,sBAC5ChV,KAAK6U,wBAGC,QAAhBuF,EAAApa,KAAKiV,mBAAW,IAAAmF,GAAhBA,EAAkB9Y,qBAInBq6B,sBAAsBC,EAAkCC,GAC3D,OAAI77B,KAAKyI,QAAUozB,GAAa77B,KAAKsP,MAAMwF,OAAS8mB,EAAU9mB,KAM3D0F,SAAM,IAAAwtB,EACT,IAAKhoC,KAAK8W,WACN,OAAO,KAGX,MAAM,OACFT,EAAM,QACNlT,EAAO,WACPsX,EAAU,UACVrX,EACA4Q,aAAa,SAAE3B,IACfrS,KAAKsP,OACH,cAAE24B,EAAa,UAAEC,EAAS,eAAEC,EAAc,kBAAEtI,GAAsBz8B,GAClE,cAAEglC,GAAkB/xB,EAGpByxB,EAA6C9nC,KAAKyI,MAAMg8B,eACzDvsB,QAAOqsB,IAAMxH,EAAAA,iBAAiBC,kBAAkBuH,EAAED,WAClD16B,KAAIy6B,IAAI,IAAAgE,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,MAAK,CACVxF,OAA4B,QAAtBkF,EAAEhE,EAAKlsB,SAASywB,cAAM,IAAAP,EAAAA,EAAI,GAChChF,WAAY,CACRzpB,eAAgBzW,EAAQqB,cAAcoV,eACtChM,UAAW,8DACX21B,QAAqB,QAAd+E,EAAEjE,EAAKC,eAAO,IAAAgE,OAAA,EAAZA,EAAcviC,KACvB8iC,IAAkC,QAA/BN,EAAc,QAAdC,EAAEnE,EAAKC,eAAO,IAAAkE,OAAA,EAAZA,EAAcM,uBAAe,IAAAP,EAAAA,EAAI,GACtCQ,aAAaC,EAAAA,EAAAA,qBACG,QADgBP,EAC5BpE,EAAKC,eAAO,IAAAmE,OAAA,EAAZA,EAAcQ,OACd9lC,EAAQqB,cAAcoV,eAAevX,YAClB,QAD6BqmC,EAChDvlC,EAAQgB,QAAQ82B,WAAG,IAAAyN,GAAQ,QAARA,EAAnBA,EAAqBryB,cAAM,IAAAqyB,OAAA,EAA3BA,EAA6BQ,kBAEjCzG,aAAct/B,EAAQgB,QAAQs+B,aAC9B2F,cAAeA,MAAAA,EAAAA,EAAiB5E,EAChC2F,oBAAqB,SAEzBjG,SAAgC,QAAxByF,EAAEtE,EAAKlsB,SAASixB,gBAAQ,IAAAT,EAAAA,EAAI,MAGtCU,EAAoBrpC,KAAK6nC,YAAYC,GACrCwB,EAAWD,EAAoB,EAAInB,EAAYC,EAC/ChG,EAAY,KAAI/sB,EAAAA,EAAAA,QAAOk0B,EAAUD,MAEjCE,EAAkD,CACpDrH,gBAAiB,+BACjBrqB,UAAWiwB,EAAU5vB,QAAOqsB,IAAMxH,EAAAA,iBAAiBC,kBAAkBuH,KACrEpC,UAAWA,EACXlzB,MAAOg5B,EACP7kC,UAAWpD,KAAKsP,MAAMlM,WAGpBomC,EAAkC77B,EAAAA,cAACs0B,EAAuB30B,OAAAiB,OAAA,GAAKg7B,KAE/D,aAAEjwB,GAAiBtZ,KAAKsP,MAAMwF,KAC9B20B,EAAyD,QAAtBzB,EAAG1uB,EAAahR,cAAM,IAAA0/B,GAAiE,QAAjEA,EAAnBA,EAAqBvkC,MAAK8V,GAFhC,oEAE2CA,EAAQxT,cAAuC,IAAAiiC,OAAA,EAApFA,EACtCxuB,UAEAxV,EAAehE,KAAKyI,MAAMzE,aAqDhC,OAAOyW,EAnDQja,EAAAA,EAAA,GACRR,KAAKsP,OAAK,IACb0C,iBAAkBhS,KAAKgS,iBACvB3C,gBAAiBrP,KAAKqP,gBACtBuE,iBAAkB5T,KAAK4T,iBACvBhC,2BAA4B5R,KAAK4R,2BACjCxP,gBAAiBpC,KAAKoC,gBACtB6E,kBAAmBjH,KAAKiH,kBACxBZ,kBAAmBrG,KAAKqG,kBACxBuB,gBAAiB5H,KAAK4H,gBACtB8K,sBAAuB1S,KAAK0S,sBAC5BD,WAAYzS,KAAKyS,WACjBJ,SAAUrS,KAAKqS,SACfzE,UAAWyI,EAAOzI,UAClB8M,UAAW,CACPC,cAAe3a,KAAKgS,mBAAqBvL,EAAAA,EAAiB0Q,MAAQnX,KAAKqP,gBACvEuL,iBAAkB5a,KAAKgS,mBAAqBvL,EAAAA,EAAiB4Q,MAAQrX,KAAKqG,kBAAkBT,OAAS,EACrGiV,yBACI7a,KAAKgS,mBAAqBvL,EAAAA,EAAiBwL,KAAOjS,KAAKgS,mBAAqBvL,EAAAA,EAAiBqP,QAErGrE,wBAAyB,CACrBqJ,YAAa9a,KAAKsP,MAClB1B,UAAWmN,GAAAA,CAAW,+BAAgC1E,EAAOzI,YAEjEoN,YAAahb,KAAKib,qBAClB3K,MAAO+B,GAAYrO,GAAgB2J,EAAAA,cAACiqB,EAAAA,EAActqB,OAAAiB,OAAA,GAAK,CAAEU,MAAO4wB,EAAmB51B,QAASjG,KAC5FkyB,iBAAkBl2B,KAAKk2B,iBASvBwT,yBAA0BA,CAAChE,EAAkCH,EAA4BC,IACrFxlC,KAAKmU,qBAAqBuxB,EAAqBH,EAAeC,GAQlEmE,8BAA+BA,CAACpE,EAA4BC,IACxDxlC,KAAK+R,0BAA0BwzB,EAAeC,GAClDrqB,uBAAwBnb,KAAK+R,4BAC7By3B,eAAgBC,EAAsCD,OAAiB7nC,EACvEuZ,kBAAmBlb,KAAKmU,0BAgFhC,wCAA4C,IAAAy1B,EAAAC,EAExC,MAAMC,EAEe,QAFLF,EACQ,QADRC,EACZ7pC,KAAKsP,MAAMwF,KAAKkD,YAAI,IAAA6xB,GAAQ,QAARA,EAApBA,EAAsBvhC,cAAM,IAAAuhC,GAAM,QAANA,EAA5BA,EAA8B7xB,YAAI,IAAA6xB,GAAqB,QAArBA,EAAlCA,EAAoCE,2BAAmB,IAAAF,GAA4D,QAA5DA,EAAvDA,EAAyDpmC,MAAKumC,GAA6B,0BAAjBA,EAASC,aAAgC,IAAAJ,GAAO,QAAPA,EAAnHA,EAAqHK,aAAK,IAAAL,OAAA,EAA1HA,EACMM,mBAAW,IAAAP,EAAAA,EAAI,GAEzB,OAAOE,EAAcM,KAAKC,MAAMP,GAAyC,KAqNrE7uB,qBACJ,OAAIjb,KAAKqP,iBACEsB,EAAAA,EAAAA,GAAY,CACf9L,QAAS7E,KAAKqP,gBACdE,cAAevP,KAAKuP,cAAcvH,iBAAiBhI,KAAKqP,gBAAgBvK,0BAA4B,IACpGgC,gBAAiB9G,KAAK8G,kBAIvB,KAwKH+R,6BAA0B,IAAAskB,EAC9B,MAAM,QAAEh5B,GAAYnE,KAAKsP,MAAMnM,QACzBjB,EAAwB,QAAlBi7B,EAAGh5B,EAAQsT,eAAO,IAAA0lB,OAAA,EAAfA,EAAiBljB,4BAChCja,KAAKoC,gBAAkBpC,KAAKkS,cAAc7O,0BAA0BrD,KAAKoC,gBAAiBpC,KAAKsD,eAAgBpB,GAgSzG,sBAA2B,IAAAo+B,EACjC,OAAsC,QAAtCA,EAAOtgC,KAAKsP,MAAMwF,KAAKgD,SAASxP,cAAM,IAAAg4B,OAAA,EAA/BA,EAAiChpB,mBAzkChC8D,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,wCAECD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,uCAECD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,wCAECD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,uCAECD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,yCAECD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,yCAECD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,uCAECD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,6CAECD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,kCAECD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,gCAECD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,kDA+TXD,EAAAA,EAAAA,IAAA,CADCnY,EAAAA,IAAM,wCA0BPmY,EAAAA,EAAAA,IAAA,CADCnY,EAAAA,IAAM,6CAuBPmY,EAAAA,EAAAA,IAAA,CADCnY,EAAAA,IAAM,2CAoBPmY,EAAAA,EAAAA,IAAA,CADCnY,EAAAA,IAAM,wCAorBGmY,EAAAA,EAAAA,IAAA,CAATE,EAAAA,IAAQ,qCAkFTF,EAAAA,EAAAA,IAAA,CADCnY,EAAAA,IAAM,uCA1pCLwO,GAAuB2J,EAAAA,EAAAA,IAAA,CAF5BG,EAAAA,gBACAC,EAAAA,IACK/J,GAurCN,wGClyCA,MAAMd,EAA2CjD,IAA6B,IAA5B,cAAEkD,EAAa,MAAEC,GAAOnD,EACtE,OACIC,EAAAA,cAAC8N,EAAAA,KAAInO,OAAAiB,OAAA,GAAKqC,GACLC,EAAMjH,KAAKkC,GACD6B,EAAAA,cAAAA,EAAAA,SAAA,KAAG7B,EAAKkF,iBAkBzByD,EAA+CiH,IAQhD,IARiD,cAClDrH,EAAa,UACbC,EAAS,MACTzD,EAAK,iBACLiC,EAAgB,WAChBC,EAAU,mBACVI,EAAkB,aAClBC,GACHsI,EACG,OACI/N,EAAAA,cAAC8N,EAAAA,KAAInO,OAAAiB,OAAA,GAAK8F,GACLC,EACAzD,EAAMjH,KAAKkC,IACR,MAAMyF,EAAazF,EAAKyF,WACxB,OACI5D,EAAAA,cAAC8N,EAAAA,KAAInO,OAAAiB,OAAA,GAAKgD,EAAU,CAAEvP,IAAK8J,EAAK9J,MAC3B8J,EAAKnJ,MACNgL,EAAAA,cAACgD,EAAWrD,OAAAiB,OAAA,GAAKzC,EAAK0F,gBAIjCsB,GAAoBC,EACpBI,GAAsBC,IAmB7BM,EAAqDiI,IAUtD,IAVuD,YACxD/I,EAAW,QACXD,EAAO,MACP9B,EAAK,SACLwB,EAAQ,MACR5N,EAAK,iBACLqO,EAAgB,WAChBC,EAAU,mBACVI,EAAkB,aAClBC,GACHuI,EACG,OACIhO,EAAAA,cAAC8N,EAAAA,KAAInO,OAAAiB,OAAA,GAAKqE,GACLD,EACA9B,EAAMjH,KAAKkC,IACR,MAAM,YAAEsE,EAAW,IAAEpO,EAAG,MAAEoL,EAAK,MAAEkD,EAAK,MAAE3N,GAAUmJ,EAClD,OACI6B,EAAAA,cAAC8N,EAAAA,KAAInO,OAAAiB,OAAA,GAAK6B,EAAW,CAAEpO,IAAKA,IACvBoL,EACAkD,EACA3N,MAIZ0P,GACG1E,EAAAA,cAAC8N,EAAAA,KAAInO,OAAAiB,OAAA,GAAK9J,EAAM8O,cACX9O,EAAMwK,MACNxK,EAAMwF,SAGd6I,GAAoBC,EACpBI,GAAsBC,IAiCnC,EAvBiF9D,IAC7E,MAAM,wBACFmC,EAAuB,iBACvBykB,EAAgB,MAChB5lB,EAAK,UACLoK,EAAS,YACTM,EAAW,kBACXE,EAAiB,uBACjBC,EAAsB,eACtBquB,GACAl6B,EAEJ,OACI3B,EAAAA,cAACiU,EAAAA,OAAMtU,OAAAiB,OAAA,GAAKkD,EAAuB,CAAEuwB,IAAK9L,IACrC5lB,EACAk5B,EACA9uB,EAAUC,eAAiBhN,EAAAA,cAACgD,EAAWrD,OAAAiB,OAAA,GAAKyM,IAC5CN,EAAUE,kBAAoBjN,EAAAA,cAAC8G,EAAanH,OAAAiB,OAAA,GAAK2M,IACjDR,EAAUG,0BAA4BlN,EAAAA,cAAC+F,EAAgBpG,OAAAiB,OAAA,GAAK4M,uECvHzEmvB,EAGI,SAAYjoC,GAAZ,IAAAkoC,EAAA,KAIO,KAAAjoC,YAAc,WAAM,OAAAC,EAAAA,EAAAA,eAAc,gBAAiBgoC,EAAKloC,cAExD,KAAAG,mBAAqB,WAAM,uBAE3B,KAAAC,cAAgB,WAAiB,iBAPpCzC,KAAKqC,YAAcA,IA8BkBW,EAAAA,EAAAA,IAA0C,CACnFC,OAhBG,SAAmCN,EAA2BC,GAAmB,+EACpF,MAAM,CAAN,EAAO,IAAI4nC,EAAAA,UAgBX7nC,MATgB,SAAC8nC,GACjB,OAAO,IAAIH,EAAmBG,EAAU7wB,eAAevX,kFCvC3DmoC,EAAA,oBAAAA,IA+BwB,KAAAE,WAAyB,GAMzB,KAAAC,iBAAsC,GAYtC,KAAAC,eAAyB,EAMzB,KAAAC,oBAA8B,GAM9B,KAAAC,8BAAwC,EAMxC,KAAAC,uBAAiC,EA2EzD,OA3Icz9B,OAAA09B,eAAWR,EAAAptB,UAAA,uBAAoB,KAA/B,WACN,OAAOpd,KAAKirC,uBACf,gCAIS39B,OAAA09B,eAAWR,EAAAptB,UAAA,aAAU,KAArB,WACN,OAAOpd,KAAKkrC,aACf,gCAIS59B,OAAA09B,eAAWR,EAAAptB,UAAA,iBAAc,KAAzB,WACN,OAAOpd,KAAKmrC,iBACf,gCAIS79B,OAAA09B,eAAWR,EAAAptB,UAAA,kBAAe,KAA1B,WACN,OAAOpd,KAAKorC,kBACf,gCAIS99B,OAAA09B,eAAWR,EAAAptB,UAAA,aAAU,KAArB,WACN,OAAOpd,KAAKqrC,aACf,gCAIS/9B,OAAA09B,eAAWR,EAAAptB,UAAA,YAAS,KAApB,WACN,OAAOpd,KAAK0qC,YACf,gCAISp9B,OAAA09B,eAAWR,EAAAptB,UAAA,kBAAe,KAA1B,WACN,OAAOpd,KAAK2qC,kBACf,gCAISr9B,OAAA09B,eAAWR,EAAAptB,UAAA,oBAAiB,KAA5B,WACN,OAAOpd,KAAKsrC,oBACf,gCAISh+B,OAAA09B,eAAWR,EAAAptB,UAAA,gBAAa,KAAxB,WACN,OAAOpd,KAAK4qC,gBACf,gCAISt9B,OAAA09B,eAAWR,EAAAptB,UAAA,qBAAkB,KAA7B,WACN,OAAOpd,KAAK6qC,qBACf,gCAISv9B,OAAA09B,eAAWR,EAAAptB,UAAA,8BAA2B,KAAtC,WACN,OAAOpd,KAAK8qC,8BACf,gCAISx9B,OAAA09B,eAAWR,EAAAptB,UAAA,wBAAqB,KAAhC,WACN,OAAOpd,KAAK+qC,wBACf,gCAGMP,EAAAptB,UAAAmuB,2BAAP,SAAkCC,GAC9BxrC,KAAKirC,sBAAwBO,GAI1BhB,EAAAptB,UAAAquB,iBAAP,SAAwBC,GACpB1rC,KAAKkrC,YAAcQ,GAIhBlB,EAAAptB,UAAApE,sBAAP,SAA6BF,GACzB9Y,KAAKorC,iBAAmBtyB,GAIrB0xB,EAAAptB,UAAAwhB,qBAAP,SAA4BD,GACxB3+B,KAAKmrC,gBAAkBxM,GAIpB6L,EAAAptB,UAAAuuB,iBAAP,SAAwBC,GACpB5rC,KAAKqrC,YAAcO,GAIhBpB,EAAAptB,UAAAyuB,eAAP,SAAsBC,GAClB9rC,KAAK0qC,WAAa1qC,KAAK0qC,WAAWxyB,QAAO,SAAA0oB,GAAY,OAAAA,EAASmL,KAAOD,MAIlEtB,EAAAptB,UAAA4uB,qBAAP,SAA4BF,GACxB9rC,KAAK2qC,iBAAmB3qC,KAAK2qC,iBAAiBzyB,QAAO,SAAA0oB,GAAY,OAAAA,EAASmL,KAAOD,MAI9EtB,EAAAptB,UAAA6uB,YAAP,SAAmBrL,GACf5gC,KAAK0qC,YAAUwB,EAAAA,EAAAA,IAAA,CAAItL,GAAa5gC,KAAK0qC,aAIlCF,EAAAptB,UAAA+uB,kBAAP,SAAyBvL,GACrB5gC,KAAK2qC,kBAAgBuB,EAAAA,EAAAA,IAAA,CAAItL,GAAa5gC,KAAK0qC,aAIxCF,EAAAptB,UAAAgvB,wBAAP,SAA+BC,GAC3BrsC,KAAKsrC,mBAAqBe,GAIvB7B,EAAAptB,UAAAkvB,oBAAP,SAA2BC,GACvBvsC,KAAK4qC,eAAiB2B,GAInB/B,EAAAptB,UAAAovB,yBAAP,SAAgCC,GAC5BzsC,KAAK6qC,oBAAsB4B,GAIxBjC,EAAAptB,UAAAsvB,mCAAP,SAA0CC,GACtC3sC,KAAK8qC,6BAA+B6B,GAIjCnC,EAAAptB,UAAAwvB,4BAAP,SAAmCL,GAC/BvsC,KAAK+qC,uBAAyBwB,IA3ItBnxB,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,4EAEDD,EAAAA,EAAAA,IAAA,CAATE,EAAAA,IAAQ,0GAIGF,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,kEAEDD,EAAAA,EAAAA,IAAA,CAATE,EAAAA,IAAQ,gGAIGF,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,sEAEDD,EAAAA,EAAAA,IAAA,CAATE,EAAAA,IAAQ,oGAIGF,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,uEAEDD,EAAAA,EAAAA,IAAA,CAATE,EAAAA,IAAQ,qGAIGF,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,kEAEDD,EAAAA,EAAAA,IAAA,CAATE,EAAAA,IAAQ,gGAIGF,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,gEAEDD,EAAAA,EAAAA,IAAA,CAATE,EAAAA,IAAQ,8FAIGF,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,sEAEDD,EAAAA,EAAAA,IAAA,CAATE,EAAAA,IAAQ,oGAIGF,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,yEAEDD,EAAAA,EAAAA,IAAA,CAATE,EAAAA,IAAQ,uGAIGF,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,qEAEDD,EAAAA,EAAAA,IAAA,CAATE,EAAAA,IAAQ,mGAIGF,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,0EAEDD,EAAAA,EAAAA,IAAA,CAATE,EAAAA,IAAQ,wGAIGF,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,oFAEDD,EAAAA,EAAAA,IAAA,CAATE,EAAAA,IAAQ,iHAIGF,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,6EAEDD,EAAAA,EAAAA,IAAA,CAATE,EAAAA,IAAQ,2GAKTF,EAAAA,EAAAA,IAAA,CADCnY,EAAAA,IAAM,6JAMPmY,EAAAA,EAAAA,IAAA,CADCnY,EAAAA,IAAM,mJAMPmY,EAAAA,EAAAA,IAAA,CADCnY,EAAAA,IAAM,wJAMPmY,EAAAA,EAAAA,IAAA,CADCnY,EAAAA,IAAM,uJAMPmY,EAAAA,EAAAA,IAAA,CADCnY,EAAAA,IAAM,mJAMPmY,EAAAA,EAAAA,IAAA,CADCnY,EAAAA,IAAM,iJAMPmY,EAAAA,EAAAA,IAAA,CADCnY,EAAAA,IAAM,uJAMPmY,EAAAA,EAAAA,IAAA,CADCnY,EAAAA,IAAM,8IAMPmY,EAAAA,EAAAA,IAAA,CADCnY,EAAAA,IAAM,oJAMPmY,EAAAA,EAAAA,IAAA,CADCnY,EAAAA,IAAM,0JAMPmY,EAAAA,EAAAA,IAAA,CADCnY,EAAAA,IAAM,sJAMPmY,EAAAA,EAAAA,IAAA,CADCnY,EAAAA,IAAM,2JAMPmY,EAAAA,EAAAA,IAAA,CADCnY,EAAAA,IAAM,sKAMPmY,EAAAA,EAAAA,IAAA,CADCnY,EAAAA,IAAM,6JAIXunC,EA9IA,gCCJQ,IAAK1I,mBAAZ,SAAYA,GACTA,EAAAA,EAAA,yCACAA,EAAAA,EAAA,mCACAA,EAAAA,EAAA,qBACAA,EAAAA,EAAA,uBACAA,EAAAA,EAAA,yCACAA,EAAAA,EAAA,uBANH,CAAYA,IAAAA,EAAqB,mhBCIlC,IAAA+K,EAAA,WACW,KAAAvqC,YAAc,WAAM,qBAEpB,KAAAE,mBAAqB,WAAM,qBAE3B,KAAAC,cAAgB,WAAiB,eAGrC,SAASqqC,EAAgBlqC,GAC5B,IAAMmqC,EAAW,IAAIF,EAEjBG,EAA8BpqC,EAAI6G,IAAmBsjC,EAASvqC,qBAAsBuqC,EAASzqC,eACjG,OAAI0qC,IAGJpqC,EAAIqqC,OAAOF,EAAU,IACrBC,EAA8BpqC,EAAI6G,IAAmBsjC,EAASvqC,qBAAsBuqC,EAASzqC,gBAI1F,SAAS4qC,EAAmB/lC,EAAsBvE,GACrD,IAAMmqC,EAAW,IAAIF,EACrBjqC,EAAIqqC,OAAOF,EAAU5lC,wHCoQzB,QAjRwB,SAAmBgmC,GA8QvC,OAvQA,SAAAC,GACI,SAAAC,EAAY/9B,GAAZ,IAAAi7B,EACI6C,EAAA7uB,KAAA,KAAMjP,IAAM,KACW,OAeVi7B,EAAA+C,gBAAkB,iBACzBC,EAA4BhD,EAAKj7B,MAA/BzD,EAAE0hC,EAAA1hC,GAAE2hC,EAAQD,EAAAC,SAAErqC,EAAOoqC,EAAApqC,QACvBsqC,GAASX,EAAAA,EAAAA,IAAgB3pC,EAAQqB,eAClCipC,EAKDA,EAAO5hC,KAKXqhC,EAAAA,EAAAA,KAAkBQ,EAAAA,EAAAA,KAAAA,EAAAA,EAAAA,IAAC,GAERD,KAAME,EAAA,IACR9hC,GAAK,CACFA,GAAEA,EACF2hC,SAAQA,EACRI,gBAAgB,EAChBv7B,UAAU,EACVrF,YAAY,EACZ6gC,eAAe,EACfC,mBAAmB,EACnBj3B,YAAQlV,EACRosC,SAAU,IACbJ,IAELxqC,EAAQqB,eAxBR+lC,EAAKj7B,MAAMhQ,UAAUmF,MAAM,yDAiClB8lC,EAAAyD,sBAAwB,SAACniC,GACtC,IAAMmI,EAAcu2B,EAAK9gC,MAAMoC,GAC/B,OAAA6hC,EAAAA,EAAAA,KAAAA,EAAAA,EAAAA,IAAA,GACO15B,GAAY,CACf45B,eAAgBrD,EAAK0D,SAASpiC,EAAI,CAAE+hC,gBAAgB,IAAQ,GAC5Dv7B,SAAUk4B,EAAK0D,SAASpiC,EAAI,CAAEwG,UAAU,IACxC67B,QAAS3D,EAAK0D,SAASpiC,EAAI,CAAEgL,OAAQ,UAAW,GAAM,GACtDpE,WAAY83B,EAAK0D,SAASpiC,EAAI,CAAEgL,OAAQ,aACxCs3B,UAAW5D,EAAK0D,SAASpiC,EAAI,CAAEgL,OAAQ,YACvCu3B,UAAW7D,EAAK0D,SAASpiC,EAAI,CAAEgL,OAAQ,YAAa,GAAM,GAC1D8gB,WAAY4S,EAAK0D,SAASpiC,EAAI,CAAEgL,OAAQ,aAAc,GACtDw3B,gBAAiB9D,EAAK0D,SAASpiC,EAAI,CAAEgiC,eAAe,IAAQ,GAAM,GAClES,sBAAuB/D,EAAK0D,SAASpiC,EAAI,CAAEiiC,mBAAmB,IAC9Dt7B,uBAAwB+3B,EAAK/3B,yBAC7B+7B,eAAgBhE,EAAKgE,eAAe1iC,GACpC2iC,cAAe,SAACrnC,GACZojC,EAAK0C,OAAOphC,EAAI,CAAEmB,WAAY7F,KAElCsnC,iBAAkB,SAACtnC,GACfojC,EAAK0C,OAAOphC,EAAI,CAAEgiC,cAAe1mC,KAErCunC,qBAAsB,SAACvnC,GACnBojC,EAAK0C,OAAOphC,EAAI,CAAEiiC,kBAAmB3mC,KAEzCi3B,YAAa,SAACj3B,GACVojC,EAAK0C,OAAOphC,EAAI,CAAEwG,SAAUlL,KAEhC+R,QAAS,WACLqxB,EAAK0C,OAAOphC,EAAI,CAAEgL,OAAQ,WAE9BuC,WAAY,WACRmxB,EAAK0C,OAAOphC,EAAI,CAAEgL,OAAQ,cAE9BsC,UAAW,WACPoxB,EAAK0C,OAAOphC,EAAI,CAAEgL,OAAQ,aAE9B83B,OAAQ,WACJpE,EAAK0C,OAAOphC,EAAI,CAAEgL,OAAQ,aAE9BsoB,UAAW,WACPoL,EAAK0C,OAAOphC,EAAI,CAAEgL,OAAQ,cAE9B+3B,UAAW,SAACC,GAA0C,OAAAtE,EAAKyD,sBAAsBa,IACjFC,oBAAqB,SAACtB,GAA0C,OAAAjD,EAAKwE,gCAAgCvB,IACrG52B,KAAM,SAACrW,IACCyT,MAAAA,OAAW,EAAXA,EAAa45B,iBAIjBrD,EAAK0C,OAAOphC,GAAE6hC,EAAAA,EAAAA,IAAA,CACVE,gBAAgB,GACbrtC,QAWFgqC,EAAAwE,gCAAkC,SAACvB,GAChD,IAAMR,GAAeF,EAAAA,EAAAA,IAAgBvC,EAAKj7B,MAAMnM,QAAQqB,eAClDwP,EAAc1G,OAAO0hC,OAAOhC,GAAcvpC,MAAK,SAAAwrC,GAAgB,OAAAA,MAAAA,OAAY,EAAZA,EAAczB,YAAaA,KAChG,OAAOjD,EAAKyD,sBAAuBh6B,GAAeA,EAAYnI,IAAO,KAOxD0+B,EAAA9gC,IAAM,WACnB,OAAOqjC,EAAAA,EAAAA,IAAgBvC,EAAKj7B,MAAMnM,QAAQqB,gBAS7B+lC,EAAA0C,OAAS,SAACphC,EAAY1E,GAEnC,IAAM+nC,EAAU3E,EAAK9gC,MAChBylC,EAAQrjC,GAIbqjC,EAAQrjC,IAAG6hC,EAAAA,EAAAA,KAAAA,EAAAA,EAAAA,IAAA,GACJwB,EAAQrjC,IACR1E,GALHojC,EAAKj7B,MAAMhQ,UAAUmF,MAAM,mDAAmDoH,EAAE,mBASvE0+B,EAAA4E,cAAgB,SAACtjC,EAAYujC,GAC1C,IACMC,EADU9E,EAAK9gC,MACEoC,GACvB,QAAKwjC,GAGEC,GAAAA,CAAQD,EAAQD,IAGV7E,EAAAgF,mBAAqB,SAClC1jC,EACAujC,EACAI,EACAC,GAEA,IACMJ,EADU9E,EAAK9gC,MACEoC,GACvB,IAAKwjC,EAED,QAASG,EAGb,GAAIC,IAAwC,aAAlBJ,EAAOx4B,QAA2C,YAAlBw4B,EAAOx4B,QAE7D,QAAS24B,EAIb,IAAKH,EAAOtB,UAAuC,IAA3BsB,EAAOtB,SAASnoC,OACpC,OAAO2kC,EAAK4E,cAActjC,EAAIujC,GAGlC,IAAIrB,EAAWsB,EAAOtB,SAStB,OAPIxD,EAAKj7B,MAAMnM,QAAQ83B,IAAI5kB,OAAOgoB,iDAE9B0P,EAAWA,EAAS71B,QAAO,SAAAw3B,GAAW,OAACnF,EAAKoF,2BAA2BD,OAKpE3B,EADQyB,EAAa,QAAU,SACd,SAAAE,GAAW,OAAAnF,EAAKgF,mBAAmBG,EAASN,EAAQI,EAAYC,OAQ3ElF,EAAAoF,2BAA6B,SAACd,GAC3C,IAAKA,EAASjiC,SAlNO,qBAmNjB,OAAO,EAGX,IACMyiC,EADU9E,EAAK9gC,MACEolC,GAEvB,SAAIQ,IAAUrY,EAAAA,gBAAgBC,YAAYoY,EAAOtB,SAAS71B,QAAO,SAAAw3B,GAAW,OAAAA,EAAQ9iC,SAxN9D,4BAuOT29B,EAAA0D,SAAW,SACxBpiC,EACAujC,EACAI,EACAC,GAEA,IACMJ,EADU9E,EAAK9gC,MACEoC,GACvB,QAAKwjC,IAKAA,EAAOtB,UAAuC,IAA3BsB,EAAOtB,SAASnoC,OAKjC2kC,EAAKgF,mBAAmB1jC,EAAIujC,EAAQI,EAAYC,GAJ5ClF,EAAK4E,cAActjC,EAAIujC,KAWrB7E,EAAA/3B,uBAAyB,WACtC,QAAS+3B,EAAKj7B,MAAMsgC,eAQPrF,EAAAgE,eAAiB,SAAC1iC,GAG/B,QAFgB0+B,EAAK9gC,MACEoC,IA/PvB0+B,EAAK+C,kBAAiB,EAkQ9B,OArQ0BuC,EAAAA,EAAAA,IAAAxC,EAAAD,GAMfC,EAAAjwB,UAAAue,sBAAP,SAA6BC,GACzB,OAAI57B,KAAKsP,QAAUssB,GAMhByR,EAAAjwB,UAAA5C,OAAP,WACY,IAAA3O,EAAO7L,KAAKsP,MAAKzD,GACzB,OAAO8B,EAAAA,cAACw/B,GAAgBO,EAAAA,EAAAA,IAAA,GAAK1tC,KAAKsP,MAAK,CAAE0E,YAAahU,KAAKguC,sBAAsBniC,OAfnFwhC,GAAWjyB,EAAAA,EAAAA,IAAA,CADhBI,EAAAA,IAAQ,uCACH6xB,GAAN,CAA0B1/B,EAAAA,gFCLvB,MAAMmiC,EAAmDpiC,IAAA,IAAC,QAAEzD,EAAO,UAAE2D,EAAY,kCAAkCF,EAAA,OACtHC,EAAAA,cAAA,OAAKC,UAAW,GAAGA,yBACfD,EAAAA,cAACoiC,EAAAA,QAAO,MACRpiC,EAAAA,cAAA,QAAMC,UAAW,GAAGA,sBAA+B3D,2xBC0B3D,IAAa+lC,EAAb,cAAqDriC,EAAAA,cAMjDtO,YAAmBiQ,GAAkD,IAAAquB,EACjEhsB,MAAMrC,GAHO,KAAA4yB,gBAA0B,wCA6F1B,KAAA+N,UAAY,KACzB,MAAM,MAAEC,GAAUlwC,KAAKsP,MACvB,OAAQ4gC,GAASA,EAAMC,SAAWD,EAAMC,QAAQvqC,QAAUsqC,EAAMC,SAAY,IAyBxE,KAAAC,6CAAgD76B,GACnDvV,KAAKsP,MAAM+G,OAAOg6B,uCAAwCviC,KAAOyH,EAAMI,OAAOxO,MArH/EnH,KAAKyI,MAAQ,CACTylC,SAAS,EACToC,oCAAkE,QAA/B3S,EAAA39B,KAAKsP,MAAMwF,KAAKgD,SAASxP,cAAM,IAAAq1B,IAA/BA,EAAiCmJ,qCAIrE7J,qBACHnjB,EAAAA,EAAAA,KACI,SAAAokB,EAAA,OAAqC,QAArCA,EAAMl+B,KAAKsP,MAAMwF,KAAKgD,SAASxP,cAAM,IAAA41B,OAAA,EAA/BA,EAAiCqS,gCACvC,KACI,MAAM1/B,EAAQ7Q,KAAKiwC,YACnB,GAAqB,IAAjBp/B,EAAMjL,OACN5F,KAAKsP,MAAMnM,QAAQ7D,UAAUmF,MAAM,+EAChC,CACH,IAAIypC,GAAU,EAEd,IAAK,MAAMpiC,KAAQ+E,EAEf,GAAI/E,EAAK9J,IAAI4K,SAAS,oBAAqB,CAAC,IAADuxB,EAAAc,EAEvC,MAAMuR,EAAuB,KAAK1kC,EAAKwD,MAAM+G,OAAO4qB,sCAE9CwP,EAGoB,QAHPtS,EACgB,QADhBc,EACfj/B,KAAKsP,MAAMwF,KAAKgD,SAASxP,cAAM,IAAA22B,GAA8B,QAA9BA,EAA/BA,EAAiCsR,oCAA4B,IAAAtR,GAE5D,QAF4DA,EAA7DA,EAA+Dx7B,MAC3DumC,GAAYA,EAASC,MAAQuG,WAChC,IAAAvR,GAAO,QAAPA,EAFDA,EAEGiL,aAAK,IAAAjL,OAAA,EAFRA,EAEUyR,oBAAY,IAAAvS,GAAAA,EAC1B+P,EAAUA,GAAWuC,EAG7BzwC,KAAK8+B,SAAS,CAAEoP,QAAAA,SAK5Bp0B,EAAAA,EAAAA,KACI,SAAAklB,EAAA,OAAqC,QAArCA,EAAMh/B,KAAKsP,MAAMwF,KAAKgD,SAASxP,cAAM,IAAA02B,OAAA,EAA/BA,EAAiC6H,4BACvCA,IACI7mC,KAAK8+B,SAAS,CAAEwR,kCAAmCzJ,OAKxDrsB,SAAM,IAAA/B,EAAAC,EACT,MACIrC,QAAQ,uCAAEg6B,GACVjtC,WAAW,4CAAEutC,GACb77B,MAAM,SAAEgD,IACR9X,KAAKsP,MAET,IAAKwI,EAASxP,QAAyB,QAAnBmQ,EAAIX,EAASxP,cAAM,IAAAmQ,GAAfA,EAAiBouB,0BAA2C,QAAnBnuB,EAAIZ,EAASxP,cAAM,IAAAoQ,GAAfA,EAAiBkpB,iCAElF,OADA5hC,KAAKsP,MAAMnM,QAAQ7D,UAAUo/B,YAAY,mFAClC,KAGX,GAAI1+B,KAAKsP,MAAMnM,QAAQgB,QAAQC,KAAKwsC,cAAyD,IAAzC9O,EAAAA,sBAAsB+O,eAEtE,OADA7wC,KAAKsP,MAAMnM,QAAQ7D,UAAUo/B,YAAY,kFAClC,KAGX,MAAM7tB,EAAQ7Q,KAAKiwC,YACnB,GAAqB,IAAjBp/B,EAAMjL,OAEN,OADA5F,KAAKsP,MAAMnM,QAAQ7D,UAAUmF,MAAM,2EAC5B,KAGX,MAAMqsC,EAAqD9wC,KAAKyI,MAAM6nC,kCAAoC,OAAS,GAE7GpO,EAAkBlyB,GAAAA,CACpB,wCACAhQ,KAAKsP,MAAM+G,OAAOzI,UAClBkjC,GAGEjb,EAASr1B,EAAAA,EAAA,GACRR,KAAKsP,OAAK,IAEbyhC,4BAA6B,CACzBj2B,YAAa9a,KAAKsP,MAClB1B,UAAWs0B,GAEfrxB,MAAOA,EACPq9B,QAASluC,KAAKyI,MAAMylC,QACpB8C,QAASrjC,EAAAA,cAACmiC,EAAAA,EAAgBxiC,OAAAiB,OAAA,GAAK,CAAEtE,QAAS0mC,EAA6C/iC,UAAW5N,KAAKkiC,mBACvGjzB,MAAOohC,GAA0CrwC,KAAKixC,oBAAoBZ,GAC1Ea,YAAa,CAAEtjC,UAAW,iDAE9B,OAAO5N,KAAKsP,MAAMmL,WAAWob,GAazBob,oBAAoBZ,GACxB,OACI1iC,EAAAA,cAACwnB,EAAAA,GAAa7nB,OAAAiB,OAAA,GACN8hC,EAAsC,CAC1Cva,IAAKua,EAAuCva,KAAO,KACnDloB,UAAU,+CACVE,KAAMuiC,EAAuCviC,KAC7CsnB,UAAW,CAAEre,OAAQ/W,KAAKowC,6CAA8Cx2B,eAAgB5Z,KAAKsP,MAAMnM,QAAQgB,cAlH9G6rC,GAA+B50B,EAAAA,EAAAA,IAAA,CAD3CI,EAAAA,IACYw0B,GAgIb,iGCrKA,MAAMmB,EAA8DzjC,IAAA,IAAC,mBAAE0jC,EAAkB,MAAEvgC,GAAOnD,EAAA,OAC9FC,EAAAA,cAAA,OAAKC,UAAWwjC,GAAqBvgC,IAqBzC,EAlBiG6K,IAO5F,IAP6F,4BAC9Fq1B,EAA2B,MAC3BlgC,EAAK,QACLq9B,EAAO,QACP8C,EAAO,MACP/hC,EAAK,YACLiiC,GACHx1B,EACG,MAAM01B,EAA6BlD,EAAU,gBAAkB,mBAC/D,OACIvgC,EAAAA,cAACiU,EAAAA,OAAMtU,OAAAiB,OAAA,GAAKwiC,GACRpjC,EAAAA,cAAC8N,EAAAA,KAAInO,OAAAiB,OAAA,GAAK2iC,GAAcjiC,IACtBi/B,GAAW8C,EACbrjC,EAAAA,cAACwjC,EAAuB,CAACC,mBAAoBA,EAAoBvgC,MAAOA,6xBCYpF,MAAMwgC,EAA4B,qBAUlC,IAAaC,EAAb,cAA4C3jC,EAAAA,UAkBxCtO,YAAmBiQ,GACfqC,MAAMrC,GAiMO,KAAAiiC,SAAW,KACxB,MAAM,MAAErB,GAAUlwC,KAAKsP,MACvB,OAAQ4gC,GAASA,EAAMC,SAAWD,EAAMC,QAAQvqC,QAAUsqC,EAAMC,SAAY,IAG/D,KAAAqB,2BAA6B,KAC1C,MAAM,SAAEzD,EAAQ,UAAEa,GAAc5uC,KAAKsP,MAAM0E,YAC3C,OAAO+5B,EACFnkC,IAAIglC,GACJ12B,QAAQzP,KAA0CA,IAAUA,EAAMkvB,YAAclvB,EAAM8lC,kBAG9E,KAAAkD,WAAa,KAE1BzxC,KAAKwxC,6BAA6BvpC,SAAQQ,IACtCA,EAAM4J,UAAY5J,EAAM21B,aAAY,OAI3B,KAAAnqB,SAAW,KAAW,IAAA0pB,EACnC,MAAM+T,EAA4B1a,EAAAA,gBAAgBC,YAC9Cj3B,KAAKsP,MAAM0E,YAAY+5B,SAAS71B,QAAOw3B,GAAWA,EAAQ9iC,SAASykC,MAepE,IAADnT,GAZFl+B,KAAKsP,MAAMhQ,UAAUo/B,YAAY,yCAEjC1+B,KAAKyxC,aACLzxC,KAAKwxC,6BAA6BvpC,SAAQQ,KACrCA,EAAMylC,SAAWzlC,EAAMwL,UAAYxL,EAAMwL,cAKX,QAA/B0pB,EAAA39B,KAAKsP,MAAMwF,KAAKgD,SAASxP,cAAM,IAAAq1B,GAA/BA,EAAiCU,gDACjCqT,GA9PO,IA+PP1xC,KAAK2xC,aAE0B,QAA/BzT,EAAAl+B,KAAKsP,MAAMwF,KAAKgD,SAASxP,cAAM,IAAA41B,GAA/BA,EAAiC0T,qCAAqC,CAClEC,mCAAmC,MAK9B,KAAAv/B,SAAW,KACxBtS,KAAKsP,MAAMhQ,UAAUo/B,YAAY,yCAEjC1+B,KAAKyxC,aACLzxC,KAAKwxC,6BAA6BvpC,SAAQQ,KACrCA,EAAMylC,SAAWzlC,EAAM6J,UAAY7J,EAAM6J,eAIjC,KAAAyE,OAAS,KACtB/W,KAAKsP,MAAMhQ,UAAUo/B,YAAY,uCAEjC1+B,KAAKwxC,6BAA6BvpC,SAAQQ,KACrCA,EAAMylC,SAAWzlC,EAAM2lC,YAAc3lC,EAAMsO,QAAUtO,EAAMsO,aAInD,KAAA+6B,iBAAmB,KAChC9xC,KAAKsP,MAAMhQ,UAAUo/B,YAAY,iDAEjC1+B,KAAKwxC,6BAA6BvpC,SAAQQ,IACtCA,EAAMylC,SAAWzlC,EAAMqpC,kBAAoBrpC,EAAMqpC,uBAhQrD9xC,KAAKyI,MAAQ,CAAEspC,YAAY,GAnBrB,gBAAoB,IAAAC,EAAAC,EAC1B,MACIn9B,MAAM,SAAEgD,IACR9X,KAAKsP,MACT,GAAKwI,MAAAA,IAAAA,EAAUxP,OACX,OAAO,EAGX,MACM0P,EAAkC,QAA9Bg6B,EADal6B,EAASxP,OACJyP,oBAAY,IAAAi6B,OAAA,EAA3BA,EAA6Bh6B,KAC1C,OAAKA,GAASA,EAAKC,WAAc+e,EAAAA,gBAAgBC,YAAYjf,EAAKC,YAI3C,QAAvBg6B,EAAOj6B,EAAKqpB,mBAAW,IAAA4Q,EAAAA,EAHZ,EAWRhV,oBAAiB,IAAAkB,EAAAc,EACpB,MACM8O,EADQ/tC,KAAKuxC,WACI3nC,KAAKkC,GAA0BrC,GAAAA,CAAIqC,EAAM,cAC1DuyB,EAC6E,QAD/BF,EACjB,QADiBc,EAChDj/B,KAAKsP,MAAMwF,KAAKgD,SAASxP,cAAM,IAAA22B,OAAA,EAA/BA,EAAiCZ,sDAA8C,IAAAF,GAAAA,EAEnFn+B,KAAKsP,MAAM0E,YAAY4C,KAAK,CACxBG,OAAQ/W,KAAK+W,OACbzE,SAAU+rB,OAAiD18B,EAAY3B,KAAKsS,SAC5E2B,SAAUoqB,OAAiD18B,EAAY3B,KAAKiU,SAC5E85B,SAAAA,KAGJj0B,EAAAA,EAAAA,KACI,IAAM9Z,KAAKsP,MAAM0E,YAAYk6B,UAC7B,KACIluC,KAAK8xC,uBAIbh4B,EAAAA,EAAAA,KACI,IAAM9Z,KAAKsP,MAAM0E,YAAYs6B,wBAC7B,KACItuC,KAAKiU,eAKb6F,EAAAA,EAAAA,KACI,SAAAklB,EAAA,OAAqC,QAArCA,EAAMh/B,KAAKsP,MAAMwF,KAAKgD,SAASxP,cAAM,IAAA02B,OAAA,EAA/BA,EAAiCkT,gCACvCA,IACI,MAAMR,EAA4B1a,EAAAA,gBAAgBC,YAC9Cj3B,KAAKsP,MAAM0E,YAAY+5B,SAAS71B,QAAOw3B,GAAWA,EAAQ9iC,SAASykC,MAGnEhT,GAAkDqT,GAClD1xC,KAAK8+B,SAAS,CAAEiT,WAAYG,QAMxCp4B,EAAAA,EAAAA,KACI,SAAAulB,EAAA,OAAqC,QAArCA,EAAMr/B,KAAKsP,MAAMwF,KAAKgD,SAASxP,cAAM,IAAA+2B,OAAA,EAA/BA,EAAiC8S,sCACvC,KACI,MAAMT,EAA4B1a,EAAAA,gBAAgBC,YAC9Cj3B,KAAKsP,MAAM0E,YAAY+5B,SAAS71B,QAAOw3B,GAAWA,EAAQ9iC,SAASykC,MAGnEhT,GAAkDqT,GAClD1xC,KAAKiU,eAMjB6F,EAAAA,EAAAA,KACI,IAAM9Z,KAAKsP,MAAM0E,YAAYk6B,UAC7BrsC,MAAAA,IACI,MAAM6vC,EAA4B1a,EAAAA,gBAAgBC,YAC9Cj3B,KAAKsP,MAAM0E,YAAY+5B,SAAS71B,QAAOw3B,GAAWA,EAAQ9iC,SAASykC,MAG0C,IAAD5R,EAA5GpB,GAAkDqT,GAA6B1xC,KAAK2xC,UA9FrF,SA+FsC,QAArClS,EAAMz/B,KAAKsP,MAAMwF,KAAKgD,SAASxP,cAAM,IAAAm3B,OAAA,EAA/BA,EAAiCmS,qCAAqC,CACxEC,kCAAmC3D,SAOnDp0B,EAAAA,EAAAA,KACI,IAAM9Z,KAAKsP,MAAM0E,YAAY3B,WAC7BxQ,MAAAA,IACI,MAAM6vC,EAA4B1a,EAAAA,gBAAgBC,YAC9Cj3B,KAAKsP,MAAM0E,YAAY+5B,SAAS71B,QAAOw3B,GAAWA,EAAQ9iC,SAASykC,MAGW,IAADhR,EAA7EhC,GAAkDqT,SACb,QAArCrR,EAAMrgC,KAAKsP,MAAMwF,KAAKgD,SAASxP,cAAM,IAAA+3B,OAAA,EAA/BA,EAAiC+R,wCAAwC,CAC3EC,qCAAsChgC,SAMtDyH,EAAAA,EAAAA,KACI,SAAAwmB,EAAA,OAAqC,QAArCA,EAAMtgC,KAAKsP,MAAMwF,KAAKgD,SAASxP,cAAM,IAAAg4B,OAAA,EAA/BA,EAAiCuB,wBACvChgC,UAAW,IAAA0+B,EAC2BvJ,EAAAA,gBAAgBC,YAC9Cj3B,KAAKsP,MAAM0E,YAAY+5B,SAAS71B,QAAOw3B,GAAWA,EAAQ9iC,SAASykC,OAGP,QAAnC9Q,EAAIvgC,KAAKsP,MAAMwF,KAAKgD,SAASxP,cAAM,IAAAi4B,GAA/BA,EAAiCsB,uBAC9D7hC,KAAK+W,eACC/W,KAAKsP,MAAMwF,KAAKgD,SAASxP,OAAOgqC,2BAA2B,CAAEC,yBAAyB,QAMrGC,qBACH,IAAKxyC,KAAKsP,MAAM0E,YAAYxB,uBACxB,OAMJ,MAAM,SAAEu7B,EAAQ,SAAE17B,EAAQ,UAAEu8B,GAAc5uC,KAAKsP,MAAM0E,YACtB+5B,EAASt3B,MAAMi5B,IAC1C,MAAMjnC,EAAQmmC,EAAUc,GACxB,QAASjnC,IAAUA,EAAMylC,SAAWzlC,EAAM2lC,eAEhB/7B,GAC1BrS,KAAK+W,SAIN4kB,sBAAsBC,EAAiDC,GAC1E,OAAI77B,KAAKyI,QAAUozB,GAAa77B,KAAKsP,MAAMwF,OAAS8mB,EAAU9mB,KAM3D0F,SACH,MAAM,cACFo1B,EAAa,YACb57B,EACAqC,QAAQ,MAAEo8B,IACVzyC,KAAKsP,MAEHuB,EAAQ7Q,KAAKuxC,WACnB,GAAqB,IAAjB1gC,EAAMjL,OAEN,OADA5F,KAAKsP,MAAMnM,QAAQ7D,UAAUmF,MAAM,yDAC5B,KAGX,MAAMy9B,EAAkBlyB,GAAAA,CACpB,gCACA,CACI,kBAAmBgE,EAAY45B,eAC/B,WAAY55B,EAAYk6B,QACxB,eAAgBl6B,EAAYk6B,QAC5BwE,UAAqB,cAAVD,EACX,mBAA8B,UAAVA,GAExBzyC,KAAKsP,MAAM+G,OAAOzI,WAGhBioB,EAASr1B,EAAAA,EAAA,GACRR,KAAKsP,OAAK,IAEb1B,UAAWs0B,EACX6O,4BAA6B,CACzBj2B,YAAa9a,KAAKsP,MAClB1B,UAAWs0B,GAEfrxB,MAAOA,EAAMjH,KAAKkC,IACd,MAAM4jC,EAAUjmC,GAAAA,CAAIqC,EAAM,YACpBrD,EAAQuL,EAAY46B,UAAUc,GAG9BiD,EACF3yC,KAAKyI,MAAMspC,YAAetpC,EAAM8lC,kBAAoB9lC,EAAMmlC,gBAAkBnlC,EAAMkvB,YAAclvB,EAAM2lC,WAC1G,MAAO,CACHviC,GAAI6jC,EACJ/b,QAASlrB,EAAM8lC,iBAAmB9lC,EAAMmlC,gBAAkBjgC,EAAAA,cAACilC,EAAAA,EAAgB,MAC3EC,UAAW,CACP,iBAAkBpqC,EAAM+kC,SACxB5/B,UAAWoC,GAAAA,CAAU,sCAAuC,CACxD2iC,OAAAA,EACAG,YAAarqC,EAAMmlC,eACnB5/B,SAAUvF,EAAMkvB,WAChBob,QAAStqC,EAAM2lC,UACf4E,MAAOvqC,EAAMylC,QACb+E,SAAUxqC,EAAMgK,WAChBygC,QAASzqC,EAAM0lC,aAGvBriC,KAAM6B,EAAAA,aAAmB7B,EAA4B,CAAE8jC,cAAAA,UAInE,OAAO5vC,KAAKsP,MAAMmL,WAAWob,MAhNvBza,EAAAA,EAAAA,IAAA,CAATE,EAAAA,IAAQ,8BADAg2B,GAAsBl2B,EAAAA,EAAAA,IAAA,CADlCI,EAAAA,IACY81B,GAyRb,SAAe/1B,EAAAA,EAAAA,iBAAgB+1B,0FCrU/B,MAAM6B,EAAyDzlC,IAAA,IAAC,QAAEimB,EAAO,UAAEkf,EAAS,KAAE/mC,GAAM4B,EAAA,OACxFC,EAAAA,cAAAA,EAAAA,SAAA,KACKgmB,EACDhmB,EAAAA,cAAC8N,EAAAA,KAAInO,OAAAiB,OAAA,GAAKskC,GAAY/mC,KAY9B,EARmF4P,IAAA,IAAC,4BAAEq1B,EAA2B,MAAElgC,GAAO6K,EAAA,OACtH/N,EAAAA,cAACiU,EAAAA,OAAMtU,OAAAiB,OAAA,GAAKwiC,GACPlgC,EAAMjH,KAAIkC,GACP6B,EAAAA,cAACwlC,EAAa7lC,OAAAiB,OAAA,CAACvM,IAAK8J,EAAKD,IAAQC,kECb7C,MAEA,EAF0BsnC,IAAMzlC,EAAAA,cAAA,OAAKC,UAAU,2HCS/C,MAAMylC,UAAsB1lC,EAAAA,cAQxBtO,YAAYiQ,GACRqC,MAAMrC,GARO,KAAA8lB,UAAqC,CAClDxb,eAAgB5Z,KAAKsP,MAAMnM,QAAQgB,QACnC4S,OAASxB,GAA0CvV,KAAKsP,MAAM+G,OAAOi9B,cAAgB/9B,EAAMI,OAAOxO,OAOlGnH,KAAKiO,kBAAmBwL,EAAAA,EAAAA,oBACpBzZ,KAAKsP,MAAMnM,QAAQgB,QAAQuV,kBAC3B1Z,KAAKsP,MAAMqK,aACX3Z,KAAKsP,MAAMhQ,WAIZkb,SACH,OAAKxa,KAAKsP,MAAM+G,OAAOk9B,YAMnB5lC,EAAAA,cAAC6lC,EAAAA,UAAS,CACNC,KAAMzzC,KAAKsP,MAAM+G,OAAOk9B,YACxBtkC,MAAOjP,KAAKsP,MAAM+G,OAAOpH,MAAK,aAClBjP,KAAKsP,MAAM+G,OAAOtI,UAC9BH,UAAU,iBACVwnB,UAAWp1B,KAAKo1B,UAChBtnB,KAAM9N,KAAKsP,MAAM+G,OAAOi9B,cACxBrlC,iBAAkBjO,KAAKiO,oBAZ3BjO,KAAKsP,MAAMhQ,UAAUmF,MAAM,oEACpB,OAiBnB,wsBCZA,MAAMivC,UAAkB/lC,EAAAA,cAAxBtO,cAAA,oBAqCW,KAAAs0C,sBAAyB7jC,GAAmByF,IAC3CvV,KAAKsP,MAAM+G,OAAOu9B,OAAQ9jC,KAC1B9P,KAAKsP,MAAM+G,OAAOu9B,OAAQ9jC,GAAO+jC,UAAYt+B,EAAMI,OAAOxO,QAQjD,KAAA2sC,sBAAwB,KACrC,MAAMC,EAAuC/zC,KAAKsP,MAAM+G,OAAOu9B,OACzDpQ,EAAgD,CAClDC,UAAW,CACPf,GAAI,CAAEgB,EAAG,qBAAsBf,EAAG,GAAIgB,EAAG,IACzCb,GAAI,CAAEY,EAAG,qBAAsBf,EAAG,GAAIgB,EAAG,IACzCZ,GAAI,CAAEW,EAAG,qBAAsBf,EAAG,GAAIgB,EAAG,KAE7CC,UAAU,EACVoQ,iBAAiB,GAErB,OAAOD,MAAAA,OAAS,EAATA,EAAWnqC,KAAI,CAACkC,EAAMgE,KAAS,IAAAmkC,EAAAC,EAClC,MAAM,MAAEC,EAAK,KAAE1f,EAAI,UAAEof,GAAc/nC,EAE7Bu3B,EAAa,CACfZ,aAAcziC,KAAKsP,MAAMnM,QAAQgB,QAAQs+B,aACzC2F,cAAoC,QAAvB6L,EAAGE,MAAAA,OAAK,EAALA,EAAO/L,qBAAa,IAAA6L,EAAAA,EAAIzQ,GAGtC4Q,EAAgC3f,MAAAA,OAAI,EAAJA,EAAMK,QAAQC,eAC9Csf,EAAkD,QAArCH,EAAuBzf,MAAAA,OAAI,EAAJA,EAAMG,gBAAQ,IAAAsf,EAAAA,EAAIzf,MAAAA,OAAI,EAAJA,EAAM1mB,UAC5DumC,EAAyC7f,MAAAA,OAAI,EAAJA,EAAM1mB,UAC/CwmC,EAAwB9f,MAAAA,OAAI,EAAJA,EAAMO,aAsBpC,MARsC,CAClCmf,MAXAxmC,EAAAA,cAACwnB,EAAAA,GAAc7nB,OAAAiB,OAAA,GAAK4lC,EAAW9Q,EAAU,CAAE8F,oBAAoB,QAAQvvB,eAAgB5Z,KAAKsP,MAAMnM,QAAQgB,WAY1G2J,KATc+lC,GACdlmC,EAAAA,cAACwnB,EAAAA,GAA0B,CACvBrnB,KAAM+lC,EACNjmC,UAAU,sBACVwnB,UAAW,CAAEre,OAAQ/W,KAAK2zC,sBAAsB7jC,GAAQ8J,eAAgB5Z,KAAKsP,MAAMnM,QAAQgB,WAM/FswB,KAAM2f,EACNI,YAAaH,EACbI,cAAeH,EACfI,iBAAkBH,OAxFvB/5B,SAAM,IAAAm6B,EACT,MAAM,QAAEhiC,GAAY3S,KAAKsP,MAAM+G,OACzBu+B,EAAiBjiC,GAAWhF,EAAAA,cAACwnB,EAAAA,GAAa,CAACvnB,UAAU,uBAAuBkoB,IAAgB,QAAb6e,EAAEhiC,EAAQmjB,WAAG,IAAA6e,EAAAA,EAAI,KAAM7mC,KAAM6E,EAAQ7E,OACpH+nB,EAASr1B,EAAAA,EAAA,GACRR,KAAKsP,OAAK,IACbykC,UAAW,CACPj5B,YAAa9a,KAAKsP,MAClB1B,UAAWmN,GAAAA,CAAW,gBAAiB/a,KAAKsP,MAAM+G,OAAOzI,WACzDkoB,IAAK,OAET+e,iBAAkBD,EAClBE,mBAAoB,CAChBlnC,UAAW,sBACXC,KAAM,OACNioB,IAAK,MAETif,cAAe,CACXnnC,UAAW,2BACXC,KAAM,WACNioB,IAAK,MAETkf,uBAAwB,CACpBlf,IAAK,IACLloB,UAAW,sBACXC,KAAM,QAEVonC,eAAgBj1C,KAAK8zC,0BAEzB,OAAO9zC,KAAKsP,MAAMmL,WAAWob,IAmErC,sHCzHO,MAAMqf,EAAiB5lC,IAC1B,MAAM,UAAEykC,EAAS,mBAAEe,EAAkB,iBAAED,EAAgB,cAAEE,EAAa,eAAEE,EAAc,uBAAED,GAA2B1lC,EACnH,OACI3B,EAAAA,cAACiU,EAAAA,OAAMtU,OAAAiB,OAAA,GAAKwlC,GACPc,EACDlnC,EAAAA,cAAC8N,EAAAA,KAAInO,OAAAiB,OAAA,GAAKumC,GACLG,MAAAA,OAAc,EAAdA,EAAgBrrC,KAAIkC,IACjB,IAAIqpC,EAEJ,GAAIrpC,EAAKqoC,MAAO,CAEZgB,EADerpC,EAAKqoC,MACH7kC,MAAMu5B,QACpB,CAEHsM,EADcrpC,EAAKgC,KACHwB,MAAMxB,KAE1B,OACIH,EAAAA,cAAC8N,EAAAA,KAAInO,OAAAiB,OAAA,GAAKwmC,EAAa,CAAE/yC,IAAKmzC,IACzBrpC,EAAKqoC,OACFxmC,EAAAA,cAAC8N,EAAAA,KAAInO,OAAAiB,OAAA,GACGymC,EAAsB,CAC1BvB,KAAM3nC,EAAK2oB,KACX8O,QAASz3B,EAAK0oC,YAAW,aACb1oC,EAAK2oC,cACjB7mC,UAAWonC,EAAuBpnC,UAClC+H,OAAQ7J,EAAK4oC,iBAAmB,cAAW/yC,IAE1CmK,EAAKqoC,OAGbroC,EAAKgC,YASlC,iuBCdO,MAAMsnC,UAAqCznC,EAAAA,cAgB9CtO,YAAmBiQ,GACfqC,MAAMrC,GAhBO,KAAA+lC,mBAAuC57B,EAAAA,EAAAA,oBACpDzZ,KAAKsP,MAAMnM,QAAQgB,QAAQuV,kBAC3B1Z,KAAKsP,MAAMqK,aACX3Z,KAAKsP,MAAMhQ,WAgFR,KAAAg2C,iBAAoB//B,GAA0CvV,KAAKsP,MAAM+G,OAAOpH,MAAOnB,KAAOyH,EAAMI,OAAOxO,MA7E1G,uBAAuB2E,EAAuBgE,EAAeylC,GACjE,MAAMC,EAAW,oCAAoC1lC,IACrD,OACInC,EAAAA,cAACA,EAAAA,SAAc,CAAC3L,IAAKwzC,GAChB7nC,EAAAA,aAAmB7B,EAA4B,CAAE2pC,UAAW3lC,EAAO4lC,YAAaH,EAAcI,UAAU,KAS9Gn7B,SAAM,IAAAo7B,EAAAC,EACT,MAAM,UAAEzyC,GAAcpD,KAAKsP,OACrB,MAAEL,EAAK,UAAErB,GAAc5N,KAAKsP,MAAM+G,OAClCy/B,EAAmB91C,KAAKsP,MAAM4gC,OAASlwC,KAAKsP,MAAM4gC,MAAM6F,wBACxDC,EAAsBF,GAAoBA,EAAiBlwC,OAC3DqwC,EAAoF,CACtFngB,IAAKogB,EAAAA,oBACLtoC,UAAsC,QAA7BgoC,EAAE51C,KAAKsP,MAAM+G,OAAOzI,iBAAS,IAAAgoC,EAAAA,EAAI,GAC1CO,iBAAkB/yC,EAAUgzC,gBAC5BC,iBAAkBjzC,EAAUkzC,YAC5BC,SAAUv2C,KAAKsP,MAAMzD,GACrBoC,iBAAkBjO,KAAKq1C,kBACvBmB,UAAU,GAGRC,EAAgBxnC,GAClBtB,EAAAA,cAACwnB,EAAAA,GAAa,CACVvnB,UAAU,gCACVkoB,IAAc,QAAX+f,EAAE5mC,EAAM6mB,WAAG,IAAA+f,EAAAA,EAAI,KAClB/nC,KAAMmB,EAAMnB,KACZsnB,UAAW,CAAEre,OAAQ/W,KAAKs1C,iBAAkB17B,eAAgB5Z,KAAKsP,MAAMnM,QAAQgB,WAGjF0xB,EAASr1B,EAAAA,EAAA,GACRR,KAAKsP,OAAK,IACbL,MAAOwnC,EACPC,oCAAqC,CACjC9oC,UAAW,8CAEf+oC,sCAAuC,CACnC77B,YAAa9a,KAAKsP,MAClB1B,UAAWmN,GAAAA,CAAW,oCAAqCnN,IAE/DgpC,6CAA8C,CAC1C9gB,IAAK,MACLloB,UAAW,6CAEfipC,4CAA6C,CACzC/gB,IAAK,MACLloB,UAAW,4CAEfqoC,kCAAAA,EACAa,iCAAkC,CAC9BhhB,IAAK,KACLloB,UAAW,6CACXC,KAAM,YAEVkpC,wCAAyC/2C,KAAKsP,MAAM4gC,MAAM6F,wBAC1DiB,yCACIhB,EAnCwB,GAoCxBF,EAAiBlsC,KAAI,CAACkC,EAAuBgE,IACzCslC,EAA6B6B,gBAAgBnrC,EAAMgE,EAAOkmC,OAGtE,OAAOh2C,KAAKsP,MAAMmL,WAAWob,IAarC,kJCjHO,MAAMqhB,EAAqF5nC,IAC9F,MAAM,MACFL,EAAK,oCACLynC,EAAmC,sCACnCC,EAAqC,6CACrCC,EAA4C,yCAC5CI,EAAwC,wCACxCD,EAAuC,4CACvCF,EAA2C,kCAC3CZ,EAAiC,iCACjCa,GACAxnC,EACJ,OACI3B,IAAAA,cAACiU,EAAAA,OAAMtU,OAAAiB,OAAA,GAAKooC,GACRhpC,IAAAA,cAAC8N,EAAAA,KAAInO,OAAAiB,OAAA,GAAKmoC,GAAsCznC,GAChDtB,IAAAA,cAAC8N,EAAAA,KAAInO,OAAAiB,OAAA,GAAKqoC,GAA+CI,GACzDrpC,IAAAA,cAAC8N,EAAAA,KAAInO,OAAAiB,OAAA,GAAKsoC,GACNlpC,IAAAA,cAAC8N,EAAAA,KAAInO,OAAAiB,OAAA,GAAK0nC,GACLc,GACGA,EAAwCntC,KAAI,CAACutC,EAAqBrnC,KAC9D,MAAM0lC,EAAW,sCAAsC1lC,IACvD,OACInC,IAAAA,cAAC8N,EAAAA,KAAInO,OAAAiB,OAAA,GAAKuoC,EAAgC,CAAE90C,IAAKwzC,IAC5C2B,UAUrC","sources":["webpack://Msdyn365.Commerce.Online/./src/modules/custom-checkout-shipping-address/common/address-autosuggest.ts?d373","webpack://Msdyn365.Commerce.Online/./src/modules/custom-checkout-shipping-address/actions/get-state-provinces.ts?4008","webpack://Msdyn365.Commerce.Online/./src/modules/custom-checkout-shipping-address/common/address-common.ts?f4cc","webpack://Msdyn365.Commerce.Online/./src/modules/custom-checkout-shipping-address/common/address-format.data.ts?1ce5","webpack://Msdyn365.Commerce.Online/./src/modules/custom-checkout-shipping-address/common/address-module.data.ts?c633","webpack://Msdyn365.Commerce.Online/./src/modules/custom-checkout-shipping-address/common/address-format.ts?b9ef","webpack://Msdyn365.Commerce.Online/./src/modules/custom-checkout-shipping-address/common/address-meta-data.ts?e0f3","webpack://Msdyn365.Commerce.Online/./src/modules/custom-checkout-shipping-address/common/components/address-alert.tsx?99d1","webpack://Msdyn365.Commerce.Online/./src/modules/custom-checkout-shipping-address/common/components/address-button.tsx?55d4","webpack://Msdyn365.Commerce.Online/./src/modules/custom-checkout-shipping-address/common/components/address-checkbox.tsx?0721","webpack://Msdyn365.Commerce.Online/./src/modules/custom-checkout-shipping-address/common/components/address-dropdown.tsx?6e8b","webpack://Msdyn365.Commerce.Online/./src/modules/custom-checkout-shipping-address/common/components/address-error-message.tsx?a335","webpack://Msdyn365.Commerce.Online/./src/modules/custom-checkout-shipping-address/common/components/address-error-title.tsx?227d","webpack://Msdyn365.Commerce.Online/./src/modules/custom-checkout-shipping-address/common/components/address-input.tsx?713c","webpack://Msdyn365.Commerce.Online/./src/modules/custom-checkout-shipping-address/common/components/address-label.tsx?597f","webpack://Msdyn365.Commerce.Online/./src/modules/custom-checkout-shipping-address/common/components/address-add.tsx?eb99","webpack://Msdyn365.Commerce.Online/./src/modules/custom-checkout-shipping-address/common/components/address-detail-item.tsx?6cc8","webpack://Msdyn365.Commerce.Online/./src/modules/custom-checkout-shipping-address/common/components/address-show.tsx?8659","webpack://Msdyn365.Commerce.Online/./src/modules/custom-checkout-shipping-address/common/components/address-select.tsx?bbe0","webpack://Msdyn365.Commerce.Online/./src/modules/custom-checkout-shipping-address/custom-checkout-shipping-address.tsx?35a0","webpack://Msdyn365.Commerce.Online/./src/modules/custom-checkout-shipping-address/custom-checkout-shipping-address.view.tsx?774b","webpack://Msdyn365.Commerce.Online/./src/themes/venchi/utils/convert_a2_a3.ts?c0bb","webpack://Msdyn365.Commerce.Online/./src/themes/venchi/views/account-loyalty-tile.view.tsx?7c49","webpack://Msdyn365.Commerce.Online/./src/themes/venchi/views/account-management-address.view.tsx?2098","webpack://Msdyn365.Commerce.Online/./src/themes/venchi/views/loyalty-sign-up.view.tsx?1edc","webpack://Msdyn365.Commerce.Online/./src/modules/account-wishlist-tile/components/account-wishlist-tile-description.tsx?0588","webpack://Msdyn365.Commerce.Online/./src/modules/account-wishlist-tile/components/account-wishlist-tile-links.tsx?f114","webpack://Msdyn365.Commerce.Online/./src/modules/account-wishlist-tile/account-wishlist-tile.tsx?b721","webpack://Msdyn365.Commerce.Online/./src/modules/account-wishlist-tile/account-wishlist-tile.view.tsx?095e","webpack://Msdyn365.Commerce.Online/./src/checkout-errors/checkout-errors.ts?a9e0","webpack://Msdyn365.Commerce.Online/./src/common/address-autosuggest.ts?f5a2","webpack://Msdyn365.Commerce.Online/./src/common/address-common.ts?cf4b","webpack://Msdyn365.Commerce.Online/./src/common/address-format.data.ts?6cbf","webpack://Msdyn365.Commerce.Online/./src/common/address-format.ts?4f04","webpack://Msdyn365.Commerce.Online/./src/common/address-meta-data.ts?c6e6","webpack://Msdyn365.Commerce.Online/./src/common/address-module.data.ts?697a","webpack://Msdyn365.Commerce.Online/./src/common/components/address-checkbox.tsx?eb1a","webpack://Msdyn365.Commerce.Online/./src/common/components/address-add.tsx?e6a6","webpack://Msdyn365.Commerce.Online/./src/common/components/address-alert.tsx?10d1","webpack://Msdyn365.Commerce.Online/./src/common/components/address-button.tsx?7f7b","webpack://Msdyn365.Commerce.Online/./src/common/components/address-detail-item.tsx?5209","webpack://Msdyn365.Commerce.Online/./src/common/components/address-dropdown.tsx?f24b","webpack://Msdyn365.Commerce.Online/./src/common/components/address-error-alert.tsx?bcde","webpack://Msdyn365.Commerce.Online/./src/common/components/address-error-message.tsx?89ad","webpack://Msdyn365.Commerce.Online/./src/common/components/address-error-title.tsx?3926","webpack://Msdyn365.Commerce.Online/./src/common/components/address-input.tsx?8073","webpack://Msdyn365.Commerce.Online/./src/common/components/address-label.tsx?6864","webpack://Msdyn365.Commerce.Online/./src/common/components/address-list.tsx?a628","webpack://Msdyn365.Commerce.Online/./src/common/components/address-select.tsx?c1df","webpack://Msdyn365.Commerce.Online/./src/common/components/address-show.tsx?3f60","webpack://Msdyn365.Commerce.Online/./src/modules/account-management-address/account-management-address.tsx?27e7","webpack://Msdyn365.Commerce.Online/./src/modules/account-management-address/account-management-address.view.tsx?8c9f","webpack://Msdyn365.Commerce.Online/./src/modules/business-account-address/business-account-address.tsx?299e","webpack://Msdyn365.Commerce.Online/./src/modules/business-account-address/business-account-address.view.tsx?5078","webpack://Msdyn365.Commerce.Online/./src/common/components/address-billing-checkbox.tsx?4008","webpack://Msdyn365.Commerce.Online/./src/common/components/address-billing-heading.tsx?7bbd","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-billing-address/checkout-billing-address.tsx?2aa0","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-billing-address/checkout-billing-address.view.tsx?b194","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-shipping-address/components/checkout-shipping-cartlines-images.tsx?c635","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-shipping-address/checkout-shipping-address.tsx?de3a","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-shipping-address/checkout-shipping-address.view.tsx?3386","webpack://Msdyn365.Commerce.Online/../../src/checkout-state-data-action.ts?8344","webpack://Msdyn365.Commerce.Online/../../src/checkout-state.ts?acd8","webpack://Msdyn365.Commerce.Online/../../src/checkout-utilities.data.ts?b2cc","webpack://Msdyn365.Commerce.Online/../../../src/module-state-manager/module-state.ts?7579","webpack://Msdyn365.Commerce.Online/../../../src/module-state-manager/with-module-state.tsx?61ca","webpack://Msdyn365.Commerce.Online/./src/common/waiting.tsx?8095","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-express-payment-container/checkout-express-payment-container.tsx?1d63","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-express-payment-container/checkout-express-payment-container.view.tsx?4299","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-section-container/checkout-section-container.tsx?c853","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-section-container/checkout-section-container.view.tsx?b4ab","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-section-container/components/loading.tsx?2e57","webpack://Msdyn365.Commerce.Online/./src/modules/back-top-footer/back-top-footer.tsx?f47e","webpack://Msdyn365.Commerce.Online/./src/modules/image-list/image-list.tsx?5602","webpack://Msdyn365.Commerce.Online/./src/modules/image-list/image-list.view.tsx?2bed","webpack://Msdyn365.Commerce.Online/./src/modules/interactive-feature-collection/interactive-feature-collection.tsx?96a6","webpack://Msdyn365.Commerce.Online/./src/modules/interactive-feature-collection/interactive-feature-collection.view.tsx?db52"],"sourcesContent":["// tslint:disable:no-reference\r\n\r\nimport { IAutoSuggestOptions } from '@msdyn365-commerce-modules/address/src/common/address-autosuggest.data';\r\nimport { IStoreSelectorStateManager } from '@msdyn365-commerce-modules/bopis-utilities';\r\nimport { ITelemetry } from '@msdyn365-commerce/core';\r\n/**\r\n *\r\n * Auto Suggest\r\n */\r\nexport class AutoSuggest {\r\n public readonly excludedAddressFields: string[] = ['ThreeLetterISORegionName', 'Name', 'AddressTypeValue', 'Phone'];\r\n private telemetry: ITelemetry;\r\n private countryCode?: string;\r\n private bingMapsApiKey?: string;\r\n private defaultLanguageId?: string;\r\n private autoSuggestManager: Microsoft.Maps.AutosuggestManager | undefined;\r\n private autoSuggestOptions: IAutoSuggestOptions;\r\n\r\n constructor(\r\n telemetry: ITelemetry,\r\n autoSuggestOptions: IAutoSuggestOptions,\r\n BingMapsApiKey?: string,\r\n countryCode?: string,\r\n defaultLanguageId?: string\r\n ) {\r\n this.telemetry = telemetry;\r\n this.autoSuggestOptions = autoSuggestOptions;\r\n this.bingMapsApiKey = BingMapsApiKey;\r\n this.countryCode = countryCode;\r\n this.defaultLanguageId = defaultLanguageId;\r\n }\r\n\r\n public attachAutoSuggest = (\r\n inputId: string,\r\n containerId: string,\r\n selectedSuggestionCallback: (result: Microsoft.Maps.ISuggestionResult) => void\r\n ): void => {\r\n if (!this.autoSuggestManager) {\r\n Microsoft.Maps.loadModule('Microsoft.Maps.AutoSuggest', {\r\n callback: () => {\r\n const options = {\r\n ...this.autoSuggestOptions,\r\n countryCode: this.countryCode\r\n };\r\n this.autoSuggestManager = new Microsoft.Maps.AutosuggestManager(options);\r\n this.autoSuggestManager.attachAutosuggest(inputId, containerId, selectedSuggestionCallback);\r\n document.querySelector(inputId)?.setAttribute('role', 'combobox');\r\n setTimeout(() => {\r\n document.querySelector(inputId)?.setAttribute('type', 'text');\r\n }, 0);\r\n },\r\n errorCallback: () => {\r\n if (this.telemetry) {\r\n this.telemetry.debug('Unable to attach map auto suggest.');\r\n }\r\n },\r\n credentials: this.bingMapsApiKey\r\n });\r\n }\r\n };\r\n\r\n public changeAutoSuggestionCountryCode = (countryCode?: string): void => {\r\n if (this.autoSuggestManager) {\r\n this.autoSuggestOptions.countryCode = countryCode;\r\n this.autoSuggestManager.setOptions(this.autoSuggestOptions);\r\n }\r\n };\r\n\r\n public disposeAutoSuggest = (): void => {\r\n this.autoSuggestManager?.detachAutosuggest();\r\n this.autoSuggestManager?.dispose();\r\n this.autoSuggestManager = undefined;\r\n };\r\n\r\n public _loadMapAPI = async (storeSelectorStateManager: IStoreSelectorStateManager): Promise => {\r\n await storeSelectorStateManager.loadMapApi({\r\n key: this.bingMapsApiKey,\r\n lang: this.countryCode,\r\n market: this.defaultLanguageId\r\n });\r\n };\r\n}\r\n","import { buildCacheKey } from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n CacheType,\r\n createObservableDataAction,\r\n IAction,\r\n IActionContext,\r\n IActionInput,\r\n ICommerceApiSettings\r\n} from '@msdyn365-commerce/core';\r\nimport { getStateProvincesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\r\nimport { StateProvinceInfo } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\n\r\n/**\r\n * Input class for get state provinces data action\r\n */\r\nexport class GetStateProvincesInput implements IActionInput {\r\n public countryRegionId: string;\r\n private apiSettings: ICommerceApiSettings;\r\n\r\n constructor(countryRegionId: string, apiSettings: ICommerceApiSettings) {\r\n this.countryRegionId = countryRegionId;\r\n this.apiSettings = apiSettings;\r\n }\r\n\r\n public getCacheKey = () => buildCacheKey(`StateProvinceInfo-${this.countryRegionId}`, this.apiSettings);\r\n public getCacheObjectType = () => 'StateProvinceInfo';\r\n public dataCacheType = (): CacheType => 'request';\r\n}\r\n\r\nexport async function getStateProvinceAction(input: GetStateProvincesInput, ctx: IActionContext): Promise {\r\n return getStateProvincesAsync({ callerContext: ctx, queryResultSettings: {} }, input.countryRegionId);\r\n}\r\n\r\nexport default createObservableDataAction({\r\n action: >getStateProvinceAction\r\n});\r\n","import { addAddress, AddressManagementInput, updateAddress, updatePrimaryAddress } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { IActionInput, ICoreContext, IObservableAction, ITelemetry } from '@msdyn365-commerce/core';\r\nimport { Address, CountryRegionInfo, StateProvinceInfo } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\n\r\nimport { getStateProvinceAction, GetStateProvincesInput } from './../actions/get-state-provinces';\r\nimport { IAddressResource, IAddressResponse } from './address-module.data';\r\n\r\n/**\r\n *\r\n * Address common\r\n */\r\nexport class AddressCommon {\r\n private context: ICoreContext;\r\n private resources: IAddressResource;\r\n private telemetry: ITelemetry;\r\n\r\n constructor(context: ICoreContext, resources: IAddressResource, telemetry: ITelemetry) {\r\n this.context = context;\r\n this.resources = resources;\r\n this.telemetry = telemetry;\r\n }\r\n\r\n public getDefaultCountryRegionId = (countryRegionId: string, countryRegions: CountryRegionInfo[], market?: string): string => {\r\n const marketISOCode = market || 'US';\r\n const currentCountryRegion = countryRegions.find(countryRegion => (countryRegion.ISOCode || '') === marketISOCode);\r\n return (currentCountryRegion && currentCountryRegion.CountryRegionId) || countryRegionId;\r\n };\r\n\r\n public parseRetailException = (resources: IAddressResource): IAddressResponse => {\r\n return {\r\n errorTitle: resources.addressErrorMessageTitle,\r\n errorMessage: resources.addressGenericErrorMessage\r\n };\r\n };\r\n\r\n public isAuthenticatedFlow = (): boolean => {\r\n return this.context.request.user.isAuthenticated;\r\n };\r\n\r\n public getStateProvinces = async (countryRegionId: string): Promise => {\r\n let response: StateProvinceInfo[] = [];\r\n if (this.context && this.context.actionContext) {\r\n try {\r\n const input = new GetStateProvincesInput(countryRegionId, this.context.request.apiSettings);\r\n response = await getStateProvinceAction(input, this.context.actionContext);\r\n } catch (error) {\r\n if (this.telemetry) {\r\n this.telemetry.error(`Error encountered ${error}`);\r\n this.telemetry.debug('Unable to get state provinces');\r\n }\r\n }\r\n }\r\n return Promise.resolve(response);\r\n };\r\n\r\n // For any address, check for common requried field else treat it as invalid\\empty address.\r\n public isEmpty = (address: Address): boolean => {\r\n if (address && address.ThreeLetterISORegionName && address.City) {\r\n return false;\r\n }\r\n\r\n return true;\r\n };\r\n\r\n public addCustomerAddress = (address: Address): Promise => {\r\n return this.submitCustomerAddress(addAddress, address);\r\n };\r\n\r\n public updateCustomerAddress = (address: Address): Promise => {\r\n return this.submitCustomerAddress(updateAddress, address);\r\n };\r\n\r\n public updateCustomerPrimaryAddress = (address: Address): Promise => {\r\n return this.submitCustomerAddress(updatePrimaryAddress, address);\r\n };\r\n\r\n private submitCustomerAddress = (addressAction: IObservableAction, address: Address): Promise => {\r\n address.AddressTypeValue = address.AddressTypeValue || 7; // 7 sets it to HOME by default\r\n\r\n const input = new AddressManagementInput(address);\r\n return this.execAddressAction(addressAction, input, address);\r\n };\r\n\r\n private execAddressAction = async (\r\n addressAction: IObservableAction,\r\n input: IActionInput | IActionInput[],\r\n address: Address\r\n ): Promise => {\r\n let response: IAddressResponse = {};\r\n\r\n if (this.context && this.context.actionContext) {\r\n try {\r\n const addresses = await addressAction(input, this.context.actionContext);\r\n if (addresses.length > 0) {\r\n const currentAddress = addresses.find(\r\n newAddress =>\r\n newAddress.Name === address.Name &&\r\n newAddress.AddressTypeValue === address.AddressTypeValue &&\r\n newAddress.City === address.City &&\r\n newAddress.Phone === address.Phone &&\r\n newAddress.State === address.State &&\r\n newAddress.Street === address.Street &&\r\n newAddress.ThreeLetterISORegionName === address.ThreeLetterISORegionName &&\r\n newAddress.ZipCode === address.ZipCode\r\n );\r\n response.address = address.RecordId ? address : currentAddress ? currentAddress : addresses[addresses.length - 1];\r\n } else {\r\n response.address = address;\r\n }\r\n response.customerAddresses = addresses;\r\n } catch (error) {\r\n if (this.telemetry) {\r\n this.telemetry.error(`Error encountered ${error}`);\r\n this.telemetry.debug('Unable to exec address action');\r\n }\r\n response = this.parseRetailException(this.resources);\r\n }\r\n }\r\n return Promise.resolve(response);\r\n };\r\n}\r\n","export enum AddressItemDisplayType {\r\n Input = 'Input',\r\n Dropdown = 'Dropdown',\r\n Checkbox = 'Checkbox'\r\n}\r\n\r\nexport enum AddressValidationRuleType {\r\n Required = 'Required',\r\n Format = 'Format'\r\n}\r\n\r\nexport enum AddressItemType {\r\n Name = 1001,\r\n Phone = 1002,\r\n IsPrimary = 1003,\r\n AddressTypeValue = 1004,\r\n ZipCode = 1,\r\n City = 2,\r\n County = 3,\r\n State = 4,\r\n ThreeLetterISORegionName = 5,\r\n Street = 6,\r\n District = 7,\r\n StreetNumber = 8,\r\n BuildingCompliment = 9,\r\n Postbox = 10,\r\n House_RU = 21,\r\n Flat_RU = 22,\r\n CountryOKSMCode_RU = 23\r\n}\r\n\r\nexport interface IAddressItem {\r\n name: string;\r\n type: AddressItemType;\r\n label: string;\r\n maxLength: number;\r\n displayType: AddressItemDisplayType;\r\n validationRules?: IAddressValidationRule[];\r\n isNewLine: boolean;\r\n}\r\n\r\nexport interface IAddressValidationRule {\r\n type: AddressValidationRuleType;\r\n regEx: string;\r\n message: string;\r\n}\r\n\r\nexport interface IAddressDropdownsData {\r\n [index: string]: { key?: string | number; value?: string }[];\r\n}\r\n","import { Heading } from '@msdyn365-commerce-modules/data-types';\r\nimport { Address } from '@msdyn365-commerce/retail-proxy';\r\n\r\nexport enum AddressOperation {\r\n Add = 'Add',\r\n Show = 'Show',\r\n Update = 'Update',\r\n List = 'List'\r\n}\r\n\r\nexport enum AddressType {\r\n Shipping = 'Shipping',\r\n Billing = 'Billing',\r\n Company = 'Company'\r\n}\r\n\r\nexport interface IDropdownDisplayData {\r\n [index: string]: { key?: string; value?: string }[];\r\n}\r\n\r\nexport interface IAddressResponse {\r\n errorTitle?: string;\r\n errorMessage?: string;\r\n customerAddresses?: Address[];\r\n address?: Address;\r\n}\r\n\r\nexport interface IAddressConfig {\r\n heading?: Heading;\r\n primaryAddressSectionHeading?: Heading;\r\n otherAddressSectionHeading?: Heading;\r\n addAddressHeading?: Heading;\r\n editAddressHeading?: Heading;\r\n}\r\n\r\nexport interface IAddressResource {\r\n addressAddButtonText: string;\r\n addressAddButtonAriaLabel: string;\r\n addressPrimaryButtonText: string;\r\n addressPrimaryButtonAriaLabel: string;\r\n addressEditButtonText: string;\r\n addressEditButtonAriaLabel: string;\r\n addressRemoveButtonText: string;\r\n addressRemoveButtonAriaLabel: string;\r\n addressSaveButtonText: string;\r\n addressSaveButtonAriaLabel: string;\r\n addressCancelButtonText: string;\r\n addressCancelButtonAriaLabel: string;\r\n addressStateDefaultSelectionText: string;\r\n addressNameLabel: string;\r\n addressNameLabelOptional?: string;\r\n addressNameRequiredErrorMessage: string;\r\n addressPhoneLabel: string;\r\n addressPhoneLabelOptional?: string;\r\n addressPhoneRequiredErrorMessage: string;\r\n addressZipCodeLabel: string;\r\n addressZipCodeLabelOptional?: string;\r\n addressZipCodeRequiredErrorMessage: string;\r\n addressCityLabel: string;\r\n addressCityLabelOptional?: string;\r\n addressCityRequiredErrorMessage: string;\r\n addressCountyLabel: string;\r\n addressCountyLabelOptional?: string;\r\n addressCountyRequiredErrorMessage: string;\r\n addressStateLabel: string;\r\n addressStateLabelOptional?: string;\r\n addressStateRequiredErrorMessage: string;\r\n addressThreeLetterISORegionNameLabel: string;\r\n addressThreeLetterISORegionNameLabelOptional?: string;\r\n addressThreeLetterISORegionNameRequiredErrorMessage: string;\r\n addressStreetRequiredErrorMessage: string;\r\n addressDistrictLabel: string;\r\n addressDistrictLabelOptional?: string;\r\n addressDistrictRequiredErrorMessage: string;\r\n addressStreetNumberLabel: string;\r\n addressStreetNumberLabelOptional?: string;\r\n addressStreetNumberRequiredErrorMessage: string;\r\n addressBuildingComplimentLabel: string;\r\n addressBuildingComplimentLabelOptional?: string;\r\n addressBuildingComplimentRequiredErrorMessage: string;\r\n addressPostboxLabel: string;\r\n addressPostboxLabelOptional?: string;\r\n addressPostboxRequiredErrorMessage: string;\r\n addressHouseRULabel: string;\r\n addressHouseRULabelOptional?: string;\r\n addressHouseRURequiredErrorMessage: string;\r\n addressFlatRULabel: string;\r\n addressFlatRULabelOptional?: string;\r\n addressFlatRURequiredErrorMessage: string;\r\n addressCountryOKSMCodeRULabel: string;\r\n addressCountryOKSMCodeRURequiredErrorMessage: string;\r\n addressErrorMessageTitle: string;\r\n addressGenericErrorMessage: string;\r\n addressEmptyListAddressMessage: string;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { get, set } from 'mobx';\r\n\r\nimport {\r\n Address,\r\n AddressPurpose,\r\n CountryRegionInfo,\r\n StateProvinceInfo\r\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\n\r\nimport { AddressItemType, IAddressDropdownsData, IAddressItem, IAddressValidationRule } from './address-format.data';\r\nimport { AddressMetaData } from './address-meta-data';\r\n\r\n/**\r\n *\r\n * Retail Service Address format parser\r\n */\r\nexport class AddressFormat {\r\n private countryRegionsInfo?: CountryRegionInfo[];\r\n private addressPurposes?: AddressPurpose[];\r\n private addressMetaData: AddressMetaData;\r\n\r\n constructor(countryRegionsInfo: CountryRegionInfo[], addressMetaData: AddressMetaData, addressPurposes: AddressPurpose[]) {\r\n this.countryRegionsInfo = countryRegionsInfo;\r\n this.addressMetaData = addressMetaData;\r\n this.addressPurposes = addressPurposes;\r\n }\r\n\r\n public getAddressFormat(countryRegionId: string): IAddressItem[] {\r\n const countryRegionInfo = this._getCountryRegionInfo(countryRegionId);\r\n if (countryRegionInfo) {\r\n return this._getAddressDisplayFormat(countryRegionInfo);\r\n }\r\n return [];\r\n }\r\n\r\n public getCountryFormat(): { key?: string; value?: string }[] {\r\n return (this.countryRegionsInfo || []).map(countryRegion => {\r\n return {\r\n key: countryRegion.CountryRegionId,\r\n value: countryRegion.ShortName\r\n };\r\n });\r\n }\r\n\r\n public getStateFormat(stateProvinceInfo?: StateProvinceInfo[]): { key?: string; value?: string }[] {\r\n return (stateProvinceInfo || []).map(state => {\r\n return {\r\n key: state.StateId,\r\n value: state.StateName\r\n };\r\n });\r\n }\r\n\r\n public getAddressTypeFormat(): { key?: number; value?: string }[] {\r\n return (this.addressPurposes || []).map(addressPurpose => {\r\n return {\r\n key: addressPurpose.AddressType,\r\n value: addressPurpose.Name\r\n };\r\n });\r\n }\r\n\r\n public getPrefilledAddressDropdownData = (\r\n stateDefaultSelectionText: string,\r\n stateProvinceInfo?: StateProvinceInfo[]\r\n ): IAddressDropdownsData => {\r\n const defaultStateText = {\r\n key: '',\r\n value: stateDefaultSelectionText\r\n };\r\n const dropdownData: IAddressDropdownsData = {};\r\n\r\n dropdownData[AddressItemType[AddressItemType.ThreeLetterISORegionName]] = this.getCountryFormat();\r\n dropdownData[AddressItemType[AddressItemType.State]] = this.getStateFormat(stateProvinceInfo);\r\n dropdownData[AddressItemType[AddressItemType.State]].unshift(defaultStateText);\r\n dropdownData[AddressItemType[AddressItemType.AddressTypeValue]] = this.getAddressTypeFormat();\r\n\r\n return dropdownData;\r\n };\r\n\r\n public getTwoLetterISORegionName = (countryRegionId: string): string | undefined => {\r\n const countryRegionInfo = this._getCountryRegionInfo(countryRegionId);\r\n\r\n return countryRegionInfo!.ISOCode;\r\n };\r\n\r\n public validateAddressFormat = (\r\n address: Address,\r\n validationError: Address,\r\n countryRegionId: string,\r\n propertyName?: string\r\n ): boolean => {\r\n let isValid: boolean = true;\r\n let validationtor;\r\n const addressFormat = this.getAddressFormat(address.ThreeLetterISORegionName || countryRegionId);\r\n\r\n addressFormat.forEach(addressFormatItem => {\r\n if (!propertyName || (propertyName && addressFormatItem.name === propertyName)) {\r\n validationtor = this._inputValidation(addressFormatItem, validationError, address);\r\n if (validationtor !== undefined) {\r\n isValid = validationtor;\r\n }\r\n }\r\n });\r\n\r\n return isValid;\r\n };\r\n\r\n public getTranformedAddress = (result: Microsoft.Maps.ISuggestionResult, stateProvinceInfo?: StateProvinceInfo[]): Address => {\r\n const address: Address = {};\r\n\r\n // Zip Code\r\n if (result.address.postalCode !== undefined) {\r\n address.ZipCode = result.address.postalCode;\r\n } else {\r\n address.ZipCode = '';\r\n }\r\n\r\n // State\r\n if (stateProvinceInfo) {\r\n const selectedState = stateProvinceInfo.find(state => state.StateName === result.address.adminDistrict);\r\n if (!selectedState) {\r\n address.State = '';\r\n address.StateName = result.address.adminDistrict;\r\n } else {\r\n address.State = selectedState.StateId;\r\n address.StateName = selectedState.StateName;\r\n }\r\n }\r\n\r\n // Street\r\n if (result.address.addressLine !== undefined) {\r\n address.Street = result.address.addressLine;\r\n } else {\r\n address.Street = ' ';\r\n }\r\n\r\n // City\r\n if (result.address.locality !== undefined) {\r\n address.City = result.address.locality;\r\n } else {\r\n address.City = '';\r\n }\r\n\r\n // District\r\n if (result.address.district !== undefined) {\r\n address.DistrictName = result.address.district;\r\n address.CountyName = result.address.district;\r\n } else {\r\n address.DistrictName = '';\r\n }\r\n\r\n // formatted Address\r\n address.FullAddress = result.address.formattedAddress;\r\n\r\n return address;\r\n };\r\n\r\n private _inputValidation(addressFormatItem: IAddressItem, validationError: Address, address: Address): boolean | undefined {\r\n set(validationError, { [addressFormatItem.name]: null });\r\n for (const validationRule of addressFormatItem.validationRules || []) {\r\n if (!this._validateRegEx(address, addressFormatItem.name, validationRule)) {\r\n set(validationError, {\r\n [addressFormatItem.name]: validationRule.message\r\n });\r\n return false;\r\n }\r\n }\r\n return undefined;\r\n }\r\n private _validateRegEx = (address: Address, propertyName: string, validationRule: IAddressValidationRule): boolean => {\r\n if (validationRule.regEx && validationRule.regEx.length > 0) {\r\n const regex = new RegExp(validationRule.regEx);\r\n return regex.test(get(address, propertyName) || '');\r\n }\r\n return true;\r\n };\r\n\r\n private _getCountryRegionInfo(countryRegionId: string): CountryRegionInfo | undefined {\r\n return (this.countryRegionsInfo || []).find(countryRegion => {\r\n return (countryRegion.CountryRegionId || '').toLowerCase() === countryRegionId.toLowerCase();\r\n });\r\n }\r\n\r\n private _getAddressDisplayFormat(countryRegionInfo: CountryRegionInfo): IAddressItem[] {\r\n const addressDisplayItem: IAddressItem[] = [];\r\n\r\n if (countryRegionInfo && countryRegionInfo.AddressFormatLines) {\r\n const AddressTypeItem = this._extendAddressDisplayFormat(AddressItemType.AddressTypeValue, true);\r\n if (AddressTypeItem) {\r\n addressDisplayItem.push(AddressTypeItem);\r\n }\r\n\r\n const nameDisplayItem = this._extendAddressDisplayFormat(AddressItemType.Name, true);\r\n if (nameDisplayItem) {\r\n addressDisplayItem.push(nameDisplayItem);\r\n }\r\n\r\n countryRegionInfo.AddressFormatLines.forEach(formatLine => {\r\n if (formatLine.AddressComponentNameValue) {\r\n const addressItem = this.addressMetaData.getItemFormat(formatLine.AddressComponentNameValue);\r\n if (addressItem) {\r\n addressItem.isNewLine = formatLine.NewLine || false;\r\n addressDisplayItem.push(addressItem);\r\n }\r\n }\r\n });\r\n\r\n const phoneDisplayItem = this._extendAddressDisplayFormat(AddressItemType.Phone, false);\r\n if (phoneDisplayItem) {\r\n addressDisplayItem.push(phoneDisplayItem);\r\n }\r\n\r\n const isPrimaryDisplayItem = this._extendAddressDisplayFormat(AddressItemType.IsPrimary, false);\r\n if (isPrimaryDisplayItem) {\r\n addressDisplayItem.push(isPrimaryDisplayItem);\r\n }\r\n }\r\n\r\n return addressDisplayItem;\r\n }\r\n\r\n private _extendAddressDisplayFormat(type: AddressItemType, isNewLine: boolean): IAddressItem | undefined {\r\n const addressItem = this.addressMetaData.getItemFormat(type);\r\n if (addressItem) {\r\n addressItem.isNewLine = isNewLine;\r\n }\r\n return addressItem;\r\n }\r\n}\r\n","import {\r\n AddressItemDisplayType,\r\n AddressItemType,\r\n AddressValidationRuleType,\r\n IAddressItem,\r\n IAddressValidationRule\r\n} from './address-format.data';\r\nimport { IAddressResource } from './address-module.data';\r\n\r\n/**\r\n * Address meta data\r\n */\r\nexport class AddressMetaData {\r\n private metaData: IAddressItem[] = [];\r\n private resources: IAddressResource;\r\n private requiredFieldRegEx: string = '\\\\S';\r\n private resourcesPrefix: string = 'address';\r\n private maxLength: number = 64;\r\n private requiredFields: AddressItemType[];\r\n private excludedTypes: AddressItemType[];\r\n\r\n constructor(resources: IAddressResource, excluded?: AddressItemType[], required?: AddressItemType[]) {\r\n this.resources = resources || {};\r\n this.excludedTypes = excluded || [];\r\n this.requiredFields =\r\n required !== undefined\r\n ? required\r\n : [\r\n AddressItemType.Name,\r\n AddressItemType.ZipCode,\r\n AddressItemType.City,\r\n AddressItemType.State,\r\n AddressItemType.ThreeLetterISORegionName,\r\n AddressItemType.Street\r\n ];\r\n this._init();\r\n }\r\n\r\n public getItemFormat(id: number): IAddressItem | undefined {\r\n return this.metaData.find(item => {\r\n return item.type === id;\r\n });\r\n }\r\n\r\n private _init(): void {\r\n this._addItem(AddressItemType.Name, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.Phone, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.ZipCode, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.City, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.County, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.State, AddressItemDisplayType.Dropdown);\r\n this._addItem(AddressItemType.ThreeLetterISORegionName, AddressItemDisplayType.Dropdown);\r\n this._addItem(AddressItemType.Street, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.District, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.StreetNumber, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.BuildingCompliment, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.Postbox, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.House_RU, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.Flat_RU, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.CountryOKSMCode_RU, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.AddressTypeValue, AddressItemDisplayType.Dropdown);\r\n this._addItem(AddressItemType.IsPrimary, AddressItemDisplayType.Checkbox);\r\n }\r\n\r\n private _addItem(type: AddressItemType, displayType: AddressItemDisplayType): void {\r\n if (this.excludedTypes.includes(type)) {\r\n return;\r\n }\r\n\r\n const nameKey = AddressItemType[type].replace('_', '');\r\n\r\n // find out if currentItem is required field\r\n const validationRules = this._validationRules(type, nameKey);\r\n let isRequired = false;\r\n validationRules.forEach(rule => {\r\n if (rule.type === AddressValidationRuleType.Required) {\r\n isRequired = true;\r\n }\r\n });\r\n\r\n // if no optional string is provided in resource file, use the original label text\r\n const optionalString =\r\n this.resources[`${this.resourcesPrefix}${nameKey}LabelOptional`] || this.resources[`${this.resourcesPrefix}${nameKey}Label`];\r\n const item: IAddressItem = {\r\n type,\r\n displayType,\r\n name: AddressItemType[type],\r\n label: isRequired ? this.resources[`${this.resourcesPrefix}${nameKey}Label`] : optionalString,\r\n maxLength: this.maxLength,\r\n validationRules: validationRules,\r\n isNewLine: true\r\n };\r\n\r\n this.metaData.push(item);\r\n }\r\n\r\n private _validationRules(type: AddressItemType, name: string): IAddressValidationRule[] {\r\n const validationRules: IAddressValidationRule[] = [];\r\n\r\n for (const ruleType of Object.keys(AddressValidationRuleType)) {\r\n const key = `${this.resourcesPrefix}${name}${ruleType}`;\r\n const message = this.resources[`${key}ErrorMessage`];\r\n switch (ruleType) {\r\n case AddressValidationRuleType.Required: {\r\n if (this.requiredFields.find((itemType: AddressItemType) => itemType === type)) {\r\n validationRules.push(this._validationRule(ruleType, this.requiredFieldRegEx, message));\r\n }\r\n break;\r\n }\r\n default:\r\n }\r\n }\r\n return validationRules;\r\n }\r\n\r\n private _validationRule(type: AddressValidationRuleType, regEx: string, message: string): IAddressValidationRule {\r\n return {\r\n type,\r\n regEx,\r\n message\r\n };\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as React from 'react';\r\n\r\nexport interface IAdressAlert {\r\n message?: string;\r\n}\r\n\r\nconst AdressAlert: React.FC = ({ message }) => (\r\n \r\n {message && <>{message}}\r\n \r\n);\r\n\r\nexport default AdressAlert;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport interface IAddressButton {\r\n className: string;\r\n text: string;\r\n ariaLabel: string;\r\n disabled?: boolean;\r\n telemetryContent?: ITelemetryContent;\r\n onClick(event: React.MouseEvent): void;\r\n}\r\n\r\nconst AddressButton: React.FC = ({ className, text, ariaLabel, disabled, telemetryContent, onClick }) => {\r\n const payLoad = getPayloadObject('click', telemetryContent!, text);\r\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default AddressButton;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport interface IAdressCheckbox {\r\n id?: string;\r\n name?: string;\r\n className: string;\r\n type: string;\r\n isChecked: boolean;\r\n autoFocus?: boolean;\r\n additionalAddributes?: object;\r\n telemetryContent?: ITelemetryContent;\r\n onChange(event: React.ChangeEvent): void;\r\n}\r\n\r\nconst AdressCheckbox: React.FC = ({\r\n id,\r\n name,\r\n className,\r\n type,\r\n isChecked,\r\n additionalAddributes,\r\n telemetryContent,\r\n autoFocus,\r\n onChange\r\n}) => {\r\n const payLoad = getPayloadObject('click', telemetryContent!, name!);\r\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default AdressCheckbox;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as React from 'react';\r\n\r\nexport interface IAdressDropdown {\r\n id: string;\r\n name: string;\r\n className: string;\r\n value: string | number;\r\n additionalAddributes?: object;\r\n displayData: { key?: string | number; value?: string }[];\r\n onChange(event: React.ChangeEvent): void;\r\n}\r\n\r\nconst getDropdownItem = (key?: string | number, value?: string, selectedValue?: string | number): React.ReactNode => {\r\n let isSelected: boolean;\r\n if (typeof key === 'number') {\r\n isSelected = key === selectedValue;\r\n } else {\r\n isSelected = typeof selectedValue === 'string' && (key || '').toLowerCase() === (selectedValue || '').toLowerCase();\r\n }\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst AdressDropdown: React.FC = ({ id, name, className, value, additionalAddributes, displayData, onChange }) => (\r\n \r\n);\r\n\r\nexport default AdressDropdown;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as React from 'react';\r\n\r\nexport interface IAdressErrorMessage {\r\n message: string;\r\n}\r\n\r\nconst AdressErrorMessage: React.FC = ({ message }) =>

{message}

;\r\n\r\nexport default AdressErrorMessage;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as React from 'react';\r\n\r\nexport interface IAdressErrorTitle {\r\n title: string;\r\n}\r\n\r\nconst AdressErrorTitle: React.FC = ({ title }) =>

{title}

;\r\n\r\nexport default AdressErrorTitle;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport interface IAdressInput {\r\n id?: string;\r\n name?: string;\r\n className: string;\r\n type: string;\r\n value: string;\r\n maxLength?: number;\r\n autoFocus?: boolean;\r\n additionalAddributes?: object;\r\n telemetryContent?: ITelemetryContent;\r\n onChange(event: React.ChangeEvent): void;\r\n}\r\n\r\nconst AdressInput: React.FC = ({\r\n id,\r\n name,\r\n className,\r\n type,\r\n value,\r\n maxLength,\r\n additionalAddributes,\r\n autoFocus,\r\n telemetryContent,\r\n onChange\r\n}) => {\r\n const payLoad = getPayloadObject('click', telemetryContent!, name!);\r\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default AdressInput;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as React from 'react';\r\n\r\nexport interface IAdressLabel {\r\n id: string;\r\n text: string;\r\n}\r\n\r\nconst AdressLabel: React.FC = ({ id, text }) => (\r\n \r\n);\r\n\r\nexport default AdressLabel;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport classname from 'classnames';\r\nimport { get } from 'mobx';\r\nimport * as React from 'react';\r\n\r\nimport { Heading as HeadingData } from '@msdyn365-commerce-modules/data-types';\r\nimport { Heading, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport { Address } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\n\r\nimport { AddressType, IAddressResource, IAddressResponse } from './../address-module.data';\r\n\r\nimport {\r\n AddressItemDisplayType,\r\n AddressItemType,\r\n AddressValidationRuleType,\r\n IAddressDropdownsData,\r\n IAddressItem,\r\n IAddressValidationRule\r\n} from './../address-format.data';\r\n\r\nimport AddressAlertComponent from './address-alert';\r\nimport AddressButtonComponent from './address-button';\r\nimport AdressCheckboxComponent from './address-checkbox';\r\nimport AdressDropdownComponent from './address-dropdown';\r\nimport AddressErrorMessageComponent from './address-error-message';\r\nimport AddressErrorTitleComponent from './address-error-title';\r\nimport AddressInputComponent from './address-input';\r\nimport AddressLabelComponent from './address-label';\r\n\r\nexport interface IAddressAddInputProps {\r\n isUpdating?: boolean;\r\n hasError?: boolean;\r\n hasExternalSubmitGroup?: boolean;\r\n addressType: AddressType;\r\n addressFormat: IAddressItem[];\r\n defaultCountryRegionId: string;\r\n defaultAddressType: number;\r\n selectedAddress?: Address;\r\n dropdownDisplayData: IAddressDropdownsData;\r\n resources: IAddressResource;\r\n addressActionResponse?: IAddressResponse;\r\n addAddressHeading?: HeadingData;\r\n editAddressHeading?: HeadingData;\r\n validationError?: object;\r\n telemetryContent?: ITelemetryContent;\r\n onInputChange(event: React.ChangeEvent): void;\r\n onDropdownChange(event: React.ChangeEvent): void;\r\n onSave?(): void;\r\n onCancel?(): void;\r\n}\r\n\r\nexport interface IAddressError {\r\n AddressError: INodeProps;\r\n title: React.ReactNode;\r\n message: React.ReactNode;\r\n}\r\n\r\nexport interface IAddressAddItem {\r\n key: string;\r\n AddressItem: INodeProps;\r\n label: React.ReactNode;\r\n alert: React.ReactNode;\r\n input: React.ReactNode;\r\n}\r\n\r\nexport interface IAddressAddUpdateProps {\r\n AddressForm: INodeProps;\r\n heading: React.ReactNode;\r\n items: IAddressAddItem[];\r\n hasError: boolean;\r\n error: IAddressError;\r\n isShowSaveButton: boolean;\r\n saveButton: React.ReactNode;\r\n isShowCancelButton: boolean;\r\n cancelButton: React.ReactNode;\r\n}\r\n\r\nconst getRequriedAttribute = (validationRules?: IAddressValidationRule[]): object => {\r\n const requriedRule = (validationRules || []).find(validationRule => {\r\n return validationRule.type === AddressValidationRuleType.Required;\r\n });\r\n\r\n return requriedRule ? { 'aria-required': true } : {};\r\n};\r\n\r\nconst getAddessItems = (selectedAddress: Address, props: IAddressAddInputProps): IAddressAddItem[] => {\r\n const {\r\n addressFormat,\r\n addressType,\r\n dropdownDisplayData,\r\n defaultCountryRegionId,\r\n defaultAddressType,\r\n validationError = {},\r\n onInputChange,\r\n onDropdownChange\r\n } = props;\r\n\r\n // @ts-ignore\r\n return addressFormat.map((addressFormatItem, index) => {\r\n const elementId = `${addressType.toLowerCase()}_address${addressFormatItem.name.toLowerCase()}`;\r\n const errorMessage = get(validationError, addressFormatItem.name);\r\n const className = classname('msc-address-form__item', `msc-address-form__item-${addressFormatItem.name.toLowerCase()}`, {\r\n 'msc-address-form__item-newline': addressFormatItem.isNewLine,\r\n 'address-form__item-invalid': errorMessage\r\n });\r\n let input;\r\n\r\n if (addressFormatItem.displayType === AddressItemDisplayType.Input) {\r\n input = (\r\n \r\n );\r\n } else if (addressFormatItem.displayType === AddressItemDisplayType.Checkbox) {\r\n input = (\r\n \r\n );\r\n } else {\r\n const displayData = dropdownDisplayData[addressFormatItem.name];\r\n let selectedValue = selectedAddress[addressFormatItem.name];\r\n\r\n if (addressFormatItem.type === AddressItemType.ThreeLetterISORegionName) {\r\n selectedValue = selectedValue || defaultCountryRegionId;\r\n }\r\n\r\n if (addressFormatItem.type === AddressItemType.AddressTypeValue) {\r\n selectedValue = selectedValue || defaultAddressType;\r\n }\r\n\r\n input = (\r\n \r\n );\r\n }\r\n\r\n return {\r\n key: addressFormatItem.name,\r\n AddressItem: { className: className, id: `${elementId}_container` },\r\n label: ,\r\n alert: ,\r\n input: input\r\n };\r\n });\r\n};\r\n\r\nexport const AddressAddUpdate = (props: IAddressAddInputProps): IAddressAddUpdateProps => {\r\n const {\r\n editAddressHeading,\r\n addAddressHeading,\r\n selectedAddress = {},\r\n resources,\r\n hasError,\r\n onCancel,\r\n onSave,\r\n hasExternalSubmitGroup,\r\n isUpdating,\r\n addressActionResponse,\r\n telemetryContent\r\n } = props;\r\n const heading = selectedAddress.RecordId ? editAddressHeading : addAddressHeading;\r\n\r\n return {\r\n AddressForm: { className: 'msc-address-form' },\r\n heading: heading && ,\r\n items: getAddessItems(selectedAddress, props),\r\n isShowSaveButton: !hasExternalSubmitGroup,\r\n saveButton: onSave && (\r\n \r\n ),\r\n isShowCancelButton: !hasExternalSubmitGroup,\r\n cancelButton: onCancel && (\r\n \r\n ),\r\n hasError: hasError || false,\r\n error: {\r\n AddressError: { className: 'msc-address-form__error' },\r\n title: addressActionResponse && addressActionResponse.errorTitle && (\r\n \r\n ),\r\n message: addressActionResponse && addressActionResponse.errorMessage && (\r\n \r\n )\r\n }\r\n };\r\n};\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport classname from 'classnames';\r\nimport * as React from 'react';\r\n\r\nexport interface IAddressDetailItem {\r\n isNewLine: boolean;\r\n isShowLabel: boolean;\r\n labelText: string;\r\n name: string;\r\n value: string;\r\n}\r\n\r\nconst AddressDetailItem: React.FC = ({ isNewLine, isShowLabel, labelText, name, value }) => {\r\n const className = `msc-address-detail__item msc-address-detail__item-${name.toLowerCase()}`;\r\n const isEmpty = !(value && value.length > 0);\r\n const mainClass = isShowLabel\r\n ? `msc-address-detail__item msc-address-detail__item-address-detail_${labelText}`\r\n : classname(className, {\r\n 'msc-address-detail__item-empty': isEmpty,\r\n 'msc-address-detail__item-newline': isNewLine\r\n });\r\n return (\r\n \r\n {isShowLabel && (\r\n <>\r\n {labelText}\r\n \r\n \r\n )}\r\n {value}\r\n \r\n );\r\n};\r\n\r\nexport default AddressDetailItem;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as React from 'react';\r\n\r\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport { Address, AddressPurpose } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\n\r\nimport { AddressItemType, IAddressItem } from './../address-format.data';\r\nimport AddressDetailItemComponent from './address-detail-item';\r\n\r\nexport interface IAddressShowItem {\r\n key: string;\r\n description: React.ReactNode;\r\n}\r\n\r\nexport interface IAddressShowProps {\r\n AddressDetail: INodeProps;\r\n items: IAddressShowItem[];\r\n}\r\n\r\nexport interface IAddressShowInputProps {\r\n addressFormat: IAddressItem[];\r\n address: Address;\r\n addressPurposes: AddressPurpose[];\r\n}\r\n\r\nexport const AddressShow = (props: IAddressShowInputProps): IAddressShowProps => {\r\n const { addressFormat, addressPurposes, address } = props;\r\n\r\n return {\r\n AddressDetail: { className: 'msc-address-detail' },\r\n items: addressFormat.map(item => {\r\n if (item.name === AddressItemType[AddressItemType.AddressTypeValue]) {\r\n const addressType = addressPurposes.find(\r\n addressTypeValue => addressTypeValue.AddressType.toString() === (address[item.name] || '').toString()\r\n );\r\n if (addressType) {\r\n const value = addressType.Name || '';\r\n return {\r\n key: item.name,\r\n description: (\r\n \r\n )\r\n };\r\n }\r\n }\r\n return {\r\n key: item.name,\r\n description: (\r\n \r\n )\r\n };\r\n })\r\n };\r\n};\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as React from 'react';\r\n\r\nimport { INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport { Address, AddressPurpose } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\n\r\nimport { AddressFormat } from '../../common/address-format';\r\nimport { IAddressResource } from './../address-module.data';\r\nimport AddressButtonComponent from './address-button';\r\nimport AddressInputComponent from './address-input';\r\nimport { AddressShow, IAddressShowProps } from './address-show';\r\n\r\nexport interface IAddressSelectInputProps {\r\n hasExternalSubmitGroup?: boolean;\r\n addressFormat: AddressFormat;\r\n addresses: Address[];\r\n addressPurposes: AddressPurpose[];\r\n resources: IAddressResource;\r\n selectedAddress: Address;\r\n telemetryContent?: ITelemetryContent;\r\n onAddressOptionChange(event: React.ChangeEvent): void;\r\n onAddAddress(): void;\r\n onSave(): void;\r\n onCancel(): void;\r\n}\r\n\r\nexport interface IAddressSelectItem {\r\n key: number;\r\n SelectItem: INodeProps;\r\n input: React.ReactNode;\r\n showItems: IAddressShowProps;\r\n}\r\n\r\nexport interface IAddressSelectProps {\r\n SelectAddress: INodeProps;\r\n addButton: React.ReactNode;\r\n items: IAddressSelectItem[];\r\n isShowSaveButton: boolean;\r\n saveButton: React.ReactNode;\r\n isShowCancelButton: boolean;\r\n cancelButton: React.ReactNode;\r\n}\r\n\r\nconst getInput = (index: number, address: Address, props: IAddressSelectInputProps): React.ReactNode => {\r\n const { addresses, onAddressOptionChange, selectedAddress } = props;\r\n\r\n const ichecked = address.RecordId === selectedAddress.RecordId;\r\n const additionalAttributes = {\r\n checked: ichecked,\r\n 'aria-checked': ichecked,\r\n 'aria-setsize': addresses.length,\r\n 'aria-posinset': index + 1\r\n };\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst getAddressSelectItems = (props: IAddressSelectInputProps): IAddressSelectItem[] => {\r\n const { addresses, addressFormat, addressPurposes } = props;\r\n\r\n return addresses.map((address, index) => {\r\n return {\r\n key: address.RecordId || 0,\r\n SelectItem: { className: 'msc-address-select__item' },\r\n input: getInput(index, address, props),\r\n showItems: AddressShow({\r\n addressFormat: addressFormat.getAddressFormat(address.ThreeLetterISORegionName || ''),\r\n address: address,\r\n addressPurposes: addressPurposes\r\n })\r\n };\r\n });\r\n};\r\n\r\nexport const AddressSelect = (props: IAddressSelectInputProps): IAddressSelectProps => {\r\n const { resources, onCancel, onSave, onAddAddress, hasExternalSubmitGroup } = props;\r\n\r\n return {\r\n SelectAddress: { className: 'msc-address-select' },\r\n addButton: (\r\n \r\n ),\r\n isShowSaveButton: !hasExternalSubmitGroup,\r\n saveButton: (\r\n \r\n ),\r\n isShowCancelButton: !hasExternalSubmitGroup,\r\n cancelButton: (\r\n \r\n ),\r\n items: getAddressSelectItems(props)\r\n };\r\n};\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n/* tslint:disable: no-duplicate-imports */\r\nimport classnames from 'classnames';\r\nimport { action, computed, observable, reaction, set } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport { IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\r\nimport { getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport { Address, AddressPurpose, CountryRegionInfo, StateProvinceInfo } from '@msdyn365-commerce/retail-proxy';\r\n\r\nimport { IAutoSuggestOptions } from '@msdyn365-commerce-modules/address/src/common/address-autosuggest.data';\r\nimport { AutoSuggest } from './common/address-autosuggest';\r\nimport { AddressCommon } from './common/address-common';\r\nimport { AddressFormat } from './common/address-format';\r\nimport { AddressItemType } from './common/address-format.data';\r\nimport { AddressMetaData } from './common/address-meta-data';\r\nimport { AddressOperation, AddressType, IAddressResource, IAddressResponse } from './common/address-module.data';\r\nimport { AddressAddUpdate, IAddressAddUpdateProps } from './common/components/address-add';\r\nimport { AddressSelect, IAddressSelectProps } from './common/components/address-select';\r\nimport { AddressShow, IAddressShowProps } from './common/components/address-show';\r\nimport { ICustomCheckoutShippingAddressData } from './custom-checkout-shipping-address.data';\r\nimport { ICustomCheckoutShippingAddressProps } from './custom-checkout-shipping-address.props.autogenerated';\r\n\r\nexport interface ICheckoutAddressProps extends ICustomCheckoutShippingAddressProps, IModuleStateProps {}\r\n\r\nexport interface ICheckoutShippingAddressViewState {\r\n isShowAddress: boolean;\r\n isShowAddresList: boolean;\r\n isShowAddOrUpdateAddress: boolean;\r\n}\r\n\r\nexport interface ICheckoutShippingAddressViewProps extends ICheckoutAddressProps {\r\n className: string;\r\n currentOperation: AddressOperation;\r\n selectedAddress?: Address;\r\n addUpdateAddress: Address;\r\n addressListSelectedAddress: Address;\r\n countryRegionId: string;\r\n stateProvinceInfo?: StateProvinceInfo[];\r\n customerAddresses: Address[];\r\n validationError: object;\r\n addressActionResponse?: IAddressResponse;\r\n viewState: ICheckoutShippingAddressViewState;\r\n CheckoutShippingAddress: IModuleProps;\r\n isUpdating: boolean;\r\n hasError: boolean;\r\n showAddress: IAddressShowProps;\r\n showAddressSelect: IAddressSelectProps;\r\n showAddOrUpdateAddress: IAddressAddUpdateProps;\r\n}\r\n\r\n/**\r\n *\r\n * Address component\r\n * @extends {React.Component>}\r\n */\r\n// @ts-ignore\r\n@withModuleState\r\n@observer\r\nclass CheckoutShippingAddress extends React.Component {\r\n @observable private currentOperation: AddressOperation;\r\n @observable private selectedAddress?: Address;\r\n @observable private addUpdateAddress: Address;\r\n @observable private countryRegionId: string = 'USA';\r\n @observable private stateProvinceInfo?: StateProvinceInfo[];\r\n @observable private customerAddresses: Address[];\r\n @observable private validationError: object;\r\n @observable private addressActionResponse?: IAddressResponse;\r\n @observable private isUpdating?: boolean;\r\n @observable private hasError?: boolean;\r\n @observable private addressListSelectedAddress: Address = {};\r\n\r\n private addressCommon: AddressCommon;\r\n private addressFormat: AddressFormat;\r\n private countryRegions: CountryRegionInfo[];\r\n private addressPurposes: AddressPurpose[];\r\n private resources: IAddressResource;\r\n private defaultAddressType: number = 6; // Default to Home\r\n private telemetryContent?: ITelemetryContent;\r\n private autoSuggest?: AutoSuggest;\r\n private multiplePickupStoreSwitchName: string = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\r\n private retailMultiplePickUpOptionEnabled?: boolean = false;\r\n\r\n constructor(props: ICheckoutAddressProps) {\r\n super(props);\r\n const { context, data, resources, telemetry } = this.props;\r\n\r\n this.addUpdateAddress = {};\r\n this.resources = resources;\r\n this.currentOperation = AddressOperation.List;\r\n this.countryRegions = data.countryRegions.result || [];\r\n this.addressPurposes = data.addressPurposes.result || [];\r\n this.customerAddresses = data.address.result || [];\r\n this.stateProvinceInfo = data.countryStates.result || [];\r\n this.addressCommon = new AddressCommon(context, resources, telemetry);\r\n this.addressFormat = new AddressFormat(\r\n this.countryRegions,\r\n new AddressMetaData({ ...resources }, this._getAddressFormatExcludeList()),\r\n this.addressPurposes\r\n );\r\n this.validationError = {};\r\n this.retailMultiplePickUpOptionEnabled = data?.featureState?.result?.find(\r\n feature => feature.Name === this.multiplePickupStoreSwitchName\r\n )?.IsEnabled;\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 public async componentDidMount(): Promise {\r\n const {\r\n context: {\r\n telemetry,\r\n actionContext: {\r\n requestContext: { channel }\r\n }\r\n },\r\n config: { autoSuggestionEnabled, autoSuggestOptions }\r\n } = this.props;\r\n\r\n this.props.data.checkout.then(() => {\r\n this._setDefaultCountryRegionId();\r\n this._initModuleState();\r\n });\r\n\r\n reaction(\r\n () => this.countryRegionId,\r\n () => this._getStateProvinces()\r\n );\r\n\r\n reaction(\r\n () => this.currentOperation,\r\n () => {\r\n this._getStateProvinces();\r\n }\r\n );\r\n\r\n if (autoSuggestionEnabled) {\r\n if (channel && !channel.BingMapsApiKey) {\r\n telemetry.error('BingMapsApiKey is missing.');\r\n return;\r\n }\r\n\r\n if (channel && !channel.BingMapsEnabled) {\r\n telemetry.error('Map is disabled from HQ.');\r\n return;\r\n }\r\n\r\n const options: IAutoSuggestOptions = { ...autoSuggestOptions };\r\n this.autoSuggest = new AutoSuggest(\r\n telemetry,\r\n options,\r\n channel?.BingMapsApiKey,\r\n channel?.ChannelCountryRegionISOCode,\r\n channel?.DefaultLanguageId\r\n );\r\n\r\n // Customer doesn't have any address. Then add view will be loaded directly. Code for the same to handle that\r\n if (\r\n this.props.data.storeSelectorStateManager.result &&\r\n (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)\r\n ) {\r\n await this.autoSuggest?._loadMapAPI(await this.props.data.storeSelectorStateManager);\r\n }\r\n\r\n reaction(\r\n () =>\r\n this.props.data.storeSelectorStateManager.result?.loadMapApi &&\r\n (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update),\r\n async () => {\r\n await this.autoSuggest?._loadMapAPI(await this.props.data.storeSelectorStateManager);\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.props.data.storeSelectorStateManager.result?.isMapApiLoaded,\r\n async () => {\r\n await this._attachMapAutoSuggest();\r\n }\r\n );\r\n }\r\n }\r\n\r\n public async componentDidUpdate(): Promise {\r\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\r\n if (this.props.data.storeSelectorStateManager.result?.isMapApiLoaded) {\r\n await this._attachMapAutoSuggest();\r\n }\r\n } else {\r\n this.autoSuggest?.disposeAutoSuggest();\r\n }\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n if (!this._canShip()) {\r\n return null;\r\n }\r\n\r\n const { renderView, config } = this.props;\r\n\r\n const viewProps = {\r\n ...this.props,\r\n currentOperation: this.currentOperation,\r\n selectedAddress: this.selectedAddress,\r\n addUpdateAddress: this.addUpdateAddress,\r\n addressListSelectedAddress: this.addressListSelectedAddress,\r\n countryRegionId: this.countryRegionId,\r\n stateProvinceInfo: this.stateProvinceInfo,\r\n customerAddresses: this.customerAddresses,\r\n validationError: this.validationError,\r\n addressActionResponse: this.addressActionResponse,\r\n isUpdating: this.isUpdating,\r\n hasError: this.hasError,\r\n className: config.className,\r\n viewState: {\r\n isShowAddress: this.currentOperation === AddressOperation.Show && this.selectedAddress,\r\n isShowAddresList: this.currentOperation === AddressOperation.List && this.customerAddresses.length > 0,\r\n isShowAddOrUpdateAddress:\r\n this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update\r\n },\r\n CheckoutShippingAddress: {\r\n moduleProps: this.props,\r\n className: classnames('ms-checkout-shipping-address', config.className)\r\n },\r\n showAddress: this._renderShowAddress(),\r\n showAddressSelect: this._renderSelectAddress(),\r\n showAddOrUpdateAddress: this._renderAddOrUpdateAddress()\r\n };\r\n\r\n return renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n private _renderAddOrUpdateAddress = (): IAddressAddUpdateProps => {\r\n const addressFormat =\r\n this.currentOperation === AddressOperation.Add && this.addressCommon.isAuthenticatedFlow()\r\n ? this.addressFormat\r\n : this.addressFormat;\r\n return AddressAddUpdate({\r\n isUpdating: this.isUpdating,\r\n resources: this.resources,\r\n addressType: AddressType.Shipping,\r\n addressFormat: addressFormat.getAddressFormat(this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId),\r\n defaultCountryRegionId: this.countryRegionId,\r\n defaultAddressType: this.defaultAddressType,\r\n selectedAddress: this.addUpdateAddress,\r\n validationError: this.validationError,\r\n hasError: this.hasError,\r\n addressActionResponse: this.addressActionResponse,\r\n telemetryContent: this.telemetryContent,\r\n dropdownDisplayData: addressFormat.getPrefilledAddressDropdownData(\r\n this.resources.addressStateDefaultSelectionText,\r\n this.stateProvinceInfo\r\n ),\r\n onInputChange: this._onAddressAddUpdateInputChange,\r\n onDropdownChange: this._onAddressAddUpdateDropdownChange,\r\n hasExternalSubmitGroup: this.props.moduleState.hasExternalSubmitGroup,\r\n onSave: this.onSubmit,\r\n // tslint:disable-next-line: no-empty\r\n onCancel: !this.selectedAddress && !this.addressCommon.isAuthenticatedFlow() ? () => {} : this._resetView\r\n });\r\n };\r\n\r\n private _renderSelectAddress = (): IAddressSelectProps => {\r\n return AddressSelect({\r\n addressFormat: this.addressFormat,\r\n addresses: this.customerAddresses,\r\n resources: this.resources,\r\n addressPurposes: this.addressPurposes,\r\n selectedAddress: this.addressListSelectedAddress,\r\n onAddressOptionChange: this._onAddressOptionChange,\r\n hasExternalSubmitGroup: this.props.moduleState.hasExternalSubmitGroup,\r\n telemetryContent: this.telemetryContent,\r\n onAddAddress: this._goToAddAddress,\r\n onSave: this._onSelectAddress,\r\n // tslint:disable-next-line: no-empty\r\n onCancel: !this.selectedAddress ? () => {} : this._resetView\r\n });\r\n };\r\n\r\n private _renderShowAddress(): IAddressShowProps | null {\r\n if (this.selectedAddress) {\r\n return AddressShow({\r\n address: this.selectedAddress,\r\n addressFormat: this.addressFormat.getAddressFormat(this.selectedAddress.ThreeLetterISORegionName || ''),\r\n addressPurposes: this.addressPurposes\r\n });\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private _attachMapAutoSuggest = async (): Promise => {\r\n const {\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n }\r\n } = this.props;\r\n\r\n if (storeSelectorStateManager?.isMapApiLoaded) {\r\n this.autoSuggest?.attachAutoSuggest('#shipping_addressstreet', '#shipping_addressstreet_container', this._onSuggestionSelected);\r\n }\r\n };\r\n\r\n @action\r\n private _onSuggestionSelected = async (result: Microsoft.Maps.ISuggestionResult): Promise => {\r\n this._clearAddressFields();\r\n const address = this.addressFormat.getTranformedAddress(result, this.stateProvinceInfo);\r\n set(this.addUpdateAddress, { ['Street']: '' });\r\n set(this.addUpdateAddress, { ['ZipCode']: address.ZipCode });\r\n set(this.addUpdateAddress, { ['CountyName']: address.CountyName });\r\n set(this.addUpdateAddress, { ['City']: address.City });\r\n set(this.addUpdateAddress, { ['State']: address.State });\r\n set(this.addUpdateAddress, { ['DistrictName']: address.DistrictName });\r\n set(this.addUpdateAddress, { ['FullAddress']: address.FullAddress });\r\n // Bing autosuggest put the complete address in the Street input box. Updating the street input box to show only street address.\r\n setTimeout(() => {\r\n set(this.addUpdateAddress, { ['Street']: address.Street });\r\n }, 0);\r\n };\r\n\r\n @action\r\n private _clearAddressFields = (): void => {\r\n const addressFormatItem = this.addressFormat.getAddressFormat(\r\n this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId\r\n );\r\n addressFormatItem.forEach(format => {\r\n if (this.addUpdateAddress[format.name] !== undefined && !this.autoSuggest?.excludedAddressFields.includes(format.name)) {\r\n this.addressFormat[format.name] = '';\r\n }\r\n });\r\n this._clearValidation();\r\n };\r\n\r\n @action\r\n private _clearValidation = (): void => {\r\n this.validationError = {};\r\n };\r\n\r\n private _onAddressOptionChange = (event: React.ChangeEvent) => {\r\n const addressRecordId = event.currentTarget.value;\r\n const selectedAddress = this.customerAddresses.find(address => (address.RecordId || '').toString() === addressRecordId);\r\n if (selectedAddress) {\r\n this.addressListSelectedAddress = selectedAddress;\r\n }\r\n };\r\n\r\n private onAddressAddUpdate = (name: string, value: string | boolean) => {\r\n set(this.addUpdateAddress, { [name]: value });\r\n this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId, name);\r\n };\r\n\r\n private _onAddressAddUpdateInputChange = (event: React.ChangeEvent): void => {\r\n if (event.target.type === 'checkbox') {\r\n this.onAddressAddUpdate(event.target.name, event.target.checked);\r\n } else {\r\n const value = (event.target.value || '').replace(new RegExp('[<>]', 'gi'), '');\r\n this.onAddressAddUpdate(event.target.name, value);\r\n }\r\n };\r\n\r\n private _onAddressAddUpdateDropdownChange = (event: React.ChangeEvent): void => {\r\n this.onAddressAddUpdate(event.target.name, event.target.value);\r\n\r\n if (event.target.name === AddressItemType[AddressItemType.ThreeLetterISORegionName]) {\r\n this._onCountryChange(event.target.value);\r\n }\r\n };\r\n\r\n private _onAddressAddUpdateSubmit = (): void => {\r\n if (!this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId)) {\r\n return;\r\n }\r\n\r\n let response: Promise;\r\n if (this.addressCommon.isAuthenticatedFlow()) {\r\n response =\r\n this.currentOperation === AddressOperation.Update\r\n ? this.addressCommon.updateCustomerAddress(this.addUpdateAddress)\r\n : Promise.resolve({ address: this.addUpdateAddress });\r\n } else {\r\n response = Promise.resolve({ address: this.addUpdateAddress });\r\n }\r\n\r\n this.isUpdating = true;\r\n this._updateModuleState();\r\n\r\n response.then(\r\n (result: IAddressResponse) => {\r\n this.isUpdating = false;\r\n\r\n if (result.address) {\r\n this.hasError = false;\r\n this._onAddOrUpdateSuccess(result);\r\n } else {\r\n this.hasError = true;\r\n this.addressActionResponse = result;\r\n this._updateModuleState();\r\n }\r\n },\r\n () => {\r\n this.hasError = true;\r\n this.isUpdating = false;\r\n this._updateModuleState();\r\n }\r\n );\r\n };\r\n\r\n private _onCountryChange = (countryRegionId: string) => {\r\n this.countryRegionId = countryRegionId;\r\n const twoLetterISORegionName = this.addressFormat.getTwoLetterISORegionName(countryRegionId);\r\n set(this.addUpdateAddress, {\r\n ['ThreeLetterISORegionName']: countryRegionId\r\n });\r\n set(this.addUpdateAddress, {\r\n ['TwoLetterISORegionName']: twoLetterISORegionName\r\n });\r\n this.autoSuggest?.changeAutoSuggestionCountryCode(twoLetterISORegionName);\r\n this._clearAddressFields();\r\n };\r\n\r\n private _getAddressFormatExcludeList = (): AddressItemType[] => {\r\n const { config } = this.props;\r\n const addressFormatExcludeList: AddressItemType[] = [];\r\n\r\n if (!config.showAddressType) {\r\n addressFormatExcludeList.push(AddressItemType.AddressTypeValue);\r\n }\r\n\r\n addressFormatExcludeList.push(AddressItemType.IsPrimary);\r\n\r\n return addressFormatExcludeList;\r\n };\r\n\r\n private _getStateProvinces = (): void => {\r\n if (\r\n !this.countryRegionId ||\r\n !(this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)\r\n ) {\r\n return;\r\n }\r\n\r\n // tslint:disable-next-line:no-floating-promises\r\n this.addressCommon.getStateProvinces(this.countryRegionId).then((result: StateProvinceInfo[]) => {\r\n const stateInfo = result.some(state => state.StateId === this.addUpdateAddress.State);\r\n // Reset state if selected state not found in the list.\r\n if (!stateInfo) {\r\n set(this.addUpdateAddress, { ['State']: '' });\r\n }\r\n\r\n this.stateProvinceInfo = result;\r\n });\r\n };\r\n\r\n private _setDefaultCountryRegionId(): void {\r\n const { request } = this.props.context;\r\n const market = request && request.channel && request.channel.ChannelCountryRegionISOCode;\r\n this.countryRegionId = this.addressCommon.getDefaultCountryRegionId(this.countryRegionId, this.countryRegions, market);\r\n }\r\n\r\n private _getDefaultAddress = (): Address | undefined => {\r\n if (this.customerAddresses) {\r\n const primaryAddress = this.customerAddresses.find((address: Address) => address.IsPrimary);\r\n return primaryAddress || (this.customerAddresses.length > 0 ? this.customerAddresses[0] : undefined);\r\n }\r\n return undefined;\r\n };\r\n\r\n private _initModuleState = (): void => {\r\n this.props.moduleState.init({\r\n status: this._canShip() ? 'updating' : 'disabled',\r\n onEdit: this.onEdit,\r\n onCancel: this.onCancel,\r\n onSubmit: this.onSubmit\r\n });\r\n\r\n if (this._canShip()) {\r\n const defaultAddress = this._getShippingAddressFromCartLines() || this._getDefaultAddress();\r\n if (defaultAddress && !this.addressCommon.isEmpty(defaultAddress)) {\r\n this._updateCurrentOperation(AddressOperation.Show, defaultAddress);\r\n this._setShippingAddress(defaultAddress);\r\n this._updateModuleState();\r\n } else {\r\n this._updateCurrentOperation(AddressOperation.Add);\r\n }\r\n }\r\n };\r\n\r\n private onSubmit = (): void => {\r\n switch (this.currentOperation) {\r\n case AddressOperation.Add:\r\n case AddressOperation.Update:\r\n this._onAddressAddUpdateSubmit();\r\n break;\r\n case AddressOperation.List:\r\n this._onSelectAddress();\r\n break;\r\n default:\r\n this.props.telemetry.error('Invalid operation');\r\n }\r\n };\r\n\r\n private onCancel = (): void => {\r\n switch (this.currentOperation) {\r\n case AddressOperation.Add:\r\n case AddressOperation.Update:\r\n this._clearAddressFields();\r\n if (!(!this.selectedAddress && !this.addressCommon.isAuthenticatedFlow())) {\r\n this._resetView();\r\n }\r\n\r\n break;\r\n case AddressOperation.List:\r\n if (this.selectedAddress) {\r\n this._resetView();\r\n }\r\n break;\r\n default:\r\n this.props.telemetry.error('Invalid operation');\r\n }\r\n };\r\n\r\n private onEdit = (): void => {\r\n if (this.addressCommon.isAuthenticatedFlow() && this.shippingAddress) {\r\n this._updateCurrentOperation(AddressOperation.List, this.shippingAddress);\r\n } else if (this.shippingAddress) {\r\n this._updateCurrentOperation(AddressOperation.Update, this.shippingAddress);\r\n }\r\n\r\n this._updateModuleState();\r\n };\r\n\r\n private _getShippingAddressFromCartLines = (): Address | undefined => {\r\n const { request } = this.props.context;\r\n const { channelDeliveryOptionConfig } = this.props.data;\r\n const pickupDeliveryModeCode = request && request.channel && request.channel.PickupDeliveryModeCode;\r\n const emailDeliveryModeCode = request && request.channel && request.channel.EmailDeliveryModeCode;\r\n\r\n const cartLines = 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 channelDeliveryOptionConfig.result?.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 if (cartLines && cartLines.length > 0) {\r\n return cartLines[0].ShippingAddress;\r\n }\r\n\r\n return undefined;\r\n };\r\n\r\n private _canShip = (): boolean => {\r\n const { checkout, channelDeliveryOptionConfig } = this.props.data;\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 if (!checkout.result || !request.channel || checkout.result.checkoutCart.isEmpty || checkout.result.checkoutCart.hasInvoiceLine) {\r\n return false;\r\n }\r\n\r\n // @ts-ignore: Type-checker not realizing above request.channel check\r\n return this.retailMultiplePickUpOptionEnabled\r\n ? checkout?.result?.checkoutCart?.cart?.CartLines?.some(cartLine =>\r\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\r\n ? cartLine.DeliveryMode !==\r\n channelDeliveryOptionConfig.result?.PickupDeliveryModeCodes?.find(\r\n deliveryMode => deliveryMode === cartLine.DeliveryMode\r\n ) && cartLine.DeliveryMode !== emailDeliveryModeCode\r\n : cartLine\r\n )\r\n : checkout?.result?.checkoutCart?.cart?.CartLines?.some(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 _onSelectAddress = () => {\r\n this._updateCurrentOperation(AddressOperation.Show, this.addressListSelectedAddress);\r\n this._setShippingAddress(this.addressListSelectedAddress);\r\n this._updateModuleState();\r\n };\r\n\r\n private _goToAddAddress = () => {\r\n this._setDefaultCountryRegionId();\r\n this._updateCurrentOperation(AddressOperation.Add);\r\n };\r\n\r\n private _onAddOrUpdateSuccess = (response: IAddressResponse) => {\r\n if (response.customerAddresses) {\r\n this.customerAddresses = response.customerAddresses;\r\n }\r\n\r\n if (response.address) {\r\n this._updateCurrentOperation(AddressOperation.Show, response.address);\r\n this._setShippingAddress(response.address);\r\n this._updateModuleState();\r\n }\r\n };\r\n\r\n private _setShippingAddress = (address: Address): void => {\r\n if (this.props.data.checkout.result) {\r\n const newShippingAddress = { ...address };\r\n\r\n if (address.ThreeLetterISORegionName && !newShippingAddress.TwoLetterISORegionName) {\r\n newShippingAddress.TwoLetterISORegionName = this.addressFormat.getTwoLetterISORegionName(address.ThreeLetterISORegionName);\r\n }\r\n\r\n // tslint:disable-next-line:no-floating-promises\r\n this.props.data.checkout.result.updateShippingAddress({\r\n newShippingAddress\r\n });\r\n }\r\n };\r\n\r\n @computed get shippingAddress(): Address | undefined {\r\n return this.props.data.checkout.result && this.props.data.checkout.result.shippingAddress;\r\n }\r\n\r\n private _resetView = (): void => {\r\n switch (this.currentOperation) {\r\n case AddressOperation.Add:\r\n case AddressOperation.Update:\r\n this._updateCurrentOperation(\r\n this.addressCommon.isAuthenticatedFlow() ? AddressOperation.List : AddressOperation.Show,\r\n this.shippingAddress\r\n );\r\n break;\r\n default:\r\n this._updateCurrentOperation(AddressOperation.Show, this.shippingAddress);\r\n }\r\n this._updateModuleState();\r\n };\r\n\r\n private _updateCurrentOperation = (operation: AddressOperation, selectedAddress?: Address) => {\r\n this.currentOperation = operation;\r\n this.selectedAddress = selectedAddress;\r\n\r\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\r\n this.addUpdateAddress = { ...this.selectedAddress } || {};\r\n set(this.addUpdateAddress, {\r\n ['ThreeLetterISORegionName']: this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId\r\n });\r\n set(this.addUpdateAddress, {\r\n ['AddressTypeValue']: this.addUpdateAddress.AddressTypeValue || this.defaultAddressType\r\n });\r\n } else if (this.currentOperation === AddressOperation.List) {\r\n this.addressListSelectedAddress = { ...this.selectedAddress } || {};\r\n }\r\n };\r\n\r\n private _updateModuleState = () => {\r\n if (this.currentOperation === AddressOperation.Show) {\r\n this.props.moduleState.onReady();\r\n } else if (this.isUpdating) {\r\n this.props.moduleState.onPending();\r\n } else {\r\n this.props.moduleState.onUpdating();\r\n }\r\n };\r\n}\r\n\r\nexport default CheckoutShippingAddress;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as React from 'react';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport {\r\n IAddressAddItem,\r\n IAddressAddUpdateProps,\r\n IAddressSelectItem,\r\n IAddressSelectProps,\r\n IAddressShowItem,\r\n IAddressShowProps\r\n} from '@msdyn365-commerce-modules/address';\r\nimport { ICheckoutShippingAddressViewProps } from './custom-checkout-shipping-address';\r\nimport { convert_a2_to_a3 } from '../../themes/venchi/utils/convert_a2_a3';\r\n\r\nconst AddressShow: React.FC = ({ AddressDetail, items }) => {\r\n return (\r\n \r\n {items &&\r\n items.map((item: IAddressShowItem) => {\r\n return <>{item.description};\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst AddressSelect: React.FC = ({\r\n SelectAddress,\r\n addButton,\r\n items,\r\n isShowSaveButton,\r\n saveButton,\r\n isShowCancelButton,\r\n cancelButton\r\n}) => {\r\n return (\r\n \r\n {addButton}\r\n {items &&\r\n items.map((item: IAddressSelectItem) => {\r\n const SelectItem = item.SelectItem;\r\n return (\r\n \r\n {item.input}\r\n \r\n \r\n );\r\n })}\r\n {isShowSaveButton && saveButton}\r\n {isShowCancelButton && cancelButton}\r\n \r\n );\r\n};\r\n\r\n// tslint:disable-next-line:max-func-body-length\r\nconst AddressAddUpdate: React.FC = ({\r\n AddressForm,\r\n heading,\r\n items,\r\n hasError,\r\n error,\r\n isShowSaveButton,\r\n saveButton,\r\n isShowCancelButton,\r\n cancelButton,\r\n ...other\r\n}) => {\r\n // @ts-ignore\r\n const resources = other?.moduleProps?.resources;\r\n // @ts-ignore\r\n const localeString = other?.moduleProps?.context?.request?.locale;\r\n // @ts-ignore\r\n const sitePath = other?.moduleProps?.context?.request?.sitePath;\r\n const europe = ['/fr', '/de'];\r\n // @ts-ignore\r\n const currency = other?.moduleProps?.context?.request?.channel?.Currency;\r\n const locale =\r\n sitePath && europe.includes(sitePath)\r\n ? 'eu'\r\n : currency === 'EUR' && localeString === 'en-GB'\r\n ? 'eu'\r\n : localeString.replace('-', '');\r\n\r\n const countriesAvail = {\r\n enGB: {\r\n autocomplete: ['gb'],\r\n select: ['GBR']\r\n },\r\n it: {\r\n autocomplete: ['it'],\r\n select: ['ITA']\r\n },\r\n enUS: {\r\n autocomplete: ['us'],\r\n // autocomplete: ['us', 'ca'],\r\n //select: ['USA', 'CAN']\r\n select: ['USA']\r\n },\r\n eu: {\r\n // removed componentRestrictions for country as there is limit of 5 in google maps\r\n // autocomplete:['at','be','bg','ch','cz','de','dk','es','ee','fi','fr','gr','hr','hu','ie','li','lt','lu','lv','mc','nl','no','pl','pt','ro','sk','si','se'],\r\n autocomplete: [],\r\n select: [\r\n 'AUT',\r\n 'BEL',\r\n 'BGR',\r\n 'CHE',\r\n 'CZE',\r\n 'DEU',\r\n 'DNK',\r\n 'ESP',\r\n 'EST',\r\n 'FIN',\r\n 'FRA',\r\n 'GRC',\r\n 'HRV',\r\n 'HUN',\r\n 'IRL',\r\n 'LIE',\r\n 'LTU',\r\n 'LUX',\r\n 'LVA',\r\n 'MCO',\r\n 'NLD',\r\n 'NOR',\r\n 'POL',\r\n 'PRT',\r\n 'ROU',\r\n 'SVK',\r\n 'SVN',\r\n 'SWE'\r\n ]\r\n }\r\n };\r\n // @ts-ignore\r\n const nativeInputValueSetter = Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, 'value').set;\r\n // tslint:disable-next-line:typedef\r\n function gMapsAutocomplete() {\r\n const googleComponents = [\r\n { googleComponent: 'sublocality_level_1', id: 'shipping_addresscity' },\r\n { googleComponent: 'locality', id: 'shipping_addresscity' },\r\n { googleComponent: 'postal_town', id: 'shipping_addresscity' },\r\n {\r\n googleComponent: 'administrative_area_level_3',\r\n id: 'shipping_addresscity'\r\n },\r\n {\r\n googleComponent: 'administrative_area_level_1',\r\n id: 'shipping_addressstate'\r\n },\r\n { googleComponent: 'postal_code_prefix', id: 'shipping_addresszipcode' },\r\n { googleComponent: 'postal_code', id: 'shipping_addresszipcode' },\r\n {\r\n googleComponent: 'country',\r\n id: 'shipping_addressthreeletterisoregionname'\r\n },\r\n {\r\n googleComponent: 'administrative_area_level_2',\r\n id: 'shipping_addresscounty'\r\n }\r\n ];\r\n\r\n const autocompleteFormField = document.getElementById('shipping_addressstreet');\r\n // @ts-ignore\r\n const autocomplete = new window.google.maps.places.Autocomplete(autocompleteFormField, {\r\n types: ['address'],\r\n componentRestrictions: {\r\n country: countriesAvail[locale] && countriesAvail[locale].autocomplete\r\n }\r\n });\r\n if (autocompleteFormField === null) {\r\n return;\r\n }\r\n autocompleteFormField.setAttribute('placeholder', resources.startTypingYourAddress);\r\n // @ts-ignore\r\n window.google.maps.event.clearInstanceListeners(autocompleteFormField);\r\n // @ts-ignore\r\n window.google.maps.event.addListener(autocomplete, `place_changed`, () => {\r\n const place = autocomplete.getPlace();\r\n if (nativeInputValueSetter === undefined) {\r\n return;\r\n }\r\n nativeInputValueSetter.call(autocompleteFormField, place.name);\r\n const eCustom = new Event('change', { bubbles: true });\r\n autocompleteFormField.dispatchEvent(eCustom);\r\n\r\n for (const googleComponent of googleComponents) {\r\n const addressComponents = place.address_components;\r\n if (addressComponents && addressComponents.length > 0) {\r\n // @ts-ignore\r\n addressComponents.forEach(addressComponent => populateFormElements(addressComponent, googleComponent));\r\n }\r\n }\r\n });\r\n }\r\n\r\n // tslint:disable-next-line:typedef no-any\r\n function populateFormElements(\r\n addressComponent: { types: any[]; short_name: string; long_name: string },\r\n formMap: { googleComponent: any; id: string }\r\n ) {\r\n const addressType = addressComponent.types[0];\r\n\r\n if (document.getElementById(formMap.id) === undefined || document.getElementById(formMap.id) === null) {\r\n return;\r\n }\r\n\r\n if (formMap.googleComponent === addressType) {\r\n if (formMap.id === 'shipping_addressthreeletterisoregionname' || formMap.id === 'shipping_addressstate') {\r\n const input = document.getElementById(formMap.id) as HTMLSelectElement;\r\n if (input !== null) {\r\n const formValue = locale === 'it' && formMap.id === 'shipping_addressstate' ? 'DEF' : addressComponent.short_name;\r\n const selectedValue = selectItemByValue(input, formValue, addressType === 'country' ? true : false);\r\n if (selectedValue !== undefined) {\r\n input.value = selectedValue;\r\n const event = new Event('change', { bubbles: true });\r\n input.dispatchEvent(event);\r\n }\r\n }\r\n } else {\r\n const formValue = formMap.id === 'shipping_addresscounty' ? addressComponent.short_name : addressComponent.long_name;\r\n const input = document.getElementById(formMap.id);\r\n if (input !== undefined) {\r\n if (nativeInputValueSetter === undefined) {\r\n return;\r\n }\r\n nativeInputValueSetter.call(input, formValue);\r\n const eCustom = new Event('input', { bubbles: true });\r\n if (input !== null) {\r\n input.dispatchEvent(eCustom);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n // @ts-ignore\r\n // tslint:disable-next-line:typedef\r\n function selectItemByValue(elmnt: HTMLSelectElement, value: string, is_convert_a2_to_a3: boolean) {\r\n for (let i = 0; i < elmnt.options.length; i++) {\r\n const eValue = elmnt.options[i].value;\r\n if ((is_convert_a2_to_a3 && eValue === convert_a2_to_a3[value]) || (!is_convert_a2_to_a3 && eValue === value)) {\r\n return elmnt.options[i].value;\r\n }\r\n }\r\n }\r\n const checkPhone = () => {\r\n const saveAddressButton = document.querySelector('.ms-checkout__guided-card-btn-save.msc-btn') as HTMLButtonElement;\r\n const phone = document.getElementById('shipping_addressphone') as HTMLInputElement;\r\n if (phone) {\r\n const phoneCtn = phone.closest('.msc-address-form__item') as HTMLElement;\r\n const phoneAlert = phoneCtn.getElementsByClassName('msc-address-form__alert')[0];\r\n const pattern = /^[0-9]*$/;\r\n const pattern2 = /^\\+?\\d+$/;\r\n phone.setAttribute('aria-required', 'true');\r\n phone.setAttribute('type', 'tel');\r\n phone.setAttribute('maxlength', '15');\r\n if (phone.value.length === 0) {\r\n saveAddressButton.setAttribute('disabled', 'true');\r\n }\r\n phone.onkeyup = () => {\r\n if (!phone.value.match(pattern) && !phone.value.match(pattern2)) {\r\n phoneCtn.classList.add('address-form__item-invalid');\r\n phoneAlert.textContent = resources.addressPhoneRequiredErrorMessage;\r\n saveAddressButton.setAttribute('disabled', 'true');\r\n } else if (phone.value.length < 6) {\r\n phoneCtn.classList.add('address-form__item-invalid');\r\n phoneAlert.textContent = resources.addressPhoneRequiredErrorMessage;\r\n saveAddressButton.setAttribute('disabled', 'true');\r\n } else {\r\n phoneCtn.classList.remove('address-form__item-invalid');\r\n phoneAlert.textContent = '';\r\n saveAddressButton.removeAttribute('disabled');\r\n }\r\n };\r\n }\r\n };\r\n function phoneValidation(): void {\r\n const addressForm = document.getElementsByClassName('msc-address-form')[0];\r\n const saveAddressButton = addressForm\r\n .closest('.ms-checkout__guided-card')\r\n ?.getElementsByClassName('ms-checkout__guided-card-btn-save')[0] as HTMLElement;\r\n const county = document.getElementById('shipping_addresscounty') as HTMLInputElement;\r\n const countyCtn = county && county !== null ? (county.closest('.msc-address-form__item') as HTMLInputElement) : undefined;\r\n const countyAlert = countyCtn?.getElementsByClassName('msc-address-form__alert')[0];\r\n\r\n if (countyCtn !== undefined) {\r\n countyCtn.onkeyup = () => {\r\n countyCtn?.classList.remove('address-form__item-invalid');\r\n if (countyAlert) {\r\n countyAlert.textContent = '';\r\n }\r\n };\r\n }\r\n if (saveAddressButton !== undefined) {\r\n saveAddressButton.onclick = e => {\r\n const countyValid = locale === 'it' && (county.value === '' || county.value.length > 2) ? false : true;\r\n if (!countyValid) {\r\n countyCtn?.classList.add('address-form__item-invalid');\r\n if (countyAlert) {\r\n countyAlert.textContent = 'Inserire Codice ISO a 2 lettere';\r\n }\r\n const elements = addressForm.querySelectorAll('input');\r\n let fieldInALL = true;\r\n elements.forEach(fieldInControl);\r\n function fieldInControl(element: HTMLInputElement): void {\r\n if (element.value === '' && element.name !== 'County') {\r\n fieldInALL = false;\r\n }\r\n }\r\n if (fieldInALL) {\r\n e.stopPropagation();\r\n }\r\n }\r\n };\r\n }\r\n }\r\n React.useEffect(() => {\r\n gMapsAutocomplete();\r\n const options = document.querySelectorAll('#shipping_addressthreeletterisoregionname option');\r\n options.forEach(o => {\r\n const optionV = (o as HTMLOptionElement).value;\r\n if (countriesAvail[locale] && !countriesAvail[locale].select.includes(optionV)) {\r\n o.remove();\r\n }\r\n });\r\n const countrySelect = document.getElementById('shipping_addressthreeletterisoregionname') as HTMLSelectElement;\r\n if (locale === 'enUS') {\r\n countrySelect.value = 'USA';\r\n }\r\n const event = new Event('change', { bubbles: true });\r\n countrySelect.dispatchEvent(event);\r\n const stateSelect = document.getElementById('shipping_addressstate') as HTMLSelectElement;\r\n if (locale === 'it') {\r\n stateSelect.value = 'DEF';\r\n stateSelect.dispatchEvent(event);\r\n stateSelect.disabled = Boolean('true');\r\n }\r\n phoneValidation();\r\n }, []);\r\n // Phone Verifications\r\n React.useEffect(() => {\r\n checkPhone();\r\n }, [(document?.getElementById('shipping_addressphone') as HTMLInputElement)?.value]);\r\n React.useEffect(() => {\r\n phoneValidation();\r\n }, [document.getElementById('shipping_addressphone')]);\r\n return (\r\n \r\n {heading}\r\n {items &&\r\n items.map((item: IAddressAddItem) => {\r\n const { AddressItem, key, label, alert, input } = item;\r\n if (key === 'Name' && input) {\r\n // @ts-ignore\r\n input.props.maxLength = 34;\r\n }\r\n return (\r\n \r\n {label}\r\n {alert}\r\n {input}\r\n \r\n );\r\n })}\r\n {hasError && (\r\n \r\n {error.title}\r\n {error.message}\r\n \r\n )}\r\n {isShowSaveButton && saveButton}\r\n {isShowCancelButton && cancelButton}\r\n \r\n );\r\n};\r\n\r\nconst CheckoutShippingAddressView: React.FC = props => {\r\n const { CheckoutShippingAddress, viewState, showAddress, showAddressSelect, showAddOrUpdateAddress } = props;\r\n\r\n return (\r\n \r\n {viewState.isShowAddress && }\r\n {viewState.isShowAddresList && }\r\n {viewState.isShowAddOrUpdateAddress && }\r\n \r\n );\r\n};\r\n\r\nexport default CheckoutShippingAddressView;\r\n","// tslint:disable-next-line:variable-name\r\nexport const convert_a2_to_a3 = {\r\n AF: 'AFG',\r\n AX: 'ALA',\r\n AL: 'ALB',\r\n DZ: 'DZA',\r\n AS: 'ASM',\r\n AD: 'AND',\r\n AO: 'AGO',\r\n AI: 'AIA',\r\n AQ: 'ATA',\r\n AG: 'ATG',\r\n AR: 'ARG',\r\n AM: 'ARM',\r\n AW: 'ABW',\r\n AU: 'AUS',\r\n AT: 'AUT',\r\n AZ: 'AZE',\r\n BS: 'BHS',\r\n BH: 'BHR',\r\n BD: 'BGD',\r\n BB: 'BRB',\r\n BY: 'BLR',\r\n BE: 'BEL',\r\n BZ: 'BLZ',\r\n BJ: 'BEN',\r\n BM: 'BMU',\r\n BT: 'BTN',\r\n BO: 'BOL',\r\n BA: 'BIH',\r\n BW: 'BWA',\r\n BV: 'BVT',\r\n BR: 'BRA',\r\n IO: 'IOT',\r\n BN: 'BRN',\r\n BG: 'BGR',\r\n BF: 'BFA',\r\n BI: 'BDI',\r\n KH: 'KHM',\r\n CM: 'CMR',\r\n CA: 'CAN',\r\n CV: 'CPV',\r\n KY: 'CYM',\r\n CF: 'CAF',\r\n TD: 'TCD',\r\n CL: 'CHL',\r\n CN: 'CHN',\r\n CX: 'CXR',\r\n CC: 'CCK',\r\n CO: 'COL',\r\n KM: 'COM',\r\n CG: 'COG',\r\n CD: 'COD',\r\n CK: 'COK',\r\n CR: 'CRI',\r\n CI: 'CIV',\r\n HR: 'HRV',\r\n CU: 'CUB',\r\n CY: 'CYP',\r\n CZ: 'CZE',\r\n DK: 'DNK',\r\n DJ: 'DJI',\r\n DM: 'DMA',\r\n DO: 'DOM',\r\n EC: 'ECU',\r\n EG: 'EGY',\r\n SV: 'SLV',\r\n GQ: 'GNQ',\r\n ER: 'ERI',\r\n EE: 'EST',\r\n ET: 'ETH',\r\n FK: 'FLK',\r\n FO: 'FRO',\r\n FJ: 'FJI',\r\n FI: 'FIN',\r\n FR: 'FRA',\r\n GF: 'GUF',\r\n PF: 'PYF',\r\n TF: 'ATF',\r\n GA: 'GAB',\r\n GM: 'GMB',\r\n GE: 'GEO',\r\n DE: 'DEU',\r\n GH: 'GHA',\r\n GI: 'GIB',\r\n GR: 'GRC',\r\n GL: 'GRL',\r\n GD: 'GRD',\r\n GP: 'GLP',\r\n GU: 'GUM',\r\n GT: 'GTM',\r\n GG: 'GGY',\r\n GN: 'GIN',\r\n GW: 'GNB',\r\n GY: 'GUY',\r\n HT: 'HTI',\r\n HM: 'HMD',\r\n VA: 'VAT',\r\n HN: 'HND',\r\n HK: 'HKG',\r\n HU: 'HUN',\r\n IS: 'ISL',\r\n IN: 'IND',\r\n ID: 'IDN',\r\n IR: 'IRN',\r\n IQ: 'IRQ',\r\n IE: 'IRL',\r\n IM: 'IMN',\r\n IL: 'ISR',\r\n IT: 'ITA',\r\n JM: 'JAM',\r\n JP: 'JPN',\r\n JE: 'JEY',\r\n JO: 'JOR',\r\n KZ: 'KAZ',\r\n KE: 'KEN',\r\n KI: 'KIR',\r\n KP: 'PRK',\r\n KR: 'KOR',\r\n KW: 'KWT',\r\n KG: 'KGZ',\r\n LA: 'LAO',\r\n LV: 'LVA',\r\n LB: 'LBN',\r\n LS: 'LSO',\r\n LR: 'LBR',\r\n LY: 'LBY',\r\n LI: 'LIE',\r\n LT: 'LTU',\r\n LU: 'LUX',\r\n MO: 'MAC',\r\n MK: 'MKD',\r\n MG: 'MDG',\r\n MW: 'MWI',\r\n MY: 'MYS',\r\n MV: 'MDV',\r\n ML: 'MLI',\r\n MT: 'MLT',\r\n MH: 'MHL',\r\n MQ: 'MTQ',\r\n MR: 'MRT',\r\n MU: 'MUS',\r\n YT: 'MYT',\r\n MX: 'MEX',\r\n FM: 'FSM',\r\n MD: 'MDA',\r\n MC: 'MCO',\r\n MN: 'MNG',\r\n ME: 'MNE',\r\n MS: 'MSR',\r\n MA: 'MAR',\r\n MZ: 'MOZ',\r\n MM: 'MMR',\r\n NA: 'NAM',\r\n NR: 'NRU',\r\n NP: 'NPL',\r\n NL: 'NLD',\r\n AN: 'ANT',\r\n NC: 'NCL',\r\n NZ: 'NZL',\r\n NI: 'NIC',\r\n NE: 'NER',\r\n NG: 'NGA',\r\n NU: 'NIU',\r\n NF: 'NFK',\r\n MP: 'MNP',\r\n NO: 'NOR',\r\n OM: 'OMN',\r\n PK: 'PAK',\r\n PW: 'PLW',\r\n PS: 'PSE',\r\n PA: 'PAN',\r\n PG: 'PNG',\r\n PY: 'PRY',\r\n PE: 'PER',\r\n PH: 'PHL',\r\n PN: 'PCN',\r\n PL: 'POL',\r\n PT: 'PRT',\r\n PR: 'PRI',\r\n QA: 'QAT',\r\n RE: 'REU',\r\n RO: 'ROU',\r\n RU: 'RUS',\r\n RW: 'RWA',\r\n BL: 'BLM',\r\n SH: 'SHN',\r\n KN: 'KNA',\r\n LC: 'LCA',\r\n MF: 'MAF',\r\n PM: 'SPM',\r\n VC: 'VCT',\r\n WS: 'WSM',\r\n SM: 'SMR',\r\n ST: 'STP',\r\n SA: 'SAU',\r\n SN: 'SEN',\r\n RS: 'SRB',\r\n SC: 'SYC',\r\n SL: 'SLE',\r\n SG: 'SGP',\r\n SK: 'SVK',\r\n SI: 'SVN',\r\n SB: 'SLB',\r\n SO: 'SOM',\r\n ZA: 'ZAF',\r\n GS: 'SGS',\r\n ES: 'ESP',\r\n LK: 'LKA',\r\n SD: 'SDN',\r\n SR: 'SUR',\r\n SJ: 'SJM',\r\n SZ: 'SWZ',\r\n SE: 'SWE',\r\n CH: 'CHE',\r\n SY: 'SYR',\r\n TW: 'TWN',\r\n TJ: 'TJK',\r\n TZ: 'TZA',\r\n TH: 'THA',\r\n TL: 'TLS',\r\n TG: 'TGO',\r\n TK: 'TKL',\r\n TO: 'TON',\r\n TT: 'TTO',\r\n TN: 'TUN',\r\n TR: 'TUR',\r\n TM: 'TKM',\r\n TC: 'TCA',\r\n TV: 'TUV',\r\n UG: 'UGA',\r\n UA: 'UKR',\r\n AE: 'ARE',\r\n GB: 'GBR',\r\n US: 'USA',\r\n UM: 'UMI',\r\n UY: 'URY',\r\n UZ: 'UZB',\r\n VU: 'VUT',\r\n VE: 'VEN',\r\n VN: 'VNM',\r\n VG: 'VGB',\r\n VI: 'VIR',\r\n WF: 'WLF',\r\n EH: 'ESH',\r\n YE: 'YEM',\r\n ZM: 'ZMB',\r\n ZW: 'ZWE'\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\nimport { Module } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IAccountLoyaltyTileViewProps } from '@msdyn365-commerce-modules/account-management/src/modules/account-loyalty-tile/./account-loyalty-tile';\r\nimport { IAccountLoyaltyTileProps } from '../../../themes/venchi/definition-extensions/account-loyalty-tile.ext.props.autogenerated';\r\n\r\nconst AccountLoyaltyTileView: React.FC> = props => {\r\n const { AccountLoyaltyTile, heading, description, links } = props;\r\n\r\n // The user does NOT have a customer number yet, they still have a tmp_guid\r\n let tmp_account = false;\r\n if (props.context.request.user.customerAccountNumber?.length === 36) {\r\n tmp_account = true;\r\n }\r\n\r\n let description__no_decimals;\r\n \r\n // @ts-ignore\r\n if (description && description.props) {\r\n // @ts-ignore\r\n description__no_decimals = description.props.description.replace('.00', '');\r\n }\r\n\r\n return (\r\n \r\n {heading}\r\n

{tmp_account && props.config.usingNewLoyalty && props.config.cardBeingGeneratedText ? props.config.cardBeingGeneratedText : description__no_decimals}

\r\n {links}\r\n
\r\n );\r\n};\r\n\r\nexport default AccountLoyaltyTileView;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport {\r\n IAddressAddItem,\r\n IAddressAddUpdateProps\r\n} from '@msdyn365-commerce-modules/address/src/modules/account-management-address/../../common/components/address-add';\r\nimport {\r\n IAddressList,\r\n IAddressListItem,\r\n IAddressListProps\r\n} from '@msdyn365-commerce-modules/address/src/modules/account-management-address/../../common/components/address-list';\r\nimport {\r\n IAddressShowItem,\r\n IAddressShowProps\r\n} from '@msdyn365-commerce-modules/address/src/modules/account-management-address/../../common/components/address-show';\r\nimport { IAccountManagementAddressViewProps } from '@msdyn365-commerce-modules/address/src/modules/account-management-address/./account-management-address';\r\nimport { convert_a2_to_a3 } from '../utils/convert_a2_a3';\r\n\r\nconst AddressShow: React.FC = ({ AddressDetail, items }) => {\r\n return (\r\n \r\n {items &&\r\n items.map((item: IAddressShowItem) => {\r\n return <>{item.description};\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst AddressList: React.FC = ({ List, isShowList, heading, items }) => {\r\n if (!isShowList) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n {heading}\r\n {items &&\r\n items.map((item: IAddressListItem) => {\r\n const { Item, key, error, showItems, isShowPrimaryButton, primaryButton, editButton, removeButton } = item;\r\n const { Error, isShowError, title, message } = error;\r\n return (\r\n \r\n \r\n {isShowError && (\r\n \r\n {title}\r\n {message}\r\n \r\n )}\r\n {isShowPrimaryButton && primaryButton}\r\n {editButton}\r\n {removeButton}\r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst AddressLists: React.FC = ({\r\n ListAddress,\r\n heading,\r\n isShowEmptyListMessage,\r\n emptyListMessage,\r\n addButton,\r\n primaryAddressList,\r\n otherAddressList\r\n}) => {\r\n return (\r\n \r\n {heading}\r\n {isShowEmptyListMessage && emptyListMessage}\r\n {addButton}\r\n \r\n \r\n \r\n );\r\n};\r\n// tslint:disable-next-line:max-func-body-length\r\nconst AddressAddUpdate: React.FC = ({\r\n AddressForm,\r\n heading,\r\n items,\r\n hasError,\r\n error,\r\n isShowSaveButton,\r\n saveButton,\r\n isShowCancelButton,\r\n cancelButton,\r\n ...other\r\n}) => {\r\n // @ts-ignore\r\n const resources = other?.moduleProps?.resources;\r\n // @ts-ignore\r\n const localeString = other?.moduleProps?.context?.request?.locale;\r\n // @ts-ignore\r\n const sitePath = other?.moduleProps?.context?.request?.sitePath;\r\n const europe = ['/fr', '/de'];\r\n // @ts-ignore\r\n const currency = other?.moduleProps?.context?.request?.channel?.Currency;\r\n const locale =\r\n sitePath && europe.includes(sitePath)\r\n ? 'eu'\r\n : currency === 'EUR' && localeString === 'en-GB'\r\n ? 'eu'\r\n : localeString.replace('-', '');\r\n\r\n const [hasAddressError, setHasAddressError] = React.useState(false);\r\n React.useEffect(() => {\r\n setHasAddressError(error.title ? true : false);\r\n }, [error.title]);\r\n // console.log(`${currency} ${localeString} ${locale}`);\r\n const countriesAvail = {\r\n enGB: {\r\n autocomplete: ['gb'],\r\n select: ['GBR']\r\n },\r\n it: {\r\n autocomplete: ['it'],\r\n select: ['ITA']\r\n },\r\n enUS: {\r\n autocomplete: ['us'],\r\n // autocomplete: ['us', 'ca'],\r\n // select: ['USA', 'CAN']\r\n select: ['USA']\r\n },\r\n eu: {\r\n // removed componentRestrictions for country as there is limit of 5 in google maps\r\n // autocomplete:['at','be','bg','ch','cz','de','dk','es','ee','fi','fr','gr','hr','hu','ie','li','lt','lu','lv','mc','nl','no','pl','pt','ro','sk','si','se'],\r\n autocomplete: [],\r\n select: [\r\n 'AUT',\r\n 'BEL',\r\n 'BGR',\r\n 'CHE',\r\n 'CZE',\r\n 'DEU',\r\n 'DNK',\r\n 'ESP',\r\n 'EST',\r\n 'FIN',\r\n 'FRA',\r\n 'GRC',\r\n 'HRV',\r\n 'HUN',\r\n 'IRL',\r\n 'LIE',\r\n 'LTU',\r\n 'LUX',\r\n 'LVA',\r\n 'MCO',\r\n 'NLD',\r\n 'NOR',\r\n 'POL',\r\n 'PRT',\r\n 'ROU',\r\n 'SVK',\r\n 'SVN',\r\n 'SWE'\r\n ]\r\n }\r\n };\r\n // @ts-ignore\r\n const nativeInputValueSetter = Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, 'value').set;\r\n // tslint:disable-next-line:typedef\r\n function gMapsAutocomplete() {\r\n const googleComponents = [\r\n { googleComponent: 'sublocality_level_1', id: 'shipping_addresscity' },\r\n { googleComponent: 'locality', id: 'shipping_addresscity' },\r\n { googleComponent: 'postal_town', id: 'shipping_addresscity' },\r\n { googleComponent: 'administrative_area_level_3', id: 'shipping_addresscity' },\r\n { googleComponent: 'administrative_area_level_1', id: 'shipping_addressstate' },\r\n { googleComponent: 'postal_code_prefix', id: 'shipping_addresszipcode' },\r\n { googleComponent: 'postal_code', id: 'shipping_addresszipcode' },\r\n { googleComponent: 'country', id: 'shipping_addressthreeletterisoregionname' },\r\n { googleComponent: 'administrative_area_level_2', id: 'shipping_addresscounty' }\r\n ];\r\n\r\n const autocompleteFormField = document.getElementById('shipping_addressstreet');\r\n // @ts-ignore\r\n const autocomplete = new window.google.maps.places.Autocomplete(autocompleteFormField, {\r\n types: ['address'],\r\n componentRestrictions: { country: countriesAvail[locale] && countriesAvail[locale].autocomplete }\r\n });\r\n if (autocompleteFormField === null) {\r\n return;\r\n }\r\n autocompleteFormField.setAttribute('placeholder', resources.startTypingYourAddress);\r\n // @ts-ignore\r\n window.google.maps.event.clearInstanceListeners(autocompleteFormField);\r\n // @ts-ignore\r\n window.google.maps.event.addListener(autocomplete, `place_changed`, () => {\r\n const place = autocomplete.getPlace();\r\n // console.log(place);\r\n if (nativeInputValueSetter === undefined) {\r\n return;\r\n }\r\n nativeInputValueSetter.call(autocompleteFormField, place.name);\r\n const eCustom = new Event('change', { bubbles: true });\r\n autocompleteFormField.dispatchEvent(eCustom);\r\n for (const googleComponent of googleComponents) {\r\n const addressComponents = place.address_components;\r\n if (addressComponents && addressComponents.length > 0) {\r\n // @ts-ignore\r\n addressComponents.forEach(addressComponent => populateFormElements(addressComponent, googleComponent));\r\n }\r\n }\r\n });\r\n }\r\n // tslint:disable-next-line:typedef no-any\r\n function populateFormElements(\r\n addressComponent: { types: any[]; short_name: string; long_name: string },\r\n formMap: { googleComponent: any; id: string }\r\n ) {\r\n const addressType = addressComponent.types[0];\r\n\r\n if (document.getElementById(formMap.id) === undefined || document.getElementById(formMap.id) === null) {\r\n return;\r\n }\r\n\r\n if (formMap.googleComponent === addressType) {\r\n if (formMap.id === 'shipping_addressthreeletterisoregionname' || formMap.id === 'shipping_addressstate') {\r\n const input = document.getElementById(formMap.id) as HTMLSelectElement;\r\n if (input !== null) {\r\n const formValue = locale === 'it' && formMap.id === 'shipping_addressstate' ? 'DEF' : addressComponent.short_name;\r\n // console.log(formValue);\r\n const selectedValue = selectItemByValue(input, formValue, addressType === 'country' ? true : false);\r\n // console.log(selectedValue);\r\n if (selectedValue !== undefined) {\r\n input.value = selectedValue;\r\n // console.log(input.value);\r\n const event = new Event('change', { bubbles: true });\r\n input.dispatchEvent(event);\r\n }\r\n }\r\n } else {\r\n const formValue = formMap.id === 'shipping_addresscounty' ? addressComponent.short_name : addressComponent.long_name;\r\n const input = document.getElementById(formMap.id);\r\n if (input !== undefined) {\r\n if (nativeInputValueSetter === undefined) {\r\n return;\r\n }\r\n nativeInputValueSetter.call(input, formValue);\r\n const eCustom = new Event('input', { bubbles: true });\r\n if (input !== null) {\r\n input.dispatchEvent(eCustom);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n // @ts-ignore\r\n // tslint:disable-next-line:typedef\r\n function selectItemByValue(elmnt: HTMLSelectElement, value: string, is_convert_a2_to_a3) {\r\n for (let i = 0; i < elmnt.options.length; i++) {\r\n const eValue = elmnt.options[i].value;\r\n if ((is_convert_a2_to_a3 && eValue === convert_a2_to_a3[value]) || (!is_convert_a2_to_a3 && eValue === value)) {\r\n return elmnt.options[i].value;\r\n }\r\n }\r\n }\r\n const checkPhone = () => {\r\n const saveAddressButton = document.querySelector('.msc-address-form__button-save.msc-btn') as HTMLButtonElement;\r\n const phone = document.getElementById('shipping_addressphone') as HTMLInputElement;\r\n if (phone) {\r\n const phoneCtn = phone.closest('.msc-address-form__item') as HTMLElement;\r\n const phoneAlert = phoneCtn.getElementsByClassName('msc-address-form__alert')[0];\r\n const pattern = /^[0-9]*$/;\r\n const pattern2 = /^\\+?\\d+$/;\r\n phone.setAttribute('aria-required', 'true');\r\n phone.setAttribute('type', 'tel');\r\n phone.setAttribute('maxlength', '15');\r\n if (phone.value.length === 0) {\r\n saveAddressButton.setAttribute('disabled', 'true');\r\n }\r\n phone.onkeyup = () => {\r\n if (!phone.value.match(pattern) && !phone.value.match(pattern2)) {\r\n phoneCtn.classList.add('address-form__item-invalid');\r\n phoneAlert.textContent = resources.addressPhoneRequiredErrorMessage;\r\n saveAddressButton.setAttribute('disabled', 'true');\r\n } else if (phone.value.length < 6) {\r\n phoneCtn.classList.add('address-form__item-invalid');\r\n phoneAlert.textContent = resources.addressPhoneRequiredErrorMessage;\r\n saveAddressButton.setAttribute('disabled', 'true');\r\n } else {\r\n phoneCtn.classList.remove('address-form__item-invalid');\r\n phoneAlert.textContent = '';\r\n saveAddressButton.removeAttribute('disabled');\r\n }\r\n };\r\n }\r\n };\r\n function phoneValidation(): void {\r\n const addressForm = document.getElementsByClassName('msc-address-form')[0];\r\n const saveAddressButton = document.querySelector('.msc-address-form__button-save.msc-btn') as HTMLButtonElement;\r\n const county = document.getElementById('shipping_addresscounty') as HTMLInputElement;\r\n const countyCtn = county && county !== null ? (county.closest('.msc-address-form__item') as HTMLInputElement) : undefined;\r\n const countyAlert = countyCtn?.getElementsByClassName('msc-address-form__alert')[0];\r\n\r\n if (countyCtn !== undefined) {\r\n countyCtn.onkeyup = () => {\r\n countyCtn?.classList.remove('address-form__item-invalid');\r\n if (countyAlert) {\r\n countyAlert.textContent = '';\r\n }\r\n };\r\n }\r\n if (saveAddressButton !== undefined) {\r\n saveAddressButton.onclick = e => {\r\n const countyValid =\r\n locale === 'it' && (county.value === '' || county.value.length > 2 || !/[^a-z]/i.test(county.value) === false)\r\n ? false\r\n : true;\r\n if (!countyValid) {\r\n countyCtn?.classList.add('address-form__item-invalid');\r\n if (countyAlert) {\r\n countyAlert.textContent = 'Inserire Codice ISO a 2 lettere';\r\n }\r\n const elements = addressForm.querySelectorAll('input');\r\n let fieldInALL = true;\r\n elements.forEach(fieldInControl);\r\n function fieldInControl(element: HTMLInputElement): void {\r\n if (element.value === '' && element.name !== 'County') {\r\n fieldInALL = false;\r\n }\r\n }\r\n if (fieldInALL) {\r\n e.stopPropagation();\r\n }\r\n }\r\n };\r\n }\r\n }\r\n React.useEffect(() => {\r\n gMapsAutocomplete();\r\n const options = document.querySelectorAll('#shipping_addressthreeletterisoregionname option');\r\n options.forEach(o => {\r\n const optionV = (o as HTMLOptionElement).value;\r\n if (countriesAvail[locale] && !countriesAvail[locale].select.includes(optionV)) {\r\n o.remove();\r\n }\r\n });\r\n const countrySelect = document.getElementById('shipping_addressthreeletterisoregionname') as HTMLSelectElement;\r\n if (locale === 'enUS') {\r\n countrySelect.value = 'USA';\r\n }\r\n const event = new Event('change', { bubbles: true });\r\n countrySelect.dispatchEvent(event);\r\n }, []);\r\n\r\n // Auto select of DEF value in state select on italian site\r\n React.useEffect(() => {\r\n const event = new Event('change', { bubbles: true });\r\n if (locale === 'it' && (document.querySelector('#shipping_addressstate option[value=DEF]') as HTMLOptionElement)) {\r\n const optionDEF = document.querySelector('#shipping_addressstate option[value=DEF]') as HTMLOptionElement;\r\n optionDEF.setAttribute('aria-selected', 'true');\r\n (optionDEF.parentNode as HTMLSelectElement).value = 'DEF';\r\n (optionDEF.parentNode as HTMLSelectElement).dispatchEvent(event);\r\n (optionDEF.parentNode as HTMLSelectElement).disabled = Boolean('true');\r\n }\r\n }, [document.querySelector('#shipping_addressstate option[value=DEF]')]);\r\n\r\n // Phone Verifications\r\n React.useEffect(() => {\r\n checkPhone();\r\n }, [(document?.getElementById('shipping_addressphone') as HTMLInputElement)?.value]);\r\n React.useEffect(() => {\r\n phoneValidation();\r\n }, [document.getElementsByClassName('msc-address-form')[0]]);\r\n\r\n // Refesh once saving processed\r\n let updatedCount = 0;\r\n React.useEffect(() => {\r\n ++updatedCount;\r\n if (updatedCount > 1) {\r\n location.reload();\r\n }\r\n }, [document.querySelector('.msc-address-form__button-updating')]);\r\n return (\r\n \r\n {heading}\r\n {items &&\r\n items.map((item: IAddressAddItem) => {\r\n const { AddressItem, key, label, alert, input } = item;\r\n if (key === 'Name' && input) {\r\n // @ts-ignore\r\n input.props.maxLength = 34;\r\n }\r\n return (\r\n \r\n {label}\r\n {alert}\r\n {input}\r\n \r\n );\r\n })}\r\n {hasAddressError && (\r\n \r\n

{resources.addressErrorMessage}

\r\n
\r\n )}\r\n {isShowSaveButton && saveButton}\r\n {isShowCancelButton && cancelButton}\r\n
\r\n );\r\n};\r\n\r\nconst AccountManagementAddressView: React.FC = props => {\r\n const { AccountAddressManagement, viewState, showAddressList, showAddOrUpdateAddress } = props;\r\n\r\n return (\r\n \r\n {viewState.isShowAddresList && }\r\n {viewState.isShowAddOrUpdateAddress && }\r\n \r\n );\r\n};\r\n\r\nexport default AccountManagementAddressView;\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\nimport { Module } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { ILoyaltySignUpViewProps } from '@msdyn365-commerce-modules/account-management/src/modules/loyalty-sign-up/./loyalty-sign-up';\r\nimport { ILoyaltySignUpProps } from '../definition-extensions/loyalty-sign-up.ext.props.autogenerated';\r\n\r\nconst LoyaltySignUpView: React.FC> = props => {\r\n const {\r\n LoyaltySignUp,\r\n heading,\r\n memberHeading,\r\n signInLink,\r\n signUpText,\r\n signUpButton,\r\n detailsLink,\r\n // termsLink, Not needed\r\n loading,\r\n infoMessageBar\r\n } = props;\r\n\r\n if (loading) {\r\n props.context.telemetry.error('LoyaltySignUp data is empty, module wont render');\r\n return null;\r\n }\r\n\r\n // const hostname = props?.context?.request?.url?.requestUrl?.hostname || '';\r\n\r\n if (typeof window !== 'undefined') {\r\n const loyalty_join_toggle_btn = document.getElementsByClassName(\"ms-loyalty-terms__toggle\")[0];\r\n loyalty_join_toggle_btn?.addEventListener(\"click\", () => {\r\n const loyalty_join_btn = document.getElementsByClassName(\"ms-loyalty-terms__submit\")[0];\r\n loyalty_join_btn.addEventListener(\"click\", () => {\r\n loyalty_join_btn.innerHTML = '
';\r\n })\r\n });\r\n }\r\n\r\n /*\r\n [signInLink = true, loyalty_join_flag = false] guest (no loyalty join) -> standard sign in\r\n [signInLink = true, loyalty_join_flag = true] guest (loyalty join) -> \"thanks\" instead of sign in\r\n [signInLink = false] logged in -> hidden module content\r\n */\r\n const loyalty_join_flag = props.context.request.query?.hasJoined;\r\n // signInLink is null (thus false) when the user is logged in\r\n return (signInLink && (loyalty_join_flag ? (\r\n
\r\n {props.resources.joinedLoyaltyThankYouHeader && (

{props.resources.joinedLoyaltyThankYouHeader}

)}\r\n {props.resources.joinedLoyaltyParagraphContent && (

{props.resources.joinedLoyaltyParagraphContent}

)}\r\n {/* {props.resources.loyaltyBalanceCheckURL && props.resources.joinedLoyaltyBalanceCheckLinkText && ({props.resources.joinedLoyaltyBalanceCheckLinkText})} */}\r\n
\r\n ) : (\r\n \r\n {infoMessageBar}\r\n {memberHeading}\r\n {heading}\r\n {detailsLink}\r\n {signUpText}\r\n {/* {termsLink} Not needed */}\r\n {signUpButton}\r\n {signInLink}\r\n \r\n )\r\n )\r\n );\r\n};\r\n\r\nexport default LoyaltySignUpView;\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 IAccountWishlistTileDescription {\n description: string;\n}\n\n// eslint-disable-next-line no-redeclare\nconst IAccountWishlistTileDescription: React.FC = ({ description }) => (\n

{description}

\n);\n\nexport default IAccountWishlistTileDescription;\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 { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILinksData } from '../account-wishlist-tile.props.autogenerated';\n\nexport interface IAccountWishlistTileLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\nconst AccountWishlistTileLinks: React.FC = ({ links, telemetryContent, onTextChange, requestContext }) => {\n if (links.length === 0) {\n return null;\n }\n const editableLinks = _mapEditableLinks(links, telemetryContent);\n return (\n
\n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n
\n );\n};\n\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n linkdata.forEach((link, index) => {\n payLoad.contentAction.etext = link.linkText;\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-account-wishlist-tile__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n};\n\nexport default AccountWishlistTileLinks;\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 { format, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IAccountWishlistTileData } from './account-wishlist-tile.data';\nimport { IAccountWishlistTileProps } from './account-wishlist-tile.props.autogenerated';\nimport DescriptionComponent from './components/account-wishlist-tile-description';\nimport LinksComponent from './components/account-wishlist-tile-links';\n\nexport interface IAccountWishlistTileViewProps extends IAccountWishlistTileProps {\n AccountWishlistTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n links?: React.ReactNode;\n description?: React.ReactNode;\n}\n\n/**\n *\n * AccountWishlist component.\n * @extends {React.PureComponent>}\n */\nclass AccountWishlistTile extends React.PureComponent> {\n private readonly telemetryContent?: ITelemetryContent;\n\n constructor(props: IAccountWishlistTileProps) {\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 public render(): JSX.Element {\n const { config, resources, data } = this.props;\n const { className, heading, links } = config;\n const { accountWishlistTileDescription } = resources;\n const wishlists = data.wishlists.result;\n\n const wishlistsCount = ((wishlists && wishlists.length && wishlists[0].CommerceListLines) || []).length;\n const description = format(accountWishlistTileDescription || 'You have {0} items in the Wishlist.', wishlistsCount);\n\n const viewProps = {\n ...this.props,\n className,\n AccountWishlistTile: {\n moduleProps: this.props,\n className: classnames('ms-account-wishlist-tile', config.className)\n },\n heading: heading && heading.text && (\n \n ),\n links: links && links.length > 0 && (\n \n ),\n description: \n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading.text = event.target.value);\n\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.config.links && this.props.config.links[linkIndex]) {\n this.props.config.links[linkIndex].linkText = event.target.value;\n }\n };\n}\n\nexport default AccountWishlistTile;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAccountWishlistTileViewProps } from './account-wishlist-tile';\n\nconst AccountWishlistTileView: React.FC = props => {\n const { AccountWishlistTile, heading, description, links } = props;\n\n return (\n \n {heading}\n {description}\n {links}\n \n );\n};\n\nexport default AccountWishlistTileView;\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 { CheckoutModule, getCheckoutState, ICheckoutState } from '@msdyn365-commerce/global-state/';\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 await checkoutState.updateCheckoutErrorFocus({ newCheckoutErrorFocus: CheckoutModule.None });\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ITelemetry } from '@msdyn365-commerce/core';\nimport { IStoreSelectorStateManager } from '@msdyn365-commerce-modules/bopis-utilities';\n\nimport { IAutoSuggestOptions } from './address-autosuggest.data';\n\n/**\n *\n * Auto Suggest.\n */\nexport class AutoSuggest {\n public readonly excludedAddressFields: string[] = ['ThreeLetterISORegionName', 'Name', 'AddressTypeValue', 'Phone'];\n\n private readonly telemetry: ITelemetry;\n\n private readonly countryCode?: string;\n\n private readonly bingMapsApiKey?: string;\n\n private readonly defaultLanguageId?: string;\n\n private autoSuggestManager: Microsoft.Maps.AutosuggestManager | undefined;\n\n private autoSuggestOptions: IAutoSuggestOptions;\n\n constructor(\n telemetry: ITelemetry,\n autoSuggestOptions: IAutoSuggestOptions,\n BingMapsApiKey?: string,\n countryCode?: string,\n defaultLanguageId?: string\n ) {\n this.telemetry = telemetry;\n this.autoSuggestOptions = autoSuggestOptions;\n this.bingMapsApiKey = BingMapsApiKey;\n this.countryCode = countryCode;\n this.defaultLanguageId = defaultLanguageId;\n }\n\n public attachAutoSuggest = (\n inputId: string,\n containerId: string,\n selectedSuggestionCallback: (result: Microsoft.Maps.ISuggestionResult) => void\n ): void => {\n if (!this.autoSuggestManager) {\n Microsoft.Maps.loadModule('Microsoft.Maps.AutoSuggest', {\n callback: () => {\n const options = { ...this.autoSuggestOptions, countryCode: this.countryCode };\n this.autoSuggestManager = new Microsoft.Maps.AutosuggestManager(options);\n this.autoSuggestManager.attachAutosuggest(inputId, containerId, selectedSuggestionCallback);\n document.querySelector(inputId)?.setAttribute('role', 'combobox');\n setTimeout(() => {\n document.querySelector(inputId)?.setAttribute('type', 'text');\n }, 0);\n },\n errorCallback: () => {\n if (this.telemetry) {\n this.telemetry.debug('Unable to attach map auto suggest.');\n }\n },\n credentials: this.bingMapsApiKey\n });\n }\n };\n\n public changeAutoSuggestionCountryCode = (countryCode?: string): void => {\n if (this.autoSuggestManager) {\n this.autoSuggestOptions.countryCode = countryCode;\n this.autoSuggestManager.setOptions(this.autoSuggestOptions);\n }\n };\n\n public disposeAutoSuggest = (): void => {\n this.autoSuggestManager?.detachAutosuggest();\n this.autoSuggestManager?.dispose();\n this.autoSuggestManager = undefined;\n };\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n public _loadMapAPI = async (storeSelectorStateManager: IStoreSelectorStateManager): Promise => {\n await storeSelectorStateManager.loadMapApi({\n key: this.bingMapsApiKey,\n lang: this.defaultLanguageId,\n market: this.countryCode\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 { IActionInput, ICoreContext, IObservableAction, ITelemetry } from '@msdyn365-commerce/core';\nimport {\n Address,\n AddressPurpose,\n CountryRegionInfo,\n StateProvinceInfo\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport {\n addAddress,\n AddressManagementInput,\n ArrayExtensions,\n updateAddress,\n updatePrimaryAddress\n} from '@msdyn365-commerce-modules/retail-actions';\n\nimport { getAddressPurposesAction, GetAddressPurposesInput } from '../actions/get-address-purposes';\nimport { getStateProvinceAction, GetStateProvincesInput } from '../actions/get-state-provinces';\nimport { IAddressResource, IAddressResponse } from './address-module.data';\n\n/**\n *\n * Address common.\n */\nexport class AddressCommon {\n private readonly context: ICoreContext;\n\n private readonly resources: IAddressResource;\n\n private readonly telemetry: ITelemetry;\n\n constructor(context: ICoreContext, resources: IAddressResource, telemetry: ITelemetry) {\n this.context = context;\n this.resources = resources;\n this.telemetry = telemetry;\n }\n\n public getDefaultCountryRegionId = (countryRegionId: string, countryRegions: CountryRegionInfo[], market?: string): string => {\n const marketISOCode = market || 'US';\n const currentCountryRegion = countryRegions.find(countryRegion => (countryRegion.ISOCode || '') === marketISOCode);\n return (currentCountryRegion && currentCountryRegion.CountryRegionId) || countryRegionId;\n };\n\n public parseRetailException = (resources: IAddressResource): IAddressResponse => {\n return {\n errorTitle: resources.addressErrorMessageTitle,\n errorMessage: resources.addressGenericErrorMessage\n };\n };\n\n public isAuthenticatedFlow = (): boolean => {\n return this.context.request.user.isAuthenticated;\n };\n\n public getStateProvinces = async (countryRegionId: string): Promise => {\n let response: StateProvinceInfo[] = [];\n if (this.context && this.context.actionContext) {\n try {\n const input = new GetStateProvincesInput(countryRegionId, this.context.request.apiSettings);\n response = await getStateProvinceAction(input, this.context.actionContext);\n } catch (error) {\n if (this.telemetry) {\n this.telemetry.error(`Error encountered ${error}`);\n this.telemetry.debug('Unable to get state provinces');\n }\n }\n }\n return Promise.resolve(response);\n };\n\n // For any address, check for common requried field else treat it as invalid\\empty address.\n public isEmpty = (address: Address): boolean => {\n if (address && address.ThreeLetterISORegionName && (address.State || address.City)) {\n return false;\n }\n\n return true;\n };\n\n public addCustomerAddress = async (address: Address): Promise => {\n await this.updateLogisticsLocationRoleRecordId(address);\n return this.submitCustomerAddress(addAddress, address);\n };\n\n public updateCustomerAddress = async (address: Address): Promise => {\n await this.updateLogisticsLocationRoleRecordId(address);\n return this.submitCustomerAddress(updateAddress, address);\n };\n\n public updateCustomerPrimaryAddress = async (address: Address): Promise => {\n return this.submitCustomerAddress(updatePrimaryAddress, address);\n };\n\n private readonly submitCustomerAddress = async (\n addressAction: IObservableAction,\n address: Address\n ): Promise => {\n address.AddressTypeValue = address.AddressTypeValue || 7; // 7 sets it to HOME by default\n\n const input = new AddressManagementInput(address);\n return this.execAddressAction(addressAction, input, address);\n };\n\n private readonly execAddressAction = async (\n addressAction: IObservableAction,\n input: IActionInput | IActionInput[],\n address: Address\n ): Promise => {\n let response: IAddressResponse = {};\n\n if (this.context && this.context.actionContext) {\n try {\n const addresses = await addressAction(input, this.context.actionContext);\n if (addresses.length > 0) {\n response.address = address.RecordId ? address : addresses[addresses.length - 1];\n } else {\n response.address = address;\n }\n response.customerAddresses = addresses;\n } catch (error) {\n if (this.telemetry) {\n this.telemetry.error(`Error encountered ${error}`);\n this.telemetry.debug('Unable to exec address action');\n }\n response = this.parseRetailException(this.resources);\n }\n }\n return Promise.resolve(response);\n };\n\n /**\n * Function to get the address purposes and update the LogisticsLocationRoleRecordId to update the address type.\n * @param address - Address object.\n * @returns Returns void.\n */\n private readonly updateLogisticsLocationRoleRecordId = async (address: Address): Promise => {\n let addressPurposes: AddressPurpose[] = [];\n try {\n const input: GetAddressPurposesInput = new GetAddressPurposesInput(this.context.request.apiSettings);\n addressPurposes = await getAddressPurposesAction(input, this.context.actionContext);\n } catch (error) {\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions -- Supparsing the any type for error.\n this.telemetry.error(`Error encountered ${error}`);\n this.telemetry.debug('Unable to get address purposes');\n }\n if (ArrayExtensions.hasElements(addressPurposes)) {\n const addressPurpose: AddressPurpose | undefined = addressPurposes.find(\n purpose => purpose.AddressType === address.AddressTypeValue\n );\n if (addressPurpose) {\n address.LogisticsLocationRoleRecordId = addressPurpose.RecordId;\n }\n }\n };\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nexport enum AddressItemDisplayType {\n Input = 'Input',\n Dropdown = 'Dropdown',\n Checkbox = 'Checkbox'\n}\n\nexport enum AddressValidationRuleType {\n Required = 'Required',\n Format = 'Format'\n}\n\nexport enum AddressItemType {\n Name = 1001,\n Phone = 1002,\n IsPrimary = 1003,\n AddressTypeValue = 1004,\n ZipCode = 1,\n City = 2,\n County = 3,\n State = 4,\n ThreeLetterISORegionName = 5,\n Street = 6,\n DistrictName = 7,\n StreetNumber = 8,\n BuildingCompliment = 9,\n Postbox = 10,\n House_RU = 21,\n Flat_RU = 22,\n CountryOKSMCode_RU = 23\n}\n\nexport interface IAddressItem {\n name: string;\n type: AddressItemType;\n label: string;\n maxLength: number;\n displayType: AddressItemDisplayType;\n validationRules?: IAddressValidationRule[];\n isNewLine: boolean;\n}\n\nexport interface IAddressValidationRule {\n type: AddressValidationRuleType;\n regEx: string;\n message: string;\n}\n\nexport interface IAddressDropdownsData {\n [index: string]: { key?: string | number; value?: string }[];\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n Address,\n AddressPurpose,\n CountryRegionInfo,\n StateProvinceInfo\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { get, set } from 'mobx';\n\nimport { AddressItemType, IAddressDropdownsData, IAddressItem, IAddressValidationRule } from './address-format.data';\nimport { AddressMetaData } from './address-meta-data';\n\n/**\n *\n * Retail Service Address format parser.\n */\nexport class AddressFormat {\n private readonly countryRegionsInfo?: CountryRegionInfo[];\n\n private readonly addressPurposes?: AddressPurpose[];\n\n private readonly addressMetaData: AddressMetaData;\n\n constructor(countryRegionsInfo: CountryRegionInfo[], addressMetaData: AddressMetaData, addressPurposes: AddressPurpose[]) {\n this.countryRegionsInfo = countryRegionsInfo;\n this.addressMetaData = addressMetaData;\n this.addressPurposes = addressPurposes;\n }\n\n public getAddressFormat(countryRegionId: string): IAddressItem[] {\n const countryRegionInfo = this._getCountryRegionInfo(countryRegionId);\n if (countryRegionInfo) {\n return this._getAddressDisplayFormat(countryRegionInfo);\n }\n return [];\n }\n\n public getCountryFormat(): { key?: string; value?: string }[] {\n return (this.countryRegionsInfo || []).map(countryRegion => {\n return {\n key: countryRegion.CountryRegionId,\n value: countryRegion.ShortName\n };\n });\n }\n\n public getStateFormat(stateProvinceInfo?: StateProvinceInfo[]): { key?: string; value?: string }[] {\n return (stateProvinceInfo || []).map(state => {\n return {\n key: state.StateId,\n value: state.StateName\n };\n });\n }\n\n public getAddressTypeFormat(): { key?: number; value?: string }[] {\n return (this.addressPurposes || []).map(addressPurpose => {\n return {\n key: addressPurpose.AddressType,\n value: addressPurpose.Description\n };\n });\n }\n\n public getPrefilledAddressDropdownData = (\n stateDefaultSelectionText: string,\n stateProvinceInfo?: StateProvinceInfo[]\n ): IAddressDropdownsData => {\n const defaultStateText = {\n key: '',\n value: stateDefaultSelectionText\n };\n const dropdownData: IAddressDropdownsData = {};\n\n dropdownData[AddressItemType[AddressItemType.ThreeLetterISORegionName]] = this.getCountryFormat();\n dropdownData[AddressItemType[AddressItemType.State]] = this.getStateFormat(stateProvinceInfo);\n dropdownData[AddressItemType[AddressItemType.State]].unshift(defaultStateText);\n dropdownData[AddressItemType[AddressItemType.AddressTypeValue]] = this.getAddressTypeFormat();\n\n return dropdownData;\n };\n\n public getTwoLetterISORegionName = (countryRegionId: string): string | undefined => {\n const countryRegionInfo = this._getCountryRegionInfo(countryRegionId);\n\n return countryRegionInfo!.ISOCode;\n };\n\n public validateAddressFormat = (\n address: Address,\n validationError: Address,\n countryRegionId: string,\n propertyName?: string\n ): boolean => {\n let isValid: boolean = true;\n let validationtor;\n const addressFormat = this.getAddressFormat(address.ThreeLetterISORegionName || countryRegionId);\n\n addressFormat.forEach(addressFormatItem => {\n if (!propertyName || (propertyName && addressFormatItem.name === propertyName)) {\n validationtor = this._inputValidation(addressFormatItem, validationError, address);\n if (validationtor !== undefined) {\n isValid = validationtor;\n }\n }\n });\n\n return isValid;\n };\n\n public getTranformedAddress = (result: Microsoft.Maps.ISuggestionResult, stateProvinceInfo?: StateProvinceInfo[]): Address => {\n const address: Address = {};\n\n // Zip Code\n if (result.address.postalCode !== undefined) {\n address.ZipCode = result.address.postalCode;\n } else {\n address.ZipCode = '';\n }\n\n // State\n if (stateProvinceInfo) {\n const selectedState = stateProvinceInfo.find(state => state.StateName === result.address.adminDistrict);\n if (!selectedState) {\n address.State = '';\n address.StateName = result.address.adminDistrict;\n } else {\n address.State = selectedState.StateId;\n address.StateName = selectedState.StateName;\n }\n }\n\n // Street\n if (result.address.addressLine !== undefined) {\n address.Street = result.address.addressLine;\n } else {\n address.Street = ' ';\n }\n\n // City\n if (result.address.locality !== undefined) {\n address.City = result.address.locality;\n } else {\n address.City = '';\n }\n\n // District\n if (result.address.district !== undefined) {\n address.DistrictName = result.address.district;\n address.CountyName = result.address.district;\n } else {\n address.DistrictName = '';\n }\n\n // Formatted Address\n address.FullAddress = result.address.formattedAddress;\n\n return address;\n };\n\n private _inputValidation(addressFormatItem: IAddressItem, validationError: Address, address: Address): boolean | undefined {\n set(validationError, { [addressFormatItem.name]: null });\n for (const validationRule of addressFormatItem.validationRules || []) {\n if (!this._validateRegEx(address, addressFormatItem.name, validationRule)) {\n set(validationError, { [addressFormatItem.name]: validationRule.message });\n return false;\n }\n }\n return undefined;\n }\n\n private readonly _validateRegEx = (address: Address, propertyName: string, validationRule: IAddressValidationRule): boolean => {\n if (validationRule.regEx && validationRule.regEx.length > 0) {\n const regex = new RegExp(validationRule.regEx);\n return regex.test((get(address, propertyName) as string) || '');\n }\n return true;\n };\n\n private _getCountryRegionInfo(countryRegionId: string): CountryRegionInfo | undefined {\n return (this.countryRegionsInfo || []).find(countryRegion => {\n return (countryRegion.CountryRegionId || '').toLowerCase() === countryRegionId.toLowerCase();\n });\n }\n\n private _getAddressDisplayFormat(countryRegionInfo: CountryRegionInfo): IAddressItem[] {\n const addressDisplayItem: IAddressItem[] = [];\n\n if (countryRegionInfo && countryRegionInfo.AddressFormatLines) {\n const AddressTypeItem = this._extendAddressDisplayFormat(AddressItemType.AddressTypeValue, true);\n if (AddressTypeItem) {\n addressDisplayItem.push(AddressTypeItem);\n }\n\n const nameDisplayItem = this._extendAddressDisplayFormat(AddressItemType.Name, true);\n if (nameDisplayItem) {\n addressDisplayItem.push(nameDisplayItem);\n }\n\n countryRegionInfo.AddressFormatLines.forEach(formatLine => {\n if (formatLine.AddressComponentNameValue) {\n const addressItem = this.addressMetaData.getItemFormat(formatLine.AddressComponentNameValue);\n if (addressItem) {\n addressItem.isNewLine = formatLine.NewLine || false;\n addressDisplayItem.push(addressItem);\n }\n }\n });\n\n const phoneDisplayItem = this._extendAddressDisplayFormat(AddressItemType.Phone, false);\n if (phoneDisplayItem) {\n addressDisplayItem.push(phoneDisplayItem);\n }\n\n const isPrimaryDisplayItem = this._extendAddressDisplayFormat(AddressItemType.IsPrimary, false);\n if (isPrimaryDisplayItem) {\n addressDisplayItem.push(isPrimaryDisplayItem);\n }\n }\n\n return addressDisplayItem;\n }\n\n private _extendAddressDisplayFormat(type: AddressItemType, isNewLine: boolean): IAddressItem | undefined {\n const addressItem = this.addressMetaData.getItemFormat(type);\n if (addressItem) {\n addressItem.isNewLine = isNewLine;\n }\n return addressItem;\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { PhoneRegex } from '@msdyn365-commerce-modules/retail-actions';\n\nimport {\n AddressItemDisplayType,\n AddressItemType,\n AddressValidationRuleType,\n IAddressItem,\n IAddressValidationRule\n} from './address-format.data';\nimport { IAddressResource } from './address-module.data';\n\n/**\n * Address meta data.\n */\nexport class AddressMetaData {\n private readonly metaData: IAddressItem[] = [];\n\n private readonly resources: IAddressResource;\n\n private readonly requiredFieldRegEx: string = '\\\\S';\n\n private readonly resourcesPrefix: string = 'address';\n\n private readonly maxLength: number = 64;\n\n private readonly requiredFields: AddressItemType[];\n\n private readonly excludedTypes: AddressItemType[];\n\n constructor(resources: IAddressResource, excluded?: AddressItemType[], required?: AddressItemType[]) {\n this.resources = resources || {};\n this.excludedTypes = excluded || [];\n this.requiredFields =\n required !== undefined\n ? required\n : [\n AddressItemType.AddressTypeValue,\n AddressItemType.Name,\n AddressItemType.ZipCode,\n AddressItemType.City,\n AddressItemType.State,\n AddressItemType.ThreeLetterISORegionName,\n AddressItemType.Street\n ];\n this._init();\n }\n\n public getItemFormat(id: number): IAddressItem | undefined {\n return this.metaData.find(item => {\n return item.type === id;\n });\n }\n\n private _init(): void {\n this._addItem(AddressItemType.Name, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.Phone, AddressItemDisplayType.Input, PhoneRegex.defaultRegex);\n this._addItem(AddressItemType.ZipCode, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.City, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.County, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.State, AddressItemDisplayType.Dropdown);\n this._addItem(AddressItemType.ThreeLetterISORegionName, AddressItemDisplayType.Dropdown);\n this._addItem(AddressItemType.Street, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.DistrictName, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.StreetNumber, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.BuildingCompliment, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.Postbox, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.House_RU, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.Flat_RU, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.CountryOKSMCode_RU, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.AddressTypeValue, AddressItemDisplayType.Dropdown);\n this._addItem(AddressItemType.IsPrimary, AddressItemDisplayType.Checkbox);\n }\n\n private _addItem(type: AddressItemType, displayType: AddressItemDisplayType, format?: string): void {\n if (this.excludedTypes.includes(type)) {\n return;\n }\n\n const nameKey = AddressItemType[type].replace('_', '');\n\n // Find out if currentItem is required field\n const validationRules = this._validationRules(type, nameKey, format);\n const isRequired = validationRules.some(rule => rule.type === AddressValidationRuleType.Required);\n\n // If no optional string is provided in resource file, use the original label text\n const optionalString =\n this.resources[`${this.resourcesPrefix}${nameKey}LabelOptional`] || this.resources[`${this.resourcesPrefix}${nameKey}Label`];\n const item: IAddressItem = {\n type,\n displayType,\n name: AddressItemType[type],\n label: isRequired ? this.resources[`${this.resourcesPrefix}${nameKey}Label`] : optionalString,\n maxLength: this.maxLength,\n validationRules,\n isNewLine: true\n };\n\n this.metaData.push(item);\n }\n\n private _validationRules(type: AddressItemType, name: string, format?: string): IAddressValidationRule[] {\n const validationRules: IAddressValidationRule[] = [];\n\n for (const ruleType of Object.keys(AddressValidationRuleType)) {\n const key = `${this.resourcesPrefix}${name}${ruleType}`;\n const message: string = this.resources[`${key}ErrorMessage`];\n switch (ruleType) {\n case AddressValidationRuleType.Required: {\n if (this.requiredFields.find((itemType: AddressItemType) => itemType === type)) {\n validationRules.push(this._validationRule(ruleType, this.requiredFieldRegEx, message));\n }\n break;\n }\n case AddressValidationRuleType.Format: {\n validationRules.push(this._validationRule(ruleType, format!, message));\n break;\n }\n default:\n }\n }\n return validationRules;\n }\n\n private _validationRule(type: AddressValidationRuleType, regEx: string, message: string): IAddressValidationRule {\n return {\n type,\n regEx,\n message\n };\n }\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { Address } from '@msdyn365-commerce/retail-proxy';\nimport { Heading } from '@msdyn365-commerce-modules/data-types';\n\nexport enum AddressOperation {\n Add = 'Add',\n Show = 'Show',\n Update = 'Update',\n List = 'List'\n}\n\nexport enum AddressType {\n Shipping = 'Shipping',\n Billing = 'Billing',\n Invoice = 'Invoice',\n Company = 'Company'\n}\n\nexport interface IDropdownDisplayData {\n [index: string]: { key?: string; value?: string }[];\n}\n\nexport interface IAddressResponse {\n errorTitle?: string;\n errorMessage?: string;\n customerAddresses?: Address[];\n address?: Address;\n}\n\nexport interface IAddressConfig {\n heading?: Heading;\n primaryAddressSectionHeading?: Heading;\n otherAddressSectionHeading?: Heading;\n addAddressHeading?: Heading;\n editAddressHeading?: Heading;\n}\n\nexport interface IAddressResource {\n addressChangeCheckboxAriaLabel: string;\n addressAddButtonText: string;\n addressAddButtonAriaLabel: string;\n addressPrimaryButtonText: string;\n addressPrimaryButtonAriaLabel: string;\n addressEditButtonText: string;\n addressEditButtonAriaLabel: string;\n addressRemoveButtonText: string;\n addressRemoveButtonAriaLabel: string;\n addressSaveButtonText: string;\n addressSaveButtonAriaLabel: string;\n addressCancelButtonText: string;\n addressCancelButtonAriaLabel: string;\n addressStateDefaultSelectionText: string;\n addressNameLabel: string;\n addressNameLabelOptional?: string;\n addressNameRequiredErrorMessage: string;\n addressPhoneLabel: string;\n addressPhoneLabelOptional?: string;\n addressPhoneRequiredErrorMessage: string;\n addressZipCodeLabel: string;\n addressZipCodeLabelOptional?: string;\n addressZipCodeRequiredErrorMessage: string;\n addressCityLabel: string;\n addressCityLabelOptional?: string;\n addressCityRequiredErrorMessage: string;\n addressCountyLabel: string;\n addressCountyLabelOptional?: string;\n addressCountyRequiredErrorMessage: string;\n addressStateLabel: string;\n addressStateLabelOptional?: string;\n addressStateRequiredErrorMessage: string;\n addressThreeLetterISORegionNameLabel: string;\n addressThreeLetterISORegionNameLabelOptional?: string;\n addressThreeLetterISORegionNameRequiredErrorMessage: string;\n addressStreetRequiredErrorMessage: string;\n addressDistrictLabel: string;\n addressDistrictLabelOptional?: string;\n addressDistrictNameLabel: string;\n addressDistrictNameLabelOptional?: string;\n addressDistrictRequiredErrorMessage: string;\n addressStreetNumberLabel: string;\n addressStreetNumberLabelOptional?: string;\n addressStreetNumberRequiredErrorMessage: string;\n addressBuildingComplimentLabel: string;\n addressBuildingComplimentLabelOptional?: string;\n addressBuildingComplimentRequiredErrorMessage: string;\n addressPostboxLabel: string;\n addressPostboxLabelOptional?: string;\n addressPostboxRequiredErrorMessage: string;\n addressHouseRULabel: string;\n addressHouseRULabelOptional?: string;\n addressHouseRURequiredErrorMessage: string;\n addressFlatRULabel: string;\n addressFlatRULabelOptional?: string;\n addressFlatRURequiredErrorMessage: string;\n addressCountryOKSMCodeRULabel: string;\n addressCountryOKSMCodeRURequiredErrorMessage: string;\n addressErrorMessageTitle: string;\n addressGenericErrorMessage: string;\n addressEmptyListAddressMessage: string;\n removeAddressNotification?: string;\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 } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IAdressCheckbox {\n id?: string;\n name?: string;\n className: string;\n type: string;\n isChecked: boolean;\n autoFocus?: boolean;\n additionalAddributes?: object;\n telemetryContent?: ITelemetryContent;\n onChange(event: React.ChangeEvent): void;\n}\n\n/**\n * Address checkbox.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressCheckboxFunctionComponent: React.FC = (props: IAdressCheckbox) => {\n const {\n id: itemId,\n name,\n className,\n type,\n isChecked,\n additionalAddributes,\n telemetryContent,\n autoFocus: shouldBeAutoFocused,\n onChange\n } = props;\n\n const payLoad = getPayloadObject('click', telemetryContent!, name!);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n \n );\n};\n\nexport default AddressCheckboxFunctionComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Address } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { Heading as HeadingData } from '@msdyn365-commerce-modules/data-types';\nimport { Heading, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport { get } from 'mobx';\nimport * as React from 'react';\n\nimport {\n AddressItemDisplayType,\n AddressItemType,\n AddressValidationRuleType,\n IAddressDropdownsData,\n IAddressItem,\n IAddressValidationRule\n} from '../address-format.data';\nimport { AddressType, IAddressResource, IAddressResponse } from '../address-module.data';\nimport AddressAlertComponent from './address-alert';\nimport AddressButtonComponent from './address-button';\nimport AdressCheckboxComponent from './address-checkbox';\nimport AdressDropdownComponent from './address-dropdown';\nimport AddressErrorMessageComponent from './address-error-message';\nimport AddressErrorTitleComponent from './address-error-title';\nimport AddressInputComponent from './address-input';\nimport AddressLabelComponent from './address-label';\n\nexport interface IAddressAddInputProps {\n isUpdating?: boolean;\n hasError?: boolean;\n hasExternalSubmitGroup?: boolean;\n addressType: AddressType;\n addressFormat: IAddressItem[];\n defaultCountryRegionId: string;\n defaultAddressType: number;\n selectedAddress?: Address;\n dropdownDisplayData: IAddressDropdownsData;\n resources: IAddressResource;\n addressActionResponse?: IAddressResponse;\n addAddressHeading?: HeadingData;\n editAddressHeading?: HeadingData;\n validationError?: object;\n telemetryContent?: ITelemetryContent;\n shouldAutoFocus?: boolean;\n onInputChange(event: React.ChangeEvent): void;\n onDropdownChange(event: React.ChangeEvent): void;\n onSave?(): void;\n onCancel?(): void;\n}\n\nexport interface IAddressError {\n AddressError: INodeProps;\n title: React.ReactNode;\n message: React.ReactNode;\n}\n\nexport interface IAddressAddItem {\n key: string;\n AddressItem: INodeProps;\n label: React.ReactNode;\n alert: React.ReactNode;\n input: React.ReactNode;\n}\n\nexport interface IAddressAddUpdateProps {\n AddressForm: INodeProps;\n heading: React.ReactNode;\n items: IAddressAddItem[];\n hasError: boolean;\n error: IAddressError;\n isShowSaveButton: boolean;\n saveButton: React.ReactNode;\n isShowCancelButton: boolean;\n cancelButton: React.ReactNode;\n}\n\nconst getRequriedAttribute = (validationRules?: IAddressValidationRule[]): object => {\n const requriedRule = (validationRules || []).find(validationRule => {\n return validationRule.type === AddressValidationRuleType.Required;\n });\n\n return requriedRule ? { 'aria-required': true } : {};\n};\n\nconst getAddessItems = (selectedAddress: Address, props: IAddressAddInputProps): IAddressAddItem[] => {\n const {\n addressFormat,\n addressType,\n dropdownDisplayData,\n defaultCountryRegionId,\n defaultAddressType,\n validationError = {},\n onInputChange,\n onDropdownChange,\n shouldAutoFocus\n } = props;\n\n return addressFormat.map((addressFormatItem, index) => {\n const elementId = `${addressType.toLowerCase()}_address${addressFormatItem.name.toLowerCase()}`;\n const errorMessage = get(validationError, addressFormatItem.name);\n const className = classname('msc-address-form__item', `msc-address-form__item-${addressFormatItem.name.toLowerCase()}`, {\n 'msc-address-form__item-newline': addressFormatItem.isNewLine,\n 'address-form__item-invalid': errorMessage\n });\n let input;\n\n if (addressFormatItem.displayType === AddressItemDisplayType.Input) {\n input = (\n \n );\n } else if (addressFormatItem.displayType === AddressItemDisplayType.Checkbox) {\n input = (\n \n );\n } else {\n const displayData = dropdownDisplayData[addressFormatItem.name];\n let selectedValue = selectedAddress[addressFormatItem.name];\n\n if (addressFormatItem.type === AddressItemType.ThreeLetterISORegionName) {\n selectedValue = selectedValue || defaultCountryRegionId;\n }\n\n if (addressFormatItem.type === AddressItemType.AddressTypeValue) {\n selectedValue = selectedValue || defaultAddressType;\n }\n\n input = (\n \n );\n }\n\n return {\n key: addressFormatItem.name,\n AddressItem: { className, id: `${elementId}_container` },\n label: ,\n alert: ,\n input\n };\n });\n};\n\nexport const AddressAddUpdate = (props: IAddressAddInputProps): IAddressAddUpdateProps => {\n const {\n editAddressHeading,\n addAddressHeading,\n selectedAddress = {},\n resources,\n hasError,\n onCancel,\n onSave,\n hasExternalSubmitGroup,\n isUpdating,\n addressActionResponse,\n telemetryContent\n } = props;\n const heading = selectedAddress.RecordId ? editAddressHeading : addAddressHeading;\n\n return {\n AddressForm: { className: 'msc-address-form' },\n heading: heading && ,\n items: getAddessItems(selectedAddress, props),\n isShowSaveButton: !hasExternalSubmitGroup,\n saveButton: onSave && (\n \n ),\n isShowCancelButton: !hasExternalSubmitGroup,\n cancelButton: onCancel && (\n \n ),\n hasError: hasError || false,\n error: {\n AddressError: { className: 'msc-address-form__error' },\n title: addressActionResponse && addressActionResponse.errorTitle && (\n \n ),\n message: addressActionResponse && addressActionResponse.errorMessage && (\n \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 * as React from 'react';\n\nexport interface IAdressAlert {\n message?: string;\n}\n\n/**\n * Address alert.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressAlertFunctionComponent: React.FC = (props: IAdressAlert) => {\n const message = props.message;\n return (\n \n {message && <>{message}}\n \n );\n};\n\nexport default AddressAlertFunctionComponent;\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 IAddressButton {\n className: string;\n text: string;\n ariaLabel: string;\n disabled?: boolean;\n telemetryContent?: ITelemetryContent;\n role?: string;\n onClick(event: React.MouseEvent): void;\n}\n\n/**\n * Address button.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressButtonFunctionComponent: React.FC = (props: IAddressButton) => {\n const { className, text, ariaLabel, disabled: isDisabled, telemetryContent, onClick, role } = props;\n const payLoad = getPayloadObject('click', telemetryContent!, text);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n \n );\n};\n\nexport default AddressButtonFunctionComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classname from 'classnames';\nimport * as React from 'react';\n\nexport interface IAddressDetailItem {\n isNewLine: boolean;\n isShowLabel: boolean;\n labelText: string;\n name: string;\n value: string;\n}\n\n/**\n * Address details item.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressDetailItemFunctionComponent: React.FC = (props: IAddressDetailItem) => {\n const { isNewLine, isShowLabel, labelText, name, value } = props;\n\n const className = `msc-address-detail__item msc-address-detail__item-${name.toLowerCase()}`;\n const isEmpty = !(value && value.length > 0);\n const mainClass = isShowLabel\n ? `msc-address-detail__item msc-address-detail__item-address-detail_${labelText}`\n : classname(className, { 'msc-address-detail__item-empty': isEmpty, 'msc-address-detail__item-newline': isNewLine });\n return (\n \n {isShowLabel && (\n <>\n {labelText}\n \n \n )}\n {value}\n \n );\n};\n\nexport default AddressDetailItemFunctionComponent;\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 IAdressDropdown {\n id: string;\n name: string;\n className: string;\n value: string | number;\n additionalAddributes?: object;\n displayData: { key?: string | number; value?: string }[];\n onChange(event: React.ChangeEvent): void;\n}\n\nconst getDropdownItem = (key?: string | number, value?: string, selectedValue?: string | number): React.ReactNode => {\n let isSelected: boolean;\n if (typeof key === 'number') {\n isSelected = key === selectedValue;\n } else {\n isSelected = typeof selectedValue === 'string' && (key || '').toLowerCase() === (selectedValue || '').toLowerCase();\n }\n\n return (\n \n );\n};\n\n/**\n * Address dropdown.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressDropdownFunctionComponent: React.FC = (props: IAdressDropdown) => {\n const { id: itemId, name, className, value, additionalAddributes, displayData, onChange } = props;\n\n return (\n \n {displayData && displayData.map(item => getDropdownItem(item.key, item.value, value))}\n \n );\n};\n\nexport default AddressDropdownFunctionComponent;\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 * as React from 'react';\n\nexport interface IAdressErrorMessage {\n message: string;\n}\n\n/**\n * Address error message.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressErrorMessageFunctionComponent: React.FC = (props: IAdressErrorMessage) => {\n const { message } = props;\n\n return

{message}

;\n};\n\nexport default AddressErrorMessageFunctionComponent;\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 IAdressErrorTitle {\n title: string;\n}\n\n/**\n * Address error title.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressErrorTitleFunctionComponent: React.FC = (props: IAdressErrorTitle) => {\n const { title } = props;\n\n return

{title}

;\n};\n\nexport default AddressErrorTitleFunctionComponent;\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 IAdressInput {\n id?: string;\n name?: string;\n className: string;\n type: string;\n value: string;\n maxLength?: number;\n autoFocus?: boolean;\n additionalAddributes?: object;\n telemetryContent?: ITelemetryContent;\n onChange(event: React.ChangeEvent): void;\n}\n\n/**\n * Address input.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressInputFunctionComponent: React.FC = (props: IAdressInput) => {\n const {\n id: itemId,\n name,\n className,\n type,\n value,\n maxLength,\n additionalAddributes,\n autoFocus: shouldUseAutoFocus,\n telemetryContent,\n onChange\n } = props;\n\n const payLoad = getPayloadObject('click', telemetryContent!, name!);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n \n );\n};\n\nexport default AddressInputFunctionComponent;\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 IAdressLabel {\n id: string;\n text: string;\n}\n\n/**\n * Address label.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressLabelFunctionComponent: React.FC = (props: IAdressLabel) => {\n const { id: itemId, text } = props;\n\n return (\n \n );\n};\n\nexport default AddressLabelFunctionComponent;\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 { Address, AddressPurpose } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { Heading as HeadingData } from '@msdyn365-commerce-modules/data-types';\nimport { Heading, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { AddressFormat } from '../address-format';\nimport { IAddressResource, IAddressResponse } from '../address-module.data';\nimport AddressButtonComponent from './address-button';\nimport AddressErrorMessageComponent from './address-error-message';\nimport AddressErrorTitleComponent from './address-error-title';\nimport { AddressShow, IAddressShowProps } from './address-show';\n\nexport interface IAddressListError {\n Error: INodeProps;\n isShowError: boolean;\n title: React.ReactNode;\n message: React.ReactNode;\n}\n\nexport interface IAddressListItem {\n Item: INodeProps;\n key: number;\n error: IAddressListError;\n showItems: IAddressShowProps;\n isShowPrimaryButton: boolean;\n primaryButton: React.ReactNode;\n editButton: React.ReactNode;\n removeButton: React.ReactNode;\n}\n\nexport interface IAddressList {\n List: INodeProps;\n isShowList: boolean;\n heading: React.ReactNode;\n items: IAddressListItem[];\n}\n\nexport interface IAddressListProps {\n ListAddress: INodeProps;\n heading: React.ReactNode;\n isShowEmptyListMessage: boolean;\n emptyListMessage: React.ReactNode;\n addButton: React.ReactNode;\n primaryAddressList: IAddressList;\n otherAddressList: IAddressList;\n}\n\nexport interface IAddressListInputProps {\n isUpdating?: boolean;\n selectedAddress?: Address;\n addressFormat: AddressFormat;\n addresses: Address[];\n addressPurposes: AddressPurpose[];\n heading?: HeadingData;\n primaryAddressSectionHeading?: HeadingData;\n otherAddressSectionHeading?: HeadingData;\n addressActionResponse?: IAddressResponse;\n resources: IAddressResource;\n contextRequest: Msdyn365.IRequestContext;\n telemetryContent?: ITelemetryContent;\n handleLineItemHeadingChange?(event: Msdyn365.ContentEditableEvent): void;\n onAddAddress(): void;\n onEditAddress(address?: Address): void;\n onRemoveAddress(address?: Address): void;\n onUpdatePrimaryAddress(address: Address): void;\n canRenderAsyncCustomerDataAsUnmodifiable?: boolean;\n isAsyncCustomer?: boolean;\n isAsyncCustomerAddressCreationFeatureEnabled?: boolean;\n isEditAsyncCustomerFeatureEnabled?: boolean;\n}\n\nconst getButtonAriaLabel = (ariaLabel: string, addressName?: string): string => {\n return ariaLabel.replace('{addressName}', addressName || '');\n};\n\nconst getAddressList = (\n className: string,\n addresses: Address[],\n showPrimaryButton: boolean,\n props: IAddressListInputProps,\n heading?: HeadingData\n): IAddressList => {\n const {\n resources,\n isUpdating,\n addressActionResponse,\n selectedAddress,\n addressFormat,\n onEditAddress,\n onRemoveAddress,\n onUpdatePrimaryAddress,\n addressPurposes,\n telemetryContent\n } = props;\n const { errorTitle = null, errorMessage = null } = addressActionResponse || {};\n\n return {\n List: { className },\n isShowList: addresses.length > 0,\n heading: heading && ,\n items: addresses.map(\n (address: Address): IAddressListItem => {\n const isSelectedAddress = selectedAddress && selectedAddress.RecordId === address.RecordId;\n const isShowError = isSelectedAddress && errorTitle && errorMessage;\n\n // Disable 'primary', 'edit', and 'remove' buttons if the customer IS EITHER async OR async address creation feature is enabled and edit async customer feature is disabled.\n // Conversely, these buttons can only be enabled when the customer is NOT async AND the address creation feature is disabled.\n const isInvalidAsyncState: boolean =\n props.isEditAsyncCustomerFeatureEnabled || false\n ? false\n : (props.canRenderAsyncCustomerDataAsUnmodifiable || false) &&\n (props.isAsyncCustomer || false || props.isAsyncCustomerAddressCreationFeatureEnabled || false);\n\n return {\n Item: { className: `${className}-list` },\n key: address.RecordId || 0,\n showItems: AddressShow({\n addressFormat: addressFormat.getAddressFormat(address.ThreeLetterISORegionName || ''),\n address,\n addressPurposes\n }),\n error: {\n Error: { className: `${className}-error` },\n isShowError: !!isShowError,\n title: ,\n message: \n },\n isShowPrimaryButton: showPrimaryButton,\n\n primaryButton: (\n {\n onUpdatePrimaryAddress(address);\n }\n }}\n />\n ),\n editButton: (\n {\n onEditAddress(address);\n },\n role: 'link'\n }}\n />\n ),\n removeButton: (\n {\n onRemoveAddress(address);\n },\n role: 'link'\n }}\n />\n )\n };\n }\n )\n };\n};\n\nconst getPrimaryAddressList = (props: IAddressListInputProps): IAddressList => {\n const { addresses, primaryAddressSectionHeading } = props;\n const primaryAddresses = addresses.filter((address: Address) => address.IsPrimary);\n return getAddressList('msc-address-list__primary', primaryAddresses, false, props, primaryAddressSectionHeading);\n};\n\nconst getOtherAddressList = (props: IAddressListInputProps): IAddressList => {\n const { addresses, otherAddressSectionHeading } = props;\n const otherAddresses = addresses.filter((address: Address) => !address.IsPrimary);\n return getAddressList('msc-address-list__primary', otherAddresses, true, props, otherAddressSectionHeading);\n};\n\nexport const AddressList = (props: IAddressListInputProps): IAddressListProps => {\n const { addresses, heading, resources, onAddAddress, telemetryContent, handleLineItemHeadingChange } = props;\n const headingComponent = heading?.text && (\n {\n // Required\n },\n requestContext: props.contextRequest\n }}\n />\n );\n\n // IF the 'Edit async customer' feature is enabled. we won't be disabling the button in this scenario.\n // ELSE disable the 'Add' button only when the customer is async AND the 'Async Address Creation' feature is disabled.\n const disableAddButton: boolean =\n props.isEditAsyncCustomerFeatureEnabled || false\n ? false\n : (props.canRenderAsyncCustomerDataAsUnmodifiable || false) &&\n (props.isAsyncCustomer || false) &&\n !(props.isAsyncCustomerAddressCreationFeatureEnabled || false);\n\n return {\n ListAddress: { className: 'ms-address-list' },\n heading: headingComponent,\n isShowEmptyListMessage: addresses.length === 0,\n emptyListMessage:

{resources.addressEmptyListAddressMessage}

,\n addButton: (\n \n ),\n primaryAddressList: getPrimaryAddressList(props),\n otherAddressList: getOtherAddressList(props)\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Address, AddressPurpose } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { format, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { AddressFormat } from '../address-format';\nimport { IAddressResource } from '../address-module.data';\nimport AddressButtonComponent from './address-button';\nimport AddressInputComponent from './address-input';\nimport { AddressShow, IAddressShowProps } from './address-show';\n\nexport interface IAddressSelectInputProps {\n hasExternalSubmitGroup?: boolean;\n addressFormat: AddressFormat;\n addresses: Address[];\n addressPurposes: AddressPurpose[];\n resources: IAddressResource;\n selectedAddress: Address;\n telemetryContent?: ITelemetryContent;\n onAddressOptionChange(event: React.ChangeEvent): void;\n onAddAddress(): void;\n onSave(): void;\n onCancel(): void;\n}\n\nexport interface IAddressSelectItem {\n key: number;\n SelectItem: INodeProps;\n input: React.ReactNode;\n showItems: IAddressShowProps;\n}\n\nexport interface IAddressSelectProps {\n SelectAddress: INodeProps;\n addButton: React.ReactNode;\n items: IAddressSelectItem[];\n isShowSaveButton: boolean;\n saveButton: React.ReactNode;\n isShowCancelButton: boolean;\n cancelButton: React.ReactNode;\n}\n\nconst getInput = (index: number, address: Address, props: IAddressSelectInputProps): React.ReactNode => {\n const { addresses, onAddressOptionChange, selectedAddress, resources, addressPurposes } = props;\n const addressTypeDescription = address.AddressTypeValue\n ? addressPurposes.find(purpose => purpose.AddressType === address.AddressTypeValue)?.Description || ''\n : '';\n const ichecked = address.RecordId === selectedAddress.RecordId;\n const additionalAttributes = {\n checked: ichecked,\n 'aria-checked': ichecked,\n 'aria-setsize': addresses.length,\n 'aria-posinset': index + 1,\n 'aria-label': format(resources.addressChangeCheckboxAriaLabel, addressTypeDescription)\n };\n\n return (\n \n );\n};\n\nconst getAddressSelectItems = (props: IAddressSelectInputProps): IAddressSelectItem[] => {\n const { addresses, addressFormat, addressPurposes } = props;\n\n return addresses.map((address, index) => {\n return {\n key: address.RecordId || 0,\n SelectItem: { className: 'msc-address-select__item' },\n input: getInput(index, address, props),\n showItems: AddressShow({\n addressFormat: addressFormat.getAddressFormat(address.ThreeLetterISORegionName || ''),\n address,\n addressPurposes\n })\n };\n });\n};\n\nexport const AddressSelect = (props: IAddressSelectInputProps): IAddressSelectProps => {\n const { resources, onCancel, onSave, onAddAddress, hasExternalSubmitGroup } = props;\n\n return {\n SelectAddress: { className: 'msc-address-select' },\n addButton: (\n \n ),\n isShowSaveButton: !hasExternalSubmitGroup,\n saveButton: (\n \n ),\n isShowCancelButton: !hasExternalSubmitGroup,\n cancelButton: (\n \n ),\n items: getAddressSelectItems(props)\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Address, AddressPurpose } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { AddressItemType, IAddressItem } from '../address-format.data';\nimport AddressDetailItemComponent from './address-detail-item';\n\nexport interface IAddressShowItem {\n key: string;\n description: React.ReactNode;\n}\n\nexport interface IAddressShowProps {\n AddressDetail: INodeProps;\n items: IAddressShowItem[];\n}\n\nexport interface IAddressShowInputProps {\n addressFormat: IAddressItem[];\n address: Address;\n addressPurposes: AddressPurpose[];\n}\n\nexport const AddressShow = (props: IAddressShowInputProps): IAddressShowProps => {\n const { addressFormat, addressPurposes, address } = props;\n\n return {\n AddressDetail: { className: 'msc-address-detail' },\n items: addressFormat.map(item => {\n if (item.name === AddressItemType[AddressItemType.AddressTypeValue]) {\n const addressType = addressPurposes.find(\n addressTypeValue => addressTypeValue.AddressType.toString() === (address[item.name] || '').toString()\n );\n if (addressType) {\n const addressTypeDescription = addressType.Description || '';\n return {\n key: item.name,\n description: (\n \n )\n };\n }\n }\n return {\n key: item.name,\n description: (\n \n )\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 * as Msdyn365 from '@msdyn365-commerce/core';\nimport { Address, AddressPurpose, CountryRegionInfo, StateProvinceInfo } from '@msdyn365-commerce/retail-proxy';\nimport { format as formatNotification, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { action, observable, reaction, set } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { AutoSuggest } from '../../common/address-autosuggest';\nimport { IAutoSuggestOptions } from '../../common/address-autosuggest.data';\nimport { AddressCommon } from '../../common/address-common';\nimport { AddressFormat } from '../../common/address-format';\nimport { AddressItemType } from '../../common/address-format.data';\nimport { AddressMetaData } from '../../common/address-meta-data';\nimport { AddressOperation, AddressType, IAddressResource, IAddressResponse } from '../../common/address-module.data';\nimport { AddressAddUpdate, IAddressAddUpdateProps } from '../../common/components/address-add';\nimport { AddressList, IAddressListProps } from '../../common/components/address-list';\nimport { IAccountManagementAddressData } from './account-management-address.data';\nimport { IAccountManagementAddressProps } from './account-management-address.props.autogenerated';\n\n/**\n * Account management address view state interface.\n */\nexport interface IAccountManagementAddressViewState {\n isShowAddresList: boolean;\n isShowAddOrUpdateAddress: boolean;\n}\n\n/**\n * Account management address view state interface.\n */\nexport interface IAccountManagementAddressViewProps extends React.Component> {\n className: string;\n currentOperation: AddressOperation;\n selectedAddress?: Address;\n addUpdateAddress: Address;\n countryRegionId: string;\n stateProvinceInfo?: StateProvinceInfo[];\n customerAddresses: Address[];\n validationError: object;\n addressActionResponse?: IAddressResponse;\n viewState: IAccountManagementAddressViewState;\n AccountAddressManagement: IModuleProps;\n isUpdating: boolean;\n showAddressList: IAddressListProps;\n showAddOrUpdateAddress: IAddressAddUpdateProps;\n screenReaderNotification: React.ReactNode;\n infoMessageBar?: React.ReactNode;\n}\n\n/**\n *\n * Address component.\n * @extends {React.Component>}\n */\n@observer\nclass AccountManagementAddress extends React.Component> {\n @observable private currentOperation: AddressOperation;\n @observable private selectedAddress?: Address;\n @observable private countryRegionId: string = 'USA';\n @observable private stateProvinceInfo?: StateProvinceInfo[];\n @observable private customerAddresses: Address[];\n @observable private addUpdateAddress: Address;\n @observable private validationError: object;\n @observable private addressActionResponse?: IAddressResponse;\n @observable private isUpdating?: boolean;\n @observable private hasError?: boolean;\n @observable private removeAddressData?: Address;\n\n private readonly addressCommon: AddressCommon;\n private addressFormat: AddressFormat;\n private countryRegions: CountryRegionInfo[] = [];\n private addressPurposes: AddressPurpose[] = [];\n private readonly resources: IAddressResource;\n private readonly defaultAddressType: number = 6; // Default to Home\n private readonly telemetryContent: ITelemetryContent;\n private autoSuggest?: AutoSuggest;\n\n private readonly asyncCustAddressCreationFeatureName: string = 'Dynamics.AX.Application.RetailAsyncAddressCreationFeature';\n private readonly editAsyncCustomerFeatureName: string = 'Dynamics.AX.Application.RetailEnableAsyncCustomerEditFeature';\n\n private asyncCustomerAddressCreationFeatureIsEnabled?: boolean = false;\n private isEditAsyncCustomerFeatureEnabled: boolean = false;\n\n public constructor(props: IAccountManagementAddressProps) {\n super(props);\n const { context, data, resources, telemetry } = this.props;\n\n this.resources = resources;\n this.currentOperation = AddressOperation.List;\n this.countryRegions = data.countryRegions.result || [];\n this.addressPurposes = data.addressPurposes.result || [];\n this.customerAddresses = data.address.result || [];\n this.addUpdateAddress = {};\n this.validationError = {};\n this.addressCommon = new AddressCommon(context, resources, telemetry);\n this.addressFormat = new AddressFormat(\n this.countryRegions,\n new AddressMetaData({ ...resources }, this._getAddressFormatExcludeList()),\n this.addressPurposes\n );\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public async componentDidMount(): Promise {\n const {\n context: {\n telemetry,\n actionContext: {\n requestContext: { channel }\n }\n },\n config: { autoSuggestionEnabled, autoSuggestOptions }\n } = this.props;\n\n // Initializing data props\n this._dataInitialize(this.props);\n\n if (this.props.data.countryRegions.result !== undefined) {\n this._setDefaultCountryRegionId();\n }\n\n reaction(\n () => this.countryRegionId,\n () => {\n this._getStateProvinces();\n }\n );\n\n reaction(\n () => this.currentOperation,\n () => {\n this._getStateProvinces();\n }\n );\n\n if (autoSuggestionEnabled) {\n if (channel && !channel.BingMapsApiKey) {\n telemetry.error('BingMapsApiKey is missing.');\n return;\n }\n\n if (channel && !channel.BingMapsEnabled) {\n telemetry.error('Map is disabled from HQ.');\n return;\n }\n\n const options: IAutoSuggestOptions = { ...autoSuggestOptions };\n this.autoSuggest = new AutoSuggest(\n telemetry,\n options,\n channel?.BingMapsApiKey,\n channel?.ChannelCountryRegionISOCode,\n channel?.DefaultLanguageId\n );\n\n reaction(\n () =>\n this.props.data.storeSelectorStateManager.result?.loadMapApi !== undefined &&\n (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update),\n async () => {\n await this.autoSuggest?._loadMapAPI(await this.props.data.storeSelectorStateManager);\n }\n );\n\n reaction(\n () => {\n this.props.data.storeSelectorStateManager.result?.isMapApiLoaded;\n },\n async () => {\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\n await this._attachMapAutoSuggest();\n }\n }\n );\n }\n }\n\n /**\n * Component did mount function.\n */\n public async componentDidUpdate(): Promise {\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\n if (this.props.data.storeSelectorStateManager.result?.isMapApiLoaded) {\n await this._attachMapAutoSuggest();\n }\n } else {\n this.autoSuggest?.disposeAutoSuggest();\n }\n }\n\n /**\n * Should component update function.\n * @param nextProps - Account management address props.\n * @param nextState - Next state.\n * @returns - True if component should update, false otherwise.\n */\n public shouldComponentUpdate(\n nextProps: IAccountManagementAddressProps,\n nextState: IAccountManagementAddressViewState\n ): 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 { renderView, config, resources, data } = this.props;\n const customerInformation = data.customerInformation.result;\n\n // Set the feature state value for 'Async Customer Address Creation'.\n this.asyncCustomerAddressCreationFeatureIsEnabled =\n data.featureState?.result?.find(feature => feature.Name === this.asyncCustAddressCreationFeatureName)?.IsEnabled || false;\n\n this.isEditAsyncCustomerFeatureEnabled =\n data.featureState?.result?.find(feature => feature.Name === this.editAsyncCustomerFeatureName)?.IsEnabled || false;\n\n const viewProps = {\n ...this.props,\n infoMessageBar: (this.props.context.app?.config?.canRenderAsyncCustomerDataAsUnmodifiable || false) &&\n !this.isEditAsyncCustomerFeatureEnabled &&\n (customerInformation?.IsAsyncCustomer || false) && (\n \n ),\n currentOperation: this.currentOperation,\n selectedAddress: this.selectedAddress,\n addUpdateAddress: this.addUpdateAddress,\n countryRegionId: this.countryRegionId,\n stateProvinceInfo: this.stateProvinceInfo,\n customerAddresses: this.customerAddresses,\n validationError: this.validationError,\n addressActionResponse: this.addressActionResponse,\n isUpdating: this.isUpdating,\n hasError: this.hasError,\n className: config.className,\n viewState: {\n isShowAddresList: this.currentOperation === AddressOperation.List,\n isShowAddOrUpdateAddress: this.currentOperation !== AddressOperation.List\n },\n AccountAddressManagement: {\n moduleProps: this.props,\n className: classnames('ms-account-management-address', config.className)\n },\n showAddressList: this._renderListAddress(),\n showAddOrUpdateAddress: this._renderAddOrUpdateAddress(),\n screenReaderNotification: this.removeAddressData ? this._renderScreenReaderRemoveText(this.removeAddressData) : null\n };\n\n return renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * On Suggestion Selected Function.\n * @param result - Microsoft.Maps.ISuggestionResult.\n */\n @action\n private readonly _onSuggestionSelected = async (result: Microsoft.Maps.ISuggestionResult): Promise => {\n this._clearAddressFields();\n const address = this.addressFormat.getTranformedAddress(result, this.stateProvinceInfo);\n set(this.addUpdateAddress, { Street: '' });\n set(this.addUpdateAddress, { ZipCode: address.ZipCode });\n set(this.addUpdateAddress, { CountyName: address.CountyName });\n set(this.addUpdateAddress, { City: address.City });\n set(this.addUpdateAddress, { State: address.State });\n set(this.addUpdateAddress, { DistrictName: address.DistrictName });\n set(this.addUpdateAddress, { FullAddress: address.FullAddress });\n\n // Bing autosuggest put the complete address in the Street input box. Updating the street input box to show only street address.\n setTimeout(() => {\n set(this.addUpdateAddress, { Street: address.Street });\n }, 0);\n };\n\n /**\n * Clear Address Fields.\n */\n @action\n private readonly _clearAddressFields = (): void => {\n const addressFormatItem = this.addressFormat.getAddressFormat(\n this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId\n );\n addressFormatItem.forEach(format => {\n if (this.addUpdateAddress[format.name] !== undefined && !this.autoSuggest?.excludedAddressFields.includes(format.name)) {\n this.addressFormat[format.name] = '';\n }\n });\n this._clearValidation();\n };\n\n /**\n * Clear Validation Function.\n */\n @action\n private readonly _clearValidation = (): void => {\n this.validationError = {};\n };\n\n /**\n * Method data initialization.\n * @param props -The account management props.\n */\n private readonly _dataInitialize = (props: IAccountManagementAddressProps): void => {\n const { data } = props;\n\n reaction(\n () => data.countryRegions.result,\n () => {\n this.countryRegions = data.countryRegions.result ?? [];\n }\n );\n\n reaction(\n () => data.addressPurposes.result,\n () => {\n this.addressPurposes = data.addressPurposes.result ?? [];\n }\n );\n\n reaction(\n () => data.address.result,\n () => {\n this.customerAddresses = data.address.result ?? [];\n }\n );\n };\n\n /**\n * Render Add Or Update Address Function.\n * @returns - AddressAddUpdate.\n */\n private readonly _renderAddOrUpdateAddress = (): IAddressAddUpdateProps => {\n return AddressAddUpdate({\n isUpdating: this.isUpdating,\n resources: this.resources,\n addressType: AddressType.Shipping,\n addressFormat: this.addressFormat.getAddressFormat(this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId),\n defaultCountryRegionId: this.countryRegionId,\n defaultAddressType: this.defaultAddressType,\n selectedAddress: this.addUpdateAddress,\n validationError: this.validationError,\n addressActionResponse: this.addressActionResponse,\n dropdownDisplayData: this.addressFormat.getPrefilledAddressDropdownData(\n this.resources.addressStateDefaultSelectionText,\n this.stateProvinceInfo\n ),\n telemetryContent: this.telemetryContent,\n onInputChange: this._onAddressAddUpdateInputChange,\n onDropdownChange: this._onAddressAddUpdateDropdownChange,\n onSave: this._onAddressAddUpdateSubmit,\n onCancel: this._resetView\n });\n };\n\n /**\n * Render List Address Function.\n * @returns - AddressList.\n */\n private readonly _renderListAddress = (): IAddressListProps => {\n const { config } = this.props;\n\n /**\n * Render Address title.\n * @param event - Msdyn365.ContentEditableEvent.\n */\n const handleLineItemHeadingChange = (event: Msdyn365.ContentEditableEvent) => {\n config.heading!.text = event.target.value;\n };\n const heading = config.heading && {\n text: config.heading.text,\n headingTag: config.heading.tag\n };\n\n return AddressList({\n isUpdating: this.isUpdating,\n selectedAddress: this.selectedAddress,\n addressFormat: this.addressFormat,\n addresses: this.customerAddresses,\n addressPurposes: this.addressPurposes,\n resources: this.resources,\n heading,\n primaryAddressSectionHeading: config.primaryAddressSectionHeading,\n otherAddressSectionHeading: config.otherAddressSectionHeading,\n contextRequest: this.props.context.request,\n telemetryContent: this.telemetryContent,\n handleLineItemHeadingChange,\n onEditAddress: this._goToEditAddress,\n onRemoveAddress: this._onRemoveAddress,\n onAddAddress: this._goToAddAddress,\n onUpdatePrimaryAddress: this._onSubmitUpdatePrimaryAddress,\n isAsyncCustomerAddressCreationFeatureEnabled: this.asyncCustomerAddressCreationFeatureIsEnabled || false,\n isAsyncCustomer: this.props.data.customerInformation.result?.IsAsyncCustomer || false,\n canRenderAsyncCustomerDataAsUnmodifiable: this.props.context.app?.config?.canRenderAsyncCustomerDataAsUnmodifiable || false,\n isEditAsyncCustomerFeatureEnabled: this.isEditAsyncCustomerFeatureEnabled\n });\n };\n\n /**\n * Attach Map Auto Suggest Function.\n */\n private readonly _attachMapAutoSuggest = async (): Promise => {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (storeSelectorStateManager?.isMapApiLoaded) {\n this.autoSuggest?.attachAutoSuggest('#shipping_addressstreet', '#shipping_addressstreet_container', this._onSuggestionSelected);\n }\n };\n\n /**\n * On Address Add Update Function.\n * @param name - String.\n * @param value - String | Boolean | Number.\n */\n private readonly onAddressAddUpdate = (name: string, value: string | boolean | number) => {\n set(this.addUpdateAddress, { [name]: value });\n this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId, name);\n };\n\n /**\n * On Address Add Update Input Change.\n * @param event - Input Change Event.\n */\n private readonly _onAddressAddUpdateInputChange = (event: React.ChangeEvent): void => {\n if (event.target.type === 'checkbox') {\n this.onAddressAddUpdate(event.target.name, event.target.checked);\n } else {\n const value = (event.target.value || '').replace(new RegExp('[<>]', 'gi'), '');\n this.onAddressAddUpdate(event.target.name, value);\n }\n };\n\n /**\n * On Address Add Update Dropdown Change.\n * @param event - Dropdown Change Event.\n */\n private readonly _onAddressAddUpdateDropdownChange = (event: React.ChangeEvent): void => {\n if (event.target.name === AddressItemType[AddressItemType.AddressTypeValue]) {\n this.onAddressAddUpdate(event.target.name, +event.target.value);\n } else {\n this.onAddressAddUpdate(event.target.name, event.target.value);\n }\n if (event.target.name === AddressItemType[AddressItemType.ThreeLetterISORegionName]) {\n this._onCountryChange(event.target.value);\n }\n };\n\n /**\n * On Address Update Function.\n * @param response - Promise.\n * @param onSuccess - IAddressResponse.\n */\n private readonly _onAddressUpdate = (response: Promise, onSuccess: (response: IAddressResponse) => void): void => {\n this.isUpdating = true;\n response.then(\n (result: IAddressResponse) => {\n if (result.address) {\n this.hasError = false;\n onSuccess(result);\n } else {\n this.hasError = true;\n this.addressActionResponse = result;\n }\n this.isUpdating = false;\n },\n () => {\n this.hasError = true;\n this.isUpdating = false;\n }\n );\n };\n\n /**\n * On Address Add Update Submit Function.\n */\n private readonly _onAddressAddUpdateSubmit = (): void => {\n if (!this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId)) {\n return;\n }\n let response: Promise;\n if (this.addressCommon.isAuthenticatedFlow()) {\n response =\n this.currentOperation === AddressOperation.Update\n ? this.addressCommon.updateCustomerAddress(this.addUpdateAddress)\n : this.addressCommon.addCustomerAddress(this.addUpdateAddress);\n } else {\n response = Promise.resolve({ address: this.addUpdateAddress });\n }\n\n this._onAddressUpdate(response, this._onAddOrUpdateSuccess);\n };\n\n /**\n * On Country Change Function.\n * @param countryRegionId - String.\n */\n private readonly _onCountryChange = (countryRegionId: string) => {\n this.countryRegionId = countryRegionId;\n const twoLetterISORegionName = this.addressFormat.getTwoLetterISORegionName(countryRegionId);\n set(this.addUpdateAddress, { ThreeLetterISORegionName: countryRegionId });\n set(this.addUpdateAddress, { TwoLetterISORegionName: twoLetterISORegionName });\n this.autoSuggest?.changeAutoSuggestionCountryCode(twoLetterISORegionName);\n this._clearAddressFields();\n };\n\n /**\n * Get Address Format Exclude List Function.\n * @returns - Address Format Exclude List.\n */\n private readonly _getAddressFormatExcludeList = (): AddressItemType[] => {\n const { config } = this.props;\n const addressFormatExcludeList: AddressItemType[] = [];\n\n if (!config.showAddressType) {\n addressFormatExcludeList.push(AddressItemType.AddressTypeValue);\n }\n\n addressFormatExcludeList.push(AddressItemType.IsPrimary);\n\n return addressFormatExcludeList;\n };\n\n /**\n * Get State Provinces Function.\n */\n private readonly _getStateProvinces = (): void => {\n if (\n !this.countryRegionId ||\n !(this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)\n ) {\n return;\n }\n\n this.addressCommon.getStateProvinces(this.countryRegionId).then((result: StateProvinceInfo[]) => {\n const stateInfo = result.some(state => state.StateId === this.addUpdateAddress.State);\n\n // Reset state if selected state not found in the list.\n if (!stateInfo) {\n set(this.addUpdateAddress, { State: '' });\n }\n this.stateProvinceInfo = result;\n });\n };\n\n private _setDefaultCountryRegionId(): void {\n const { request } = this.props.context;\n const market = request && request.channel && request.channel.ChannelCountryRegionISOCode;\n\n this.countryRegionId = this.addressCommon.getDefaultCountryRegionId(this.countryRegionId, this.countryRegions, market);\n }\n\n /**\n * Update CurrentOperation Function.\n * @param operation - AddressOperation.\n */\n private readonly _updateCurrentOperation = (operation: AddressOperation) => {\n this.currentOperation = operation;\n this._clearAddressFields();\n };\n\n /**\n * On Submit Update Primary Address Function.\n * @param address - Address.\n */\n private readonly _onSubmitUpdatePrimaryAddress = (address: Address): void => {\n this.selectedAddress = address;\n const response = this.addressCommon.updateCustomerPrimaryAddress(address);\n this._onAddressUpdate(response, this._onUpdatePrimaryAddressSuccess);\n };\n\n /**\n * Go To Edit Address Function.\n * @param address - Address.\n */\n private readonly _goToEditAddress = (address: Address): void => {\n this.addUpdateAddress = { ...address };\n this.countryRegionId = this.addUpdateAddress.ThreeLetterISORegionName || 'USA';\n this._updateCurrentOperation(AddressOperation.Update);\n };\n\n /**\n * On Remove Address Function.\n * @param address - Address.\n */\n private readonly _onRemoveAddress = (address: Address): void => {\n address.Deactivate = true;\n this.removeAddressData = address;\n const response = this.addressCommon.updateCustomerAddress(address);\n this._onAddressUpdate(response, this._onAddOrUpdateSuccess);\n };\n\n /**\n * Renders Notification screen reader text for removed address.\n * @param address - Address input.\n * @returns Notification for removed address.\n */\n private readonly _renderScreenReaderRemoveText = (address: Address): React.ReactNode => {\n const notification = formatNotification(this.resources.removeAddressNotification!, `${address.Name!}`);\n return (\n
\n {notification}\n
\n );\n };\n\n /**\n * Go To Add Address Function.\n */\n private readonly _goToAddAddress = (): void => {\n this.addUpdateAddress = {};\n this._setDefaultCountryRegionId();\n set(this.addUpdateAddress, { ThreeLetterISORegionName: this.countryRegionId });\n set(this.addUpdateAddress, { AddressTypeValue: this.defaultAddressType });\n this._setDefaultCountryRegionId();\n this._updateCurrentOperation(AddressOperation.Add);\n };\n\n /**\n * On Add Or Update Success Function.\n * @param response - IAddressResponse.\n */\n private readonly _onAddOrUpdateSuccess = (response: IAddressResponse): void => {\n if (response.customerAddresses) {\n this.customerAddresses = response.customerAddresses;\n }\n this._resetView();\n };\n\n /**\n * On Update Primary Address Success Function.\n * @param response - IAddressResponse.\n */\n private readonly _onUpdatePrimaryAddressSuccess = (response: IAddressResponse): void => {\n if (response.customerAddresses) {\n this.customerAddresses = response.customerAddresses;\n }\n };\n\n /**\n * Reset view function.\n */\n private readonly _resetView = (): void => {\n this.selectedAddress = undefined;\n this._updateCurrentOperation(AddressOperation.List);\n };\n}\n\nexport default AccountManagementAddress;\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 { IAddressAddItem, IAddressAddUpdateProps } from '../../common/components/address-add';\nimport { IAddressList, IAddressListItem, IAddressListProps } from '../../common/components/address-list';\nimport { IAddressShowItem, IAddressShowProps } from '../../common/components/address-show';\nimport { IAccountManagementAddressViewProps } from './account-management-address';\n\n/**\n * Address show component.\n * @param param0 - Root param.\n * @param param0.AddressDetail - Address detail.\n * @param param0.items - IAddressShowItem[].\n * @returns - Address Node.\n */\nconst AddressShow: React.FC = ({ AddressDetail, items }) => {\n return (\n \n {items.map((item: IAddressShowItem) => {\n return <>{item.description};\n })}\n \n );\n};\n\n/**\n * Address List Component.\n * @param param0 - Root param.\n * @param param0.List - Address list.\n * @param param0.isShowList - Boolean.\n * @param param0.heading - Address heading.\n * @param param0.items - IAddressListItem[].\n * @returns - AddressListComponent Node.\n */\nconst AddressList: React.FC = ({ List, isShowList, heading, items }) => {\n if (!isShowList) {\n return null;\n }\n\n return (\n \n {heading}\n {items.map((item: IAddressListItem) => {\n const { Item, key, error, showItems, isShowPrimaryButton, primaryButton, editButton, removeButton } = item;\n const { Error, isShowError, title, message } = error;\n return (\n \n \n {isShowError && (\n \n {title}\n {message}\n \n )}\n {isShowPrimaryButton && primaryButton}\n {editButton}\n {removeButton}\n \n );\n })}\n \n );\n};\n\n/**\n * Address Lists Component.\n * @param param0 - Root param.\n * @param param0.ListAddress - List address.\n * @param param0.heading - List heading.\n * @param param0.isShowEmptyListMessage - Boolean.\n * @param param0.emptyListMessage - Empty list message.\n * @param param0.addButton - Add button.\n * @param param0.primaryAddressList - Primary address.\n * @param param0.otherAddressList - Other address.\n * @returns Address Lists Component Node.\n */\nconst AddressLists: React.FC = ({\n ListAddress,\n heading,\n isShowEmptyListMessage,\n emptyListMessage,\n addButton,\n primaryAddressList,\n otherAddressList\n}) => {\n return (\n \n {heading}\n {isShowEmptyListMessage && emptyListMessage}\n {addButton}\n \n \n \n );\n};\n\n/**\n * AddressAddUpdateComponent.\n * @param param0 - Root param.\n * @param param0.AddressForm - Address form.\n * @param param0.heading - Address heading.\n * @param param0.items - IAddressAddItem[].\n * @param param0.hasError - Boolean.\n * @param param0.error - Error message.\n * @param param0.isShowSaveButton - Boolean.\n * @param param0.saveButton - Save button.\n * @param param0.isShowCancelButton - Boolean.\n * @param param0.cancelButton - Cancel button.\n * @returns Address add update component node.\n */\nconst AddressAddUpdate: React.FC = ({\n AddressForm,\n heading,\n items,\n hasError,\n error,\n isShowSaveButton,\n saveButton,\n isShowCancelButton,\n cancelButton\n}) => {\n return (\n \n {heading}\n {items.map((item: IAddressAddItem) => {\n const { AddressItem, key, label, alert, input } = item;\n return (\n \n {label}\n {alert}\n {input}\n \n );\n })}\n {hasError && (\n \n {error.title}\n {error.message}\n \n )}\n {isShowSaveButton && saveButton}\n {isShowCancelButton && cancelButton}\n \n );\n};\n\n/**\n * Account Management Address View Component.\n * @param props - Props.\n * @returns - AccountAddressManagement Module.\n */\nconst AccountManagementAddressView: React.FC = props => {\n const {\n AccountAddressManagement,\n infoMessageBar,\n viewState,\n showAddressList,\n showAddOrUpdateAddress,\n screenReaderNotification\n } = props;\n\n return (\n \n {infoMessageBar}\n {viewState.isShowAddresList && }\n {viewState.isShowAddOrUpdateAddress && }\n {screenReaderNotification}\n \n );\n};\n\nexport default AccountManagementAddressView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Address, AddressPurpose, CountryRegionInfo, StateProvinceInfo } from '@msdyn365-commerce/retail-proxy';\nimport { ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observable, reaction, set } from 'mobx';\nimport * as React from 'react';\n\nimport { AddressCommon } from '../../common/address-common';\nimport { AddressFormat } from '../../common/address-format';\nimport { AddressItemDisplayType, AddressItemType, AddressValidationRuleType, IAddressItem } from '../../common/address-format.data';\nimport { AddressMetaData } from '../../common/address-meta-data';\nimport { AddressOperation, AddressType, IAddressResource, IAddressResponse } from '../../common/address-module.data';\nimport { AddressAddUpdate, IAddressAddUpdateProps } from '../../common/components/address-add';\nimport { IBusinessAccountAddressData } from './business-account-address.data';\nimport { IBusinessAccountAddressProps } from './business-account-address.props.autogenerated';\n\n/**\n * Interface for IBusinessAccountAddressExtendedProps.\n */\nexport interface IBusinessAccountAddressExtendedProps extends IBusinessAccountAddressProps {\n hasError: boolean;\n isRequired: boolean;\n resetAddress: boolean;\n updateForm(errors: boolean, currentAddress?: Address): void;\n}\n\n/**\n * Interface for IBusinessAccountAddressState.\n */\nexport interface IBusinessAccountAddressState {\n countryId?: string;\n states?: StateProvinceInfo[];\n}\n\n/**\n * Interface for IBusinessAccountAddressViewProps.\n */\nexport interface IBusinessAccountAddressViewProps {\n className: string;\n currentOperation: AddressOperation;\n selectedAddress?: Address;\n addUpdateAddress: Address;\n addressListSelectedAddress: Address;\n countryRegionId: string;\n stateProvinceInfo?: StateProvinceInfo[];\n customerAddresses: Address[];\n validationError: object;\n addressActionResponse?: IAddressResponse;\n BusinessAccountAddress: IModuleProps;\n isUpdating: boolean;\n hasError: boolean;\n showAddOrUpdateAddress: IAddressAddUpdateProps;\n}\n\n/**\n *\n * Address component.\n * @extends {React.Component, IBusinessAccountAddressState>}\n */\nclass BusinessAccountAddress extends React.Component {\n @observable private addUpdateAddress: Address;\n\n @observable private countryRegionId: string = 'USA';\n\n @observable private stateProvinceInfo?: StateProvinceInfo[];\n\n @observable private readonly validationError: object;\n\n private readonly addressActionResponse?: IAddressResponse;\n\n private readonly isUpdating?: boolean;\n\n private readonly addressCommon: AddressCommon;\n\n private addressFormat: AddressFormat;\n\n private countryRegions: CountryRegionInfo[] = [];\n\n private addressPurposes: AddressPurpose[] = [];\n\n private readonly resources: IAddressResource;\n\n private readonly defaultAddressType: number = 0; // Default to None (This value set in HQ as Business)\n\n private readonly shouldAutoFocus?: boolean = false;\n\n private readonly excludedList: AddressItemType[] = [AddressItemType.Name, AddressItemType.AddressTypeValue, AddressItemType.IsPrimary]; // Default to hiding Name and AddressType inputs\n\n private readonly telemetryContent: ITelemetryContent;\n\n public constructor(props: IBusinessAccountAddressExtendedProps) {\n super(props);\n\n const { context, data, resources, telemetry } = this.props;\n this.addUpdateAddress = {};\n this.resources = resources;\n this.countryRegions = data.countryRegions.result || [];\n this.addressPurposes = data.addressPurposes.result || [];\n this.stateProvinceInfo = data.countryStates.result || [];\n this.addressFormat = new AddressFormat(\n this.countryRegions,\n new AddressMetaData({ ...resources }, this.excludedList, props.isRequired ? undefined : []),\n this.addressPurposes\n );\n this.addressCommon = new AddressCommon(context, resources, telemetry);\n this.validationError = {};\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public componentDidMount(): void {\n // Initializing data props\n this._dataInitialize(this.props);\n\n this._setDefaultCountryRegionId();\n }\n\n public shouldComponentUpdate(nextProps: IBusinessAccountAddressExtendedProps, nextState: IBusinessAccountAddressState): 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 { renderView, config, hasError, resetAddress } = this.props;\n\n // Business-sign-up will pass this flag when cancel button is clicked\n if (resetAddress) {\n this._resetAddressFields();\n }\n\n const viewProps = {\n ...this.props,\n countryRegionId: this.countryRegionId,\n stateProvinceInfo: this.stateProvinceInfo,\n validationError: this.validationError,\n addressActionResponse: this.addressActionResponse,\n hasError,\n className: config.className,\n BusinessAccountAddress: {\n moduleProps: this.props,\n className: classnames('ms-business-account-address', config.className)\n },\n showAddOrUpdateAddress: this._renderAddOrUpdateAddress()\n };\n\n return renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Reset Address.\n */\n // eslint-disable-next-line @typescript-eslint/naming-convention\n public _resetAddressFields = () => {\n const addressFormat = this.addressFormat.getAddressFormat(this.countryRegionId);\n\n addressFormat.map(addressFormatItem => {\n switch (addressFormatItem.displayType) {\n case AddressItemDisplayType.Input:\n this.addUpdateAddress[addressFormatItem.name] = '';\n break;\n case AddressItemDisplayType.Checkbox:\n this.addUpdateAddress[addressFormatItem.name] = false;\n break;\n default:\n switch (addressFormatItem.type) {\n case AddressItemType.ThreeLetterISORegionName:\n this.addUpdateAddress[addressFormatItem.name] = this.countryRegionId;\n break;\n case AddressItemType.AddressTypeValue:\n this.addUpdateAddress[addressFormatItem.name] = this.defaultAddressType;\n break;\n case AddressItemType.State:\n this.addUpdateAddress[addressFormatItem.name] = '';\n break;\n default:\n this.addUpdateAddress[addressFormatItem.name] = undefined;\n }\n }\n });\n };\n\n /**\n * Method data initialization.\n * @param props -The account management props.\n */\n private readonly _dataInitialize = (props: IBusinessAccountAddressExtendedProps): void => {\n const { data } = props;\n\n reaction(\n () => data.countryRegions.result,\n () => {\n this.countryRegions = data.countryRegions.result ?? [];\n }\n );\n\n reaction(\n () => data.addressPurposes.result,\n () => {\n this.addressPurposes = data.addressPurposes.result ?? [];\n }\n );\n\n reaction(\n () => data.countryStates.result,\n () => {\n this.stateProvinceInfo = data.countryStates.result ?? [];\n }\n );\n };\n\n // Set validationError and hasError to hide error messages since in the B2B\n // request form, no errors would visually show since user wont be able to submit\n // until form is filled and correct\n /**\n * Render Add Or Update Address Function.\n * @returns - AddressAddUpdate.\n */\n private readonly _renderAddOrUpdateAddress = (): IAddressAddUpdateProps => {\n return AddressAddUpdate({\n isUpdating: this.isUpdating,\n resources: this.resources,\n addressType: AddressType.Company,\n addressFormat: this.addressFormat.getAddressFormat(this.countryRegionId),\n defaultCountryRegionId: this.countryRegionId,\n defaultAddressType: this.defaultAddressType,\n selectedAddress: this.addUpdateAddress,\n shouldAutoFocus: this.shouldAutoFocus,\n validationError: this.validationError,\n hasError: this.props.hasError,\n addressActionResponse: this.addressActionResponse,\n telemetryContent: this.telemetryContent,\n dropdownDisplayData: this.addressFormat.getPrefilledAddressDropdownData(\n this.resources.addressStateDefaultSelectionText,\n this.stateProvinceInfo\n ),\n onInputChange: this._onAddressAddUpdateInputChange,\n onDropdownChange: this._onAddressAddUpdateDropdownChange\n });\n };\n\n /**\n * On Address Add Update Input Change Function.\n * @param event - Input event change function.\n */\n private readonly _onAddressAddUpdateInputChange = (event: React.ChangeEvent): void => {\n this._updateAddress(event.target.name, event.target.value);\n };\n\n /**\n * On Address Add Update Dropdown Change Function.\n * @param event - Change dropdown event.\n */\n private readonly _onAddressAddUpdateDropdownChange = async (event: React.ChangeEvent): Promise => {\n if (event.target.name === AddressItemType[AddressItemType.ThreeLetterISORegionName]) {\n await this._updateCountryRegionId(event.target.value);\n } else {\n this._updateAddress(event.target.name, event.target.value);\n }\n };\n\n /**\n * Update Address Function.\n * @param name - String.\n * @param value - String.\n */\n private readonly _updateAddress = (name: string, value: string | number) => {\n const { updateForm, isRequired, resources } = this.props;\n let cleanValue = value;\n if (typeof value === 'string') {\n cleanValue = (value || '').replace(new RegExp('[<>]', 'gi'), '');\n }\n set(this.addUpdateAddress, { [name]: cleanValue });\n\n if (this._isEmpty()) {\n if (isRequired) {\n updateForm(true, undefined);\n } else {\n // Reset addressFormat as if address was NOT a required field\n this.addressFormat = new AddressFormat(\n this.countryRegions,\n new AddressMetaData({ ...resources }, this.excludedList, []),\n this.addressPurposes\n );\n updateForm(false, this.addUpdateAddress);\n }\n } else {\n // Get new addressFormat if address was a required field\n this.addressFormat = new AddressFormat(\n this.countryRegions,\n new AddressMetaData({ ...resources }, this.excludedList, this.props.isRequired ? undefined : []),\n this.addressPurposes\n );\n\n // Verify with new rules\n if (this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId)) {\n updateForm(false, this.addUpdateAddress);\n } else {\n updateForm(true, undefined);\n }\n }\n };\n\n /**\n * Is empty Function.\n * @returns - Boolean.\n */\n // Walk through array and check if valued is defined or value is not an empty string\n private readonly _isEmpty = () => {\n const addressFormat = this.addressFormat.getAddressFormat(this.countryRegionId);\n for (const addressFormatItem of addressFormat) {\n if (addressFormatItem.type !== AddressItemType.ThreeLetterISORegionName || this._isInputRequired(addressFormatItem)) {\n const addressItemValue = this.addUpdateAddress[addressFormatItem.name];\n\n // Check each input field, if value is defined and not an empty string --> address is not empty\n if (addressItemValue || (addressItemValue && addressItemValue !== '')) {\n return false;\n }\n }\n }\n\n return true;\n };\n\n /**\n * Is Input Required Function.\n * @param addressFormatItem - IAddressItem.\n * @returns - Boolean.\n */\n private readonly _isInputRequired = (addressFormatItem: IAddressItem): boolean => {\n if (\n ObjectExtensions.isNullOrUndefined(addressFormatItem) ||\n !addressFormatItem.validationRules ||\n addressFormatItem.validationRules.length === 0\n ) {\n return false;\n }\n\n for (const validationRule of addressFormatItem.validationRules) {\n if (validationRule.type === AddressValidationRuleType.Required) {\n return false;\n }\n }\n\n return true;\n };\n\n private _setDefaultCountryRegionId(): void {\n const { request } = this.props.context;\n const market = request.channel?.ChannelCountryRegionISOCode;\n\n this._updateCountryRegionId(this.addressCommon.getDefaultCountryRegionId(this.countryRegionId, this.countryRegions, market));\n\n // Set default AddressType\n set(this.addUpdateAddress, { AddressTypeValue: this.defaultAddressType });\n }\n\n /**\n * Update Country Region Id Function.\n * @param value - String.\n */\n private readonly _updateCountryRegionId = async (value: string) => {\n this.countryRegionId = value;\n\n await this.addressCommon.getStateProvinces(this.countryRegionId).then((result: StateProvinceInfo[]) => {\n const stateInfo = result.some(state => state.StateId === this.addUpdateAddress.State);\n\n // Reset state if selected state not found in the list.\n if (!stateInfo) {\n this._updateAddress('State', '');\n }\n\n this.stateProvinceInfo = result;\n });\n\n this._updateAddress('ThreeLetterISORegionName', this.countryRegionId);\n };\n}\n\nexport default BusinessAccountAddress;\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 { IAddressAddItem, IAddressAddUpdateProps } from '../../common/components/address-add';\nimport { IBusinessAccountAddressViewProps } from './business-account-address';\n\n/**\n * Address Add Update Component.\n * @param param0 - Root param.\n * @param param0.AddressForm - Address form.\n * @param param0.heading - Address Heading.\n * @param param0.items - IAddressAddItem[].\n * @param param0.hasError - Boolean.\n * @param param0.error - IAddressError.\n * @param param0.isShowSaveButton - Boolean.\n * @param param0.saveButton - Save button.\n * @param param0.isShowCancelButton - Boolean.\n * @param param0.cancelButton - Cancel button.\n * @returns - AddressForm Node.\n */\nconst AddressAddUpdate: React.FC = ({\n AddressForm,\n heading,\n items,\n hasError,\n error,\n isShowSaveButton,\n saveButton,\n isShowCancelButton,\n cancelButton\n}) => {\n return (\n \n {heading}\n {items.map((item: IAddressAddItem) => {\n const { AddressItem, key, label, alert, input } = item;\n return (\n \n {label}\n {hasError && alert}\n {input}\n \n );\n })}\n {hasError && (\n \n {error.title}\n {error.message}\n \n )}\n {isShowSaveButton && saveButton}\n {isShowCancelButton && cancelButton}\n \n );\n};\n\n/**\n * Business Account Address View Component.\n * @param props - Props.\n * @returns - BusinessAccountAddress Module.\n */\nconst BusinessAccountAddressView: React.FC = props => {\n const { BusinessAccountAddress, showAddOrUpdateAddress } = props;\n\n return (\n \n \n \n );\n};\n\nexport default BusinessAccountAddressView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport AddressInputComponent from './address-input';\n\nexport interface IAddressBillingCheckbox {\n isChecked: boolean;\n value: string;\n ariaLabel: string;\n text: string;\n telemetryContent?: ITelemetryContent;\n onChange(event: React.ChangeEvent): void;\n}\n\nexport const AddressBillingCheckbox: React.FC = ({\n isChecked,\n value,\n ariaLabel,\n text,\n telemetryContent,\n onChange\n}) => {\n const additionalAttributes = {\n checked: isChecked,\n 'aria-checked': isChecked\n };\n\n return (\n \n );\n};\nexport default AddressBillingCheckbox;\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 IAddressBillingHeading {\n text: string;\n}\n\nexport const AddressBillingHeading: React.FC = ({ text }) => (\n

{text}

\n);\n\nexport default IAddressBillingHeading;\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 { CheckoutModule, ErrorLocation, IGiftCardExtend } from '@msdyn365-commerce/global-state';\nimport { Address, AddressPurpose, CountryRegionInfo, StateProvinceInfo } from '@msdyn365-commerce/retail-proxy';\nimport { IModuleStateProps, withModuleState, EnabledPaymentsForOBO } from '@msdyn365-commerce-modules/checkout-utilities';\nimport { getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { action, computed, observable, reaction, set } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { AutoSuggest } from '../../common/address-autosuggest';\nimport { IAutoSuggestOptions } from '../../common/address-autosuggest.data';\nimport { AddressCommon } from '../../common/address-common';\nimport { AddressFormat } from '../../common/address-format';\nimport { AddressItemType } from '../../common/address-format.data';\nimport { AddressMetaData } from '../../common/address-meta-data';\nimport { AddressOperation, AddressType, IAddressResource, IAddressResponse } from '../../common/address-module.data';\nimport { AddressAddUpdate, IAddressAddUpdateProps } from '../../common/components/address-add';\nimport { AddressBillingCheckbox } from '../../common/components/address-billing-checkbox';\nimport { AddressBillingHeading } from '../../common/components/address-billing-heading';\nimport { AddressShow, IAddressShowProps } from '../../common/components/address-show';\nimport { ICheckoutBillingAddressData } from './checkout-billing-address.data';\nimport { ICheckoutBillingAddressProps } from './checkout-billing-address.props.autogenerated';\nimport { ErrorComponent } from '../../common';\nimport { focusOnCheckoutError } from '../../checkout-errors/checkout-errors';\n\n/**\n * Props interface.\n */\nexport interface IProps extends ICheckoutBillingAddressProps, IModuleStateProps {}\n\n/**\n * Checkout billing address view state interface.\n */\nexport interface ICheckoutBillingAddressViewState {\n isShowAddress: boolean;\n isShowAddOrUpdateAddress: boolean;\n isShowSameAsShippingCheckbox: boolean;\n errorMessage?: string;\n}\n\n/**\n * Checkout billing address view props interface.\n */\nexport interface ICheckoutBillingAddressViewProps extends IProps {\n className: string;\n currentOperation: AddressOperation;\n selectedAddress?: Address;\n addUpdateAddress: Address;\n countryRegionId: string;\n stateProvinceInfo?: StateProvinceInfo[];\n validationError: object;\n addressActionResponse?: IAddressResponse;\n viewState: ICheckoutBillingAddressViewState;\n CheckoutBillingAddress: IModuleProps;\n sameAsShippingCheckbox: React.ReactNode;\n heading: React.ReactNode;\n showAddress: IAddressShowProps;\n showAddOrUpdateAddress: IAddressAddUpdateProps;\n alert?: React.ReactNode;\n checkoutErrorRef?: React.RefObject;\n}\n\n/**\n *\n * CheckoutBillingAddress component.\n * @extends {React.PureComponent>}\n */\n// @ts-expect-error\n@withModuleState\n@observer\nclass CheckoutBillingAddress extends React.Component {\n @observable private currentOperation: AddressOperation;\n\n @observable private isBillingAddressSameAsShipping: boolean;\n\n @observable private selectedAddress?: Address;\n\n @observable private addUpdateAddress: Address;\n\n @observable private countryRegionId: string = 'USA';\n\n @observable private stateProvinceInfo?: StateProvinceInfo[];\n\n @observable private validationError: object;\n\n @observable private readonly addressActionResponse?: IAddressResponse;\n\n private readonly addressCommon: AddressCommon;\n\n private addressFormat: AddressFormat;\n\n private countryRegions: CountryRegionInfo[] = [];\n\n private addressPurposes: AddressPurpose[] = [];\n\n private readonly resources: IAddressResource;\n\n private readonly defaultAddressType: number = 6; // Default to Home\n\n // private addRenderRef: React.RefObject;\n private readonly telemetryContent?: ITelemetryContent;\n\n private autoSuggest?: AutoSuggest;\n\n private readonly checkoutErrorRef: React.RefObject = React.createRef();\n\n public constructor(props: IProps) {\n super(props);\n const { context, data, resources, telemetry } = this.props;\n\n this.addUpdateAddress = {};\n this.validationError = {};\n this.isBillingAddressSameAsShipping = false;\n this.resources = resources;\n this.currentOperation = AddressOperation.List;\n this.addressPurposes = data.addressPurposes.result || [];\n this.countryRegions = data.countryRegions.result || [];\n this.stateProvinceInfo = data.countryStates.result || [];\n this.addressCommon = new AddressCommon(context, resources, telemetry);\n this.addressFormat = new AddressFormat(\n this.countryRegions,\n new AddressMetaData({ ...resources }, this._getAddressFormatExcludeList()),\n this.addressPurposes\n );\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n this.state = {\n isShowAddress: false,\n isShowAddOrUpdateAddress: false,\n isShowSameAsShippingCheckbox: false,\n errorMessage: ''\n };\n\n // This.addRenderRef = React.createRef();\n }\n\n public async componentDidMount(): Promise {\n const {\n context: {\n telemetry,\n actionContext: {\n requestContext: { channel }\n }\n },\n config: { autoSuggestionEnabled, autoSuggestOptions }\n } = this.props;\n\n // Initializing data props\n this._dataInitialize(this.props);\n\n this.props.data.checkout.then(() => {\n this._setDefaultCountryRegionId();\n this._initModuleState();\n });\n\n reaction(\n () => this.countryRegionId,\n () => {\n this._getStateProvinces();\n }\n );\n\n reaction(\n () => this.currentOperation,\n () => {\n this._getStateProvinces();\n }\n );\n\n reaction(\n () => this.props.data.checkout.result && this.props.data.checkout.result.shippingAddress,\n shippingAddress => {\n if (this.props.moduleState.isUpdating) {\n if (shippingAddress && this.isBillingAddressSameAsShipping) {\n this.isBillingAddressSameAsShipping = true;\n this._updateCurrentOperation(AddressOperation.Show, shippingAddress);\n } else if (shippingAddress && this.isBillingAddressSameAsShipping) {\n this._updateCurrentOperation(AddressOperation.Show, shippingAddress);\n }\n }\n }\n );\n\n reaction(\n () => this.isBillingAddressRequried,\n isBillingAddressRequried => {\n if (isBillingAddressRequried) {\n if (this.props.moduleState.isDisabled) {\n this.onEdit();\n }\n } else {\n this.props.data.checkout.result?.removeBillingAddress({});\n this.props.moduleState.onDisable();\n }\n }\n );\n\n if (autoSuggestionEnabled) {\n if (channel && !channel.BingMapsApiKey) {\n telemetry.error('BingMapsApiKey is missing.');\n return;\n }\n\n if (channel && !channel.BingMapsEnabled) {\n telemetry.error('Map is disabled from HQ.');\n return;\n }\n\n const options: IAutoSuggestOptions = { ...autoSuggestOptions };\n this.autoSuggest = new AutoSuggest(\n telemetry,\n options,\n channel?.BingMapsApiKey,\n channel?.ChannelCountryRegionISOCode,\n channel?.DefaultLanguageId\n );\n\n // Customer doesn't have any address. Then add view will be loaded directly. Code for the same to handle that\n if (\n this.props.data.storeSelectorStateManager.result &&\n (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)\n ) {\n await this.autoSuggest._loadMapAPI(await this.props.data.storeSelectorStateManager);\n }\n\n reaction(\n () =>\n this.props.data.storeSelectorStateManager.result?.loadMapApi &&\n (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update),\n async () => {\n await this.autoSuggest?._loadMapAPI(await this.props.data.storeSelectorStateManager);\n }\n );\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.isMapApiLoaded,\n async () => {\n await this._attachMapAutoSuggest();\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.CheckoutBillingAddress &&\n checkoutError.errorMessage\n ) {\n this._setErrorMessage(checkoutError.errorMessage);\n }\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.checkoutErrorFocus,\n checkoutErrorFocus => {\n if (checkoutErrorFocus === CheckoutModule.CheckoutBillingAddress) {\n focusOnCheckoutError(this.checkoutErrorRef, this.props.context.actionContext);\n }\n }\n );\n }\n }\n\n public async componentDidUpdate(): Promise {\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\n if (this.props.data.storeSelectorStateManager.result?.isMapApiLoaded) {\n await this._attachMapAutoSuggest();\n }\n } else {\n this.autoSuggest?.disposeAutoSuggest();\n }\n }\n\n public shouldComponentUpdate(\n nextProps: ICheckoutBillingAddressProps,\n nextState: ICheckoutBillingAddressViewState\n ): 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 if (!this.isBillingAddressRequried || this._shouldHideBillingAddressForOBO) {\n return null;\n }\n\n const {\n resources,\n moduleState: { hasError }\n } = this.props;\n\n const { renderView, config } = this.props;\n\n const errorMessage = this.state.errorMessage;\n\n const viewProps = {\n ...this.props,\n currentOperation: this.currentOperation,\n selectedAddress: this.selectedAddress,\n addUpdateAddress: this.addUpdateAddress,\n countryRegionId: this.countryRegionId,\n stateProvinceInfo: this.stateProvinceInfo,\n validationError: this.validationError,\n addressActionResponse: this.addressActionResponse,\n className: config.className,\n viewState: {\n isShowAddress: this.selectedAddress && this.currentOperation === AddressOperation.Show,\n isShowAddOrUpdateAddress: this.currentOperation !== AddressOperation.Show,\n isShowSameAsShippingCheckbox: this.isCartContainsItemsForShipping && this.props.moduleState.isUpdating\n },\n CheckoutBillingAddress: {\n moduleProps: this.props,\n className: classnames('ms-checkout-billing-address', config.className)\n },\n heading: ,\n alert: hasError && errorMessage && ,\n checkoutErrorRef: this.checkoutErrorRef,\n\n sameAsShippingCheckbox: (\n \n ),\n showAddress: this._renderShowAddress(),\n showAddOrUpdateAddress: this._renderAddOrUpdateAddress()\n };\n\n return renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * On suggestion selected.\n * @param result - The suggestion result.\n */\n @action\n private readonly _onSuggestionSelected = async (result: Microsoft.Maps.ISuggestionResult): Promise => {\n this._clearAddressFields();\n const address = this.addressFormat.getTranformedAddress(result, this.stateProvinceInfo);\n set(this.addUpdateAddress, { Street: '' });\n set(this.addUpdateAddress, { ZipCode: address.ZipCode });\n set(this.addUpdateAddress, { CountyName: address.CountyName });\n set(this.addUpdateAddress, { City: address.City });\n set(this.addUpdateAddress, { State: address.State });\n set(this.addUpdateAddress, { DistrictName: address.DistrictName });\n set(this.addUpdateAddress, { FullAddress: address.FullAddress });\n\n // Bing autosuggest put the complete address in the Street input box. Updating the street input box to show only street address.\n setTimeout(() => {\n set(this.addUpdateAddress, { Street: address.Street });\n }, 0);\n };\n\n /**\n * Clear address fields.\n */\n @action\n private readonly _clearAddressFields = (): void => {\n const addressFormatItem = this.addressFormat.getAddressFormat(\n this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId\n );\n addressFormatItem.forEach(format => {\n if (this.addUpdateAddress[format.name] !== undefined && !this.autoSuggest?.excludedAddressFields.includes(format.name)) {\n this.addressFormat[format.name] = '';\n }\n });\n this._clearValidation();\n };\n\n /**\n * Clear validation.\n */\n @action\n private readonly _clearValidation = (): void => {\n this.validationError = {};\n };\n\n /**\n * On address update.\n * @param name - Name.\n * @param value - Value.\n */\n private readonly onAddressAddUpdate = (name: string, value: string) => {\n set(this.addUpdateAddress, { [name]: value });\n this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId, name);\n };\n\n /**\n * Method data initialization.\n * @param props -The checkout address properties.\n */\n private readonly _dataInitialize = (props: IProps): void => {\n const { data } = props;\n\n reaction(\n () => data.countryRegions.result,\n () => {\n this.countryRegions = data.countryRegions.result ?? [];\n }\n );\n\n reaction(\n () => data.addressPurposes.result,\n () => {\n this.addressPurposes = data.addressPurposes.result ?? [];\n }\n );\n\n reaction(\n () => data.countryStates.result,\n () => {\n this.stateProvinceInfo = data.countryStates.result ?? [];\n }\n );\n };\n\n /**\n * Render add or update address function.\n * @returns - Address add update props.\n */\n private readonly _renderAddOrUpdateAddress = (): IAddressAddUpdateProps => {\n return AddressAddUpdate({\n resources: this.resources,\n addressType: AddressType.Billing,\n addressFormat: this.addressFormat.getAddressFormat(this.addUpdateAddress.ThreeLetterISORegionName ?? this.countryRegionId),\n defaultCountryRegionId: this.countryRegionId,\n defaultAddressType: this.defaultAddressType,\n selectedAddress: this.addUpdateAddress,\n validationError: this.validationError,\n addressActionResponse: this.addressActionResponse,\n dropdownDisplayData: this.addressFormat.getPrefilledAddressDropdownData(\n this.resources.addressStateDefaultSelectionText,\n this.stateProvinceInfo\n ),\n telemetryContent: this.telemetryContent,\n onInputChange: this._onAddressAddUpdateInputChange,\n onDropdownChange: this._onAddressAddUpdateDropdownChange,\n hasExternalSubmitGroup: this.props.moduleState.hasExternalSubmitGroup,\n onSave: this._onSubmitAddress,\n onCancel: this._resetView\n });\n };\n\n private _renderShowAddress(): IAddressShowProps | null {\n if (this.selectedAddress) {\n return AddressShow({\n address: this.selectedAddress,\n addressFormat: this.addressFormat.getAddressFormat(this.selectedAddress.ThreeLetterISORegionName ?? ''),\n addressPurposes: this.addressPurposes\n });\n }\n\n return null;\n }\n\n /**\n * On country region change function.\n * @param countryRegionId - Country region Id.\n */\n private readonly _onCountryChange = (countryRegionId: string) => {\n this.countryRegionId = countryRegionId;\n const twoLetterIsoRegionName = this.addressFormat.getTwoLetterISORegionName(countryRegionId);\n set(this.addUpdateAddress, { ThreeLetterISORegionName: countryRegionId });\n set(this.addUpdateAddress, { TwoLetterISORegionName: twoLetterIsoRegionName });\n this.autoSuggest?.changeAutoSuggestionCountryCode(twoLetterIsoRegionName);\n this._clearAddressFields();\n };\n\n /**\n * Gets address format for exclude list.\n * @returns - Address item type.\n */\n private readonly _getAddressFormatExcludeList = (): AddressItemType[] => {\n const { config } = this.props;\n const addressFormatExcludeList: AddressItemType[] = [];\n\n if (!config.showAddressType) {\n addressFormatExcludeList.push(AddressItemType.AddressTypeValue);\n }\n\n addressFormatExcludeList.push(AddressItemType.IsPrimary);\n\n return addressFormatExcludeList;\n };\n\n /**\n * Attach map auto suggest.\n */\n private readonly _attachMapAutoSuggest = async (): Promise => {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (storeSelectorStateManager?.isMapApiLoaded) {\n this.autoSuggest?.attachAutoSuggest('#billing_addressstreet', '#billing_addressstreet_container', this._onSuggestionSelected);\n }\n };\n\n /**\n * On address add update input change.\n * @param event - The event.\n */\n private readonly _onAddressAddUpdateInputChange = (event: React.ChangeEvent): void => {\n const value = (event.target.value || '').replace(new RegExp('[<>]', 'gi'), '');\n this.onAddressAddUpdate(event.target.name, value);\n };\n\n /**\n * On address add update dropdown change.\n * @param event - The event.\n */\n private readonly _onAddressAddUpdateDropdownChange = (event: React.ChangeEvent): void => {\n this.onAddressAddUpdate(event.target.name, event.target.value);\n\n if (event.target.name === AddressItemType[AddressItemType.ThreeLetterISORegionName]) {\n this._onCountryChange(event.target.value);\n }\n };\n\n /**\n * Gets state provinces.\n */\n private readonly _getStateProvinces = (): void => {\n if (\n !this.countryRegionId ||\n !(this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)\n ) {\n return;\n }\n\n this.addressCommon.getStateProvinces(this.countryRegionId).then((result: StateProvinceInfo[]) => {\n const stateInfo = result.some(state => state.StateId === this.addUpdateAddress.State);\n\n // Reset state if selected state not found in the list.\n if (!stateInfo) {\n set(this.addUpdateAddress, { State: '' });\n }\n this.stateProvinceInfo = result;\n });\n };\n\n /**\n * Initialize module state.\n */\n private readonly _initModuleState = (): void => {\n this.props.moduleState.init({\n status: this.isBillingAddressRequried ? 'updating' : 'disabled',\n onEdit: this.onEdit,\n onCancel: this.onCancel,\n onSubmit: this.onSubmit\n });\n\n const { billingAddress, isBillingAddressSameAsShippingAddress } = this.props.data.checkout.result ?? {};\n\n if (this.isBillingAddressRequried) {\n if (billingAddress) {\n this.isBillingAddressSameAsShipping = isBillingAddressSameAsShippingAddress ?? false;\n this._updateCurrentOperation(AddressOperation.Show, billingAddress);\n this._updateModuleState();\n } else if (this.isCartContainsItemsForShipping) {\n this.isBillingAddressSameAsShipping = true;\n this._updateCurrentOperation(AddressOperation.Show, this.shippingAddress);\n } else {\n this.isBillingAddressSameAsShipping = false;\n this._updateCurrentOperation(AddressOperation.Add);\n }\n }\n };\n\n /**\n * Sets default country region Id.\n */\n private _setDefaultCountryRegionId(): void {\n const { request } = this.props.context;\n const market = request.channel?.ChannelCountryRegionISOCode;\n\n this.countryRegionId = this.addressCommon.getDefaultCountryRegionId(this.countryRegionId, this.countryRegions, market);\n }\n\n /**\n * On change - Billing address same as shipping.\n * @param event - The event.\n */\n private readonly _onBillingAddressSameAsShippingChange = (event: React.ChangeEvent) => {\n this.isBillingAddressSameAsShipping = event.currentTarget.checked;\n\n if (this.isBillingAddressSameAsShipping && this.shippingAddress) {\n this._updateCurrentOperation(AddressOperation.Show, this.shippingAddress);\n } else {\n this._updateCurrentOperation(AddressOperation.Add, this.billingAddress);\n }\n };\n\n @computed private get isCartContainsItemsForShipping(): boolean {\n const { request } = this.props.context;\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n const { channelDeliveryOptionConfig, featureState } = this.props.data;\n const retailMultiplePickUpOptionEnabled = featureState.result?.find(feature => feature.Name === multiplePickupStoreSwitchName)\n ?.IsEnabled;\n\n const pickupDeliveryModeCode = request.channel?.PickupDeliveryModeCode;\n const emailDeliveryModeCode = request.channel?.EmailDeliveryModeCode;\n\n // If hasInvoiceLine is true, there are only invoices no items in cart and return false here\n return this.props.data.checkout.result?.checkoutCart.hasInvoiceLine\n ? false\n : retailMultiplePickUpOptionEnabled\n ? ((this.props.data.checkout.result && this.props.data.checkout.result.checkoutCart.cart.CartLines) || []).some(cartLine =>\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\n ? cartLine.DeliveryMode !==\n channelDeliveryOptionConfig.result?.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) || []).some(cartLine =>\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\n ? cartLine.DeliveryMode !== pickupDeliveryModeCode && cartLine.DeliveryMode !== emailDeliveryModeCode\n : cartLine\n );\n }\n\n @computed private get billingAddress(): Address | undefined {\n return this.props.data.checkout.result?.billingAddress;\n }\n\n @computed private get shippingAddress(): Address | undefined {\n return this.props.data.checkout.result?.shippingAddress;\n }\n\n @computed private get getLoyaltyAmount(): number {\n const checkoutState = this.props.data.checkout.result;\n return checkoutState?.loyaltyAmount ? checkoutState.loyaltyAmount : 0;\n }\n\n @computed private 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 return count + (giftCard.Balance || 0);\n }, 0);\n }\n\n @computed private get getCustomerAccountAmount(): number {\n const checkoutState = this.props.data.checkout.result;\n const defaultAmount = 0;\n\n return checkoutState?.customerAccountAmount ?? defaultAmount;\n }\n\n @computed private get shouldPaidByCard(): boolean {\n const {\n data: { checkout },\n config\n } = this.props;\n if (!checkout.result) {\n return false;\n }\n\n const checkoutResult = checkout.result;\n const cart = checkoutResult.checkoutCart.cart;\n if (!cart || !cart.CartLines || cart.CartLines.length === 0) {\n return false;\n }\n\n const { paymentTenderType, tokenizedPaymentCard } = checkoutResult;\n const isPaidByOtherPaymentSource = config.paymenTenderType !== paymentTenderType && tokenizedPaymentCard;\n\n // Use payment card when it is not free or gift card balance + Loyalty amount can not cover the total amount\n const amountDue = (cart.TotalAmount || 0) - this.getGiftCardTotalAmount - this.getLoyaltyAmount - this.getCustomerAccountAmount;\n\n return amountDue > 0 && !isPaidByOtherPaymentSource;\n }\n\n @computed private get isBillingAddressRequried(): boolean {\n return (\n this.shouldPaidByCard &&\n (!this.props.data.checkout?.result?.isPaymentVerificationRedirection ||\n !!this.props.data.checkout?.result?.isCheckoutCallFailed)\n );\n }\n\n @computed private get _shouldHideBillingAddressForOBO(): boolean {\n return Msdyn365.isOboRequest(this.props.context.request) && EnabledPaymentsForOBO.PaymentInstrument === 0;\n }\n\n /**\n * On submit address.\n */\n private readonly _onSubmitAddress = (): void => {\n if (!this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId)) {\n this.props.moduleState.setHasError(true);\n\n if (\n this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout &&\n this.props.data.checkout.result?.isPaymentSectionContainerHasError\n ) {\n this.props.data.checkout.result.updateIsBillingAddressHasError({ newIsBillingAddressHasError: true });\n }\n\n return;\n }\n\n this._setBillingAddress(this.addUpdateAddress);\n this._updateCurrentOperation(AddressOperation.Show, this.addUpdateAddress);\n this._updateModuleState();\n };\n\n /**\n * On submit.\n */\n private readonly onSubmit = (): void => {\n switch (this.currentOperation) {\n case AddressOperation.Add:\n case AddressOperation.Update:\n this.props.telemetry.information('Billing address submit for Add or Update operation.');\n this._onSubmitAddress();\n break;\n case AddressOperation.Show:\n this.props.telemetry.information('Billing address submit for Show operation.');\n if (this.selectedAddress) {\n this._setBillingAddress(this.selectedAddress);\n this._updateCurrentOperation(AddressOperation.Show, this.selectedAddress);\n this._updateModuleState();\n }\n break;\n default:\n this.props.telemetry.error('Invalid operation');\n }\n };\n\n /**\n * On cancel.\n */\n private readonly onCancel = (): void => {\n switch (this.currentOperation) {\n case AddressOperation.Add:\n case AddressOperation.Update:\n this.props.telemetry.information('Billing address cancel for Add or Update operation.');\n this._resetView();\n this._clearAddressFields();\n break;\n case AddressOperation.Show:\n this.props.telemetry.information('Billing address cancel for Show operation.');\n this._resetView();\n break;\n default:\n this.props.telemetry.error('Invalid operation');\n }\n };\n\n /**\n * On edit.\n */\n private readonly onEdit = (): void => {\n this.props.telemetry.information('Billing address onEdit is called.');\n\n if (this.isBillingAddressSameAsShipping && this.shippingAddress && this.isCartContainsItemsForShipping) {\n this._updateCurrentOperation(AddressOperation.Show, this.shippingAddress);\n } else {\n this._updateCurrentOperation(AddressOperation.Add, this.billingAddress);\n }\n this.props.moduleState.onUpdating();\n };\n\n /**\n * Sets billing address.\n * @param address - The address.\n */\n private readonly _setBillingAddress = (address: Address): void => {\n if (this.props.data.checkout.result) {\n const newBillingAddress = { ...address };\n\n if (address.ThreeLetterISORegionName && !newBillingAddress.TwoLetterISORegionName) {\n newBillingAddress.TwoLetterISORegionName = this.addressFormat.getTwoLetterISORegionName(address.ThreeLetterISORegionName);\n }\n\n this.props.data.checkout.result.updateBillingAddress({\n newBillingAddress,\n additionalProperties: {\n isBillingAddressSameAsShippingAddress: this.isBillingAddressSameAsShipping\n }\n });\n }\n };\n\n /**\n * Reset view.\n */\n private readonly _resetView = () => {\n this._updateCurrentOperation(AddressOperation.Show, this.billingAddress);\n this._updateModuleState();\n };\n\n /**\n * Update current operation.\n * @param operation - Address operation\n * @param selectedAddress - The selected address.\n */\n private readonly _updateCurrentOperation = (operation: AddressOperation, selectedAddress?: Address) => {\n this.currentOperation = operation;\n this.selectedAddress = selectedAddress;\n\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\n this.addUpdateAddress = { ...this.selectedAddress } || {};\n set(this.addUpdateAddress, {\n ThreeLetterISORegionName: this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId\n });\n set(this.addUpdateAddress, { AddressTypeValue: this.addUpdateAddress.AddressTypeValue || this.defaultAddressType });\n }\n };\n\n /**\n * Updates the module state.\n */\n private readonly _updateModuleState = () => {\n if (this.currentOperation === AddressOperation.Show) {\n this.props.moduleState.onReady();\n } else {\n this.props.moduleState.onUpdating();\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\nexport default CheckoutBillingAddress;\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 { IAddressAddItem, IAddressAddUpdateProps } from '../../common/components/address-add';\nimport { IAddressShowItem, IAddressShowProps } from '../../common/components/address-show';\nimport { ICheckoutBillingAddressViewProps } from './checkout-billing-address';\n\n/**\n * Address show component.\n * @param param0 - Root param.\n * @param param0.AddressDetail - Address detail.\n * @param param0.items - IAddressShowItem[].\n * @returns - Address Node.\n */\nconst AddressShow: React.FC = ({ AddressDetail, items }) => {\n return (\n \n {items.map((item: IAddressShowItem) => {\n return <>{item.description};\n })}\n \n );\n};\n\n/**\n * Address Add Update Component.\n * @param param0 - Root param.\n * @param param0.AddressForm - Address form.\n * @param param0.heading - Address Heading.\n * @param param0.items - IAddressAddItem[].\n * @param param0.hasError - Boolean.\n * @param param0.error - IAddressError.\n * @param param0.isShowSaveButton - Boolean.\n * @param param0.saveButton - Save button.\n * @param param0.isShowCancelButton - Boolean.\n * @param param0.cancelButton - Cancel button.\n * @returns - AddressForm Node.\n */\nconst AddressAddUpdate: React.FC = ({\n AddressForm,\n heading,\n items,\n hasError,\n error,\n isShowSaveButton,\n saveButton,\n isShowCancelButton,\n cancelButton\n}) => {\n return (\n \n {heading}\n {items.map((item: IAddressAddItem) => {\n const { AddressItem, key, label, alert, input } = item;\n return (\n \n {label}\n {alert}\n {input}\n \n );\n })}\n {hasError && (\n \n {error.title}\n {error.message}\n \n )}\n {isShowSaveButton && saveButton}\n {isShowCancelButton && cancelButton}\n \n );\n};\n\n/**\n * Checkout Billing Address View Component.\n * @param props - Props.\n * @returns - CheckoutBillingAddress Module.\n */\nconst CheckoutBillingAddressView: React.FC = props => {\n const {\n CheckoutBillingAddress,\n checkoutErrorRef,\n alert,\n viewState,\n heading,\n sameAsShippingCheckbox,\n showAddress,\n showAddOrUpdateAddress\n } = props;\n\n return (\n \n {heading}\n {alert}\n {viewState.isShowSameAsShippingCheckbox && sameAsShippingCheckbox}\n {viewState.isShowAddress && }\n {viewState.isShowAddOrUpdateAddress && }\n \n );\n};\n\nexport default CheckoutBillingAddressView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IImageProps, IImageSettings, Image, IRequestContext } from '@msdyn365-commerce/core';\nimport { CartLine, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { format, isMobile, VariantType } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { ICheckoutShippingAddressResources } from '../checkout-shipping-address.props.autogenerated';\n\n/**\n * The cartline product interface.\n */\nexport interface ICartLineWithProduct {\n cartLine: CartLine;\n product?: SimpleProduct;\n}\n\n/**\n * The checkout shipping cartline interface.\n */\nexport interface ICheckoutShippingCartLineInfo {\n lineId: string;\n imageProps: IImageProps;\n quantity: number;\n}\n\n/**\n * The checkout shipping cartline props.\n */\nexport interface ICheckoutShippingCartLinesProps {\n moduleClassName: string;\n cartLines: ICheckoutShippingCartLineInfo[];\n title: string;\n itemTitle: string;\n resources: ICheckoutShippingAddressResources;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention -- Following as per module\nexport const CheckoutPickupCartLines: React.FC = ({\n moduleClassName,\n cartLines,\n title,\n itemTitle,\n resources\n}) => {\n const context = ({\n gridSettings: {\n xs: { w: 767 },\n sm: { w: 991 },\n md: { w: 1199 },\n lg: { w: 1599 },\n xl: { w: 1600 }\n }\n } as unknown) as IRequestContext;\n const isMobileCheck = isMobile({ variant: VariantType.Browser, context });\n const isMobileView = isMobileCheck === 'xs' || isMobileCheck === 'sm';\n\n if (!ArrayExtensions.hasElements(cartLines)) {\n return null;\n }\n const quantity = 1;\n return (\n
\n
\n
{title}
\n
{itemTitle}
\n
\n
\n {cartLines.map((cartLine: ICheckoutShippingCartLineInfo) => {\n const isShowQty = cartLine.quantity > quantity;\n let className = `${moduleClassName}__group-images-lines-product`;\n const role = 'text';\n if (isShowQty) {\n className = classnames(className, ' product-image-wide');\n }\n return (\n
\n \n {isMobileView\n ? isShowQty && (\n \n {cartLine.quantity}\n
\n )\n : isShowQty && (\n
\n )}\n {!isMobileView && isShowQty && (\n \n {format(resources.productQuantityInfo, cartLine.quantity, cartLine.imageProps.altText)}\n \n )}\n
\n );\n })}\n
\n \n );\n};\n\n/**\n * The checkout shipping cartline image settings.\n */\nexport const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=108&h=108&q=80&m=6&f=jpg', w: 108, h: 108 },\n lg: { q: 'w=108&h=108&q=80&m=6&f=jpg', w: 108, h: 108 },\n xl: { q: 'w=108&h=108&q=80&m=6&f=jpg', w: 108, h: 108 }\n },\n lazyload: true,\n quality: 80\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n Address,\n AddressPurpose,\n CartLine,\n CountryRegionInfo,\n SimpleProduct,\n StateProvinceInfo,\n TenderLine,\n TokenizedPaymentCard\n} from '@msdyn365-commerce/retail-proxy';\nimport { IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\nimport {\n ArrayExtensions,\n getFallbackImageUrl,\n getSimpleProducts,\n ObjectExtensions,\n ProductInput\n} from '@msdyn365-commerce-modules/retail-actions';\nimport { format, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { action, computed, observable, reaction, set } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { AutoSuggest } from '../../common/address-autosuggest';\nimport { IAutoSuggestOptions } from '../../common/address-autosuggest.data';\nimport { AddressCommon } from '../../common/address-common';\nimport { AddressFormat } from '../../common/address-format';\nimport { AddressItemType } from '../../common/address-format.data';\nimport { AddressMetaData } from '../../common/address-meta-data';\nimport { AddressOperation, AddressType, IAddressResource, IAddressResponse } from '../../common/address-module.data';\nimport { AddressAddUpdate, IAddressAddUpdateProps } from '../../common/components/address-add';\nimport { AddressSelect, IAddressSelectProps } from '../../common/components/address-select';\nimport { AddressShow, IAddressShowProps } from '../../common/components/address-show';\nimport { ICheckoutShippingAddressData } from './checkout-shipping-address.data';\nimport { ICheckoutShippingAddressProps } from './checkout-shipping-address.props.autogenerated';\nimport {\n CheckoutPickupCartLines,\n defaultImageSettings,\n ICartLineWithProduct,\n ICheckoutShippingCartLineInfo,\n ICheckoutShippingCartLinesProps\n} from './components/checkout-shipping-cartlines-images';\nimport { CheckoutModule, ErrorLocation } from '@msdyn365-commerce/global-state';\nimport { ErrorComponent } from '../../common/components/address-error-alert';\nimport { focusOnCheckoutError } from '../../checkout-errors/checkout-errors';\n\n/**\n * The checkout address props interface.\n */\nexport interface ICheckoutAddressProps extends ICheckoutShippingAddressProps, IModuleStateProps {}\n\n/**\n * The checkout shipping address view state.\n */\nexport interface ICheckoutShippingAddressViewState {\n isShowAddress: boolean;\n isShowAddresList: boolean;\n isShowAddOrUpdateAddress: boolean;\n}\n\n/**\n * The checkout shipping address state.\n */\nexport interface ICheckoutAddresState {\n shippingGroups: ICartLineWithProduct[];\n errorMessage?: string;\n}\n\n/**\n * The checkout shipping address view props.\n */\nexport interface ICheckoutShippingAddressViewProps extends ICheckoutAddressProps {\n className: string;\n currentOperation: AddressOperation;\n selectedAddress?: Address;\n addUpdateAddress: Address;\n addressListSelectedAddress: Address;\n countryRegionId: string;\n stateProvinceInfo?: StateProvinceInfo[];\n customerAddresses: Address[];\n validationError: object;\n addressActionResponse?: IAddressResponse;\n viewState: ICheckoutShippingAddressViewState;\n CheckoutShippingAddress: IModuleProps;\n isUpdating: boolean;\n hasError: boolean;\n showAddress: IAddressShowProps;\n showAddOrUpdateAddress: IAddressAddUpdateProps;\n cartLineImages?: React.ReactNode;\n showAddressSelect: IAddressSelectProps;\n alert?: React.ReactNode;\n checkoutErrorRef?: React.RefObject;\n showAddOrUpdateAddressHandler?(onSaveHandler?: () => void, onCancelHandler?: () => void): IAddressAddUpdateProps;\n showAddressSelectHandler?(\n onAddAddressHandler?: () => void,\n onSaveHandler?: () => void,\n onCancelHandler?: () => void\n ): IAddressSelectProps;\n}\n\n/**\n * IExpressPaymentDetail interface.\n */\ninterface IExpressPaymentDetails {\n email?: string;\n tenderLine?: TenderLine;\n tokenizedPaymentCard?: TokenizedPaymentCard;\n paymentTenderType?: string;\n address?: Address;\n isExpressCheckoutAppliedInCartPage: boolean;\n isExpressAddressAppliedInCartPage?: boolean;\n}\n\n/**\n *\n * Address component.\n * @extends {React.Component>}\n */\n// @ts-expect-error\n@withModuleState\n@observer\nclass CheckoutShippingAddress extends React.Component {\n @observable private currentOperation: AddressOperation;\n\n @observable private selectedAddress?: Address;\n\n @observable private addUpdateAddress: Address;\n\n @observable private countryRegionId: string = 'USA';\n\n @observable private stateProvinceInfo?: StateProvinceInfo[];\n\n @observable private customerAddresses: Address[] = [];\n\n @observable private validationError: object;\n\n @observable private addressActionResponse?: IAddressResponse;\n\n @observable private isUpdating?: boolean;\n\n @observable private hasError?: boolean;\n\n @observable private addressListSelectedAddress: Address = {};\n\n private readonly addressCommon: AddressCommon;\n\n private addressFormat!: AddressFormat;\n\n private countryRegions: CountryRegionInfo[] = [];\n\n private addressPurposes: AddressPurpose[] = [];\n\n private readonly resources: IAddressResource;\n\n private readonly defaultAddressType: number = 6; // Default to Home\n\n private readonly telemetryContent?: ITelemetryContent;\n\n private autoSuggest?: AutoSuggest;\n\n private readonly multiplePickupStoreSwitchName: string = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n\n private retailMultiplePickUpOptionEnabled?: boolean = false;\n\n private readonly checkoutErrorRef: React.RefObject = React.createRef();\n\n public constructor(props: ICheckoutAddressProps) {\n super(props);\n this.state = { shippingGroups: [] };\n const { context, data, resources, telemetry } = this.props;\n\n this.addUpdateAddress = {};\n this.resources = resources;\n this.currentOperation = AddressOperation.List;\n this.countryRegions = data.countryRegions.result || [];\n this.addressPurposes = data.addressPurposes.result || [];\n this.customerAddresses = data.address.result || [];\n this.stateProvinceInfo = data.countryStates.result || [];\n this.addressCommon = new AddressCommon(context, resources, telemetry);\n this.addressFormat = new AddressFormat(\n this.countryRegions,\n new AddressMetaData({ ...resources }, this._getAddressFormatExcludeList()),\n this.addressPurposes\n );\n this.validationError = {};\n this.retailMultiplePickUpOptionEnabled = data.featureState.result?.find(\n feature => feature.Name === this.multiplePickupStoreSwitchName\n )?.IsEnabled;\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public async componentDidMount(): Promise {\n const {\n context: {\n telemetry,\n actionContext: {\n requestContext: { channel }\n }\n },\n config: { autoSuggestionEnabled, autoSuggestOptions },\n resources\n } = this.props;\n\n // Initializing data props\n this._dataInitialize(this.props);\n\n this.addressFormat = new AddressFormat(\n this.countryRegions,\n new AddressMetaData({ ...resources }, this._getAddressFormatExcludeList()),\n this.addressPurposes\n );\n\n this.props.data.checkout.then(() => {\n this._setDefaultCountryRegionId();\n this._initModuleState();\n });\n\n reaction(\n () => this.countryRegionId,\n () => {\n this._getStateProvinces();\n }\n );\n\n reaction(\n () => this.currentOperation,\n () => {\n this._getStateProvinces();\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.shippingAddressFromExpressCheckout,\n () => {\n if (!this.expressPaymentDetailsFromCartPage && this._canShip()) {\n let address = this.props.data.checkout.result?.shippingAddressFromExpressCheckout;\n\n if (address?.TwoLetterISORegionName) {\n const threeLetterIsoRegionName = this.getThreeLetterIsoRegionName(address.TwoLetterISORegionName);\n\n address = { ...address, ThreeLetterISORegionName: threeLetterIsoRegionName };\n\n if (threeLetterIsoRegionName && threeLetterIsoRegionName !== this.countryRegionId) {\n this._onCountryChange(threeLetterIsoRegionName);\n }\n }\n\n this._updateCurrentOperation(AddressOperation.Add, address);\n this._onAddressAddUpdateSubmit();\n }\n }\n );\n\n if (autoSuggestionEnabled) {\n if (channel && !channel.BingMapsApiKey) {\n telemetry.error('BingMapsApiKey is missing.');\n return;\n }\n\n if (channel && !channel.BingMapsEnabled) {\n telemetry.error('Map is disabled from HQ.');\n return;\n }\n\n const options: IAutoSuggestOptions = { ...autoSuggestOptions };\n this.autoSuggest = new AutoSuggest(\n telemetry,\n options,\n channel?.BingMapsApiKey,\n channel?.ChannelCountryRegionISOCode,\n channel?.DefaultLanguageId\n );\n\n // Customer doesn't have any address. Then add view will be loaded directly. Code for the same to handle that\n if (\n this.props.data.storeSelectorStateManager.result &&\n (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)\n ) {\n await this.autoSuggest._loadMapAPI(await this.props.data.storeSelectorStateManager);\n }\n\n reaction(\n () =>\n this.props.data.storeSelectorStateManager.result?.loadMapApi &&\n (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update),\n async () => {\n await this.autoSuggest?._loadMapAPI(await this.props.data.storeSelectorStateManager);\n }\n );\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.isMapApiLoaded,\n async () => {\n await this._attachMapAutoSuggest();\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.CheckoutShippingAddress &&\n checkoutError.errorMessage\n ) {\n this._setErrorMessage(checkoutError.errorMessage);\n }\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.checkoutErrorFocus,\n checkoutErrorFocus => {\n if (checkoutErrorFocus === CheckoutModule.CheckoutShippingAddress) {\n focusOnCheckoutError(this.checkoutErrorRef, this.props.context.actionContext);\n }\n }\n );\n }\n\n await this._initPickupGroup();\n }\n\n public async componentDidUpdate(): Promise {\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\n if (this.props.data.storeSelectorStateManager.result?.isMapApiLoaded) {\n await this._attachMapAutoSuggest();\n }\n } else {\n this.autoSuggest?.disposeAutoSuggest();\n }\n }\n\n public shouldComponentUpdate(nextProps: ICheckoutAddressProps, nextState: ICheckoutAddresState): 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 if (!this._canShip()) {\n return null;\n }\n\n const {\n config,\n context,\n renderView,\n resources,\n moduleState: { hasError }\n } = this.props;\n const { headingImages, itemsText, singleItemText, errorMessageTitle } = resources;\n const { imageSettings } = config;\n\n // Line images\n const cartlines: ICheckoutShippingCartLineInfo[] = this.state.shippingGroups\n .filter(x => !ObjectExtensions.isNullOrUndefined(x.product))\n .map(line => ({\n lineId: line.cartLine.LineId ?? '',\n imageProps: {\n requestContext: context.actionContext.requestContext,\n className: 'ms-checkout-shipping-address__group-images-lines-line-image',\n altText: line.product?.Name,\n src: line.product?.PrimaryImageUrl ?? '',\n fallBackSrc: getFallbackImageUrl(\n line.product?.ItemId,\n context.actionContext.requestContext.apiSettings,\n context.request.app?.config?.OmniChannelMedia\n ),\n gridSettings: context.request.gridSettings!,\n imageSettings: imageSettings ?? defaultImageSettings,\n loadFailureBehavior: 'empty'\n },\n quantity: line.cartLine.Quantity ?? 0\n }));\n\n const numberOfCartLines = this._countItems(cartlines);\n const itemText = numberOfCartLines > 1 ? itemsText : singleItemText;\n const itemTitle = `(${format(itemText, numberOfCartLines)})`;\n\n const lineImageProps: ICheckoutShippingCartLinesProps = {\n moduleClassName: 'ms-checkout-shipping-address',\n cartLines: cartlines.filter(x => !ObjectExtensions.isNullOrUndefined(x)),\n itemTitle: itemTitle,\n title: headingImages,\n resources: this.props.resources\n };\n\n const cartLineImages: React.ReactNode = ;\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n const { featureState } = this.props.data;\n const isRetailMultiplePickUpOptionEnabled = featureState.result?.find(feature => feature.Name === multiplePickupStoreSwitchName)\n ?.IsEnabled;\n\n const errorMessage = this.state.errorMessage;\n\n const viewProps = {\n ...this.props,\n currentOperation: this.currentOperation,\n selectedAddress: this.selectedAddress,\n addUpdateAddress: this.addUpdateAddress,\n addressListSelectedAddress: this.addressListSelectedAddress,\n countryRegionId: this.countryRegionId,\n stateProvinceInfo: this.stateProvinceInfo,\n customerAddresses: this.customerAddresses,\n validationError: this.validationError,\n addressActionResponse: this.addressActionResponse,\n isUpdating: this.isUpdating,\n hasError: this.hasError,\n className: config.className,\n viewState: {\n isShowAddress: this.currentOperation === AddressOperation.Show && this.selectedAddress,\n isShowAddresList: this.currentOperation === AddressOperation.List && this.customerAddresses.length > 0,\n isShowAddOrUpdateAddress:\n this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update\n },\n CheckoutShippingAddress: {\n moduleProps: this.props,\n className: classnames('ms-checkout-shipping-address', config.className)\n },\n showAddress: this._renderShowAddress(),\n alert: hasError && errorMessage && ,\n checkoutErrorRef: this.checkoutErrorRef,\n\n /**\n * Show address select.\n * @param onAddAddressHandler - On add address click function.\n * @param onSaveHandler - On save click function.\n * @param onCancelHandler - On cancel click function.\n * @returns - Renders select address.\n */\n showAddressSelectHandler: (onAddAddressHandler?: () => void, onSaveHandler?: () => void, onCancelHandler?: () => void) =>\n this._renderSelectAddress(onAddAddressHandler, onSaveHandler, onCancelHandler),\n\n /**\n * Show add/update address.\n * @param onSaveHandler - On save click function.\n * @param onCancelHandler - On cancel click function.\n * @returns - Renders select address.\n */\n showAddOrUpdateAddressHandler: (onSaveHandler?: () => void, onCancelHandler?: () => void) =>\n this._renderAddOrUpdateAddress(onSaveHandler, onCancelHandler),\n showAddOrUpdateAddress: this._renderAddOrUpdateAddress(),\n cartLineImages: isRetailMultiplePickUpOptionEnabled ? cartLineImages : undefined,\n showAddressSelect: this._renderSelectAddress()\n };\n\n return renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Initialize pickup group.\n */\n @action\n private readonly _initPickupGroup = async (): Promise => {\n const pickupCartLines: CartLine[] = this._getCartLinesforDelivery();\n const cartLines: ICartLineWithProduct[] = [];\n\n try {\n const products = await this._getProductsByCartLines(\n this.props.data.checkout.result?.checkoutCart.cart.ChannelId || 0,\n pickupCartLines\n );\n for (const line of pickupCartLines) {\n const product: SimpleProduct | undefined = products.find(x => x.RecordId === line.ProductId);\n cartLines.push({ cartLine: line, product });\n }\n this.setState({ shippingGroups: cartLines });\n } catch (error) {\n this.props.telemetry.error(error);\n this.setState({ shippingGroups: [] });\n }\n };\n\n /**\n * On suggestion selected.\n * @param result - Suggestion result interface.\n */\n @action\n private readonly _onSuggestionSelected = async (result: Microsoft.Maps.ISuggestionResult): Promise => {\n this._clearAddressFields();\n const address = this.addressFormat.getTranformedAddress(result, this.stateProvinceInfo);\n const timeout = 0;\n set(this.addUpdateAddress, { Street: '' });\n set(this.addUpdateAddress, { ZipCode: address.ZipCode });\n set(this.addUpdateAddress, { CountyName: address.CountyName });\n set(this.addUpdateAddress, { City: address.City });\n set(this.addUpdateAddress, { State: address.State });\n set(this.addUpdateAddress, { DistrictName: address.DistrictName });\n set(this.addUpdateAddress, { FullAddress: address.FullAddress });\n\n // Bing autosuggest put the complete address in the Street input box. Updating the street input box to show only street address.\n setTimeout(() => {\n set(this.addUpdateAddress, { Street: address.Street });\n }, timeout);\n };\n\n /**\n * Method to clear address fields.\n */\n @action\n private readonly _clearAddressFields = (): void => {\n const addressFormatItem = this.addressFormat.getAddressFormat(\n this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId\n );\n for (const formatAddress of addressFormatItem) {\n if (\n this.addUpdateAddress[formatAddress.name] !== undefined &&\n !this.autoSuggest?.excludedAddressFields.includes(formatAddress.name)\n ) {\n this.addressFormat[formatAddress.name] = '';\n }\n }\n this._clearValidation();\n };\n\n /**\n * Method to clear validation.\n */\n @action\n private readonly _clearValidation = (): void => {\n this.validationError = {};\n };\n\n public get expressPaymentDetailsFromCartPage(): IExpressPaymentDetails | null {\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) as IExpressPaymentDetails) : null;\n }\n\n /**\n * Method data initialization.\n * @param props -The checkout address properties.\n */\n private readonly _dataInitialize = (props: ICheckoutAddressProps): void => {\n const { data } = props;\n\n reaction(\n () => data.countryRegions.result,\n () => {\n this.countryRegions = data.countryRegions.result ?? [];\n }\n );\n\n reaction(\n () => data.addressPurposes.result,\n () => {\n this.addressPurposes = data.addressPurposes.result ?? [];\n }\n );\n\n reaction(\n () => data.address.result,\n () => {\n this.customerAddresses = data.address.result ?? [];\n }\n );\n\n reaction(\n () => data.countryStates.result,\n () => {\n this.stateProvinceInfo = data.countryStates.result ?? [];\n }\n );\n\n reaction(\n () => data.featureState.result,\n () => {\n this.retailMultiplePickUpOptionEnabled = data.featureState.result?.find(\n feature => feature.Name === this.multiplePickupStoreSwitchName\n )?.IsEnabled;\n }\n );\n };\n\n /**\n * Method to get cart lines for delivery.\n * @returns The cart line collection.\n */\n private readonly _getCartLinesforDelivery = (): CartLine[] => {\n return this.props.data.checkout.result?.checkoutCart.cart.CartLines?.filter(line => this._isDelivery(line)) ?? [];\n };\n\n /**\n * Method to check cart line for delivery.\n * @param line -The cart line.\n * @returns True/false as per cart line delivery mode.\n */\n private readonly _isDelivery = (line: CartLine): boolean => {\n return this._isNotPickupMode(line.DeliveryMode) && (line.FulfillmentStoreId === undefined || line.FulfillmentStoreId === '');\n };\n\n /**\n * Method to check cart line for delivery.\n * @param deliveryMode -The delivery mode.\n * @returns True/false as per cart line delivery mode.\n */\n private readonly _isNotPickupMode = (deliveryMode: string | undefined): boolean => {\n const pickupDeliveryModeCode = this.props.context.request.channel?.PickupDeliveryModeCode;\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n const { channelDeliveryOptionConfig, featureState } = this.props.data;\n const retailMultiplePickUpOptionEnabled = featureState.result?.find(feature => feature.Name === multiplePickupStoreSwitchName)\n ?.IsEnabled;\n if (retailMultiplePickUpOptionEnabled && deliveryMode !== undefined) {\n const pickupDeliveryMode = channelDeliveryOptionConfig.result?.PickupDeliveryModeCodes?.some(\n pickupMode => pickupMode !== deliveryMode\n );\n return pickupDeliveryMode !== undefined ? pickupDeliveryMode : false;\n }\n return deliveryMode !== undefined && pickupDeliveryModeCode !== undefined && deliveryMode !== pickupDeliveryModeCode;\n };\n\n /**\n * Method to check cart line for delivery.\n * @param channelId - The channelId.\n * @param cartLines - Cart line collections.\n * @returns Collection of SimpleProduct.\n */\n private readonly _getProductsByCartLines = async (channelId: number, cartLines: CartLine[]): Promise => {\n const actionContext = this.props.context.actionContext;\n const productInputs = cartLines\n .filter(line => !ObjectExtensions.isNullOrUndefined(line.ProductId))\n .map(\n line =>\n new ProductInput(\n line.ProductId || 0,\n actionContext.requestContext.apiSettings,\n channelId,\n undefined,\n actionContext.requestContext,\n line.CatalogId || 0\n )\n );\n return getSimpleProducts(productInputs, actionContext);\n };\n\n /**\n * Method to render add/update address.\n * @param onSaveHandler -- Handles onsave functionality.\n * @param onCancelHandler -- Handles oncancel functionality.\n * @returns Address app/update props.\n */\n private readonly _renderAddOrUpdateAddress = (onSaveHandler?: () => void, onCancelHandler?: () => void): IAddressAddUpdateProps => {\n const addressFormat =\n this.currentOperation === AddressOperation.Add && this.addressCommon.isAuthenticatedFlow()\n ? this.addressFormat\n : this.addressFormat;\n\n /**\n * On Cancel Button Function.\n */\n const onCancelButtonHandler = () => {\n this._resetView();\n onCancelHandler?.();\n };\n return AddressAddUpdate({\n isUpdating: this.isUpdating,\n resources: this.resources,\n addressType: AddressType.Shipping,\n addressFormat: addressFormat.getAddressFormat(this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId),\n defaultCountryRegionId: this.countryRegionId,\n defaultAddressType: this.defaultAddressType,\n selectedAddress: this.addUpdateAddress,\n validationError: this.validationError,\n hasError: this.hasError,\n addressActionResponse: this.addressActionResponse,\n telemetryContent: this.telemetryContent,\n dropdownDisplayData: addressFormat.getPrefilledAddressDropdownData(\n this.resources.addressStateDefaultSelectionText,\n this.stateProvinceInfo\n ),\n onInputChange: this._onAddressAddUpdateInputChange,\n onDropdownChange: this._onAddressAddUpdateDropdownChange,\n hasExternalSubmitGroup: this.props.moduleState.hasExternalSubmitGroup,\n\n /**\n * On Save Function.\n */\n onSave: () => {\n this.onSubmit();\n onSaveHandler?.();\n },\n\n onCancel: !this.selectedAddress && !this.addressCommon.isAuthenticatedFlow() ? () => {} : onCancelButtonHandler\n });\n };\n\n /**\n * Method to render select address.\n * @param onAddAddressHandler - To handle add address button click.\n * @param onSaveHandler - To handle save button click.\n * @param onCancelHandler - To handle cancel button click.\n * @returns Select address props.\n */\n private readonly _renderSelectAddress = (\n onAddAddressHandler?: () => void,\n onSaveHandler?: () => void,\n onCancelHandler?: () => void\n ): IAddressSelectProps => {\n /**\n * On Cancel Button Function.\n */\n const onCancelButtonHandler = () => {\n this._resetView();\n onCancelHandler?.();\n };\n return AddressSelect({\n addressFormat: this.addressFormat,\n addresses: this.customerAddresses,\n resources: this.resources,\n addressPurposes: this.addressPurposes,\n selectedAddress: this.addressListSelectedAddress,\n onAddressOptionChange: this._onAddressOptionChange,\n hasExternalSubmitGroup: this.props.moduleState.hasExternalSubmitGroup,\n telemetryContent: this.telemetryContent,\n\n /**\n * On Add Address Function.\n */\n onAddAddress: () => {\n this._goToAddAddress();\n onAddAddressHandler?.();\n },\n\n /**\n * On Save Function.\n */\n onSave: () => {\n this._onSelectAddress();\n onSaveHandler?.();\n },\n\n onCancel: !this.selectedAddress ? () => {} : onCancelButtonHandler\n });\n };\n\n /**\n * Method to render show address.\n * @returns Show address props.\n */\n private _renderShowAddress(): IAddressShowProps | null {\n if (this.selectedAddress) {\n return AddressShow({\n address: this.selectedAddress,\n addressFormat: this.addressFormat.getAddressFormat(this.selectedAddress.ThreeLetterISORegionName || ''),\n addressPurposes: this.addressPurposes\n });\n }\n\n return null;\n }\n\n /**\n * Method to render map auto suggest.\n */\n private readonly _attachMapAutoSuggest = async (): Promise => {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (storeSelectorStateManager?.isMapApiLoaded) {\n this.autoSuggest?.attachAutoSuggest('#shipping_addressstreet', '#shipping_addressstreet_container', this._onSuggestionSelected);\n }\n };\n\n /**\n * Method gets called on address option change.\n * @param event - To get current option.\n */\n private readonly _onAddressOptionChange = (event: React.ChangeEvent) => {\n const addressRecordId = event.currentTarget.value;\n const selectedAddress = this.customerAddresses.find(address => (address.RecordId || '').toString() === addressRecordId);\n if (selectedAddress) {\n this.addressListSelectedAddress = selectedAddress;\n }\n };\n\n /**\n * Method to render map auto suggest.\n * @param name - Address name field.\n * @param value - Address name value field.\n */\n private readonly onAddressAddUpdate = (name: string, value: string | boolean) => {\n set(this.addUpdateAddress, { [name]: value });\n this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId, name);\n };\n\n /**\n * Method to get called on address update change.\n * @param event - Input element.\n */\n private readonly _onAddressAddUpdateInputChange = (event: React.ChangeEvent): void => {\n if (event.target.type === 'checkbox') {\n this.onAddressAddUpdate(event.target.name, event.target.checked);\n } else {\n const value = (event.target.value || '').replace(new RegExp('[<>]', 'gi'), '');\n this.onAddressAddUpdate(event.target.name, value);\n }\n };\n\n /**\n * Method to get called on address update dropdown change.\n * @param event - Select element.\n */\n private readonly _onAddressAddUpdateDropdownChange = (event: React.ChangeEvent): void => {\n this.onAddressAddUpdate(event.target.name, event.target.value);\n\n if (event.target.name === AddressItemType[AddressItemType.ThreeLetterISORegionName]) {\n this._onCountryChange(event.target.value);\n }\n };\n\n /**\n * Method to get called on address update submit.\n */\n private readonly _onAddressAddUpdateSubmit = (): void => {\n if (!this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId)) {\n return;\n }\n\n let response: Promise;\n if (this.addressCommon.isAuthenticatedFlow() && this._isNewAddress(this.addUpdateAddress)) {\n response =\n this.currentOperation === AddressOperation.Update\n ? this.addressCommon.updateCustomerAddress(this.addUpdateAddress)\n : this.addressCommon.addCustomerAddress(this.addUpdateAddress);\n } else {\n response = Promise.resolve({ address: this.addUpdateAddress });\n }\n\n this.isUpdating = true;\n this._updateModuleState();\n\n response.then(\n (result: IAddressResponse) => {\n this.isUpdating = false;\n\n if (result.address) {\n this.hasError = false;\n this._clearError();\n if (result.customerAddresses) {\n this._onAddOrUpdateSuccess({ customerAddresses: result.customerAddresses, address: result.address });\n } else {\n this._onAddOrUpdateSuccess({ address: result.address });\n }\n } else {\n this.hasError = true;\n this.addressActionResponse = result;\n this._updateModuleState();\n }\n },\n () => {\n this.hasError = true;\n this.isUpdating = false;\n this._updateModuleState();\n }\n );\n };\n\n /**\n * Method to get called on country change.\n * @param countryRegionId - Country region id.\n */\n private readonly _onCountryChange = (countryRegionId: string) => {\n this.countryRegionId = countryRegionId;\n const twoLetterIsoRegionName = this.addressFormat.getTwoLetterISORegionName(countryRegionId);\n set(this.addUpdateAddress, { ThreeLetterISORegionName: countryRegionId });\n set(this.addUpdateAddress, { TwoLetterISORegionName: twoLetterIsoRegionName });\n this.autoSuggest?.changeAutoSuggestionCountryCode(twoLetterIsoRegionName);\n this._clearAddressFields();\n };\n\n /**\n * Method to get all address format exclude list.\n * @returns Collection of address items.\n */\n private readonly _getAddressFormatExcludeList = (): AddressItemType[] => {\n const { config } = this.props;\n const addressFormatExcludeList: AddressItemType[] = [];\n\n if (!config.showAddressType) {\n addressFormatExcludeList.push(AddressItemType.AddressTypeValue);\n }\n\n addressFormatExcludeList.push(AddressItemType.IsPrimary);\n\n return addressFormatExcludeList;\n };\n\n /**\n * Method to get all state/provinces.\n */\n private readonly _getStateProvinces = (): void => {\n if (\n !this.countryRegionId ||\n !(this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)\n ) {\n return;\n }\n\n this.addressCommon.getStateProvinces(this.countryRegionId).then((result: StateProvinceInfo[]) => {\n const stateInfo = result.some(state => state.StateId === this.addUpdateAddress.State);\n\n // Reset state if selected state not found in the list.\n if (!stateInfo) {\n set(this.addUpdateAddress, { State: '' });\n }\n\n this.stateProvinceInfo = result;\n });\n };\n\n /**\n * Method to set default country region id.\n */\n private _setDefaultCountryRegionId(): void {\n const { request } = this.props.context;\n const market = request.channel?.ChannelCountryRegionISOCode;\n this.countryRegionId = this.addressCommon.getDefaultCountryRegionId(this.countryRegionId, this.countryRegions, market);\n }\n\n /**\n * Method to get default address region id.\n * @returns - Address object from existing addresses.\n */\n private readonly _getDefaultAddress = (): Address | undefined => {\n if (this.customerAddresses) {\n const primaryAddress = this.customerAddresses.find((address: Address) => address.IsPrimary);\n return primaryAddress || (this.customerAddresses.length > 0 ? this.customerAddresses[0] : undefined);\n }\n return undefined;\n };\n\n /**\n * Method to get address from express payment details from cart page.\n * @returns - Address.\n */\n private readonly _getAddressFromCartExpressPaymentDetails = (): Address | undefined => {\n if (this.expressPaymentDetailsFromCartPage) {\n const { tokenizedPaymentCard, address, isExpressAddressAppliedInCartPage } = this.expressPaymentDetailsFromCartPage;\n\n let addressFromCartExpress: Address | undefined;\n\n if (isExpressAddressAppliedInCartPage) {\n addressFromCartExpress = address ? this.getExpressAddress(address) : undefined;\n } else {\n addressFromCartExpress = tokenizedPaymentCard ? this.getAddressFromTokenizedPaymentCard(tokenizedPaymentCard) : undefined;\n }\n\n return addressFromCartExpress;\n }\n return undefined;\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 twoLetterIsoRegionName = tokenizedPaymentCard.Country;\n\n const threeLetterIsoRegionName = twoLetterIsoRegionName ? this.getThreeLetterIsoRegionName(twoLetterIsoRegionName) : undefined;\n\n if (threeLetterIsoRegionName && threeLetterIsoRegionName !== this.countryRegionId) {\n this._onCountryChange(threeLetterIsoRegionName);\n }\n\n const address: Address = {\n TwoLetterISORegionName: twoLetterIsoRegionName,\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 ThreeLetterISORegionName: threeLetterIsoRegionName,\n AddressTypeValue: this.defaultAddressType\n };\n\n return address;\n };\n\n /**\n * Get address from expressAddress.\n * @param expressAddress -- The expressAddress.\n * @returns The address.\n */\n private readonly getExpressAddress = (expressAddress: Address): Address => {\n const twoLetterIsoRegionName = expressAddress.TwoLetterISORegionName;\n\n const threeLetterIsoRegionName = twoLetterIsoRegionName ? this.getThreeLetterIsoRegionName(twoLetterIsoRegionName) : undefined;\n\n if (threeLetterIsoRegionName && threeLetterIsoRegionName !== this.countryRegionId) {\n this._onCountryChange(threeLetterIsoRegionName);\n }\n\n const address: Address = {\n ...expressAddress,\n ThreeLetterISORegionName: threeLetterIsoRegionName,\n AddressTypeValue: this.defaultAddressType\n };\n\n return address;\n };\n\n /**\n * Get three letter ISO region name from two letter ISO region name.\n * @param twoLetterIsoRegionName -- The three letter ISO region name.\n * @returns The three letter ISO region name.\n */\n private readonly getThreeLetterIsoRegionName = (twoLetterIsoRegionName: string): string | undefined => {\n const countryRegion = this.countryRegions.find(country => {\n return country.ISOCode?.toLowerCase() === twoLetterIsoRegionName.toLowerCase();\n });\n\n return countryRegion?.CountryRegionId;\n };\n\n /**\n * Method to initialize all module state.\n */\n private readonly _initModuleState = (): void => {\n this.props.moduleState.init({\n status: this._canShip() ? 'updating' : 'disabled',\n onEdit: this.onEdit,\n onCancel: this.onCancel,\n onSubmit: this.onSubmit\n });\n\n const checkoutState = this.props.data.checkout.result;\n\n if (this._canShip()) {\n let defaultAddress;\n const shippingCartLines: CartLine[] = this._getCartLinesforDelivery();\n\n if (checkoutState?.checkoutCart.cart.ShippingAddress) {\n defaultAddress = checkoutState.checkoutCart.cart.ShippingAddress;\n } else if (\n ArrayExtensions.hasElements(shippingCartLines) &&\n shippingCartLines[0].ShippingAddress !== undefined &&\n shippingCartLines[0].ShippingAddress.FullAddress !== ''\n ) {\n defaultAddress = shippingCartLines[0].ShippingAddress;\n } else if (this._getAddressFromCartExpressPaymentDetails()) {\n defaultAddress = this._getAddressFromCartExpressPaymentDetails();\n } else if (this._getDefaultAddress()) {\n defaultAddress = this._getDefaultAddress();\n } else {\n defaultAddress = checkoutState?.isExpressCheckoutApplied ? checkoutState.shippingAddressFromExpressCheckout : undefined;\n }\n\n if (defaultAddress && !this.addressCommon.isEmpty(defaultAddress)) {\n this._updateCurrentOperation(AddressOperation.Show, defaultAddress);\n this._setShippingAddress(defaultAddress);\n this._updateModuleState();\n checkoutState?.updateHasShippingAddress({ newHasShippingAddress: true });\n } else {\n this._updateCurrentOperation(AddressOperation.Add);\n checkoutState?.updateHasShippingAddress({ newHasShippingAddress: false });\n }\n }\n };\n\n /**\n * Method get called on submit address.\n */\n private readonly onSubmit = (): void => {\n switch (this.currentOperation) {\n case AddressOperation.Add:\n case AddressOperation.Update:\n this.props.telemetry.information('Shipping address submit for Add or Update operation.');\n this._onAddressAddUpdateSubmit();\n break;\n case AddressOperation.List:\n this.props.telemetry.information('Shipping address submit for List operation.');\n this._onSelectAddress();\n break;\n default:\n this.props.telemetry.error('Invalid operation');\n }\n };\n\n /**\n * Method get called on cancel.\n */\n private readonly onCancel = (): void => {\n switch (this.currentOperation) {\n case AddressOperation.Add:\n case AddressOperation.Update:\n this.props.telemetry.information('Shipping address cancel for Add or Update operation.');\n this._clearAddressFields();\n if (!(!this.selectedAddress && !this.addressCommon.isAuthenticatedFlow())) {\n this._resetView();\n }\n\n break;\n case AddressOperation.List:\n this.props.telemetry.information('Shipping address cancel for List operation.');\n if (this.selectedAddress) {\n this._resetView();\n }\n break;\n default:\n this.props.telemetry.error('Invalid operation');\n }\n };\n\n /**\n * Method get called on edit address.\n */\n private readonly onEdit = (): void => {\n this.props.telemetry.information('Shipping address onEdit is called.');\n\n if (this.addressCommon.isAuthenticatedFlow() && this.shippingAddress) {\n this._updateCurrentOperation(AddressOperation.List, this.shippingAddress);\n } else if (this.shippingAddress) {\n this._updateCurrentOperation(AddressOperation.Update, this.shippingAddress);\n }\n\n this._updateModuleState();\n };\n\n /**\n * Method to check if checkout cartlines are available fro shipping.\n * @returns - True/false as per the delivery mode.\n */\n private readonly _canShip = (): boolean => {\n const { checkout, channelDeliveryOptionConfig } = this.props.data;\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 if (!checkout.result || !request.channel || checkout.result.checkoutCart.isEmpty || checkout.result.checkoutCart.hasInvoiceLine) {\n return false;\n }\n\n // @ts-expect-error: Type-checker not realizing above request.channel check\n return this.retailMultiplePickUpOptionEnabled\n ? checkout.result.checkoutCart.cart.CartLines?.some(cartLine =>\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\n ? cartLine.DeliveryMode !==\n channelDeliveryOptionConfig.result?.PickupDeliveryModeCodes?.find(\n deliveryMode => deliveryMode === cartLine.DeliveryMode\n ) && cartLine.DeliveryMode !== emailDeliveryModeCode\n : cartLine\n )\n : checkout.result.checkoutCart.cart.CartLines?.some(cartLine =>\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\n ? cartLine.DeliveryMode !== pickupDeliveryModeCode && cartLine.DeliveryMode !== emailDeliveryModeCode\n : cartLine\n );\n };\n\n /**\n * Method get called on select address.\n */\n private readonly _onSelectAddress = () => {\n this._updateCurrentOperation(AddressOperation.Show, this.addressListSelectedAddress);\n this._setShippingAddress(this.addressListSelectedAddress);\n this._updateModuleState();\n };\n\n /**\n * Method get called on goto add address.\n */\n private readonly _goToAddAddress = () => {\n this._setDefaultCountryRegionId();\n this._updateCurrentOperation(AddressOperation.Add);\n };\n\n /**\n * Method get called on add/update success.\n * @param response - Retail api response.\n */\n private readonly _onAddOrUpdateSuccess = (response: IAddressResponse) => {\n if (response.customerAddresses) {\n this.customerAddresses = response.customerAddresses;\n }\n\n if (response.address) {\n this._updateCurrentOperation(AddressOperation.Show, response.address);\n this._setShippingAddress(response.address);\n this._updateModuleState();\n }\n };\n\n /**\n * Method get called on set Shipping Address.\n * @param address - Retail Api address result.\n */\n private readonly _setShippingAddress = (address: Address): void => {\n if (this.props.data.checkout.result) {\n const newShippingAddress = { ...address };\n\n if (address.ThreeLetterISORegionName && !newShippingAddress.TwoLetterISORegionName) {\n newShippingAddress.TwoLetterISORegionName = this.addressFormat.getTwoLetterISORegionName(address.ThreeLetterISORegionName);\n }\n\n this.props.data.checkout.result.updateShippingAddress({ newShippingAddress });\n this.props.data.checkout.result.checkoutCart.updateShippingAddress({ newShippingAddress }).catch(error => {\n this.props.telemetry.error(error);\n });\n }\n };\n\n @computed private get shippingAddress(): Address | undefined {\n return this.props.data.checkout.result?.shippingAddress;\n }\n\n /**\n * Method get called on reset view.\n */\n private readonly _resetView = (): void => {\n switch (this.currentOperation) {\n case AddressOperation.Add:\n case AddressOperation.Update:\n this._updateCurrentOperation(\n this.addressCommon.isAuthenticatedFlow() ? AddressOperation.List : AddressOperation.Show,\n this.shippingAddress\n );\n break;\n default:\n this._updateCurrentOperation(AddressOperation.Show, this.shippingAddress);\n }\n this._updateModuleState();\n };\n\n /**\n * Update current operation.\n * @param operation - The address operation.\n * @param selectedAddress - The selected address.\n */\n private readonly _updateCurrentOperation = (operation: AddressOperation, selectedAddress?: Address) => {\n this.currentOperation = operation;\n this.selectedAddress = selectedAddress;\n\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\n this.addUpdateAddress = { ...this.selectedAddress } || {};\n set(this.addUpdateAddress, {\n ThreeLetterISORegionName: this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId\n });\n set(this.addUpdateAddress, {\n AddressTypeValue: this.addUpdateAddress.AddressTypeValue || this.defaultAddressType\n });\n } else if (this.currentOperation === AddressOperation.List) {\n this.addressListSelectedAddress = { ...this.selectedAddress } || {};\n }\n };\n\n /**\n * Update module state.\n */\n private readonly _updateModuleState = () => {\n if (this.currentOperation === AddressOperation.Show) {\n this.props.moduleState.onReady();\n } else if (this.isUpdating) {\n this.props.moduleState.onPending();\n } else {\n this.props.moduleState.onUpdating();\n }\n };\n\n /**\n * Method to check if the customer already has the address.\n * @param address - The address.\n */\n private readonly _isNewAddress = (address: Address): boolean => {\n for (const existingAddress of this.customerAddresses) {\n if (\n (address.Name ?? '') === existingAddress.Name &&\n (address.Street ?? '') === existingAddress.Street &&\n (address.StreetNumber ?? '') === existingAddress.StreetNumber &&\n (address.City ?? '') === existingAddress.City &&\n (address.State ?? '') === existingAddress.State &&\n (address.ZipCode ?? '') === existingAddress.ZipCode &&\n (address.Phone ?? '') === existingAddress.Phone &&\n (address.ThreeLetterISORegionName ?? '') === existingAddress.ThreeLetterISORegionName &&\n (address.AddressTypeValue ?? '') === existingAddress.AddressTypeValue\n ) {\n return false;\n }\n }\n\n return true;\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 private readonly _clearError = (): void => {\n this.props.moduleState.setHasError(false);\n this.setState({\n errorMessage: ''\n });\n };\n\n /**\n * Returns count of products.\n * @param cartLine - The checkout shipping cart line info props.\n * @returns Number of products.\n */\n private readonly _countItems = (cartlines: ICheckoutShippingCartLineInfo[]): number => {\n return cartlines.reduce((count, line) => {\n return count + (line.quantity || 0);\n }, 0);\n };\n}\n\nexport default CheckoutShippingAddress;\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 { IAddressAddItem, IAddressAddUpdateProps } from '../../common/components/address-add';\nimport { IAddressSelectItem, IAddressSelectProps } from '../../common/components/address-select';\nimport { IAddressShowItem, IAddressShowProps } from '../../common/components/address-show';\nimport { ICheckoutShippingAddressViewProps } from './checkout-shipping-address';\n\n/**\n * Address show component.\n * @param param0 - Root param.\n * @param param0.AddressDetail - Address detail.\n * @param param0.items - IAddressShowItem[].\n * @returns - Address Node.\n */\nconst AddressShow: React.FC = ({ AddressDetail, items }) => {\n return (\n \n {items.map((item: IAddressShowItem) => {\n return <>{item.description};\n })}\n \n );\n};\n\n/**\n * Address Select Component.\n * @param param0 - Root param.\n * @param param0.SelectAddress - Select address.\n * @param param0.addButton - Add button.\n * @param param0.items - IAddressSelectItem[].\n * @param param0.isShowSaveButton - Boolean.\n * @param param0.saveButton - Save button.\n * @param param0.isShowCancelButton - Boolean.\n * @param param0.cancelButton - Cancel button.\n * @returns - SelectAddress Node.\n */\nconst AddressSelect: React.FC = ({\n SelectAddress,\n addButton,\n items,\n isShowSaveButton,\n saveButton,\n isShowCancelButton,\n cancelButton\n}) => {\n return (\n \n {addButton}\n {items.map((item: IAddressSelectItem) => {\n const SelectItem = item.SelectItem;\n return (\n \n {item.input}\n \n \n );\n })}\n {isShowSaveButton && saveButton}\n {isShowCancelButton && cancelButton}\n \n );\n};\n\n/**\n * Address Add Update Component.\n * @param param0 - Root param.\n * @param param0.AddressForm - Address form.\n * @param param0.heading - Address heading.\n * @param param0.items - IAddressAddItem[].\n * @param param0.hasError - Boolean.\n * @param param0.error - Error message.\n * @param param0.isShowSaveButton - Boolean.\n * @param param0.saveButton - Save button.\n * @param param0.isShowCancelButton - Boolean.\n * @param param0.cancelButton - Cancel button.\n * @returns Address add update component node.\n */\nconst AddressAddUpdate: React.FC = ({\n AddressForm,\n heading,\n items,\n hasError,\n error,\n isShowSaveButton,\n saveButton,\n isShowCancelButton,\n cancelButton\n}) => {\n return (\n \n {heading}\n {items.map((item: IAddressAddItem) => {\n const { AddressItem, key, label, alert, input } = item;\n return (\n \n {label}\n {alert}\n {input}\n \n );\n })}\n {hasError && (\n \n {error.title}\n {error.message}\n \n )}\n {isShowSaveButton && saveButton}\n {isShowCancelButton && cancelButton}\n \n );\n};\n\n/**\n * Checkout Shipping Address View Component.\n * @param props - Props.\n * @returns - CheckoutShippingAddress Module.\n */\nconst CheckoutShippingAddressView: React.FC = props => {\n const {\n CheckoutShippingAddress,\n checkoutErrorRef,\n alert,\n viewState,\n showAddress,\n showAddressSelect,\n showAddOrUpdateAddress,\n cartLineImages\n } = props;\n\n return (\n \n {alert}\n {cartLineImages}\n {viewState.isShowAddress && }\n {viewState.isShowAddresList && }\n {viewState.isShowAddOrUpdateAddress && }\n \n );\n};\n\nexport default CheckoutShippingAddressView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICommerceApiSettings,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport { buildCacheKey } from '@msdyn365-commerce-modules/retail-actions';\n\nimport { CheckoutState } from './checkout-state';\n\n/**\n * CheckoutState - action input.\n */\nexport class CheckoutStateInput implements IActionInput {\n private readonly apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings) {\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey('CheckoutState', this.apiSettings);\n\n public getCacheObjectType = () => 'CheckoutState';\n\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * CheckoutState - action.\n * @param input\n * @param ctx\n */\nexport async function checkoutStateAction(input: CheckoutStateInput, ctx: IActionContext): Promise {\n return new CheckoutState();\n}\n\n/**\n * CheckoutState - create new input for create action.\n * @param inputData\n */\nconst createInput = (inputData: ICreateActionContext>): IActionInput => {\n return new CheckoutStateInput(inputData.requestContext.apiSettings);\n};\n\n/**\n * CheckoutState - create action.\n */\nexport const checkoutStateActionDataAction = createObservableDataAction({\n action: >checkoutStateAction,\n input: createInput\n});\n\nexport default checkoutStateActionDataAction;\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. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\n/**\n * EnabledPaymentsForOBO enum.\n */\n export enum EnabledPaymentsForOBO {\n OnCustomerAccount = 1,\n ExpressPayment = 0,\n Loyalty = 0,\n GiftCard = 0,\n PaymentInstrument = 0,\n ApplePay = 0\n}\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","/*!\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","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Waiting } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\n/**\n * Payment waiting props.\n */\nexport interface IPaymentWaitingProps {\n message: string;\n className?: string;\n}\n\n/**\n * Payment waiting.\n * @param param0 - First in param.\n * @param param0.message - Message.\n * @param param0.className - ClassName.\n * @returns React node.\n */\nexport const WaitingComponent: React.FC = ({ message, className = 'ms-checkout-payment-instrument' }) => (\n

\n \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 * 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 { 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","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IModuleStateManager, IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport get from 'lodash/get';\nimport { computed, reaction } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { ICheckoutSectionContainerData } from './checkout-section-container.data';\nimport { ICheckoutSectionContainerProps } from './checkout-section-container.props.autogenerated';\nimport LoadingComponent from './components/loading';\n\n/**\n * ICheckoutSectionContainerModuleProps interface.\n */\nexport interface ICheckoutSectionContainerModuleProps\n extends ICheckoutSectionContainerProps,\n IModuleStateProps {\n enableControl: boolean;\n}\n\ninterface ICheckoutSectionContainerState {\n isCollapse?: boolean;\n}\n\nexport interface ICheckoutSectionContainerItem {\n id: string;\n loading?: React.ReactNode;\n itemProps: INodeProps;\n item: React.ReactNode;\n}\n\nexport interface ICheckoutSectionContainerViewProps extends ICheckoutSectionContainerProps<{}> {\n className: string;\n checkoutPlainContainerProps: IModuleProps;\n items: ICheckoutSectionContainerItem[];\n}\n\nconst paymentInstrumentModuleId = 'payment-instrument';\n\nconst zeroAmount = 0;\n\n/**\n *\n * CheckoutPlainContainer component.\n * @extends {React.Component>}\n */\n@observer\nexport class CheckoutPlainContainer extends React.Component {\n @computed public get amountDue(): number {\n const {\n data: { checkout }\n } = this.props;\n if (!checkout?.result) {\n return 0;\n }\n\n const checkoutResult = checkout.result;\n const cart = checkoutResult.checkoutCart?.cart;\n if (!cart || !cart.CartLines || !ArrayExtensions.hasElements(cart.CartLines)) {\n return 0;\n }\n\n return cart.TotalAmount ?? zeroAmount;\n }\n\n public constructor(props: ICheckoutSectionContainerModuleProps) {\n super(props);\n this.state = { isCollapse: false };\n }\n\n public componentDidMount(): void {\n const items = this.getItems();\n const childIds = items.map((item: React.ReactNode) => get(item, 'props.id'));\n const shouldEnableSinglePaymentAuthorizationCheckout: boolean =\n this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout ?? false;\n\n this.props.moduleState.init({\n onEdit: this.onEdit,\n onCancel: shouldEnableSinglePaymentAuthorizationCheckout ? undefined : this.onCancel,\n onSubmit: shouldEnableSinglePaymentAuthorizationCheckout ? undefined : this.onSubmit,\n childIds\n });\n\n reaction(\n () => this.props.moduleState.isReady,\n () => {\n this.onContainerReady();\n }\n );\n\n reaction(\n () => this.props.moduleState.shouldSubmitContainer,\n () => {\n this.onSubmit();\n }\n );\n\n // Reaction to collapse the payment section for new checkout flow.\n reaction(\n () => this.props.data.checkout.result?.shouldCollapsePaymentSection,\n shouldCollapsePaymentSection => {\n const isPaymentSectionContainer = ArrayExtensions.hasElements(\n this.props.moduleState.childIds.filter(childId => childId.includes(paymentInstrumentModuleId))\n );\n\n if (shouldEnableSinglePaymentAuthorizationCheckout && isPaymentSectionContainer) {\n this.setState({ isCollapse: shouldCollapsePaymentSection });\n }\n }\n );\n\n // Reaction to submit section container for new checkout flow\n reaction(\n () => this.props.data.checkout.result?.shouldTriggerPaymentWithPlaceOrder,\n () => {\n const isPaymentSectionContainer = ArrayExtensions.hasElements(\n this.props.moduleState.childIds.filter(childId => childId.includes(paymentInstrumentModuleId))\n );\n\n if (shouldEnableSinglePaymentAuthorizationCheckout && isPaymentSectionContainer) {\n this.onSubmit();\n }\n }\n );\n\n // Reaction to set isPaymentSectionContainerReady for new checkout flow.\n reaction(\n () => this.props.moduleState.isReady,\n async isReady => {\n const isPaymentSectionContainer = ArrayExtensions.hasElements(\n this.props.moduleState.childIds.filter(childId => childId.includes(paymentInstrumentModuleId))\n );\n\n if (shouldEnableSinglePaymentAuthorizationCheckout && isPaymentSectionContainer && this.amountDue > zeroAmount) {\n await this.props.data.checkout.result?.updateIsPaymentSectionContainerReady({\n newIsPaymentSectionContainerReady: isReady\n });\n }\n }\n );\n\n // Reaction to set isPaymentSectionContainerHasError for new checkout flow.\n reaction(\n () => this.props.moduleState.hasError,\n async hasError => {\n const isPaymentSectionContainer = ArrayExtensions.hasElements(\n this.props.moduleState.childIds.filter(childId => childId.includes(paymentInstrumentModuleId))\n );\n\n if (shouldEnableSinglePaymentAuthorizationCheckout && isPaymentSectionContainer) {\n await this.props.data.checkout.result?.updateIsPaymentSectionContainerHasError({\n newIsPaymentSectionContainerHasError: hasError\n });\n }\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.isCheckoutCallFailed,\n async () => {\n const isPaymentSectionContainer = ArrayExtensions.hasElements(\n this.props.moduleState.childIds.filter(childId => childId.includes(paymentInstrumentModuleId))\n );\n\n if (isPaymentSectionContainer && this.props.data.checkout.result?.isCheckoutCallFailed) {\n this.onEdit();\n await this.props.data.checkout.result.updateIsCheckoutCallFailed({ newIsCheckoutCallFailed: true });\n }\n }\n );\n }\n\n public componentDidUpdate(): void {\n if (!this.props.moduleState.hasExternalSubmitGroup) {\n return;\n }\n\n /**\n * Review all modules to updating status if one of the modules has error.\n */\n const { childIds, hasError, getModule } = this.props.moduleState;\n const hasReadyOrSkippedItems = childIds.some((childId: string) => {\n const state = getModule(childId);\n return !!state && (state.isReady || state.isSkipped);\n });\n if (hasReadyOrSkippedItems && hasError) {\n this.onEdit();\n }\n }\n\n public shouldComponentUpdate(nextProps: ICheckoutSectionContainerModuleProps, nextState: ICheckoutSectionContainerState): 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 enableControl,\n moduleState,\n config: { width }\n } = this.props;\n\n const items = this.getItems();\n if (items.length === 0) {\n this.props.context.telemetry.error('Checkout section content is empty, module wont render');\n return null;\n }\n\n const moduleClassName = classname(\n 'ms-checkout-section-container',\n {\n 'has-initialized': moduleState.hasInitialized,\n 'is-ready': moduleState.isReady,\n 'is-updating': !moduleState.isReady,\n container: width === 'container',\n 'col-12 fullwidth': width === 'fluid'\n },\n this.props.config.className\n );\n\n const viewProps: ICheckoutSectionContainerViewProps = {\n ...this.props,\n\n className: moduleClassName,\n checkoutPlainContainerProps: {\n moduleProps: this.props,\n className: moduleClassName\n },\n items: items.map((item: React.ReactNode) => {\n const childId = get(item, 'props.id');\n const state = moduleState.getModule(childId);\n\n // Modules has not completed initializing or it's disable\n const hidden =\n this.state.isCollapse || (state.hasModuleState && (!state.hasInitialized || state.isDisabled || state.isSkipped));\n return {\n id: childId,\n loading: state.hasModuleState && !state.hasInitialized && ,\n itemProps: {\n 'data-type-name': state.typeName,\n className: classname('ms-checkout-section-container__item', {\n hidden,\n initialized: state.hasInitialized,\n disabled: state.isDisabled,\n skipped: state.isSkipped,\n ready: state.isReady,\n updating: state.isUpdating,\n pending: state.isPending\n })\n },\n item: React.cloneElement(item as React.ReactElement, { enableControl })\n };\n })\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 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 private readonly clearError = (): void => {\n // Clear error before action, otherwise it will rise conflict;\n this.getActiveChildModuleStates().forEach(state => {\n state.hasError && state.setHasError(false);\n });\n };\n\n private readonly onSubmit = (): void => {\n const isPaymentSectionContainer = ArrayExtensions.hasElements(\n this.props.moduleState.childIds.filter(childId => childId.includes(paymentInstrumentModuleId))\n );\n\n this.props.telemetry.information('Section container onSubmit is called.');\n\n this.clearError();\n this.getActiveChildModuleStates().forEach(state => {\n !state.isReady && state.onSubmit && state.onSubmit();\n });\n\n // Handle when the amount due is zero\n if (\n this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout &&\n isPaymentSectionContainer &&\n this.amountDue === zeroAmount\n ) {\n this.props.data.checkout.result?.updateIsPaymentSectionContainerReady({\n newIsPaymentSectionContainerReady: true\n });\n }\n };\n\n private readonly onCancel = (): void => {\n this.props.telemetry.information('Section container onCancel is called.');\n\n this.clearError();\n this.getActiveChildModuleStates().forEach(state => {\n !state.isReady && state.onCancel && state.onCancel();\n });\n };\n\n private readonly onEdit = (): void => {\n this.props.telemetry.information('Section container onEdit is called.');\n\n this.getActiveChildModuleStates().forEach(state => {\n (state.isReady || state.isSkipped) && state.onEdit && state.onEdit();\n });\n };\n\n private readonly onContainerReady = (): void => {\n this.props.telemetry.information('Section container onContainerReady is called.');\n\n this.getActiveChildModuleStates().forEach(state => {\n state.isReady && state.onContainerReady && state.onContainerReady();\n });\n };\n}\n\nexport default withModuleState(CheckoutPlainContainer);\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 * as React from 'react';\n\nconst Loading: React.FC = () =>
;\n\nexport default Loading;\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 { BackToTop, getTelemetryObject, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IBackTopFooterProps } from './back-top-footer.props.autogenerated';\n\n/**\n *\n * BackTopFooter component.\n * @extends {React.PureComponent>}\n */\nclass BackTopFooter extends React.PureComponent> {\n private readonly editProps: Msdyn365.ITextEditProps = {\n requestContext: this.props.context.request,\n onEdit: (event: Msdyn365.ContentEditableEvent) => (this.props.config.backtoTopText = event.target.value)\n };\n\n private readonly telemetryContent?: ITelemetryContent;\n\n constructor(props: IBackTopFooterProps<{}>) {\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 public render(): JSX.Element | null {\n if (!this.props.config.destination) {\n this.props.telemetry.error('BackToTop.destination has not been provided, module wont render.');\n return null;\n }\n\n return (\n \n );\n }\n}\n\nexport default BackTopFooter;\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 { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IImageListConfig, IImageListProps, IImagesData } from './image-list.props.autogenerated';\n\n/**\n * The interface for IImageListViewProps.\n */\nexport interface IImageListViewProps extends IImageListProps {\n imageList: IModuleProps;\n imageListHeading?: React.ReactNode;\n imageListContainer: INodeProps;\n imageListItem: INodeProps;\n imageListItemAnchorTag: INodeProps;\n imageListItems: IImageListItem[] | undefined;\n}\n\n/**\n * The interface for IImageListItem.\n */\nexport interface IImageListItem {\n image: JSX.Element | undefined;\n text: JSX.Element | undefined;\n link: string | undefined;\n linkAltText: string | undefined;\n linkAriaLabel: string | undefined;\n linkOpenInNewTab?: boolean;\n}\n\n/**\n *\n * ImageList component.\n * @extends {React.PureComponent>}\n */\nclass ImageList extends React.PureComponent> {\n public render(): JSX.Element | null {\n const { heading } = this.props.config;\n const imageListTitle = heading && ;\n const viewProps: IImageListViewProps = {\n ...this.props,\n imageList: {\n moduleProps: this.props,\n className: classnames('ms-image-list', this.props.config.className),\n tag: 'div'\n },\n imageListHeading: imageListTitle,\n imageListContainer: {\n className: 'ms-image-list__list',\n role: 'list',\n tag: 'ul'\n },\n imageListItem: {\n className: 'ms-image-list__list-item',\n role: 'listitem',\n tag: 'li'\n },\n imageListItemAnchorTag: {\n tag: 'a',\n className: 'ms-image-list__link',\n role: 'link'\n },\n imageListItems: this._renderImageListItems()\n };\n return this.props.renderView(viewProps);\n }\n\n /**\n * Handle paragraph change.\n * @param index - Index of image item in array of image items.\n * @returns Void.\n */\n public handleParagraphChange = (index: number) => (event: Msdyn365.ContentEditableEvent): void => {\n if (this.props.config.images![index]) {\n this.props.config.images![index].paragraph = event.target.value;\n }\n };\n\n /**\n * Render list of images.\n * @returns List of images with text and redirection link.\n */\n private readonly _renderImageListItems = (): IImageListItem[] | undefined => {\n const imageList: IImagesData[] | undefined = this.props.config.images;\n const defaultImageSettings: Msdyn365.IImageSettings = {\n viewports: {\n xs: { q: 'w=65&h=65&q=80&m=6', w: 65, h: 65 },\n lg: { q: 'w=65&h=65&q=80&m=6', w: 65, h: 65 },\n xl: { q: 'w=65&h=65&q=80&m=6', w: 65, h: 65 }\n },\n lazyload: false,\n disableLazyLoad: true\n };\n return imageList?.map((item, index) => {\n const { image, link, paragraph } = item;\n\n const imageProps = {\n gridSettings: this.props.context.request.gridSettings!,\n imageSettings: (image?.imageSettings ?? defaultImageSettings) as Msdyn365.IImageSettings | undefined\n };\n\n const imageLink: string | undefined = link?.linkUrl.destinationUrl;\n const imageLinkText: string | undefined = link?.linkText ?? link?.ariaLabel;\n const imageLinkAriaLabel: string | undefined = link?.ariaLabel;\n const imageLinkOpenInNewTab = link?.openInNewTab;\n\n // If image is null, we want to render the placeholder SVG - by passing image data with empty src\n const imageImage = (\n \n );\n\n const imageText = paragraph && (\n \n );\n const imageListItem: IImageListItem = {\n image: imageImage,\n text: imageText,\n link: imageLink,\n linkAltText: imageLinkText,\n linkAriaLabel: imageLinkAriaLabel,\n linkOpenInNewTab: imageLinkOpenInNewTab\n };\n return imageListItem;\n });\n };\n}\n\nexport default ImageList;\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 { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IImageListViewProps } from './image-list';\n\n/**\n * Render the thumbnail item images.\n * @param props - The image list view props.\n * @returns Return HTML having IImageListViewProps props with image List.\n */\nexport const imageListView = (props: IImageListViewProps): JSX.Element => {\n const { imageList, imageListContainer, imageListHeading, imageListItem, imageListItems, imageListItemAnchorTag } = props;\n return (\n \n {imageListHeading}\n \n {imageListItems?.map(item => {\n let indexKey: string;\n\n if (item.image) {\n const image = (item.image as unknown) as Msdyn365.Image;\n indexKey = image.props.src as string;\n } else {\n const text = (item.text as unknown) as Msdyn365.RichTextComponent;\n indexKey = text.props.text as string;\n }\n return (\n \n {item.image && (\n \n {item.image}\n \n )}\n {item.text}\n \n );\n })}\n \n \n );\n};\n\nexport default imageListView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n getTelemetryObject,\n IComponentNodeProps,\n IModuleProps,\n INodeProps,\n ISingleSlideCarouselProps,\n ITelemetryContent,\n NodeTag,\n SingleSlideCarousel\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport * as React from 'react';\n\nimport { IInteractiveFeatureCollectionProps } from './interactive-feature-collection.props.autogenerated';\n\n/**\n * Interactive Feature Collection view props.\n */\nexport interface IInteractiveFeatureCollectionViewProps extends IInteractiveFeatureCollectionProps<{}> {\n title: React.ReactNode;\n interactiveFeatureCollectionHeading: INodeProps;\n interactiveFeatureCollectionContainer: IModuleProps;\n interactiveFeatureCollectionDesktopContainer: INodeProps;\n interactiveFeatureCollectionDesktopItems: React.ReactNode[];\n interactiveFeatureCollectionMobileContainer: INodeProps;\n interactiveFeatureCollectionMobileItems: React.ReactNode[];\n singleSlideCarouselComponentProps: INodeProps;\n singleSlideCarouselItemContainer: INodeProps;\n}\n\n/**\n *\n * InteractiveFeatureCollection component.\n * @extends {React.PureComponent>}\n */\nexport class InteractiveFeatureCollection extends React.PureComponent> {\n private readonly _telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n private static _getFeatureItem(item: React.ReactNode, index: number, itemsCounter: number): React.ReactNode {\n const keyIndex = `interactive-feature-mosaic-item__${index}`;\n return (\n \n {React.cloneElement(item as React.ReactElement, { indexItem: index, itemCounter: itemsCounter, isMosaic: true })}\n \n );\n }\n\n public constructor(props: IInteractiveFeatureCollectionProps) {\n super(props);\n }\n\n public render(): JSX.Element | null {\n const { resources } = this.props;\n const { title, className } = this.props.config;\n const interactiveItems = this.props.slots && this.props.slots.interactiveFeatureItems;\n const itemsFeatureCounter = interactiveItems && interactiveItems.length;\n const singleSlideCarouselComponentProps: IComponentNodeProps = {\n tag: SingleSlideCarousel,\n className: this.props.config.className ?? '',\n flipperPrevLabel: resources.flipperPrevious,\n flipperNextLabel: resources.flipperNext,\n parentId: this.props.id,\n telemetryContent: this._telemetryContent,\n vertical: false\n };\n const initItemsFeatureCounter = 0;\n const createHeading = title && (\n \n );\n const viewProps = {\n ...this.props,\n title: createHeading,\n interactiveFeatureCollectionHeading: {\n className: 'ms-interactive-feature-collection__heading'\n },\n interactiveFeatureCollectionContainer: {\n moduleProps: this.props,\n className: classnames('ms-interactive-feature-collection', className)\n },\n interactiveFeatureCollectionDesktopContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-interactive-feature-collection-desktop'\n },\n interactiveFeatureCollectionMobileContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-interactive-feature-collection-mobile'\n },\n singleSlideCarouselComponentProps,\n singleSlideCarouselItemContainer: {\n tag: 'li' as NodeTag,\n className: 'ms-interactive-feature-collection-carousel',\n role: 'listitem'\n },\n interactiveFeatureCollectionMobileItems: this.props.slots.interactiveFeatureItems,\n interactiveFeatureCollectionDesktopItems:\n itemsFeatureCounter > initItemsFeatureCounter &&\n interactiveItems.map((item: React.ReactNode, index: number) =>\n InteractiveFeatureCollection._getFeatureItem(item, index, itemsFeatureCounter)\n )\n };\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * To handle text change.\n * @param event - To handle text change event.\n * @name - HandleTextChange\n * @public\n * @returns - The Text value.\n */\n public handleTextChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.title!.text = event.target.value);\n}\n\nexport default InteractiveFeatureCollection;\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 React, { ReactNode } from 'react';\n\nimport { IInteractiveFeatureCollectionViewProps } from './interactive-feature-collection';\n\n/**\n * Feature Collection View.\n * @param props - Feature Collection view props.\n * @returns Feature Collection View.\n */\nexport const interactiveFeatureCollectionView: React.FC = props => {\n const {\n title,\n interactiveFeatureCollectionHeading,\n interactiveFeatureCollectionContainer,\n interactiveFeatureCollectionDesktopContainer,\n interactiveFeatureCollectionDesktopItems,\n interactiveFeatureCollectionMobileItems,\n interactiveFeatureCollectionMobileContainer,\n singleSlideCarouselComponentProps,\n singleSlideCarouselItemContainer\n } = props;\n return (\n \n {title}\n {interactiveFeatureCollectionDesktopItems}\n \n \n {interactiveFeatureCollectionMobileItems &&\n interactiveFeatureCollectionMobileItems.map((tileItem: ReactNode, index: number) => {\n const keyIndex = `interactive-feature-carousel-item__${index}`;\n return (\n \n {tileItem}\n \n );\n })}\n \n \n \n );\n};\n\nexport default interactiveFeatureCollectionView;\n"],"names":["AutoSuggest","constructor","telemetry","autoSuggestOptions","BingMapsApiKey","countryCode","defaultLanguageId","excludedAddressFields","attachAutoSuggest","inputId","containerId","selectedSuggestionCallback","this","autoSuggestManager","Microsoft","Maps","loadModule","callback","_document$querySelect","options","_objectSpread","AutosuggestManager","attachAutosuggest","document","querySelector","setAttribute","setTimeout","_document$querySelect2","errorCallback","debug","credentials","bingMapsApiKey","changeAutoSuggestionCountryCode","setOptions","disposeAutoSuggest","_this$autoSuggestMana","_this$autoSuggestMana2","detachAutosuggest","dispose","undefined","_loadMapAPI","async","storeSelectorStateManager","loadMapApi","key","lang","market","GetStateProvincesInput","countryRegionId","apiSettings","getCacheKey","buildCacheKey","getCacheObjectType","dataCacheType","getStateProvinceAction","input","ctx","getStateProvincesAsync","callerContext","queryResultSettings","createObservableDataAction","action","AddressCommon","context","resources","getDefaultCountryRegionId","countryRegions","marketISOCode","currentCountryRegion","find","countryRegion","ISOCode","CountryRegionId","parseRetailException","errorTitle","addressErrorMessageTitle","errorMessage","addressGenericErrorMessage","isAuthenticatedFlow","request","user","isAuthenticated","getStateProvinces","response","actionContext","error","Promise","resolve","isEmpty","address","ThreeLetterISORegionName","City","addCustomerAddress","submitCustomerAddress","addAddress","updateCustomerAddress","updateAddress","updateCustomerPrimaryAddress","updatePrimaryAddress","addressAction","AddressTypeValue","AddressManagementInput","execAddressAction","addresses","length","currentAddress","newAddress","Name","Phone","State","Street","ZipCode","RecordId","customerAddresses","AddressItemDisplayType","AddressValidationRuleType","AddressItemType","AddressOperation","AddressType","AddressFormat","countryRegionsInfo","addressMetaData","addressPurposes","getPrefilledAddressDropdownData","stateDefaultSelectionText","stateProvinceInfo","defaultStateText","value","dropdownData","getCountryFormat","getStateFormat","unshift","getAddressTypeFormat","getTwoLetterISORegionName","_getCountryRegionInfo","validateAddressFormat","validationError","propertyName","validationtor","isValid","getAddressFormat","forEach","addressFormatItem","name","_inputValidation","getTranformedAddress","result","postalCode","selectedState","state","StateName","adminDistrict","StateId","addressLine","locality","district","DistrictName","CountyName","FullAddress","formattedAddress","_validateRegEx","validationRule","regEx","RegExp","test","get","countryRegionInfo","_getAddressDisplayFormat","map","ShortName","addressPurpose","set","validationRules","message","toLowerCase","addressDisplayItem","AddressFormatLines","AddressTypeItem","_extendAddressDisplayFormat","push","nameDisplayItem","formatLine","AddressComponentNameValue","addressItem","getItemFormat","isNewLine","NewLine","phoneDisplayItem","isPrimaryDisplayItem","IsPrimary","type","AddressMetaData","excluded","required","metaData","requiredFieldRegEx","resourcesPrefix","maxLength","excludedTypes","requiredFields","_init","id","item","_addItem","Input","County","Dropdown","District","StreetNumber","BuildingCompliment","Postbox","House_RU","Flat_RU","CountryOKSMCode_RU","Checkbox","displayType","includes","nameKey","replace","_validationRules","isRequired","rule","Required","optionalString","label","ruleType","Object","keys","itemType","_validationRule","_ref","React","className","role","text","ariaLabel","disabled","telemetryContent","onClick","payLoad","getPayloadObject","attributes","getTelemetryAttributes","assign","isChecked","additionalAddributes","autoFocus","onChange","checked","displayData","getDropdownItem","selectedValue","isSelected","title","htmlFor","getRequriedAttribute","getAddessItems","selectedAddress","props","addressFormat","addressType","dropdownDisplayData","defaultCountryRegionId","defaultAddressType","onInputChange","onDropdownChange","index","elementId","classname","AddressInputComponent","AdressCheckboxComponent","AdressDropdownComponent","AddressItem","AddressLabelComponent","alert","AddressAlertComponent","isShowLabel","labelText","mainClass","AddressShow","AddressDetail","items","addressTypeValue","toString","description","AddressDetailItemComponent","getInput","onAddressOptionChange","ichecked","additionalAttributes","getAddressSelectItems","SelectItem","showItems","CheckoutShippingAddress","_data$featureState","super","addressListSelectedAddress","multiplePickupStoreSwitchName","retailMultiplePickUpOptionEnabled","_renderAddOrUpdateAddress","currentOperation","Add","addressCommon","editAddressHeading","addAddressHeading","hasError","onCancel","onSave","hasExternalSubmitGroup","isUpdating","addressActionResponse","heading","AddressForm","Heading","isShowSaveButton","saveButton","AddressButtonComponent","addressSaveButtonText","addressSaveButtonAriaLabel","isShowCancelButton","cancelButton","addressCancelButtonText","addressCancelButtonAriaLabel","AddressError","AddressErrorTitleComponent","AddressErrorMessageComponent","AddressAddUpdate","Shipping","addUpdateAddress","addressStateDefaultSelectionText","_onAddressAddUpdateInputChange","_onAddressAddUpdateDropdownChange","moduleState","onSubmit","_resetView","_renderSelectAddress","onAddAddress","SelectAddress","addButton","addressAddButtonText","addressAddButtonAriaLabel","AddressSelect","_onAddressOptionChange","_goToAddAddress","_onSelectAddress","_attachMapAutoSuggest","data","_this$autoSuggest","isMapApiLoaded","autoSuggest","_onSuggestionSelected","_clearAddressFields","format","_this$autoSuggest2","_clearValidation","event","addressRecordId","currentTarget","onAddressAddUpdate","target","_onCountryChange","_onAddressAddUpdateSubmit","Update","_updateModuleState","then","_onAddOrUpdateSuccess","_this$autoSuggest3","twoLetterISORegionName","_getAddressFormatExcludeList","config","addressFormatExcludeList","showAddressType","_getStateProvinces","some","_getDefaultAddress","_initModuleState","init","status","_canShip","onEdit","defaultAddress","_getShippingAddressFromCartLines","_updateCurrentOperation","Show","_setShippingAddress","List","shippingAddress","channelDeliveryOptionConfig","pickupDeliveryModeCode","channel","PickupDeliveryModeCode","emailDeliveryModeCode","EmailDeliveryModeCode","cartLines","checkout","checkoutCart","cart","CartLines","filter","cartLine","_channelDeliveryOptio","DeliveryMode","PickupDeliveryModeCodes","deliveryMode","ShippingAddress","_checkout$result","_checkout$result2","hasInvoiceLine","_channelDeliveryOptio2","_setDefaultCountryRegionId","newShippingAddress","TwoLetterISORegionName","updateShippingAddress","operation","onReady","onPending","onUpdating","countryStates","featureState","feature","IsEnabled","getTelemetryObject","telemetryPageName","friendlyName","requestContext","autoSuggestionEnabled","reaction","BingMapsEnabled","_this$autoSuggest4","ChannelCountryRegionISOCode","DefaultLanguageId","_this$props$data$stor","_this$autoSuggest5","_this$props$data$stor2","_this$props$data$stor3","_this$autoSuggest6","render","renderView","viewState","isShowAddress","isShowAddresList","isShowAddOrUpdateAddress","moduleProps","classnames","showAddress","_renderShowAddress","showAddressSelect","showAddOrUpdateAddress","__decorate","observable","computed","withModuleState","observer","Node","_ref2","_ref3","_other$moduleProps","_other$moduleProps2","_other$moduleProps3","_other$moduleProps4","_document","other","_objectWithoutProperties","_excluded","localeString","locale","sitePath","currency","Currency","countriesAvail","enGB","autocomplete","select","it","enUS","eu","nativeInputValueSetter","getOwnPropertyDescriptor","window","HTMLInputElement","prototype","populateFormElements","addressComponent","formMap","types","getElementById","googleComponent","elmnt","is_convert_a2_to_a3","i","eValue","convert_a2_to_a3","selectItemByValue","short_name","Event","bubbles","dispatchEvent","formValue","long_name","call","eCustom","phoneValidation","_addressForm$closest","addressForm","getElementsByClassName","saveAddressButton","closest","county","countyCtn","countyAlert","onkeyup","classList","remove","textContent","onclick","e","add","elements","querySelectorAll","fieldInALL","element","stopPropagation","googleComponents","autocompleteFormField","google","maps","places","Autocomplete","componentRestrictions","country","startTypingYourAddress","clearInstanceListeners","addListener","place","getPlace","addressComponents","address_components","gMapsAutocomplete","o","optionV","countrySelect","stateSelect","Boolean","checkPhone","phone","phoneCtn","phoneAlert","pattern","pattern2","match","addressPhoneRequiredErrorMessage","removeAttribute","Module","AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","AN","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SK","SI","SB","SO","ZA","GS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","_props$context$reques","AccountLoyaltyTile","links","description__no_decimals","tmp_account","customerAccountNumber","usingNewLoyalty","cardBeingGeneratedText","AddressList","isShowList","Item","isShowPrimaryButton","primaryButton","editButton","removeButton","Error","isShowError","AddressLists","ListAddress","isShowEmptyListMessage","emptyListMessage","primaryAddressList","otherAddressList","_ref4","hasAddressError","setHasAddressError","optionDEF","parentNode","updatedCount","location","reload","addressErrorMessage","AccountAddressManagement","showAddressList","LoyaltySignUp","memberHeading","signInLink","signUpText","signUpButton","detailsLink","loading","infoMessageBar","loyalty_join_toggle_btn","addEventListener","loyalty_join_btn","innerHTML","loyalty_join_flag","query","hasJoined","joinedLoyaltyThankYouHeader","joinedLoyaltyParagraphContent","_mapEditableLinks","linkdata","editableLinks","link","contentAction","etext","linkText","editableLink","linkUrl","destinationUrl","openInNewTab","additionalProperties","onTextChange","Msdyn365","editProps","AccountWishlistTile","handleHeadingChange","handleLinkTextChange","linkIndex","accountWishlistTileDescription","wishlists","wishlistsCount","CommerceListLines","viewProps","tag","LinksComponent","DescriptionComponent","focusOnCheckoutError","checkoutErrorRef","checkoutState","getCheckoutState","catch","exception","current","scrollIntoView","updateCheckoutErrorFocus","newCheckoutErrorFocus","CheckoutModule","None","updateLogisticsLocationRoleRecordId","GetAddressPurposesInput","getAddressPurposesAction","ArrayExtensions","hasElements","purpose","LogisticsLocationRoleRecordId","Description","PhoneRegex","defaultRegex","Format","itemId","shouldBeAutoFocused","shouldAutoFocus","isDisabled","ErrorComponent","shouldUseAutoFocus","getButtonAriaLabel","addressName","getAddressList","showPrimaryButton","onEditAddress","onRemoveAddress","onUpdatePrimaryAddress","isSelectedAddress","isInvalidAsyncState","isEditAsyncCustomerFeatureEnabled","canRenderAsyncCustomerDataAsUnmodifiable","isAsyncCustomer","isAsyncCustomerAddressCreationFeatureEnabled","addressPrimaryButtonText","addressPrimaryButtonAriaLabel","addressEditButtonText","addressEditButtonAriaLabel","addressRemoveButtonText","addressRemoveButtonAriaLabel","getPrimaryAddressList","primaryAddressSectionHeading","primaryAddresses","getOtherAddressList","otherAddressSectionHeading","otherAddresses","_heading$headingTag","handleLineItemHeadingChange","headingComponent","headingTag","contextRequest","disableAddButton","addressEmptyListAddressMessage","_addressPurposes$find","addressTypeDescription","addressChangeCheckboxAriaLabel","AccountManagementAddress","asyncCustAddressCreationFeatureName","editAsyncCustomerFeatureName","asyncCustomerAddressCreationFeatureIsEnabled","_dataInitialize","_data$countryRegions$","_data$addressPurposes","_data$address$result","_renderListAddress","_this$props$data$cust","_this$props$context$a","_goToEditAddress","_onRemoveAddress","_onSubmitUpdatePrimaryAddress","customerInformation","IsAsyncCustomer","app","_onAddressUpdate","onSuccess","_onUpdatePrimaryAddressSuccess","Deactivate","removeAddressData","_renderScreenReaderRemoveText","notification","formatNotification","removeAddressNotification","shouldComponentUpdate","nextProps","nextState","_data$featureState2","_this$props$context$a2","accountProcessingPendingInfoMessageCanAddAddress","accountProcessingPendingInfoMessage","screenReaderNotification","BusinessAccountAddress","excludedList","_resetAddressFields","_data$countryStates$r","Company","_updateAddress","_updateCountryRegionId","updateForm","cleanValue","_isEmpty","_isInputRequired","addressItemValue","ObjectExtensions","isNullOrUndefined","componentDidMount","resetAddress","_request$channel","AddressBillingCheckbox","AddressBillingHeading","CheckoutBillingAddress","_this$addUpdateAddres","Billing","_onSubmitAddress","twoLetterIsoRegionName","_this$props$data$chec","isBillingAddressRequried","billingAddress","isBillingAddressSameAsShippingAddress","isBillingAddressSameAsShipping","isCartContainsItemsForShipping","_onBillingAddressSameAsShippingChange","_this$props$data$chec2","_this$props$data$chec3","setHasError","shouldEnableSinglePaymentAuthorizationCheckout","isPaymentSectionContainerHasError","updateIsBillingAddressHasError","newIsBillingAddressHasError","_setBillingAddress","information","newBillingAddress","updateBillingAddress","_setErrorMessage","setState","isShowSameAsShippingCheckbox","_this$props$data$chec5","_this$props$data$chec4","removeBillingAddress","onDisable","shouldEnableCheckoutErrorDisplayMessaging","_this$props$data$chec6","checkoutError","errorLocation","ErrorLocation","_this$props$data$chec7","checkoutErrorFocus","_shouldHideBillingAddressForOBO","addressBillingAddressHeading","errorMessageTitle","sameAsShippingCheckbox","addressSameAsShippingAddressAriaLabel","addressSameAsShippingAddressText","_this$selectedAddress","_featureState$result","_request$channel2","_request$channel3","_this$props$data$chec8","_this$props$data$chec9","_this$props$data$chec10","loyaltyAmount","giftCardExtends","reduce","count","giftCard","Balance","_checkoutState$custom","customerAccountAmount","checkoutResult","paymentTenderType","tokenizedPaymentCard","isPaidByOtherPaymentSource","paymenTenderType","TotalAmount","getGiftCardTotalAmount","getLoyaltyAmount","getCustomerAccountAmount","_this$props$data$chec11","_this$props$data$chec12","shouldPaidByCard","isPaymentVerificationRedirection","isCheckoutCallFailed","EnabledPaymentsForOBO","PaymentInstrument","ref","CheckoutPickupCartLines","moduleClassName","itemTitle","isMobileCheck","isMobile","variant","VariantType","Browser","gridSettings","xs","w","sm","md","lg","xl","isMobileView","isShowQty","quantity","lineId","Image","imageProps","productQuantityInfo","altText","defaultImageSettings","viewports","q","h","lazyload","quality","_data$featureState$re2","_initPickupGroup","pickupCartLines","_getCartLinesforDelivery","products","_getProductsByCartLines","ChannelId","line","product","x","ProductId","shippingGroups","formatAddress","_data$featureState$re","_isDelivery","_isNotPickupMode","FulfillmentStoreId","_this$props$context$r","pickupDeliveryMode","pickupMode","channelId","productInputs","ProductInput","CatalogId","getSimpleProducts","onSaveHandler","onCancelHandler","onCancelButtonHandler","onAddAddressHandler","_isNewAddress","_clearError","_getAddressFromCartExpressPaymentDetails","expressPaymentDetailsFromCartPage","isExpressAddressAppliedInCartPage","addressFromCartExpress","getExpressAddress","getAddressFromTokenizedPaymentCard","Country","threeLetterIsoRegionName","getThreeLetterIsoRegionName","NameOnCard","Address1","Address2","Zip","expressAddress","_country$ISOCode","shippingCartLines","isExpressCheckoutApplied","shippingAddressFromExpressCheckout","updateHasShippingAddress","newHasShippingAddress","_checkout$result$chec","_checkout$result$chec2","existingAddress","_address$Name","_address$Street","_address$StreetNumber","_address$City","_address$State","_address$ZipCode","_address$Phone","_address$ThreeLetterI","_address$AddressTypeV","_countItems","cartlines","_address","_featureState$result2","headingImages","itemsText","singleItemText","imageSettings","_line$cartLine$LineId","_line$product","_line$product$Primary","_line$product2","_line$product3","_context$request$app","_line$cartLine$Quanti","LineId","src","PrimaryImageUrl","fallBackSrc","getFallbackImageUrl","ItemId","OmniChannelMedia","loadFailureBehavior","Quantity","numberOfCartLines","itemText","lineImageProps","cartLineImages","isRetailMultiplePickUpOptionEnabled","showAddressSelectHandler","showAddOrUpdateAddressHandler","_this$props$data$cart","_this$props$data$cart2","properties","ExtensionProperties","property","Key","Value","StringValue","JSON","parse","CheckoutStateInput","_this","CheckoutState","inputData","_giftCards","_giftCardExtends","_loyaltyAmount","_guestCheckoutEmail","_isTermsAndConditionAccepted","_customerAccountAmount","defineProperty","_tokenizedPaymentCard","_tenderLine","_billingAddress","_shippingAddress","_cardPrefix","_loyaltyCardNumber","updateTokenizedPaymentCard","newTokenizedPaymentCard","updateTenderLine","newTenderLine","updateCardPrefix","newCardPrefix","removeGiftCard","giftCardNumber","Id","removeGiftCardExtend","addGiftCard","__spreadArrays","addGiftCardExtend","updateLoyaltyCardNumber","newLoyaltyCardNumber","updateLoyaltyAmount","newAmount","updateGuestCheckoutEmail","newGuestCheckoutEmail","updateTermsAndConditionsAcceptance","newIsTermsAndConditionAccepted","updateCustomerAccountAmount","ModuleStatesCacheKey","getModuleStates","cacheKey","moduleStates","update","updateModuleStates","WrappedComponent","_super","ModuleState","initializeState","_b","typeName","states","__assign","_a","hasInitialized","isCancellable","isSubmitContainer","childIds","getModuleStateManager","validate","isReady","isPending","isSkipped","isCancelAllowed","shouldSubmitContainer","hasModuleState","setIsRequired","setIsCancellable","setIsSubmitContainer","onSkip","getModule","moduleId","getModuleByTypeName","getModuleStateManagerByTypeName","values","_moduleState","modules","_validateLeaf","source","module","isMatch","_validateContainer","allMatched","skipSkippableItem","childId","_isPaymentSectionContainer","enableControl","__extends","WaitingComponent","Waiting","CheckoutExpressPaymentContainer","_getItems","slots","primary","_handleCheckoutExpressContainerHeadingChange","checkoutExpressPaymentContainerHeading","shouldHideExpressPaymentContainer","isExpressPaymentModulesReady","extensionPropertyKey","isModuleReady","BooleanValue","checkoutExpressPaymentSectionLoadingMessage","isOBORequest","ExpressPayment","shouldHideExpressPaymentContainerClassName","checkoutPlainContainerProps","waiting","_renderMsdyn365Text","headerProps","ContainerItemsComponent","isLoadingClassName","paymentInstrumentModuleId","CheckoutPlainContainer","getItems","getActiveChildModuleStates","clearError","isPaymentSectionContainer","amountDue","updateIsPaymentSectionContainerReady","newIsPaymentSectionContainerReady","onContainerReady","isCollapse","_checkoutResult$check","_cart$TotalAmount","shouldCollapsePaymentSection","shouldTriggerPaymentWithPlaceOrder","updateIsPaymentSectionContainerHasError","newIsPaymentSectionContainerHasError","updateIsCheckoutCallFailed","newIsCheckoutCallFailed","componentDidUpdate","width","container","hidden","LoadingComponent","itemProps","initialized","skipped","ready","updating","pending","ItemComponent","Loading","BackTopFooter","backtoTopText","destination","BackToTop","href","ImageList","handleParagraphChange","images","paragraph","_renderImageListItems","imageList","disableLazyLoad","_image$imageSettings","_link$linkText","image","imageLink","imageLinkText","imageLinkAriaLabel","imageLinkOpenInNewTab","linkAltText","linkAriaLabel","linkOpenInNewTab","_heading$tag","imageListTitle","imageListHeading","imageListContainer","imageListItem","imageListItemAnchorTag","imageListItems","imageListView","indexKey","InteractiveFeatureCollection","_telemetryContent","handleTextChange","itemsCounter","keyIndex","indexItem","itemCounter","isMosaic","_this$props$config$cl","_title$tag","interactiveItems","interactiveFeatureItems","itemsFeatureCounter","singleSlideCarouselComponentProps","SingleSlideCarousel","flipperPrevLabel","flipperPrevious","flipperNextLabel","flipperNext","parentId","vertical","createHeading","interactiveFeatureCollectionHeading","interactiveFeatureCollectionContainer","interactiveFeatureCollectionDesktopContainer","interactiveFeatureCollectionMobileContainer","singleSlideCarouselItemContainer","interactiveFeatureCollectionMobileItems","interactiveFeatureCollectionDesktopItems","_getFeatureItem","interactiveFeatureCollectionView","tileItem"],"sourceRoot":""}