{"version":3,"file":"static/js/application.async.non-landing~507139c6.d55caeb5.chunk.js","mappings":"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AAOG,EACLlU,sGACAiU,EAAMI,KAAK,CAAEC,MAAO,KACxB,KAAKP,GACH,OAAOG,EACLlU,sGACAiU,EAAMI,KAAK,CAAEE,QAAS,IAC1B,KAAKR,GACH,OAAOG,EACLlU,uGACAiU,EAAMI,KAAK,CAAEE,QAAS,IAC1B,KAAKR,GACH,OAAOG,EACLlU,uGACAiU,EAAMI,KAAK,CAAEE,QAAS,IAC1B,KAAKR,GACH,OAAOG,EACLlU,wGACAiU,EAAMI,KAAK,CAAEE,QAAS,KAC1B,KAAKR,GACH,OAAOG,EACLlU,wGACAiU,EAAMI,KAAK,CAAEE,QAAS,KAC1B,QAEE,OADA3T,IAAAA,OAAQ,WAAQ,MAAM,IAAI4T,WAAW,wCAAD7U,OAAyCwU,EAAa,gBAAAxU,OAAesL,EAAS,kCAAmC,IAC9IiJ,EACLlU,wGACAiU,EAAMI,KAAK,CAAEE,QAAS,KAE9B,E,aC5CaE,GAAwB,CACnCrB,OAAQ,CACN,QACA,YACA,gBACA,mBACA,iBACA,kBACA,kBACA,sBACA,sBACA,2BACA,2BACA,YACA,YACA,kBACA,gBACA,UAEFC,UAAW,CACT,QACA,YACA,gBACA,mBACA,iBACA,kBACA,kBACA,sBACA,sBACA,2BACA,2BACA,YACA,YACA,kBACA,gBACA,UAEFC,MAAO,CACL,QACA,YACA,gBACA,mBACA,iBACA,kBACA,kBACA,sBACA,sBACA,2BACA,2BACA,YACA,YACA,kBACA,gBACA,WACA,WACA,UACA,UAEFC,UAAW,CACT,QACA,YACA,gBACA,mBACA,iBACA,2BACA,2BACA,YACA,YACA,kBACA,gBACA,WACA,WACA,UACA,UAEFC,OAAQ,CACN,iBACA,kBACA,kBACA,sBACA,sBACA,2BACA,2BACA,YACA,YACA,kBACA,gBACA,WACA,WACA,UACA,UAEFkB,qBAAsB,CACpB,iBACA,kBACA,kBACA,sBACA,sBACA,2BACA,2BACA,YACA,YACA,kBACA,gBACA,WACA,WACA,UACA,UAEFjB,QAAS,CACP,YACA,YACA,kBACA,gBACA,WACA,WACA,UACA,UAEFC,OAAQ,CACN,WACA,WACA,UAC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UAAW,CACT,aACA,eAEF5F,iBAAkB,CAChB,gBAEFC,gBAAiB,CACf,iBAGJ6F,yBAA0B,CACxBnF,QAAQ,CACN,aACA,cACA,eACA,cACA,YACA,iBACA,eACA,cACA,SACA,MACA,aACA,aACA,QACA,kBACA,2BACA,mCACA,cACA,iBACA,qBAAmB/4B,OAChB69B,GAELG,UAAW,CACT,aACA,cACA,aAEF5F,iBAAkB,CAChB,eAEFC,gBAAiB,CACf,gBAGJ8F,oBAAqB,CACnBpF,QAAQ,CACN,aACA,cACA,eACA,cACA,OACA,SACA,UACA,aACA,aACA,aACA,gBACA,iBACA,iBACA,cACA,SACA,MACA,aACA,aACA,QACA,kBACA,2BACA,mCACA,cACA,iBACA,qBAAmB/4B,OAChB69B,GAELG,UAAW,CACT,cAEF5F,iBAAkB,CAChB,QAEFC,gBAAiB,CACf,SAGJ+F,yBAA0B,CACxBrF,QAAS,CACP,aACA,cACA,eACA,cACA,YACA,UACA,eACA,iBACA,gBACA,eACA,cACA,SACA,MACA,aACA,QACA,kBACA,2BACA,mCACA,cACA,iBACA,qBAEFiF,UAAW,CACT,cAEF5F,iBAAkB,CAChB,WAEFC,gBAAiB,CACf,YAGJgG,8BAA+B,CAC7BL,UAAW,CACT,cACA,UACA,mBAEFjF,QAAS,CACP,cACA,eACA,YACA,UACA,kBACA,kBAGJuF,mBAAoB,CAClBvF,QAAS,CACP,aACA,cACA,eACA,cACA,WACA,YACA,cACA,SACA,MACA,aACA,aACA,QACA,kBACA,2BACA,mCACA,yBACA,gCACA,iCACA,cACA,iBACA,qBAEFiF,UAAW,CACT,aACA,YACA,0BAEF5F,iBAAkB,CAChB,eAEFC,gBAAiB,CACf,gBAGJkG,6BAA8B,CAC5BxF,QAAS,CACP,aACA,cACA,eACA,cACA,cACA,YACA,UACA,OACA,eACA,qBACA,WACA,UACA,cACA,SACA,MACA,aACA,QACA,kBACA,2BACA,mCACA,cACA,iBACA,qBAEFiF,UAAW,CACT,aACA,eAEF5F,iBAAkB,CAChB,eAEFC,gBAAiB,CACf,gBAGJmG,gCAAiC,CAC/BzF,QAAS,CACP,aACA,cACA,eACA,cACA,iBACA,iBACA,cACA,SACA,MACA,aACA,QACA,kBACA,2BACA,mCACA,cACA,iBACA,qBAEFiF,UAAW,CACT,aACA,cACA,eACA,kBAEF5F,iBAAkB,CAChB,kBAEFC,gBAAiB,CACf,mBAGJoG,gCAAiC,CAC/B1F,QAAS,CACP,aACA,cACA,eACA,cACA,eACA,iBACA,cACA,SACA,MACA,aACA,aACA,QACA,kBACA,2BACA,mCACA,cACA,iBACA,qBAEFiF,UAAW,CACT,aACA,cACA,eACA,iBAGJU,+BAAgC,CAC9B3F,QAAS,CACP,aACA,cACA,cACA,SACA,UACA,aACA,aACA,aACA,iBACA,SACA,SACA,SACA,iBACA,cACA,SACA,MACA,aACA,QACA,kBACA,2BACA,mCACA,cACA,iBACA,qBAEFiF,UAAW,CACT,aACA,UACA,iBACA,SACA,SACA,WAGJW,0BAA2B,CACzBX,UAAW,CACT,aACA,aACA,aAEFjF,QAAS,CACP,aACA,aACA,eACA,eACA,gBACA,cACA,YACA,eACA,cACA,oBACA,gBACA,mBACA,2BACA,mCACA,cACA,SACA,MACA,UAGJ6F,sBAAuB,CACrBZ,UAAW,CACT,aACA,QAEFjF,QAAS,CACP,aACA,OACA,cACA,eACA,cACA,UACA,iBACA,eAGJ8F,4BAA6B,CAC3B9F,QAAS,CACP,aACA,cACA,eACA,cACA,iBACA,cACA,SACA,MACA,QACA,UACA,cACA,iBACA,UACA,kBACA,qBAEFiF,UAAW,CACT,eAGJc,8BAA+B,CAC7Bd,UAAW,CACT,aACA,eAEFjF,QAAS,CACP,aACA,cACA,eACA,cACA,iBACA,UACA,QACA,YACA,OACA,SACA,aACA,aACA,qBACA,mBACA,iBACA,kBACA,oBACA,wBACA,wBACA,cACA,SACA,MACA,aACA,kBACA,2BACA,mCACA,cACA,iBACA,uBC9cOgG,EACX99B,IAAAA,OACE,CAAC,EACD68B,ECbuB,CACzBkB,2BAA4B,CAC1BjG,QAAS,CACP,aACA,cACA,eACA,cACA,UACA,kBACA,YACA,cACA,SACA,cACA,MACA,cACA,aACA,iBACA,QACA,qBAEFiF,UAAW,CACT,aACA,kBACA,YAGJiB,sBAAuB,CACrBlG,QAAS,CACP,aACA,cACA,eACA,cACA,SACA,UACA,aACA,aACA,aACA,kBACA,YACA,cACA,SACA,MACA,cACA,aACA,iBACA,QACA,qBAEFiF,UAAW,CACT,aACA,oBAGJkB,wBAAyB,CACvBnG,QAAS,CACP,aACA,cACA,eACA,cACA,kBACA,oBACA,gBACA,2BACA,cACA,SACA,MACA,cACA,oBACA,iBACA,QACA,cAEFiF,UAAW,CACT,aACA,kBACA,oBACA,gBACA,6BAGJmB,iBAAkB,CAChBpG,QAAS,CACP,aACA,cACA,eACA,cACA,YACA,UACA,YAEFiF,UAAW,CACT,aACA,YACA,aC7F0B,CAC9B,oCAAqC,CACnCA,UAAW,CACT,aACA,eACA,cACA,iBAEFjF,QAAS,CACP,aACA,eACA,cACA,gBACA,cACA,SACA,MACA,aACA,QACA,kBACA,cACA,iBACA,sBAGJ,qCAAsC,CACpCiF,UAAW,CACT,aACA,eACA,cACA,aACA,iBAEFjF,QAAS,CACP,aACA,eACA,cACA,aACA,gBACA,cACA,SACA,MACA,aACA,QACA,kBACA,gBAGJ,oCAAqC,CACnCiF,UAAW,CACT,aACA,eACA,cACA,iBAEFjF,QAAS,CACP,aACA,eACA,cACA,gBACA,cACA,SACA,MACA,aACA,QACA,kBACA,gBAGJ,wCAAyC,CACvCiF,UAAW,CACT,aACA,UACA,cACA,eACA,cACA,WACA,yBACA,gBAEFjF,QAAS,CACP,aACA,UACA,cACA,eACA,cACA,WACA,cACA,SACA,MACA,aACA,QACA,kBACA,yBACA,gCACA,iCACA,kBC/FiB,CACrBqG,oBAAqB,CACnBpB,UAAW,CACT,OACA,gBACA,cACA,eACA,eACA,gBACA,aACA,oBAEFjF,QAAS,CACP,OACA,gBACA,cACA,eACA,eACA,cACA,gBACA,aACA,qBAGJsG,sBAAuB,CACrBtG,QAAS,CACP,QACA,eACA,eACA,gBACA,aACA,gBACA,qBACA,eACA,eACA,kBACA,gBACA,uBACA,qBACA,qBACA,SACA,iBACA,eACA,aACA,iBAEFiF,UAAW,CACT,WAGJsB,uBAAwB,CACtBvG,QAAS,CACP,QACA,eACA,gBACA,eACA,gBACA,uBACA,uBACA,qBACA,iBACA,eACA,cACA,gBAEFiF,UAAW,CACT,eACA,gBACA,gBACA,qBACA,iBACA,eACA,kBCxEuB,CAC3BuB,kCAAmC,CACjCvB,UAAW,CACT,YAEFjF,QAAS,CACP,WACA,eACA,cACA,YACA,aACA,mBACA,cACA,aACA,WACA,aAGJyG,4BAA6B,CAC3BzG,QAAS,CACP,eACA,cACA,eACA,eACA,mBACA,aACA,WACA,WACA,YAEFiF,UAAW,CACT,aAGJyB,yBAA0B,CACxBzB,UAAW,CACT,SACA,YACA,cACA,aACA,eACA,oBAEFjF,QAAS,CACP,SACA,YACA,cACA,aACA,eACA,sBCjDa,CACjB2G,+BAAgC,CAC9B3G,QAAS,CACP,aACA,cACA,aACA,kBACA,eACA,SACA,cACA,iBACA,oBACA,MACA,kBACA,cACA,2BACA,mCACA,cACA,WACA,SAEFiF,UAAW,CACT,aACA,oBAGJ2B,6BAA8B,CAC5B5G,QAAS,CACP,aACA,cACA,aACA,kBACA,SACA,eACA,cACA,iBACA,oBACA,MACA,YACA,YACA,YACA,cACA,2BACA,mCACA,WACA,cACA,SAEFiF,UAAW,CACT,aACA,YACA,YACA,cAGJ4B,gCAAiC,CAC/B7G,QAAS,CACP,aACA,cACA,aACA,kBACA,SACA,eACA,cACA,iBACA,oBACA,MACA,cACA,2BACA,mCACA,WACA,cACA,cACA,SAEFiF,UAAW,CACT,aACA,iBC7EiB,CACrB6B,kCAAmC,CACjC9G,QAAS,CACP,aACA,cACA,eACA,cACA,qBACA,eACA,gBACA,gBACA,cACA,SACA,MACA,aACA,mCACA,QACA,cACA,iBACA,qBAEFiF,UAAW,CACT,aACA,eACA,kBAGJ8B,sCAAuC,CACrC/G,QAAS,CACP,aACA,cACA,eACA,cACA,qBACA,eACA,gBACA,cACA,SACA,MACA,aACA,aACA,QACA,oCAEFiF,UAAW,CACT,aACA,qBACA,iBAGJ+B,kCAAmC,CACjChH,QAAS,CACP,aACA,cACA,eACA,cACA,oBACA,QACA,cACA,SACA,MACA,aACA,aACA,QACA,cACA,iBACA,oBACA,oCAEFiF,UAAW,CACT,eAGJgC,oCAAqC,CACnChC,UAAW,CACT,aACA,cACA,eACA,eAEFjF,QAAS,CACP,aACA,cACA,eACA,cACA,oBACA,QACA,qBACA,eACA,gBACA,cACA,SACA,MACA,aACA,mCACA,QACA,cACA,iBACA,sBAGJkH,wBAAyB,CACvBjC,UAAW,CACT,cACA,eACA,eACA,iCAEFjF,QAAS,CACP,cACA,eACA,qBACA,eACA,gBACA,4BACA,2BACA,kCAGJmH,qCAAsC,CACpClC,UAAW,CACT,cACA,eACA,cACA,mBAEFjF,QAAS,CACP,cACA,eACA,cACA,qBACA,oBACA,kBACA,mBCrImB,CACvBoH,wBAAyB,CACvBnC,UAAW,CACT,aACA,cACA,cACA,WACA,UAEFjF,QAAS,CACP,aACA,cACA,eACA,cACA,iBACA,WACA,SACA,cACA,2BACA,mCACA,SACA,cACA,UAGJqH,uCAAwC,CACtCpC,UAAW,CACT,aACA,cACA,cACA,cACA,eACA,mBAEFjF,QAAS,CACP,aACA,cACA,eACA,cACA,cACA,eACA,kBACA,iBACA,cACA,SACA,cACA,QACA,kBACA,2BACA,qCAGJ+F,8BAA+B,CAC7Bd,UAAW,CACT,aACA,eAEFjF,QAAS,CACP,aACA,cACA,eACA,cACA,iBACA,UACA,QACA,YACA,OACA,SACA,aACA,aACA,qBACA,mBACA,iBACA,kBACA,oBACA,wBACA,wBACA,cACA,SACA,MACA,aACA,aACA,QACA,kBACA,2BACA,mCACA,cACA,iBACA,sBAGJsH,4BAA6B,CAC3BrC,UAAW,CACT,aACA,eAEFjF,QAAS,CACP,aACA,cACA,eACA,cACA,iBACA,UACA,QACA,YACA,OACA,SACA,aACA,aACA,eACA,uBACA,cACA,SACA,MACA,aACA,aACA,QACA,kBACA,2BACA,mCACA,cACA,iBACA,wBCxHOuH,EAAkB,CAC7Bv5B,eAAgB,CACd6d,UAAW,WAAF,OAAQ,CAAI,EACrBC,QAAS,CACP,iBACA,oBACA,uBACA,qBACA,0BACA,aACA,0BACA,+BAGJ0b,IAAK,CACH3b,UAAW,SAAAtN,GAAW,OAAIA,EAAYkpB,oBAAoB,EAC1D3b,QAAS,CACP,WACA,eACA,eACA,iCACA,sCACA,wCACA,gBAGJ4b,aAAc,CACZ7b,UAAW,WAAF,OAAQ,CAAI,EACrBC,QAAS,CAAC,iBAEZ6b,SAAU,CACR9b,UAAW,SAAAtN,GAAW,OACpBA,EAAYqpB,wCAAwC,EACtD9b,QAAS,CAAC,aAEZ+b,YAAa,CACXhc,UAAW,SAAAtN,GAAW,OACpBA,EAAYupB,6BAA6B,EAC3Chc,QAAS,CAAC,gBAEZic,gBAAiB,CACflc,UAAW,SAAAtN,GAAW,OAAIA,EAAYypB,8BAA8B,EACpElc,QAAS,CACP,yBACA,wBAGJmc,8BAA+B,CAC7Bpc,UAAW,SAAAtN,GAAW,OAAIA,EAAY2pB,sCAAsC,EAC5Epc,QAAS,CACP,4BACA,qBACA,+BACA,+BAGJqc,2BAA4B,CAC1Btc,UAAW,SAAAtN,GAAW,OAAIA,EAAYmlB,QAAQ0E,cAAc,EAC5Dtc,QAAS,CACP,oBACA,yBAGJuc,sCAAuC,CACrCxc,UAAW,SAAAtN,GAAW,OAAIA,EAAYmlB,QAAQ0E,cAAc,EAC5Dtc,QAAS,CACP,iCAGJwc,6BAA8B,CAC5Bzc,UAAW,SAAAtN,GAAW,OAAIA,EAAYgqB,qCAAqC,EAC3Ezc,QAAS,CACP,2BACA,qCAGJ0c,6BAA8B,CAC5B3c,UAAW,SAAAtN,GAAW,OAAKA,EAAYkqB,qCAAqC,EAC5E3c,QAAS,CACP,oBAGJ4c,aAAc,CACZ7c,UAAW,SAAA8c,GAAU,OAAIA,EAAWC,4BAA4B,EAChE9c,QAASgZ,GAEX+D,eAAgB,CACdhd,UAAW,SAAAtN,GAAW,OAAIA,EAAYmlB,QAAQoF,8BAA8B,EAC5Ehd,QAAS,CAAC,cAAe,aAAc,SAEzCid,eACA,CACEld,UAAW,SAAA8c,GAAU,OAAIA,EAAWK,mCAAmC,EACvEld,QAAS,CACP,mBAGJmd,yBAA0B,CACxBpd,UAAW,WAAF,OAAQ,CAAI,EACrBC,QAAS,CACP,eACA,4BAGJ7d,YAAa,CACX4d,UAAW,SAAAtN,GAAW,OAAKA,EAAYmlB,QAAQC,kBAAkB,EACjE7X,QAAS,CACP,iBACA,cACA,iBACA,oBACA,wBACA,oBACA,+BACA,4BACA,yBAGJod,qBAAsB,CACpBrd,UAAW,SAAAtN,GAAW,OAAIA,EAAYmlB,QAAQC,kBAAkB,EAChE7X,QAAS,CACP,0BACA,uBACA,0BACA,6BACA,iCACA,6BACA,wCACA,qCACA,kCAGJ1O,YAAa,CACXyO,UAAW,SAAA8c,GAAU,OAAIA,EAAWQ,oCAAoC,EACxErd,QAAS,CACP,gBAGJsd,KAAM,CACJvd,UAAW,WAAF,OAAQ,CAAI,EACrBC,QAAS,CACP,SAGJud,eAAgB,CACdxd,UAAW,SAAAtN,GAAW,OAAIA,EAAYmlB,QAAQ4F,yBAA2B/qB,EAAYmlB,QAAQ6F,wCAAwC,EACrIzd,QAAS,CACP,eACA,iBACA,mBACA,iBAGJ0d,aAAc,CACZ3d,UAAW,SAAAtN,GAAW,OAAIA,EAAYmlB,QAAQ+F,iBAAiB,EAC/D3d,QAAS,CACP,oCACA,wCACA,UAGJ4d,iBAAkB,CAChB7d,UAAW,SAAAtN,GAAW,OAAIA,EAAYmlB,QAAQiG,qBAAqB,EACnE7d,QAAS,CACP,0CAGJ8d,WAAY,CACV/d,UAAW,WAAF,OAAQ,CAAI,EACrBC,QAAS,CACP,aACA,0BAGJ+d,eAAgB,CACdhe,UAAW,SAAAtN,GAAW,OAAIA,EAAYurB,kBAAoBvrB,EAAYmlB,QAAQqG,uBAAuB,EACrGje,QAAS,CACP,mBCnLOke,EACmB,CAC5Bne,UAAW,SAAA8c,GAAU,OAAIA,EAAWJ,qCAAqC,EACzEzc,QAAS,CACP,2BACA,qCALOke,EAQmB,CAC5Bne,UAAW,SAAA8c,GAAU,OAAKA,EAAWF,qCAAqC,EAC1E3c,QAAS,CACP,oBAXOke,EAcS,CAClBne,UAAW,SAAA8c,GAAU,OAAIA,EAAWsB,kBAAkB,EACtDne,QAAS,CACP,eCXJ9d,EAmBEu5B,EAnBFv5B,eAEA05B,EAiBEH,EAjBFG,aACAK,EAgBER,EAhBFQ,gBACAE,EAeEV,EAfFU,8BAEAK,EAaEf,EAbFe,6BACAE,EAYEjB,EAZFiB,6BACAE,EAWEnB,EAXFmB,aAEAK,EASExB,EATFwB,eACAE,EAQE1B,EARF0B,yBACAh7B,EAOEs5B,EAPFt5B,YACAi7B,EAME3B,EANF2B,qBAEAG,EAIE9B,EAJF8B,eACAG,EAGEjC,EAHFiC,aACAE,EAEEnC,EAFFmC,iBAUWQ,EAA4B,CACvClF,yBAA0B,CAACh3B,EAAgB+5B,EAAiBE,EAA+BP,EAAcc,EAHvGwB,EAGkKtB,EAAcK,EAAgB96B,EAAai7B,GAC/MvD,+BAAgC,CAAC33B,EAAgB+5B,EAAiBE,EAA+BP,EAAcY,EAA8BE,EAA8Bv6B,EAAai7B,GACxLhD,sBAAuB,CAACl4B,EAAgB+5B,EAAiBE,EAA+BP,EAAcz5B,EAAai7B,GACnHjD,2BAA4B,CAACj4B,EAAgB+5B,EAAiBE,EAA+BP,EAAcz5B,EAAai7B,GACxH/C,wBAAyB,CAACn4B,EAAgB+5B,EAAiBE,EAA+BP,EAAcz5B,EAAai7B,GACrH/D,yBAA0B,CAACn3B,EAAgB+5B,EAAiBE,EAA+BP,EAdzFH,EAdFM,YA4BsHW,EARpHwB,EAQ+KtB,EAAcK,EAAgB96B,EAAai7B,EAAsBM,EAAcE,GAChQtE,oBAAqB,CAfnBmC,EApBFC,IAmC2Bx5B,EAAgB+5B,EAAiBE,EAA+BP,EAAcY,EAA8BE,EATrIwB,EASgMtB,EAAcK,EAAgB96B,EAAai7B,EAf3O3B,EADFqC,WAgB+QJ,EAAcE,GAC7RtC,wBAAyB,CAACp5B,EAAgB+5B,EAAiBE,EAA+BP,EAAcY,EAA8BE,EAA8BE,EAAcK,EAAgB96B,EAAai7B,GAC/MtD,0BAA2B,CAAC53B,EAAgB+5B,EAAiBE,EAA+BP,EAAcY,EAA8BE,EAXtIwB,EAWiMtB,EAAcz6B,EAAai7B,GAC9N3C,uBAAwB,GACxBF,oBAAqB,GACrBD,iBAAkB,GAClBlB,0BAA2B,CAACl3B,EAAgB+5B,EAAiBE,EAA+BP,EAAcc,EAfxGwB,EAemKtB,EAAcK,EAAgB96B,EAAai7B,EAAsBM,EAAcE,GACpP5D,4BAA6B,CAAC93B,EAAgB+5B,EAAiBE,EAA+BP,EAAcc,EAA8Bv6B,EAAai7B,GACvJzD,gCAAiC,CAACz3B,EAAgB+5B,EAAiBE,EAA+BP,EAAcY,EAA8BE,EAA8Bv6B,EAAai7B,GACzLvC,+BAAgC,CAAC34B,EAAgB+5B,EAAiBE,EAA+BP,EAAcY,EAA8BE,EAA8Bv6B,EAAai7B,EAxBtL3B,EALF6B,MA8BAxC,6BAA8B,CAAC54B,EAAgB+5B,EAAiBE,EAA+BP,EAAcY,EAA8BE,EAA8Bv6B,EAAai7B,GACtLrC,gCAAiC,CAAC74B,EAAgB+5B,EAAiBE,EAA+BP,EAAcY,EAA8BE,EA1B5IjB,EAVFnqB,YAoCyLnP,EAAai7B,GACtM5B,4BAA6B,CAACt5B,EAAgB+5B,EAAiBE,EAA+BP,EAAcY,EAA8BE,EArBxIwB,EAqBmMtB,EAAcK,EAAgBE,EAA0Bh7B,EAAai7B,GAE1QrD,sBAAuB,CA7BrB0B,EAlBFI,SA+CkCI,EAAiBE,EAA+BP,EAAcz5B,EAAai7B,GAC7G7D,yBAA0B,CAACr3B,EAAgB+5B,EAAiBE,EAA+BP,EAAcY,EAA8BE,EAA8BO,EAAgB96B,EAAai7B,GAClM5D,8BAA+B,GAC/B0B,kCAAmC,CAACh5B,EAAgB+5B,EAAiBE,EAA+BK,EAA8BE,EA1BhIwB,EA0B2L/7B,EAAai7B,EAAsBG,GAChOnC,wBAAyB,CAACmC,GAC1BlC,qCAAsC,CAACkC,GACvCvC,kCAAmC,CAAC94B,EAAgB+5B,EAAiBE,EAA+BK,EAA8BE,EAA8Bv6B,EAAai7B,EAAsBG,GACnMtC,sCAAuC,CAAC/4B,EAAgB+5B,EAAiBE,EAA+BK,EAA8BE,EA9BpIwB,EA8B+L/7B,EAAai7B,EAAsBG,GACpOpC,oCAAqC,CAACj5B,EAAgB+5B,EAAiBE,EAA+BK,EAA8BE,EAA8Bv6B,EAAai7B,EAAsBG,GACrMhC,uCAAwC,CAACr5B,EAAgB+5B,EAAiBE,EAA+BP,EAAcY,EAA8BE,EAA8BE,EAAcK,EAAgB96B,EAAai7B,GAC9NxD,gCAAiC,CAAC13B,EAAgB+5B,EAAiBE,EAA+BP,EAAcY,EAA8BE,EAjC5IwB,EAiCuMtB,EAAcz6B,EAAai7B,GACpO1C,kCAAmC,GACnChB,6BAA8B,CAACx3B,EAAgB+5B,EAAiBE,EAA+BP,EAAcY,EAA8BE,EAA8BO,EAAgB96B,EAAai7B,GACtM3D,mBAAoB,CAACv3B,EAAgB+5B,EAAiBE,EAA+BP,EApCnFsC,EAoC8HxB,EAA8Bv6B,EAAai7B,GAC3KnD,8BAA+B,CAAC/3B,EAAgB+5B,EAAiBE,EAA+BP,EAAcY,EAA8BE,EArC1IwB,EAqCqMtB,EAAcK,EAAgBE,EAA0Bh7B,EAAai7B,GAC5Q,oCAAqC,CAACV,GACtC,qCAAsC,CAACA,GACvC,oCAAqC,CAACA,GACtC,wCAAyC,CAACA,IAG/B2B,EAAyB,CACpCnF,yBAA0B,CA7CxBgF,EAAAA,EAAAA,GA8CFrE,+BAAgC,CA9C9BqE,EAAAA,GA+CF7E,yBAA0B,CA/CxB6E,EAAAA,EAAAA,GAgDF5E,oBAAqB,CAhDnB4E,EAAAA,EAAAA,GAiDF5C,wBAAyB,CAjDvB4C,EAAAA,GAkDFpE,0BAA2B,CAlDzBoE,EAAAA,EAAAA,GAmDF9E,0BAA2B,CAnDzB8E,EAAAA,EAAAA,GAoDFvE,gCAAiC,CApD/BuE,EAAAA,GAqDFrD,+BAAgC,CArD9BqD,EAAAA,GAsDFpD,6BAA8B,CAtD5BoD,EAAAA,GAuDFnD,gCAAiC,CAvD/BmD,EAAAA,GAwDF1C,4BAA6B,CAxD3B0C,EAAAA,EAAAA,GAyDF3E,yBAA0B,CAzDxB2E,EAAAA,GA0DFhD,kCAAmC,CA1DjCgD,EAAAA,EAAAA,GA2DFlD,kCAAmC,CA3DjCkD,EAAAA,GA4DFjD,sCAAuC,CA5DrCiD,EAAAA,EAAAA,GA6DF/C,oCAAqC,CA7DnC+C,EAAAA,GA8DF3C,uCAAwC,CA9DtC2C,EAAAA,GA+DFtE,gCAAiC,CA/D/BsE,EAAAA,EAAAA,GAgEFxE,6BAA8B,CAhE5BwE,EAAAA,GAiEFzE,mBAAoB,CAjElByE,EAAAA,EAAAA,GAkEFjE,8BAA+B,CAlE7BiE,EAAAA,EAAAA,GAmEF,oCAAqC,CAnEnCA,GAoEF,qCAAsC,CApEpCA,GAqEF,oCAAqC,CArEnCA,GAsEF,wCAAyC,CAtEvCA,IC/BSI,EAAc,CAEzBC,iCAAkC,qDAElCC,8CAA+C,qDAE/CC,4CAA6C,mDAE7CC,kCAAmC,kDAEnCC,UAAW,qCAEXC,YAAa,mCAEbC,cAAe,yCAEfC,cAAe,yCAEfC,cAAe,yCAEfC,eAAgB,0CAEhBC,eAAgB,sCAEhBC,cAAe,mCAEfC,yBAA0B,gDAE1BC,gBAAiB,6CAEjBC,kBAAmB,6CAEnBC,mBAAoB,wCAEpBC,mBAAoB,wCAEpBC,UAAW,qCAEXC,cAAe,yCAEfC,YAAa,mCAEbC,cAAe,yCAEf5D,YAAa,yBAEbuB,KAAM,4BAENsC,SAAU,oCAEVC,YAAa,uCAEb5C,eAAgB,0CAEhB6C,SAAU,oCAEVC,QAAS,mCAETC,OAAQ,8BAERC,SAAU,oCAEVC,WAAY,kCAEZ79B,kBAAmB,mCACnB89B,2BAA4B,mCAE5Bj+B,eAAgB,+BAChBk+B,wBAAyB,+BAEzB19B,qBAAsB,kCACtB29B,8BAA+B,kCAE/BC,mBAAoB,mCAEpBC,WAAY,sCAEZC,wBAAyB,gDAEzBC,SAAU,oCAEVC,eAAgB,8BAEhBC,oBAAqB,4BAErBC,oBAAqB,4BAErBC,QAAS,iCAETC,cAAe,yCAEfC,iBAAkB,iCAElBC,kBAAmB,wBAEnBC,iBAAkB,2CAElBC,WAAY,sCACZC,+BAAgC,2DAChCC,oCAAqC,oEACrCC,sCAAuC,sEAEvCC,aAAc,wCAEdC,aAAc,0BAEdC,WAAY,8BAEZC,WAAY,oCAEZC,WAAY,8BAEZC,gBAAiB,mCACjBC,eAAgB,0CAEhBC,aAAc,wCAEdC,aAAc,wCAEdC,cAAe,wBAEfC,aAAc,sCAEdC,gBAAiB,uCAEjBC,aAAc,sCACdC,gBAAiB,yCAEjBC,YAAa,uCAEbC,mBAAoB,sCAEpBC,qBAAsB,6BAEtBC,cAAe,yCAEfC,MAAO,iCAEPC,wBAAyB,6CAEzBC,WAAY,kCAEZC,aAAc,wCAEdC,aAAc,wCAEdC,IAAK,6BAELC,IAAK,2BAELC,WAAY,sCAEZC,eAAgB,0CAEhBC,aAAc,oCAEdC,eAAgB,0CAEhBC,aAAc,wCAEdC,UAAW,gDAEXC,UAAW,kDAEXC,UAAW,mDAEXC,aAAc,4CAEdC,aAAc,qCAEdC,aAAc,gCACdC,iBAAkB,KAElBC,UAAW,qCAEXC,KAAM,wCAENC,WAAY,kCAEZC,kBAAmB,sCAEnBC,UAAW,qCAEXC,YAAa,0CAEbC,OAAQ,8BAERC,YAAa,uCAEbC,UAAW,qCAEXC,cAAe,yCAEfC,aAAc,wCAEdjiC,eAAgB,gCAChBkiC,wBAAyB,gCAEzBniC,YAAa,4BACbi7B,qBAAsB,4BAEtBmH,cAAe,yCAEfhiC,kBAAmB,6BACnBiiC,2BAA4B,6BAE5BC,QAAS,yCAETC,cAAe,gDAEfC,OAAQ,0CAERC,aAAc,iCAEdC,cAAe,kCAEfC,aAAc,uCAEdC,aAAc,uCAEdC,aAAc,uCAEdC,aAAc,uCAEdC,aAAc,uCAEdC,iBAAkB,4CAElB57B,WAAY,oCAEZ67B,aAAc,wCAEdC,WAAY,sCAEZx0B,KAAM,gCAENy0B,SAAU,gCAEVv2B,UAAW,qCAEXw2B,mBAAoB,4CAEpBC,eAAgB,sCAEhBC,SAAU,oCAEVC,WAAY,sCAEZC,WAAY,sCAEZC,eAAgB,uCAEhBC,aAAc,wCAEdC,SAAU,oCAEVC,gBAAiB,0CAEjBC,kBAAmB,4CAEnBC,sBAAuB,gDAEvBC,kBAAmB,KAEnBj8B,QAAS,uCAETk8B,SAAU,oCAEVC,WAAY,sCAEZC,iCAAkC,mDAElCC,YAAa,0CAEbC,aAAc,wCAEdC,QAAS,uCAETC,YAAa,uCAEbC,eAAgB,0CAEhBC,SAAU,oCAEVC,eAAgB,oCAEhBC,aAAc,iCAEdC,oBAAqB,uCAErBC,OAAQ,kCAERC,KAAM,gCAENpL,aAAc,wCAEdqL,OAAQ,kCAERpL,SAAU,oCAEVqL,cAAe,gCACfC,KAAM,4BAENC,SAAU,wCAEV91B,YAAa,2CAEb+1B,sBAAuB,+CAEvBC,sBAAuB,uCAEvBC,gCAAiC,+CAEjCC,uBAAwB,sCAExB34B,UAAW,qCAEX44B,WAAY,sCAEZC,mCAAoC,yCAEpCC,2BAA4B,yCAE5BC,8BAA+B,4CAE/BC,mCAAoC,+CAEpCC,+BAAgC,0CAEhCC,4BAA6B,0CAE7BC,uBAAwB,yCAExBC,YAAa,4BAEbC,aAAc,wCAEdC,YAAa,sCAEbC,gBAAiB,2CAEjBC,QAAS,mCAETC,UAAW,qCAEXC,cAAe,yCAEfC,cAAe,yCAEfC,sBAAuB,mDAEvBC,iBAAkB,gDAElBC,SAAU,oCAEVC,eAAgB,oCAEhBC,WAAY,sDAEZC,aAAc,wCAEdC,aAAc,wCAEdC,iBAAkB,4CAElBC,wBAAyB,+CAEzBC,yBAA0B,mDAE1B5mC,sBAAuB,+CACvB6mC,+BAAgC,+CAEhCC,wBAAyB,mDAEzBC,sBAAuB,yCAEvBC,6BAA8B,6CAE9BC,8BAA+B,yDAE/BC,aAAc,+BAEdC,YAAa,+BAEbC,YAAa,mCAEbC,yBAA0B,6BAE1BC,0BAA2B,6BAE3BC,8BAA+B,6BAE/BC,kBAAmB,6CAEnBC,UAAW,yCAEXC,MAAO,iCAEPC,iBAAkB,wCAElBC,cAAe,yCAEfC,qBAAsB,wCACtBC,IAAK,2BAELC,gBAAiB,2CAEjBC,oBAAqB,mCAErBC,kBAAmB,wCAEnBC,sBAAuB,4CAEvBC,yBAA0B,kDAC1BC,aAAc,gDAEdC,aAAc,kCAEdC,WAAY,sCAEZC,cAAe,yCAEfC,QAAS,iCAETC,SAAU,oCAEVC,cAAe,gDAEfC,SAAU,oCAEVC,OAAQ,kCAERC,OAAQ,kCAERC,OAAQ,kCAERC,cAAe,gDAEfC,MAAO,iCAEPC,MAAO,iCAEPC,WAAY,sCAEZC,iBAAkB,iCAElBC,WAAY,mCAEZC,MAAO,iCAEPC,cAAe,yCAEfC,cAAe,yCACfC,mBAAoB,0CAEpBC,iBAAkB,oCAElBC,iBAAkB,oCAElBC,iBAAkB,oCAElBC,iBAAkB,oCAElBC,iBAAkB,oCAElBC,aAAc,wCAEdC,YAAa,uCAEbC,aAAc,uCAEdC,aAAc,uCAEdC,aAAc,uCAEdC,aAAc,uCAEdC,aAAc,uCAEdC,wBAAyB,qCAEzBC,IAAK,2BAELC,aAAc,yCAEdC,cAAe,uCAEfC,aAAc,sCAEdC,eAAgB,0CAEhBC,QAAS,+BAETC,gBAAiB,yCAEjBC,mBAAoB,4CAEpBC,kBAAmB,2CAEnBC,eAAgB,0CAEhBC,sBAAuB,+CACvBC,wBAAyB,iDAEzBC,sBAAuB,4CAEvBC,iBAAkB,0CAElBC,OAAQ,kCACRC,YAAa,uCAEbC,gBAAiB,qCAEjBC,QAAS,+BAETC,iBAAkB,yCAElBC,qBAAsB,6CAEtBC,WAAY,sCAEZC,YAAa,sCAEbC,WAAY,sCAEZC,mBAAoB,sCAEpBC,qBAAsB,wCAEtBC,cAAe,yCAEfC,MAAO,6BAEPtkC,UAAW,yCAEXukC,MAAO,yCAEPC,OAAQ,yCAERC,iBAAkB,wBAElBC,WAAY,gCAEZC,QAAS,4BAET,uBAAwB,qCAExB,uBAAwB,qCAExBzvC,MAAO,iCAEP0vC,WAAY,oCAEZC,WAAY,oCAEZC,WAAY,oCAEZC,KAAM,gCAENC,yBAA0B,6CAE1BC,sCAAuC,qDAEvCC,oCAAqC,mDAErCC,0BAA2B,8CAE3BC,WAAY,oCAEZC,YAAa,4CAEbC,wBAAyB,2CAEzBC,iBAAkB,4CAElBlmC,OAAQ,kCAERmmC,gBAAiB,+CAEjBC,KAAM,gCAENC,mBAAoB,8CAEpBC,uBAAwB,uCAExBC,mBAAoB,kDAEpBptC,6BAA8B,8CAC9BqtC,sCAAuC,8CAEvCC,2BAA4B,0DAE5BrtC,0BAA2B,+CAC3BstC,mCAAoC,+CAEpCC,KAAM,gCAENC,WAAY,6BACZC,gBAAiB,kCACjBC,WAAY,6BACZC,mBAAoB,wCACpBC,8BAA+B,gDAC/BC,6BAA8B,+CAC9BC,sBAAuB,wCACvBC,sBAAuB,wCACvBC,sBAAuB,wCACvBC,oBAAqB,sCACrBC,oBAAqB,uCC9lBVC,EAA+B,CAC1C1V,kCAAmC1/B,2N,eCA/Bq1C,EAAgB,CACpBC,aAAc,CAAC,OCDjB,SAASC,EACP/wB,EAASgxB,EAAkBC,EAC3BC,EAAa5S,GAEb,OAAOliC,IAAAA,IAAM4jB,GAAS,SAAC5hB,EAAOD,GAC5B,IAAMsK,EAAO,CAEXtK,IAAAA,EACAmI,KAAMlK,IAAAA,OAAS80C,EAAa/yC,EAAKA,GACjCyG,KAAMxI,IAAAA,OAASgC,EAAO,cAAe,KAavC,OAVI6yC,EAAwB9yC,KAC1BsK,EAAK2U,oBAAsB6zB,EAAwB9yC,IAEjD6yC,EAAiB7yC,KACnBsK,EAAK0oC,aAAe,aAElB/0C,IAAAA,IAAMkiC,EAAangC,KACrBsK,EAAK2oC,UAAY9S,EAAYngC,IAGxBsK,CACT,GACF,CCpBO,SAAS4oC,EACd7hB,EAAc1rB,EACdwtC,EAAiBC,EAAsBC,EACvCN,GACC,IADY5S,EAAW16B,UAAAC,OAAA,QAAAzD,IAAAwD,UAAA,GAAAA,UAAA,GAAG,CAAC,EAAG6tC,EAAiB7tC,UAAAC,OAAA,EAAAD,UAAA,QAAAxD,EAAEsxC,EAA2B9tC,UAAAC,OAAA,EAAAD,UAAA,QAAAxD,EAEvEuxC,EAAYniB,EAAarc,WAEzB9D,EAAejT,IAAAA,KAAOu1C,EAAW,oBAAqB,gBAAiB,mBAAoB,oBACjGtiC,EAAaklB,WAAaod,EAAUpd,WAEhCllB,EAAakS,mBACflS,EAAamS,4BAA8BkwB,GAG7C,IAAME,EAAwBviC,EAAazO,kBAAkB8D,KAC7D2K,EAAazO,kBAAkBszB,QAAU93B,IAAAA,SAAWw1C,EAAuB,WAAa,UAAYA,EAAsB,GAC1HviC,EAAaO,cACXxT,IAAAA,OACEw1C,EACAx1C,IAAAA,IAAMw1C,GAAuB,SAAAxzC,GAAK,MAAe,WAAVA,GAAgC,cAAVA,EAAwBuzC,EAAU/hC,cAAchB,OAAS+iC,EAAU/hC,cAAcd,KAAK,KAGnJ2iC,IACFpiC,EAAaC,WAAamiC,GAI5B,IC/BkCI,EAAQC,ED+BpCC,EAAeJ,EAAUlsC,QAAQ0N,WAEjC6+B,EF7BD,SAAwBH,GAC7B,OAAOz1C,IAAAA,UAAYy1C,GAAQ,SAACI,EAAUvmB,GACpC,IAAMvD,GAAKhsB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACN81C,GAAQ,IACXC,YAAY,IAOd,OAJIrB,EAAcnlB,KAChBvD,EAAMzjB,KAAOtI,IAAAA,WAAa+rB,EAAMzjB,KAAMmsC,EAAcnlB,KAG/CvD,CACT,GACF,CEgB0BgqB,ECjCUN,EDgCYE,EChCJD,EDgCkBhuC,EAAaC,QC/BlE3H,IAAAA,UAAYy1C,GAAQ,SAAC1pB,GAC1B,IAAMiqB,EAAcjqB,EAAMkqB,SAAW,GAGrC,OAFqBj2C,IAAAA,OAAS01C,EAAQM,EAAY3qB,QAAQ,kBAAmB,IAG/E,MD4BArrB,IAAAA,OAASiT,EAAc,CACrB5J,QAAS,CACPb,KAAM+sC,EAAUlsC,QAAQb,KACxBuO,WAAY6+B,KAKhB,IAAMM,EAAkB,CAAC,mBAAoB,iBACvCC,EAAen2C,IAAAA,KAAOu1C,GAAW,SAAClpC,EAAMtK,GAAG,OAC/C/B,IAAAA,SAAWk2C,EAAiBn0C,KAAS/B,IAAAA,QAAUqM,EAAK,IAE3CgrB,EAIP6d,EAJFpd,QACAX,EAGE+d,EAHF/d,iBACAC,EAEE8d,EAFF9d,gBACWwd,EACTM,EADFnY,UAIIzE,EAAc,CAAC,SAClBv5B,OAAOo4B,GAAoByd,EAAiBntC,OAAS,EAAI,CAAC,aAAe,IACzE1I,OAAOq4B,GAAmBwd,EAAiBntC,OAAS,EAAI,CAAC,YAAc,IACpE2uC,EAAsBp2C,IAAAA,OAAS40C,EAAkBA,GACjDyB,EAAkBd,EAAUe,iBAAmB,GAC/CC,EAAMv2C,IAAAA,WAAaq2C,EAAiBzB,GAC1C,IAAK50C,IAAAA,QAAUu2C,GACb,MAAM,IAAIhqC,MAAM,oCAADxN,OAAqCq0B,EAAalpB,KAAI,MAAAnL,OAAKy3C,KAAKC,UAAUF,KAE3F,IAAM1B,EE9DkC,SAACU,GACzC,IAAMrpC,EAAS,CAAC,EAChB,OAAKqpC,EAAUmB,sBAGf12C,IAAAA,QAAUu1C,EAAUmB,sBAAsB,SAACrqC,EAAMhC,GAC3CrK,IAAAA,QAAUqM,IACZrM,IAAAA,QAAUqM,GAAM,SAACsqC,GACVzqC,EAAOyqC,KACVzqC,EAAOyqC,GAAa,IAEtBzqC,EAAOyqC,GAAWzoC,KAAK7D,EACzB,GAEJ,IACO6B,GAZEA,CAaX,CF8CkC0qC,CAA2BrB,GAErDsB,EDtCD,SACL33B,EAAY01B,GAEX,IADDC,EAAuBrtC,UAAAC,OAAA,QAAAzD,IAAAwD,UAAA,GAAAA,UAAA,GAAG,CAAC,EAAGstC,EAAWttC,UAAAC,OAAA,QAAAzD,IAAAwD,UAAA,GAAAA,UAAA,GAAG,CAAC,EAAG06B,EAAW16B,UAAAC,OAAA,QAAAzD,IAAAwD,UAAA,GAAAA,UAAA,GAAG,CAAC,EAE/D,OAAOxH,IAAAA,IAAMkf,GAAY,SAACqB,EAAUxe,GAAG,MAAM,CAC3CmI,KAAMlK,IAAAA,OAAS80C,EAAa/yC,EAAKA,GACjCyG,KAAMzG,EACNwJ,QAASopC,EACPp0B,EAAUq0B,EAAkBC,EAC5BC,EAAa5S,GAEhB,GACH,CC2BI4U,CACEX,EAAcC,EAAqBvB,EACnCC,EAAa5S,GAcjB,OAZAliC,IAAAA,OAASiT,EAAc,CACrBqlB,YAAAA,EACApW,QAAS,CACPhD,WAAY23B,EACZ/e,QAAST,EACTF,iBAAAA,EACAC,gBAAAA,EACAhV,QAAS+yB,EACTpd,aAAcqd,KAIXniC,CACT,CGpFO,IAAMoiC,EAAoB,CAC/B,oCACA,CACEziC,OAAQ,CAAC,0BAA2B,UACpCkB,qBAAsB,CAAC,0BAA2B,WAEpD,qCAAsC,CACpCjB,QAAS,CAAC,gBAAiB,WAE7B,oCAAqC,CACnCA,QAAS,CAAC,eAAgB,YC4CxBkkC,EAAU/2C,IAAAA,SACd,SAAAu1C,GAAS,OACPN,EACEM,EACAyB,EAAAA,EACAlZ,EAAmByX,EAAUrrC,MAC7B83B,EAA0BuT,EAAUrrC,OAAS,GAC7C+3B,EAAuBsT,EAAUrrC,OAAS,GAC1C3F,EAAAA,GAAQ0yC,WACR/U,EACAmT,EAAkBE,EAAUrrC,MAC5BsqC,EAA6Be,EAAUrrC,MACxC,IACH,SAAA+I,GAAY,OAAIA,EAAa/I,IAAI,IA8CtBsM,EAAS,CAAC,EACvB8W,OAAO4pB,iBAAiB1gC,EAAQ,CAC9BsmB,yBAA0B,CAAElM,IA5CU,WAAH,OAASmmB,EAAQI,EAAAA,GAA8B,EA4CvBC,YAAY,GACvE,oCAAqC,CAAExmB,IA5CQ,WAAH,OAASmmB,EAAQM,EAAAA,GAAuC,EA4CrBD,YAAY,GAC3F,qCAAsC,CAAExmB,IA5CQ,WAAH,OAASmmB,EAAQO,EAAAA,GAAwC,EA4CrBF,YAAY,GAC7F,oCAAqC,CAAExmB,IA5CQ,WAAH,OAASmmB,EAAQQ,EAAAA,GAAuC,EA4CrBH,YAAY,GAC3F,wCAAyC,CAAExmB,IA5CQ,WAAH,OAASmmB,EAAQS,EAAAA,GAA2C,EA4CrBJ,YAAY,GACnG3Z,+BAAgC,CAAE7M,IA5CU,WAAH,OAASmmB,EAAQU,EAAAA,GAAoC,EA4CvBL,YAAY,GACnFpZ,sBAAuB,CAAEpN,IA5CU,WAAH,OAASmmB,EAAQW,EAAAA,GAA2B,EA4CvBN,YAAY,GACjErZ,2BAA4B,CAAEnN,IA5CU,WAAH,OAASmmB,EAAQY,EAAAA,GAAgC,EA4CvBP,YAAY,GAC3EnZ,wBAAyB,CAAErN,IA5CU,WAAH,OAASmmB,EAAQa,EAAAA,GAA6B,EA4CvBR,YAAY,GACrEna,yBAA0B,CAAErM,IA5CU,WAAH,OAASmmB,EAAQc,EAAAA,GAA8B,EA4CvBT,YAAY,GACvEla,oBAAqB,CAAEtM,IA5CU,WAAH,OAASmmB,EAAQe,EAAAA,GAAyB,EA4CvBV,YAAY,GAC7DlY,wBAAyB,CAAEtO,IA5CU,WAAH,OAASmmB,EAAQgB,EAAAA,GAA6B,EA4CvBX,YAAY,GACrE1Z,0BAA2B,CAAE9M,IA5CU,WAAH,OAASmmB,EAAQiB,EAAAA,GAA+B,EA4CvBZ,YAAY,GACzE/Y,uBAAwB,CAAEzN,IA5CU,WAAH,OAASmmB,EAAQkB,EAAAA,GAA4B,EA4CvBb,YAAY,GACnEjZ,oBAAqB,CAAEvN,IA5CU,WAAH,OAASmmB,EAAQmB,EAAAA,GAAyB,EA4CvBd,YAAY,GAC7DlZ,iBAAkB,CAAEtN,IA5CU,WAAH,OAASmmB,EAAQoB,EAAAA,GAAsB,EA4CvBf,YAAY,GACvDpa,0BAA2B,CAAEpM,IA5CU,WAAH,OAASmmB,EAAQqB,EAAAA,GAA+B,EA4CvBhB,YAAY,GACzExZ,4BAA6B,CAAEhN,IA5CU,WAAH,OAASmmB,EAAQsB,EAAAA,GAAiC,EA4CvBjB,YAAY,GAC7EhZ,sBAAuB,CAAExN,IA5CU,WAAH,OAASmmB,EAAQuB,EAAAA,GAA2B,EA4CvBlB,YAAY,GACjE3Y,+BAAgC,CAAE7N,IA5CU,WAAH,OAASmmB,EAAQwB,EAAAA,GAAoC,EA4CvBnB,YAAY,GACnF1Y,6BAA8B,CAAE9N,IA5CU,WAAH,OAASmmB,EAAQyB,EAAAA,GAAkC,EA4CvBpB,YAAY,GAC/EzY,gCAAiC,CAAE/N,IA5CU,WAAH,OAASmmB,EAAQ0B,EAAAA,GAAqC,EA4CvBrB,YAAY,GACrF7Z,gCAAiC,CAAE3M,IA5CU,WAAH,OAASmmB,EAAQ2B,EAAAA,GAAqC,EA4CvBtB,YAAY,GACrF5Y,yBAA0B,CAAE5N,IA5CU,WAAH,OAASmmB,EAAQ4B,EAAAA,GAA8B,EA4CvBvB,YAAY,GACvEhY,4BAA6B,CAAExO,IA5CU,WAAH,OAASmmB,EAAQ6B,EAAAA,GAAiC,EA4CvBxB,YAAY,GAC7EzZ,sBAAuB,CAAE/M,IA5CU,WAAH,OAASmmB,EAAQ8B,EAAAA,GAA2B,EA4CvBzB,YAAY,GACjEja,yBAA0B,CAAEvM,IA5CU,WAAH,OAASmmB,EAAQ+B,EAAAA,GAA8B,EA4CvB1B,YAAY,GACvEha,8BAA+B,CAAExM,IA5CU,WAAH,OAASmmB,EAAQgC,EAAAA,GAAmC,EA4CvB3B,YAAY,GACjFtY,kCAAmC,CAAElO,IA5CU,WAAH,OAASmmB,EAAQiC,EAAAA,GAAuC,EA4CvB5B,YAAY,GACzFpY,wBAAyB,CAAEpO,IA5CU,WAAH,OAASmmB,EAAQkC,EAAAA,GAA6B,EA4CvB7B,YAAY,GACrEnY,qCAAsC,CAAErO,IA5CU,WAAH,OAASmmB,EAAQmC,EAAAA,GAA0C,EA4CvB9B,YAAY,GAC/FxY,kCAAmC,CAAEhO,IA5CU,WAAH,OAASmmB,EAAQoC,EAAAA,GAAuC,EA4CvB/B,YAAY,GACzFvY,sCAAuC,CAAEjO,IA5CU,WAAH,OAASmmB,EAAQqC,EAAAA,GAA2C,EA4CvBhC,YAAY,GACjGrY,oCAAqC,CAAEnO,IA5CU,WAAH,OAASmmB,EAAQsC,EAAAA,GAAyC,EA4CvBjC,YAAY,GAC7FjY,uCAAwC,CAAEvO,IA5CU,WAAH,OAASmmB,EAAQuC,EAAAA,GAA4C,EA4CvBlC,YAAY,GACnG5Z,gCAAiC,CAAE5M,IA5CU,WAAH,OAASmmB,EAAQwC,EAAAA,GAAqC,EA4CvBnC,YAAY,GACrF9Y,kCAAmC,CAAE1N,IA5CU,WAAH,OAASmmB,EAAQyC,EAAAA,GAAuC,EA4CvBpC,YAAY,GACzF9Z,6BAA8B,CAAE1M,IA5CU,WAAH,OAASmmB,EAAQ0C,EAAAA,GAAkC,EA4CvBrC,YAAY,GAC/E/Z,mBAAoB,CAAEzM,IA5CU,WAAH,OAASmmB,EAAQ2C,EAAAA,GAAwB,EA4CvBtC,YAAY,GAC3DvZ,8BAA+B,CAAEjN,IA5CU,WAAH,OAASmmB,EAAQ4C,EAAAA,GAAmC,EA4CvBvC,YAAY,GACjF7Y,4BAA6B,CAAE3N,IA5CU,WAAH,OAASmmB,EAAQ6C,EAAAA,GAAiC,EA4CvBxC,YAAY,KC3JxE,IAAM9b,EAAoB,CAC/Bue,4BAA4B,EAC5B,2BAA2B,EAC3B,iBAAiB,EACjB,sBAAsB,EACtB,oBAAoB,E,s+BCGTC,EAAa,CACxBC,EAAAA,GCT2B,CAC3BC,qBAAsB56C,iBACtB66C,wBAAyB76C,GACzB86C,qCAAsC96C,oBACtC+6C,oCAAqC/6C,8CACrCg7C,4CAA6Ch7C,gBAC7Ci7C,+CAAgDj7C,mBAChDk7C,oCAAqCl7C,2BACrCm7C,oBAAqBn7C,QACrBo7C,qBAAsBp7C,GACtBq7C,kBAAmBr7C,MACnBs7C,oBAAqBt7C,QACrBu7C,qBAAsBv7C,SACtBw7C,2BAA4Bx7C,kBAC5By7C,8BAA+Bz7C,qBAC/B07C,gCAAiC17C,8BACjC27C,6BAA8B37C,mBAC9B47C,uBAAwB57C,MACxB67C,4BAA6B77C,gBAC7B87C,wBAAyB97C,4BACzB+7C,2BAA4B/7C,+BAC5Bg8C,yBAA0Bh8C,0EAC1Bi8C,yBAA0Bj8C,sGAC1Bk8C,yBAA0Bl8C,kJAC1Bm8C,6BAA8Bn8C,gDAC9Bo8C,4BAA6Bp8C,+CAC7Bq8C,2BAA4Br8C,8CAC5Bs8C,0BAA2Bt8C,8CC3BP,CACpBu8C,mBAAoBv8C,YACpBw8C,mBAAoBx8C,SACpBy8C,oBAAqBz8C,iBACrB08C,yBAA0B18C,WAC1B28C,6BAA8B38C,mBAC9B48C,2BAA4B58C,cAC5B68C,yBAA0B78C,YAC1B88C,mBAAoB98C,YACpB+8C,mBAAoB/8C,eACpBg9C,oBAAqBh9C,sBACrBi9C,oBAAqBj9C,yBACrBk9C,wCAAyCl9C,6BACzCm9C,kCAAmCn9C,iBACnCo9C,gCAAiCp9C,8BACjCq9C,sCAAuCr9C,qCACvCs9C,iCAAkCt9C,8BAClCu9C,8BAA+Bv9C,wBAC/Bw9C,kCAAmCx9C,kCACnCy9C,6BAA8Bz9C,sCAC9B09C,cAAe19C,SACf29C,yBAA0B39C,cAC1B49C,YAAa59C,cACb69C,qBAAsB79C,iBACtB89C,0BAA2B99C,gBAC3B+9C,uBAAwB/9C,oBACxBg+C,uBAAwBh+C,aACxBi+C,yBAA0Bj+C,gBAC1Bk+C,qBAAsBl+C,aACtBm+C,mBAAoBn+C,MACpBo+C,8BAA+Bp+C,kFAC/Bq+C,mBAAoBr+C,SACpB,aAAcA,aACd,eAAgBA,eAChB,kBAAmBA,kBACnB,oBAAqBA,qBCnCG,CACxBs+C,wCAAyCt+C,uDACzCu+C,uCAAwCv+C,kDACxCw+C,sCAAuCx+C,iCACvCy+C,wCAAyCz+C,QACzC0+C,0CAA2C1+C,UAC3C2+C,yCAA0C3+C,SAC1C4+C,+CAAgD5+C,OAChD6+C,gDAAiD7+C,QACjD8+C,kDAAmD9+C,UACnD++C,iDAAkD/+C,UCV3B,CACvBg/C,yBAA0Bh/C,SAC1Bi/C,6BAA8Bj/C,OAC9Bk/C,wBAAyBl/C,QACzBm/C,4BAA6Bn/C,YAC7Bo/C,iCAAkCp/C,0BAClCq/C,iCAAkCr/C,0BAClCs/C,4BAA6Bt/C,cAC7Bu/C,iCAAkCv/C,wBAClCw/C,iCAAkCx/C,wBAClCy/C,6BAA8Bz/C,eAC9B0/C,4BAA6B1/C,aAC7B2/C,4BAA6B3/C,aAC7B4/C,6BAA8B5/C,eAC9B6/C,8BAA+B7/C,gBAC/B8/C,8BAA+B9/C,gBAC/B+/C,qCAAsC//C,eACtCggD,2BAA4BhgD,YAC5BigD,2BAA4BjgD,YAC5BkgD,0BAA2BlgD,cAC3BmgD,iCAAkCngD,kBAClCogD,qCAAsCpgD,wBACtCqgD,+BAAgCrgD,UCtBJ,CAC5BsgD,4CAA6CtgD,YAC7CugD,wDAAyDvgD,WACzDwgD,kEAAmExgD,cACnEygD,mEAAoEzgD,+BACpE0gD,oEAAqE1gD,mDACrE2gD,gEAAiE3gD,+CACjE4gD,kDAAmD5gD,iDACnD6gD,qDAAsD7gD,kDCR9B,CACxB8gD,eAAgB9gD,0DAChB+gD,oBAAqB/gD,OACrBghD,KAAMhhD,OACNihD,OAAQjhD,SACRX,QAASW,aACTkhD,qCAAsClhD,YACtCmhD,0CAA2CnhD,aAC3CohD,wCAAyCphD,WACzCqhD,sDAAuDrhD,iBACvDshD,kCAAmCthD,eACnCuhD,kDAAmDvhD,KACnDwhD,2DAA4DxhD,qBAC5DyhD,8CAA+CzhD,uCAC/C0hD,2DAA4D1hD,uBAC5D2hD,kDAAmD3hD,wCACnD,qCAAsCA,qCACtC4hD,uBAAwB5hD,OACxB6hD,yBAA0B7hD,SAC1B8hD,wCAAyC9hD,iCACzC+hD,uCAAwC/hD,mCAExCgiD,OAAQhiD,SACRiiD,oCAAqCjiD,cACrCkiD,6CAA8CliD,qBAC9CmiD,6CAA8CniD,eAC9CoiD,sCAAuCpiD,aACvCqiD,0CAA2CriD,cAC3CsiD,yCAA0CtiD,iBAC1CuiD,2CAA4CviD,eAC5CwiD,2CAA4CxiD,mBAC5CyiD,gDAAiDziD,wBACjD0iD,gDAAiD1iD,wBACjD2iD,qCAAsC3iD,YACtC4iD,sCAAuC5iD,aACvC6iD,4CAA6C7iD,0BAC7C8iD,4CAA6C9iD,0BAC7C+iD,qCAAsC/iD,YACtCgjD,kCAAmChjD,QACnCijD,sCAAuCjjD,c,YCjC5BkjD,EAAanxC,EAAAA,cAAoB,IAExCoxC,EAAmB,SAAAxsC,GACvB,SAAAwsC,EAAYlhD,GAAQ,IAADC,GAAAC,EAAAA,EAAAA,GAAA,KAAAghD,GACjBjhD,GAAAE,EAAAA,EAAAA,GAAA,KAAA+gD,EAAA,CAAMlhD,IAEN,IAAMmhD,GAAUC,EAAAA,EAAAA,IAAgBphD,EAAM1C,KAAMm7C,GAG1C,OAFFx4C,EAAKG,MAAQ,CACX+gD,QAAAA,GACAlhD,CACJ,CAAC,OAAAO,EAAAA,EAAAA,GAAA0gD,EAAAxsC,IAAAjU,EAAAA,EAAAA,GAAAygD,EAAA,EAAAxgD,IAAA,SAAAC,MAED,WACE,OACEnD,EAAAA,EAAAA,KAACyjD,EAAWI,SAAQ,CAAC1gD,MAAOC,KAAKR,MAAM+gD,QAAQxjD,SAC5CiD,KAAKZ,MAAMrC,UAElB,IAAC,CAfsB,CAAS8X,EAAAA,WA0B5BxX,GAAUE,EAAAA,EAAAA,kBAAiB+iD,GC/BpB38B,EAAiB,SAAA+8B,GAAe,OAAK,SAAAthD,GAAK,OACrDxC,EAAAA,EAAAA,KAACyjD,EAAWM,SAAQ,CAAA5jD,SAEhB,SAAAwjD,GAAO,OAAI3jD,EAAAA,EAAAA,KAAC8jD,GAAe5iD,EAAAA,EAAAA,GAAA,CAACof,WAAYqjC,GAAanhD,GAAS,GAE5C,CAAC,ECLZwhD,EAAW1xC,EAAAA,cAAoB,IAErC,SAAS2xC,EAAgBpkD,GAA+B,IAA5BqkD,EAAarkD,EAAbqkD,cAAe/jD,EAAQN,EAARM,SAC1C2N,EAAkB,CACtBC,KAAMm2C,EAAcC,YAEpBn2C,SAAUk2C,EAAcE,gBACxB9qC,QAAS4qC,EAAcG,eACvBp2C,KAAMi2C,EAAcI,aAEtB,OACEtkD,EAAAA,EAAAA,KAACgkD,EAASH,SAAQ,CAAC1gD,MAAO2K,EAAgB3N,SACvCA,GAEP,CCdO,IAAMma,EAAsB,SAAAwpC,GAAe,OAAK,SAAAthD,GAAK,OAC1DxC,EAAAA,EAAAA,KAACgkD,EAASD,SAAQ,CAAA5jD,SAEd,SAAAwjD,GAAO,OAAI3jD,EAAAA,EAAAA,KAAC8jD,GAAe5iD,EAAAA,EAAAA,GAAA,CAAC4M,gBAAiB61C,GAAanhD,GAAS,GAEnD,CAAC,E,mJCDvB,SAAS+hD,EAAiBC,EAAYC,EAAQ/3C,GAC5C,IAAMg4C,EAAOvjD,IAAAA,IAAMsjD,GAAQ,SAACE,GAC1B,IAAMhhD,EAAKghD,EAAMt2C,GACXu2C,EAAMC,EAAAA,SAASC,QAAQ,CAAEN,WAAAA,EAAY93C,QAAAA,EAAS/I,GAAAA,IAEpD,MAAO,CACLgG,KAAM+C,EAAQq4C,OACdC,IAAKJ,EACLz3C,KAAMw3C,EAEV,IAEA,OAAOM,EAAAA,MAAMC,MAAM,CAAER,KAAAA,EAAMS,KAAMz4C,EAAQy4C,OAAQj0C,MAAK,SAACC,GAIrD,OAHIhQ,IAAAA,WAAauL,EAAQ04C,kBACvB14C,EAAQ04C,gBAAgBj0C,GAEnBA,CACT,GACF,CAEA,SAASk0C,IASA,IAADxlD,EAAA8I,UAAAC,OAAA,QAAAzD,IAAAwD,UAAA,GAAAA,UAAA,GAAJ,CAAC,EAAC28C,EAAAzlD,EARJ0lD,YAAAA,OAAW,IAAAD,EAAG,CAAC,EAACA,EAChBE,EAAa3lD,EAAb2lD,cACAC,EAAI5lD,EAAJ4lD,KACAN,EAAItlD,EAAJslD,KACAO,EAAO7lD,EAAP6lD,QACAC,EAAe9lD,EAAf8lD,gBACA/iD,EAAK/C,EAAL+C,MACAgjD,EAAU/lD,EAAV+lD,WAEMl5C,EAAUvL,IAAAA,SAAW,CAAC,EAAGokD,GAyB/B,OAxBIpkD,IAAAA,SAAWqkD,KACb94C,EAAQ84C,cAAgBA,GAEtBC,IACF/4C,EAAQ+4C,KAAOA,GAEbN,IACFz4C,EAAQy4C,KAAOA,GAEbS,IACFl5C,EAAQk5C,WAAaA,GAEnBF,IACFh5C,EAAQg5C,QAAUA,GAIhBvkD,IAAAA,WAAawkD,KACfj5C,EAAQm5C,QAAUF,GAGhB/iD,IACF8J,EAAQ+3C,OAAStjD,IAAAA,MAAQyB,EAAMkjD,aAE1Bp5C,CACT,CAEO,IC1DH64C,ED0DSQ,EAAgB,WAW1B,OAAA9iD,EAAAA,EAAAA,IAFD,SAAA8iD,IAA2B,IAAfr5C,EAAO/D,UAAAC,OAAA,QAAAzD,IAAAwD,UAAA,GAAAA,UAAA,GAAG,CAAC,GAACjG,EAAAA,EAAAA,GAAA,KAAAqjD,GACtB3iD,KAAKsJ,QAAUA,CACjB,GAAC,EAAAxJ,IAAA,eAAAC,MAED,SAAa6iD,GACX,OAAOC,EAAAA,WAAWnB,QAAQkB,EAC5B,GAAC,CAAA9iD,IAAA,SAAAC,MAED,SAAOqhD,EAAY0B,EAAOx5C,GACxBvL,IAAAA,UAAYuL,EAAStJ,KAAKsJ,SAC1B,IAAIS,EAAOg5C,EAAAA,UAAUh5C,KAAK,CAAEA,KAAM+4C,EAAO1B,WAAAA,EAAY93C,QAAAA,IACjD84C,EAAgB,GAWpB,OAPIU,EAAME,cACRZ,EAAgBpiD,KAAKijD,aAAaH,EAAME,aACxCj5C,EAAOhM,IAAAA,KAAOgM,EAAM,gBAKf83C,EAAAA,MACJqB,KAAKzB,EAAAA,SAASC,QAAQ,CAAEN,WAAAA,EAAY93C,QAAAA,IAAYvL,IAAAA,SAAW,CAAEgM,KAAAA,EAAMq4C,cAAAA,GAAiBH,EAAiB34C,IAC1G,GAAC,CAAAxJ,IAAA,OAAAC,MAED,SAAKqhD,EAAY7gD,EAAI+I,GACnBvL,IAAAA,UAAYuL,EAAStJ,KAAKsJ,SAC1B,IAAI+3C,EAAS,CAAC,EACVuB,EAAkBt5C,EAAQs5C,gBAS9B,OAPI7kD,IAAAA,SAAW6kD,KACbvB,EAAS,CAAEt3C,KAAMhM,IAAAA,KAAOiC,KAAKijD,aAAaL,GAAkB,OAAQ,YAGtEvB,EAAOU,KAAOz4C,EAAQy4C,KAGfF,EAAAA,MAAMlzB,IAAI8yB,EAAAA,SAASC,QAAQ,CAAEN,WAAAA,EAAY93C,QAAAA,EAAS/I,GAAAA,EAAI4iD,WAAW,IAASplD,IAAAA,SAAWsjD,EAAQY,EAAiB34C,IACvH,GAAC,CAAAxJ,IAAA,UAAAC,MAED,SAAQqhD,EAAYC,GAAuB,IAAf/3C,EAAO/D,UAAAC,OAAA,QAAAzD,IAAAwD,UAAA,GAAAA,UAAA,GAAG,CAAC,EAErCxH,IAAAA,UAAYuL,EAAStJ,KAAKsJ,SAC1B,IAQI85C,EAREC,EAAgB/5C,EAAQ+5C,cAGxBC,GAAiB30B,EAAAA,EAAAA,KAAI0yB,EAAQ,mBAC7BkC,EAAYj6C,EAAQk6C,2BAA6BF,EACrDh6C,EAAQk6C,0BAA0BC,kBAAkBH,IACpD30B,EAAAA,EAAAA,KAAIrlB,EAAS,aAoBf,OAhBIi6C,GAAaj6C,EAAQo6C,MAAO/0B,EAAAA,EAAAA,KAAI40B,EAAW,oCAAqCj6C,EAAQo6C,IAAIC,MAAMC,YACpGR,EAAUvB,EAAAA,MACPqB,KACCtB,EAAAA,SAAaH,EAAAA,SAASC,QAAQ,CAAEN,WAAAA,EAAY93C,QAAAA,EAAS65C,WAAW,EAAMI,UAAAA,IAAcvjD,KAAKijD,aAAallD,IAAAA,OAAS,CAAEslD,cAAAA,GAAiBhC,IAAU/3C,EAAQ64C,YAAY0B,4BAChK9lD,IAAAA,SAAW,CAAEgM,KAAMw5C,EAAUO,WAAWC,YAAc9B,EAAiB34C,KAG3EA,EAAQ06C,eAAgB,GAExBZ,EAAUvB,EAAAA,MACPlzB,IACC8yB,EAAAA,SAASC,QAAQ,CAAEN,WAAAA,EAAY93C,QAAAA,EAAS65C,WAAW,EAAMI,UAAAA,IACzDxlD,IAAAA,SAAW,CAAEgM,KAAM/J,KAAKijD,aAAallD,IAAAA,OAAS,CAAEslD,cAAAA,GAAiBhC,KAAYY,EAAiB34C,KAI7F85C,EAAQt1C,MAAK,SAACm2C,GACnB,IAUMC,EAAUnmD,IAAAA,SAAW,UAGvBA,IAAAA,SAAWA,IAAAA,MAAQkmD,EAAIlkD,UACzBkkD,EAAIlkD,MAAQhC,IAAAA,IAAMkmD,EAAIlkD,OAAO,SAAAqc,GAAI,MAAK,CAAC7b,GAAKxC,IAAAA,SAAW,SAAUgC,MAAOqc,EAAK,KAM/Ere,IAAAA,KAAOkmD,EAAIlkD,OAAO,SAACqc,EAAMC,GAClBte,IAAAA,IAAMqe,EAAMglC,EAAW+C,cAAiD,KAAjC/nC,EAAKglC,EAAW+C,eAC1D/nC,EAAKglC,EAAW+C,aAAY,GAAArnD,OAAMonD,EAAO,KAAApnD,OAAIuf,GAEjD,IAEA,IAAM+nC,EAAgBrmD,IAAAA,SA1BQ,SAACsmD,GAAG,OAAKh5B,OAAOi5B,eAAeD,EAAK,aAAc,CAC9EtkD,MAAOkkD,EAAI,gBACX9O,YAAY,GACX,IAEoB,SAACkP,GAAG,OAAKh5B,OAAOi5B,eAAeD,EAAK,MAAO,CAChEtkD,MAAOkkD,EACP9O,YAAY,GACX,IAgCH,OAZI7rC,EAAQ06C,cACV16C,EAAQi7C,YAAcxmD,IAAAA,QACpBuL,EAAQi7C,aAAexmD,IAAAA,UACvB,SAACymD,EAAcC,GAAQ,OAAKL,EAAcK,EAAS,KAKrDR,EAAIlkD,MAAQhC,IAAAA,IAAMkmD,EAAK,SAAWA,EAAIlkD,MAAQkkD,EAC9CG,EAAcH,EAAIlkD,QAGbkkD,EAAIlkD,KACb,IAAG,SAACkkD,GAEF,MAAO,CACLS,aAAcT,EAAIS,aAClBC,OAAQV,EAAIU,OACZC,WAAYX,EAAIW,WAChBC,OAAQZ,EAAIY,OACZC,IAAKb,EAAIc,KAEb,GACF,GAAC,CAAAjlD,IAAA,SAAAC,MAED,SAAOqhD,EAAY7gD,EAAIuiD,EAAOx5C,GAC5BvL,IAAAA,UAAYuL,EAAStJ,KAAKsJ,SAC1B,IAAMS,EAAOg5C,EAAAA,UAAUh5C,KAAK,CAAEA,KAAM+4C,EAAO1B,WAAAA,EAAY93C,QAAAA,IAEvD,OAAOu4C,EAAAA,MACJmD,MACCvD,EAAAA,SAASC,QAAQ,CAAEN,WAAAA,EAAY93C,QAAAA,EAAS/I,GAAAA,IAExCxC,IAAAA,SAAW,CAAEgM,KAAAA,GAAQk4C,EAAiB34C,IAE5C,GAAC,CAAAxJ,IAAA,YAAAC,MACD,SAAUqhD,EAAY0B,EAAOzB,EAAQ/3C,GAInC,OAHAvL,IAAAA,UAAYuL,EAAStJ,KAAKsJ,SAGnB63C,EAAiBC,EAAYC,EAAOC,KAAMh4C,EACnD,GAAC,CAAAxJ,IAAA,UAAAC,MAED,SAAQqhD,EAAY7gD,EAAI+I,GAItB,OAHAvL,IAAAA,UAAYuL,EAAStJ,KAAKsJ,SAGnBu4C,EAAAA,MACJoD,OAAOxD,EAAAA,SAASC,QAAQ,CAAEN,WAAAA,EAAY93C,QAAAA,EAAS/I,GAAAA,IAAO0hD,EAAiB34C,IACvEwE,KAAK/P,IAAAA,SAAW,SACrB,GAAC,CAAA+B,IAAA,aAAAC,MAED,SAAWqhD,EAAYC,EAAQ/3C,GAG7B,OAFAvL,IAAAA,UAAYuL,EAAStJ,KAAKsJ,SAEnB63C,EAAiBC,EAAYC,EAAOC,KAAMh4C,EACnD,IAAC,CApK0B,GE1DhB47C,EAAY,SAAAC,GAAA,SAAAD,IAAA,OAAA5lD,EAAAA,EAAAA,GAAA,KAAA4lD,IAAA3lD,EAAAA,EAAAA,GAAA,KAAA2lD,EAAA3/C,UAAA,QAAA3F,EAAAA,EAAAA,GAAAslD,EAAAC,IAAAtlD,EAAAA,EAAAA,GAAAqlD,EAAA,EAAAplD,IAAA,eAAAC,MACvB,SAAa6iD,GACX,IAAAwC,EAA2CxC,EAAnCS,cAAAA,OAAa,IAAA+B,EAAG,CAAC,EAACA,EAAAC,EAAiBzC,EAAf0C,MAAAA,OAAK,IAAAD,EAAG,CAAC,EAACA,EAChCE,EAAM1C,EAAAA,WAAWnB,QAAQkB,GAC/B4C,EAA2CF,EAAnC,WAAG,IAAAE,EAAyB,CAAC,EAACA,GAAvBtiD,SAEf,IAAKnF,IAAAA,SAAWunD,IAAUvnD,IAAAA,QAAUunD,GAAQ,CAC1C,IAAMG,EAAY1nD,IAAAA,KAAOunD,EAAO,KAEhC,IAAKvnD,IAAAA,QAAU0nD,GAAY,CACzB,IAAMC,EAAU,IAAIzzB,EAAAA,aAAawzB,EAAWpC,GAAesC,UACtD5nD,IAAAA,QAAU2nD,KACbH,EAAIG,QAAUA,EAElB,CACF,CAEA,OAAOH,CACT,IAAC,CAlBsB,CAAS5C,G,mBDE3B,SAASiD,EAAe96B,GAO3B,IANFu3B,EAAIv3B,EAAJu3B,KACAN,EAAIj3B,EAAJi3B,KACAS,EAAU13B,EAAV03B,WACAqD,EAAS/6B,EAAT+6B,UACAC,EAASh7B,EAATg7B,UACAltB,EAAK9N,EAAL8N,MAEAupB,EAAc,CACZE,KAAAA,EACAN,KAAAA,EACAS,WAAAA,EACAqD,UAAAA,EACAC,UAAAA,EACAltB,MAAAA,EAEJ,CAEO,IAAMmtB,EAAW,WAsCrB,OAAAlmD,EAAAA,EAAAA,IArCD,SAAAkmD,EAAA51B,GAKI,IAJF61B,EAAU71B,EAAV61B,WACA7B,EAAWh0B,EAAXg0B,YACA8B,EAAQ91B,EAAR81B,SACAC,EAAkB/1B,EAAlB+1B,mBAEA,IAFkB5mD,EAAAA,EAAAA,GAAA,KAAAymD,IAEb5D,EACH,MAAM,IAAI73C,MAAM,kCAGlBtK,KAAKmmD,aAAe,IAAIjB,EAExBllD,KAAKimD,SAAWA,EAChBjmD,KAAKkmD,mBAAqBA,GAtC9B,SAAmCD,GACjC,OAAO,SAAAxpD,GAAA,IAAGqD,EAAGrD,EAAHqD,IAAG,SAAAhD,OAAUmpD,EAAQ,KAAAnpD,OAAIgD,EAAG,KACxC,CAoCoDsmD,CAA0BH,GAE1EjmD,KAAKqmD,OAAS,CACZC,MAAON,EACP/9C,KAAM+9C,EACNO,SAAUP,EAIV7B,YAAAA,GAKFnkD,KAAKmkD,YAAcA,EAEnBnkD,KAAKsJ,QAAUvL,IAAAA,SAAW,CAAEokD,YAAAA,GAAe,CAEzCuB,IAAK,CACHC,MAAO,CACLC,YAAU/jD,EAAAA,EAAAA,IAAA,SAAA+jD,KAAAtkD,EAAAA,EAAAA,GAAA,KAAAskD,EAAA,OAIlB,GAAC,EAAA9jD,IAAA,aAAAC,MAED,SAAWuJ,GAAU,IAADjK,EAAA,KACZkkD,EAAY,CAChB0C,SAAUjmD,KAAKimD,SAGfnC,WAAY,CACV0C,OAAQ,CACNjgD,KAAM,CAEN,IAIJkgD,SAAU,SAAA3mD,GAAG,MAAK,CAChBmmD,SAAU5mD,EAAK6mD,mBAAmB,CAAEpmD,IAAAA,IACrC,GAKH,OAFqB/B,IAAAA,SAAW,CAAC,EAAGuL,EAAS,CAAEi6C,UAAAA,GAAavjD,KAAKsJ,QAGnE,GAAC,CAAAxJ,IAAA,SAAAC,MAED,SAAOgK,EAAMT,GACX,OAAOtJ,KAAKmmD,aAAaruB,OAAO93B,KAAKqmD,OAAQt8C,EAAM/J,KAAK0mD,WAAWp9C,GACrE,GAAC,CAAAxJ,IAAA,SAAAC,MAED,SAAOQ,EAAIwJ,EAAMT,GACf,OAAOtJ,KAAKmmD,aAAaQ,OAAO3mD,KAAKqmD,OAAQ9lD,EAAIwJ,EAAM/J,KAAK0mD,WAAWp9C,GACzE,GAAC,CAAAxJ,IAAA,OAAAC,MAED,SAAKQ,EAAI+I,GACP,OAAOtJ,KAAKmmD,aAAaS,KAAK5mD,KAAKqmD,OAAQ9lD,EAAIP,KAAK0mD,WAAWp9C,GACjE,GAAC,CAAAxJ,IAAA,UAAAC,MAED,SAAQshD,GAA4C,IAADvyC,EAAA,KAAAuhB,EAAA9qB,UAAAC,OAAA,QAAAzD,IAAAwD,UAAA,GAAAA,UAAA,GAAJ,CAAC,EAA9BshD,EAAYx2B,EAAZw2B,aAAiBv9C,GAAOw9C,EAAAA,EAAAA,GAAAz2B,EAAA02B,GACxC,OAAO/mD,KAAKmmD,aACTa,QAAQhnD,KAAKqmD,OAAQhF,EAAQrhD,KAAK0mD,WAAWp9C,IAC7CwE,MAAK,SAAA/D,GAAI,OAAKhM,IAAAA,WAAa8oD,GAAgBA,EAAa/3C,EAAKu3C,OAAQt8C,GAAQA,CAAI,IACjF+D,MAAK,SAAC/D,GACL,GAAIhM,IAAAA,QAAUgM,GACZ,OAAOA,EAGT,MAAMA,CACR,GACJ,IAAC,CAtFqB,GE3BX2D,EAAW,CACtBC,QAAS,UACTC,OAAQ,U,ICENq5C,EACAC,EACAC,E,eACA15C,EAAOC,EAASC,QAEPy5C,EAAwB,SAAAC,GAanC,SAAAD,EAAA3qD,GAEI,IADFwpD,EAAQxpD,EAARwpD,SAAa38C,GAAOw9C,EAAAA,EAAAA,GAAArqD,EAAAsqD,IAAAznD,EAAAA,EAAAA,GAAA,KAAA8nD,GAEpB,IAAME,EAAch+C,EAAQmE,MAAQA,EAC9B85C,ECvBH,SAAqB9qD,GAKxB,IAIEsZ,EARJkxC,EAAGxqD,EAAHwqD,IACAE,EAAG1qD,EAAH0qD,IACAD,EAAIzqD,EAAJyqD,KACAz5C,EAAIhR,EAAJgR,KAEA,IAAK1P,IAAAA,SAAWA,IAAAA,OAAS2P,GAAWD,GAClC,MAAM,IAAIkE,WAAW,cAAD7U,OAAe2Q,GAAQ,qBAG7C,OAAQA,GACN,KAAKC,EAASC,QACZoI,EAAamxC,EACb,MACF,KAAKx5C,EAASE,OACd,QACEmI,EAAakxC,EAGjB,IAAIM,EAAS,cAAAzqD,OAAiBiZ,EAAU,KAMxC,OAJIoxC,IACFI,GAAS,aAAAzqD,OAAiBqqD,EAAG,MAGxBI,CACT,CDHsBC,CAAa,CAC7BP,IAAAA,EAAKE,IAAAA,EAAKD,KAAAA,EAAMz5C,KAAM65C,IACrB,OAAA/nD,EAAAA,EAAAA,GAAA,KAAA6nD,EAAA,EAAAtpD,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAEEwL,GAAO,IACV28C,SAAS,GAADnpD,OAAKyqD,GAASzqD,OAAGmpD,MAE7B,CAAC,OAAArmD,EAAAA,EAAAA,GAAAwnD,EAAAC,IAAAxnD,EAAAA,EAAAA,GAAAunD,EAAA,OAAAtnD,IAAA,OAAAC,MAvBD,SAAYuJ,GAER29C,EAGE39C,EAHF29C,IACAE,EAEE79C,EAFF69C,IACAD,EACE59C,EADF49C,IAEJ,GAAC,CAAApnD,IAAA,aAAAC,MAED,SAAkB0nD,GAChBh6C,EAAOg6C,CACT,IAAC,CAXkC,CAAS1B,GEPjC2B,EAuBR,SAAA58B,GAAmB,IAKd3d,EAAU,CACdw6C,UANa78B,EAAX88B,aASJ,OARe,IAAIR,EAAyB,CAC1CpB,WAAY,oBACZC,SAAU,4BAMEnuB,OAAO3qB,EACvB,EAjCWu6C,EAmCH,SAAAv3B,GAAmB,IAAhBniB,EAAWmiB,EAAXniB,YAMT,OALe,IAAIo5C,EAAyB,CAC1CpB,WAAY,oBACZC,SAAS,uBAADnpD,OAAyBkR,EAAW,+CAGhC44C,MAChB,EA1CWc,EA4CL,SAAAr3B,GAAmB,IAKjBljB,EAAU,CACdw6C,UANgBt3B,EAAXu3B,aASP,OARe,IAAIR,EAAyB,CAC1CpB,WAAY,oBACZC,SAAU,6BAMEnuB,OAAO3qB,EACvB,EAtDWu6C,EAwDG,WAMZ,MAAO,CACLnhD,KAAM,SACN8/C,OAPa,IAAIe,EAAyB,CAC1CpB,WAAY,oBACZC,SAAU,wBAMV4B,WAAY,KACZh5B,MAAO,CACL62B,QAAS,gDAGf,E,8CCnEEoC,GAAqB,CAAEC,SAAU,CAAEC,OAAQC,OAAOF,SAASC,SAC3DE,GAAc,aAELh6C,GAAY,CACvBi6C,KAAI,SAAC7+C,GAEQw+C,GAEPx+C,EAFF8+C,QACAF,GACE5+C,EADF4+C,WAEJ,EAEAruB,QAAO,SAACkoB,GAAoC,IAADtlD,EAAA8I,UAAAC,OAAA,QAAAzD,IAAAwD,UAAA,GAAAA,UAAA,GAAJ,CAAC,EAAxBgB,EAAI9J,EAAJ8J,KAAMmI,EAAYjS,EAAZiS,aAChB25C,GAAKh+B,EAAAA,GAAAA,OAAMy9B,GAAmBC,SAASC,QAM3C,OALIjqD,IAAAA,SAAWwI,GACb8hD,EAAG9hD,KAAOA,EACAmI,IACV25C,EAAKtqD,IAAAA,KAAOsqD,EAAI,SAEZ,GAANvrD,OAAUorD,IAAWprD,OAAGilD,EAAI,KAAAjlD,QAAI03C,EAAAA,GAAAA,WAAU6T,GAC5C,EAEAl6C,KAAI,SAAC4zC,GAAqB,IAAfz4C,EAAO/D,UAAAC,OAAA,QAAAzD,IAAAwD,UAAA,GAAAA,UAAA,GAAG,CAAC,EACdi8C,EAAMtzC,GAAU2rB,QAAQkoB,EAAMz4C,GAEpCw+C,GAAmB77C,KAAKu1C,EAC1B,EAEA8G,UAAS,SAACvG,GAAqB,IAAfz4C,EAAO/D,UAAAC,OAAA,QAAAzD,IAAAwD,UAAA,GAAAA,UAAA,GAAG,CAAC,EACnBi8C,EAAMtzC,GAAU2rB,QAAQkoB,EAAMz4C,GAEpCw+C,GAAmB1+B,QAAQo4B,EAC7B,GAGW+G,IAAuBC,EAAAA,EAAAA,aAAW,SAACppD,GAE9C,OADA8O,GAAUi6C,KAAK/oD,IACR,CACT,IAEAmpD,GAAqBE,UAAY,CAC/BP,YAAaQ,IAAAA,OAAiBC,YC3CzB,IAAMC,GAAgB,CAM3BC,OAAM,SAACtoD,GACL,OAAO2N,GAAU2rB,QAAQ,mBAAD/8B,OAAoByD,GAC9C,EAOAuoD,MAAK,SAACC,GACJ,OAAOA,EAAO99C,EAChB,GCjBW+9C,GAAiB,CAO5BH,OAAM,SAACtoD,EAAI0oD,GACT,OAAOA,EACL/6C,GAAU2rB,QAAQ,kBAAD/8B,OAAmByD,IACpC2N,GAAU2rB,QAAQ,YAAD/8B,OAAayD,GAClC,EAMAuoD,MAAK,SAACC,GACJ,OAAOA,EAAO99C,EAChB,G,ICnBE0sB,G,sCCFSyB,GAAa,CACxByB,yBAA0B19B,UAC1B,oCAAqCA,oBACrC,qCAAsCA,2BACtC,oCAAqCA,0BACrC,wCAAyCA,2BACzCq+B,+BAAgCr+B,kBAChC4+B,sBAAuB5+B,qBACvB2+B,2BAA4B3+B,0BAC5B6+B,wBAAyB7+B,uBACzB69B,yBAA0B79B,WAC1B89B,oBAAqB99B,KACrB8/B,wBAAyB9/B,iBACzBy6C,2BAA4Bz6C,iBAC5Bs+B,0BAA2Bt+B,YAC3B++B,oBAAqB/+B,SACrBi/B,uBAAwBj/B,oBACxB8+B,iBAAkB9+B,yBAClB49B,0BAA2B59B,WAC3Bw+B,4BAA6Bx+B,cAC7Bg/B,sBAAuBh/B,kCACvBm+B,gCAAiCn+B,kBACjC+rD,gCAAiC/rD,kBACjCq/B,+BAAgCr/B,gCAChCs/B,6BAA8Bt/B,6BAC9Bu/B,gCAAiCv/B,gCACjCo/B,yBAA0Bp/B,+BAC1BggC,4BAA6BhgC,aAC7Bu+B,sBAAuBv+B,QACvB+9B,yBAA0B/9B,UAC1Bg+B,8BAA+Bh+B,6BAC/B0/B,kCAAmC1/B,oBACnC4/B,wBAAyB5/B,sBACzB6/B,qCAAsC7/B,qCACtCw/B,kCAAmCx/B,oBACnCy/B,sCAAuCz/B,yBACvC2/B,oCAAqC3/B,sBACrC+/B,uCAAwC//B,4BACxCo+B,gCAAiCp+B,0BACjCk/B,kCAAmCl/B,iBACnCk+B,6BAA8Bl+B,cAC9Bi+B,mBAAoBj+B,iBACpBm/B,4BAA6Bn/B,2BAC7By+B,8BAA+Bz+B,gBAC/BgsD,0BAA2BhsD,aC1ChBisD,GAAa,CACxBC,IAAKlsD,OACLmsD,OAAQnsD,cACRosD,IAAKpsD,OACLqsD,OAAQrsD,cACRssD,KAAMtsD,SAGKsF,GAAyB1E,IAAAA,KAAOqrD,GAAY,SAAU,SAAU,QAEhEM,GAA8B3rD,IAAAA,KAAOqrD,GAAY,MAAO,MAAO,OAAQ,UCT9Ep5C,GAAW,CACf25C,kBAAmB,SAAAjtD,GAAI,OAAIA,EAAKQ,UAAUC,yEAA+E,EACzHysD,cAAe,SAACltD,EAAM4Q,GAAU,OAAK5Q,EAAKQ,UAAUC,iFAAwFmQ,EAAW,EACvJsqC,2BAA4B,SAAAl7C,GAAI,SAAAI,OAAOJ,EAAKQ,UAAUC,2JAAgK,qEAAAL,OAAoEJ,EAAKQ,UAAU,cAAa,UAG3S2sD,GAAuB,SAACv8C,EAAY5Q,EAAMotD,GACrD,OAAI/rD,IAAAA,IAAMiS,GAAU1C,GACX0C,GAAS1C,GAAY5Q,GAGvBotD,EACL95C,GAAS45C,cAAcltD,EAAMA,EAAKQ,UAAUa,IAAAA,OAASq7B,GAAY9rB,EAAYA,KAC7E0C,GAAS25C,kBAAkBjtD,EAC/B,ECfM4F,GAAU,CACdynD,UAAW5sD,4FACX6sD,aAAc7sD,wBACd8sD,sBAAuB9sD,wBACvB+sD,2BAA4B/sD,6HAC5BgtD,2BAA4BhtD,2NAGjBw8B,GAAkB,SAACjB,EAAW0xB,GAAM,OAAKrsD,IAAAA,OACpDuE,GACAo2B,EACA0xB,GAAUjtD,0HACV,ECPWmF,GAAU,CACrBsG,gBCN6B,CAC7Bu2C,OAAQhiD,SACRktD,MAAOltD,QACPmtD,UAAWntD,YACXotD,cAAeptD,cACfqtD,iBAAkBrtD,eAClBstD,eAAgBttD,eAChButD,gBAAiBvtD,wBACjBwtD,gBAAiBxtD,wBACjBytD,oBAAqBztD,sBACrB0tD,oBAAqB1tD,sBACrB2tD,yBAA0B3tD,yBAC1B4tD,yBAA0B5tD,yBAC1B6tD,wBAAyB7tD,yBACzB8tD,wBAAyB9tD,yBACzB+tD,UAAW/tD,aACXguD,UAAWhuD,aACXiuD,cAAejuD,gBACfkuD,gBAAiBluD,gBACjBmuD,cAAenuD,gBACfouD,SAAUpuD,YACVquD,SAAUruD,YACVsuD,aAActuD,eACduuD,QAASvuD,YDhBToF,kBEF+B,CAC/BgO,OAAQpT,OACRqT,UAAWrT,cACXsT,MAAOtT,MACPuT,UAAWvT,cACXwT,OAAQxT,OACR0U,qBAAsB1U,eACtByT,QAASzT,QACT0T,OAAQ1T,OACR2T,QAAS3T,WFNTi8B,WAAAA,GACA4b,WGXwB,CAExB9U,iCAAkC/iC,+BAElCgjC,8CAA+ChjC,+CAE/CijC,4CAA6CjjC,6CAE7CkjC,kCAAmCljC,gCAEnCmjC,UAAWnjC,aAEXojC,YAAapjC,UAEbqjC,cAAerjC,iBAEfsjC,cAAetjC,iBAEfujC,cAAevjC,iBAEfwjC,eAAgBxjC,mBAEhByjC,eAAgBzjC,kBAChBwuD,kBAAmBxuD,sBAEnB0jC,cAAe1jC,kBAEf2jC,yBAA0B3jC,8BAE1B4jC,gBAAiB5jC,yBAEjB6jC,kBAAmB7jC,uBAEnB8jC,mBAAoB9jC,uBAEpB+jC,mBAAoB/jC,oCAEpBgkC,UAAWhkC,cAEXikC,cAAejkC,kBAEfkkC,YAAalkC,WAEbmkC,cAAenkC,kBAEfugC,YAAavgC,gBACbyuD,mBAAoBzuD,gBAEpB8hC,KAAM9hC,QAENokC,SAAUpkC,YAEVqkC,YAAarkC,eACb0uD,oBAAqB1uD,0BACrB2uD,mBAAoB3uD,0BACpB4uD,mBAAoB5uD,yBAEpBskC,SAAUtkC,YACVsiC,WAAYtiC,cACZ6uD,sBAAuB7uD,2BAEvByhC,eAAgBzhC,mBAEhBukC,QAASvkC,WAETwkC,OAAQxkC,UACR8uD,sBAAuB9uD,0BAEvBykC,SAAUzkC,YAEV0kC,WAAY1kC,SAEZ6G,kBAAmB7G,sBACnB2kC,2BAA4B3kC,sBAE5B0G,eAAgB1G,kBAChB4kC,wBAAyB5kC,kBAEzBkH,qBAAsBlH,UACtB6kC,8BAA+B7kC,UAE/B8kC,mBAAoB9kC,yBAEpB+kC,WAAY/kC,cAEZglC,wBAAyBhlC,6BAEzBilC,SAAUjlC,YAEVklC,eAAgBllC,kBAEhBmlC,oBAAqBnlC,uBAErBolC,oBAAqBplC,uBAErBqlC,QAASrlC,UAETslC,cAAetlC,iBACfulC,iBAAkBvlC,oBAElBwlC,kBAAmBxlC,qBAEnBylC,iBAAkBzlC,oBAElB0lC,WAAY1lC,cACZ2lC,+BAAgC3lC,4BAChC4lC,oCAAqC5lC,yCACrC6lC,sCAAuC7lC,2CAEvC8lC,aAAc9lC,gBAEd+lC,aAAc/lC,WACd+uD,aAAc/uD,qBACdgvD,gBAAiBhvD,wBAEjBgmC,WAAYhmC,WAEZimC,WAAYjmC,WAEZkmC,WAAYlmC,WAEZmmC,gBAAiBnmC,gBACjBomC,eAAgBpmC,mBAEhBqmC,aAAcrmC,gBACdivD,oBAAqBjvD,0BAErBsmC,aAActmC,gBACdkvD,oBAAqBlvD,0BAErBumC,cAAevmC,iBAEfwmC,aAAcxmC,iBAEdymC,gBAAiBzmC,oBAEjB0mC,aAAc1mC,gBACd2mC,gBAAiB3mC,sBAEjB4mC,YAAa5mC,eAEb+mC,cAAe/mC,yBAEf6mC,mBAAoB7mC,mBAEpB8mC,qBAAsB9mC,0BACtBmvD,UAAWnvD,aACXovD,mBAAoBpvD,wBAEpBgnC,MAAOhnC,QAEPinC,wBAAyBjnC,4BAEzBknC,WAAYlnC,cAEZmnC,aAAcnnC,gBAEdonC,aAAcpnC,gBAEdqnC,IAAKrnC,MAELsnC,IAAKtnC,MAELqvD,WAAYrvD,cAEZsvD,aAActvD,YACduvD,gBAAiBvvD,oBAEjBunC,WAAYvnC,cAEZwnC,eAAgBxnC,kBAEhBynC,aAAcznC,WAEd0nC,eAAgB1nC,kBAEhB2nC,aAAc3nC,gBACdwvD,SAAUxvD,WAEV4nC,UAAW5nC,qBAEX6nC,UAAW7nC,uBAEX8nC,UAAW9nC,wBAEX+nC,aAAc/nC,gBAEdmoC,UAAWnoC,aAEXgoC,aAAchoC,aAEdioC,aAAcjoC,iBAEdkoC,iBAAkBloC,8BAClByvD,YAAazvD,gBACb0vD,qBAAsB1vD,uBAEtBooC,KAAMpoC,2BAENqoC,WAAYroC,cAEZsoC,kBAAmBtoC,cAEnBuoC,UAAWvoC,aAEXwoC,YAAaxoC,gBAEbyoC,OAAQzoC,SAER0oC,YAAa1oC,eAEb2oC,UAAW3oC,YAEX4oC,cAAe5oC,iBAEf6oC,aAAc7oC,gBAEd4G,eAAgB5G,kBAChB8oC,wBAAyB9oC,kBAEzB2G,YAAa3G,cACb4hC,qBAAsB5hC,cAEtB+oC,cAAe/oC,kBAEf+G,kBAAmB/G,MACnBgpC,2BAA4BhpC,MAE5BipC,QAASjpC,qCAET2vD,UAAW3vD,aAEXkpC,cAAelpC,yBAEf4vD,YAAa5vD,eAEbmpC,OAAQnpC,6BAERopC,aAAcppC,WAEdqpC,cAAerpC,sBAEfspC,aAActpC,iBAEdupC,aAAcvpC,iBAEdwpC,aAAcxpC,iBAEdypC,aAAczpC,iBAEd0pC,aAAc1pC,iBACd6vD,oBAAqB7vD,0BACrB8vD,oBAAqB9vD,0BACrB+vD,oBAAqB/vD,0BACrBgwD,oBAAqBhwD,0BACrBiwD,oBAAqBjwD,0BAErB2pC,iBAAkB3pC,oBAClBkwD,yBAA0BlwD,8BAC1BmwD,wBAAyBnwD,8BACzBowD,wBAAyBpwD,6BACzBqwD,mBAAoBrwD,wBACpBswD,wBAAyBtwD,6BAEzB+N,WAAY/N,kBAEZ4pC,aAAc5pC,uBAEd6pC,WAAY7pC,cAEZqV,KAAMrV,OAEN8pC,SAAU9pC,OACVuwD,SAAUvwD,YAEVuT,UAAWvT,cAEXyxC,QAASzxC,UAET+pC,mBAAoB/pC,uBAEpBgqC,eAAgBhqC,kBAChBwwD,iBAAkBxwD,sBAClBywD,sBAAuBzwD,2BACvB0wD,sBAAuB1wD,2BAEvBiqC,SAAUjqC,YAEVkqC,WAAYlqC,cAEZmqC,WAAYnqC,cAEZoqC,eAAgBpqC,kBAEhBqqC,aAAcrqC,gBAEdsqC,SAAUtqC,iBAEVuqC,gBAAiBvqC,oBAEjBwqC,kBAAmBxqC,uBAEnByqC,sBAAuBzqC,2BACvB2wD,oBAAqB3wD,uBAErByO,QAASzO,WAET2qC,SAAU3qC,YAEV4qC,WAAY5qC,cAEZ4wD,sBAAuB5wD,uBAEvB6wD,gBAAiB7wD,mBAEjB8wD,wBAAyB9wD,4BAEzB+wD,qBAAsB/wD,wBAEtBgxD,aAAchxD,gBAEdixD,2BAA4BjxD,4BAE5BkxD,qBAAsBlxD,wBAEtB6qC,iCAAkC7qC,+BAElC0qC,kBAAmB1qC,sBAEnB8qC,YAAa9qC,8BACbmxD,mBAAoBnxD,uCACpBoxD,oBAAqBpxD,wCACrBqxD,mBAAoBrxD,wCAEpB+qC,aAAc/qC,gBACdsxD,OAAQtxD,UACRuxD,WAAYvxD,eAEZgrC,QAAShrC,WAETirC,YAAajrC,UAEbkrC,eAAgBlrC,aAEhBmrC,SAAUnrC,YAEVorC,eAAgBprC,mBAChBwxD,uBAAwBxxD,6BACxByxD,sBAAuBzxD,6BACvB0xD,sBAAuB1xD,4BACvB2xD,iBAAkB3xD,uBAElBqrC,aAAcrrC,sBAEdsrC,oBAAqBtrC,2BAErBm0C,uBAAwBn0C,2BAExBo0C,mBAAoBp0C,mCAEpBgH,6BAA8BhH,+BAC9Bq0C,sCAAuCr0C,+BAEvCs0C,2BAA4Bt0C,8CAE5BiH,0BAA2BjH,gCAC3Bu0C,mCAAoCv0C,gCAEpCurC,OAAQvrC,SAERwrC,KAAMxrC,OAENogC,aAAcpgC,gBAEdqgC,SAAUrgC,YAEVyrC,OAAQzrC,UAER0rC,cAAe1rC,OACf4xD,qBAAsB5xD,2BACtB2rC,KAAM3rC,OAEN6xD,MAAO7xD,QAEP4rC,SAAU5rC,WAEV8V,YAAa9V,cAEb6rC,sBAAuB7rC,wBACvB8xD,6BAA8B9xD,oCAC9B+xD,8BAA+B/xD,oCAC/BgyD,6BAA8BhyD,mCAE9B8rC,sBAAuB9rC,uCACvBiyD,6BAA8BjyD,oCAC9BkyD,8BAA+BlyD,oCAC/BmyD,6BAA8BnyD,mCAE9B+rC,gCAAiC/rC,mCACjCoyD,uCAAwCpyD,+CACxCqyD,wCAAyCryD,+CACzCsyD,uCAAwCtyD,8CAExCgsC,uBAAwBhsC,yBACxBuyD,8BAA+BvyD,qCAC/BwyD,+BAAgCxyD,qCAChCyyD,8BAA+BzyD,oCAC/B0yD,WAAY1yD,cACZ2yD,iBAAkB3yD,sBAClB4yD,UAAW5yD,aAEXqT,UAAWrT,cAEXoT,OAAQpT,SAERisC,WAAYjsC,cAEZksC,mCAAoClsC,wCAEpCmsC,2BAA4BnsC,+BAE5BosC,8BAA+BpsC,kCAE/BssC,+BAAgCtsC,gCAEhCusC,4BAA6BvsC,gCAE7B6yD,iCAAkC7yD,yCAClC8yD,gBAAiB9yD,mBAEjBwsC,uBAAwBxsC,mBAExBysC,YAAazsC,cAEb0sC,aAAc1sC,gBAEd2sC,YAAa3sC,cAEb4sC,gBAAiB5sC,oBAEjB6sC,QAAS7sC,UAET8sC,UAAW9sC,aAEX+sC,cAAe/sC,iBAEfgtC,cAAehtC,iBACf+yD,UAAW/yD,QACXgzD,iBAAkBhzD,iBAClBizD,kBAAmBjzD,kBACnBkzD,iBAAkBlzD,kBAClBmzD,YAAanzD,YACbozD,iBAAkBpzD,iBAClBqzD,WAAYrzD,cAEZitC,sBAAuBjtC,0BACvBszD,6BAA8BtzD,oCAC9BuzD,8BAA+BvzD,oCAC/BwzD,6BAA8BxzD,mCAE9BktC,iBAAkBltC,qBAElBmtC,SAAUntC,WACVyzD,aAAczzD,iBAEdotC,eAAgBptC,mBAEhBqtC,WAAYrtC,kCAEZstC,aAActtC,gBAEdutC,aAAcvtC,gBAEdwtC,iBAAkBxtC,mCAElBytC,wBAAyBztC,yBAEzB0tC,yBAA0B1tC,oCAE1B8G,sBAAuB9G,gCACvB2tC,+BAAgC3tC,gCAEhC4tC,wBAAyB5tC,6CAEzB6tC,sBAAuB7tC,0BAEvB8tC,6BAA8B9tC,8BAE9B+tC,8BAA+B/tC,mDAE/BguC,aAAchuC,yBAEdiuC,YAAajuC,oBAEbkuC,YAAaluC,eAEbmuC,yBAA0BnuC,2CAE1BouC,0BAA2BpuC,+BAE3BquC,8BAA+BruC,kDAE/BsuC,kBAAmBtuC,sBAEnBuuC,UAAWvuC,iCACX0zD,kBAAmB1zD,qBACnB2zD,uBAAwB3zD,4BACxB4zD,iCAAkC5zD,sCAClC6zD,oCAAqC7zD,0CACrC8zD,uBAAwB9zD,4BACxB+zD,uBAAwB/zD,2BAExBwuC,MAAOxuC,QAEPyuC,iBAAkBzuC,sBAElB0uC,cAAe1uC,iBAEf2uC,qBAAsB3uC,yBACtB4uC,IAAK5uC,MAEL6uC,gBAAiB7uC,mBAEjB+uC,kBAAmB/uC,sBAEnB8uC,oBAAqB9uC,wBAErBgvC,sBAAuBhvC,2BAEvBivC,yBAA0BjvC,8BAC1BkvC,aAAclvC,mCAEdmvC,aAAcnvC,UACdg0D,mBAAoBh0D,yBAEpBovC,WAAYpvC,cAEZqvC,cAAervC,oBAEfsvC,QAAStvC,UAETuvC,SAAUvvC,YAEVwvC,cAAexvC,yBAEfyvC,SAAUzvC,YACVi0D,QAASj0D,WAET0vC,OAAQ1vC,UAER2vC,OAAQ3vC,UAER4vC,OAAQ5vC,UAER6vC,cAAe7vC,yBACfk0D,mBAAoBl0D,sBAEpB8vC,MAAO9vC,SAEP+vC,MAAO/vC,SAEPgwC,WAAYhwC,cAEZiwC,iBAAkBjwC,cAElBkwC,WAAYlwC,kCAEZmwC,MAAOnwC,QAEPowC,cAAepwC,iBAEfqwC,cAAerwC,iBACfswC,mBAAoBtwC,uBAEpBuwC,iBAAkBvwC,sBAElBwwC,iBAAkBxwC,sBAElBywC,iBAAkBzwC,sBAElB0wC,iBAAkB1wC,sBAElB2wC,iBAAkB3wC,sBAElB4wC,aAAc5wC,8BAEd6wC,YAAa7wC,eAEb8wC,aAAc9wC,0BAEd+wC,aAAc/wC,0BAEdgxC,aAAchxC,0BAEdixC,aAAcjxC,0BAEdkxC,aAAclxC,0BAEdmxC,wBAAyBnxC,6BAEzBoxC,IAAKpxC,MAELqxC,aAAcrxC,cAEdsxC,cAAetxC,iBAEfuxC,aAAcvxC,gBACdm0D,oBAAqBn0D,0BACrBo0D,qBAAsBp0D,0BACtBq0D,oBAAqBr0D,yBAErBwxC,eAAgBxxC,kBAEhB0xC,gBAAiB1xC,uBAEjB2xC,mBAAoB3xC,iCAEpB4xC,kBAAmB5xC,yBAEnB6xC,eAAgB7xC,6BAEhB8xC,sBAAuB9xC,8BACvB+xC,wBAAyB/xC,+BAEzBgyC,sBAAuBhyC,8BAEvBiyC,iBAAkBjyC,iCAElBkyC,OAAQlyC,iBACRmyC,YAAanyC,eAEboyC,gBAAiBpyC,qBACjBs0D,mBAAoBt0D,2BAEpBqyC,QAASryC,UACTu0D,WAAYv0D,gBAEZsyC,iBAAkBtyC,qBAElBuyC,qBAAsBvyC,yBAEtBwyC,WAAYxyC,cAEZyyC,YAAazyC,cAEb0yC,WAAY1yC,cAEZ2yC,mBAAoB3yC,eAEpB4yC,qBAAsB5yC,0BAEtB6yC,cAAe7yC,yBACfw0D,cAAex0D,kBAEf8yC,MAAO9yC,QACPy0D,WAAYz0D,eAEZwO,UAAWxO,aAEX+yC,MAAO/yC,qCAEPgzC,OAAQhzC,kBAERmzC,QAASnzC,WAETizC,iBAAkBjzC,oBAElBkzC,WAAYlzC,eAEZ,mBAAoBA,MAEpB,uBAAwBA,cAExB,uBAAwBA,cAExB,oBAAqBA,SAErB,qBAAsBA,QAEtB,oBAAqBA,SAErB,kCAAmCA,qBAEnC,oBAAqBA,OAErB0D,MAAO1D,QAEPozC,WAAYpzC,eAEZqzC,WAAYrzC,eAEZszC,WAAYtzC,eAEZuzC,KAAMvzC,OAENwzC,yBAA0BxzC,sBAE1ByzC,sCAAuCzzC,sCAEvCqsC,mCAAoCrsC,wCAEpC0zC,oCAAqC1zC,oCAErC2zC,0BAA2B3zC,uBAE3B4zC,WAAY5zC,gBAEZ6zC,YAAa7zC,4BAEb8zC,wBAAyB9zC,8BAEzB+zC,iBAAkB/zC,oBAClB00D,yBAA0B10D,8BAC1B20D,wBAAyB30D,8BACzB40D,wBAAyB50D,6BACzB60D,mBAAoB70D,wBACpB80D,wBAAyB90D,6BAEzB6N,OAAQ7N,UAERg0C,gBAAiBh0C,mBAEjBi0C,KAAMj0C,mBAENk0C,mBAAoBl0C,mBAEpBw0C,KAAMx0C,OAGN+0D,iBAAkB/0D,aAClBg1D,cAAeh1D,yBACfi1D,YAAaj1D,OAGby0C,WAAYz0C,cACZ00C,gBAAiB10C,oBACjB20C,WAAY30C,WACZ40C,mBAAoB50C,2BACpB60C,8BAA+B70C,iCAC/B80C,6BAA8B90C,iCAC9B+0C,sBAAuB/0C,4BACvBg1C,sBAAuBh1C,4BACvBi1C,sBAAuBj1C,4BACvBk1C,oBAAqBl1C,wBACrBm1C,oBAAqBn1C,wBAErBk1D,qCAAsCl1D,gCACtCm1D,uBAAwBn1D,6BACxBo1D,4BAA6Bp1D,wBAC7Bq1D,eAAgBr1D,kBAChBs1D,6CAA8Ct1D,yCAC9Cu1D,qCAAsCv1D,iCACtCw1D,gBAAiBx1D,iCACjBy1D,2BAA4Bz1D,sCAC5B01D,kBAAmB11D,qCACnB21D,mBAAoB31D,oDACpB41D,eAAgB51D,sBAChB61D,OAAQ71D,YACR81D,iCAAkC91D,0BAClC+1D,wBAAyB/1D,kBACzBg2D,qCAAsCh2D,mCACtCi2D,6BAA8Bj2D,2BAC9Bk2D,QAASl2D,2BACTm2D,mBAAoBn2D,gCACpBo2D,UAAWp2D,+BACXq2D,WAAYr2D,8CACZs2D,eAAgBt2D,uBAChBu2D,OAAQv2D,YACRw2D,iCAAkCx2D,0BAClCy2D,wBAAyBz2D,kBACzB02D,qCAAsC12D,mCACtC22D,6BAA8B32D,2BAC9B42D,QAAS52D,2BACT62D,mBAAoB72D,gCACpB82D,UAAW92D,+BACX+2D,WAAY/2D,8CACZg3D,qBAAsBh3D,wBAEtBi3D,MAAOj3D,QACPk3D,YAAal3D,gBACbm3D,eAAgBn3D,mBAEhBo3D,YAAap3D,SACbq3D,oBAAqBr3D,oBACrBs3D,mBAAoBt3D,mBACpBu3D,UAAWv3D,SACXw3D,YAAax3D,YACby3D,eAAgBz3D,cAChB03D,YAAa13D,WACb23D,aAAc33D,YACd43D,UAAW53D,SACX63D,qBAAsB73D,qBACtB83D,iBAAkB93D,iBAClB+3D,qBAAsB/3D,qBAEtBg4D,SAAUh4D,4BACVi4D,eAAgBj4D,0BAChBk4D,kBAAmBl4D,6BAEnBm4D,aAAcn4D,iBACdo4D,eAAgBp4D,cAChBq4D,iBAAkBr4D,qBAElBs4D,YAAat4D,eACbu4D,SAAUv4D,YAEVw4D,WAAYx4D,cAGZy4D,kBAAmBz4D,eACnB04D,qBAAsB14D,mBACtB24D,6BAA8B34D,4BAG9B44D,YAAa54D,eACb64D,WAAY74D,cACZ84D,KAAM94D,OAEN+4D,aAAc/4D,gBAEdg5D,kCAAmCh5D,qCACnCi5D,sCAAuCj5D,8CACvCk5D,MAAOl5D,eAGPm5D,UAAWn5D,YACXo5D,sBAAuBp5D,2BACvBq5D,gBAAiBr5D,oBACjBs5D,YAAat5D,UACbu5D,qBAAsBv5D,0BACtBw5D,IAAKx5D,MACLy5D,UAAWz5D,mBACX05D,wBAAyB15D,6BACzB25D,IAAK35D,2BACL45D,cAAe55D,uBACf65D,4BAA6B75D,iCAC7B85D,IAAK95D,+BACL+5D,mBAAoB/5D,uBACpBg6D,qBAAsBh6D,sBACtBi6D,uBAAwBj6D,2BACxBk6D,mBAAoBl6D,uBACpBm6D,0BAA2Bn6D,+BAC3Bo6D,eAAgBp6D,mBAChBq6D,2BAA4Br6D,kCAG5Bs6D,cAAet6D,iBAEfu6D,cAAev6D,QACfw6D,WAAYx6D,cACZy6D,aAAcz6D,SACd06D,kBAAmB16D,sBACnB26D,sBAAuB36D,aACvB46D,sBAAuB56D,mBAGvB66D,iBAAkB76D,oBAClB86D,iBAAkB96D,qBAClB+6D,SAAU/6D,0BACVg7D,iBAAkBh7D,oBAClBi7D,aAAcj7D,gBACdk7D,oBAAqBl7D,wBACrBm7D,YAAan7D,eACbo7D,iBAAkBp7D,oBAClBq7D,qBAAsBr7D,0BACtBs7D,qBAAsBt7D,0BACtBu7D,kBAAmBv7D,sBACnBw7D,uBAAwBx7D,2BAExBy7D,eAAgBz7D,kBAChB07D,aAAc17D,gBAGd27D,QAAS37D,WACT47D,aAAc57D,gBACd67D,UAAW77D,aACX87D,YAAa97D,eAGb+7D,WAAY/7D,cACZg8D,WAAYh8D,cACZi8D,WAAYj8D,cACZk8D,gBAAiBl8D,WACjBm8D,cAAen8D,SACfo8D,YAAap8D,gCACbq8D,UAAWr8D,8BACXs8D,YAAat8D,kCACbu8D,UAAWv8D,gCACXw8D,qBAAsBx8D,6CACtBy8D,mBAAoBz8D,2CACpB08D,sBAAuB18D,+CACvB28D,oBAAqB38D,6CACrB48D,iBAAkB58D,uBAClB68D,eAAgB78D,qBAChB88D,yBAA0B98D,6BAC1B+8D,kBAAmB/8D,sBACnBg9D,UAAWh9D,YACXi9D,UAAWj9D,YACXk9D,UAAWl9D,YACXm9D,aAAcn9D,eACdo9D,aAAcp9D,eACdq9D,MAAOr9D,QACPs9D,KAAMt9D,OACNu9D,wBAAyBv9D,iBH33BzB2vB,YIZyB,CACzB2T,cAAetjC,iBACfyjC,eAAgBzjC,kBAChBmkC,cAAenkC,kBACfqkC,YAAarkC,eACbskC,SAAUtkC,YACVwkC,OAAQxkC,UACRwmC,aAAcxmC,kBACdymC,gBAAiBzmC,oBACjB0nC,eAAgB1nC,kBAChByoC,OAAQzoC,SACRw9D,YAAax9D,oBACb+pC,mBAAoB/pC,wBACpBiqC,SAAUjqC,YACVkqC,WAAYlqC,cACZyqC,sBAAuBzqC,qBACvB8qC,YAAa9qC,8BACbgrC,QAAShrC,WACT00B,QAAS10B,UACTisC,WAAYjsC,cACZ2sC,YAAa3sC,cACby9D,SAAUz9D,WACVgtC,cAAehtC,iBACfitC,sBAAuBjtC,0BACvBs1C,aAAct1C,WACduxC,aAAcvxC,gBACd09D,cAAe19D,cACfgzC,OAAQhzC,mBJdR8wB,WImBwB,CACxBuT,YAAa,CACX,EAAGrkC,oBACH,EAAGA,cACH,EAAGA,qBAEL8qC,YAAa,CACX,EAAG9qC,oBACH,EAAGA,cACH,EAAGA,qBAELitC,sBAAuB,CACrB,EAAGjtC,oBACH,EAAGA,cACH,EAAGA,sBJhCLisD,WAAAA,GACA3mD,uBAAAA,GACAinD,4BAAAA,IAMK,SAASoR,GAAcp+D,EAAM+J,EAAK3G,GACvC,IAAMgb,EAAgBrU,EAAI3G,GAE1B,OAAKgb,EAKEpe,EAAKQ,UAAU4d,GAHbhb,CAIX,CL5BA,IAAMi7D,GAAc,GACdC,GAAgB,GAETC,GAAal9D,IAAAA,MAAO,SAACqf,GAkBhCA,EAAgBmd,YAjBc,CAC5BF,SAAU,CACR,CACEpyB,KAAM,kBAENlI,MAAO,2BACPu6B,SAAU,CACR,CACEryB,KAAM,kBAENlI,MAAO,iCAQjB,IACMu6B,EADWld,EAAgB89C,gBAAgBpjC,SACvBojC,gBAAgBpjC,SAE1CH,GAAS2C,CACX,IAmBO,SAASvN,GAAkBouC,GAChC,OAAIp9D,IAAAA,SAAWi9D,GAAeG,KAI9BxjC,GAAOiB,MAAM,wCAAD97B,OAAyCq+D,IACrDH,GAAc/uD,KAAKkvD,IAEZ,EACT,CUrCO,SAASC,GAAa1+D,EAAM2+D,EAASvyD,GAAgC,IAAtBqf,EAAQ5iB,UAAAC,OAAA,QAAAzD,IAAAwD,UAAA,GAAAA,UAAA,GAAG,SAC/D,GAAIxH,IAAAA,SAAWs9D,GAAU,CACvB,IAAM70C,EAAO,IAAIhU,KAAK6oD,GAMtB,OALkB3+D,EAAK4+D,cAAc,CACnCnzC,SAAAA,EACArf,UAAUuP,EAAAA,GAAAA,gBAAevP,IAAa,OAGjCyyD,CAAU/0C,GAAM4C,QAAQ,IAAK,GACtC,CAEA,OAAOiyC,CACT,CAMO,SAASG,GAAkB9+D,EAAM2+D,EAASvyD,GAC/C,OAAOsyD,GAAa1+D,EAAM2+D,EAASvyD,EAAU,MAC/C,CAIO,SAAS2yD,GAAiCC,GAC/C,GAAI39D,IAAAA,SAAW29D,GAAiB,CAC9B,IAAMp6C,EAAQ,0BAA0BlP,KAAKspD,GAE7C,GAAIp6C,EAAO,CAET,IAAAq6C,GAAAr0D,EAAAA,GAAAA,GAAkCga,EAAK,GAAzB7O,GAAFkpD,EAAA,GAAMA,EAAA,IAAEjpD,EAAKipD,EAAA,GAAEhpD,EAAGgpD,EAAA,GAC9B,OAAO,IAAItpD,GAAAA,UAAUI,EAAMC,EAAOC,EACpC,CACF,CAEA,OAAO,IACT,CCjDO,ICLyBipD,GDKnBC,GAAO,CAClBC,cEN2B,SAACla,GAC5B,IACM7hD,EADQ,cACMqS,KAAKwvC,GAEzB,OAAO7hD,EAAQg8D,SAASh8D,EAAM,GAAI,IAAM,CAC1C,EFEEi8D,UEAuB,SAACpa,GACxB,IACM7hD,EADQ,cACMqS,KAAKwvC,GAEzB,OAAO7hD,EAAQg8D,SAASh8D,EAAM,GAAI,IAAM,CAC1C,EFJE6oD,cAAAA,GACAI,eAAAA,GACAiT,gBGP6B,SAAClT,GAC9B,IAAQ5Y,EAAW4Y,EAAX5Y,OACR,MAAkB,qBAAXA,GAA4C,eAAXA,CAC1C,EHKE+rB,cITK,SAAuBC,GAC5B,IAAMC,GAASD,EACTE,IAAeF,GAAWA,EAAQG,cACxC,OAAOF,GAASC,CAClB,EJMEE,eKZK,SAAuB9/D,GAA4B,IAAzB6G,EAAY7G,EAAZ6G,aAAc0S,EAAMvZ,EAANuZ,OACzC0vC,EAAUpiD,EACZ,oJACA,yIAMF,OAJIvF,IAAAA,SAAWiY,KACb0vC,EAAO,IAAA5oD,OAAO4oD,EAAO,0BAAA5oD,OAAyBkZ,IAGzC0vC,CACT,ELGE8W,oBDTK,SAA6B9/D,EAAM2+D,EAASvyD,GACjD,GAAI/K,IAAAA,SAAWs9D,GAAU,CACvB,IAAM70C,EAAO,IAAIhU,KAAK6oD,GAMtB,OALkB3+D,EAAK4+D,cAAc,CACnCxW,IAAK,OACLh8C,UAAUuP,EAAAA,GAAAA,gBAAevP,IAAa,OAGjCyyD,CAAU/0C,EACnB,CAEA,MAAO,EACT,ECFE40C,aAAAA,GACAqB,mBDiBK,SAA4B//D,EAAM2+D,EAASvyD,GAChD,OAAOsyD,GAAa1+D,EAAM2+D,EAASvyD,EAAU,QAC/C,EClBE0yD,kBAAAA,GACAkB,gBDuCK,SACLhgE,EACAigE,EACAC,EACAC,GAEC,IADDC,IAAYv3D,UAAAC,OAAA,QAAAzD,IAAAwD,UAAA,KAAAA,UAAA,GAEZ,IAAKo3D,EACH,MAAO,IAGT,IACE/zD,EAGE+zD,EAHF/zD,gBACAJ,EAEEm0D,EAFFn0D,UACAE,EACEi0D,EADFj0D,QAGIq0D,EAAY,GAElB,GAAIn0D,EAAiB,CACnB,IACImS,EADED,EAAgBxY,GAAQsG,gBAAgBA,GAW9C,GATIkS,EACFC,EAAkBre,EAAKQ,UAAU4d,IAEjCC,EAAkBnS,EVnDjB,SAAwBnM,GAG3B,IAFF6wB,EAAU7wB,EAAV6wB,WACAvtB,EAAKtD,EAALsD,MAEMi9D,EAAQ,GAAAlgE,OAAMwwB,EAAU,KAAAxwB,OAAIiD,IAE9BhC,IAAAA,SAAWg9D,GAAaiC,KAI5BrlC,GAAOiB,MAAM,6CAAD97B,OAA8CwwB,EAAU,aAAAxwB,OAAYiD,IAChFg7D,GAAY9uD,KAAK+wD,GAGnB,CUsCMC,CAAgB,CAAE3vC,WAAY,kBAAmBvtB,MAAO6I,KAG1Dm0D,EAAU9wD,KAAK8O,GAEX8hD,EAAmB,CACrB,IAAMjlD,EAAY4jD,GAAkB9+D,EAAM8L,EAAW,OAC/CqP,EAAU2jD,GAAkB9+D,EAAMgM,EAAS,OAEjDq0D,EAAU9wD,KAAK,IAADnP,OAAK8a,EAAS,OAAA9a,OAAM+a,EAAO,KAC3C,CACF,KAAO,CACL,IAAMD,EAAYlb,EAAKwrB,gBAAgBuzC,GAAiCjzD,GAAY,CAAE2f,SAAU,QAC1FtQ,EAAUnb,EAAKwrB,gBAAgBuzC,GAAiC/yD,GAAU,CAAEyf,SAAU,QAI5F,GAFA40C,EAAU9wD,KAAK,GAADnP,OAAI8a,EAAS,OAAA9a,OAAM+a,IAE7BilD,EAAc,CAChB,IAAMI,EAASN,GAAiBO,EAAAA,GAAAA,wBAAuBP,GAAkB,GAEzEG,EAAU9wD,KAAK,OAADnP,OAAQogE,EAAM,KAC9B,CACF,CAEA,OAAOH,EAAUx1D,KAAK,IACxB,ECzFEk0D,iCAAAA,GACA2B,UDqBuB,IAAI/qD,GAAAA,UAAU,KAAM,EAAG,IOvCnCgrD,GAsBR,SAAAvyC,GAA4B,IAAzBwyC,EAAWxyC,EAAXwyC,YAAah0D,EAAOwhB,EAAPxhB,QAMX6D,EAAU,CACdw6C,UAAW2V,GAGb,OATe,IAAIlW,GAAwBtpD,EAAAA,EAAAA,GAAC,CAC1CkoD,WAAY,YACZC,SAAU,2BACP38C,IAMSwuB,OAAO3qB,EACvB,EAjCWkwD,GAmCL,SAAAltC,GAA4B,IAAzBmtC,EAAWntC,EAAXmtC,YAAah0D,EAAO6mB,EAAP7mB,QAMd6D,EAAU,CACdw6C,UAAW2V,GAGb,OATe,IAAIlW,GAAwBtpD,EAAAA,EAAAA,GAAC,CAC1CkoD,WAAY,YACZC,SAAU,4BACP38C,IAMSwuB,OAAO3qB,EACvB,EA9CWkwD,GAgDG,WAMZ,MAAO,CACL92D,KAAM,SACN8/C,OAPa,IAAIe,EAAyB,CAC1CpB,WAAY,YACZC,SAAU,eAMV4B,WAAY,KACZh5B,MAAO,CACL62B,QAAS,+CAGf,EA9DW2X,GAgEQ,WAAgD,IAA/C/5D,EAAYiC,UAAAC,OAAA,QAAAzD,IAAAwD,UAAA,IAAAA,UAAA,GAAUg4D,EAAeh4D,UAAAC,OAAA,QAAAzD,IAAAwD,UAAA,GAAAA,UAAA,GAAG,KAO1D,MAAO,CACLgB,KAAM,SACN8/C,OARa,IAAIe,EAAyB,CAC1CpB,WAAY,YACZC,SAAU,eAOV4B,WAAY,KACZh5B,MAAO,CACL62B,QAPYmW,GAAKU,eAAe,CAAEj5D,aAAAA,EAAc0S,OAAQunD,KAU9D,EC/EWC,I,UACI,SAAA/gE,GAAwB,IAArBghE,EAAUhhE,EAAVghE,WAAYhwD,EAAIhR,EAAJgR,KAO5B,OANe,IAAI25C,EAAyB,CAC1CpB,WAAY,WACZC,SAAS,cAADnpD,OAAgB2gE,EAAU,KAClChwD,KAAAA,IAGYm5C,MAChB,GATW4W,GAWK,SAAA1yC,GAAmC,IAAhC9c,EAAW8c,EAAX9c,YAAa0vD,EAAc5yC,EAAd4yC,eACxBrX,EAAS,IAAIe,EAAyB,CAC1CpB,WAAY,oBACZC,SAAU,wBAGZ,OAAIyX,EACKrX,EAAOO,KAAK54C,EAAa,CAC9B40C,gBAAiB,CACf+a,OAAQ,CAAC,eAIRtX,EAAOO,KAAK54C,EACrB,EAzBWwvD,GA2BD,SAAArtC,GAAmB,IAAhBniB,EAAWmiB,EAAXniB,YAKX,OAJe,IAAIo5C,EAAyB,CAC1CpB,WAAY,oBACZC,SAAS,uBAADnpD,OAAyBkR,EAAW,+CAEhC44C,MAChB,EAjCW4W,GAmCG,SAAAntC,GAAyB,IAAtBriB,EAAWqiB,EAAXriB,YAAanD,EAAIwlB,EAAJxlB,KACtBw7C,EAAS,IAAIe,EAAyB,CAC1CpB,WAAY,aACZ7B,YAAa,QACb8B,SAAS,uBAADnpD,OAAyBkR,EAAW,4BAGxC6gB,EAAQ,CACZ62B,QAAS,gDAOX,OAJI76C,IACFgkB,EAAMhkB,KAAOA,GAGR,CACLtE,KAAM,SACN8/C,OAAAA,EACAx3B,MAAAA,EAEJ,ECpDW+uC,GACL,SAAAnhE,GAAe,IACfgR,EADGN,EAAO1Q,EAAP0Q,QAgBP,OAZEM,EAPgBw6C,OAAOF,SAAS8V,SAAS7uC,SAAS,SAOF,qBAAzCjxB,IAAAA,OAASoP,EAAQC,WAAY,QAClCM,EAASC,QAAUD,EAASE,OAEvBF,EAASC,QAGH,IAAIy5C,EAAyB,CAC1CpB,WAAY,YACZC,SAAU,iEACVx4C,KAAAA,IAGYqqB,OAAO3qB,EACvB,EAlBWywD,GAoBL,SAAA9yC,GAA2B,IAAxB2yC,EAAU3yC,EAAV2yC,WAAYtwD,EAAO2d,EAAP3d,QAOnB,OANe,IAAIi6C,EAAyB,CAC1CpB,WAAY,YACZC,SAAU,aACVx4C,KAAuB,qBAAjBN,EAAQ2wD,KACZpwD,EAASC,QAAU,OAETg5C,OAAO8W,EAAYtwD,EAAS,CAAEi1C,cAAe,CAAE2b,OAAQ,UACvE,EA5BWH,GA8BC,SAAAztC,GAA2B,IAAxBstC,EAAUttC,EAAVstC,WAAYtwD,EAAOgjB,EAAPhjB,QAKzB,OAJe,IAAIi6C,EAAyB,CAC1CpB,WAAY,YACZC,SAAU,eAEEU,OAAO8W,EAAYtwD,EAAS,CAAEi1C,cAAe,CAAE2b,OAAQ,OAAQC,QAAS,uBACxF,E,0BPlCIC,IAN0BrC,IAMIn0D,EAAAA,GAAAA,GAAC,CAAC,EAAEy2D,GAAAA,QAAUh3C,MAAQ,MANT,SAAAi3C,GAAO,OAAI,SAAA1hE,GAC1D,GADoEA,EAAPwqB,WAC9C20C,GAAe,CAAC,IAAD,IAAAnvD,EAAAlH,UAAAC,OAD6C67C,EAAM,IAAA10C,MAAAF,EAAA,EAAAA,EAAA,KAAAG,EAAA,EAAAA,EAAAH,EAAAG,IAANy0C,EAAMz0C,EAAA,GAAArH,UAAAqH,GAE/EuxD,EAAO7mD,WAAC,EAAG+pC,EACb,CACF,CAAE,GAIW+c,GAAU,CACrBH,YAAAA,IQXWI,GAAY,CACvBC,YAAa,GACbC,cAAe,MCGV,SAASpnC,GAAQ16B,GAAoB,IAAjBuE,EAAKvE,EAALuE,MAAO6tB,EAAKpyB,EAALoyB,MAChC,OAAOjyB,EAAAA,EAAAA,KAAA,KAAGC,UAAU,YAAY2hE,KAAK,IAAI9+D,QAAS,SAAAimB,GAAC,OAAIA,EAAE84C,gBAAgB,EAAE5vC,MAAOA,EAAM9xB,SAAEiE,GAC5F,CCLO,SAAS09D,GAAe9lC,GAC7B,GAAI76B,IAAAA,SAAW66B,GACb,MAAM,GAAN97B,OAAU87B,GAEZ,GAAI76B,IAAAA,SAAW66B,GAAQ,CACrB,IAAM+lC,EAAa/lC,EAAMgmC,MAAQhmC,EAAMgmC,MAAQ,GAC/C,MAAO,GAAA9hE,OAAG87B,EAAMimC,QAAO,OAAA/hE,OAAM6hE,GAAah4D,MAC5C,CAEA,IACE,MAAM,GAAN7J,OAAU87B,EAAMtf,WAClB,CAAE,MAAOqM,GACP,MAAO,+BACT,CACF,C,0CCbam5C,GAAa5vD,EAAAA,cAAoB,IAEvC,SAAS6vD,GAAmB3/D,GACjC,OACExC,EAAAA,EAAAA,KAACkiE,GAAWre,SAAQ,CAAC1gD,MAAOX,EAAMgV,YAAYrX,SAC3CqC,EAAMrC,UAEb,CCPO,IAAMkY,GAAwB,SAAAyrC,GAAe,OAAK,SAAAthD,GAAK,OAC5DxC,EAAAA,EAAAA,KAACkiE,GAAWne,SAAQ,CAAA5jD,SAEhB,SAAAwjD,GAAO,OAAI3jD,EAAAA,EAAAA,KAAC8jD,GAAe5iD,EAAAA,EAAAA,GAAA,CAACsW,YAAamsC,GAAanhD,GAAS,GAE7C,CAAC,ECGnB4/D,GAAyB,SAAAC,GAAA,SAAAD,IAAA,OAAA1/D,EAAAA,EAAAA,GAAA,KAAA0/D,IAAAz/D,EAAAA,EAAAA,GAAA,KAAAy/D,EAAAz5D,UAAA,QAAA3F,EAAAA,EAAAA,GAAAo/D,EAAAC,IAAAp/D,EAAAA,EAAAA,GAAAm/D,EAAA,EAAAl/D,IAAA,YAAAC,MAC7B,SAAU8+D,GACR7+D,KAAKk/D,KAAK,CACRL,QAAAA,EACAM,MAAO,QACPC,SAAS,EACTC,aAAa,GAEjB,IAAC,CAR4B,CAASC,GAAAA,aAmBxC,IAAMC,GAAcxhE,IAAAA,MAAO,WACzB,IAAMkgB,EAAW,IAAI+gD,GAErB,OADA/gD,EAASqT,SACFrT,CACT,IAEMuhD,GAAqBzhE,IAAAA,MAAO,SAAC6jD,EAAKid,GAAO,OAd/C,SAA6Bjd,EAAKid,IAChCY,EAAAA,GAAAA,MAAW,CACTC,eAAgB,qBAChBb,QAAQ,WAAD/hE,OAAa8kD,EAAG,mBAAA9kD,OAAkB+hE,EAAO,QAChDM,MAAO,QAEX,CASEQ,CAAoB/d,EAAKid,EAAQ,IAG7Be,GAAiB,SAAApoC,GAAA,SAAAooC,IAAA,OAAAtgE,EAAAA,EAAAA,GAAA,KAAAsgE,IAAArgE,EAAAA,EAAAA,GAAA,KAAAqgE,EAAAr6D,UAAA,QAAA3F,EAAAA,EAAAA,GAAAggE,EAAApoC,IAAA33B,EAAAA,EAAAA,GAAA+/D,EAAA,EAAA9/D,IAAA,oBAAAC,MACrB,WACE,IAAAG,EAA0CF,KAAKZ,MAAvCygE,EAAU3/D,EAAV2/D,WAAYnjE,EAAIwD,EAAJxD,KACpB,GADqCwD,EAAXkU,YACV0rD,uBAAwB,CACtC,IAAMjB,EAAUniE,EAAKQ,UAAUC,qCAC/BqiE,GAAmBK,EAAYhB,EACjC,CACF,GAAC,CAAA/+D,IAAA,SAAAC,MAED,WACE,OACE/C,EAAAA,EAAAA,MAAA,OAAKH,UAAU,sBAAqBE,SAAA,EAClCH,EAAAA,EAAAA,KAACohB,GAAAA,wBAAuB,CAACC,SAAUshD,QACnC3iE,EAAAA,EAAAA,KAAA,OAAKC,UAAU,gCAGrB,IAAC,CAhBoB,CAASqS,EAAAA,eA4B1B7R,GAAU4X,IAAsB1X,EAAAA,EAAAA,kBAAiBqiE,KAIhD,SAASG,KACd,OAAOR,IACT,CCtEA,IAAIS,GAAa,SAACnB,GAChBkB,KAAQE,UAAUpB,EACpB,EAEaqB,GAA2B,SAACC,GACnCpiE,IAAAA,WAAaoiE,KACfH,GAAaG,EAEjB,EAEaF,GAAY,SAACpB,GACxBmB,GAAWnB,EACb,ECXO,SAASrkC,GAAgB/9B,GAA0B,IAAvByW,EAAWzW,EAAXyW,YAAa7D,EAAK5S,EAAL4S,MAC9C,OACErS,EAAAA,EAAAA,MAAA,OAAK3B,MAAO,CAAE4vB,WAAY,QAASluB,SAAA,EACjCH,EAAAA,EAAAA,KAAA,MAAAG,SAAKsS,IACH6D,EAAYzM,KAAI,SAAC25D,EAAK/jD,GAAK,OAAKrf,EAAAA,EAAAA,MAAA,OAAKH,UAAU,QAAoBxB,MAAO,CAAEI,aAAc,QAASsB,SAAA,CAAC,IAAEgB,IAAAA,WAAaqiE,GAAOA,IAAQA,EAAI,KAACxjE,EAAAA,EAAAA,KAAA,WAA3Eyf,EAAuF,MAG3J,C,8BCMQ4/C,GAAoBJ,GAApBI,gBACKoE,GAAoBnxD,EAAAA,cAAoB,IACxCoxD,GAAwBpxD,EAAAA,cAAoB,IAE5CqxD,GAAyB,SAAAzsD,GAqBpC,SAAAysD,EAAYnhE,GAAQ,IAADC,EAkBd,OAlBcC,EAAAA,EAAAA,GAAA,KAAAihE,IACjBlhE,GAAAE,EAAAA,EAAAA,GAAA,KAAAghE,EAAA,CAAMnhE,KAoBRy5B,uBACE,SAAC4kC,EAAYhwD,GAAI,OAAK+vD,GAA+B,CAAEC,WAAAA,EAAYhwD,KAAAA,IAChEW,MAAM/O,EAAKmhE,eAAgB,EAADnhE,EAE/Bk5B,wBACE,SAACvqB,GAAkC,OACjCwvD,GAAgC,CAAExvD,YAAAA,EAAa0vD,iBADrBn4D,UAAAC,OAAA,QAAAzD,IAAAwD,UAAA,KAAAA,UAAA,KAEvBuI,MAAK,SAACC,GAEL,OADA1O,EAAKohE,gBAAgB1yD,GACdA,CACT,IACCK,MAAM/O,EAAKmhE,eAAgB,EAADnhE,EAEjCmhE,eAAiB,SAACE,GAChB,IAAMhoC,EAAYvgB,EAAAA,IAAUuoD,EAAK,sBAC3BtW,EAASjyC,EAAAA,IAAUuoD,EAAK,yBACxBC,EAAehnC,GAAgBjB,EAAW0xB,GAC1CwW,EAAmBvhE,EAAKD,MAAM1C,KAAKQ,UAAUyjE,GAInD,MAFAV,GAAUW,GAEJF,CACR,EAACrhE,EAEDwhE,sBACE,SAAA7yD,GAAW,OAAIwvD,GAA8B,CAAExvD,YAAAA,EAAanD,KAAMxL,EAAKwL,MAAO,EAAAxL,EAEhFyhE,2BACE,WACE,IAAA3rD,EAAkD9V,EAAKD,MAAMgV,YAArDhR,EAAqB+R,EAArB/R,sBAAuBC,EAAc8R,EAAd9R,eAE/B,OAAOD,EACLi6D,KAA0Ch+D,EAAK8nD,IAAK9jD,GAAkBhE,EAAK0hE,KAC3E1D,IACJ,EAACh+D,EAEH2hE,sBACE,kBAAMtZ,GAA+B,EAAAroD,EAEvC4hE,sBAAwB,SAAClzD,GACvB,IAAImzD,GAAqB,EACzB,GAAInjE,IAAAA,QAAUgQ,GAAW,CAKvB,GAJAhQ,IAAAA,QAAUgQ,GAAU,SAACg7C,GACnB1pD,EAAKohE,gBAAgB1X,GACrBmY,GAAsBjF,GAAgBlT,IAAWmY,CACnD,KACKnjE,IAAAA,QAAUgQ,EAAU1O,EAAKG,MAAM2hE,aAClC,IACE9hE,EAAKY,SAAS,CACZkhE,YAAapzD,GAEjB,CAAE,MAAO6qB,GACPv5B,EAAKs4B,OAAOiB,MAAM,8CAAD97B,OAA+C4hE,GAAe9lC,IACjF,CAEF,OAAOsoC,CACT,CACA,OAAO,CACT,EAAC7hE,EAGDohE,gBAAkB,SAAC1X,IAEfkT,GAAgBlT,IACfhrD,IAAAA,IAAMsB,EAAK+hE,kBAAmBrY,EAAO99C,KAGX,cAAlB89C,EAAO5Y,SAKlB9wC,EAAKgiE,kBAAkBtY,EAAO99C,IAC9B5L,EAAK+hE,kBAAoBrjE,IAAAA,KAAOsB,EAAK+hE,kBAAmBrY,EAAO99C,IACjE,EAAC5L,EAED6N,cAAgB,SAACo0D,GACfjiE,EAAK+hE,kBAAkBE,IAAY,CACrC,EAACjiE,EAEDkiE,WAAa,SAAAvzD,GAAW,OACtBwvD,GAA0B,CAAExvD,YAAAA,IACzBF,MAAK,SAACC,GAEL,OADA1O,EAAKohE,gBAAgB1yD,GACdA,CACT,IACCK,MAAM/O,EAAKmhE,eAAe,EAAAnhE,EAE/B4N,aAAe,SAAAE,GAAO,OAAIywD,GAA2B,CAAEzwD,QAAAA,IAAWiB,MAAM/O,EAAKmhE,eAAe,EAAAnhE,EAE5FmP,aAAe,SAACrB,EAASswD,GAAU,OACjCG,GAA2B,CAAEH,WAAAA,EAAYtwD,QAAAA,IAAWiB,MAAM/O,EAAKmhE,eAAe,EAAAnhE,EAEhFwP,mBAAqB,SAAC1B,EAASswD,GAAU,OACvCG,GAAiC,CAAEH,WAAAA,EAAYtwD,QAAAA,IAAWiB,MAAM/O,EAAKmhE,eAAe,EAEtFnhE,EACAmiE,aAAe,SAAA5Z,GAAW,OACxBF,EAAmB,CAAEE,YAAAA,IAAex5C,MAAM/O,EAAKmhE,eAAe,EAAAnhE,EAEhEoiE,qBAAuB,SAACnE,GAAyB,OAC/CD,GAAwB,CAAEC,YAAAA,EAAah0D,QADG/D,UAAAC,OAAA,QAAAzD,IAAAwD,UAAA,GAAAA,UAAA,GAAG,CAAC,IACI6I,MAAM/O,EAAKmhE,eAAe,EAAAnhE,EAE9EqiE,gBAAkB,SAAA9Z,GAAW,OAC3BF,EAAsB,CAAEE,YAAAA,IAAex5C,MAAM/O,EAAKmhE,eAAe,EAAAnhE,EAEnEsiE,wBAA0B,SAACrE,GAAyB,OAClDD,GAA2B,CAAEC,YAAAA,EAAah0D,QADG/D,UAAAC,OAAA,QAAAzD,IAAAwD,UAAA,GAAAA,UAAA,GAAG,CAAC,IAE9C6I,MAAM/O,EAAKmhE,eAAe,EAAAnhE,EAE/BgiE,kBAAoB,SAAArzD,GAAW,OAC7B05C,EAAwB,CAAE15C,YAAAA,IACvBF,MAAK,SAACC,GACL,IAAQ6zD,EAAa7zD,EAAb6zD,SAIR,OAHIA,IACFC,EAAAA,EAAAA,gBAAeD,GAEV7zD,CACT,IACCK,MAAM/O,EAAKmhE,eAAe,EAAAnhE,EAE/ByiE,iBAAmB,SAACC,EAAiBC,GACnC,IAAMv0D,EAAgC,qBAAzBs0D,EAAgBjE,KAA8BpwD,EAASC,QAAUD,EAASE,OACvF,OAAOvO,EAAKw5B,uBAAuBkpC,EAAgB92D,GAAIwC,GACpDK,MAAK,SAAAm0D,GAAY,OAAI5iE,EAAKmP,aAAawzD,EAAOC,GAAeF,EAAgB92D,GAAG,IAChFmD,MAAM/O,EAAKmhE,eAChB,EAACnhE,EAED6iE,cAAgB,SAAC3+D,GAEf,IAAM4+D,EAAY9iE,EAAKD,MAAMsL,gBAAgBC,KAAKy3D,MAElD,OAAKrkE,IAAAA,SAAWwF,EAASkG,gBAAiB04D,GAKnC9iE,EAAKyiE,iBAAiBv+D,GAAU,SAAA9G,GAGhC,IAFLgN,EAAehN,EAAfgN,gBACG44D,GAAMvb,EAAAA,EAAAA,GAAArqD,EAAAsqD,IAET,OAAIhpD,IAAAA,QAAU0L,EAAiB,CAAC04D,KAC9BrkE,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACKukE,GAAM,IACT54D,gBAAiB,GACjBG,mBAAmB,KAGvB9L,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACKukE,GAAM,IACT54D,gBAAiB1L,IAAAA,WAAa0L,EAAiB,CAAC04D,KAEpD,KAnBElC,GAAU5gE,EAAKD,MAAM1C,KAAKQ,UAAUC,+CAAsD,CAAE4rD,OAAQxlD,EAAS0rB,QACtGS,IAAAA,SAmBX,EAACrwB,EAEDijE,YAAc,CACZf,WAAYliE,EAAKkiE,WACjBC,aAAcniE,EAAKmiE,aACnBe,mBAAoBljE,EAAKkjE,mBACzBb,gBAAiBriE,EAAKqiE,gBACtBC,wBAAyBtiE,EAAKsiE,wBAC9BF,qBAAsBpiE,EAAKoiE,qBAC3Bx0D,aAAc5N,EAAK4N,aACnBo0D,kBAAmBhiE,EAAKgiE,kBACxBxoC,uBAAwBx5B,EAAKw5B,uBAC7BN,wBAAyBl5B,EAAKk5B,wBAC9BsoC,sBAAuBxhE,EAAKwhE,sBAC5B2B,iBAAkBnjE,EAAKmjE,iBACvB1B,2BAA4BzhE,EAAKyhE,2BACjCE,sBAAuB3hE,EAAK2hE,sBAC5B9zD,cAAe7N,EAAK6N,cACpBsB,aAAcnP,EAAKmP,aACnBK,mBAAoBxP,EAAKwP,mBACzBizD,iBAAkBziE,EAAKyiE,iBACvBI,cAAe7iE,EAAK6iE,eAjMpB7iE,EAAKs4B,OACH4oC,EAA0B3oC,qBAAqBx4B,EAAMge,iBAAiBya,QAAQC,SAChFz4B,EAAKG,MAAQ,CACXijE,iBAAkB,EAClBtB,YAAa/hE,EAAMsjE,eAAeC,QAAQ5iE,MAC1C6iE,WAAYxjE,EAAMsjE,eAAeG,cAAc9iE,OAEjDV,EAAK0hE,IAAM3hE,EAAMsL,gBAAgBC,KAAKM,GACtC5L,EAAKwL,KAAOzL,EAAMsL,gBAAgBC,KAAKm4D,OACvCzjE,EAAK8nD,IAAMppD,IAAAA,OAASqB,EAAMsL,gBAAgBwL,QAAS,MACnD7W,EAAK+hE,kBAAoB,CAAC,EAC1B/hE,EAAK0jE,yBAA2B,EAChC3b,EAAyBe,KAAK,CAC5BjB,KAAM9nD,EAAMsL,gBAAgBC,KAAKq4D,iBACjC/b,IAAK7nD,EAAMsL,gBAAgBE,SAASK,GACpCk8C,IAAK/nD,EAAMgV,YAAYiB,uBAAyBhW,EAAK8nD,SAAMplD,IAC1D1C,CACL,CAAC,OAAAO,EAAAA,EAAAA,GAAA2gE,EAAAzsD,IAAAjU,EAAAA,EAAAA,GAAA0gE,EAAA,EAAAzgE,IAAA,SAAAC,MAmLD,WACE,IAAMkjE,EACJllE,IAAAA,UAAUD,EAAAA,EAAAA,GAAC,CAAD,EACHkC,KAAKsiE,aACV,CACEnB,YAAanhE,KAAKR,MAAM2hE,YACxBsB,iBAAkBziE,KAAKR,MAAMijE,iBAC7BG,WAAY5iE,KAAKR,MAAMojE,aAG7B,OACEhmE,EAAAA,EAAAA,KAACyjE,GAAkB5f,SAAQ,CAAC1gD,MAAOC,KAAKsiE,YAAYvlE,UAClDH,EAAAA,EAAAA,KAAC0jE,GAAsB7f,SAAQ,CAAC1gD,MAAOkjE,EAAYlmE,SAChDiD,KAAKZ,MAAMrC,YAGpB,IAAC,CA3OmC,CAAS8X,EAAAA,WA4O9CquD,GA5OY3C,GAAAA,GACJnmC,sBAAwB,CAC7BC,SAAU,CACR,CACEpyB,KAAM,mBACNlI,MAAO,6BACPu6B,SAAU,CACR,CACEryB,KAAM,UACNlI,MAAO,gBATNwgE,GAgBJ3oC,qBAAuB,SAACxa,GAE7B,OADAA,EAAgBmd,YAAYgmC,GAA0BnmC,uBAC/Chd,EAAgB+lD,iBAAiBrrC,QAC1C,EAiQFyoC,GAA0BnjE,aAAe,CACvCslE,eAAgB,CACdC,QAAS,CACP5iE,MAAO,IAET8iE,cAAe,CACb9iE,MAAO,MAKb,IAAMkX,GAAO,CACX1Z,EAAAA,iBACA2Z,EACAwM,EAAAA,oBACAzO,IAGWkuD,GAAmBplE,IAAAA,QAASuZ,MAATvZ,IAAakZ,GAAblZ,CAAmBwiE,ICzTtCpxD,GAAwB,SAAAuxC,GAAe,OAAK,SAAAthD,GAAK,OAC5DxC,EAAAA,EAAAA,KAACyjE,GAAkB1f,SAAQ,CAAA5jD,SAEvB,SAAAwjD,GAAO,OAAI3jD,EAAAA,EAAAA,KAAC8jD,GAAe5iD,EAAAA,EAAAA,GAAA,CAACkP,WAAYuzC,GAAanhD,GAAS,GAErC,CAAC,EAEnBgkE,GAA4B,SAAA1iB,GAAe,OAAK,SAAAthD,GAAK,OAChExC,EAAAA,EAAAA,KAAC0jE,GAAsB3f,SAAQ,CAAA5jD,SAE3B,SAAAwjD,GAAO,OAAI3jD,EAAAA,EAAAA,KAAC8jD,GAAe5iD,EAAAA,EAAAA,GAAA,CAACkP,WAAYuzC,GAAanhD,GAAS,GAEjC,CAAC,ECbvBikE,GAAqB,WA6B/B,OAAAxjE,EAAAA,EAAAA,IA5BD,SAAAwjE,EAAYC,EAAoBlvD,EAAamvD,EAAgBtc,EAAK8Z,GAahE,IAbqEzhE,EAAAA,EAAAA,GAAA,KAAA+jE,GACrErjE,KAAKwjE,IAAMD,EACXvjE,KAAKyjE,YAAcH,EACnBtjE,KAAKoU,YAAcA,EACnBpU,KAAKinD,IAAMA,EACXjnD,KAAK+gE,IAAMA,EACX/gE,KAAK0jE,kBAAoB,CAAC,EAC1B1jE,KAAK2jE,qBAAuB,CAAC,EAExB5lE,IAAAA,SAAWqW,KACdpU,KAAKwjE,IAAIl5D,MAAM,qDACftK,KAAKoU,YAAc,CAAC,IAEjBrW,IAAAA,SAAWkpD,GACd,MAAM,IAAI2c,UAAU,4CACf,GAAI3c,EAAM,EACf,MAAM,IAAIt1C,WAAW,oDAGvB,IAAK5T,IAAAA,SAAWgjE,GACd,MAAM,IAAI6C,UAAU,4CACf,GAAI7C,EAAM,EACf,MAAM,IAAIpvD,WAAW,oDAGvB3R,KAAK6jE,gBACL7jE,KAAK8jE,sBACL9jE,KAAK+jE,yBACP,GAAC,EAAAjkE,IAAA,YAAAC,MAED,SAAUqK,GACR,IAAQgK,EAAgBpU,KAAhBoU,YACR,QAAIhK,EAAKsX,YACFtX,EAAKsX,UAAUtN,GAIxB,GAAC,CAAAtU,IAAA,YAAAC,MAED,WACE,MAAO,CACL0jE,YAAazjE,KAAKyjE,YAClBO,iBAAkBhkE,KAAK0jE,kBACvBC,qBAAsB3jE,KAAK2jE,qBAE/B,GAEA,CAAA7jE,IAAA,gBAAAC,MACA,WAAiB,IAADV,EAAA,KACV4kE,EAAkBjkE,KAAKyjE,YAAY1mE,SAGvCgB,IAAAA,KAAOkmE,GAAiB,SAACC,EAAgB7nD,GACnC4nD,EAAgB5nD,GAAOtf,WACzBknE,EAAgB5nD,GAAOtf,SACjBgB,IAAAA,OAASmmE,EAAennE,UAAU,SAAAgsD,GAAM,OAAI1pD,EAAKqiB,UAAUqnC,EAAO,IAE5E,IAGAkb,EACMlmE,IAAAA,OAASkmE,GAAiB,SAACC,GACzB,QAAK7kE,EAAKqiB,UAAUwiD,OAGfA,EAAennE,UAA+C,IAAnCmnE,EAAennE,SAASyI,OAK1D,IAENxF,KAAKyjE,YAAY1mE,SAAWknE,CAC9B,GAAC,CAAAnkE,IAAA,sBAAAC,MAED,WAAuB,IAAD+O,EAAA,KACpB9O,KAAK0jE,kBAAoB,CAAC,EAC1B,IAAMO,EAAkBjkE,KAAKyjE,YAAY1mE,SAEzCgB,IAAAA,KAAOkmE,GAAiB,SAAC3lD,GACvB,IAAQ/d,EAAO+d,EAAP/d,GACRuO,EAAK40D,kBAAkBnjE,EAAGwuB,gBAAiB,CAC7C,GACF,GAAC,CAAAjvB,IAAA,0BAAAC,MAED,WAA2B,IAADokE,EAAA,KACxBnkE,KAAK2jE,qBAAuB,CAAC,EAC7B,IAAMM,EAAkBjkE,KAAKyjE,YAAY1mE,SAEzCgB,IAAAA,KAAOkmE,GAAiB,SAAC3lD,GACvB,IAAM0a,EAAU1a,EAASvhB,SACzBgB,IAAAA,KAAOi7B,GAAS,SAAC+vB,GACf,IAAQxoD,EAAOwoD,EAAPxoD,GACR4jE,EAAKR,qBAAqBpjE,EAAGwuB,gBAAiB,CAChD,GACF,GACF,IAAC,CAjG+B,GCQrBq1C,GAAW,CACtBrnE,SAAU,CCTe,CACzBA,SAAU,CACR,CACEsS,MAAOlS,sDACP8K,KAAMmxB,GAAWyB,yBACjBwpC,YAAalnE,iBACb4kD,KAAM,EACNxhD,GAAI,gBACJ01B,OAAQ,2BACR/iB,YAAa,CACXC,KAAMhW,iNACNiW,IAAKjW,yDAGT,CACEkS,MAAOlS,wEACP8K,KAAMmxB,GAAW2B,0BACjBspC,YAAalnE,kBACb4kD,KAAM,EACNxhD,GAAI,iBACJ01B,OAAQ,4BACR/iB,YAAa,CACXC,KAAMhW,2LACNiW,IAAKjW,4KAGT,CACEkS,MAAOlS,qDACP8K,KAAMmxB,GAAW4B,yBACjBqpC,YAAalnE,kBACb4kD,KAAM,EACNxhD,GAAI,gBACJ01B,OAAQ,2BACR/iB,YAAa,CACXC,KAAMhW,mLACNiW,IAAKjW,2IAGT,CACEkS,MAAOlS,uDACP8K,KAAMmxB,GAAW6B,oBACjBopC,YAAalnE,YACb4kD,KAAM,EACNxhD,GAAI,WACJ01B,OAAQ,sBACR/iB,YAAa,CACXC,KAAMhW,oKACNiW,IAAKjW,0LAGT,CACEkS,MAAOlS,4CACP8K,KAAMmxB,GAAW8B,yBACjBmpC,YAAalnE,iBACb4kD,KAAM,EACNxhD,GAAI,gBACJ01B,OAAQ,2BACR/iB,YAAa,CACXC,KAAMhW,gKACNiW,IAAKjW,oLAGT,CACEkS,MAAOlS,iHACP8K,KAAMmxB,GAAW+B,8BACjBkpC,YAAalnE,oCACb4kD,KAAM,EACNxhD,GAAI,gCACJ62B,OAAQ,yBACRnB,OAAQ,gCACR/iB,YAAa,CACXC,KAAMhW,8FACNiW,IAAKjW,8MAGT,CACEkS,MAAOlS,0DACP8K,KAAMmxB,GAAWiC,6BACjBgpC,YAAalnE,qBACb4kD,KAAM,EACNxhD,GAAI,mBACJ62B,OAAQ,uBACRnB,OAAQ,+BACR/iB,YAAa,CACXC,KAAMhW,mHACNiW,IAAKjW,mMACLkW,KAAMlW,oHAGV,CACEkS,MAAOlS,iDACP8K,KAAMmxB,GAAWgC,mBACjBipC,YAAalnE,wBACb4kD,KAAM,EACNxhD,GAAI,qBACJ62B,OAAQ,gBACRnB,OAAQ,qBACR/iB,YAAa,CACXC,KAAMhW,4SACNiW,IAAKjW,mNAGT,CACEkS,MAAOlS,6CACP8K,KAAMmxB,GAAWkC,gCACjB+oC,YAAalnE,yBACb4kD,KAAM,EACNxhD,GAAI,gBACJ01B,OAAQ,kCACR/iB,YAAa,CACXC,KAAMhW,oPACNiW,IAAKjW,4GAGT,CACEkS,MAAOlS,mFACP8K,KAAMmxB,GAAWmC,gCACjB8oC,YAAalnE,iCACb4kD,KAAM,EACNxhD,GAAI,eACJ01B,OAAQ,kCACR/iB,YAAa,CACXC,KAAMhW,2NACNiW,IAAKjW,kQAGT,CACEkS,MAAOlS,4CACP8K,KAAMmxB,GAAWoC,+BACjB6oC,YAAalnE,yBACb4kD,KAAM,EACNxhD,GAAI,sBACJ01B,OAAQ,iCACR/iB,YAAa,CACXC,KAAMhW,6KACNiW,IAAKjW,+GAGT,CACEkS,MAAOlS,mFACP8K,KAAMmxB,GAAWqC,0BACjB4oC,YAAalnE,mBACb4kD,KAAM,EACNxhD,GAAI,kBACJ01B,OAAQ,4BACR/iB,YAAa,CACXC,KAAMhW,wEACNiW,IAAKjW,sDAGT,CACEkS,MAAOlS,iDACP8K,KAAMmxB,GAAWsC,sBACjB2oC,YAAalnE,eACb4kD,KAAM,EACNxhD,GAAI,cACJ62B,OAAQ,8BACRnB,OAAQ,wBACR/iB,YAAa,CACXC,KAAMhW,+GACNiW,IAAKjW,mHAGT,CACEkS,MAAOlS,wEACP8K,KAAMmxB,GAAWuC,4BACjB0oC,YAAalnE,qBACb4kD,KAAM,EACNxhD,GAAI,oBACJ62B,OAAQ,8BACRnB,OAAQ,8BACR/iB,YAAa,CACXC,KAAMhW,yRACNiW,IAAKjW,sGAIXkS,MAAOlS,+HACP8K,KAAM9K,cACN4kD,KAAM,EACNxhD,GAAI,cACJf,MAAO,CACLC,UAAU,ICtLY,CACxB1C,SAAU,CACR,CACEsS,MAAOlS,qDACP8K,KAAMmxB,GAAW0C,2BACjBuoC,YAAalnE,iCACb4kD,KAAM,EACNxhD,GAAI,yBACJ62B,OAAQ,wBACRnB,OAAQ,6BACR/iB,YAAa,CACXC,KAAMhW,4LACNiW,IAAKjW,8HAGT,CACEkS,MAAOlS,gDACP8K,KAAMmxB,GAAW2C,sBACjBsoC,YAAalnE,4BACb4kD,KAAM,EACNxhD,GAAI,oBACJ62B,OAAQ,wBACRnB,OAAQ,wBACR/iB,YAAa,CACXC,KAAMhW,uLACNiW,IAAKjW,2HAGT,CACEkS,MAAOlS,gDACP8K,KAAMmxB,GAAW4C,wBACjBqoC,YAAalnE,8BACb4kD,KAAM,EACNxhD,GAAI,0BACJ62B,OAAQ,wBACRnB,OAAQ,0BACR/iB,YAAa,CACXC,KAAMhW,oIACNiW,IAAKjW,yHAGT,CACEkS,MAAOlS,gEACP8K,KAAMmxB,GAAW6C,iBACjBooC,YAAalnE,gCACb4kD,KAAM,EACNxhD,GAAI,0BACJ62B,OAAQ,wBACRnB,OAAQ,mBACRvU,UAAW,SAAAtN,GAAW,QAAMA,EAAYkwD,qBAAqB,EAC7DpxD,YAAa,CACXC,KAAMhW,wHACNiW,IAAKjW,kGAIXkS,MAAOlS,yKACP8K,KAAM9K,gBACN4kD,KAAM,EACNxhD,GAAI,cC3DoB,CACxBxD,SAAU,CACR,CACEsS,MAAOlS,oEACP8K,KAAMmxB,GAAWuD,kCACjB0nC,YAAalnE,2BACb4kD,KAAM,EACNxhD,GAAI,yBACJ62B,OAAQ,uBACRnB,OAAQ,oCACRvU,UAAW,SAAAtN,GAAW,QAAMA,EAAYmwD,iCAAiC,EACzErxD,YAAa,CACXC,KAAMhW,4HACNiW,IAAKjW,gIAGT,CACEkS,MAAOlS,+EACP8K,KAAMmxB,GAAWwD,sCACjBynC,YAAalnE,gCACb4kD,KAAM,EACNxhD,GAAI,6BACJ62B,OAAQ,uBACRnB,OAAQ,wCACR/iB,YAAa,CACXC,KAAMhW,+OACNiW,IAAKjW,sFAGT,CACEkS,MAAOlS,8DACP8K,KAAMmxB,GAAWyD,kCACjBwnC,YAAalnE,2BACb4kD,KAAM,EACNxhD,GAAI,yBACJ62B,OAAQ,uBACRnB,OAAQ,oCACRvU,UAAW,SAAAtN,GAAW,QAAMA,EAAYmwD,iCAAiC,EACzErxD,YAAa,CACXC,KAAMhW,kKACNiW,IAAKjW,mIAGT,CACEkS,MAAOlS,0DACP8K,KAAMmxB,GAAW0D,oCACjBunC,YAAalnE,6BACb4kD,KAAM,EACNxhD,GAAI,0BACJ62B,OAAQ,uBACRnB,OAAQ,sCACR/iB,YAAa,CACXC,KAAMhW,mKACNiW,IAAKjW,gFAGT,CACEkS,MAAOlS,+DACP8K,KAAMmxB,GAAW2D,wBACjBsnC,YAAalnE,6BACb4kD,KAAM,EACNxhD,GAAI,0BACJ62B,OAAQ,uBACRnB,OAAQ,0BACR/iB,YAAa,CACXC,KAAMhW,2GACNiW,IAAKjW,6OAGT,CACEkS,MAAOlS,yGACP8K,KAAMmxB,GAAW4D,qCACjBqnC,YAAalnE,4CACb4kD,KAAM,EACNxhD,GAAI,+BACJ62B,OAAQ,uBACRnB,OAAQ,uCACR/iB,YAAa,CACXC,KAAMhW,uGACNiW,IAAKjW,+MAIXkS,MAAOlS,kJACP8K,KAAM9K,cACN4kD,KAAM,EACNxhD,GAAI,cCtFuB,CAC3BxD,SAAU,CACR,CACEsS,MAAOlS,+DACP8K,KAAMmxB,GAAWiD,kCACjBgoC,YAAalnE,wBACb4kD,KAAM,EACNxhD,GAAI,sBACJ62B,OAAQ,0BACRnB,OAAQ,oCACR/iB,YAAa,CACXC,KAAMhW,uGACNiW,IAAKjW,8FAGT,CACEkS,MAAOlS,gFACP8K,KAAMmxB,GAAWkD,4BACjB+nC,YAAalnE,kCACb4kD,KAAM,EACNxhD,GAAI,8BACJ01B,OAAQ,8BACRvU,UAAW,SAAAtN,GAAW,QAAMA,EAAY/Q,cAAc,EACtD6P,YAAa/V,iFAEf,CACEkS,MAAOlS,uFACP8K,KAAMmxB,GAAWmD,yBACjB8nC,YAAalnE,8BACb4kD,KAAM,EACNxhD,GAAI,2BACJ01B,OAAQ,2BACRvU,UAAW,SAAAtN,GAAW,QAAMA,EAAY/Q,cAAc,EACtD6P,YAAa/V,yFAGjBkS,MAAOlS,gHACP8K,KAAM9K,iBACN4kD,KAAM,EACNxhD,GAAI,iBCvCmB,CACvBxD,SAAU,CACR,CACEsS,MAAOlS,qGACP8K,KAAMmxB,GAAW6D,wBACjBonC,YAAalnE,wBACb4kD,KAAM,EACNxhD,GAAI,qBACJ01B,OAAQ,0BACR/iB,YAAa,CACXC,KAAMhW,mHACNiW,IAAKjW,uGAGT,CACEkS,MAAOlS,oHACP8K,KAAMmxB,GAAW8D,uCACjBmnC,YAAalnE,mCACb4kD,KAAM,EACNxhD,GAAI,iCACJ01B,OAAQ,yCACRvU,UAAW,SAAAtN,GAAW,QAClBA,EAAYowD,8BACZpwD,EAAYkpB,oBAAoB,EACpCpqB,YAAa,CACXC,KAAMhW,0MACNiW,IAAKjW,yHAGT,CACEkS,MAAOlS,4GACP8K,KAAMmxB,GAAWwC,8BACjByoC,YAAalnE,uBACb4kD,KAAM,EACNxhD,GAAI,qBACJ62B,OAAQ,mBACRnB,OAAQ,gCACR/iB,YAAa,CACXC,KAAMhW,oJACNiW,IAAKjW,iPAGT,CACEkS,MAAOlS,4GACP8K,KAAMmxB,GAAW+D,4BACjBknC,YAAalnE,oBACb4kD,KAAM,EACNxhD,GAAI,mBACJ62B,OAAQ,mBACRnB,OAAQ,8BACR/iB,YAAa,CACXC,KAAMhW,iJACNiW,IAAKjW,wQAIXkS,MAAOlS,wFACP8K,KAAM9K,YACN4kD,KAAM,EACNxhD,GAAI,aC3D0B,CAC9BxD,SAAU,CACR,CACEsS,MAAOlS,oEACP8K,KAAMmxB,GAAW8C,oBACjBmoC,YAAalnE,gBACb4kD,KAAM,EACNxhD,GAAI,eACJ01B,OAAQ,sBACR/iB,YAAa,CACXC,KAAMhW,0EACNiW,IAAKjW,8EAGT,CACEkS,MAAOlS,qCACP8K,KAAMmxB,GAAW+C,sBACjBkoC,YAAalnE,yCACb4kD,KAAM,EACNxhD,GAAI,wBACJ01B,OAAQ,wBACRvU,UAAW,SAAAtN,GAAW,QAAMA,EAAY/Q,cAAc,EACtD6P,YAAa/V,sCAEf,CACEkS,MAAOlS,0CACP8K,KAAMmxB,GAAWgD,uBACjBioC,YAAalnE,2BACb4kD,KAAM,EACNxhD,GAAI,yBACJ01B,OAAQ,yBACR/iB,YAAa,CACXC,KAAMhW,0DACNiW,IAAKjW,6DAIXkS,MAAOlS,gFACP8K,KAAM9K,qBACN4kD,KAAM,EACNxhD,GAAI,oBCxC0B,CAC9BxD,SAAU,CACR,CACEsS,MAAOlS,0EACP8K,KAAMmxB,GAAW,qCACjBirC,YAAalnE,2BACb4kD,KAAM,EACNxhD,GAAI,+BACJ01B,OAAQ,oCACRvU,UAAW,SAAAtN,GAAW,QAAMA,EAAY/Q,cAAc,EACtD6P,YAAa/V,2EAEf,CACEkS,MAAOlS,0EACP8K,KAAMmxB,GAAW,sCACjBirC,YAAalnE,kCACb4kD,KAAM,EACNxhD,GAAI,gCACJ01B,OAAQ,qCACRvU,UAAW,SAAAtN,GAAW,QAAMA,EAAY/Q,cAAc,EACtD6P,YAAa/V,2EAEf,CACEkS,MAAOlS,0EACP8K,KAAMmxB,GAAW,qCACjBirC,YAAalnE,iCACb4kD,KAAM,EACNxhD,GAAI,+BACJ01B,OAAQ,oCACRvU,UAAW,SAAAtN,GAAW,QAAMA,EAAY/Q,cAAc,EACtD6P,YAAa/V,2EAEf,CACEkS,MAAOlS,iDACP8K,KAAMmxB,GAAW,yCACjBirC,YAAalnE,kCACb4kD,KAAM,EACNxhD,GAAI,qCACJ01B,OAAQ,wCACRvU,UAAW,SAAAtN,GAAW,QAAMA,EAAY/Q,cAAc,EACtD6P,YAAa,CACXC,KAAMhW,4MACNiW,IAAKjW,gIAIXkS,MAAOlS,kEACP8K,KAAM9K,oBACN4kD,KAAM,EACNxhD,GAAI,mBACJmhB,UAAW,SAAAtN,GAAW,QAAMA,EAAY/Q,cAAc,GClD3B,CAC3BtG,SAAU,CACR,CACEsS,MAAOlS,iGACP8K,KAAMmxB,GAAWoD,+BACjB6nC,YAAalnE,uCACb4kD,KAAM,EACNxhD,GAAI,uBACJ62B,OAAQ,6BACRnB,OAAQ,iCACRvU,UAAW,SAAAtN,GAAW,QAAMA,EAAYqwD,2BAA2B,EACnEvxD,YAAa,CACXC,KAAMhW,6FACNiW,IAAKjW,sGAGT,CACEkS,MAAOlS,kFACP8K,KAAMmxB,GAAWqD,6BACjB4nC,YAAalnE,oCACb4kD,KAAM,EACNxhD,GAAI,qBACJ62B,OAAQ,6BACRnB,OAAQ,+BACRvU,UAAW,SAAAtN,GAAW,QAAMA,EAAYqwD,2BAA2B,EACnEvxD,YAAa,CACXC,KAAMhW,8EACNiW,IAAKjW,2GAGT,CACEkS,MAAOlS,6IACP8K,KAAMmxB,GAAWsD,gCACjB2nC,YAAalnE,uCACb4kD,KAAM,EACNxhD,GAAI,uBACJ62B,OAAQ,6BACRnB,OAAQ,kCACRvU,UAAW,SAAAtN,GAAW,QAAMA,EAAYqwD,2BAA2B,EACnEvxD,YAAa,CACXC,KAAMhW,yIACNiW,IAAKjW,8NAIXkS,MAAOlS,gJACP8K,KAAM9K,qBACN4kD,KAAM,EACNxhD,GAAI,gBACJmhB,UAAW,SAAAtN,GAAW,QAAMA,EAAYqwD,2BAA2B,IR9BnEx8D,KAAM9K,mBACN4kD,KAAM,EACNxhD,GAAI,UACJ8O,MAAOlS,iHACPqC,MAAO,CACLC,UAAU,IAId,SAASilE,GAAWt6D,GAClB,IAAMH,EAASlM,IAAAA,MAAQqM,GAOvB,OANArM,IAAAA,QAAUkM,GAAQ,SAAClK,EAAOD,GACZ,aAARA,GAAsB/B,IAAAA,SAAWgC,KAAWhC,IAAAA,WAAagC,KAC3DkK,EAAOnK,GAAO/B,IAAAA,MAAQgC,GAE1B,IACAkK,EAAOlN,SAAWgB,IAAAA,IAAMqM,EAAKrN,UAAU,SAAA4nE,GAAS,OAAID,GAAWC,EAAU,IAClE16D,CACT,CAEA,SAAS26D,GAAcx6D,EAAM1N,GAC3B,IAAMuN,EAASG,EAaf,OAZIH,EAAOhC,OACTgC,EAAOhC,KAAOvL,EAAKQ,UAAU+M,EAAOhC,OAElCgC,EAAOoF,QACTpF,EAAOoF,MAAQ3S,EAAKQ,UAAU+M,EAAOoF,QAEnCpF,EAAOiJ,cACTjJ,EAAOiJ,YAAcnV,IAAAA,SAAWkM,EAAOiJ,aACrCnV,IAAAA,UAAYkM,EAAOiJ,aAAa,SAAAnT,GAAK,OAAIrD,EAAKQ,UAAU6C,EAAM,IAC9DrD,EAAKQ,UAAU+M,EAAOiJ,cAE1BjJ,EAAOlN,SAAWgB,IAAAA,IAAMqM,EAAKrN,UAAU,SAAA4nE,GAAS,OAAIC,GAAcD,EAAWjoE,EAAK,IAC3EuN,CACT,CAaA,SAAS46D,GAAiBz6D,EAAM89C,GAAgC,IAAnBlF,EAAWz9C,UAAAC,OAAA,QAAAzD,IAAAwD,UAAA,GAAAA,UAAA,GAAG,GAQzD,OAPI6E,EAAKrN,UACPgB,IAAAA,KAAOqM,EAAKrN,UAAU,SAAC+nE,GACrBD,GAAiBC,EAAO5c,EAAalF,EACvC,IAGF54C,EAAK23C,KAlBP,SAAgC33C,EAAM89C,EAAalF,GACjD,OAAQ+Y,SAAS3xD,EAAK23C,KAAM,KAC1B,KAAK,EAAG,MAAM,GAANjlD,OAAWorD,EAAW,eAAAprD,OAAckmD,GAC5C,KAAK,EAAG,MAAM,GAANlmD,OAAWorD,EAAW,cAAAprD,OAAasN,EAAK7J,IAAEzD,OAAGkmD,GACrD,KAAK,EAAG,MAAM,GAANlmD,OAAWorD,EAAW,YAAAprD,OAAWsN,EAAK7J,IAAEzD,OAAGkmD,GAIrD,OADAjlD,IAAAA,OAAQ,WAAQ,MAAM,IAAIuM,MAAM,0BAADxN,OAA2BsN,EAAK23C,MAAS,IACjE33C,EAAK23C,IACd,CAScgjB,CAAuB36D,EAAM89C,EAAalF,GAC/C54C,CACT,CAEO,IAAMq5D,GACN,SAAC/mE,EAAMwrD,EAAa6Y,EAAK9Z,GAC5B,IAAMjE,EAAW,QAAAlmD,OAAWmqD,EAAG,SAAAnqD,OAAQikE,GAEnC92D,EAASy6D,GAAWN,IAExB,OAAOS,GADP56D,EAAS26D,GAAc36D,EAAQvN,GACCwrD,EAAalF,EAC/C,ESnFK,IAAMgiB,GAAU,WACrB,SAAAA,EAAY5wD,EAAaovD,EAAKvc,EAAK8Z,EAAKrkE,EAAMwrD,GAC5C,IADyD5oD,EAAAA,EAAAA,GAAA,KAAA0lE,IACpDjnE,IAAAA,SAAWylE,GACd,MAAM,IAAIl5D,MAAM,+CAOlB,GAJAtK,KAAKwjE,IAAMA,EACXxjE,KAAKilE,kBAAoBjlE,KAAKilE,kBAAkBtlE,KAAKK,MACrDA,KAAKklE,sBAAwBllE,KAAKklE,sBAAsBvlE,KAAKK,MAE5B,MAA7BglE,EAAWG,eAAf,CACA,IAAMC,EAAc,IAAI/B,GACtBI,GAAgB/mE,EAAMwrD,EAAa6Y,EAAK9Z,GACxC7yC,EACAovD,EACAvc,EACA8Z,EACA7Y,GAEF8c,EAAWG,eAAiBC,EAAYC,WATS,CAUnD,CAAC,OAAAxlE,EAAAA,EAAAA,GAAAmlE,EAAA,EAAAllE,IAAA,wBAAAC,MAID,SAAsBQ,GACpB,IAAKxC,IAAAA,SAAWwC,GAGd,OAFAP,KAAKwjE,IACFl5D,MAAM,kFAADxN,cAA0FyD,KAC3F,EAGT,IAAQ4kE,EAAmBH,EAAnBG,eACFG,EAAc/kE,EAAGwuB,cACvB,QAASo2C,EAAexB,qBAAqB2B,EAC/C,GAAC,CAAAxlE,IAAA,oBAAAC,MAED,SAAkBQ,GAChB,IAAKxC,IAAAA,SAAWwC,GAGd,OAFAP,KAAKwjE,IACFl5D,MAAM,0EAADxN,cAAkFyD,KACnF,EAGT,IAAQ4kE,EAAmBH,EAAnBG,eACFG,EAAc/kE,EAAGwuB,cACvB,QAASo2C,EAAenB,iBAAiBsB,EAC3C,GAAC,CAAAxlE,IAAA,sBAAAC,MAGD,WAEE,OAD2BilE,EAAnBG,eACc1B,WACxB,IAAC,CApDoB,GCIV8B,GAAoBr2D,EAAAA,cAAoB,IAExCs2D,GAAqB,SAAA1xD,GAChC,SAAA0xD,EAAYpmE,GAAQ,IAADC,GAAAC,EAAAA,EAAAA,GAAA,KAAAkmE,GACjBnmE,GAAAE,EAAAA,EAAAA,GAAA,KAAAimE,EAAA,CAAMpmE,IAEN,IAAM65B,EAAa,IAAI+rC,GACrB3lE,EAAKD,MAAMgV,YACX,CAAC,EACD/U,EAAKD,MAAM6nD,IACX5nD,EAAKD,MAAM2hE,IACX1hE,EAAKD,MAAM1C,KACX2C,EAAKD,MAAM8oD,aAEPub,EAAcxqC,EAAWwsC,sBACzBzsC,EAAU,CAAC,EAuBf,OAtBFj7B,IAAAA,KACE0lE,EAAY1mE,UACZ,SAAC+nE,GACC/mE,IAAAA,KACE+mE,EAAM/nE,UACN,SAAC2oE,GACC1sC,EAAQ0sC,EAAKnlE,IAAMmlE,CACrB,GAEJ,IAEFrmE,EAAKG,MAAQ,CACX+gD,QAAS,CAKPkjB,YAAAA,EACAzqC,QAAAA,EACAksC,sBAAuB,SAAA3kE,GAAE,OAAI04B,EAAWisC,sBAAsB3kE,EAAG,EACjE0kE,kBAAmB,SAAA1kE,GAAE,OAAI04B,EAAWgsC,kBAAkB1kE,EAAG,IAE3DlB,CACJ,CAAC,OAAAO,EAAAA,EAAAA,GAAA4lE,EAAA1xD,IAAAjU,EAAAA,EAAAA,GAAA2lE,EAAA,EAAA1lE,IAAA,SAAAC,MAED,WACE,OACEnD,EAAAA,EAAAA,KAAC2oE,GAAkB9kB,SAAQ,CAAC1gD,MAAOC,KAAKR,MAAM+gD,QAAQxjD,SACnDiD,KAAKZ,MAAMrC,UAElB,IAAC,CA5C+B,CAAS8X,EAAAA,WA6ErC8wD,IAA4BpoE,EAAAA,EAAAA,kBAAiBioE,IACtCI,GAAoB3wD,GAAsB0wD,ICrF1ClrC,GAAwB,SAAAimB,GAAe,OAAK,SAAAthD,GAAK,OAC5DxC,EAAAA,EAAAA,KAAC2oE,GAAkB5kB,SAAQ,CAAA5jD,SAEvB,SAAAwjD,GAAO,OAAI3jD,EAAAA,EAAAA,KAAC8jD,GAAe5iD,EAAAA,EAAAA,GAAA,CAACm7B,WAAYsnB,GAAanhD,GAAS,GAErC,CAAC,ECN1BymE,GAA2B32D,EAAAA,cAAoB,IAExC42D,GAA4BD,GAAyBplB,SAE3D,SAAStpC,GAA8BupC,GAC5C,OAAO,SAAwCthD,GAC7C,OACExC,EAAAA,EAAAA,KAACipE,GAAyBllB,SAAQ,CAAA5jD,SAE9B,SAAAgD,GAAK,OAAInD,EAAAA,EAAAA,KAAC8jD,GAAe5iD,EAAAA,EAAAA,GAAA,CAACyX,kBAAmBxV,GAAWX,GAAS,GAIzE,CACF,C,iBCRwCsO,EAASC,QAEjD,SAASo4D,GAAWtpE,GAA0B,IAAvBupE,EAAKvpE,EAALupE,MAAO5xD,EAAW3X,EAAX2X,YACtB7N,EAAOxI,IAAAA,MAAQioE,GAAOhyD,OAAO,UAAUA,OAAO,OAAQ,IAAIjU,QAG5D0N,EAF8B2G,EAA1BhR,sBAGNsK,EAASE,OACTF,EAASC,QAQX,MAN2B,qBAAvBpH,EAAKwoB,gBACPthB,EAAOC,EAASC,SAGlBy5C,EAAyB6e,WAAWx4D,IAE7B,CACT,CAEAs4D,GAAYtd,UAAY,CACtBud,MAAOtd,IAAAA,MAAgB,CAAC,GAAGC,WAC3Bv0C,YACEs0C,IAAAA,MAAgB,CAAC,GAAGC,YAIxB,IAAMtrD,GAAU4X,IAAsBixD,EAAAA,GAAAA,WAAUH,KC1BnCI,GAAmB,SAAA/mE,GAAK,OACnCxC,EAAAA,EAAAA,KAACmiE,GAAkB,CAAC3qD,YAAahV,EAAMgV,YAAYrX,UACjDC,EAAAA,EAAAA,MAAC8oE,GAAyB,CAAC/lE,MAAOX,EAAMmW,kBAAkBxY,SAAA,EACxDH,EAAAA,EAAAA,KAACmpE,GAAW,KACZnpE,EAAAA,EAAAA,KAACgpE,GAAiB,CAAC3e,IAAK7nD,EAAM6nD,IAAK8Z,IAAK3hE,EAAM2hE,IAAK7Y,YAAa9oD,EAAM8oD,YAAYnrD,UAChFH,EAAAA,EAAAA,KAACumE,GAAgB,CAACT,eAAgBtjE,EAAMsjE,eAAe3lE,SACpDqC,EAAMrC,iBAIM,EA4BvBopE,GAAiB/oE,aAAe,CAC9BslE,eAAgB,CACdC,QAAS,CACP5iE,MAAO,IAET8iE,cAAe,CACb9iE,MAAO,MCjDN,IAAMqmE,GAAoBl3D,EAAAA,cAAoB,IAGxCm3D,GAAiB,SAAA3lB,GAAe,OAAK,SAAAthD,GAAK,OACrDxC,EAAAA,EAAAA,KAACwpE,GAAkBzlB,SAAQ,CAAA5jD,SAEvB,SAAAwjD,GAAO,OAAI3jD,EAAAA,EAAAA,KAAC8jD,GAAe5iD,EAAAA,EAAAA,GAAA,CAACwoE,WAAY/lB,GAAanhD,GAAS,GAErC,CAAC,ECXnBmnE,GAAQ,CACnB/oE,WAAY,CACVgpE,QAAS,CACPC,aAAc,CACZrqE,UAAW,WAIjBqB,KAAM,CACJlB,MAAO,CACLmqE,MAAO,CACLC,MAAO,UACPC,OAAQ,UACRC,OAAQ,UACRC,OAAQ,UACRC,OAAQ,UACRC,OAAQ,UACRC,OAAQ,UACRC,OAAQ,YAGZrpE,QAAS,CACPiS,eAAgB,UAChBrO,iBAAkB,Y,iGCnBX0lE,EAAmB,CAC9B1pE,MAAMmmB,EAAAA,EAAAA,OACJ,CAAElmB,WAAW,GACb0pE,EAAAA,YACAC,EAAAA,GAAe5pE,MAEjBD,YAAYomB,EAAAA,EAAAA,OACV,CAAC,EACDJ,EAAAA,kBACA6jD,EAAAA,GAAe7pE,Y,uFC8CP,EAKA,EAMA,EAMA8pE,EAKAC,E,8FAtBZ,SAAYC,GACV,oCACA,qBACD,CAHD,CAAY,MAA4B,KAKxC,SAAYC,GACV,sBACA,oBACA,qBACD,CAJD,CAAY,MAAyB,KAMrC,SAAYC,GACV,sBACA,oBACA,qBACD,CAJD,CAAY,MAAoB,KAMhC,SAAYJ,GACV,sBACA,mBACD,CAHD,CAAYA,IAAAA,EAAsB,KAKlC,SAAYC,GACV,oBACA,mBACA,mBACA,6CACD,CALD,CAAYA,IAAAA,EAAa,KA+BlB,MAAMI,EAAuB,CAClCC,OAAQ,SACRC,SAAU,Y,yBCjGL,MAAM,EAkBX,WAAAC,CAAYvnE,EAAY0H,EAAc8/D,EAAiC,CAAC,GACtE/nE,KAAKgoE,aAAeD,EAAKC,eAAgB,EACzChoE,KAAKjD,SAAW,GAChBiD,KAAKiI,KAAOA,EACZjI,KAAKioE,WAAaF,EAAKE,YAAc,KACrCjoE,KAAKO,GAAKA,EACVP,KAAKR,MAAQ,CACXC,UAAU,QAGUsC,IAAlBgmE,EAAKtoE,WACPO,KAAKR,MAAMC,SAAWsoE,EAAKtoE,UAE7BO,KAAKkoE,OAASH,EAAKG,QAAU,GAC7BloE,KAAKmoE,MAAQJ,EAAKI,YAASpmE,EAC3B/B,KAAKooE,eAAiBL,EAAKK,aAC3BpoE,KAAKqoE,SAAW,EAChBroE,KAAKF,IAAM,GAAGE,KAAKioE,cAAcjoE,KAAKO,KACtCP,KAAKsoE,YAAa,EAClBtoE,KAAKwT,SAAWu0D,EAAKv0D,WAAY,EACb,MAAhBu0D,EAAKQ,cAAoCxmE,IAAjBgmE,EAAKQ,QAC/BvoE,KAAKuoE,QAAUR,EAAKQ,QAEpBvoE,KAAKuoE,SAAU,CAEnB,CAEA,QAAAC,CAASjqD,EAAwBypD,GAAwB,GAMvD,OALAzpD,EAAOkqD,OAASzoE,KAChBA,KAAKjD,SAASkP,KAAKsS,GACnBve,KAAKgoE,aAAeA,EACpBzpD,EAAOmqD,eAAe1oE,KAAKqoE,SAAW,GAE/BroE,IACT,CAEA,aAAA2oE,GACE3oE,KAAKjD,SAAW,GAChBiD,KAAKgoE,cAAe,CACtB,CAEA,cAAAU,CAAeL,GACbroE,KAAKqoE,SAAWA,EAChBroE,KAAKjD,SAAS2iB,SAASolD,IACrBA,EAAM4D,eAAeL,EAAW,EAAE,GAEtC,CAQA,eAAAO,CAAgBC,EAA6B,IAI3C,OAHAA,EAAS58D,KAAKjM,MACdA,KAAKjD,SAAS6kB,QAAOxF,KAAUA,IAAMsD,SAAQopD,GAAKA,EAAEF,gBAAgBC,KAE7DA,CACT,CAEA,IAAAjiB,CAAKhhD,GACH,GAAIA,EAAU5F,MACZ,OAAOA,KAEP,IAAK,IAAI+oE,EAAI,EAAGA,EAAI/oE,KAAKjD,SAASyI,OAAQujE,IAAK,CAC7C,MAAM9kB,EAAMjkD,KAAKjD,SAASgsE,GAAGniB,KAAKhhD,GAClC,GAAIq+C,EACF,OAAOA,C,CAIf,EAMK,MAAM,UAAiC,EAO5C,WAAA6jB,CAAYvnE,EAAY0H,EAAc+gE,EAAsBjB,EAAiC,CAAC,GAC5FkB,MAAM1oE,EAAI0H,EAAM8/D,GAChB/nE,KAAKgpE,aAAeA,EACpBhpE,KAAKkpE,gBAAkBnB,EAAKmB,kBAAmB,CACjD,CAEA,qBAAAC,CAAsBD,GACpBlpE,KAAKkpE,gBAAkBA,CACzB,EAGK,MAAME,UAA2B,EAEtC,WAAAtB,CAAYkB,EAAsBzoE,EAAK,OAAQ0H,EAAO,OAAQ8/D,EAAiC,CAAC,GAC9FkB,MAAM1oE,EAAI0H,EAAM+gE,EAAcjB,GAC9B/nE,KAAKqpE,QAAS,CAChB,E,ICgDUC,E,aAAZ,SAAYA,GACV,cACA,aACD,CAHD,CAAYA,IAAAA,EAAyB,K,wCCjLrC,KAAIC,OAAM,UA6BV,MAeM,QAAE5sE,GAAY,KAAI6sE,iBAfT,CACbC,wBAAyB,CACvBztE,QAAS,QAEXssE,WAAY,CACV/rE,MAAO,QAETmtE,uBAAwB,CACtB7qE,cAAe,MACf2c,MAAO,OACPhgB,UAAW,EACX4qB,YAAa,KAIuCujD,SACxD,QCtCe,MAAMC,UAAqB,EAAA/0D,UAKxC,WAAAizD,CAAY1oE,GACV6pE,MAAM7pE,GAQR,KAAAmU,SAAYs2D,IACV7pE,KAAKokE,SAASrnE,SAAW8sE,EACzB7pE,KAAKC,SAAS,CACZ6pE,QAAS9pE,KAAKR,MAAMsqE,QAAU,GAC9B,EA0BJ,KAAAC,aAAe,CAAC3/D,EAAsB29D,KACpC,IAAIiC,EACAC,EAEJ,IAAIjqE,KAAKZ,MAAM8qE,gBAAgBD,mBAG7B,MAAM,IAAI3/D,MAAM,yDAFhB2/D,EAAqBjqE,KAAKZ,MAAM8qE,gBAAgBD,mBAKlD,MAAM,OAAE1rD,GAAWnU,EAoBnB,OAnBIpK,KAAKZ,MAAMkpE,WAAW/pD,GACxBA,EAAO+pD,YAAa,EAEpB/pD,EAAO+pD,YAAa,EAItB0B,EAAeC,EACb1rD,EACA,CACE4rD,MAAOnqE,KAAKZ,MAAM+qE,MAClBC,SAAUpqE,KAAKZ,MAAMgrE,UAEvBpqE,KAAKZ,MAAM8qE,gBACXlqE,KAAKZ,MAAM1C,KACXsD,KAAKZ,MAAM0B,WACXd,KAAKZ,MAAMirE,sBAIX,2BACE,gBAAC,EAAAC,eAAc,eAAClgE,KAAMA,EAAMmgE,mBAAoB,CAAC,GAAOxC,GACtD,2BAAMiC,IAGX,EAzEDhqE,KAAKwqE,UAAY,CAAC,EAClBxqE,KAAKokE,SAAW,CAAC,EACjBpkE,KAAKR,MAAQ,CACXsqE,QAAS,EAEb,CASA,MAAAx4C,GAEE,OADAtxB,KAAKyqE,+BAEH,gBAAC,EAAAC,SAAQ,CACPb,MAAO7pE,KAAKokE,SAASrnE,SACrBgtE,aAAc/pE,KAAK+pE,aACnBx2D,SAAUvT,KAAKuT,SACfo3D,mBAAoB3qE,KAAKrD,QAAQiuE,aACjCC,kBAAmB,CACjBprE,SAAU,uCAAuC,EAAQiqE,yBACzDoB,UAAW,sCAAsC,EAAQpB,yBACzDqB,UAAW,cAEbC,oBAAoB,+BAG1B,CAiDA,aAAAC,CAAc1sD,GACZ,IAAKA,EAAOgqD,QACV,OAGF,MAAMn+D,EAAOpK,KAAKkrE,UAAU3sD,GAC5B,KAAMA,aAAkB,GAA4BA,IAAWve,KAAKZ,MAAM+rE,YAAa,CACrF,MAAMpuE,EAAWwhB,EAAOxhB,SAErB0J,KAAK8X,GACGve,KAAKirE,cAAc1sD,KAE3BqD,QAAOlY,QAAW3H,IAAN2H,IACfU,EAAKrN,SAAWA,C,CAGlB,OAAOqN,CACT,CAEA,SAAA8gE,CAAU3sD,GACR,GAAIve,KAAKwqE,UAAUjsD,EAAOze,KAAM,CAC9B,MAAMsK,EAAOpK,KAAKwqE,UAAUjsD,EAAOze,KAEnC,OADAsK,EAAKmU,OAASA,EACPnU,C,CAET,MAAMtK,EAAM,GAAGye,EAAO0pD,cAAc1pD,EAAOhe,KAU3C,MATmB,CACjBA,GAAIge,EAAOhe,GACXT,MACAmI,KAAMsW,EAAOtW,KACbzI,MAAO,CACLC,SAAU8e,EAAO/e,OAAS+e,EAAO/e,MAAMC,UAEzC8e,SAGJ,CAEA,4BAAAksD,GACEzqE,KAAKwqE,UAAY,CAAC,EAClBxqE,KAAKorE,eAAeprE,KAAKokE,UACzBpkE,KAAKokE,SAAWpkE,KAAKirE,cAAcjrE,KAAKZ,MAAM+rE,YAC9CnrE,KAAKrD,QDrIF,SAAiC0kD,GACtC,MAAMgqB,EAAS,CACbT,aAAc,CACZhvE,OAAQylD,EAAOiqB,mBACfxnD,OAAQ,OACR/nB,QAAS,YAIP,QAAEY,GAAY,KAAI6sE,iBAAiB6B,GAAQ1B,SACjD,OAAOhtE,CACT,CC0HmB4uE,CAAwB,CACrCD,mBAAoBtrE,KAAKZ,MAAM8qE,gBAAgBsB,iBAEnD,CAEA,cAAAJ,CAAehhE,GAEb,GADApK,KAAKwqE,UAAUpgE,EAAKtK,KAAOsK,EACvBA,EAAKrN,SACP,IAAK,IAAIgsE,EAAI,EAAGA,EAAI3+D,EAAKrN,SAASyI,OAAQujE,IACxC/oE,KAAKorE,eAAehhE,EAAKrN,SAASgsE,GAGxC,E,eChJa,MAAM0C,UAAqB,EAAA52D,UAIxC,WAAAizD,CAAY1oE,GACV6pE,MAAM7pE,GACNY,KAAKrD,QFMF,SAAiC0kD,GACtC,MAAMgqB,EAAS,CACbK,aAAc,CACZ9vE,OAAQylD,EAAOsqB,mBACf7nD,OAAQ,OACR/nB,QAAS,SACTktB,SAAU,UAIR,QAAEtsB,GAAY,KAAI6sE,iBAAiB6B,GAAQ1B,SACjD,OAAOhtE,CACT,CElBmBivE,CAAwB,CACrCD,mBAAoB3rE,KAAKZ,MAAM8qE,gBAAgBsB,kBAEjDxrE,KAAKR,MAAQ,CAEXsqE,QAAS,GAEX9pE,KAAK6rE,eAAiB,EACxB,CAEA,MAAAv6C,GACE,MAAM,WAAE65C,GAAenrE,KAAKZ,MAM5B,OAJAY,KAAK6rE,eAAiBV,EAAWpuE,SAAS6kB,QAAOrD,GACxCA,EAAOgqD,UAId,uBAAK1rE,UAAWmD,KAAKrD,QAAQ+uE,cAC3B,gBAAC,EAAAI,UAAS,CAACC,cAAe,IAAKC,aAAc,MAC1C,EAAGzwE,QAAOK,YACT,gBAAC,EAAAqwE,KAAI,CACH1wE,MAAOA,EACPK,OAAQA,EACRswE,SAAUlsE,KAAK6rE,eAAermE,OAC9B2mE,UAAWnsE,KAAKZ,MAAM8qE,gBAAgBiC,UAEtCC,YAAapsE,KAAKosE,YAAYzsE,KAAKK,UAM/C,CAEQ,WAAAosE,CAAYC,GAClB,MAAM,MAAEhwD,EAAK,IAAEvc,EAAG,MAAEzE,GAAUgxE,EAE9B,OACE,uBAAKvsE,IAAKA,EAAKzE,MAAOA,GACnB2E,KAAKssE,eAAetsE,KAAK6rE,eAAexvD,IAG/C,CAEQ,cAAAiwD,CAAe/tD,GACrB,IAAI0rD,EAEJ,IAAIjqE,KAAKZ,MAAM8qE,gBAAgBD,mBAG7B,MAAM,IAAI3/D,MAAM,yDASlB,OAXE2/D,EAAqBjqE,KAAKZ,MAAM8qE,gBAAgBD,mBAK9CjqE,KAAKZ,MAAMkpE,WAAW/pD,GACxBA,EAAO+pD,YAAa,EAEpB/pD,EAAO+pD,YAAa,EAGf2B,EACL1rD,EACA,CACE4rD,MAAOnqE,KAAKZ,MAAM+qE,MAClBC,SAAUpqE,KAAKZ,MAAMgrE,UAEvBpqE,KAAKZ,MAAM8qE,gBACXlqE,KAAKZ,MAAM1C,KACXsD,KAAKZ,MAAM0B,WACXd,KAAKZ,MAAMirE,qBAEf,ECjFa,MAAMkC,UAA0B,EAAA13D,UAC7C,MAAAyc,GACE,IAAIk7C,EAAmB,KAOnBA,EALCxsE,KAAKZ,MAAM+rE,WAAWnD,cAA0D,IAA1ChoE,KAAKZ,MAAM+rE,WAAWpuE,SAASyI,OAI/DxF,KAAKZ,MAAM8qE,gBAAgBuC,oBAAsBnD,EAA0BoD,KAC/D,gBAAC9C,EAAY,iBAAK5pE,KAAKZ,QAEvB,gBAACqsE,EAAY,iBAAKzrE,KAAKZ,QAL1C,uBAAK/D,MAAO,CAAEU,QAAS,cAAgBiE,KAAKZ,MAAM1C,KAAKQ,UAAU,sBAQrE,IAAIyvE,EAAkB,KAClB3sE,KAAKZ,MAAM8qE,gBAAgB0C,uBAC7BD,EAAkB3sE,KAAKZ,MAAM8qE,gBAAgB0C,qBAC3C5sE,KAAKZ,MAAM+rE,WACX,CACEhB,MAAOnqE,KAAKZ,MAAM+qE,MAClBC,SAAUpqE,KAAKZ,MAAMgrE,UAEvBpqE,KAAKZ,MAAM8qE,gBACXlqE,KAAKZ,MAAM1C,KACXsD,KAAKZ,MAAM0B,WACXd,KAAKZ,MAAMirE,uBAIf,MAAM,IAAEwC,GAAQ7sE,KAAKZ,MAAM8qE,gBAAgB4C,YACrC,IAAEt9D,GAAQxP,KAAKZ,MAAM8qE,gBAAgB4C,WAE3C,OACE,uBAAKhtE,IAAK,0BAA0B+sE,SAAWr9D,IAAO3S,UAAU,qBAC7D8vE,EACD,gBAAC,EAAA91C,UAAS,CACR/B,SAAU90B,KAAKZ,MAAM8qE,gBAAgB6C,UACrCj2C,YAAa92B,KAAKZ,MAAM1C,KAAKQ,UAAU,cACvCP,QAAS,CACPo6B,iBAAkB,iBAClBC,iBAAkB,sBAGnBw1C,GAIT,EC3Ca,MAAMQ,UAAiB,EAAA3rE,cACpC,MAAAiwB,GACE,MAAM44C,EAAyD,oBAAvClqE,KAAKZ,MAAM+rE,WAAWnC,aACtBhpE,KAAKZ,MAAM6tE,aAAaC,gBACxBltE,KAAKZ,MAAM6tE,aAAaE,SAIhD,OAFAntE,KAAKotE,uBAAuBptE,KAAKZ,MAAM+rE,WAAYjB,GAGjD,uBAAKrtE,UAAU,2BACb,gBAAC,EAAAwwE,IAAG,KACN,gBAAC,EAAAC,IAAG,CACFC,GAAI,GACJ1wE,UAAW,sBAEX,gBAAC0vE,EAAiB,CAChBrC,gBAAiBA,EACjBiB,WAAYnrE,KAAKZ,MAAM+rE,WACvBhB,MAAOnqE,KAAKZ,MAAM+qE,MAClBE,qBAAsBrqE,KAAKZ,MAAMirE,qBACjCD,SAAUpqE,KAAKZ,MAAMgrE,SACrB9B,WAAYtoE,KAAKZ,MAAMkpE,WACvB5rE,KAAMsD,KAAKZ,MAAM1C,KACjBoE,WAAYd,KAAKZ,MAAM0B,eAM/B,CAOA,sBAAAssE,CAAuB7uD,EAAwBivD,GAC7C,IAAIC,GAAkB,EAUtB,GATAlvD,EAAOxhB,SAAS2iB,SAAQolD,IAClBvmD,aAAkB,EACpBve,KAAKotE,uBAAuBtI,EAAO9kE,KAAKZ,MAAM6tE,aAAa1uD,EAAOyqD,eAElEhpE,KAAKotE,uBAAuBtI,EAAO0I,GAErCC,EAAkBA,GAAmB3I,EAAMyD,OAAO,IAGhDhqD,aAAkB6qD,EAEpB,YADA7qD,EAAOgqD,SAAU,GAInB,MAAMmF,EAAcF,EAAsBE,YACtCF,EAAsBE,YACtB,KAAM,EAERnvD,EAAOgqD,QAAUkF,GAAmBC,EAAYnvD,EACpD,ECrCK,MAAMovD,EAGX,WAAA7F,CAAY8F,GACV5tE,KAAK4tE,iBAAmBA,EACxB5tE,KAAK6tE,SAAW,CAAC,CACnB,CAEA,QAAA3qE,CAAS4qE,GACP,YAAyD/rE,IAAlD/B,KAAK6tE,SAAS7tE,KAAK4tE,iBAAiBE,GAC7C,CAEA,GAAAC,CAAID,GACF,OAAI9tE,KAAKkD,SAAS4qE,SAAwB/rE,IAAZ+rE,GAAoC,MAAXA,IAGrD9tE,KAAK6tE,SAAS7tE,KAAK4tE,iBAAiBE,IAAYA,GACzC,EACX,CAEA,MAAAE,CAAOF,GACL,QAAK9tE,KAAKkD,SAAS4qE,YAGV9tE,KAAK6tE,SAAS7tE,KAAK4tE,iBAAiBE,KACpC,EACX,CAEA,OAAAG,GACE,OAA6C,IAAtC5iD,OAAOpiB,KAAKjJ,KAAK6tE,UAAUroE,MACpC,CAEA,IAAA0oE,GACE,OAAO7iD,OAAOpiB,KAAKjJ,KAAK6tE,UAAUroE,MACpC,CAEA,OAAAka,CAAQyuD,GACN9iD,OAAOpiB,KAAKjJ,KAAK6tE,UAAUnuD,SAAS5f,GAC3BquE,EAASnuE,KAAK6tE,SAAS/tE,KAElC,CAEA,UAAAsuE,CAAWC,GACT,GAAIruE,KAAKkuE,OAASG,EAASH,OACzB,OAAO,EAGT,IAAII,GAAQ,EAQZ,OANAtuE,KAAK0f,SAAQouD,IACX,IAAKO,EAASnrE,SAAS4qE,GAErB,OADAQ,GAAQ,GACD,C,IAGJA,CACT,CAEA,UAAAC,CAAWF,GACT,MAAMjtD,EAAMphB,KACZquE,EAAS3uD,SAASouD,IACd1sD,EAAI4sD,OAAOF,IACJ,IAEb,CAEA,KAAAU,CAAMH,GACJ,MAAMjtD,EAAMphB,KACZquE,EAAS3uD,SAASouD,IAChB1sD,EAAI2sD,IAAID,IACD,IAEX,CAEA,OAAAW,GACE,OAAOpjD,OAAOpiB,KAAKjJ,KAAK6tE,UAAUpnE,KAAK3G,GAC9BE,KAAK6tE,SAAS/tE,IAEzB,EAGK,MAAM4uE,EAAQ,CACnBF,MA3GF,SAAkBG,EAAcC,EAAeC,GAC7C,MAAMC,EAAgB,CAAC,EACjB96D,EAAc,GAgBpB,OAdA26D,EAAQjvD,SAAStD,IACV0yD,EAAMD,EAAOzyD,MAChBpI,EAAO/H,KAAKmQ,GACZ0yD,EAAMD,EAAOzyD,IAASA,E,IAI1BwyD,EAASlvD,SAAStD,IACX0yD,EAAMD,EAAOzyD,MAChBpI,EAAO/H,KAAKmQ,GACZ0yD,EAAMD,EAAOzyD,IAASA,E,IAInBpI,CACT,GCZO,MAAM+6D,UAAmB,EAAAl6D,UAK9B,WAAAizD,CAAY1oE,GACV6pE,MAAM7pE,GAsCR,KAAA+qE,MAAS6E,IACP,GAAIA,aAAuB,EACzB,GAA6B,IAAzBA,EAAY3G,SACd2G,EAAcA,EAAYjyE,aACrB,CAELiyE,EADa,CAACA,E,CAKlB,MAAMC,EAAiB,IAAIjvE,KAAKmJ,UAChC6lE,EAAchvE,KAAKkvE,cAAcD,EAAgBD,GACjDA,EAAchvE,KAAKmvE,eAAeH,GAElChvE,KAAKovE,eAAeJ,GACpBhvE,KAAK8pE,SAAS,EAGhB,KAAAM,SAAYiF,IACV,GAAIA,aAAsB,EAAgB,CAExCA,EADa,CAACA,E,CAIhB,IAAIlmE,EAA6B,IAAInJ,KAAKmJ,UAC1CA,EAAWnJ,KAAKsvE,iBAAiBnmE,EAAUkmE,GAE3CrvE,KAAKovE,eAAejmE,GACpBnJ,KAAK8pE,SAAS,EAGhB,KAAAyF,UAAY,KACVvvE,KAAKovE,eAAe,IACpBpvE,KAAK8pE,SAAS,EAuMR,KAAA0F,eAAkBlmE,IACxB,MAAM8X,EAAM,IAAIusD,GAAKvxD,GACZA,EAAKtc,MASd,OANIwJ,GACFA,EAAQoW,SAASnB,IACf6C,EAAI2sD,IAAIxvD,EAAO,IAIZ6C,CAAG,EAyBJ,KAAAknD,WAAc/pD,IACpB,MAAM6C,EAAMphB,KAAKyvE,YACjB,KAAOlxD,GAAQ,CACb,GAAI6C,EAAIle,SAASqb,GACf,OAAO,EAEPA,EAASA,EAAOkqD,M,CAGpB,OAAO,CAAK,EA1TZzoE,KAAKmJ,SAAWnJ,KAAKZ,MAAMswE,wBAA0B,GACrD1vE,KAAKyvE,YAAczvE,KAAKwvE,eAAexvE,KAAK2vE,8BAA8B3vE,KAAKmJ,WAC/EnJ,KAAKR,MAAQ,CACXsqE,QAAS,GAEX9pE,KAAK4vE,gBAAiB,CACxB,CAEA,MAAAt+C,GACE,MAAMu+C,EAAc7vE,KAAKZ,MAAM0wE,YACzBC,EAAY/vE,KAAKZ,MAAM4wE,UAG7B,OACE,uBAAKnzE,UAAWmD,KAAKZ,MAAM0B,WAAWmvE,YACpC,gBAAC,EAAA5C,IAAG,KACF,gBAAC,EAAAC,IAAG,CAACC,GAAI,GAEP,gBAACsC,EAAW,iBAAK7vE,KAAKZ,OACpB,gBAAC4tE,EAAQ,iBACHhtE,KAAKZ,MAAK,CACd+qE,MAAOnqE,KAAKmqE,MACZ7B,WAAYtoE,KAAKsoE,WACjB8B,SAAUpqE,KAAKoqE,SACfN,QAAS9pE,KAAKR,MAAMsqE,aAI1B,gBAAC,EAAAwD,IAAG,CAACC,GAAI,GAEP,gBAACwC,EAAS,iBAAK/vE,KAAKZ,MAAK,CAAEuX,uBAAwB3W,KAAKZ,MAAM8wE,kBAAkBv5D,yBAA0B,EAAOxN,SAAUnJ,KAAKmJ,SAAUihE,SAAUpqE,KAAKoqE,SAAUmF,UAAWvvE,KAAKuvE,eAK7L,CA2CQ,aAAAL,CAAciB,EAAkCC,GACtD,OAAO1B,EAAMF,MAAM2B,EAAgBC,GAAkB7xD,GAC5CA,EAAOze,KAElB,CAWQ,cAAAqvE,CAAehmE,GAErB,MAAMknE,EAA+CrwE,KAAKswE,2BAA2BnnE,GAKrF,IAAK,IAAI4/D,EAAIsH,EAAsB7qE,OAAS,EAAGujE,GAAK,EAAGA,IAAK,CAC1D,MAAMwH,EAAYF,EAAsBtH,GAClCyH,EAAexwE,KAAKwvE,iBACpBiB,EAAYF,EAAU9B,UAE5B,IAAK,IAAIiC,EAAI,EAAGA,EAAID,EAAUjrE,OAAQkrE,IAAK,CACzC,MAAMnyD,EAASkyD,EAAUC,GAGzB,GAAIF,EAAattE,SAASqb,KAAYA,EAAOkqD,OAE3C,SAGF,MAAMA,EAASlqD,EAAOkqD,OAGtB,GAAIzoE,KAAK2wE,mBAAmBpyD,EAAQ8xD,GAAwB,CAC1D,MAAMO,EAAc5wE,KAAKwvE,eAAe/G,EAAO1rE,UAE/CoM,EAAWA,EAASyY,QAAQrD,IAClBqyD,EAAY1tE,SAASqb,KAG/BgyD,EAAUhC,WAAWqC,GACrBJ,EAAahC,MAAMoC,GAGnB,Q,CAOF,MAAMA,EAAc5wE,KAAKwvE,eAAe/G,EAAO1rE,UAG3C6zE,EAAYxC,WAAWmC,IACrBxH,EAAI,GAAKN,EAAOT,cAAoC,IAApBS,EAAOJ,WAEzCl/D,EAAS8C,KAAKw8D,GAEdt/D,EAAWA,EAASyY,QAAQrD,IAClBqyD,EAAY1tE,SAASqb,KAG/B8xD,EAAsBtH,EAAI,GAAGgF,IAAItF,IAIrC8H,EAAUhC,WAAWqC,GACrBJ,EAAahC,MAAMoC,E,EAIvB,OAAOznE,CACT,CAOQ,kBAAAwnE,CAAmBpyD,EAAwB8xD,GACjD,IAAIhI,EAAW9pD,EAAO8pD,SAAW,GAC7B,OAAEI,GAAWlqD,EAEjB,KAAOkqD,GAAUJ,GAAY,GAAG,CAE9B,GADkBgI,EAAsBhI,GAC1BnlE,SAASulE,GACrB,OAAO,EAEPJ,IACAI,EAASA,EAAOA,M,CAGpB,OAAO,CACT,CAaQ,gBAAA6G,CAAiBnmE,EAA4BkmE,GAQnD,OAPAA,EAAW3vD,SAASmxD,IAClB,MAAM5sB,EAAkCjkD,KAAK8wE,oBAAoB3nE,EAAU0nE,GACvE5sB,IACF96C,EAAW86C,E,IAIR96C,CACT,CAQQ,mBAAA2nE,CACN3nE,EACA0nE,GAEA,IAAKA,EACH,OAAO,EAIT,GAAI7wE,KAAK+wE,eAAeF,EAAkB1nE,GACxCA,EAAWA,EAASyY,QAAQknD,GACnBA,EAAEhpE,MAAQ+wE,EAAiB/wE,UAE/B,CACL,MAAMmkD,EAAMjkD,KAAK8wE,oBAAoB3nE,EAAU0nE,EAAiBpI,QAEhE,IAAKxkB,EACH,OAAO,EAEP96C,EAAW86C,EAGb,MAAM,OAAEwkB,GAAWoI,EACnB,GAAIpI,EAAQ,CACV,IAAI1rE,EAA6B,IAAI0rE,EAAO1rE,UAC5CA,EAAWA,EAAS6kB,QAAQknD,GACnBA,EAAEhpE,MAAQ+wE,EAAiB/wE,MAGpCqJ,EAAWulE,EAAMF,MAAMrlE,EAAUpM,GAAWqf,GACnCA,EAAKtc,K,EAKlB,OAAOqJ,CACT,CAEQ,cAAA4nE,CAAexyD,EAAwByyD,GAK7C,OAAa,IAJD,cAAYA,GAAa50D,GAC5BA,EAAKtc,MAAQye,EAAOze,KAO/B,CAEQ,6BAAA6vE,CAA8BsB,GAMpC,OALAjxE,KAAKkxE,iBACLD,EAAevxD,SAASnB,IACtBve,KAAKmqE,MAAM5rD,EAAO,IAEpBve,KAAKmxE,gBACEnxE,KAAKmJ,QACd,CAmBQ,0BAAAmnE,CAA2BnnE,GAEjC,MAAMioE,EAAuC,GAC7CjoE,EAASuW,SAASnB,IAChB,IAAIgyD,EAAYa,EAAc7yD,EAAO8pD,UAChCkI,IACHA,EAAYvwE,KAAKwvE,iBACjB4B,EAAc7yD,EAAO8pD,UAAYkI,GAEnCA,EAAUxC,IAAIxvD,EAAO,IAIvB,IAAK,IAAIwqD,EAAI,EAAGA,EAAIqI,EAAc5rE,OAAQujE,IACnCqI,EAAcrI,KACjBqI,EAAcrI,GAAK/oE,KAAKwvE,kBAI5B,OAAO4B,CACT,CAcQ,cAAAhC,CAAejmE,GACrBnJ,KAAKmJ,SAAWA,EAChBnJ,KAAKyvE,YAAczvE,KAAKwvE,eAAermE,GACvCnJ,KAAKZ,MAAMmU,SAAUpK,EACvB,CAEA,OAAA2gE,GACM9pE,KAAK4vE,gBACP5vE,KAAKC,SAAS,CACZ6pE,QAAS9pE,KAAKR,MAAMsqE,QAAU,GAGpC,CAEA,cAAAoH,GACElxE,KAAK4vE,gBAAiB,CACxB,CAEA,aAAAuB,GACEnxE,KAAK4vE,gBAAiB,CACxB,EC/VF,KAAIrG,OAAM,UAEH,MAAM8H,EAAmB,CAC9BC,iBAAkB,IAClBC,UAAW,UACXC,0BAA2B,UAC3BC,gBAAiB,oBACjBC,gBAAiB,IACjBC,iBAAkB,KAGdC,EAAc,CAClB31E,gBAAiBo1E,EAAiBG,0BAClC51E,OAAQ,GACRG,QAAS,UACT6C,WAAY,OACZqqB,SAAU,UAGN,EAAS,CACb4oD,kBAAmB,CACjBhiE,cAAe,MACfnU,YAAa,MACbqvB,MAAO,OACPxuB,MAAO,OAET0zE,WAAY,CACV10E,MAAO,IACPK,OAAQy1E,EAAiBC,kBAE3BxB,YAAa,CACXl0E,OAAQy1E,EAAiBC,iBACzBh1E,OAAQ+0E,EAAiBI,gBACzBvzE,cAAe,GACf,6BAA8B,CAC5B6lB,SAAU,YAEZ,uBAAwB,CACtB7lB,aAAc,SAEhB,oBAAqB,CACnB6lB,SAAU,YAEZ,uBAAwB,CACtBA,SAAU,WACV/lB,IAAK,QACLyd,MAAO,UAGXq2D,iBAAkB,CAChB/1E,QAAS,eACTC,QAAS,OACT,aAAc,CACZ+1E,QAAS,GACT,iBAAkB,CAChBrzE,OAAQ,gBAGZ,SAAU,CACRszE,KAAM,EACNC,aAAc,WACdC,WAAY,SACZjpD,SAAU,UAEZ,2BAA4B,CAC1B+oD,KAAM,GAER,qBAAsB,CACpBA,KAAM,IAGVG,kBAAmB,CACjBpuD,SAAU,WACVtI,MAAO,MACP7c,WAAY,OACZF,OAAQ,UACRR,aAAc,EACd,aAAc,CACZQ,OAAQ,gBAGZ0zE,iBAAkB,CAChBr2E,QAAS,mBAEXs2E,OAAQ,CACN3zE,OAAQ,UACR3C,QAAS,SAEXu2E,WAAY,CACV/1E,MAAO80E,EAAiBE,WAG1BgB,+BAAgCX,EAChCY,gCAAiCZ,EACjCa,kBAAmBb,EACnBc,iBAAkB,CAChB12E,QAAS,OACTkC,aAAc,OACd2R,cAAe,MACfrU,UAAW,MACXe,MAAO,OACPqC,WAAY,OACZL,aAAc,sBACd,SAAU,CACRyzE,KAAM,GAER,oBAAqB,CACnBA,KAAM,GAER,qBAAsB,CACpBA,KAAM,IAGVW,sBAAuB,CACrBj0E,OAAQ,UACRolB,OAAQ,aAEV8uD,UAAW,CACT7uD,SAAU,WACVtI,MAAO,OACPzd,IAAK,QAEP60E,6BAA8B,CAC5B32E,SAAU,MACVF,QAAS,eACTi2E,aAAc,WACdC,WAAY,SACZjpD,SAAU,UAEZ6pD,wBAAyB,CACvBv2E,MAAO,UACPmC,OAAQ,WAEVq0E,kBAAmB,CACjBx2E,MAAO,QAETy2E,wBAAyB,CACvBz2E,MAAO,OACPmC,OAAQ,WAEVu0E,cAAe,CACb32E,OAAQ+0E,EAAiBI,gBACzB71E,OAAQy1E,EAAiBC,iBACzBv1E,QAAS,kBAEXm3E,iBAAkBtB,EAClBuB,oBAAqB,CACnB33D,MAAO,OACPzf,QAAS,SACT2C,OAAQ,WAEV00E,WAAY,CACV1xE,WAAY,EACZ9F,OAAQy1E,EAAiBM,iBACzB1oD,SAAU,QAEZoqD,eAAgB,CACdt3E,QAAS,SACT8T,cAAe,IAEjByjE,sBAAuB,CACrBv3E,QAAS,QACTE,gBAAiB,UACjBK,OAAQ,qBAEVi3E,sBAAuB,CACrBv3E,QAAS,eACT+nB,SAAU,WACV7lB,aAAc,OACdxC,YAAa,MACbmD,cAAe,MACfqzE,WAAY,SACZjpD,SAAU,SACVgpD,aAAc,YAEhBuB,YAAa,CACXzvD,SAAU,WACVtI,MAAO,KAETg4D,SAAU,CACR/3E,YAAa,MACbw2E,WAAY,SACZjpD,SAAU,SACVgpD,aAAc,YAEhByB,cAAe,CACb3vD,SAAU,WACVroB,YAAa,MACbwC,aAAc,OACdlC,QAAS,eACT6C,cAAe,MACfqzE,WAAY,SACZjpD,SAAU,SACVgpD,aAAc,YAEhB1C,UAAW,CACT7wE,OAAQ,UACR3C,QAAS,sBACT43E,WAAY,IAEdC,cAAe,CACbr3E,MAAO80E,EAAiBE,WAE1BsC,OAAQ,CACN73E,QAAS,QAEX83E,cAAe,CACb/vD,SAAU,WACVxoB,MAAO,QACPkgB,MAAO,OACPzd,IAAK,UAIDrB,QAAO,GAAK,KAAI6sE,iBAAiB,GAAeG,SACxD,QCxMO,MAAMoK,UAAyB,EAAAl/D,UAMpC,MAAAyc,GACE,MAAM0iD,EAAa,CACjBh4E,QAAS,eACT6C,cAAe,OACfilB,OAAQ,UAGV,OAAI9jB,KAAKZ,MAAM60E,SACN,gBAAC,EAAAvzE,UAAS,CAACE,OArBHA,EAqBsBZ,KAAKZ,MAAMwB,MApB7C,WAAS,CACd,aAAc,uBACd,cAAe,yBACbA,EAAO,OAoBLZ,KAAKZ,MAAM80E,OACN,wBAAMr3E,UAAW,eAAemD,KAAKZ,MAAMwB,QAASvF,MAAO24E,IAE3D,wBAAMn3E,UAAW,uBAAuBmD,KAAKZ,MAAMwB,UA3B5C,IAACA,CA4BnB,EApBO,EAAAxD,aAAe,CACpB+2E,IAAK,OACLF,UAAU,GC+PP,MAAMG,EACX,aAAOt8C,CAAOu8C,GACZ,OAlQJ,SAA+BA,GAC7B,MAAMC,EAAmBD,EAAM70E,MAAM+0E,eAAiBF,EAAM70E,MAAMwX,iBA8K5D02D,EAAenvD,IACnB,GAAI81D,EAAM70E,MAAM+0E,eAAiBh2D,EAAO0pD,aAAe,EAA0BkF,SAC/E,OAAO,EAGT,MAAMqH,EAAaH,EAAM70E,MAAMg1E,WAAWzlD,cAC1C,MAAO,CAACxQ,EAAOtW,KAAMsW,EAAOhe,GAAIge,EAAO2pD,QAAQuM,MAAK1qE,IAC1CA,GAAQ,IAAIglB,cAAcvlB,QAAQgrE,IAAe,GACzD,EAYEE,EAAqD,CACzD1L,aAAc,EAA6BkE,gBAC3C12D,iBAAkB69D,EAAM70E,MAAMgX,iBAC9BQ,iBAAkBq9D,EAAM70E,MAAMwX,iBAC9BL,uBAAwB09D,EAAM70E,MAAMmX,uBACpCg+D,mBAAoBN,EAAM70E,MAAMm1E,mBAChClI,kBAAmBnD,EAA0BoD,KAC7CI,WAAY,CACVt9D,IAAK,EACLq9D,IAAK,GAEP5C,mBA3MwC,CACxC1rD,EACAq2D,EACAC,EACAn4E,EACAC,KAEA,IAAIm4E,EAAmB,GACnB/B,EAAoB,GACpBgC,EAAiB,GAWrB,OAVIx2D,EAAO0pD,aAAe,EAA0B/xD,SAAYm+D,EAAM70E,MAAMuX,mBAAsBu9D,IAChGQ,EAAmBn4E,EAAQm2E,yBAEzBv0D,EAAO+pD,aACTyK,EAAoBp2E,EAAQo2E,mBAE1BuB,IACFS,EAAiBx2D,EAAO0pD,aAAe,EAA0Br9D,SAAW2T,EAAO4pD,MAAM6M,aAAez2D,EAAO4pD,MAAM8M,wBAIrH,uBAAKp4E,UAAW,GAAGF,EAAQm1E,oBAAoBvzD,EAAO+pD,WAAa,WAAa,gBAAgB/pD,EAAO/K,SAAW,WAAa,aAC7H,wBACE9T,QAAS,KACP,IAAI6e,EAAO/K,UAIP+K,EAAO0pD,aAAe,EAA0B/xD,UAAYm+D,EAAM70E,MAAMuX,oBAAsBu9D,EAAkB,CAClH,MAAMY,EAAmB32D,EACzB81D,EAAMc,UAAUD,E,GAGpBr4E,UAAW,GAAGi4E,KAAoBv2D,EAAO0pD,aAAe,EAA0B/xD,QAAU,cAAgB,iBAC5G7G,MAAOkP,EAAOtW,KAAI,UACTsW,EAAOhe,IAEfge,EAAOtW,K,IACLsW,EAAO4pD,OAAS5pD,EAAO4pD,MAAMxjB,QAAUpmC,EAAO0pD,aAAe,EAA0B/xD,QACxF,IAAIxZ,EAAKQ,UAAUyqE,EAAUppD,EAAO4pD,MAAMxjB,YAAc,IAI1DowB,EACE,gBAAC,WAAc,KACb,4BAAOx2D,EAAOhe,IACd,wBAAM8O,MAAO0lE,GAAiBA,IAEhC,KAEH,wBACCr1E,QAAS,KACH6e,EAAO/K,UAGXohE,EAAIzK,MAAM5rD,EAAO,EAEnB1hB,UAAW,GAAGF,EAAQw1E,qBAAqBY,uBAAuCx0D,EAAO/K,SAAW,WAAa,aAEjH,gBAACugE,EAAgB,CAACnzE,MAAM,cAAcszE,QAAM,EAACD,SAAUI,EAAM70E,MAAMmX,0BAGxE,EA8IDi2D,qBA1GkC,CAClCruD,EACAq2D,EACAC,EACAn4E,EACAC,EACA0tE,GAAgC,KAEhC,IAAI+K,EAAY/K,EAAuB3tE,EAAKQ,UAAU,gBAAwBR,EAAKQ,UAAU,qCAK7F,OAJIm3E,EAAM70E,MAAMgX,mBAAqB,EAAqB6+D,WACxDD,EAAY14E,EAAKQ,UAAU,yBAI3B,2BACE,uBAAKwC,QAAS,IAAMk1E,EAAIzK,MAAM5rD,GAAS1hB,UAAW,GAAGF,EAAQ01E,UAC3D,wBAAMx1E,UAAW,IAAWF,EAAQ21E,WAAY,aAAcvxE,SAAU,EAAG9D,KAAK,UAAUP,EAAKQ,UAAU,YAAyB,IAClI,gBAAC62E,EAAgB,CAACnzE,MAAM,cAAcszE,QAAM,EAACD,SAAUI,EAAM70E,MAAMmX,0BAErE,uBAAK9Z,UAAWF,EAAQ41E,gCAAiC6C,GAEvDf,EAAM70E,MAAM+0E,eAAiBF,EAAM70E,MAAMwX,kBAAoBuH,EAAOxhB,SAASyI,OAAS,EACpF,uBAAK3I,UAAWF,EAAQ+1E,kBAEpBn0D,EAAOxhB,SAAS,GAAGkrE,aAAe,EAA0B/xD,QAC5D,gBAAC,WAAc,KACb,4BAAOxZ,EAAKQ,UAAU,iBACtB,4BAAOR,EAAKQ,UAAU,QACtB,4BAAOR,EAAKQ,UAAU,0BAExB,gBAAC,WAAc,KACb,4BAAOR,EAAKQ,UAAU,yBACtB,4BAAOR,EAAKQ,UAAU,QACtB,4BAAOR,EAAKQ,UAAU,oBAI5B,KAGP,EAmEDs3E,WAAYH,EAAM70E,MAAMg1E,WACxBc,kBAAmBjB,EAAM70E,MAAM81E,kBAC/BC,yBAA0BlB,EAAM70E,MAAM+1E,yBACtCC,6BAA8BnB,EAAMmB,6BACpCC,sBAAuBpB,EAAMoB,sBAC7BC,wBAAyBrB,EAAMsB,sBAC/BC,iBAAkBvB,EAAMwB,eACxBC,sBAAuBzB,EAAM0B,oBAC7BC,6BAA8B3B,EAAM4B,2BACpCC,mBAAoB7B,EAAM8B,iBAC1BzI,cACAlC,gBAlCyB,MACzB,IAAI5vE,EAASy1E,EAAiBK,gBAM9B,OALI2C,EAAM70E,MAAMwX,kBACVq9D,EAAM70E,MAAM+0E,gBACd34E,GAAU,IAGPA,CAAM,EA2BIw6E,GACjBjK,UAAWkI,EAAM70E,MAAMmX,uBAAyB,GAAK,GACrDo2D,UAAWsH,EAAM70E,MAAMutE,WAGnBsJ,EAA8C,CAClDrN,aAAc,EAA6BmE,SAC3CV,kBAAmBnD,EAA0BgN,KAC7C3/D,uBAAwB09D,EAAM70E,MAAMmX,uBACpCm2D,WAAY,CACVt9D,IAAK,EACLq9D,IAAK,GAEP5C,mBApKiC,CACjC1rD,EACAq2D,EACAC,EACAn4E,EACAC,KAEA,IAAIo2E,EAAoB,GAMxB,OAJIx0D,EAAO+pD,aACTyK,EAAoBp2E,EAAQo2E,mBAI5B,uBAAKl2E,UAAW,GAAGF,EAAQy1E,oBAAoB7zD,EAAO+pD,WAAa,WAAa,gBAC9E,wBAAMzrE,UAAWF,EAAQk2E,6BAA8BxjE,MAAOkP,EAAOtW,KAAI,UAAWsW,EAAOhe,IAC1Fge,EAAOtW,K,IACHsW,EAAO4pD,OAAS5pD,EAAO4pD,MAAMxjB,OAC9B,IAAIjoD,EAAKQ,UAAUyqE,EAAUppD,EAAO4pD,MAAMxjB,YAAc,IAG5D,wBACEjlD,QAAS,KACPk1E,EAAIzK,MAAM5rD,EAAO,EAEnB1hB,UAAW,GAAGF,EAAQw1E,qBAAqBY,uBAE3C,gBAACgB,EAAgB,CAACnzE,MAAM,cAAcszE,QAAM,EAACD,SAAUI,EAAM70E,MAAMmX,0BAGxE,EAuIDi2D,qBAzFmC,CACnCruD,EACAq2D,EACAC,EACAn4E,EACAC,KAEA,MAAM45E,EAAqClC,EAAM70E,MAAMgX,mBAAqB,EAAqBggE,UAAanC,EAAM70E,MAAM2W,UAC1H,OACE,2BACE,uBAAKzW,QAAS,IAAMk1E,EAAIzK,MAAM5rD,GAAS1hB,UAAWF,EAAQ01E,OAAQtxE,SAAU,GAC1E,wBAAMlE,UAAWF,EAAQ21E,WAAYr1E,KAAK,UAAUP,EAAKQ,UAAU,YAAmB,IACtF,gBAAC62E,EAAgB,CAACnzE,MAAM,cAAcszE,QAAM,EAACD,SAAUI,EAAM70E,MAAMmX,0BAErE,uBAAK9Z,UAAWF,EAAQ61E,kCAEnB+D,GACD,wBAAM72E,QAAS20E,EAAMoC,QAAS55E,UAAWF,EAAQg2E,uBAC/C,gBAACoB,EAAgB,CAACnzE,MAAM,aAAaszE,QAAQ,KAI/CqC,EACA75E,EAAKQ,UAAU,iCACf,GAAGR,EAAKQ,UAAU,oBAA0BqhB,EAAOtW,QAI1D,EA8DDusE,WAAYH,EAAM70E,MAAMg1E,WACxBc,kBAAmBjB,EAAM70E,MAAM81E,kBAC/BC,yBAA0BlB,EAAM70E,MAAM+1E,yBACtCO,sBAAuBzB,EAAM0B,oBAC7BC,6BAA8B3B,EAAM4B,2BACpCT,6BAA8BnB,EAAMmB,6BACpCC,sBAAuBpB,EAAMoB,sBAC7BC,wBAAyBrB,EAAMsB,sBAC/BC,iBAAkBvB,EAAMwB,eACxBK,mBAAoB,IAAM,KAC1BxI,cACAlC,gBAAiB6F,EAAiBK,gBAClCvF,UAAWkI,EAAM70E,MAAMmX,uBAAyB,GAAK,GACrDo2D,UAAWsH,EAAM70E,MAAMutE,WAGzB,MAAO,CACLG,gBAAiBwH,EACjBvH,SAAUkJ,EAEd,CAIWK,CAAsBrC,EAC/B,ECjRa,MAAMsC,UAAiC,EAAA9hE,UAEpD,MAAAyc,GACE,MAAM,KAAE50B,GAASsD,KAAKZ,MAChBzC,EAAUqD,KAAKZ,MAAM0B,WACrBpD,EAAYsC,KAAKZ,MAAMuX,uBAC7B,IAAI,SAAExN,GAAanJ,KAAKZ,MAMxB,OALwB,IAApB+J,EAAS3D,QAAgB2D,EAAS,aAAcigE,IAClDjgE,EAAWA,EAAS,GAAGpM,UAGzBoM,EAAW,IAAIA,GAEb,uBAAKtM,UAAW,GAAGF,EAAQs2E,+BACzB,uBAAKp2E,UAAWF,EAAQu2E,kBAAmBx2E,EAAKQ,UAAU,mBAE1D,uBAAKL,UAAWF,EAAQ4yE,UAAW7vE,QAASM,KAAKZ,MAAMmwE,WACrD,gBAACwE,EAAgB,CAACnzE,MAAM,aAAaszE,QAAM,EAACD,SAAUv2E,IAAc,IACpE,wBAAMb,UAAWF,EAAQi3E,cAAe7yE,SAAU,EAAG9D,KAAK,UAAUP,EAAKQ,UAAU,gBAErF,uBAAKL,UAAW,GAAGF,EAAQy2E,yBACxBjqE,EAASytE,UAAUnwE,KAAI8X,GAAUve,KAAK62E,iBAAiBt4D,EAAQ7hB,EAAMC,EAASe,MAIvF,CAEA,gBAAAm5E,CAAiBt4D,EAAwB7hB,EAAaC,EAAqBe,GACzE,OACE,uBAAKoC,IAAKye,EAAOze,IAAKjD,UAAWF,EAAQ02E,gBACvC,uBAAKx2E,UAAWF,EAAQ22E,uBAEtB,wBAAMz2E,UAAW,GAAGF,EAAQw2E,0CAA2CpyE,SAAU,EAAGrB,QAAS,IAAMM,KAAKZ,MAAMgrE,SAAS7rD,IACrH,gBAACw1D,EAAgB,CAACnzE,MAAM,aAAaszE,QAAM,EAACD,SAAUv2E,KAEvDsC,KAAK82E,kBAAkBv4D,EAAQ5hB,GAChC,uBAAKE,UAAWF,EAAQ82E,SAAUpkE,MAAOkP,EAAOtW,MAC7CsW,EAAOtW,K,IACPsW,EAAO4pD,OAAS5pD,EAAO0pD,aAAe,EAA0B/xD,QACjE,IAAIxZ,EAAKQ,UAAUyqE,EAAUppD,EAAO4pD,MAAMxjB,YAAc,KAMlE,CAEA,iBAAAmyB,CAAkBv4D,EAAwB5hB,GACxC,IAAIo6E,EAAgC,GAEhCC,EAAez4D,EAAOkqD,OACtBwO,EAAc14D,EAClB,KAAOy4D,KAAkBA,aAAwB5N,IAC/C2N,EAAY9qE,KAAK+qE,GACjBC,EAAcD,EACdA,EAAeC,EAAYxO,OAG7BsO,EAAcA,EAAYH,UAE1B,MAAMM,EAAiBH,EAAYI,QAAO,CAACC,EAAO74D,IAAW64D,EAAQ74D,EAAOtW,MAAQsW,EAAO0pD,aAAe,EAA0B/xD,QAAU,GAAK,QAAQ,IAC3J,OACE,uBACE7G,MAAO6nE,EACP77E,MAAO,CACLK,YAAa,OACba,MAAO,YAIRw6E,EAAYtwE,KAAK8X,GACZA,EAAO0pD,aAAe,EAA0B/xD,QAEhD,wBACEpW,IAAKye,EAAOze,IACZjD,UAAWF,EAAQ+2E,cACnBr4E,MAAO,CACLa,SAAa,IAAM66E,EAAYvxE,OAAS,EAA9B,MAGX+Y,EAAOtW,KACR,wBAAMpL,UAAWF,EAAQ62E,aAAW,QAKtC,wBAAM1zE,IAAKye,EAAOze,KAChB,wBACEjD,UAAWF,EAAQ42E,sBACnBl4E,MAAO,CACLa,SAAa,IAAM66E,EAAYvxE,OAAS,EAA9B,MAGX+Y,EAAOtW,KACR,wBAAMpL,UAAWF,EAAQ62E,aAAW,WAOpD,E,gBCvGa,MAAM6D,UAAmC,EAAAxiE,UAAxD,c,oBACE,KAAAyiE,SAAWC,MAAOC,IAChB,MAAMC,EAAaD,EAAS7wE,OACsB,aAA9C3G,KAAKZ,MAAM8wE,kBAAkBlH,aAC/BhpE,KAAKZ,MAAM8wE,kBAAkB0F,iBAAiB6B,GAE9Cz3E,KAAKZ,MAAM8wE,kBAAkBwF,wBAAwB+B,E,EAIzD,KAAA3lD,cAAiB0lD,IACmC,aAA9Cx3E,KAAKZ,MAAM8wE,kBAAkBlH,aAC7BhpE,KAAKZ,MAAM8wE,kBAAkBuF,sBAAsB+B,GAEnDx3E,KAAKZ,MAAM8wE,kBAAkBsF,6BAA6BgC,E,EAIhE,KAAAE,cAAgB,KACoC,aAA9C13E,KAAKZ,MAAM8wE,kBAAkBlH,aAC7BhpE,KAAKZ,MAAM8wE,kBAAkB4F,wBAE7B91E,KAAKZ,MAAM8wE,kBAAkB8F,8B,EAInC,KAAA2B,SAAY3wD,IACVhnB,KAAKZ,MAAM8wE,kBAAkBgG,mBAAmBlvD,EAAMpB,OAAO7lB,MAAM,EAGrE,KAAA63E,eAAiB,KACf,MAAM,KACJl7E,EACAwzE,mBAAmB,iBACjBl5D,EAAgB,iBAChBR,EAAgB,mBAChBm+D,EAAkB,aAClB3L,IAEAhpE,KAAKZ,MACT,IAAIy4E,EAAc,GAClB,MAAqB,aAAjB7O,GACF6O,EAAcn7E,EAAKQ,UAAU,mBACtB26E,GAGL7gE,GACF6gE,EAAclD,IAAuBrN,EAAuB+N,SAC1D34E,EAAKQ,UAAU,0BAAkC,GAAGR,EAAKQ,UAAU,sBAA4BR,EAAKQ,UAAU,2BACzG26E,IAGTA,EAAcrhE,IAAqB,EAAqB6+D,SACxD34E,EAAKQ,UAAU,0BAAkCR,EAAKQ,UAAU,mCACzD26E,EAAW,CA2DtB,CAzDE,MAAAvmD,GACE,MAAM,KACJ50B,EACAwzE,mBAAmB,iBACjBl5D,EAAgB,iBAChBR,EAAgB,mBAChBm+D,EAAkB,yBAClBY,EAAwB,kBACxBD,EAAiB,aACjBtM,GACD,qBACD8O,EAAoB,WACpBh3E,EAAU,WACVqqE,GACEnrE,KAAKZ,MAEHW,EAAyB,aAAjBipE,EACRsM,EAAoBC,EAEpBwC,IAAkBD,GAAoD,oBAA5B3M,EAAWnC,cAC3D,OACE,uBAAKnsE,UAAWiE,EAAWgvE,aACzB,uBAAKjzE,UAAWiE,EAAW2xE,mBAAoB/1E,EAAKQ,UAAU,oBAC9D,uBACE7B,MAAO,CACLU,QAAS,KAGTg8E,GAAiB,gBAAC,EAAAC,UAAS,CAC3BV,SAAUt3E,KAAKs3E,SACfxlD,cAAe9xB,KAAK8xB,cACpB/xB,MAAOA,EACP83E,YAAa73E,KAAK43E,iBAClB5iE,UAAW,MAGZ+iE,GAAiB,wBAAMl7E,UAAW,GAAGiE,EAAW8xE,wBAAyBlzE,QAASM,KAAK03E,gBAGtF1gE,GAAoBR,IAAqB,EAAqB6+D,SAC9D,uBAAKx4E,UAAWiE,EAAWgzE,eACzB,gBAAC,EAAAngE,OAAM,CAACpT,GAAG,gBAAgBR,MAAO40E,EAAoBphE,SAAUvT,KAAK23E,SAAQ,aAAcj7E,EAAKQ,UAAU,mBACxG,0BAAQ4C,IAAI,WAAWS,GAAG,uBAAuBR,MAAOunE,EAAuB+N,UAC5E34E,EAAKQ,UAAU,qBAElB,0BAAQ4C,IAAI,UAAUS,GAAG,sBAAsBR,MAAOunE,EAAuB2Q,SAC1Ev7E,EAAKQ,UAAU,eAItB,KAEF,2BAAM8C,KAAKZ,MAAMrC,WAIzB,E,wCC5FF,IAAIm7E,EAsDGX,eAAeY,EAA4B9D,GAChD,MAAM3uE,EATR,WACE,MAAM0yE,EAAUnwB,OAChB,OAAImwB,EAAOC,WAAaD,EAAOC,UAAUC,aAAeF,EAAOC,UAAUC,YAAYC,qBAC5EH,EAAOC,UAAUC,YAAYC,qBAE/B,EACT,CAGkBC,GAEhB,aAAaC,EAA4B/yE,EAAS2uE,EACpD,CAEOkD,eAAekB,EAA4B/yE,EAAoB2uE,GACpE,MAAMqE,EAAoC,IACpC,WAAEvN,GAAekJ,EAAM70E,MAE7B,SAASm5E,EAAuCrvE,EAA2BsY,GACzE,IAAK,IAAIvF,EAAQ,EAAGA,EAAQ/S,EAAQ9D,OAAQ6W,IAAS,CACnD,MACM4nC,EAAM20B,EADGtvE,EAAQ+S,GACoBuF,GAC3C,GAAIqiC,EAAO,OAAOA,C,CAEpB,OAAO,IACT,CAEA,SAAS20B,EAAuBr6D,EAAwBqD,GACtD,IAAIi3D,EAAqC,KACzC,GAAIt6D,EAAO0pD,aAAermD,EAAOqmD,YAAc1pD,EAAOhe,KAAOqhB,EAAOrhB,GAClEs4E,EAAct6D,OACT,GAAIA,EAAOypD,aAAc,CAC9BzpD,EAAOxhB,SAAS2iB,SAASolD,IACvB8T,EAAuB9T,EAAOljD,EAAO,IAEvC,IAAK,IAAImnD,EAAI,EAAGA,EAAIxqD,EAAOxhB,SAASyI,OAAQujE,IAAK,CAC/C,MAAM+P,EAAQF,EAAuBr6D,EAAOxhB,SAASgsE,GAAInnD,GACzD,GAAa,MAATk3D,EAAe,CACjBD,EAAcC,EACd,K,GAKN,OAAOD,CACT,CAEA,MAAME,EAAiB,SAAOrzE,GAASkc,GAAUA,EAAOo3D,YAAczR,EAAc4F,iBAE9Ez9C,QAAQupD,IAAIvzE,EAAQe,KAAI8wE,MAAO31D,IACnC,GAAIA,EAAOo3D,YAAczR,EAAc38D,UAAYgX,EAAOo3D,YAAczR,EAAcrxD,QAAS,CAC7F,MAAM+xD,EACFrmD,EAAOo3D,YAAczR,EAAc38D,SAC/B,EAA0BA,SAC1B,EAA0BsL,QAClC0L,EAAO3a,OAAOyY,SAAShW,I,MACrB,MAAMovE,EAAQH,EACZ,CAACxN,KAAwD,QAAxC,EAAAkJ,EAAM70E,MAAM05E,oCAA4B,QAAI,IAC7D,IAAI,EAAexvE,EAAG,iBAAkB,CAAEu+D,gBAExC6Q,GACFJ,EAAgBzsE,KAAK6sE,E,IAKvBl3D,EAAOo3D,YAAczR,EAAc4R,sBAAwBJ,SACvDrpD,QAAQupD,IAAIr3D,EAAO3a,OAAOR,KAAI8wE,MAAO7tE,I,MACzC,MAAM0vE,EAAeT,EACnB,CAACxN,KAAwD,QAAxC,EAAAkJ,EAAM70E,MAAM05E,oCAA4B,QAAI,IAC7D,IAAI,EAAexvE,EAAG,iBAAkB,CAAEu+D,WAAY,EAA0B/xD,WAE7D,OAAjBkjE,SACI/E,EAAMgF,cAAcD,GAA0C,SACpEL,EAAe9xE,OAAOyY,SAAShW,IAC7B,MAAM4vE,EAAiB,SAAOF,EAAar8E,UAAU+nE,GAASA,EAAMvkE,KAAOmJ,SACpD3H,IAAnBu3E,GACFZ,EAAgBzsE,KAAKqtE,E,KAGhBjF,EAAM70E,MAAM2W,WACrB4iE,EAAe9xE,OAAOyY,SAAShW,IAC7B,MAAM4vE,EAAiB,SAAOjF,EAAM70E,MAAM2rE,WAAWpuE,UAAU+nE,GAASA,EAAMvkE,KAAOmJ,SAC9D3H,IAAnBu3E,GACFZ,EAAgBzsE,KAAKqtE,E,YAQjC,MAAMC,EAAgBpO,EAAWvC,kBAAkBhnD,QAAOknD,GAAKA,EAAEb,aAAe,EAA0B/xD,UAASzP,KAAIqiE,GAAKA,EAAEvoE,KACxHi5E,EAAqBd,EAAgBjyE,KAAIqiE,GAAKA,EAAEvoE,KAGtD,OAAI,YAAUg5E,EAAcx4D,OAAQy4D,EAAmBz4D,QAC9C,GAGF23D,CACT,CAEA,SAASe,EACPpF,EACAqF,EACA1C,GAEA,GAAI0C,GAAgC,IAApBA,EAASl0E,OAAc,CACrC,GAAI6uE,EAAM70E,MAAMgX,mBAAqB,EAAqB6+D,SAaxD,YAZAqE,EAASh6D,SAAS2mC,IAChB,GAAIA,EAAOszB,WAAY,CACrB,MAAM/uE,EAAWy7C,EACXuzB,EAAiB,IAAI,EAAehvE,EAASrK,GAAG+Y,WAAY1O,EAAS3C,KAAM,CAC/EggE,WAAY,EAA0Br9D,SACtCs9D,OAAQt9D,EAASs9D,OACjBE,aAAcx9D,EAASw9D,eAEzB4O,EAAaxO,SAASoR,GACtBH,EAA+BpF,EAAOzpE,EAAS7N,SAAUi6E,E,KAM/D0C,EAASh6D,SAAS2mC,IAChB,GAAIA,EAAOszB,WAAY,CACrB,MAAM/uE,EAAWy7C,EACXuzB,EAAiB,IAAI,EAAehvE,EAASrK,GAAG+Y,WAAY1O,EAAS3C,KAAM,CAC/EggE,WAAY,EAA0Br9D,SACtCs9D,OAAQt9D,EAASs9D,OACjBE,aAAcx9D,EAASw9D,eAEzB4O,EAAaxO,SAASoR,GACtBH,EAA+BpF,EAAOzpE,EAAS7N,SAAU68E,E,KACpD,CACL,MAAM1jE,EAAUmwC,EACVwzB,EAAgB,IAAI,EACxB3jE,EAAQ3V,GAAG+Y,WACXpD,EAAQjO,KACR,EAA6BklE,SAC7B,CACElF,WAAY,EAA0B/xD,QACtCgyD,OAAQhyD,EAAQgyD,SAGpB8O,EAAaxO,SAASqR,E,KAI9B,CAYOtC,eAAeuC,GAAuCzF,EAAiCG,GAC5F,MACEuF,eAAgBhkE,EAAU,UAC1BI,EAAS,yBACT6jE,EAAwB,iBACxBxjE,EAAgB,qCAChByjE,GACE5F,EAAM70E,MAEV,IAAI2rE,EAEJ,GAAK30D,IAAqB,EAAqBggE,UAAargE,EAE1Dg1D,EAAa,IAAI/B,EAAmB,EAA6B+D,SAAUh3D,EAAW,OAAQ,CAAE8xD,WAAY,EAA0B/xD,UACtIi1D,EAAW1C,OAAS,IAAI,EAAe1yD,EAAY,wBAE7CmkE,GAAgC/O,EAAYkJ,QAIlD,GAFAlJ,EAAa,IAAI/B,EAAmB,EAA6B8D,gBAAiBn3D,EAAY,QAE1FkkE,QACIA,EAAqC9O,OACtC,CACL,MAAMgP,OApOmB5C,OAAO/C,EAAoB4F,UAAyBlC,EAAcmC,kBAAkBrzB,QAAQ,CACzHn4B,MAAO,CACLurD,QAAO3xE,MAAO,EAAG6xE,kCAAkC,EAAO9F,eAE3D,CACD+F,YAAa,mBACbC,SAAU,OACVx2B,eAAe,EACfy2B,WAAax2B,GAAa,WAASA,EAAK,4BAA6BA,GACrEy2B,UAAW,CACTC,iBAAiB,KA0NSC,CAAuBpG,EAAYwF,GAC3DP,EAA+BpF,EAAO8F,EAAWhP,E,CAIrD,OAAOA,CACT,CAEOoM,eAAe2C,GACpBL,EACAxF,GAEA,MAAM,sCAAEwG,GAA0CxG,EAAM70E,MACxD,GAAIq7E,EAEF,aADMA,EAAsChB,GACrCA,EAET,MAAMiB,QAnORvD,eAA8BsC,EAA+BxF,GAC3D,MAAMl+D,EAAY0jE,EAAct5E,GAC1BwV,EAAc8jE,EAAcpR,OAA0BloE,IACtD,MAAEw6E,GAAU1G,EAAM70E,OAClB,SAAEgW,GAAa6+D,EAAM70E,MAE3B,aAAc,EAAAqiD,MAAMlzB,IAClB,cAAc5Y,eAAwBI,eACtC,CACEmsC,QAAS,CACP,qBAAsB,OAExBv4C,KAAM,CACJixE,KAAM,IACNC,QAAQ,EACRC,QAAS,iBACTC,SAAU,QAEZ34B,WAAYu4B,EACZ14B,KAAM7sC,EACNusC,KAAM,oBAEPhiD,KACL,CA4M0Bq7E,CAAevB,EAAexF,GAEtD,OApDFkD,eAAuCuD,EAAwB9D,GAC7DA,EAAarO,gBACNmS,EAAUp7D,SAASytD,IACxB,MAAMkO,EAAiC,IAAI,EAAelO,EAASliE,GAAGqO,WAAY6zD,EAASl+C,KAAM,CAC/Fg5C,WAAY,EAA0BkF,WAExC6J,EAAaxO,SAAS6S,EAAe,GAEzC,CA2CEC,CAAwBR,EAAWjB,GAC5BA,CACT,CAqGOtC,eAAegE,GAAgClH,EAAiCmH,GACrF,MAAMzlE,EAAas+D,EAAM70E,MAAMu6E,gBACzB,OAAE/jE,GAAWq+D,EAAM70E,MAEnB2rE,EAAa,IAAI/B,EAAmB,EAA6B8D,gBAAiBn3D,EAAY,QAC9F0lE,QA4BRlE,eAAuClD,EAAiCt+D,EAAoBC,EAAgBwlE,GAI1G,OAHAnH,EAAMp0E,SAAS,CACb8sE,WAAW,UAEA,EAAA2O,KAAK/sD,IAAI,4CAA6C,CACjE5kB,KAAM,CACJk9C,IAAKlxC,EACLgrD,IAAK/qD,EACLwlE,aACAG,OAAO,IAAAC,iBAETlB,UAAW,CACTC,iBAAiB,KAElBrsE,SAAQ,KACT+lE,EAAMp0E,SAAS,CACb8sE,WAAW,GACX,GAEN,CA/CgC8O,CAAwBxH,EAAOt+D,EAAYC,EAAQwlE,GAMnF,IACErB,EACAnD,EALA,OAKAA,EAPyC7L,GAMzCgP,EANwBsB,IASc,IAArBtB,EAAU30E,QACzB,YAAU20E,GAAYvvE,IACpB,MAAMgvE,EAAiB,IAAI,EACzBhvE,EAASkxE,qBAAqBxiE,WAC9B1O,EAASqqE,uBACT,CACEhN,WAAY,EAA0Br9D,SACtCs9D,OAAQ,GACRC,MAAO,CACL6M,aAAcpqE,EAASoqE,gBAI7BgC,EAAaxO,SAASoR,EAAe,IApBlCzO,CACT,CA6COoM,eAAewE,GAA+B1H,EAAiCmH,GACpF,MAAMzlE,EAAas+D,EAAM70E,MAAMu6E,gBACzB,OAAE/jE,GAAWq+D,EAAM70E,MAEnB2rE,EAAa,IAAI/B,EAAmB,EAA6B8D,gBAAiBn3D,EAAY,QAC9FimE,QA8BRzE,eAAsClD,EAAiCt+D,EAAoBC,EAAgBwlE,GAIzG,OAHAnH,EAAMp0E,SAAS,CACb8sE,WAAW,UAEA,EAAA2O,KAAK/sD,IAAI,2CAA4C,CAChE5kB,KAAM,CACJk9C,IAAKlxC,EACLgrD,IAAK/qD,EACLwlE,aACAG,OAAO,IAAAC,iBAETlB,UAAW,CACTC,iBAAiB,KAElBrsE,SAAQ,KACT+lE,EAAMp0E,SAAS,CACb8sE,WAAW,GACX,GAEN,CAjD+BkP,CAAuB5H,EAAOt+D,EAAYC,EAAQwlE,GAMjF,IACEU,EACAlF,EALA,OAKAA,EAPuC7L,GAMvC+Q,EANuBF,IASa,IAApBE,EAAS12E,QACvB,WAAS02E,GAAUhmE,GAAWA,EAAQyuC,SACnCjlC,SAASxJ,IACR,MAAM2jE,EAAgB,IAAI,EACxB3jE,EAAQC,UAAUmD,WAClBpD,EAAQsf,YACR,EAA6B23C,SAC7B,CACElF,WAAY,EAA0B/xD,QACtCiyD,MAAO,CACLxjB,OAAQzuC,EAAQyuC,OAChBswB,uBAAwB/+D,EAAQ++D,0BAItC+B,EAAaxO,SAASqR,EAAc,IAtBnC1O,CACT,CCpXO,MAAMgR,WAAiC,EAAAC,WAC5C,WAAAtU,GAsCEmB,MArCqB,CAEnBkC,WAAY,IAAI/B,EAAmB,EAA6B8D,iBAChEmP,iBAAkB,IAAIjT,EAAmB,EAA6B8D,iBACtEoP,eAAgB,IAAIlT,EAAmB,EAA6B8D,iBACpEqP,SAAS,EACTC,4BAA6B,KAC7BhI,WAAY,GACZc,kBAAmB,GACnBC,yBAA0B,GAC1BhB,eAAe,EACfj+D,iBAAiB,EAEjBmmE,sBAAuB,IAAI9vE,MAC3BotE,eAAgB,GAChB/jE,OAAQ,GACRG,UAAW,GACX42D,WAAW,EAGXr3D,UAAW,GACXqlE,MAAO,GACPvlE,SAAU,GACVoB,cAAe,CACbxB,+BAA+B,GAEjC2B,mBAAmB,EACnBP,iBAAkB,GAClBQ,kBAAkB,EAClBL,wBAAwB,EACxBg+D,mBAAoBrN,EAAuB+N,SAC3CqH,gBAAiB,IACjB1C,yBAA0B,IAC1B2C,sBAAsB,EAEtB7S,QAAS,IAKb,KAAA8S,aAAerF,MACb/hE,EACAulE,EACArlE,EACAK,EACAC,EACAG,EACAS,EACAN,EACAC,EACAM,EACAC,EACAC,EACAP,EACAQ,EACAL,EACAuiE,EACA2B,EACAZ,KAEAj6E,KAAKC,SAAS,CACZuV,WACAulE,QACArlE,YACAkB,gBACAN,kBACAyjE,eAAgBhkE,EAChBC,SACAG,YACAY,oBACAP,mBACAQ,mBACAL,yBACAuiE,+BACA2B,wCACAZ,yCAGF,MAAM9O,QDkIHoM,eAA6ClD,GAElD,aADyByF,GAAuCzF,EAAO,GAEzE,CCrI6BwI,CAA8B78E,MACvDA,KAAKC,SAAS,CACZkrE,aACAmR,eAAgBnR,IAGdnrE,KAAK88E,aAAa3R,EAAWpuE,WAAaiD,KAAKR,MAAMw6E,0BACvDh6E,KAAKC,SAAS,CACZ08E,sBAAsB,IAK1B7lE,EAAiB9W,KAAK+8E,cAAclmE,EAAa,KAEjD,IAAI4lE,EAA0C,GAC9C,GAAInmE,EACF,GAAIC,EAAiB,CACnB,MAAM7Q,EAAU1F,KAAKg9E,gBAAgBzmE,GACrCkmE,QAA8BhE,EAA4B/yE,EAAS1F,K,MAEnEy8E,QAA8BtE,EAA4Bn4E,MAI9DA,KAAKC,SAAS,CAAEw8E,wBAAuBF,SAAS,GAAQ,EAG1D,KAAAO,aAAgB9L,IACd,IAAIiM,EAAgB,EAQpB,OAPA,QAAMjM,GAAazyD,IACS,YAAtBA,EAAO0pD,WACTgV,GAAiB,EACR,YAAU1+D,EAAOxhB,WAAawhB,EAAOxhB,SAASyI,OAAS,IAChEy3E,GAAiBj9E,KAAK88E,aAAav+D,EAAOxhB,U,IAGvCkgF,CAAa,EAGtB,KAAAzH,6BAAgCgG,IAC9Bx7E,KAAKC,SAAS,CACZs1E,yBAA0BiG,GAC1B,EAGJ,KAAA/F,sBAAyB+F,IACvBx7E,KAAKC,SAAS,CACZq1E,kBAAmBkG,GACnB,EAGJ,KAAA7F,sBAAwB4B,MAAOiE,IACzBx7E,KAAKR,MAAMgX,mBAAqB,EAAqB6+D,UACtDr1E,KAAKR,MAAMwX,kBAAoBhX,KAAKR,MAAMm1E,qBAAuBrN,EAAuB+N,eAEnFr1E,KAAKk9E,eAAe1B,SAEpBx7E,KAAKm9E,cAAc3B,E,EAI7B,KAAA0B,eAAiB3F,MAAOiE,I,MACtB,GAAmB,KAAfA,GAAqBx7E,KAAKR,MAAMutE,UAClC,OAEF,MAAMqQ,QAAqB7B,GAAgCv7E,KAAMw7E,GAE3D6B,EAAgE,IADU,QAAvC,EAAAr9E,KAAKR,MAAM05E,oCAA4B,QAAI,GACwBkE,GAC5Gp9E,KAAKC,SAAS,CACZo8E,iBAAkBe,EAClBjS,WAAYiS,EACZ7I,eAAe,EACfC,WAAYgH,EACZtC,6BAA8BmE,GAC9B,EAGJ,KAAAF,cAAgB5F,MAAOiE,IACrB,GAAmB,KAAfA,IAAqBx7E,KAAKR,MAAMutE,UAKpC,GAAI/sE,KAAKR,MAAMwX,iBAAf,CACE,GAAIwkE,EAAWh2E,QAAU,EAAG,OAC5B,MAAM43E,QAAqBrB,GAA+B/7E,KAAMw7E,GAChEx7E,KAAKC,SAAS,CACZo8E,iBAAkBe,EAClBjS,WAAYiS,EACZ7I,eAAe,EACfC,WAAYgH,G,MAMhB,GAAIx7E,KAAKR,MAAMm9E,qBAAsB,CACnC,IAAIS,EAAe,IAAIhU,EAAmB,EAA6B8D,iBACvEkQ,QAAqBtD,GAAuC95E,KAAMw7E,GAClEx7E,KAAKC,SAAS,CACZo8E,iBAAkBe,EAClBjS,WAAYiS,EACZ7I,eAAe,EACfC,WAAYgH,G,MAGdx7E,KAAKC,SAAS,CACZu0E,WAAYgH,EACZjH,eAAe,G,EAMrB,KAAA0B,2BAA6B,KAC3Bj2E,KAAKC,SAAS,CACZkrE,WAAYnrE,KAAKR,MAAM88E,eACvB/G,yBAA0B,GAC1Bf,WAAY,GACZD,eAAe,GACf,EAGJ,KAAAsB,eAAkB2F,IAChBx7E,KAAKC,SAAS,CACZu0E,WAAYgH,GACZ,EAGJ,KAAAzF,oBAAsB,KACpB/1E,KAAKC,SAAS,CACZu0E,WAAY,GACZc,kBAAmB,IACnB,EAGJ,KAAAa,iBAAoBmH,IAClBt9E,KAAKC,SAAS,CACZ00E,mBAAoB2I,GACpB,EAGJ,KAAAjE,cAAgB9B,MAAOsC,EAAyC1L,WACxD+L,GAAgCL,EAAe75E,MACrDmuE,GAAU,EAGZ,KAAAgH,UAAYoC,MAAOsC,IACZA,EAAc7R,oBACXkS,GAAgCL,EAAe75E,MAEvDA,KAAKC,SAAS,CACZkrE,WAAY0O,EACZrF,WAAY,GACZc,kBAAmB,IACnB,EAGJ,KAAAmB,QAAU,KACJz2E,KAAKR,MAAM+0E,cACbv0E,KAAKC,SAAS,CACZkrE,WAAYnrE,KAAKR,MAAM68E,iBACvB7H,WAAYx0E,KAAKR,MAAM+1E,2BAGzBv1E,KAAKC,SAAS,CACZkrE,WAAYnrE,KAAKR,MAAM88E,eACvB9H,WAAYx0E,KAAKR,MAAM+1E,0B,CAhN7B,CAqNA,eAAAyH,CAAgBO,GAoBd,MAnBgB,CACd,CACEvE,UAAWzR,EAAc38D,SACzB3D,OAAQ,QAAMs2E,EAAY/xE,gBAAgB9B,GAAKxC,OAAOwC,MAExD,CACEsvE,UAAWzR,EAAcrxD,QACzBjP,OAAQ,QAAMs2E,EAAYjyE,YAAY5B,GAAKxC,OAAOwC,MAEpD,CACEsvE,UAAWzR,EAAc4F,SACzBlmE,OAAQ,QAAMs2E,EAAY9xE,sBAAsBu6D,GAAS9+D,OAAO8+D,EAAMthC,eAExE,CACEs0C,UAAWzR,EAAc4R,qBACzBlyE,OAAQ,QAAMs2E,EAAY9xE,sBAAsBu6D,GAAS9+D,OAAO8+D,EAAM1lC,cAK5E,CAEA,aAAAy8C,CAAcS,EAA0BC,GACtC,IAAIt0E,EAAW,GACX0N,GAAc,EACd2mE,GAA4C,IAAxBC,EAAaj4E,QAAgBi4E,EAAa,aAAcrU,GAG5EjgE,EADEnJ,KAAKR,MAAM2rE,WAAWlD,aAAe,EAA0B/xD,QACtD,CAAClW,KAAKR,MAAM2rE,YAEZ,IAAInrE,KAAKR,MAAM2rE,WAAWpuE,UAEvC8Z,GAAc,IAEd1N,EAAW,IAAIs0E,GACf5mE,GAAc,GAGhB,MAAM6mE,EAAuB,GACvBC,EAAkD,GAClDC,EAA2B,GAEjC,KAAOz0E,EAAS3D,OAAS,GAAG,CAC1B,MAAM+Y,EAAyBpV,EAAS00E,QACpCt/D,EAAO0pD,aAAe,EAA0Br9D,SAClDgzE,EAAe3xE,KAAKzE,OAAO+W,EAAOhe,KACzBge,EAAO0pD,aAAe,EAA0B/xD,QACzDwnE,EAAWzxE,KAAKzE,OAAO+W,EAAOhe,KAE9Bo9E,EAAqB1xE,KAAK,CACxBq0B,UAAW94B,OAAQ+W,EAAOkqD,OAA0BloE,IACpDmkC,WAAYl9B,OAAO+W,EAAOhe,K,CAKhC,MAAO,CACLsW,cACAvL,WAAYoyE,EACZlyE,eAAgBoyE,EAChBnyE,qBAAsBkyE,EAE1B,CAEA,WAAAG,CAAYN,EAA0BC,GACpC,MAAMM,EAA0B,CAAE/E,UAAWzR,EAAc38D,SAAU3D,OAAQ,IACvE+2E,EAAyB,CAAEhF,UAAWzR,EAAcrxD,QAASjP,OAAQ,IACrE8xE,EAA0B,CAAEC,UAAWzR,EAAc4F,SAAUlmE,OAAQ,IACvEg3E,EAAmC,CAAEjF,UAAWzR,EAAc4R,qBAAsBlyE,OAAQ,IAElG,IAAIkC,EAAW,GACX0N,GAAc,EA2BlB,OA1BI2mE,GAA4C,IAAxBC,EAAaj4E,QAAgBi4E,EAAa,aAAcrU,GAC9EjgE,EAAW,IAAInJ,KAAKR,MAAM2rE,WAAWpuE,UACrC8Z,GAAc,IAEd1N,EAAW,IAAIs0E,GACf5mE,GAAc,GAIhB1N,EAASuW,SAASnB,IAChB,GAAIA,EAAO0pD,aAAe,EAA0Br9D,SAAU,CAC5DmzE,EAAe92E,OAAOgF,KAAK,GAAGsS,EAAOhe,MAEfge,EAAOqqD,kBAAkBhnD,QAAOknD,GAAKA,EAAEb,aAAe,EAA0B/xD,UACxFwJ,SAASopD,IACrBkV,EAAc/2E,OAAOgF,KAAK,GAAG68D,EAAEvoE,KAAK,G,MAE7Bge,EAAO0pD,aAAe,EAA0B/xD,QACzD8nE,EAAc/2E,OAAOgF,KAAK,GAAGsS,EAAOhe,OAEpCw4E,EAAe9xE,OAAOgF,KAAK,GAAGsS,EAAOhe,MAErC09E,EAAwBh3E,OAAOgF,KAAK,GAAIsS,EAAOkqD,OAA0BloE,M,IAItE,CACL6G,QAAS,CAAC22E,EAAgBC,EAAejF,EAAgBkF,GACzDpnE,cAEJ,EC/YK,MAAMqnE,WAAwC,EAAArpE,UAiBnD,WAAAizD,CAAY1oE,GFhBkB,IAAC++E,EEiB7BlV,MAAM7pE,GAbR,KAAAg/E,sBAAgC,EAGhC,KAAAC,QAAkB,EAoBlB,KAAAC,eAAkBznE,IAChB7W,KAAKC,SAAS,CAAE4W,gBAChB7W,KAAKZ,MAAM0X,iBACT9W,KAAKZ,MAAMi1E,MAAM0I,cAAclmE,EAAa7W,KAAKmJ,UACjD,CAAE+vE,6BAA8Bl5E,KAAKZ,MAAMi1E,MAAM70E,MAAM05E,8BACxD,EAGH,KAAAqF,YAAep1E,IACbnJ,KAAKmJ,SAAWA,EAChBnJ,KAAKZ,MAAM0X,iBACT9W,KAAKZ,MAAMi1E,MAAM0I,cAAc/8E,KAAKR,MAAMqX,YAAa1N,GACvD,CAAE+vE,6BAA8Bl5E,KAAKZ,MAAMi1E,MAAM70E,MAAM05E,8BACxD,EAGH,KAAAsF,+BAAkChoE,GAC5BA,IAAqB,EAAqByhE,SAAWj4E,KAAKZ,MAAMi1E,MAAM70E,MAAMuX,kBACvE/W,KAAKZ,MAAM1C,KAAKQ,UAAU,iGAQ1B8C,KAAKZ,MAAM1C,KAAKQ,UAAU,2HAnC/BkC,EAAMq/E,WFlBmBN,EEmBV/+E,EAAMq/E,SFnB6B,aAAWN,KAAOjG,EAAgBiG,IEqBxFn+E,KAAKmJ,SAAW,GAChBnJ,KAAKR,MAAQ,CACXqX,YAAa7W,KAAKZ,MAAMyX,YAE5B,CA+BA,MAAAya,GAEE,MAAM,QAAE30B,GAAYqD,KAAKZ,MACnB6tE,EAAemH,EAAuBt8C,OAAO93B,KAAKZ,MAAMi1E,OACxDnE,EAC+C,oBAAnDlwE,KAAKZ,MAAMi1E,MAAM70E,MAAM2rE,WAAWnC,aAC9BiE,EAAaC,gBACbD,EAAaE,UAEb,iBAAE32D,GAAqBxW,KAAKZ,MAAMi1E,MAAM70E,MAC9C,IAAIk/E,EACRC,EAEI,GAAI3+E,KAAKZ,MAAMi1E,MAAM70E,MAAMuX,kBACzB2nE,EAAS1+E,KAAKZ,MAAM1C,KAAKQ,UAAU,gBACnCyhF,EAAc3+E,KAAKZ,MAAM1C,KAAKQ,UAAU,0BAExC,OAAQsZ,GACN,KAAK,EAAqByhE,QACxByG,EAAS1+E,KAAKZ,MAAM1C,KAAKQ,UAAU,gBACnCyhF,EAAc3+E,KAAKZ,MAAM1C,KAAKQ,UAAU,qBACxC,MACF,KAAK,EAAqBm4E,SACxBqJ,EAAS1+E,KAAKZ,MAAM1C,KAAKQ,UAAU,2BACnCyhF,EAAc3+E,KAAKZ,MAAM1C,KAAKQ,UAAU,6BACxC,MACF,QACM8C,KAAKZ,MAAMi1E,MAAM70E,MAAM2W,WACzBuoE,EAAS1+E,KAAKZ,MAAM1C,KAAKQ,UAAU,wCACnCyhF,EAAc3+E,KAAKZ,MAAM1C,KAAKQ,UAAU,+CAExCwhF,EAAS1+E,KAAKZ,MAAM1C,KAAKQ,UAAU,8BACnCyhF,EAAc3+E,KAAKZ,MAAM1C,KAAKQ,UAAU,oCAYhD,OAPK8C,KAAKZ,MAAMi1E,MAAM70E,MAAM+8E,SACtBv8E,KAAKq+E,SACNr+E,KAAKZ,MAAMiX,kBACdrW,KAAKq+E,QAAS,EACdr+E,KAAKZ,MAAMiX,mBAGLrW,KAAKZ,MAAMi1E,MAAM70E,MAAM+8E,QAsC7B,4BArCA,uBAAK1/E,UAAWF,EAAQiiF,YACpB5+E,KAAKZ,MAAMy/E,kBAAoB,gBAAC,EAAAxR,IAAG,KACnC,gBAAC,EAAAC,IAAG,CAACwR,GAAI,GACP,gBAAC,EAAAC,MAAK,CAACh/E,MAAM,cAAc0lB,QAASzlB,KAAKR,MAAMqX,YAAatD,SAAU,IAAMvT,KAAKs+E,gBAAe,IAC7FI,GAEH,gBAAC,EAAAK,MAAK,CAACh/E,MAAM,eAAe0lB,SAAUzlB,KAAKR,MAAMqX,YAAatD,SAAU,IAAMvT,KAAKs+E,gBAAe,IAC/FK,KAIP,uBACE9hF,UAAWmD,KAAKR,MAAMqX,cAAgB7W,KAAKZ,MAAMy/E,iBAAmBliF,EAAQk3E,OAAS,IAGnF7zE,KAAKZ,MAAMi1E,MAAM70E,MAAMm9E,qBACrB,uBAAK9/E,UAAWF,EAAQk1E,kBAAmBtxE,GAAI,qBAC5CP,KAAKw+E,+BAA+BhoE,IAC9B,GAEb,gBAACu4D,EAAU,CACTe,YAAauH,EACbrH,UAAW2G,EACXpjE,SAAUvT,KAAKu+E,YACfS,mCAAoC,CAACh/E,KAAKZ,MAAMi1E,MAAM70E,MAAM2rE,YAC5DuE,uBAAwB1vE,KAAKZ,MAAMi1E,MAAM70E,MAAMi9E,sBAC/CtR,WAAYnrE,KAAKZ,MAAMi1E,MAAM70E,MAAM2rE,WACnC+E,kBAAmBA,EACnBjD,aAAcA,EACdnsE,WAAYnE,EACZD,KAAMsD,KAAKZ,MAAM1C,KACjBo7E,qBAAsB93E,KAAKZ,MAAM04E,qBACjCzN,qBAAsBrqE,KAAKZ,MAAMirE,wBAO3C,CAEA,iBAAA4U,GACEj/E,KAAKZ,MAAMi1E,MAAMuI,aACf58E,KAAKZ,MAAMoW,SACXxV,KAAKZ,MAAMwW,QACX5V,KAAKZ,MAAMsW,UACX1V,KAAKZ,MAAM2W,WACX/V,KAAKZ,MAAM4W,OACXhW,KAAKZ,MAAM+W,UACXnW,KAAKZ,MAAMwX,cACX5W,KAAKZ,MAAMkX,gBACXtW,KAAKZ,MAAMmX,gBACXvW,KAAKZ,MAAMyX,YACX7W,KAAKZ,MAAM0X,iBACX9W,KAAKZ,MAAM2X,kBACX/W,KAAKZ,MAAMoX,iBACXxW,KAAKZ,MAAM4X,iBACXhX,KAAKZ,MAAMuX,uBACX3W,KAAKZ,MAAM85E,6BACXl5E,KAAKZ,MAAMy7E,sCACX76E,KAAKZ,MAAM66E,qCAEf,CAEA,kBAAAiF,GACEl/E,KAAKm/E,2BACP,CAEA,yBAAAA,GACiCn/E,KAAKZ,MAAMi1E,MAAM70E,MAAMi9E,sBAC3Bj3E,OAAS,IAAMxF,KAAKo+E,uBAC7Cp+E,KAAKo+E,sBAAuB,EAC5BgB,YAAW,KACTp/E,KAAKs+E,gBAAe,EAAM,IAGhC,CAKA,WAAAR,GACE,OAAO99E,KAAKZ,MAAMi1E,MAAMyJ,YAAY99E,KAAKR,MAAMqX,YAAa7W,KAAKmJ,SACnE,EA/KO,GAAA/L,aAAe,CACpBkZ,iBAAiB,EACjBO,aAAa,EACbC,iBAAkB,SAClBna,QAAO,GA+KJ,MAAMuY,IAA+B,IAAAmqE,eAAa,IAAA/hF,oBAAkB,IAAA0mB,iBAEzE,IAAAs7D,gBAAepB,IAAiC,IAAO,IAAI/B,KAC3D,CAAEl0E,KAAM,yCPGc,SAAUzK,EAAiBC,GACjD,OAAKA,EAAKC,UAGH,OAAP,wBACK,GAAM,CACTuyE,WAAY,WAAS,EAAOA,WAAY,CACtCr0E,OAAQ,UAEVk0E,YAAa,WAAS,EAAOA,YAAa,CACxCl0E,OAAQ,QACR,sBAAuB,CACrB,UAAW,CACTkG,QAAS,QAEX8N,WAAY,oBACZmU,SAAU,WACV/lB,IAAK,MACLyd,MAAO,OACP,WAAY,CACV5Z,QAAS,aAGb,uBAAwB,CACtB3D,aAAc,QACdc,SAAU,UAGdyzE,kBAAmB,WAAS,EAAOA,kBAAmB,CACpD72E,OAAQ,SAEV42E,gCAAiC,WAAS,EAAOA,gCAAiC,CAChF52E,OAAQ,SAEVq3E,cAAe,WAAS,EAAOA,cAAe,CAC5Cr3E,OAAQ,UAEVw3E,WAAY,WAAS,EAAOA,WAAY,CACtCx3E,OAAQ,UAEVs3E,iBAAkB,WAAS,EAAOA,iBAAkB,CAClDt3E,OAAQ,SAEVg3E,UAAW,WAAS,EAAOA,UAAW,CACpC50E,IAAK,OACLyd,MAAO,OACPzc,SAAU,OACV4Q,WAAY,oBACZrT,MAAO,UACPmC,OAAQ,UACR,WAAY,CACVmD,QAAS,cAGbuwE,iBAAkB,WAAS,EAAOA,iBAAkB,CAClD,uBAAwB,CACtBxiE,WAAY,oBACZ,WAAY,CACV/N,QAAS,eAIfsxE,oBAAqB,WAAS,EAAOA,oBAAqB,CACxDv3E,OAAQ,SAEVk4E,cAAe,WAAS,EAAOA,cAAe,CAC5Cr4D,MAAO,OACPzd,IAAK,SAEP4gF,UAAW,CACT,SAAU,CACRnjF,aAAc,QAEhB,iBAAkB,CAChBC,YAAa,mBAEf,qCAAsC,CACpCuvB,WAAY,qBAGhBygD,aAAc,CACZ9vE,OAAQ,WA/EH,CAkFX,I","sources":["../../../../reporting-ui/packages/report-controls/src/loading/style/style.js","../../../../reporting-ui/packages/report-controls/src/loading/loading.js","../../../../reporting-ui/packages/report-controls/src/loading/style/index.js","../../../../reporting-ui/packages/report-controls/src/panel/components/style.js","../../../../reporting-ui/packages/report-controls/src/panel/panel.js","../../../../reporting-ui/packages/report-controls/src/panel/components/classes.js","../../../../reporting-ui/packages/report-create/src/config/index.js","../../../../reporting-ui/packages/report-create/src/components/shared/formatter/get-report-options.js","../../../../reporting-ui/packages/report-create/src/components/shared/formatter/map-filter.js","../../../../reporting-ui/packages/report-create/src/components/shared/formatter/map.js","../../../../reporting-ui/packages/report-create/src/components/shared/formatter/format.js","../../../../reporting-ui/packages/report-create/src/components/run-download-save/run.js","../../../../reporting-ui/packages/report-create/src/components/run-download-save/update.js","../../../../reporting-ui/packages/report-create/src/components/run-download-save/util.js","../../../../reporting-ui/packages/report-create/src/components/run-download-save/index.js","../../../../reporting-ui/packages/report-create/src/components/shared/grid-item.js","../../../../reporting-ui/packages/report-create/src/components/shared/grid.js","../../../../reporting-ui/packages/report-create/src/components/warning.js","../../../../reporting-ui/packages/report-create/src/config/time-ranges/default-time-ranges.js","../../../../reporting-ui/packages/report-create/src/config/time-ranges/data-persistance-enum.js","../../../../reporting-ui/packages/report-create/src/config/time-ranges/get-minimum-supported-day.js","../../../../reporting-ui/packages/report-create/src/config/time-ranges/time-grain-range-options.js","../../../../reporting-ui/packages/report-create/src/config/time-ranges/util.js","../../../../reporting-ui/packages/report-create/src/sections/root/title.js","../../../../reporting-ui/packages/report-create/src/sections/root/description.js","../../../../reporting-ui/packages/report-create/src/components/shared/generic-selector.js","../../../../reporting-ui/packages/report-create/src/sections/root/index.js","../../../../reporting-ui/packages/report-create/src/sections/general/account-campaign-selector/account-campaign-selector.js","../../../../reporting-ui/packages/report-create/src/sections/general/time-grain-selector.js","../../../../reporting-ui/packages/report-create/src/sections/general/time-range/time-range-selector.js","../../../../reporting-ui/packages/report-create/src/config/time-ranges/time-ranges.js","../../../../reporting-ui/packages/report-create/src/sections/general/time-range/time-range-style.js","../../../../reporting-ui/packages/report-create/src/sections/general/account-campaign-selector/scope-filter-level.js","../../../../reporting-ui/packages/report-create/src/sections/general/time-range/time-range-helper.js","../../../../reporting-ui/packages/report-create/src/sections/general/index.js","../../../../reporting-ui/packages/report-create/src/sections/general/account-campaign-selector/validator.js","../../../../reporting-ui/packages/report-column-chooser/src/column-chooser.js","../../../../reporting-ui/packages/report-column-chooser/src/column-formating/constraints/exclusion-sets.js","../../../../reporting-ui/packages/report-column-chooser/src/column-formating/constraints/time-grain.js","../../../../reporting-ui/packages/report-column-chooser/src/column-formating/constraints/configs.js","../../../../reporting-ui/packages/report-column-chooser/src/column-formating/constraints/charts-columns.js","../../../../reporting-ui/packages/report-column-chooser/src/report-column-chooser.js","../../../../reporting-ui/packages/report-column-chooser/src/column-formating/translate-columns.js","../../../../reporting-ui/packages/report-column-chooser/src/column-formating/constraints/pilot.js","../../../../reporting-ui/packages/report-column-chooser/src/index.js","../../../../reporting-ui/packages/report-column-chooser/src/style.js","../../../../reporting-ui/packages/report-create/src/sections/column/index.js","../../../../reporting-ui/packages/report-create/src/style/input-title-style.js","../../../../reporting-ui/packages/report-create/src/sections/settings/frequency.js","../../../../reporting-ui/packages/report-create/src/sections/settings/consts.js","../../../../reporting-ui/packages/report-create/src/sections/settings/start-end-date.js","../../../../reporting-ui/packages/report-create/src/sections/settings/email-text-area.js","../../../../reporting-ui/packages/report-create/src/sections/settings/report-schedule.js","../../../../reporting-ui/packages/report-create/src/style/radio-checkbox-style.js","../../../../reporting-ui/packages/report-create/src/sections/settings/index.js","../../../../reporting-ui/packages/report-create/src/sections/filter/consts.js","../../../../reporting-ui/packages/report-create/src/sections/filter/filter-schema-processor.js","../../../../reporting-ui/packages/report-create/src/sections/filter/filter-old.js","../../../../reporting-ui/packages/report-create/src/sections/filter/filter-util.js","../../../../reporting-ui/packages/report-create/src/sections/filter/filter-new.js","../../../../reporting-ui/packages/report-create/src/sections/filter/index.js","../../../../reporting-ui/packages/report-create/src/pilot.js","../../../../reporting-ui/packages/report-create/src/style/index.js","../../../../reporting-ui/packages/report-create/src/create-report.js","../../../../reporting-ui/packages/report-create/src/index.js","../../../../reporting-ui/packages/report-schema/src/columns/elevated-columns/performance.js","../../../../reporting-ui/packages/report-schema/src/columns/elevated-columns/index.js","../../../../reporting-ui/packages/report-schema/src/columns/elevated-columns/ad-extension.js","../../../../reporting-ui/packages/report-schema/src/columns/elevated-columns/advanced-insights.js","../../../../reporting-ui/packages/report-schema/src/columns/elevated-columns/billing.js","../../../../reporting-ui/packages/report-schema/src/columns/elevated-columns/change-history.js","../../../../reporting-ui/packages/report-schema/src/columns/elevated-columns/dsa.js","../../../../reporting-ui/packages/report-schema/src/columns/elevated-columns/product.js","../../../../reporting-ui/packages/report-schema/src/columns/elevated-columns/targeting.js","../../../../reporting-ui/packages/report-schema/src/columns/piloted-columns/restriction-sets.js","../../../../reporting-ui/packages/report-schema/src/columns/piloted-columns/default-sets.js","../../../../reporting-ui/packages/report-schema/src/columns/piloted-columns/index.js","../../../../reporting-ui/packages/report-schema/src/columns/help-link-ids.js","../../../../reporting-ui/packages/report-schema/src/columns/missing-mandatory-column-error.js","../../../../reporting-ui/packages/report-schema/src/filter-processor.js","../../../../reporting-ui/packages/report-schema/src/column-processor.js","../../../../reporting-ui/packages/report-schema/src/schema-processor.js","../../../../reporting-ui/packages/report-schema/src/shared-field-processor.js","../../../../reporting-ui/packages/report-schema/src/columns/get-aggregation-restrictions.js","../../../../reporting-ui/packages/report-schema/src/overrides/time-range-override.js","../../../../reporting-ui/packages/report-schema/src/report-schema.js","../../../../reporting-ui/packages/report-schema/src/deprecated-reports.js","../../../../reporting-ui/packages/report-shared/src/legacy-i18n/i18n/keys.js","../../../../reporting-ui/packages/report-shared/src/legacy-i18n/i18n/column-chooser.js","../../../../reporting-ui/packages/report-shared/src/legacy-i18n/i18n/filter.js","../../../../reporting-ui/packages/report-shared/src/legacy-i18n/i18n/cron-format.js","../../../../reporting-ui/packages/report-shared/src/legacy-i18n/i18n/date-range.js","../../../../reporting-ui/packages/report-shared/src/legacy-i18n/i18n/inline-download.js","../../../../reporting-ui/packages/report-shared/src/legacy-i18n/i18n/inline-edit.js","../../../../reporting-ui/packages/report-shared/src/legacy-i18n/legacy-i18n.js","../../../../reporting-ui/packages/report-shared/src/legacy-i18n/with-legacy-i18n.js","../../../../reporting-ui/packages/report-shared/src/identity-provider/identity-provider.js","../../../../reporting-ui/packages/report-shared/src/identity-provider/with-identity-context.js","../../../../reporting-ui/packages/report-shared/src/js-data-light/js-data-odata-adaptor.js","../../../../reporting-ui/packages/report-shared/src/js-data-light/index.js","../../../../reporting-ui/packages/report-shared/src/js-data-light/js-data-odata.js","../../../../reporting-ui/packages/report-shared/src/reporting-contexts/mode-updater/modes.js","../../../../reporting-ui/packages/report-shared/src/odata-abstraction/js-data-light-with-scope-path.js","../../../../reporting-ui/packages/report-shared/src/odata-abstraction/get-scope-path.js","../../../../reporting-ui/packages/report-shared/src/odata-abstraction/history-queries.js","../../../../reporting-ui/packages/report-shared/src/navigator/index.js","../../../../reporting-ui/packages/report-shared/src/util/model-help/custom-reports.js","../../../../reporting-ui/packages/report-shared/src/util/model-help/history-reports.js","../../../../reporting-ui/packages/report-shared/src/logger/index.js","../../../../reporting-ui/packages/report-shared/src/i18n-map/report-type.js","../../../../reporting-ui/packages/report-shared/src/i18n-map/file-format.js","../../../../reporting-ui/packages/report-shared/src/i18n-map/get-deprecated-message.js","../../../../reporting-ui/packages/report-shared/src/i18n-map/error-messages.js","../../../../reporting-ui/packages/report-shared/src/i18n-map/index.js","../../../../reporting-ui/packages/report-shared/src/i18n-map/date-range-preset.js","../../../../reporting-ui/packages/report-shared/src/i18n-map/report-aggregation.js","../../../../reporting-ui/packages/report-shared/src/i18n-map/column-name.js","../../../../reporting-ui/packages/report-shared/src/i18n-map/filter-enum.js","../../../../reporting-ui/packages/report-shared/src/util/date.js","../../../../reporting-ui/packages/report-shared/src/util/index.js","../../../../reporting-ui/packages/report-shared/src/general/keydown.js","../../../../reporting-ui/packages/report-shared/src/util/get-customer-id.js","../../../../reporting-ui/packages/report-shared/src/util/is-report-running.js","../../../../reporting-ui/packages/report-shared/src/util/should-refresh-poller.js","../../../../reporting-ui/packages/report-shared/src/util/get-merge-filter.js","../../../../reporting-ui/packages/report-shared/src/odata-abstraction/custom-report-queries.js","../../../../reporting-ui/packages/report-shared/src/odata-abstraction/details-queries.js","../../../../reporting-ui/packages/report-shared/src/odata-abstraction/create-report-queries.js","../../../../reporting-ui/packages/report-shared/src/general/constants.js","../../../../reporting-ui/packages/report-shared/src/general/help.js","../../../../reporting-ui/packages/report-shared/src/general/create-error-message.js","../../../../reporting-ui/packages/report-shared/src/reporting-contexts/permission-provider/permission-provider.js","../../../../reporting-ui/packages/report-shared/src/reporting-contexts/permission-provider/with-permission-context.js","../../../../reporting-ui/packages/report-shared/src/alert-center/index.js","../../../../reporting-ui/packages/report-shared/src/general/error-displayer.js","../../../../reporting-ui/packages/report-shared/src/general/default-error-view.js","../../../../reporting-ui/packages/report-shared/src/reporting-contexts/report-repository/report-repository.js","../../../../reporting-ui/packages/report-shared/src/reporting-contexts/report-repository/with-repository-context.js","../../../../reporting-ui/packages/report-shared/src/reporting-contexts/report-list-service/report-list/report-list-data-factory.js","../../../../reporting-ui/packages/report-shared/src/reporting-contexts/report-list-service/report-list/reports.js","../../../../reporting-ui/packages/report-shared/src/reporting-contexts/report-list-service/report-list/report-categories/performance.js","../../../../reporting-ui/packages/report-shared/src/reporting-contexts/report-list-service/report-list/report-categories/extensions.js","../../../../reporting-ui/packages/report-shared/src/reporting-contexts/report-list-service/report-list/report-categories/product-ads.js","../../../../reporting-ui/packages/report-shared/src/reporting-contexts/report-list-service/report-list/report-categories/change-history.js","../../../../reporting-ui/packages/report-shared/src/reporting-contexts/report-list-service/report-list/report-categories/targeting.js","../../../../reporting-ui/packages/report-shared/src/reporting-contexts/report-list-service/report-list/report-categories/billing-and-budget.js","../../../../reporting-ui/packages/report-shared/src/reporting-contexts/report-list-service/report-list/report-categories/advanced-insights.js","../../../../reporting-ui/packages/report-shared/src/reporting-contexts/report-list-service/report-list/report-categories/dynamic-search.js","../../../../reporting-ui/packages/report-shared/src/reporting-contexts/report-list-service/report-list/report-list.js","../../../../reporting-ui/packages/report-shared/src/reporting-contexts/report-list-service/report-list-service.js","../../../../reporting-ui/packages/report-shared/src/reporting-contexts/report-list-service/with-report-list-context.js","../../../../reporting-ui/packages/report-shared/src/reporting-contexts/services-endpoints/index.js","../../../../reporting-ui/packages/report-shared/src/reporting-contexts/mode-updater/mode-updater.js","../../../../reporting-ui/packages/report-shared/src/reporting-contexts/index.js","../../../../reporting-ui/packages/report-shared/src/reporting-contexts/legacy-deps/index.js","../../../../reporting-ui/packages/report-shared/src/theme/index.js","../../report-vnext-theme/src/index.js","../../../../reporting-ui/packages/account-campaign-selector/src/account-campaign/account-campaign-selector.types.ts","../../../../reporting-ui/packages/account-campaign-selector/src/double-list/selector-option.ts","../../../../reporting-ui/packages/account-campaign-selector/src/double-list/double-list.types.ts","../../../../reporting-ui/packages/account-campaign-selector/src/double-list/styles.ts","../../../../reporting-ui/packages/account-campaign-selector/src/double-list/selector-tree.tsx","../../../../reporting-ui/packages/account-campaign-selector/src/double-list/selector-list.tsx","../../../../reporting-ui/packages/account-campaign-selector/src/double-list/selector-container.tsx","../../../../reporting-ui/packages/account-campaign-selector/src/double-list/selector.tsx","../../../../reporting-ui/packages/account-campaign-selector/src/double-list/utils.ts","../../../../reporting-ui/packages/account-campaign-selector/src/double-list/double-list.tsx","../../../../reporting-ui/packages/account-campaign-selector/src/account-campaign/styles.ts","../../../../reporting-ui/packages/account-campaign-selector/src/account-campaign/glyphicon-wrapper.tsx","../../../../reporting-ui/packages/account-campaign-selector/src/account-campaign/acccount-campaign-container-config.tsx","../../../../reporting-ui/packages/account-campaign-selector/src/account-campaign/account-campaign-result-box.tsx","../../../../reporting-ui/packages/account-campaign-selector/src/account-campaign/account-campaign-selector-box.tsx","../../../../reporting-ui/packages/account-campaign-selector/src/account-campaign/account-campaign-data-store/account-campaign-data-processor.ts","../../../../reporting-ui/packages/account-campaign-selector/src/account-campaign/account-campaign-data-store/account-campaign-data-store.ts","../../../../reporting-ui/packages/account-campaign-selector/src/account-campaign/account-campaign-selector.tsx"],"sourcesContent":["export const style = {\r\n view: {\r\n width: '100%',\r\n 'min-width': '885px',\r\n marginTop: '20px',\r\n marginBottom: '10px',\r\n paddingLeft: '24px',\r\n },\r\n loadingContainer: {\r\n width: '100%',\r\n height: '100%',\r\n textAlign: 'center',\r\n },\r\n loadingMessage: {\r\n padding: '20px',\r\n display: 'inline-block',\r\n backgroundColor: 'white',\r\n maxWidth: '370px',\r\n minWidth: '140px',\r\n minHeight: '70px',\r\n zIndex: 1011,\r\n '&:hover &:focus': {\r\n border: {\r\n color: 'white', // _.result(color.light, 'dark30'),\r\n },\r\n },\r\n },\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { getStyle } from './style';\r\n\r\n// a simple loading view to render when the page requires a fetch to finish\r\nconst Loading = ({ i18n, classes }) => (\r\n
\r\n
\r\n \r\n
\r\n
\r\n {i18n.getString(_TL_('Loading...'))}\r\n
\r\n
\r\n
\r\n
\r\n);\r\n\r\nLoading.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n classes: PropTypes.objectOf(PropTypes.string),\r\n};\r\n\r\nLoading.defaultProps = {\r\n classes: {},\r\n};\r\n\r\nexport const Wrapped =\r\nwithDefaultStyles(withI18nConsumer(Loading), getStyle);\r\nexport { Wrapped as Loading };\r\n","import _ from 'underscore';\r\nimport { uiblockerStyle } from '@bingads-webui-campaign-react/common-styles';\r\nimport { style } from './style';\r\n\r\nexport const getStyle = function (components, core) {\r\n if (!core.isUIVnext) {\r\n return style;\r\n }\r\n const blockStyle = uiblockerStyle({ palette: core.palette });\r\n return {\r\n ...style,\r\n 'blocker-global': _.extend(blockStyle['.blocker-global'], blockStyle['.blocker-global, .blocker-local'], blockStyle['.blocker, .blocker-global, .blocker-local']),\r\n loadingContainer: _.extend(style.loadingContainer, {\r\n '& div.blocker-indicator': {\r\n top: '80px',\r\n },\r\n }),\r\n };\r\n};\r\n","\r\nexport const style = {\r\n icon: {\r\n paddingRight: '8px',\r\n Top: '2px !important',\r\n },\r\n panel:\r\n {\r\n backgroundColor: 'transparent !important',\r\n border: 'none !important',\r\n 'box-shadow': 'none !important',\r\n borderRadius: '0px',\r\n padding: '0px !important',\r\n marginBottom: '0px !important',\r\n\r\n },\r\n panelHeader:\r\n {\r\n backgroundColor: 'transparent !important',\r\n borderBottom: 'solid 1px #eaecee !important',\r\n borderTopLeftRadius: '3px',\r\n borderTopRightRadius: '3px',\r\n cursor: 'pointer',\r\n color: '#333333 !important',\r\n display: 'block',\r\n font: 'normal 14px Arial !important',\r\n fontWeight: '600 !important',\r\n height: '40px',\r\n marginTop: '10px',\r\n marginBottom: '0px !important',\r\n padding: '9px 0px 0px 0px',\r\n '& .helpbutton':\r\n {\r\n verticalAlign: 'middle !important',\r\n },\r\n },\r\n\r\n panelBody:\r\n {\r\n padding: '10px 0px 0px 15px',\r\n },\r\n\r\n panelTitle:\r\n {\r\n display: 'inline',\r\n 'font-weight': 'bold',\r\n fontSize: '14px !important',\r\n lineHeight: '30px',\r\n padding: '0px 0px',\r\n marginBottom: 'unset',\r\n },\r\n};\r\n\r\n","import React, { PureComponent } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport _ from 'underscore';\r\nimport { Panel as ReactPanel, Glyphicon } from '@bingads-webui-react/primitive';\r\nimport { HelpIcon } from '@bingads-webui-campaign-react/help';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { getStyle } from './components/classes';\r\n\r\nexport class PanelBase extends PureComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n expanded: props.expanded,\r\n };\r\n this.onClick = this.onClick.bind(this);\r\n }\r\n\r\n onClick() {\r\n this.setState({\r\n expanded: !this.state.expanded,\r\n });\r\n }\r\n\r\n render() {\r\n const { helpLinkId, classes, isUIVnext } = this.props;\r\n const expanded = this.props.onClick ? this.props.expanded : this.state.expanded;\r\n const iconType = expanded ? 'menu-up' : 'menu-down';\r\n const nextIconType = expanded ? 'ba-ChevronUpMed' : 'ba-ChevronDownMed';\r\n return (\r\n \r\n \r\n \r\n \r\n {this.props.label}\r\n \r\n {helpLinkId && }\r\n \r\n \r\n {this.props.children}\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nconst Wraped = withDefaultStyles(PanelBase, getStyle);\r\nexport { Wraped as Panel };\r\n\r\nPanelBase.propTypes = {\r\n\r\n /**\r\n * Content rendered in the body\r\n */\r\n children: PropTypes.node,\r\n\r\n /**\r\n * If panel expanded or not initially\r\n */\r\n expanded: PropTypes.bool,\r\n\r\n /**\r\n * id name of the element\r\n */\r\n id: PropTypes.string,\r\n\r\n /**\r\n * Title of the panel\r\n */\r\n label: PropTypes.string.isRequired,\r\n\r\n /**\r\n * onClick functionality to turn into a full\r\n * controlled component.\r\n */\r\n onClick: PropTypes.func,\r\n\r\n helpLinkId: PropTypes.string,\r\n\r\n classes: PropTypes.objectOf(PropTypes.string),\r\n\r\n isUIVnext: PropTypes.bool,\r\n};\r\n\r\nPanelBase.defaultProps = {\r\n children: '',\r\n expanded: false,\r\n id: undefined,\r\n onClick: undefined,\r\n helpLinkId: undefined,\r\n classes: {},\r\n isUIVnext: false,\r\n};\r\n\r\n","import _ from 'underscore';\r\nimport { helpbuttonStyle } from '@bingads-webui-campaign-react/common-styles';\r\nimport { style } from './style';\r\n\r\nexport const getStyle = function (components, core) {\r\n const baseStyle = style;\r\n if (!core.isUIVnext) {\r\n return baseStyle;\r\n }\r\n return {\r\n ...baseStyle,\r\n panel: _.extend(baseStyle.panel, {\r\n marginTop: '36px',\r\n }),\r\n panelHeader: _.extend(baseStyle.panelHeader, {\r\n font: 'normal 14px Sego !important',\r\n height: '40px',\r\n borderBottom: 'none',\r\n borderTop: `1px solid ${core.palette.neutralSecondary}`,\r\n paddingTop: '10px !important',\r\n '& .helpbutton': _.extend(helpbuttonStyle(core)['.helpbutton'], {\r\n display: 'inline',\r\n verticalAlign: 'baseline',\r\n color: `${core.palette.themePrimary}`,\r\n padding: 0,\r\n }),\r\n '& .helpbutton::before': helpbuttonStyle(core)['.helpbutton::before'],\r\n '& .helpbutton:after': {\r\n content: 'none',\r\n },\r\n }),\r\n panelBody: _.extend(baseStyle.panelBody, {\r\n paddingTop: '0',\r\n paddingLeft: '30px',\r\n }),\r\n panelTitle: _.extend(baseStyle.panelTitle, {\r\n color: `${core.palette.themePrimary}`,\r\n display: 'inline',\r\n font: 'normal 18px Segoe UI !important',\r\n fontSize: '18px',\r\n '&:focus': {\r\n outline: 'none',\r\n 'text-decoration': 'underline',\r\n },\r\n }),\r\n icon: _.extend(baseStyle.icon, {\r\n fontSize: '18px',\r\n paddingRight: '11px',\r\n }),\r\n };\r\n};\r\n","import _ from 'underscore';\r\nimport { i18nMap } from '@bingads-webui-campaign/report-shared';\r\n\r\nexport const sectionType = {\r\n GENERAL: 'general', COLUMN: 'column', FILTER: 'filter', SETTING: 'setting', ROOT: 'root',\r\n};\r\n\r\nexport const renderTypes = {\r\n Table: _TL_('Table'),\r\n Linechart: _TL_('Line chart'),\r\n Barchart: _TL_('Bar chart'),\r\n};\r\n\r\nexport const timeGrains = i18nMap.ReportAggregation;\r\n\r\nexport const fileFormats = i18nMap.FileFormatForReporting;\r\n\r\n\r\nexport const savedTaskItemTypes = {\r\n Template: 'ReportUITemplate',\r\n CustomerTemplate: 'ReportUICustomerTemplate',\r\n AccountTemplate: 'ReportUIAccountTemplate',\r\n};\r\n\r\nconst sharedTemplateTypes = [\r\n savedTaskItemTypes.CustomerTemplate,\r\n savedTaskItemTypes.AccountTemplate,\r\n];\r\n\r\nexport const isValidSaveType =\r\n taskItemType =>\r\n _.chain(savedTaskItemTypes).values(savedTaskItemTypes).contains(taskItemType).value();\r\n\r\nexport const getSaveType = ({\r\n IsReportsMergeEnabled, IsInternalUser, accountScope, taskItem,\r\n}) => {\r\n const taskItemType = _.result(taskItem, 'Type', 'invalid-type');\r\n const isSavedTaskItemType = isValidSaveType(taskItemType);\r\n if (isSavedTaskItemType) {\r\n return taskItemType;\r\n } else if (IsReportsMergeEnabled && !IsInternalUser) {\r\n return accountScope ? savedTaskItemTypes.AccountTemplate : savedTaskItemTypes.CustomerTemplate;\r\n }\r\n return savedTaskItemTypes.Template;\r\n};\r\n\r\nexport function isSharedTemplateType(type) {\r\n return _.contains(sharedTemplateTypes, type);\r\n}\r\n\r\nexport const ScopeFilterLevel = {\r\n None: 'None',\r\n User: 'User',\r\n Customer: 'Customer',\r\n Account: 'Account',\r\n Campaign: 'Campaign',\r\n};\r\n\r\nexport function getScopeFilterLevel(mtScopeFilterLevel) {\r\n const mtEnum = _.result(mtScopeFilterLevel, 'enum', []);\r\n\r\n if (_.contains(mtEnum, ScopeFilterLevel.Campaign)) {\r\n return ScopeFilterLevel.Campaign;\r\n } else if (_.contains(mtEnum, ScopeFilterLevel.Account)) {\r\n return ScopeFilterLevel.Account;\r\n } else if (_.contains(mtEnum, ScopeFilterLevel.Customer)) {\r\n return ScopeFilterLevel.Customer;\r\n } else if (_.contains(mtEnum, ScopeFilterLevel.User)) {\r\n return ScopeFilterLevel.User;\r\n }\r\n\r\n return ScopeFilterLevel.None;\r\n}\r\n\r\nexport const partialConversionsColumns = {\r\n AllConversions: 'AllConversionsQualified',\r\n Conversions: 'ConversionsQualified',\r\n ConversionRate: 'ConversionRateQualified',\r\n AllConversionRate: 'AllConversionRateQualified',\r\n LowQualityConversions: 'LowQualityConversionsQualified',\r\n CostPerConversion: 'CostPerConversionQualified',\r\n ViewThroughCostPerConversion: 'ViewThroughCostPerConversionQualified',\r\n ViewThroughConversionRate: 'ViewThroughConversionRateQualified',\r\n AllCostPerConversion: 'AllCostPerConversionQualified',\r\n};\r\n\r\nexport function getPartialConversionsQualifiedColumns(columns) {\r\n const newColumns = columns.map(column => partialConversionsColumns[column] || column);\r\n return newColumns;\r\n}\r\n","export const getReportOptions = (includeTotalRow) => {\r\n let options = 'IncludeColumnHeaders,IncludeReportFooter,IncludeReportHeader';\r\n if (includeTotalRow) {\r\n options += ',IncludeTotalRows';\r\n }\r\n return options;\r\n};\r\n\r\n","import _ from 'underscore';\r\nimport { trim } from 'underscore.string';\r\nimport { Shared as sharedSchema } from '@bingads-webui/report-ui-interface';\r\n\r\nconst operatorToApi = {\r\n $eq: 'Equals',\r\n $neq: 'DoesNotEqual',\r\n $gt: 'GreaterThan',\r\n $gte: 'GreaterThanEqual',\r\n $in: 'Equals',\r\n $lt: 'LessThan',\r\n $lte: 'LessThanEqual',\r\n $contains: 'Contains',\r\n $containsany: 'Contains',\r\n $doesnotcontain: 'DoesNotContain',\r\n $startswith: 'BeginsWith',\r\n $endswith: 'EndsWith',\r\n};\r\n\r\nconst operatorFromApi = _.object(_.values(operatorToApi), _.keys(operatorToApi));\r\n\r\nfunction batchToString(arr) {\r\n return _.map(arr, x => String(x));\r\n}\r\n\r\nfunction toApi(predicates, filterSchema = sharedSchema.filters, valueHandledByCaller = false) {\r\n const filters = _.map(predicates, (predicate) => {\r\n const propertyName = _.keys(predicate)[0];\r\n const propertySchema = filterSchema[propertyName];\r\n const propertyValueObject = predicate[propertyName];\r\n const operatorUi = _.keys(propertyValueObject)[0];\r\n const propertyValueUi = propertyValueObject[operatorUi];\r\n\r\n let operatorApi;\r\n let propertyValuesApi;\r\n\r\n if (valueHandledByCaller) {\r\n operatorApi = operatorToApi[operatorUi];\r\n propertyValuesApi = propertyValueUi;\r\n } else if (propertySchema.enum) {\r\n propertyValuesApi = [...propertyValueUi];\r\n operatorApi = 'Equals';\r\n } else if (propertySchema.type === 'string') {\r\n propertyValuesApi = propertyValueUi.split(',').map(x => trim(x));\r\n operatorApi = 'Equals';\r\n } else if (propertySchema.type === 'integer') {\r\n propertyValuesApi = [propertyValueUi];\r\n operatorApi = operatorToApi[operatorUi];\r\n }\r\n\r\n const result = {\r\n Filter: {\r\n LogicalOperator: 'OR',\r\n Expressions: [\r\n {\r\n '@odata.type': '#Model.Predicate',\r\n PropertyName: propertyName,\r\n Operator: operatorApi,\r\n Values: valueHandledByCaller ? propertyValuesApi : batchToString(propertyValuesApi),\r\n },\r\n ],\r\n },\r\n };\r\n\r\n return result;\r\n });\r\n\r\n return filters;\r\n}\r\n\r\nfunction fromApi(Filters, filterSchema = sharedSchema.filters) {\r\n const predicates = _.map(Filters, ({\r\n Filter: {\r\n Expressions: [\r\n Expression,\r\n ],\r\n },\r\n }) => {\r\n const propertyName = Expression.PropertyName;\r\n const propertySchema = filterSchema[propertyName];\r\n const propertyValuesApi = Expression.Values;\r\n const operatorApi = Expression.Operator;\r\n\r\n let propertyValueUi;\r\n let operatorUi;\r\n\r\n if (propertySchema.enum) {\r\n propertyValueUi = [...propertyValuesApi];\r\n operatorUi = '$in';\r\n } else if (propertySchema.type === 'string') {\r\n propertyValueUi = propertyValuesApi.join(',');\r\n operatorUi = '$eq';\r\n } else if (propertySchema.type === 'integer') {\r\n propertyValueUi = Number(propertyValuesApi[0]);\r\n operatorUi = operatorFromApi[operatorApi];\r\n }\r\n\r\n return {\r\n [propertyName]: {\r\n [operatorUi]: propertyValueUi,\r\n },\r\n };\r\n });\r\n\r\n return predicates;\r\n}\r\n\r\nexport const convertPredicatesToFilters = toApi;\r\nexport const convertFiltersToPredicates = fromApi;\r\n\r\nexport default {\r\n toApi,\r\n fromApi,\r\n};\r\n","import _ from 'underscore';\r\nimport { Shared as sharedSchema } from '@bingads-webui/report-ui-interface-preview';\r\nimport { sectionType } from '../../../config';\r\nimport { getReportOptions } from './get-report-options';\r\nimport filterConvertor from './map-filter';\r\n\r\nconst {\r\n GENERAL, COLUMN, FILTER, SETTING, ROOT,\r\n} = sectionType;\r\n\r\nconst dataToApi = {\r\n [ROOT]: {\r\n name: { key: 'Name' },\r\n type: { key: 'ReportType' },\r\n schemaName: { key: 'SchemaName' },\r\n renderType: { key: 'RenderType' },\r\n },\r\n\r\n [GENERAL]: {\r\n timeGrain: { key: 'ReportAggregation' },\r\n timeRange: {\r\n key: 'ReportTime',\r\n to: val => (val.key === 'Custom' ? { StartDate: val.start, EndDate: val.end } : { DateRangePreset: val.key }),\r\n from: val => (!val.DateRangePreset ? { key: 'Custom', start: val.StartDate, end: val.EndDate } : { key: val.DateRangePreset }),\r\n },\r\n timeZone: { key: 'ReportTimeZone' },\r\n format: {\r\n key: 'Format',\r\n to: val => val,\r\n from: (val) => {\r\n switch (val) {\r\n case 'Csv':\r\n return 'Csvzip';\r\n case 'Tsv':\r\n return 'TsvZip';\r\n default:\r\n return val;\r\n }\r\n },\r\n },\r\n accountCampaignSelector: {\r\n keys: ['AccountIds', 'CampaignReportScopes', 'CustomerScopes'],\r\n },\r\n userScopes: {\r\n key: 'UserScopes',\r\n to: val => (!_.isNull(val) ? [val] : []),\r\n from: val => val[0],\r\n },\r\n },\r\n\r\n [COLUMN]: {\r\n selected: { key: 'ReportColumns' },\r\n },\r\n\r\n [FILTER]: {\r\n predicates: {\r\n key: 'Filters',\r\n to: filterConvertor.toApi,\r\n from: filterConvertor.fromApi,\r\n },\r\n },\r\n\r\n [SETTING]: {\r\n includeTotalRow: {\r\n key: 'ReportOptions',\r\n to: val => getReportOptions(val),\r\n from: val => val.indexOf('IncludeTotalRow') !== -1,\r\n },\r\n EmailRecipients: {\r\n key: 'EmailRecipients',\r\n to: val => (val ? _.compact(_.map(val.split(/[,|;]/), v => v.trim())) : []),\r\n from: val => val.join(','),\r\n },\r\n scheduleThisReport: {\r\n key: 'Cron',\r\n from: val => val !== '',\r\n },\r\n type: {\r\n key: 'Type',\r\n },\r\n AttachFileToEmail: { key: 'AttachFileToEmail' },\r\n Cron: { key: 'Cron' },\r\n StartDate: { key: 'StartTime' },\r\n EndDate: { key: 'EndTime' },\r\n },\r\n\r\n};\r\n\r\nexport const getApiObject = (data, options = { preview: false }) => {\r\n const output = {};\r\n _.each(dataToApi, (sectionNode, section) => {\r\n _.each(sectionNode, (node, property) => {\r\n if (_.has(data[section], property)) {\r\n let val = data[section][property];\r\n val = node.to ? node.to(val, options.preview ? sharedSchema.filters : undefined) : val;\r\n\r\n if (node.key) {\r\n if (_.isObject(output[node.key])) {\r\n _.extend(output[node.key], val);\r\n } else {\r\n output[node.key] = val;\r\n }\r\n } else if (node.keys) {\r\n _.each(node.keys, (nodeKey) => {\r\n output[nodeKey] = val[nodeKey];\r\n });\r\n } else {\r\n throw new Error('One of node.key or node.keys must be specified!');\r\n }\r\n }\r\n });\r\n });\r\n return output;\r\n};\r\n\r\nexport const getDataObject = (apiObject, options = { preview: false }) => {\r\n const output = {};\r\n _.each(dataToApi, (sectionNode, section) => {\r\n _.each(sectionNode, (node, property) => {\r\n if (node.key) {\r\n if (_.has(apiObject, node.key)) {\r\n if (!_.isObject(output[section])) {\r\n output[section] = {};\r\n }\r\n const val = apiObject[node.key];\r\n output[section][property] = node.from ? node.from(val, options.preview ? sharedSchema.filters : undefined) : val;\r\n }\r\n } else if (node.keys) {\r\n _.each(node.keys, (nodeKey) => {\r\n if (_.has(apiObject, nodeKey)) {\r\n if (!_.isObject(output[section])) {\r\n output[section] = {};\r\n }\r\n if (!_.has(output[section], property)) {\r\n output[section][property] = {};\r\n }\r\n output[section][property][nodeKey] = apiObject[nodeKey];\r\n }\r\n });\r\n } else {\r\n throw new Error('One of node.key or node.keys must be specified!');\r\n }\r\n });\r\n });\r\n return output;\r\n};\r\n\r\n","import _ from 'underscore';\r\nimport { toLegacyTimeZone } from '@bingads-webui-universal/time-zone-converter';\r\nimport { getApiObject } from './map';\r\nimport { sectionType } from '../../../config';\r\n\r\nconst {\r\n GENERAL,\r\n} = sectionType;\r\n\r\nexport function format(data, identityDetails) {\r\n const {\r\n user, customer, lcid,\r\n } = identityDetails;\r\n\r\n const defaultData = {\r\n '@odata.type': '#Model.ReportDataTaskItem',\r\n ClientApplicationType: 'ReportingUI',\r\n UserId: user.Id,\r\n CustomerId: customer.Id,\r\n LCID: lcid,\r\n MaxRowCount: 0, // 0<= means don't shim mt response\r\n IsDVS: false,\r\n\r\n // General - Account-Campaign-Selector\r\n AccountIds: [],\r\n UserScopes: [],\r\n CustomerScopes: [],\r\n CampaignReportScopes: null,\r\n AdGroupReportScopes: null,\r\n\r\n // Filters\r\n Filters: null,\r\n\r\n // Setting\r\n AttachFileToEmail: false,\r\n EmailRecipients: [],\r\n // if cron not def it must be empty string\r\n Cron: '',\r\n StartTime: null,\r\n EndTime: null,\r\n TimeZoneId: toLegacyTimeZone(data[GENERAL].timeZone),\r\n };\r\n\r\n const formattedData = _.defaults(getApiObject(data), defaultData);\r\n\r\n const omitible = [];\r\n _.each(formattedData, (val, key) => {\r\n if (_.isNull(val)) {\r\n omitible.push(key);\r\n }\r\n });\r\n return _.omit(formattedData, omitible);\r\n}\r\n","import _ from 'underscore';\r\nimport { format } from '../shared/formatter/format';\r\n\r\nexport const getRunPayload = (data, identityDetails, onFailedValidation) => {\r\n let valid = true;\r\n _.each(data, (sectionData, section) => {\r\n if (_.has(sectionData, 'isValid') && sectionData.isValid !== true) {\r\n valid = false;\r\n onFailedValidation(section);\r\n }\r\n });\r\n if (!valid) { return false; }\r\n\r\n const formattedPackage = format(data, identityDetails);\r\n return { ReportData: formattedPackage };\r\n};\r\n","import _ from 'underscore';\r\nimport { format } from '../shared/formatter/format';\r\n\r\nexport const getUpdatePayload = (data, identityDetails, onFailedValidation) => {\r\n let valid = true;\r\n _.each(data, (sectionData, section) => {\r\n if (_.has(sectionData, 'isValid') && sectionData.isValid !== true) {\r\n valid = false;\r\n onFailedValidation(section);\r\n }\r\n });\r\n if (!valid) { return false; }\r\n\r\n const formattedPackage = format(data, identityDetails);\r\n return formattedPackage;\r\n};\r\n","import { modeEnum } from '@bingads-webui-campaign/report-shared';\r\nimport { sectionType } from '../../config';\r\n\r\nconst {\r\n SETTING,\r\n} = sectionType;\r\n\r\nexport const getReportType = data => data[SETTING].type;\r\n\r\n\r\nexport const getOdataOptions = reportType =>\r\n (reportType === 'ReportUITemplate' ?\r\n { mode: modeEnum.PRIVATE } :\r\n { mode: modeEnum.SHARED });\r\n\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport ReportingProps from '@bingads-webui-campaign-react/props-reporting';\r\nimport { noop } from 'underscore';\r\nimport { Button } from '@bingads-webui-react/primitive';\r\nimport { navigator, withRepositoryContext } from '@bingads-webui-campaign/report-shared';\r\nimport { getRunPayload } from './run';\r\nimport { getUpdatePayload } from './update';\r\nimport { getReportType, getOdataOptions } from './util';\r\n\r\nclass ActionCenter extends React.Component {\r\n runReport = (data, identityDetails, onFailedValidation, download = false) => {\r\n const { createReport, queueDownload } = this.props.repository;\r\n const payload = getRunPayload(data, identityDetails, onFailedValidation);\r\n if (!payload) { return; }\r\n const reportType = getReportType(data);\r\n\r\n this.props.setBlocker(true);\r\n createReport(payload, getOdataOptions(reportType))\r\n .then((response) => {\r\n const executionId = response.TaskItemExecutions[0].Id;\r\n navigator.goto(`/v2/pollreport/${executionId}`, { type: reportType });\r\n if (download) {\r\n queueDownload(executionId);\r\n }\r\n return response;\r\n })\r\n .catch(noop)\r\n .finally(() => {\r\n this.props.setBlocker(false);\r\n });\r\n }\r\n\r\n saveReport = (data, identityDetails, onFailedValidation) => {\r\n const { updateReport } = this.props.repository;\r\n const { updateId } = this.props;\r\n const payload = getUpdatePayload(data, identityDetails, onFailedValidation);\r\n if (!payload) { return; }\r\n\r\n updateReport(payload, updateId)\r\n .then((response) => {\r\n navigator.goto('/customreports', { carryForward: true });\r\n return response;\r\n })\r\n .catch(noop)\r\n .finally(() => {\r\n this.props.setBlocker(false);\r\n });\r\n }\r\n\r\n saveReportAndRun = (data, identityDetails, onFailedValidation, download = false) => {\r\n const { updateReportAndRun, queueDownload } = this.props.repository;\r\n const { updateId } = this.props;\r\n const payload = getUpdatePayload(data, identityDetails, onFailedValidation);\r\n if (!payload) { return; }\r\n\r\n this.props.setBlocker(true);\r\n updateReportAndRun(payload, updateId)\r\n .then((response) => {\r\n const executionId = response.TaskItemExecutions[0].Id;\r\n navigator.goto(`/v2/pollreport/${executionId}`, { carryForward: true });\r\n if (download) {\r\n queueDownload(executionId);\r\n }\r\n return response;\r\n })\r\n .catch(noop)\r\n .finally(() => {\r\n this.props.setBlocker(false);\r\n });\r\n }\r\n\r\n render() {\r\n const {\r\n updateId, i18n, identityDetails, data, onFailedValidation,\r\n } = this.props;\r\n\r\n if (updateId) {\r\n return (\r\n
\r\n this.saveReportAndRun(data, identityDetails, onFailedValidation)}\r\n >\r\n {i18n.getString(_TL_('Save and run'))}\r\n \r\n this.saveReport(data, identityDetails, onFailedValidation)}\r\n >\r\n {i18n.getString(_TL_('Save'))}\r\n \r\n this.saveReportAndRun(data, identityDetails, onFailedValidation, true)}\r\n >\r\n {i18n.getString(_TL_('Download'))}\r\n \r\n
\r\n );\r\n }\r\n\r\n\r\n return (\r\n
\r\n this.runReport(data, identityDetails, onFailedValidation)}\r\n >\r\n {i18n.getString(_TL_('Run'))}\r\n \r\n this.runReport(data, identityDetails, onFailedValidation, true)}\r\n >\r\n {i18n.getString(_TL_('Download'))}\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nconst Wrapped = withRepositoryContext(ActionCenter);\r\nexport { Wrapped as ActionCenter };\r\n\r\nActionCenter.propTypes = {\r\n data: PropTypes.object.isRequired, // eslint-disable-line\r\n i18n: ReportingProps.i18n.isRequired,\r\n identityDetails: ReportingProps.identityDetails.isRequired,\r\n onFailedValidation: PropTypes.func.isRequired,\r\n repository: PropTypes.shape({\r\n createReport: PropTypes.func.isRequired,\r\n updateReport: PropTypes.func.isRequired,\r\n updateReportAndRun: PropTypes.func.isRequired,\r\n queueDownload: PropTypes.func.isRequired,\r\n }).isRequired,\r\n setBlocker: PropTypes.func.isRequired,\r\n updateId: ReportingProps.updateId,\r\n};\r\n\r\nActionCenter.defaultProps = {\r\n updateId: undefined,\r\n};\r\n\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport { HelpIcon } from '@bingads-webui-campaign-react/help';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { helpbuttonStyle } from '@bingads-webui-campaign-react/common-styles';\r\n\r\nconst getStyle = function (components, core) {\r\n const baseStyle = {\r\n textRight: { textAlign: 'right' },\r\n centerAlignTitle: {\r\n display: 'inline-block',\r\n verticalAlign: 'top',\r\n width: '200px',\r\n paddingRight: '12px',\r\n paddingTop: '5px',\r\n },\r\n content: {\r\n width: '360px',\r\n display: 'inline-block',\r\n },\r\n title:\r\n {\r\n fontFamily: 'Arial',\r\n fontWeight: 'bold',\r\n fontSize: '12px',\r\n color: '#666666',\r\n },\r\n row: {\r\n marginTop: '2px',\r\n marginBottom: '9px',\r\n },\r\n };\r\n if (!core.isUIVnext) {\r\n return baseStyle;\r\n }\r\n /* istanbul ignore next */\r\n return {\r\n ...baseStyle,\r\n centerAlignTitle: _.extend(baseStyle.centerAlignTitle, {\r\n paddingTop: '0px',\r\n display: 'block',\r\n }),\r\n textRight: _.extend(baseStyle.textRight, {\r\n textAlign: 'left',\r\n }),\r\n content: _.extend(baseStyle.content, {\r\n maxWidth: '465px',\r\n width: '100%',\r\n }),\r\n title: _.extend(baseStyle.title, {\r\n paddingTop: '0',\r\n paddingBottom: '7px',\r\n fontFamily: 'inherit',\r\n fontSize: '14px',\r\n color: `${core.palette.neutralPrimary}`,\r\n fontWeight: '500',\r\n '& .helpbutton': _.extend(helpbuttonStyle(core)['.helpbutton'], {\r\n color: `${core.palette.themePrimary}`,\r\n }),\r\n '& .helpbutton::before': helpbuttonStyle(core)['.helpbutton::before'],\r\n }),\r\n row: _.extend(baseStyle.row, {\r\n marginTop: '30px',\r\n marginBottom: '0',\r\n }),\r\n };\r\n};\r\n\r\n\r\nfunction GridItem({\r\n children, title, titleId, helpLinkId, classes, isGroup,\r\n}) {\r\n return (\r\n
\r\n \r\n
\r\n {title}\r\n {helpLinkId && }\r\n
\r\n
\r\n \r\n {children}\r\n \r\n );\r\n}\r\nconst Wrapped = withDefaultStyles(GridItem, getStyle);\r\nexport { Wrapped as GridItem };\r\n\r\nGridItem.propTypes = {\r\n children: PropTypes.node.isRequired,\r\n title: PropTypes.string.isRequired,\r\n titleId: PropTypes.string,\r\n helpLinkId: PropTypes.string,\r\n classes: PropTypes.objectOf(PropTypes.string).isRequired,\r\n isGroup: PropTypes.bool,\r\n};\r\nGridItem.defaultProps = {\r\n titleId: undefined,\r\n helpLinkId: undefined,\r\n isGroup: false,\r\n};\r\n\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nexport function Grid({ children }) {\r\n return (\r\n
\r\n {children}\r\n
\r\n );\r\n}\r\nGrid.propTypes = {\r\n children: PropTypes.node.isRequired,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport { Alert } from '@bingads-webui-react/primitive';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\n\r\nfunction getStyle() {\r\n return {\r\n warning: {\r\n maxWidth: '994px',\r\n \"& div[variant='warning']\": {\r\n 'margin-top': '10px',\r\n 'background-color': '#feeda275',\r\n 'border-color': '#feeda275',\r\n },\r\n },\r\n };\r\n}\r\n\r\n// eslint-disable-next-line\r\nWarning.propTypes = {\r\n messages: PropTypes.objectOf(PropTypes.string).isRequired,\r\n classes: PropTypes.shape({}).isRequired,\r\n};\r\n\r\nfunction Warning({ messages, classes }) {\r\n const compactMessages = _.compact(messages);\r\n\r\n const alerts = _.map(compactMessages, msg => (\r\n \r\n {msg}\r\n \r\n ));\r\n\r\n\r\n return (\r\n
\r\n {alerts}\r\n
\r\n );\r\n}\r\n\r\nconst Wrapped = withDefaultStyles(Warning, getStyle);\r\nexport { Wrapped as Warning };\r\n","\r\n\r\nconst defaultTimeRange = {\r\n Hourly: 'LastMonth',\r\n HourOfDay: 'LastMonth',\r\n Daily: 'LastMonth',\r\n DayOfWeek: 'LastMonth',\r\n Weekly: 'LastMonth',\r\n Monthly: 'LastMonth',\r\n Yearly: 'ThisYear',\r\n Summary: 'LastMonth',\r\n};\r\n\r\nexport const getDefaultTimeRange = (timeGrain, reportSchema) => (\r\n reportSchema.TimeRanges ?\r\n reportSchema.TimeRanges[timeGrain][0] :\r\n defaultTimeRange[timeGrain]);\r\n","\r\nexport const dataLengths = {\r\n '14d': '14d',\r\n '30d': '30d',\r\n '1m': '1m',\r\n '90d': '90d',\r\n '2m': '2m',\r\n '6m': '6m',\r\n '12m': '12m',\r\n '24m': '24m',\r\n '36m': '36m',\r\n};\r\n\r\n","import _ from 'underscore';\r\nimport { dataLengths } from './data-persistance-enum';\r\n\r\n/**\r\n * Get Minimum Supported Day\r\n * @param {object} reportSchema - The report object model\r\n * @param {string} timeGrain - current timeGrain\r\n * @param {CivilDate} today today as a civildate\r\n * @param {warningMessage} warningMessage - optional parameter to get message instead of day\r\n * @returns {CivilDate} - a civilDateTime of minmium support\r\n */\r\nexport const getMinimumSupported = (reportSchema, timeGrain, today, warningMessage) => {\r\n const dataRetentionMap = reportSchema.DataRetention;\r\n const dataRetention = dataRetentionMap[timeGrain];\r\n\r\n switch (dataRetention) {\r\n case dataLengths['14d']:\r\n return warningMessage ?\r\n _TL_('Based on the unit of time that you selected, this report will only contain data up to last 14 days.') :\r\n today.plus({ days: -15 });\r\n case dataLengths['1m']:\r\n return warningMessage ?\r\n _TL_('Based on the unit of time that you selected, this report will only contain data up to last 1 month.') :\r\n today.plus({ months: -1 });\r\n case dataLengths['2m']:\r\n return warningMessage ?\r\n _TL_('Based on the unit of time that you selected, this report will only contain data up to last 2 months.') :\r\n today.plus({ months: -2 });\r\n case dataLengths['6m']:\r\n return warningMessage ?\r\n _TL_('Based on the unit of time that you selected, this report will only contain data up to last 6 months.') :\r\n today.plus({ months: -6 });\r\n case dataLengths['24m']:\r\n return warningMessage ?\r\n _TL_('Based on the unit of time that you selected, this report will only contain data up to last 24 months.') :\r\n today.plus({ months: -24 });\r\n case dataLengths['36m']:\r\n return warningMessage ?\r\n _TL_('Based on the unit of time that you selected, this report will only contain data up to last 36 months.') :\r\n today.plus({ months: -36 });\r\n default:\r\n _.defer(() => { throw new RangeError(`getMinimumSupported - dataRetention: ${dataRetention} timeGrain: ${timeGrain} not found on switch statement`); });\r\n return warningMessage ?\r\n _TL_('Based on the unit of time that you selected, this report will only contain data up to last 36 months.') :\r\n today.plus({ months: -36 });\r\n }\r\n};\r\n\r\n/**\r\n * Get Minimum Supported Day\r\n * @param {object} reportSchema - The report object model\r\n * @param {string} timeGrain - current timeGrain\r\n * @param {CivilDate} today today as a civildate\r\n * @returns {CivilDate} - a civilDateTime of minmium support\r\n */\r\nexport const getMinimumSupportedDay =\r\n (reportSchema, timeGrain, today) => getMinimumSupported(reportSchema, timeGrain, today, false);\r\n\r\n/**\r\n * Get Minimum Supported warningMessage\r\n * @param {object} reportSchema - The report object model\r\n * @param {string} timeGrain - current timeGrain\r\n * @param {CivilDate} today today as a civildate\r\n * @returns {CivilDate} - a civilDateTime of minmium support\r\n */\r\nexport const getMinimumSupportedWarning =\r\n (reportSchema, timeGrain, today) => getMinimumSupported(reportSchema, timeGrain, today, true);\r\n","import _ from 'underscore';\r\n\r\nexport const timeGrainRangeOptions = {\r\n Hourly: [\r\n 'Today',\r\n 'Yesterday',\r\n 'LastSevenDays',\r\n 'LastFourteenDays',\r\n 'LastThirtyDays',\r\n 'ThisWeekFromSun',\r\n 'ThisWeekFromMon',\r\n 'LastWeekStartingSun',\r\n 'LastWeekStartingMon',\r\n 'LastFourWeeksStartingSun',\r\n 'LastFourWeeksStartingMon',\r\n 'ThisMonth',\r\n 'LastMonth',\r\n 'LastThreeMonths',\r\n 'LastSixMonths',\r\n 'Custom',\r\n ],\r\n HourOfDay: [\r\n 'Today',\r\n 'Yesterday',\r\n 'LastSevenDays',\r\n 'LastFourteenDays',\r\n 'LastThirtyDays',\r\n 'ThisWeekFromSun',\r\n 'ThisWeekFromMon',\r\n 'LastWeekStartingSun',\r\n 'LastWeekStartingMon',\r\n 'LastFourWeeksStartingSun',\r\n 'LastFourWeeksStartingMon',\r\n 'ThisMonth',\r\n 'LastMonth',\r\n 'LastThreeMonths',\r\n 'LastSixMonths',\r\n 'Custom',\r\n ],\r\n Daily: [\r\n 'Today',\r\n 'Yesterday',\r\n 'LastSevenDays',\r\n 'LastFourteenDays',\r\n 'LastThirtyDays',\r\n 'ThisWeekFromSun',\r\n 'ThisWeekFromMon',\r\n 'LastWeekStartingSun',\r\n 'LastWeekStartingMon',\r\n 'LastFourWeeksStartingSun',\r\n 'LastFourWeeksStartingMon',\r\n 'ThisMonth',\r\n 'LastMonth',\r\n 'LastThreeMonths',\r\n 'LastSixMonths',\r\n 'ThisYear',\r\n 'LastYear',\r\n 'AllTime',\r\n 'Custom',\r\n ],\r\n DayOfWeek: [\r\n 'Today',\r\n 'Yesterday',\r\n 'LastSevenDays',\r\n 'LastFourteenDays',\r\n 'LastThirtyDays',\r\n 'LastFourWeeksStartingSun',\r\n 'LastFourWeeksStartingMon',\r\n 'ThisMonth',\r\n 'LastMonth',\r\n 'LastThreeMonths',\r\n 'LastSixMonths',\r\n 'ThisYear',\r\n 'LastYear',\r\n 'AllTime',\r\n 'Custom',\r\n ],\r\n Weekly: [\r\n 'LastThirtyDays',\r\n 'ThisWeekFromSun',\r\n 'ThisWeekFromMon',\r\n 'LastWeekStartingSun',\r\n 'LastWeekStartingMon',\r\n 'LastFourWeeksStartingSun',\r\n 'LastFourWeeksStartingMon',\r\n 'ThisMonth',\r\n 'LastMonth',\r\n 'LastThreeMonths',\r\n 'LastSixMonths',\r\n 'ThisYear',\r\n 'LastYear',\r\n 'AllTime',\r\n 'Custom',\r\n ],\r\n WeeklyStartingMonday: [\r\n 'LastThirtyDays',\r\n 'ThisWeekFromSun',\r\n 'ThisWeekFromMon',\r\n 'LastWeekStartingSun',\r\n 'LastWeekStartingMon',\r\n 'LastFourWeeksStartingSun',\r\n 'LastFourWeeksStartingMon',\r\n 'ThisMonth',\r\n 'LastMonth',\r\n 'LastThreeMonths',\r\n 'LastSixMonths',\r\n 'ThisYear',\r\n 'LastYear',\r\n 'AllTime',\r\n 'Custom',\r\n ],\r\n Monthly: [\r\n 'ThisMonth',\r\n 'LastMonth',\r\n 'LastThreeMonths',\r\n 'LastSixMonths',\r\n 'ThisYear',\r\n 'LastYear',\r\n 'AllTime',\r\n 'Custom',\r\n ],\r\n Yearly: [\r\n 'ThisYear',\r\n 'LastYear',\r\n 'AllTime',\r\n 'Custom',\r\n ],\r\n Summary: [\r\n 'Today',\r\n 'Yesterday',\r\n 'LastSevenDays',\r\n 'LastFourteenDays',\r\n 'LastThirtyDays',\r\n 'ThisWeekFromSun',\r\n 'ThisWeekFromMon',\r\n 'LastWeekStartingSun',\r\n 'LastWeekStartingMon',\r\n 'LastFourWeeksStartingSun',\r\n 'LastFourWeeksStartingMon',\r\n 'ThisMonth',\r\n 'LastMonth',\r\n 'LastThreeMonths',\r\n 'LastSixMonths',\r\n 'ThisYear',\r\n 'LastYear',\r\n 'AllTime',\r\n 'Custom',\r\n ],\r\n};\r\n\r\nexport const dataRetentionBlackList = {\r\n '90d': {\r\n Summary: [],\r\n Daily: [],\r\n Weekly: [],\r\n Monthly: [],\r\n Yearly: [],\r\n DayOfWeek: [],\r\n WeeklyStartingMonday: [],\r\n },\r\n '30d': {\r\n Hourly: [],\r\n HourOfDay: [],\r\n Summary: ['LastSixMonths', 'LastThreeMonths'],\r\n Daily: ['LastSixMonths', 'LastThreeMonths'],\r\n Weekly: ['LastSixMonths', 'LastThreeMonths'],\r\n Monthly: ['LastSixMonths', 'LastThreeMonths'],\r\n Yearly: [],\r\n WeeklyStartingMonday: ['LastSixMonths', 'LastThreeMonths'],\r\n },\r\n '36m': {\r\n Summary: [],\r\n Daily: [],\r\n Weekly: [],\r\n Monthly: [],\r\n Yearly: [],\r\n DayOfWeek: [],\r\n WeeklyStartingMonday: [],\r\n },\r\n '6m': {\r\n Hourly: [],\r\n HourOfDay: [],\r\n Summary: ['LastYear'],\r\n Daily: ['LastYear'],\r\n Weekly: ['LastYear'],\r\n Monthly: ['LastYear'],\r\n Yearly: [],\r\n WeeklyStartingMonday: ['LastYear'],\r\n },\r\n '24m': {\r\n Daily: [],\r\n },\r\n '1m': {\r\n Hourly: ['LastSixMonths'],\r\n HourOfDay: ['LastSixMonths'],\r\n },\r\n '14d': {\r\n Hourly: ['LastSixMonths'],\r\n HourOfDay: ['LastSixMonths'],\r\n },\r\n '2m': {\r\n Hourly: ['LastSixMonths'],\r\n HourOfDay: ['LastThreeMonths'],\r\n },\r\n};\r\n\r\nexport const getAllowedRanges = (timeGrain, reportSchema) => {\r\n const blackList = dataRetentionBlackList[reportSchema.DataRetention[timeGrain]][timeGrain];\r\n return reportSchema.TimeRanges ?\r\n reportSchema.TimeRanges[timeGrain] :\r\n _.difference(timeGrainRangeOptions[timeGrain], blackList);\r\n};\r\n","import { CivilDate } from 'tc39-proposal-temporal';\r\n\r\n/**\r\n * isCivilDateGreaterThanEqual\r\n * @param {CivilDate} value - value\r\n * @param {CivilDate} date2 - date to compare against\r\n * @returns {bool} - is value > param\r\n */\r\nexport function isCivilDateGreaterThanEqual(value, date2) {\r\n const newDate1 = new Date(value.year, value.month - 1, value.day);\r\n const newDate2 = new Date(date2.year, date2.month - 1, date2.day);\r\n return !!(newDate1 >= newDate2);\r\n}\r\n\r\n/**\r\n * isCivilDateGreaterThan\r\n * @param {CivilDate} value - value\r\n * @param {CivilDate} date2 - date to compare against\r\n * @returns {bool} - is value > param\r\n */\r\nexport function isCivilDateGreaterThan(value, date2) {\r\n const newDate1 = new Date(value.year, value.month - 1, value.day);\r\n const newDate2 = new Date(date2.year, date2.month - 1, date2.day);\r\n return !!(newDate1 > newDate2);\r\n}\r\n\r\nconst regex = /(\\d*)-(\\d*)-(\\d*)/;\r\nexport function getCivilDateFromString(value) {\r\n const temp = regex.exec(value);\r\n return new CivilDate(temp[1], temp[2], temp[3]);\r\n}\r\n\r\nexport function trimDate(value, today) {\r\n return isCivilDateGreaterThan(value, today) ?\r\n today :\r\n value;\r\n}\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport ReportingProps from '@bingads-webui-campaign-react/props-reporting';\r\n\r\nconst titleMap = {\r\n true: _TL_('Update {{type}} report'),\r\n false: _TL_('Create {{type}} report'),\r\n};\r\n\r\nexport function Title(props) {\r\n const { i18n, type, isUpdateReport } = props;\r\n\r\n return (\r\n \r\n {i18n.getString(titleMap[isUpdateReport], { type })}\r\n \r\n );\r\n}\r\n\r\n\r\nTitle.propTypes = {\r\n type: PropTypes.string.isRequired,\r\n // eslint-disable-next-line react/no-typos\r\n i18n: ReportingProps.i18n.isRequired,\r\n isUpdateReport: PropTypes.bool.isRequired,\r\n};\r\n","import React from 'react';\r\nimport ReportingProps from '@bingads-webui-campaign-react/props-reporting';\r\nimport _ from 'underscore';\r\n\r\nexport function Description(props) {\r\n const { description, i18n } = props;\r\n\r\n if (_.isObject(description)) {\r\n return (\r\n \r\n
\r\n {i18n.getString(_TL_('What it shows: '))}{description.what}\r\n
\r\n
\r\n {i18n.getString(_TL_('Why run it: '))}{description.why}\r\n
\r\n {\r\n _.has(description, 'note') &&\r\n (\r\n
\r\n {i18n.getString(_TL_('Note: '))}{description.note}\r\n
\r\n )\r\n }\r\n\r\n
\r\n );\r\n }\r\n\r\n return (\r\n
\r\n {description}\r\n
\r\n );\r\n}\r\n\r\nDescription.propTypes = {\r\n // eslint-disable-next-line react/no-typos\r\n i18n: ReportingProps.i18n.isRequired,\r\n // eslint-disable-next-line react/no-typos\r\n description: ReportingProps.reportDescription.isRequired,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport ReportingProps from '@bingads-webui-campaign-react/props-reporting';\r\nimport _ from 'underscore';\r\nimport { Select } from '@bingads-webui-react/primitive';\r\nimport { withValidation } from '@bingads-webui-react/validation';\r\n\r\n\r\nconst GenericSelector = React.memo(({\r\n value, onChange, i18n, options, id, disabled, ariaLabelledByID,\r\n}) => {\r\n const optionsJsx = _.keys(options).map(key =>\r\n (\r\n \r\n ));\r\n\r\n return (\r\n \r\n );\r\n});\r\n\r\nGenericSelector.propTypes = {\r\n onChange: PropTypes.func.isRequired,\r\n i18n: ReportingProps.i18n.isRequired,\r\n options: PropTypes.objectOf(PropTypes.string.isRequired).isRequired,\r\n id: PropTypes.string.isRequired,\r\n value: PropTypes.string.isRequired,\r\n disabled: PropTypes.bool,\r\n ariaLabelledByID: PropTypes.string,\r\n};\r\n\r\nGenericSelector.defaultProps = {\r\n disabled: false,\r\n ariaLabelledByID: '',\r\n};\r\n\r\nconst Wrapped = withValidation(GenericSelector);\r\nexport { Wrapped as GenericSelector };\r\n","import React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport ReportingProps from '@bingads-webui-campaign-react/props-reporting';\r\nimport _ from 'underscore';\r\nimport { Input, ValidationGroup } from '@bingads-webui-react/primitive-validation';\r\nimport { withPermissionContext } from '@bingads-webui-campaign/report-shared';\r\nimport { Grid, GridItem } from '../../components';\r\nimport { Title } from './title';\r\nimport { Description } from './description';\r\nimport { GenericSelector } from '../../components/shared/generic-selector';\r\n\r\nclass RootSection extends Component {\r\n static validationSchema = {\r\n name: 'CreateReport - Root Section Schema',\r\n type: 'object',\r\n properties: {\r\n name: {\r\n type: 'string',\r\n // minLength: 2, -- not supported\r\n required: true,\r\n maxLength: 200,\r\n },\r\n renderType: {\r\n type: 'string',\r\n },\r\n },\r\n }\r\n\r\n onValidate = (result) => {\r\n const data = _.extend(result.data, { isValid: result.isValid });\r\n this.props.setData(data);\r\n }\r\n\r\n render() {\r\n const {\r\n getValidationItemProps, reportDefinition, i18n, data, classes, permissions, renderTypes,\r\n isUpdateReport,\r\n } = this.props;\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n {\r\n permissions.IsReportingUIReportChartsEnabled &&\r\n _.keys(renderTypes).length > 1 && (\r\n \r\n \r\n \r\n )\r\n }\r\n \r\n
\r\n
);\r\n }\r\n}\r\n\r\n/* eslint-disable react/no-typos */\r\nRootSection.propTypes = {\r\n getValidationItemProps: PropTypes.func.isRequired,\r\n i18n: ReportingProps.i18n.isRequired,\r\n reportDefinition: ReportingProps.reportDefinition.isRequired,\r\n data: PropTypes.object.isRequired, // eslint-disable-line\r\n setData: PropTypes.func.isRequired,\r\n classes: PropTypes.objectOf(PropTypes.string.isRequired).isRequired,\r\n permissions: ReportingProps.permissions.isRequired,\r\n renderTypes: PropTypes.objectOf(PropTypes.string.isRequired).isRequired,\r\n isUpdateReport: PropTypes.bool.isRequired,\r\n};\r\n\r\nconst Wrapped = withPermissionContext(RootSection);\r\nexport { Wrapped as RootSection };\r\n","import _ from 'underscore';\r\nimport React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport ReportingProps from '@bingads-webui-campaign-react/props-reporting';\r\nimport { AdapterFactory, withValidation, withError } from '@bingads-webui-react/validation';\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\nimport { withIdentityContext, withPermissionContext, withServicesEndpointsConsumer } from '@bingads-webui-campaign/report-shared';\r\nimport { AccountCampaignSelector as RawSelector } from '@bingads-webui-campaign/account-campaign-selector';\r\nimport { ScopeFilterLevel, getScopeFilterLevel } from '../../../config';\r\n\r\nclass AccountCampaignSelector extends Component {\r\n shouldComponentUpdate() {\r\n // Fully uncontrolled component\r\n return false;\r\n }\r\n\r\n render() {\r\n const {\r\n permissions: {\r\n IsReportingUINewDesignEnabled,\r\n IsReportingUIPhaseNext,\r\n },\r\n servicesEndpoints: {\r\n CampaignAPI: odataURI,\r\n ClientCenterUIAPI: ccBaseUrl,\r\n Token: ccToken,\r\n },\r\n identityDetails: {\r\n customer: {\r\n Id: customerId,\r\n },\r\n user: {\r\n Id: userId,\r\n },\r\n account: {\r\n Id: accountId,\r\n } = {},\r\n },\r\n i18n,\r\n value,\r\n onChange,\r\n classes,\r\n reportSchema,\r\n isInternalUser,\r\n finishedLoading,\r\n } = this.props;\r\n\r\n const isCreateSimilar = !_.isEmpty(value);\r\n const defaultSelected = _.isEmpty(value) ? undefined : value;\r\n const scopeFilterLevel = getScopeFilterLevel(reportSchema.ScopeFilterLevel);\r\n\r\n if ((scopeFilterLevel === ScopeFilterLevel.Account) &&\r\n IsReportingUIPhaseNext && accountId) {\r\n return (\r\n
\r\n {i18n.getString(_TL_('Current account'))}\r\n
\r\n );\r\n }\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nAccountCampaignSelector.propTypes = {\r\n classes: PropTypes.objectOf(PropTypes.string).isRequired,\r\n // eslint-disable-next-line react/forbid-prop-types\r\n value: PropTypes.object.isRequired,\r\n onChange: PropTypes.func.isRequired,\r\n permissions: ReportingProps.permissions.isRequired,\r\n identityDetails: ReportingProps.identityDetails.isRequired,\r\n reportSchema: ReportingProps.reportSchema.isRequired,\r\n servicesEndpoints: ReportingProps.servicesEndpoints.isRequired,\r\n i18n: ReportingProps.i18n.isRequired,\r\n isInternalUser: PropTypes.bool.isRequired,\r\n finishedLoading: PropTypes.func.isRequired,\r\n};\r\n\r\nconst hocs = [\r\n withIdentityContext,\r\n withPermissionContext,\r\n withServicesEndpointsConsumer,\r\n withI18nConsumer,\r\n withError,\r\n _.partial(withValidation, _, AdapterFactory({})),\r\n];\r\n\r\nconst Wrapped = _.compose(...hocs)(AccountCampaignSelector);\r\n\r\nexport { Wrapped as AccountCampaignSelector };\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport ReportingProps from '@bingads-webui-campaign-react/props-reporting';\r\nimport _ from 'underscore';\r\nimport { Select } from '@bingads-webui-react/primitive';\r\nimport { withValidation } from '@bingads-webui-react/validation';\r\nimport { timeGrains } from '../../config';\r\n\r\nconst TimeGrainSelector = React.memo(({\r\n value, onChange, i18n,\r\n reportSchema: {\r\n ReportAggregation:\r\n { enum: schemaTimeGrains },\r\n },\r\n renderType,\r\n ariaLabelledBy,\r\n}) => {\r\n const id = 'timeGrain';\r\n let allowedTimeGrains = _.intersection(_.keys(timeGrains), schemaTimeGrains);\r\n\r\n // Linechart doesn't allow 'Summary' as an option\r\n if (renderType === 'Linechart') {\r\n allowedTimeGrains = _.without(allowedTimeGrains, 'Summary');\r\n }\r\n\r\n const options = _.map(allowedTimeGrains).map(key =>\r\n (\r\n \r\n ));\r\n\r\n return (\r\n \r\n );\r\n});\r\n\r\nTimeGrainSelector.propTypes = {\r\n value: PropTypes.string.isRequired,\r\n onChange: PropTypes.func.isRequired,\r\n i18n: ReportingProps.i18n.isRequired,\r\n reportSchema: ReportingProps.reportSchema.isRequired,\r\n renderType: PropTypes.string.isRequired,\r\n ariaLabelledBy: PropTypes.string,\r\n};\r\n\r\nTimeGrainSelector.defaultProps = {\r\n ariaLabelledBy: undefined,\r\n};\r\n\r\nconst Wrapped = withValidation(TimeGrainSelector);\r\nexport { Wrapped as TimeGrainSelector };\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport ReportingProps from '@bingads-webui-campaign-react/props-reporting';\r\nimport _ from 'underscore';\r\nimport { toIANATimeZone } from '@bingads-webui-universal/time-zone-converter';\r\nimport { ComparedDateRangePicker } from '@bingads-webui-react/compared-date-range-picker';\r\nimport { AdapterFactory, withValidation } from '@bingads-webui-react/validation';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { withIdentityContext } from '@bingads-webui-campaign/report-shared';\r\nimport * as putil from '@bingads-webui-universal/primitive-utilities';\r\nimport { getMinimumSupportedDay,\r\n getCivilDateFromString,\r\n getMinimumSupportedWarning,\r\n getFilteredTimeRanges,\r\n isCivilDateGreaterThanEqual } from '../../../config/time-ranges/index';\r\nimport { getStyle } from './time-range-style';\r\n\r\n// eslint-disable-next-line\r\nTimeRangeSelectorBase.propTypes = {\r\n value: PropTypes.shape({\r\n key: PropTypes.string.isRequired,\r\n start: PropTypes.string,\r\n end: PropTypes.string,\r\n }).isRequired,\r\n classes: PropTypes.shape({}).isRequired,\r\n setWarning: PropTypes.func.isRequired,\r\n timeGrain: PropTypes.string.isRequired,\r\n timeZone: PropTypes.string.isRequired,\r\n today: PropTypes.shape({\r\n day: PropTypes.number.isRequired,\r\n month: PropTypes.number.isRequired,\r\n year: PropTypes.number.isRequired,\r\n }).isRequired,\r\n onChange: PropTypes.func.isRequired,\r\n i18n: ReportingProps.i18n.isRequired,\r\n reportSchema: ReportingProps.reportSchema,\r\n getFilteredRanges: PropTypes.func,\r\n getMinimumDay: PropTypes.func,\r\n getMinimumWarning: PropTypes.func,\r\n identityDetails: ReportingProps.identityDetails.isRequired,\r\n};\r\n\r\nfunction TimeRangeSelectorBase({\r\n value, classes, onChange, getFilteredRanges, getMinimumDay, getMinimumWarning,\r\n i18n, reportSchema, setWarning, timeGrain, timeZone, today, identityDetails,\r\n}) {\r\n const dateFormat = putil.get(identityDetails, 'user.CultureDateTimeFormat.ShortDatePattern');\r\n const ianaTimeZone = toIANATimeZone(timeZone);\r\n const minSupportedDay = getMinimumDay(reportSchema, timeGrain, today);\r\n const specificRanges = getFilteredRanges(timeGrain, today, minSupportedDay, reportSchema, i18n);\r\n const selectedTimeRange = value.key;\r\n let startDate;\r\n let endDate;\r\n let selectedRangeId = 4;\r\n\r\n const allowedTimeRanges = {};\r\n _.each(specificRanges, (node) => { allowedTimeRanges[node.key] = node; });\r\n\r\n if (selectedTimeRange !== 'Custom') {\r\n startDate = allowedTimeRanges[selectedTimeRange].range.start;\r\n endDate = allowedTimeRanges[selectedTimeRange].range.end;\r\n selectedRangeId = allowedTimeRanges[selectedTimeRange].rangeId;\r\n } else {\r\n startDate = getCivilDateFromString(value.start);\r\n endDate = getCivilDateFromString(value.end);\r\n }\r\n\r\n const onPickDateRanges = (result) => {\r\n const { rangeType, selectedRange } = result;\r\n\r\n // If the event payload is invalid, ignore.\r\n if (!rangeType || !selectedRange) {\r\n return;\r\n }\r\n\r\n if (isCivilDateGreaterThanEqual(minSupportedDay, selectedRange.start)) {\r\n const warningMessage = i18n.getString(getMinimumWarning(reportSchema, timeGrain, today));\r\n setWarning(warningMessage);\r\n } else {\r\n setWarning(undefined);\r\n }\r\n if (rangeType.key === 'Custom') {\r\n onChange({\r\n key: rangeType.key,\r\n start: selectedRange.start.toString(),\r\n end: selectedRange.end.toString(),\r\n });\r\n } else {\r\n onChange({\r\n key: rangeType.key,\r\n start: undefined,\r\n end: undefined,\r\n });\r\n }\r\n };\r\n return (\r\n
\r\n \r\n
\r\n );\r\n}\r\n\r\nTimeRangeSelectorBase.defaultProps = {\r\n reportSchema: {},\r\n getFilteredRanges: getFilteredTimeRanges,\r\n getMinimumDay: getMinimumSupportedDay,\r\n getMinimumWarning: getMinimumSupportedWarning,\r\n};\r\n\r\nfunction areEqual(prevProps, nextProps) {\r\n return prevProps.timeGrain === nextProps.timeGrain &&\r\n prevProps.timeZone === nextProps.timeZone;\r\n}\r\n\r\nconst TimeRangeSelectorWithMemo = React.memo(TimeRangeSelectorBase, areEqual);\r\nconst TimeRangeSelectorWithValidation =\r\n withValidation(TimeRangeSelectorWithMemo, AdapterFactory({}));\r\nconst TimeRangeSelectorWithIdentityContext = withIdentityContext(TimeRangeSelectorWithValidation);\r\nconst TimeRangeSelectorWithStyle =\r\n withDefaultStyles(TimeRangeSelectorWithIdentityContext, getStyle);\r\n\r\nexport { TimeRangeSelectorWithMemo as TimeRangeSelectorBase };\r\nexport { TimeRangeSelectorWithStyle as TimeRangeSelector };\r\n","import _ from 'underscore';\r\nimport {\r\n getCivilDateDayOfWeek,\r\n getCivilDateMonthStart,\r\n} from '@bingads-webui-universal/temporal-utitlities';\r\nimport { i18nMap } from '@bingads-webui-campaign/report-shared';\r\nimport { getAllowedRanges } from './time-grain-range-options';\r\n\r\n/**\r\n * getTimeRanges\r\n * @param {CivilDate} minSupportDay minimumSupportedDay\r\n * @param {CivilDate} today today as a civildate\r\n * @param {string} i18n i18n module\r\n * @returns {array} - array of date ranges formated for picker\r\n */\r\nexport const getTimeRanges = (minSupportDay, today, i18n) => {\r\n const daysAwayFromMonday = getCivilDateDayOfWeek(today) ? getCivilDateDayOfWeek(today) - 1 : 6;\r\n\r\n const yesterday = today.plus({ days: -1 });\r\n const sevenDaysAgo = today.plus({ days: -7 });\r\n const fourteenDaysAgo = today.plus({ days: -14 });\r\n const thirtyDaysAgo = today.plus({ days: -30 });\r\n const thisSunday = today.plus({ days: -getCivilDateDayOfWeek(today) });\r\n const thisMonday = today.plus({ days: -daysAwayFromMonday });\r\n const thisMonthFirstDay = getCivilDateMonthStart(today);\r\n const lastMonthlastDay = thisMonthFirstDay.plus({ days: -1 });\r\n const lastMonthFirstDay = getCivilDateMonthStart(lastMonthlastDay);\r\n const lastTwoMonthlastDay = lastMonthFirstDay.plus({ days: -1 });\r\n const lastTwoMonthFirstDay = getCivilDateMonthStart(lastTwoMonthlastDay);\r\n const firstDayOfYear = today.with({ day: 1, month: 1 });\r\n\r\n const rawRanges = [\r\n {\r\n /* Custom Time Range must have Id = 4 */\r\n rangeId: 4, key: 'Custom', range: { start: undefined, end: undefined },\r\n },\r\n {\r\n rangeId: 1, key: 'Today', range: { start: today, end: today },\r\n },\r\n {\r\n rangeId: 2, key: 'Yesterday', range: { start: yesterday, end: yesterday },\r\n },\r\n {\r\n rangeId: 3, key: 'LastSevenDays', range: { start: sevenDaysAgo, end: yesterday },\r\n },\r\n {\r\n rangeId: 0, key: 'LastFourteenDays', range: { start: fourteenDaysAgo, end: yesterday },\r\n },\r\n {\r\n rangeId: 5, key: 'LastThirtyDays', range: { start: thirtyDaysAgo, end: yesterday },\r\n },\r\n {\r\n rangeId: 6, key: 'ThisWeekFromSun', range: { start: thisSunday, end: today },\r\n },\r\n {\r\n rangeId: 7, key: 'ThisWeekFromMon', range: { start: thisMonday, end: today },\r\n },\r\n {\r\n rangeId: 8, key: 'LastWeekStartingSun', range: { start: thisSunday.plus({ days: -7 }), end: thisSunday.plus({ days: -1 }) },\r\n },\r\n {\r\n rangeId: 9, key: 'LastWeekStartingMon', range: { start: thisMonday.plus({ days: -7 }), end: thisMonday.plus({ days: -1 }) },\r\n },\r\n {\r\n rangeId: 10, key: 'LastFourWeeksStartingSun', range: { start: thisSunday.plus({ days: -28 }), end: thisSunday.plus({ days: -1 }) },\r\n },\r\n {\r\n rangeId: 11, key: 'LastFourWeeksStartingMon', range: { start: thisMonday.plus({ days: -28 }), end: thisMonday.plus({ days: -1 }) },\r\n },\r\n {\r\n rangeId: 23, key: 'LastSixWeeksStartingSun', range: { start: thisSunday.plus({ days: -42 }), end: thisSunday.plus({ days: -1 }) },\r\n },\r\n {\r\n rangeId: 22, key: 'LastSixWeeksStartingMon', range: { start: thisMonday.plus({ days: -42 }), end: thisMonday.plus({ days: -1 }) },\r\n },\r\n {\r\n rangeId: 12, key: 'ThisMonth', range: { start: thisMonthFirstDay, end: today },\r\n },\r\n {\r\n rangeId: 13, key: 'LastMonth', range: { start: lastMonthFirstDay, end: lastMonthlastDay },\r\n },\r\n {\r\n rangeId: 20, key: 'LastTwoMonths', range: { start: lastTwoMonthFirstDay, end: lastMonthlastDay },\r\n },\r\n {\r\n rangeId: 14, key: 'LastThreeMonths', range: { start: lastMonthFirstDay.plus({ months: -2 }), end: lastMonthlastDay },\r\n },\r\n {\r\n rangeId: 15, key: 'LastSixMonths', range: { start: lastMonthFirstDay.plus({ months: -5 }), end: lastMonthlastDay },\r\n },\r\n {\r\n rangeId: 16, key: 'ThisYear', range: { start: firstDayOfYear, end: today },\r\n },\r\n {\r\n rangeId: 17, key: 'LastYear', range: { start: today.with({ day: 1, month: 1, year: today.year - 1 }), end: firstDayOfYear.plus({ days: -1 }) },\r\n },\r\n {\r\n rangeId: 21, key: 'LastTwoYears', range: { start: today.with({ day: 1, month: 1, year: today.year - 2 }), end: firstDayOfYear.plus({ days: -1 }) },\r\n },\r\n {\r\n rangeId: 18, key: 'AllTime', range: { start: minSupportDay, end: today },\r\n },\r\n ];\r\n const localizedRanges = _.map(rawRanges, (range) => {\r\n const englishString = i18nMap.DateRangePreset[range.key];\r\n const localizedString = i18n.getString(englishString);\r\n\r\n return {\r\n ...range,\r\n text: localizedString,\r\n };\r\n });\r\n\r\n return localizedRanges;\r\n};\r\n\r\n/**\r\n * getFilteredTimeRanges\r\n * @param {string} timeGrain timeGrain Value\r\n * @param {CivilDate} today today as a civildate\r\n * @param {CivilDate} minSupportedDay minSupportedDay as a civildate\r\n * @param {object} reportSchema schema for the report *\r\n * @param {string} i18n i18n module\r\n * @returns {array} - array of date ranges formated for picker\r\n * filtered by timeGrain\r\n */\r\nexport const getFilteredTimeRanges = (timeGrain, today, minSupportedDay, reportSchema, i18n) => {\r\n const specificRanges = getTimeRanges(minSupportedDay, today, i18n);\r\n const rangeOptions = getAllowedRanges(timeGrain, reportSchema);\r\n const supportedOptions =\r\n _.object(rangeOptions, rangeOptions);\r\n return _.filter(specificRanges, node => _.has(supportedOptions, node.key));\r\n};\r\n","\r\nexport function getStyle() {\r\n return {\r\n timeRangeSelector: {\r\n '& .compared-date-range-picker .compared-date-range-picker-input': {\r\n float: 'none!important',\r\n },\r\n '& .compared-date-range-picker-dialog': {\r\n top: 'auto!important',\r\n right: 'auto!important',\r\n left: 'auto!important',\r\n 'webkit-animation': 'none',\r\n animation: 'none',\r\n },\r\n },\r\n };\r\n}\r\n","import _ from 'underscore';\r\nimport { ScopeFilterLevel, getScopeFilterLevel } from '../../../config';\r\n\r\nexport function shouldShowUserScopeInput(mtScopeFilterLevel) {\r\n return getScopeFilterLevel(mtScopeFilterLevel) === ScopeFilterLevel.User;\r\n}\r\n\r\nexport function shouldShowSelector(mtScopeFilterLevel) {\r\n return _.contains([\r\n ScopeFilterLevel.Customer,\r\n ScopeFilterLevel.Account,\r\n ScopeFilterLevel.Campaign,\r\n ], getScopeFilterLevel(mtScopeFilterLevel));\r\n}\r\n","import { CivilDate } from 'tc39-proposal-temporal';\r\nimport { toIANATimeZone } from '@bingads-webui-universal/time-zone-converter';\r\n\r\nexport function getToday(i18n, timeZone) {\r\n const today = i18n.getToday({ timeZone: toIANATimeZone(timeZone) });\r\n const civilDate = new CivilDate(today.year, today.month, today.day);\r\n\r\n return civilDate;\r\n}\r\n","import React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport ReportingProps from '@bingads-webui-campaign-react/props-reporting';\r\nimport _ from 'underscore';\r\nimport { Input, ValidationGroup } from '@bingads-webui-react/primitive-validation';\r\nimport { timeZones } from '@bingads-webui/timezone-details';\r\nimport { AccountCampaignSelector, accountCampaignValidator } from './account-campaign-selector/';\r\nimport { GridItem, Grid } from '../../components';\r\nimport { GenericSelector } from '../../components/shared/generic-selector';\r\nimport { TimeGrainSelector } from './time-grain-selector';\r\nimport { TimeRangeSelector } from './time-range/time-range-selector';\r\nimport { fileFormats } from '../../config';\r\nimport { getDefaultTimeRange, getCivilDateFromString, getAllowedRanges, trimDate } from '../../config/time-ranges';\r\nimport { shouldShowUserScopeInput, shouldShowSelector } from './account-campaign-selector/scope-filter-level';\r\nimport { getToday } from './time-range/time-range-helper';\r\n\r\n\r\nclass GeneralSection extends Component {\r\n static validationSchema = {\r\n name: 'CreateReport - General Section Schema',\r\n type: 'object',\r\n properties: {\r\n accountCampaignSelector: {\r\n type: 'any',\r\n },\r\n userScopes: {\r\n type: 'number',\r\n required: true,\r\n },\r\n format: {\r\n type: 'string',\r\n },\r\n timeGrain: {\r\n type: 'string',\r\n },\r\n timeRange: {\r\n type: 'any',\r\n },\r\n timeZone: {\r\n type: 'string',\r\n },\r\n },\r\n }\r\n\r\n constructor(props) {\r\n super(props);\r\n const { i18n } = props;\r\n this.setToday(props.data.timeZone);\r\n this.radioValues = [true, false];\r\n this.getRadioId = (item, index) => ['all', 'specific'][index];\r\n this.radioOptions = (item, index) =>\r\n [i18n.getString(_TL_('All accounts and campaigns')), i18n.getString(_TL_('Specific accounts and campaigns'))][index];\r\n }\r\n\r\n onValidate = (result) => {\r\n const data = _.extend(result.data, { isValid: result.isValid });\r\n if (data.timeGrain && data.timeGrain !== this.props.data.timeGrain) {\r\n const currentRange = this.props.data.timeRange.key;\r\n const allowedRanges = getAllowedRanges(data.timeGrain, this.props.reportSchema);\r\n if (!_.contains(allowedRanges, currentRange)) {\r\n data.timeRange = {\r\n key: getDefaultTimeRange(data.timeGrain, this.props.reportSchema),\r\n start: undefined,\r\n end: undefined,\r\n };\r\n }\r\n }\r\n if (data.timeZone && data.timeZone !== this.props.data.timeZone) {\r\n this.setToday(data.timeZone);\r\n const currentRange = this.props.data.timeRange;\r\n if (currentRange.key === 'Custom') {\r\n const startDate = getCivilDateFromString(currentRange.start);\r\n const endDate = getCivilDateFromString(currentRange.end);\r\n data.timeRange = {\r\n key: currentRange.key,\r\n start: trimDate(startDate, this.today).toString(),\r\n end: trimDate(endDate, this.today).toString(),\r\n };\r\n }\r\n }\r\n this.props.setData(data);\r\n }\r\n\r\n setToday = (timeZone) => {\r\n this.today = getToday(this.props.i18n, timeZone);\r\n }\r\n\r\n render() {\r\n const {\r\n classes,\r\n getValidationItemProps,\r\n i18n,\r\n data,\r\n reportSchema,\r\n setWarning,\r\n renderType,\r\n isInternalUser,\r\n disableTimeZoneSelector,\r\n accountCampaignSelectorLoaded,\r\n } = this.props;\r\n\r\n return (\r\n \r\n
\r\n \r\n {\r\n renderType !== 'Barchart' && (\r\n \r\n \r\n \r\n )\r\n }\r\n \r\n setWarning('timeRange', val)}\r\n timeGrain={data.timeGrain}\r\n timeZone={data.timeZone}\r\n today={this.today}\r\n />\r\n \r\n {\r\n disableTimeZoneSelector ?\r\n null :\r\n \r\n \r\n \r\n }\r\n {\r\n renderType === 'Table' && (\r\n \r\n \r\n \r\n )\r\n }\r\n {\r\n shouldShowUserScopeInput(reportSchema.ScopeFilterLevel) ?\r\n \r\n \r\n : null\r\n }\r\n {\r\n shouldShowSelector(reportSchema.ScopeFilterLevel) ?\r\n \r\n accountCampaignValidator(val, i18n) }}\r\n value={data.accountCampaignSelector}\r\n finishedLoading={accountCampaignSelectorLoaded}\r\n />\r\n : null\r\n }\r\n \r\n
\r\n
);\r\n }\r\n}\r\n\r\n/* eslint-disable react/no-typos */\r\nGeneralSection.propTypes = {\r\n isInternalUser: PropTypes.bool.isRequired,\r\n classes: PropTypes.objectOf(PropTypes.string).isRequired,\r\n getValidationItemProps: PropTypes.func.isRequired,\r\n i18n: ReportingProps.i18n.isRequired,\r\n // eslint-disable-next-line react/forbid-prop-types\r\n data: PropTypes.object.isRequired,\r\n setData: PropTypes.func.isRequired,\r\n setWarning: PropTypes.func.isRequired,\r\n reportSchema: ReportingProps.reportSchema.isRequired,\r\n renderType: PropTypes.string.isRequired,\r\n disableTimeZoneSelector: PropTypes.bool,\r\n accountCampaignSelectorLoaded: PropTypes.func.isRequired,\r\n};\r\n\r\nGeneralSection.defaultProps = {\r\n disableTimeZoneSelector: false,\r\n};\r\n\r\nexport { GeneralSection };\r\n","import _ from 'underscore';\r\n\r\nexport const accountCampaignValidator = ({\r\n allSelected, AccountIds, CustomerScopes, CampaignReportScopes,\r\n}, i18n) => {\r\n /* istanbul ignore next */\r\n if (allSelected === undefined && (!AccountIds && !CustomerScopes && !CampaignReportScopes)) {\r\n return [i18n.getString(_TL_('Please wait for the data to load...'))];\r\n } else if (allSelected === false) {\r\n const selectedItems = [].concat(AccountIds, CustomerScopes, CampaignReportScopes);\r\n if (_.isEmpty(selectedItems)) {\r\n return [i18n.getString(_TL_('Select at least one account or campagin'))];\r\n }\r\n }\r\n return [];\r\n};\r\n","import React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport ReportingProps from '@bingads-webui-campaign-react/props-reporting';\r\nimport { BackboneInstanceWrapper } from '@bingads-webui-react/backbone-instance-wrapper';\r\nimport { ColumnChooser as BackboneColumnChooser } from '@bingads-webui/column-chooser';\r\nimport { helpers } from '@bingads-webui/deterministic-view';\r\n\r\nexport class ColumnChooser extends Component {\r\n static propTypes = {\r\n categories: PropTypes.array.isRequired, // eslint-disable-line\r\n currentActive: PropTypes.string.isRequired,\r\n legacyI18n: PropTypes.object.isRequired, // eslint-disable-line\r\n selected: PropTypes.arrayOf(PropTypes.string.isRequired).isRequired,\r\n setData: PropTypes.func.isRequired,\r\n isSplittingSelectedArea: PropTypes.bool.isRequired,\r\n instrumentation: ReportingProps.instrumentation, // eslint-disable-line\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n const {\r\n categories,\r\n selected,\r\n legacyI18n,\r\n isSplittingSelectedArea,\r\n instrumentation,\r\n } = props;\r\n\r\n const cfg = {\r\n categories,\r\n selected,\r\n };\r\n this.state = {\r\n searchStr: '',\r\n };\r\n this.view = new BackboneColumnChooser({\r\n i18n: legacyI18n,\r\n simplified: true,\r\n isSplittingSelectedArea,\r\n instrumentation,\r\n }).setState(cfg);\r\n\r\n this.view.on(\r\n 'hide',\r\n ({\r\n selectedKeys,\r\n currentActive,\r\n searchStr,\r\n } = {}) => {\r\n this.props.setData({ selected: selectedKeys, currentActive, searchStr });\r\n if (!_.isUndefined(searchStr)) {\r\n this.setState({\r\n searchStr,\r\n });\r\n }\r\n }\r\n );\r\n helpers.updateView(this.view, {\r\n isSaveNameEnabled: false,\r\n });\r\n }\r\n\r\n render() {\r\n const { categories, currentActive, selected } = this.props;\r\n const cfg = {\r\n categories,\r\n currentActive,\r\n selected,\r\n external: true,\r\n searchStr: this.state.searchStr,\r\n };\r\n this.view.setState(cfg);\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n}\r\n","import _ from 'underscore';\r\n\r\nconst isAvailable =\r\n (option, exclusionMap) =>\r\n !_.has(exclusionMap, option);\r\n\r\nconst setDisabledColumns = (categories, exclusionSets) => {\r\n const exclusionMap = _.reduce(\r\n exclusionSets,\r\n (memo, node) => _.extend(memo, node),\r\n {}\r\n );\r\n _.forEach(categories, (category) => {\r\n _.forEach(category.options, (option) => {\r\n if (isAvailable(option.key, exclusionMap)) {\r\n if (option.disabled) {\r\n option.disabled = false; // eslint-disable-line\r\n }\r\n } else {\r\n option.disabled = true; // eslint-disable-line\r\n }\r\n });\r\n });\r\n return categories;\r\n};\r\n\r\nexport const resolveExclusionConditions = (exclusionSetsGroups, categories, selected) => {\r\n const offendingSets = [];\r\n _.forEach(exclusionSetsGroups, (exclusionSets) => {\r\n const exclusionSet = _.find(exclusionSets, set =>\r\n _.find(selected, (option) => {\r\n if (_.has(set, option)) {\r\n return true;\r\n }\r\n return false;\r\n }));\r\n\r\n if (exclusionSet) {\r\n offendingSets.push(_.without(exclusionSets, exclusionSet));\r\n }\r\n });\r\n\r\n return setDisabledColumns(categories, _.flatten(offendingSets));\r\n};\r\n\r\nexport const resolveAvailableColumns = (selected, categories) => {\r\n const map = _.object(selected, selected);\r\n const cloneSelected = _.clone(selected);\r\n const available = [];\r\n _.forEach(categories, (category) => {\r\n _.forEach(category.options, (option) => {\r\n if (_.result(option, 'selectOption', '') === 'mandatory' && !_.has(map, option.key)) {\r\n cloneSelected.unshift(option.key);\r\n }\r\n if (!option.disabled) {\r\n available.push(option.key);\r\n }\r\n });\r\n });\r\n\r\n // _intersection to retain order of original array\r\n return _.intersection(cloneSelected, available);\r\n};\r\n\r\n// input exclusion sets with below format:\r\n// {\r\n// MetricColumns: ['a', 'b', 'c'],\r\n// DimensionColumns: ['i', 'j'],\r\n// MetricColumns(.+): ['o', 'p'],\r\n// DimensionColumns(.+): ['r', 's', 't'],\r\n// };\r\n// return formatted exclusion sets with below format:\r\n// {\r\n// Columns: [\r\n// { a: 'a', b: 'b', c: 'c' },\r\n// { i: 'i', j: 'j' },\r\n// ],\r\n// Columns(.+): [\r\n// { o: 'o', p: 'p' },\r\n// { r: 'r', s: 's', t: 't' },\r\n// ],\r\n// };\r\nexport const formatExclusionSets = (exclusionSets) => {\r\n const sets = {};\r\n _.forEach(exclusionSets, (set, key) => {\r\n const matched = key.match(/(Metric|Dimension)(.+)/i);\r\n const groupName = matched[2];\r\n _.defaults(sets, { [groupName]: [] });\r\n sets[groupName].push(_.object(set, set));\r\n });\r\n return sets;\r\n};\r\n","import _ from 'underscore';\r\n\r\nconst isAvailable = (timeGrain, option) => (\r\n !option.forbiddenTimeGrains || !_.contains(option.forbiddenTimeGrains, timeGrain)\r\n);\r\n\r\nexport const filterByTimeGrain = (timeGrain, categories) =>\r\n _.map(categories, (category) => {\r\n const categoryClone = _.clone(category);\r\n categoryClone.options = [];\r\n _.forEach(category.options, (option) => {\r\n if (isAvailable(timeGrain, option)) {\r\n categoryClone.options.push(option);\r\n }\r\n });\r\n return categoryClone;\r\n });\r\n\r\n","export const configs = {\r\n Linechart: {\r\n attributesLimit: 1,\r\n statisticsLimit: 2,\r\n },\r\n Barchart: {\r\n attributesLimit: 1,\r\n statisticsLimit: 2,\r\n },\r\n};\r\n","import _ from 'underscore';\r\nimport { configs } from './configs';\r\n\r\nfunction validate(selectedColumns, columnsLimit, category) {\r\n let resultColumns = selectedColumns;\r\n const resultCategory = category;\r\n if (resultColumns.length >= columnsLimit) {\r\n resultColumns = resultColumns.slice(0, columnsLimit);\r\n\r\n const selectedColumnsSet = {};\r\n resultColumns.forEach((item) => {\r\n selectedColumnsSet[item] = true;\r\n });\r\n\r\n resultCategory.options = _.map(\r\n resultCategory.options,\r\n option => _.defaults({ disabled: !_.has(selectedColumnsSet, option.key) }, option)\r\n );\r\n }\r\n\r\n return {\r\n resultColumns,\r\n resultCategory,\r\n };\r\n}\r\n\r\nexport const resolveChartsColumns = (selected, categories, renderType) => {\r\n if (renderType === 'Table') {\r\n return {\r\n categories,\r\n selected,\r\n };\r\n }\r\n\r\n const attributesSet = {};\r\n categories[0].options.forEach((entry) => {\r\n attributesSet[entry.key] = true;\r\n });\r\n\r\n let selectedAttributes = [];\r\n selected.forEach((item) => {\r\n if (attributesSet[item]) {\r\n selectedAttributes.push(item);\r\n }\r\n });\r\n let selectedStatistics = _.difference(selected, selectedAttributes);\r\n selectedAttributes = _.without(selectedAttributes, 'TimePeriod');\r\n\r\n const { attributesLimit, statisticsLimit } = configs[renderType];\r\n\r\n const resultCategories = categories;\r\n ({\r\n resultColumns: selectedAttributes,\r\n resultCategory: resultCategories[0],\r\n } = validate(selectedAttributes, attributesLimit, categories[0]));\r\n ({\r\n resultColumns: selectedStatistics,\r\n resultCategory: resultCategories[1],\r\n } = validate(selectedStatistics, statisticsLimit, categories[1]));\r\n\r\n if (renderType === 'Linechart') {\r\n selectedAttributes.splice(0, 0, 'TimePeriod');\r\n }\r\n const resultSelected = selectedAttributes.concat(selectedStatistics);\r\n\r\n return {\r\n categories: resultCategories,\r\n selected: resultSelected,\r\n };\r\n};\r\n","import _ from 'underscore';\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport ReportingProps from '@bingads-webui-campaign-react/props-reporting';\r\nimport { ErrorMessages } from '@bingads-webui-react/validation';\r\nimport { ColumnChooser } from './column-chooser';\r\nimport { formatExclusionSets, resolveExclusionConditions, resolveAvailableColumns } from './column-formating/constraints/exclusion-sets';\r\nimport { filterByPilot } from './column-formating/constraints/pilot';\r\nimport { filterByTimeGrain } from './column-formating/constraints/time-grain';\r\nimport { translateColumns } from './column-formating/translate-columns';\r\nimport { resolveChartsColumns } from './column-formating/constraints/charts-columns';\r\n\r\nexport class ReportColumnChooser extends React.Component {\r\n static propTypes = {\r\n /* eslint-disable react/no-unused-prop-types */ // Doesn't detect props used in getDerivedState\r\n permissions: ReportingProps.permissions.isRequired,\r\n currentActive: PropTypes.string,\r\n classes: PropTypes.objectOf(PropTypes.string),\r\n i18n: ReportingProps.i18n.isRequired,\r\n legacyI18n: ReportingProps.i18n.isRequired,\r\n reportSchema: PropTypes.object.isRequired, //eslint-disable-line\r\n selected: PropTypes.arrayOf(PropTypes.string.isRequired).isRequired,\r\n setData: PropTypes.func.isRequired,\r\n timeGrain: PropTypes.string.isRequired,\r\n renderType: PropTypes.string,\r\n instrumentation: ReportingProps.instrumentation, // eslint-disable-line\r\n };\r\n\r\n static defaultProps = {\r\n classes: {\r\n columnChooser: '',\r\n },\r\n currentActive: '',\r\n renderType: 'Table',\r\n }\r\n\r\n // eslint-disable-next-line react/sort-comp\r\n constructor(props) {\r\n super(props);\r\n this.state = { errorMessages: [] };\r\n }\r\n\r\n static getDerivedStateFromProps(props, state) {\r\n const output = {\r\n isValid: props.isValid,\r\n errorMessages: props.errorMessages,\r\n };\r\n const { categories } = props.reportSchema.Columns;\r\n const pilotSets = props.reportSchema.Columns.piloted;\r\n\r\n let { exclusionSets } = state;\r\n let pilotFiltered = state.pilotFilteredCategories;\r\n if (!_.isEqual(state.unmodifiedCategories, categories)) {\r\n const translatedColumns = translateColumns(props.i18n, categories);\r\n exclusionSets = formatExclusionSets(props.reportSchema.ExclusionSets);\r\n output.unmodifiedCategories = categories;\r\n output.exclusionSets = exclusionSets;\r\n output.pilotFilteredCategories =\r\n filterByPilot(props.permissions, translatedColumns, pilotSets);\r\n output.currentActive = '';\r\n pilotFiltered = output.pilotFilteredCategories;\r\n } else {\r\n output.currentActive = props.currentActive;\r\n }\r\n\r\n let timeGrainFiltered = state.timeGrainFilteredCategories;\r\n let { selected } = props;\r\n if (state.timeGrain !== props.timeGrain || output.pilotFilteredCategories) {\r\n timeGrainFiltered = filterByTimeGrain(props.timeGrain, pilotFiltered);\r\n selected = resolveAvailableColumns(props.selected, timeGrainFiltered);\r\n output.timeGrainFilteredCategories = timeGrainFiltered;\r\n output.timeGrain = props.timeGrain;\r\n }\r\n\r\n if (\r\n !_.isEqual(state.selected, selected) ||\r\n output.timeGrainFilteredCategories ||\r\n props.renderType !== state.renderType\r\n ) {\r\n output.renderType = props.renderType;\r\n const newCategories =\r\n resolveExclusionConditions(exclusionSets, timeGrainFiltered, selected);\r\n selected = resolveAvailableColumns(selected, newCategories);\r\n ({\r\n selected: output.selected,\r\n categories: output.categories,\r\n } = resolveChartsColumns(selected, newCategories, props.renderType));\r\n // If we have removed or alter the original selection let the parent know\r\n if (!_.isEqual(output.selected, props.selected)) {\r\n const valid = ReportColumnChooser.checkValid(props, output.categories, output.selected);\r\n const data = { selected: output.selected };\r\n _.extend(data, valid);\r\n props.setData(data);\r\n }\r\n }\r\n return output;\r\n }\r\n\r\n static checkValid = (props, categories, selected) => {\r\n const {\r\n i18n,\r\n reportSchema: {\r\n MandateColumnSet = [],\r\n MissingMandatoryColumnError,\r\n },\r\n } = props;\r\n\r\n const map = _.object(selected, selected);\r\n let matches = 0;\r\n categories.forEach(category =>\r\n _.find(category.options, (option) => {\r\n if (map[option.key]) {\r\n matches += 1;\r\n return true;\r\n }\r\n return false;\r\n }));\r\n\r\n let isMandatoryColumnMissing = false;\r\n MandateColumnSet.forEach((columns) => {\r\n const selectedMandatoryColumn = _.intersection(columns, selected);\r\n if (selectedMandatoryColumn.length === 0) {\r\n isMandatoryColumnMissing = true;\r\n }\r\n });\r\n\r\n const errorMessages = [];\r\n if (matches !== categories.length) {\r\n errorMessages.push(i18n.getString(_TL_('At least one Attribute column and one Performance statistics column must be selected')));\r\n }\r\n if (isMandatoryColumnMissing) {\r\n errorMessages.push(i18n.getString(MissingMandatoryColumnError));\r\n }\r\n\r\n return {\r\n isValid: (matches === categories.length),\r\n errorMessages,\r\n };\r\n }\r\n\r\n setData = (data) => {\r\n const valid = ReportColumnChooser.checkValid(this.props, this.state.categories, data.selected);\r\n _.extend(data, valid);\r\n this.props.setData(data);\r\n }\r\n\r\n render() {\r\n const {\r\n legacyI18n, renderType, classes, instrumentation,\r\n } = this.props;\r\n const {\r\n categories, currentActive, errorMessages, selected,\r\n } = this.state;\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n","import _ from 'underscore';\r\n\r\nexport const translateColumns = (i18n, categories) => {\r\n const output = [];\r\n\r\n const currentLocale = i18n.getLocale();\r\n const compareLocale = new Intl.Collator(currentLocale).compare;\r\n _.forEach(categories, (category) => {\r\n const categoryClone = _.clone(category);\r\n categoryClone.options = [];\r\n categoryClone.name = i18n.getString(categoryClone.name);\r\n output.push(categoryClone);\r\n _.forEach(category.options, (option) => {\r\n const optionClone = _.clone(option);\r\n optionClone.name = i18n.getString(option.name);\r\n categoryClone.options.push(optionClone);\r\n });\r\n categoryClone.options.sort((a, b) => compareLocale(a.name, b.name));\r\n });\r\n return output;\r\n};\r\n","import _ from 'underscore';\r\n\r\nexport const filterByPilot = (permissions, categories, pilotSets) => {\r\n let rejectedColumns = {};\r\n _.forEach(pilotSets, ({ isAllowed, columns }) => {\r\n if (!isAllowed(permissions)) {\r\n rejectedColumns = _.extend(rejectedColumns, _.object(columns, columns));\r\n }\r\n });\r\n\r\n const categoriesWithFilteredOptions = _.map(categories, (category) => {\r\n const categoryClone = _.clone(category);\r\n categoryClone.options = [];\r\n _.forEach(category.options, (option) => {\r\n if (!_.has(rejectedColumns, option.key)) {\r\n categoryClone.options.push(option);\r\n }\r\n });\r\n return categoryClone;\r\n });\r\n return categoriesWithFilteredOptions.filter(category => category.options.length !== 0);\r\n};\r\n","import { withPerfMarker } from '@bingads-webui/performance-marker-react-wrapper';\r\nimport { withLegacyI18n, withPermissionContext } from '@bingads-webui-campaign/report-shared';\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { withInstrumentation } from '@bingads-webui-react/hoc-with-instrumentation';\r\nimport { ReportColumnChooser } from './report-column-chooser';\r\nimport { getStyle } from './style';\r\n\r\n\r\nconst withPerf = component => withPerfMarker(component, { name: 'reporting-column-chooser' });\r\nconst Wrapped =\r\n // eslint-disable-next-line\r\n withInstrumentation(withPerf(withLegacyI18n(withI18nConsumer(withPermissionContext(withDefaultStyles(ReportColumnChooser, getStyle))))));\r\n\r\nexport { Wrapped as ReportColumnChooser };\r\n\r\n","import { helpbuttonStyle } from '@bingads-webui-campaign-react/common-styles';\r\nimport { merge } from '@bingads-webui-universal/primitive-utilities';\r\nimport { ComponentSettings } from '@bingads-webui-theme-2018/theme-fluent';\r\n\r\nconst {\r\n columnChooserStyle,\r\n getColumnChooserOverrideStyle,\r\n} = ComponentSettings;\r\n\r\nexport const getStyle = function (components, { isUIVnext, palette }) {\r\n if (!isUIVnext) {\r\n return {\r\n columnChooser: {},\r\n };\r\n }\r\n\r\n return {\r\n '@global': {\r\n ...helpbuttonStyle({ palette }),\r\n },\r\n columnChooser: merge(\r\n {},\r\n columnChooserStyle,\r\n getColumnChooserOverrideStyle(palette),\r\n {\r\n '& .column-chooser .panel': {\r\n marginTop: '34px',\r\n marginBottom: '0px',\r\n boxShadow: 'none',\r\n },\r\n '& .column-chooser .panel .panel-body': {\r\n paddingLeft: '0',\r\n },\r\n '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .options-view .column-chooser-option-list .column-chooser-editable-picker a.custom-column-add': {\r\n margin: '8px',\r\n padding: '8px',\r\n backgroundColor: '#008272',\r\n color: 'white',\r\n position: 'absolute',\r\n },\r\n '& .column-chooser': {\r\n lineHeight: '18px',\r\n '& .panel': {\r\n '& .panel-body': {\r\n '& .column-chooser-selection-area': {\r\n '& .column-chooser-option': {\r\n '& .column-chooser-search-box': {\r\n position: 'relative',\r\n border: '1px solid #F3F2F1',\r\n '& .search-input': {\r\n height: '48px',\r\n border: 'none',\r\n paddingLeft: '48px',\r\n },\r\n '& .glyphicon-search': {\r\n fontFamily: 'MsAds MDL2 Assets',\r\n position: 'absolute',\r\n fontSize: '16px',\r\n top: '16px',\r\n left: '16px',\r\n color: palette.themePrimary,\r\n '&:before': {\r\n content: '\"\\\\E721\"',\r\n },\r\n },\r\n },\r\n '& .options-view .column-chooser-option-list': {\r\n width: '510px',\r\n height: '257px',\r\n '& ul.column-chooser-options': {\r\n height: '219.6px',\r\n '& span.option-name': {\r\n maxWidth: '380px',\r\n },\r\n },\r\n },\r\n },\r\n '& .column-chooser-selected': {\r\n width: '435px',\r\n height: '309px',\r\n '& .column-chooser-selected-header': {\r\n width: '100%',\r\n },\r\n '& .remove-all-in-selected-list': {\r\n display: 'inline-block',\r\n float: 'right',\r\n paddingRight: '10px',\r\n paddingTop: '10px',\r\n },\r\n '& .column-chooser-selected-list': {\r\n '& .draggable-list-view': {\r\n width: '100%',\r\n height: '241px',\r\n '& ul.draggable-list': {\r\n height: '241px',\r\n },\r\n },\r\n },\r\n },\r\n },\r\n },\r\n },\r\n },\r\n }\r\n ),\r\n };\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport ReportingProps from '@bingads-webui-campaign-react/props-reporting';\r\nimport { ReportColumnChooser } from '@bingads-webui-campaign/report-column-chooser';\r\n\r\nexport const ColumnSection =\r\n ({\r\n data,\r\n reportSchema,\r\n setData,\r\n timeGrain,\r\n renderType,\r\n }) =>\r\n (\r\n );\r\n\r\n\r\n/* eslint-disable react/no-typos */\r\nColumnSection.propTypes = {\r\n data: PropTypes.object.isRequired, // eslint-disable-line\r\n reportSchema: ReportingProps.reportSchema.isRequired,\r\n setData: PropTypes.func.isRequired,\r\n timeGrain: PropTypes.string.isRequired,\r\n renderType: PropTypes.string.isRequired,\r\n};\r\n","\r\nexport function inputTitleStyle(components, core) {\r\n return core.isUIVnext ?\r\n {\r\n position: 'absolute',\r\n top: '-24px',\r\n color: `${core.palette.neutralPrimary}`,\r\n fontWeight: '500',\r\n } :\r\n {\r\n alignSelf: 'center',\r\n width: '100px',\r\n textAlign: 'right',\r\n paddingRight: '20px',\r\n fontWeight: 'bold',\r\n fontSize: '12px',\r\n color: '#666666',\r\n };\r\n}\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport ReportingProps from '@bingads-webui-campaign-react/props-reporting';\r\nimport { RadioGroup, Select } from '@bingads-webui-react/primitive';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport _ from 'underscore';\r\nimport { DAILY, WEEKLY, MONTHLY } from './consts';\r\nimport { inputTitleStyle } from '../../style/input-title-style';\r\n\r\nclass Frequency extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n const { i18n } = props;\r\n this.radioValues = [DAILY, WEEKLY, MONTHLY];\r\n this.getRadioId = (_item, index) => ['daily', 'weekly', 'monthly'][index];\r\n this.radioOptions = (_item, index) =>\r\n [\r\n i18n.getString(_TL_('Daily')),\r\n i18n.getString(_TL_('Weekly')),\r\n i18n.getString(_TL_('Monthly')),\r\n ][index];\r\n }\r\n\r\n render() {\r\n const {\r\n i18n, CronModel, changeFrequency, cronFormatter, changeHour, classes,\r\n } = this.props;\r\n const optionFactory = (selectorName, optionObj, useIndex = true) =>\r\n _.values(optionObj).map((value, index) =>\r\n (\r\n \r\n ));\r\n\r\n return (\r\n \r\n
\r\n
{ i18n.getString(_TL_('Frequency')) }
\r\n
\r\n CronModel.frequency}\r\n renderItem={this.radioOptions}\r\n onChange={frequency => changeFrequency({\r\n frequency,\r\n dayOfWeek: frequency === WEEKLY ? '0' : '*',\r\n dayOfMonth: frequency === MONTHLY ? '1' : '*',\r\n })}\r\n checked={CronModel.frequency}\r\n name=\"frequencyRadio\"\r\n />\r\n
\r\n {\r\n CronModel.frequency !== DAILY ?
: ''\r\n }\r\n {\r\n CronModel.frequency === WEEKLY ?\r\n
\r\n
{i18n.getString(_TL_('Every'))}
\r\n changeFrequency({\r\n frequency: WEEKLY,\r\n dayOfWeek: e.target.value,\r\n dayOfMonth: '*',\r\n })}\r\n aria-labelledby=\"everyLabel\"\r\n >\r\n {optionFactory('weekly', cronFormatter.getDaysOfWeek())}\r\n \r\n
: ''\r\n }\r\n {\r\n CronModel.frequency === MONTHLY ?\r\n
\r\n
{i18n.getString(_TL_('On day'))}
\r\n changeFrequency({\r\n frequency: MONTHLY,\r\n dayOfWeek: '*',\r\n dayOfMonth: e.target.value,\r\n })}\r\n aria-labelledby=\"onDayLabel\"\r\n >\r\n {optionFactory('monthly', _.omit(cronFormatter.getDaysOfMonth(), '29', '30', '31'), false)}\r\n \r\n
{i18n.getString(_TL_('of every month'))}
\r\n
: ''\r\n }\r\n
\r\n
\r\n
{ i18n.getString(_TL_('At')) }
\r\n changeHour(e.target.value)}\r\n aria-labelledby=\"atLabel\"\r\n >\r\n {optionFactory('hour', cronFormatter.getHoursOfDay())}\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nFrequency.propTypes = {\r\n classes: PropTypes.objectOf(PropTypes.string).isRequired,\r\n i18n: ReportingProps.i18n.isRequired,\r\n CronModel: PropTypes.shape({\r\n frequency: PropTypes.number,\r\n }).isRequired,\r\n changeFrequency: PropTypes.func.isRequired,\r\n changeHour: PropTypes.func.isRequired,\r\n cronFormatter: PropTypes.shape({\r\n getDaysOfWeek: PropTypes.func,\r\n }).isRequired,\r\n};\r\n\r\nconst StyledFrequency = withDefaultStyles(Frequency, (components, core) => {\r\n const baseStyle = {\r\n frequencyContainer: {\r\n alignItems: 'center',\r\n display: 'flex',\r\n '& .title': {\r\n alignSelf: 'top',\r\n },\r\n '& img': {\r\n marginRight: '15px',\r\n },\r\n },\r\n frequencyTitle: inputTitleStyle(components, core),\r\n frequencySelect: {\r\n display: 'flex',\r\n '& div': {\r\n flexShrink: 0,\r\n paddingRight: '5px',\r\n alignSelf: 'center',\r\n },\r\n },\r\n hourContainer: {\r\n display: 'flex',\r\n },\r\n radioContainer: {\r\n width: '100px',\r\n },\r\n };\r\n\r\n if (!core.isUIVnext) {\r\n return baseStyle;\r\n }\r\n\r\n return {\r\n ...baseStyle,\r\n frequencyContainer: {\r\n ...baseStyle.frequencyContainer,\r\n '& > div:first-child': {\r\n top: '-50px',\r\n },\r\n },\r\n frequencySelect: {\r\n ...baseStyle.frequencySelect,\r\n '& > div:first-child': {\r\n top: '8px',\r\n },\r\n },\r\n };\r\n});\r\n\r\nexport { StyledFrequency as Frequency };\r\n","export const DAILY = 0;\r\nexport const WEEKLY = 1;\r\nexport const MONTHLY = 2;\r\n","import $ from 'jquery';\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { CivilDate } from 'tc39-proposal-temporal';\r\nimport ReportingProps from '@bingads-webui-campaign-react/props-reporting';\r\nimport { SingleMonthCalendar } from '@bingads-webui-react/single-month-calendar';\r\nimport { Input } from '@bingads-webui-react/primitive-validation';\r\nimport { getCivilDateToday } from '@bingads-webui-universal/temporal-utitlities';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { keyCode } from '@bingads-webui/keycode';\r\nimport './style.less';\r\nimport { inputTitleStyle } from '../../style/input-title-style';\r\n\r\nclass StartEndDate extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n startNavigatedDate: '',\r\n endNavigatedDate: '',\r\n startSelectedDate: '',\r\n endSelectedDate: '',\r\n isShowStartDatePicker: false,\r\n isShowEndDatePicker: false,\r\n selectedRanges: [],\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n document.addEventListener('mousedown', this.handelShowHideSingleDatePicker);\r\n this.onValidate();\r\n }\r\n\r\n componentWillUnmount() {\r\n document.removeEventListener('mousedown', this.handelShowHideSingleDatePicker);\r\n }\r\n\r\n static getDerivedStateFromProps(props) {\r\n const startDate = new Date(props.startDate);\r\n const startSelectedDate = new CivilDate(\r\n startDate.getUTCFullYear(),\r\n startDate.getUTCMonth() + 1,\r\n startDate.getUTCDate()\r\n );\r\n const endDate = new Date(props.endDate);\r\n const endSelectedDate = new CivilDate(\r\n endDate.getUTCFullYear(),\r\n endDate.getUTCMonth() + 1,\r\n endDate.getUTCDate()\r\n );\r\n return {\r\n startSelectedDate,\r\n startNavigatedDate: startSelectedDate,\r\n endSelectedDate,\r\n endNavigatedDate: endSelectedDate,\r\n selectedRanges: [{\r\n start: startSelectedDate,\r\n end: endSelectedDate,\r\n }],\r\n };\r\n }\r\n\r\n onSelectDate = (date) => {\r\n if (this.state.isShowStartDatePicker) {\r\n this.setState({\r\n startSelectedDate: date,\r\n isShowStartDatePicker: false,\r\n }, this.onValidate);\r\n this.props.changeStartEndDate({\r\n StartDate: date.toString(),\r\n });\r\n } else if (this.state.isShowEndDatePicker) {\r\n this.setState({\r\n endSelectedDate: date,\r\n isShowEndDatePicker: false,\r\n }, this.onValidate);\r\n this.props.changeStartEndDate({\r\n EndDate: date.toString(),\r\n });\r\n }\r\n }\r\n\r\n onValidate = () => {\r\n const today = new Date();\r\n const start = this.state.startSelectedDate;\r\n const end = this.state.endSelectedDate;\r\n\r\n if (start > end) {\r\n this.setState({\r\n errMessage: _TL_('The start date for the scheduled report cannot be later than the end date.'),\r\n });\r\n } else if (today > new Date(end.year, end.month - 1, end.day)) {\r\n this.setState({\r\n errMessage: _TL_('The end date for a scheduled report must be greater than the current date.'),\r\n });\r\n } else {\r\n this.setState({\r\n errMessage: false,\r\n });\r\n }\r\n }\r\n\r\n onKeyDown = (event) => {\r\n if (event.keyCode === keyCode.Enter) {\r\n this.handelShowHideSingleDatePicker(event);\r\n }\r\n }\r\n\r\n setWrapperRef = (node) => {\r\n this.wrapperRef = node;\r\n }\r\n\r\n handelShowHideSingleDatePicker = (event) => {\r\n if (event.target === $('#startDateInput')[0]) {\r\n this.setState({\r\n isShowStartDatePicker: !this.state.isShowStartDatePicker,\r\n isShowEndDatePicker: false,\r\n });\r\n } else if (event.target === $('#endDateInput')[0]) {\r\n this.setState({\r\n isShowStartDatePicker: false,\r\n isShowEndDatePicker: !this.state.isShowEndDatePicker,\r\n });\r\n } else if (this.wrapperRef && !this.wrapperRef.contains(event.target)) {\r\n this.setState({\r\n isShowStartDatePicker: false,\r\n isShowEndDatePicker: false,\r\n });\r\n }\r\n }\r\n\r\n render() {\r\n const {\r\n i18n, classes,\r\n } = this.props;\r\n const minDate = getCivilDateToday().plus({ days: -1 });\r\n const maxDate = getCivilDateToday().plus({ years: 2 });\r\n\r\n return (\r\n
\r\n
\r\n
{ i18n.getString(_TL_('Start Date')) }
\r\n
\r\n \r\n {\r\n this.state.isShowStartDatePicker &&\r\n
\r\n this.onSelectDate(date)}\r\n i18n={i18n}\r\n isMonthPickerEnabled\r\n />\r\n
\r\n }\r\n
\r\n
\r\n
\r\n
{ i18n.getString(_TL_('End Date')) }
\r\n
\r\n \r\n {\r\n this.state.isShowEndDatePicker &&\r\n
\r\n \r\n
\r\n }\r\n
\r\n
\r\n {\r\n this.state.errMessage ?\r\n

\r\n { i18n.getString(this.state.errMessage)}\r\n

: ''\r\n }\r\n
\r\n );\r\n }\r\n}\r\n\r\nStartEndDate.propTypes = {\r\n classes: PropTypes.objectOf(PropTypes.string).isRequired,\r\n i18n: ReportingProps.i18n.isRequired,\r\n changeStartEndDate: PropTypes.func.isRequired,\r\n};\r\n\r\nconst StyledStartEndDate = withDefaultStyles(StartEndDate, (components, core) => {\r\n const baseStyle = {\r\n startEndDate: {\r\n paddingTop: '10px',\r\n '& > div': {\r\n float: 'left',\r\n width: '50%',\r\n display: 'flex',\r\n },\r\n '& input[readonly]': {\r\n backgroundColor: '#fff',\r\n },\r\n },\r\n calenderWrapper: {\r\n position: 'relative',\r\n },\r\n errorMsg: {\r\n color: '#D90026',\r\n paddingLeft: '53px',\r\n overflow: 'hidden',\r\n },\r\n startEndDateLabel: inputTitleStyle(components, core),\r\n };\r\n\r\n if (!core.isUIVnext) {\r\n return baseStyle;\r\n }\r\n\r\n return {\r\n ...baseStyle,\r\n startEndDate: {\r\n ...baseStyle.startEndDate,\r\n paddingTop: '0px',\r\n '& > div': {\r\n float: 'left',\r\n display: 'flex',\r\n width: '135px',\r\n },\r\n '& #startDatePicker': {\r\n marginRight: '43px',\r\n },\r\n },\r\n errorMsg: {\r\n color: '#D90026',\r\n position: 'absolute',\r\n top: '50px',\r\n },\r\n };\r\n});\r\n\r\nexport { StyledStartEndDate as StartEndDate };\r\n","import _ from 'underscore';\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport ReportingProps from '@bingads-webui-campaign-react/props-reporting';\r\nimport { withValidation, withError } from '@bingads-webui-react/validation';\r\nimport { TextArea } from '@bingads-webui-react/primitive';\r\n\r\nexport const getValidator = i18n => (val) => {\r\n if (!_.isString(val) || val.trim() === '') {\r\n return [i18n.getString(_TL_('Invalid E-mail format'))];\r\n } else if (val.length > 1024) {\r\n return [i18n.getString(_TL_('Email Limit Exceeded. You may input up to 10 e-mail addresses.'))];\r\n }\r\n const regex = /^([^\\s@,;]+@[\\w\\-.]+\\.[A-Za-z]+)$/i;\r\n const delimiter = ',';\r\n const emailList = val.replace(new RegExp(',|;', 'g'), delimiter);\r\n const emails = _.compact(_.map(emailList.split(','), v => v.trim()));\r\n if (emails.length > 10) {\r\n return [i18n.getString(_TL_('Email Limit Exceeded. You may input up to 10 e-mail addresses.'))];\r\n }\r\n\r\n const offendingEmail =\r\n _.find(emails, (email) => {\r\n if (!regex.test(email)) {\r\n return email;\r\n }\r\n return false;\r\n });\r\n if (offendingEmail) {\r\n return [i18n.getString(_TL_('Invalid E-mail format: ')) + offendingEmail];\r\n }\r\n return [];\r\n};\r\n\r\n\r\nconst validationSchema = {\r\n name: 'Email Schema',\r\n type: 'object',\r\n properties: {\r\n email: {\r\n type: 'string',\r\n required: true,\r\n maxLength: 1024,\r\n },\r\n },\r\n};\r\nconst ValidatedTextArea = withError(withValidation(TextArea));\r\nconst EmailTextArea = React.memo((props) => {\r\n const {\r\n i18n, onValidate, forceValidate, value, ariaLabelledBy,\r\n } = props;\r\n\r\n return (\r\n \r\n );\r\n});\r\n\r\nEmailTextArea.propTypes = {\r\n value: PropTypes.string.isRequired,\r\n forceValidate: PropTypes.bool.isRequired,\r\n i18n: ReportingProps.i18n.isRequired,\r\n onValidate: PropTypes.func.isRequired,\r\n ariaLabelledBy: PropTypes.string,\r\n};\r\nEmailTextArea.defaultProps = {\r\n ariaLabelledBy: undefined,\r\n};\r\n\r\nexport { EmailTextArea };\r\n","import React, { Component } from 'react';\r\nimport _ from 'underscore';\r\nimport { withPerfMarker } from '@bingads-webui/performance-marker-react-wrapper';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport ReportingProps from '@bingads-webui-campaign-react/props-reporting';\r\nimport PropTypes from 'prop-types';\r\nimport { Checkbox } from '@bingads-webui-react/primitive';\r\nimport { Frequency } from './frequency';\r\nimport { StartEndDate } from './start-end-date';\r\nimport { EmailTextArea } from './email-text-area';\r\n\r\nclass ReportSchedule extends Component {\r\n constructor(props) {\r\n super(props);\r\n const { i18n } = props;\r\n this.text = {\r\n includeReport: i18n.getString(_TL_('Include report as an email attachment')),\r\n };\r\n }\r\n\r\n changeFrequency = ({ frequency, dayOfWeek, dayOfMonth }) => {\r\n const Cron = this.props.cronFormatter.toCronString({\r\n frequency,\r\n dayOfWeek,\r\n dayOfMonth,\r\n hour: this.CronModel.hour,\r\n });\r\n this.props.setSchedule({ Cron });\r\n };\r\n\r\n changeHour = (hour) => {\r\n const Cron = this.props.cronFormatter.toCronString(_.defaults({ hour }, this.CronModel));\r\n this.props.setSchedule({ Cron });\r\n };\r\n\r\n changeStartEndDate = (date) => {\r\n this.props.setSchedule(date);\r\n };\r\n\r\n render() {\r\n const {\r\n i18n, cronFormatter, classes,\r\n StartDate, EndDate, setSchedule,\r\n EmailRecipients, AttachFileToEmail, Cron,\r\n onValidateEmail, forceValidate,\r\n } = this.props;\r\n this.CronModel = cronFormatter.parse(Cron);\r\n\r\n return (\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
{i18n.getString(_TL_('Send report to'))}
\r\n \r\n {i18n.getString(_TL_('Separate multiple email addresses with commas or semicolons. Maximum 1024 character limit.'))}\r\n
\r\n setSchedule({ AttachFileToEmail: val.target.checked })}\r\n checked={AttachFileToEmail}\r\n >\r\n {this.text.includeReport}\r\n {\r\n AttachFileToEmail &&\r\n
\r\n {i18n.getString(_TL_('Reports larger than 4MB will not be included as email attachments.'))}\r\n
\r\n }\r\n \r\n\r\n
\r\n );\r\n }\r\n}\r\n\r\n/* eslint-disable react/no-typos */\r\nReportSchedule.propTypes = {\r\n classes: PropTypes.objectOf(PropTypes.string).isRequired,\r\n forceValidate: PropTypes.bool.isRequired,\r\n i18n: ReportingProps.i18n.isRequired,\r\n Cron: PropTypes.string.isRequired,\r\n EmailRecipients: PropTypes.string.isRequired,\r\n StartDate: PropTypes.string.isRequired,\r\n EndDate: PropTypes.string.isRequired,\r\n setSchedule: PropTypes.func.isRequired,\r\n cronFormatter: PropTypes.object.isRequired, // eslint-disable-line\r\n AttachFileToEmail: PropTypes.bool.isRequired,\r\n onValidateEmail: PropTypes.func.isRequired,\r\n};\r\n\r\nfunction getStyle(components, {\r\n palette,\r\n isUIVnext,\r\n}) {\r\n const baseStyle = {\r\n reportSchedule: {\r\n paddingLeft: '40px',\r\n maxWidth: '600px',\r\n\r\n '& select': {\r\n minWidth: 0,\r\n display: 'inline-block',\r\n marginRight: '5px',\r\n width: 'auto',\r\n },\r\n },\r\n emailTitle: {\r\n clear: 'both',\r\n paddingTop: '10px',\r\n },\r\n emailTextAreaSub: {\r\n color: `${palette.neutralSecondary}`,\r\n font: 'normal 10px arial !important',\r\n },\r\n attachmentTooLarge: {\r\n paddingTop: '2px',\r\n color: '#999',\r\n font: 'normal 10px arial !important',\r\n },\r\n };\r\n\r\n if (!isUIVnext) {\r\n return baseStyle;\r\n }\r\n\r\n return {\r\n ...baseStyle,\r\n reportSchedule: {\r\n ...baseStyle.reportSchedule,\r\n paddingLeft: '0',\r\n paddingTop: '75px',\r\n maxWidth: 'none',\r\n '& select': {\r\n minWidth: 0,\r\n display: 'inline-block',\r\n marginRight: '5px',\r\n width: '135px',\r\n },\r\n },\r\n scheduleTime: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n '& > div': {\r\n position: 'relative',\r\n },\r\n '& > div:not(:last-child)': {\r\n marginRight: '43px',\r\n },\r\n },\r\n emailTextArea: {\r\n width: '500px',\r\n marginTop: '34px',\r\n '& > div:first-child': {\r\n top: '-8px',\r\n position: 'relative',\r\n },\r\n '& .error': {\r\n color: '#A80000',\r\n },\r\n '& textarea': {\r\n maxWidth: '100%',\r\n },\r\n },\r\n emailTitle: {\r\n position: 'absolute',\r\n top: '-24px',\r\n color: `${palette.neutralPrimary}`,\r\n fontWeight: '500',\r\n },\r\n };\r\n}\r\n\r\nconst Wrapped = withDefaultStyles(withPerfMarker(ReportSchedule, { name: 'reporting-schedule' }), getStyle);\r\n\r\nexport { Wrapped as ReportSchedule };\r\n","\r\nexport function radioAndCheckboxStyle(component, core) {\r\n return {\r\n '& .radio, & .checkbox': {\r\n paddingLeft: 0,\r\n '& > label': {\r\n paddingLeft: 0,\r\n '& > input': {\r\n position: 'static',\r\n marginLeft: 0,\r\n marginRight: 5,\r\n marginTop: core.isUIVnext ? -2 : 0,\r\n },\r\n },\r\n },\r\n };\r\n}\r\n","import React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { withPerfMarker } from '@bingads-webui/performance-marker-react-wrapper';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { helpbuttonStyle } from '@bingads-webui-campaign-react/common-styles';\r\nimport ReportingProps from '@bingads-webui-campaign-react/props-reporting';\r\nimport _ from 'underscore';\r\nimport { getCivilDateToday } from '@bingads-webui-universal/temporal-utitlities';\r\nimport { Checkbox } from '@bingads-webui-react/primitive';\r\nimport { HelpIcon } from '@bingads-webui-campaign-react/help';\r\nimport { CronFormatter } from '@bingads-webui/cron-formatter';\r\nimport { withPermissionContext, withIdentityContext } from '@bingads-webui-campaign/report-shared';\r\nimport { ReportSchedule } from './report-schedule';\r\nimport { radioAndCheckboxStyle } from '../../style/radio-checkbox-style';\r\nimport { isValidSaveType, isSharedTemplateType, savedTaskItemTypes } from '../../config';\r\n\r\nclass SettingSection extends Component {\r\n constructor(props) {\r\n super(props);\r\n const { i18n, legacyI18n } = props;\r\n this.text = {\r\n saveAs: i18n.getString(_TL_('Save as custom report')),\r\n schdule: i18n.getString(_TL_('Schedule this report')),\r\n totalRow: i18n.getString(_TL_('Include total row')),\r\n visibleToExternalUsers: i18n.getString(_TL_('Disclose this report')),\r\n };\r\n this.defaultSchedule = {\r\n AttachFileToEmail: false,\r\n EmailRecipients: '',\r\n Cron: '',\r\n StartDate: null,\r\n EndDate: null,\r\n };\r\n this.initSchedule = {\r\n AttachFileToEmail: false,\r\n EmailRecipients: '',\r\n Cron: '0 12 * * 0 *',\r\n StartDate: getCivilDateToday().toString(),\r\n EndDate: getCivilDateToday().plus({ months: 3 }).toString(),\r\n };\r\n this.cronFormatter = new CronFormatter({ i18n: legacyI18n });\r\n\r\n // setdata with empty to trigger validation loop\r\n this.setData({});\r\n }\r\n\r\n onChange = (changedSettings) => {\r\n const { ...settings } = this.props.data;\r\n let value;\r\n if (changedSettings.scheduleThisReport === true) {\r\n value = _.extend(settings, changedSettings, { type: this.props.saveType });\r\n } else if (changedSettings.type === 'ReportUI') {\r\n value = _.extend(settings, changedSettings, { scheduleThisReport: false });\r\n } else {\r\n value = _.extend(settings, changedSettings);\r\n }\r\n // reset schedule to empty or init\r\n if (value.scheduleThisReport === false) {\r\n value = _.extend(value, this.defaultSchedule);\r\n } else if (value.Cron === '') {\r\n value = _.extend(value, this.initSchedule);\r\n }\r\n this.setData(value);\r\n }\r\n\r\n onValidateEmail = (result) => {\r\n this.isEmailValid = result.isValid;\r\n this.setData({\r\n EmailRecipients: result.data.email,\r\n });\r\n };\r\n\r\n onChangeVisibleToExternalUsers = (e) => {\r\n const isChecked = e.target.checked;\r\n const {\r\n identityDetails: {\r\n account: {\r\n Id: accountId,\r\n } = {},\r\n },\r\n } = this.props;\r\n\r\n let newType;\r\n\r\n if (isChecked) {\r\n newType = accountId ?\r\n savedTaskItemTypes.AccountTemplate :\r\n savedTaskItemTypes.CustomerTemplate;\r\n } else {\r\n newType = savedTaskItemTypes.Template;\r\n }\r\n\r\n this.onChange({ type: newType });\r\n }\r\n\r\n setData = (data) => {\r\n const newSettings = _.defaults(data, this.props.data);\r\n const today = new Date();\r\n this.props.setData(_.extend(newSettings, {\r\n isValid: !newSettings.scheduleThisReport ||\r\n (\r\n this.isEmailValid &&\r\n new Date(newSettings.StartDate) <= new Date(newSettings.EndDate) &&\r\n today <= new Date(newSettings.EndDate)\r\n ),\r\n }));\r\n }\r\n\r\n render() {\r\n const {\r\n data: settings, isUpdateReport, i18n, classes,\r\n forceValidate, showIncludeTotalRow, disableIncludeTotalRow, saveType,\r\n hasTopMargin, permissions: { IsReportsMergeEnabled, IsInternalUser },\r\n } = this.props;\r\n\r\n return (\r\n
\r\n {\r\n !isUpdateReport &&\r\n this.onChange({ type: val.target.checked ? saveType : 'ReportUI' })}\r\n checked={isValidSaveType(settings.type)}\r\n >\r\n {this.text.saveAs}\r\n \r\n \r\n }\r\n {\r\n !isUpdateReport &&\r\n IsReportsMergeEnabled && IsInternalUser && isValidSaveType(settings.type) &&\r\n \r\n {this.text.visibleToExternalUsers}\r\n \r\n \r\n }\r\n this.onChange({ scheduleThisReport: val.target.checked })}\r\n checked={settings.scheduleThisReport}\r\n >\r\n {this.text.schdule}\r\n \r\n \r\n {\r\n settings.scheduleThisReport &&\r\n \r\n }\r\n {\r\n showIncludeTotalRow &&\r\n this.onChange({ includeTotalRow: val.target.checked })}\r\n checked={settings.includeTotalRow}\r\n className={disableIncludeTotalRow ? classes.disabledCheckbox : ''}\r\n >\r\n {this.text.totalRow}\r\n \r\n \r\n }\r\n
\r\n );\r\n }\r\n}\r\n\r\n\r\n/* eslint-disable react/no-typos */\r\nSettingSection.propTypes = {\r\n showIncludeTotalRow: PropTypes.bool,\r\n disableIncludeTotalRow: PropTypes.bool,\r\n forceValidate: PropTypes.bool,\r\n classes: PropTypes.objectOf(PropTypes.string).isRequired,\r\n i18n: ReportingProps.i18n.isRequired,\r\n legacyI18n: ReportingProps.i18n.isRequired,\r\n data: PropTypes.object.isRequired, // eslint-disable-line\r\n setData: PropTypes.func.isRequired,\r\n isUpdateReport: PropTypes.bool.isRequired,\r\n saveType: PropTypes.string.isRequired,\r\n hasTopMargin: PropTypes.bool,\r\n permissions: PropTypes.shape({}).isRequired,\r\n identityDetails: PropTypes.shape({}).isRequired,\r\n};\r\n\r\nSettingSection.defaultProps = {\r\n showIncludeTotalRow: true,\r\n disableIncludeTotalRow: false,\r\n forceValidate: false,\r\n hasTopMargin: true,\r\n};\r\n\r\nfunction getStyle(components, core) {\r\n const baseStyle = {\r\n reportSetting: {\r\n ...radioAndCheckboxStyle(components, core),\r\n },\r\n disabledCheckbox: {\r\n background: 'none',\r\n width: 'auto',\r\n height: 'auto',\r\n float: 'none',\r\n marginLeft: 'auto',\r\n '& label': {\r\n color: '#808080',\r\n cursor: 'not-allowed',\r\n },\r\n },\r\n };\r\n\r\n if (!core.isUIVnext) {\r\n return baseStyle;\r\n }\r\n\r\n return {\r\n ...baseStyle,\r\n reportSetting: {\r\n ...baseStyle.reportSetting,\r\n '& .helpbutton': {\r\n ...helpbuttonStyle(core)['.helpbutton'],\r\n color: `${core.palette.themePrimary}`,\r\n },\r\n '& .helpbutton::before': helpbuttonStyle(core)['.helpbutton::before'],\r\n },\r\n };\r\n}\r\n\r\nconst Wrapped = withIdentityContext(withPermissionContext(withPerfMarker(withDefaultStyles(SettingSection, getStyle), { name: 'reporting-setting' })));\r\n\r\nexport { Wrapped as SettingSection };\r\n","export const categories = [\r\n {\r\n metrics: [\r\n 'Clicks',\r\n ],\r\n prefix: 'PerformanceMetrics/',\r\n },\r\n];\r\n","import _ from 'underscore';\r\nimport Promise from 'bluebird';\r\nimport { i18nMap, logUnmappedFilter } from '@bingads-webui-campaign/report-shared';\r\nimport { Shared as reportSchema } from '@bingads-webui/report-ui-interface';\r\nimport * as putil from '@bingads-webui-universal/primitive-utilities';\r\nimport { categories } from './consts';\r\n\r\nconst maxCheckboxValues = 7;\r\n\r\nfunction localizeEnumValues(i18n, property, propertyKey) {\r\n const tuples = _.map(property.enum, (enumValue) => {\r\n const englishString = i18nMap.FilterEnum[propertyKey] ?\r\n i18nMap.FilterEnum[propertyKey][enumValue] :\r\n putil.get(reportSchema, `columns.${property.columnName}.enum.${property.enumToColumnEnum[enumValue]}`);\r\n const localizedString = englishString ? i18n.getString(englishString) : String(enumValue);\r\n\r\n return [enumValue, localizedString];\r\n });\r\n return _.object(tuples);\r\n}\r\n\r\nexport function localizeTitle(i18n, key) {\r\n const englishString = i18nMap.FilterTitle[key];\r\n let localizedString;\r\n if (englishString) {\r\n localizedString = i18n.getString(englishString);\r\n } else {\r\n localizedString = String(key);\r\n logUnmappedFilter(key);\r\n }\r\n\r\n return localizedString;\r\n}\r\n\r\nexport function getUpperDescription(i18n, propertyKey) {\r\n const propertyName = localizeTitle(i18n, propertyKey);\r\n return i18n.getString(_TL_('Type {{propertyName}} (separate with commas):'), { propertyName });\r\n}\r\n\r\nfunction getPropertyPath(key) {\r\n const category = _.find(categories, ({ metrics }) => _.contains(metrics, key));\r\n const prefix = _.result(category, 'prefix', '');\r\n\r\n return `${prefix}${key}`;\r\n}\r\n\r\nexport function processProperty(\r\n rawProperty, rawKey, i18n,\r\n isUIVnext, permissions\r\n) {\r\n const property = {\r\n ...rawProperty,\r\n title: localizeTitle(i18n, rawKey),\r\n property: isUIVnext ? getPropertyPath(rawKey) : undefined,\r\n };\r\n\r\n if (property.enum) {\r\n if (property.columnName === 'Language' && !permissions.IsAdsGlobalizationPhase1Enabled) {\r\n property.enum = _.without(property.enum, 'Greek', 'Polish', 'Bulgarian', 'Croatian', 'Czech', 'Estonian', 'Hungarian', 'Latvian', 'Lithuanian', 'Maltese', 'Romanian', 'Slovak', 'Slovenian');\r\n }\r\n if (property.columnName === 'Language' && !permissions.IsAdsGlobalizationPhase2Enabled) {\r\n property.enum = _.without(property.enum, 'Turkish', 'Serbian', 'Bosnian', 'Albanian', 'Macedonian', 'Icelandic');\r\n }\r\n if (property.columnName === 'Language' && !permissions.IsAdsGlobalizationPhase6Enabled) {\r\n property.enum = _.without(property.enum, 'Hebrew', 'Russian');\r\n }\r\n if (property.columnName === 'Language' && !permissions.IsAdsGlobalizationPhase2JapanEnabled) {\r\n property.enum = _.without(property.enum, 'Japanese');\r\n }\r\n if (property.columnName === 'Language' && !permissions.IsAdsGlobalizationPhase9Enabled) {\r\n property.enum = _.without(property.enum, 'Hindi', 'Malay', 'Thai', 'Indonesian', 'Tagalog', 'SimplifiedChinese');\r\n }\r\n if (property.columnName === 'Language' && !permissions.IsAdsGlobalizationPhase9VIEnabled) {\r\n property.enum = _.without(property.enum, 'Vietnamese');\r\n }\r\n if (property.columnName === 'Language' && permissions.IsDomesticSimplifiedChineseEnabled) {\r\n property.enum = ['SimplifiedChinese'];\r\n }\r\n const localizationMap = localizeEnumValues(i18n, property, rawKey);\r\n if (property.columnName === 'AdType' && permissions.IsMultiMediaAdsEnabled) {\r\n // When enable IsMultiMediaAdsEnabled, show text as \"Responsive ad / Multimedia ad\"\r\n localizationMap.ResponsiveAd = i18n.getString(_TL_('Responsive ad / Multimedia ad'));\r\n }\r\n\r\n property.enum = _.chain(property.enum)\r\n .sortBy(property.type === 'integer' ? _.identity : _.propertyOf(localizationMap))\r\n // CheckboxEditor requires enum value to be string\r\n // @bingads-webui/predicate-list-react/src/predicate-value-editors/checkbox-editor.js\r\n // checked: PropTypes.arrayOf(PropTypes.string)\r\n .map(v => String(v))\r\n .value();\r\n // keys in property.localized must have the same order with property.enum\r\n property.localized = _.chain(property.enum)\r\n .map(enumValue => [enumValue, localizationMap[enumValue]])\r\n .object()\r\n .value();\r\n\r\n if (property.enum.length > maxCheckboxValues) {\r\n // Enforce using selector\r\n // @bingads-webui/predicate-list/src/predicate-creator.es line 12\r\n property.type = 'id';\r\n property.name = property.title;\r\n property.addtionalParams = {\r\n dataSource: {\r\n get(dummy, query) {\r\n let result = [...property.enum];\r\n\r\n if (_.isString(query)) {\r\n const queryLowerCase = query.toLowerCase();\r\n\r\n result = _.filter(result, (enumValue) => {\r\n const enumLowerCase = property.localized[enumValue].toLowerCase();\r\n\r\n return enumLowerCase.includes(queryLowerCase);\r\n });\r\n }\r\n\r\n result = _.map(result, enumValue => ({\r\n Id: enumValue,\r\n Name: property.localized[enumValue],\r\n }));\r\n\r\n return result;\r\n },\r\n itemsDisplayLimit: Number.MAX_SAFE_INTEGER,\r\n },\r\n selectorOptions: {\r\n keyMap: {\r\n Selector_Filter_Placeholder: () => `${i18n.getString(_TL_('Select'))} ${property.title}`,\r\n },\r\n },\r\n };\r\n if (isUIVnext) {\r\n // name must be identical to key, see\r\n // @bingads-webui/predicate-list-react/src/predicate-value-editors/selector-editor.js\r\n // line 102\r\n // @bingads-webui/predicate-list/src/viewmodel/predicate.es line 18\r\n property.name = rawKey;\r\n // bypass default value\r\n // @bingads-webui/viewmodel-schema/src/default-value.es\r\n property.nullable = true;\r\n // Stub for hummanrized-predicate\r\n // @bingads-webui/humanized-predicate/src/humanized-predicate.js\r\n property.addtionalParams.dataSource.getByIds = (ids) => {\r\n const result = _.map(ids, id => ({\r\n Id: id,\r\n Name: id,\r\n }));\r\n\r\n return Promise.resolve(result);\r\n };\r\n }\r\n } else {\r\n property.chooseType = 'checkbox';\r\n // Enforce filter-i18n to consume property.localized\r\n // @bingads-webui/filter-i18n/src/index.es line 91\r\n property.type = 'string';\r\n }\r\n } else if (property.type === 'string') {\r\n property.chooseType = 'textarea';\r\n property.operators = ['eq'];\r\n property.maxLength = 1024;\r\n property.customParameters = {\r\n lowerDescription: i18n.getString(_TL_('Maximum 1024 character limit')),\r\n upperDescription: getUpperDescription(i18n, rawKey),\r\n };\r\n } else if (property.type === 'integer') {\r\n property.minimum = 0;\r\n property.required = true;\r\n } else {\r\n // filter definition is invalid, omit\r\n return null;\r\n }\r\n\r\n return property;\r\n}\r\n\r\nexport function filterSchemaProcessor(\r\n filterSchema, i18n,\r\n isUIVnext, permissions\r\n) {\r\n const properties = _.chain(filterSchema.properties)\r\n .pairs()\r\n .map(([key, property]) => [key, processProperty(\r\n property,\r\n key, i18n, isUIVnext, permissions\r\n )])\r\n // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars\r\n .reject(([key, property]) => !property)\r\n // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars\r\n .sortBy(([key, property]) => property.title)\r\n .object()\r\n .value();\r\n\r\n return {\r\n ...filterSchema,\r\n name: 'ReportingUI',\r\n properties,\r\n };\r\n}\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport 'bootstrap/js/dropdown';\r\nimport { withPerfMarker } from '@bingads-webui/performance-marker-react-wrapper';\r\nimport { PredicateList } from '@bingads-webui/predicate-list';\r\nimport { BackboneInstanceWrapper } from '@bingads-webui-react/backbone-instance-wrapper';\r\nimport ReportingProps from '@bingads-webui-campaign-react/props-reporting';\r\nimport { filterSchemaProcessor } from './filter-schema-processor';\r\n\r\nexport class FilterComponent extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n const {\r\n i18n, legacyI18n, reportSchema, data,\r\n permissions,\r\n } = props;\r\n\r\n const filterSchema = filterSchemaProcessor(\r\n reportSchema.Filters,\r\n i18n, false, permissions\r\n );\r\n this.predicateList = new PredicateList({\r\n entitySchema: filterSchema,\r\n i18n: legacyI18n,\r\n maxConditionCount: Number.MAX_SAFE_INTEGER,\r\n onPredicateChange: this.onPredicateChange,\r\n });\r\n\r\n if (data && data.predicates) {\r\n this.predicateList.setPredicates(data.predicates);\r\n }\r\n\r\n this.predicateList.render();\r\n }\r\n\r\n shouldComponentUpdate(nextProps) {\r\n if (!this.props.showValidationErrors && nextProps.showValidationErrors) {\r\n this.predicateList.showValidationErrors();\r\n }\r\n // Nothing to update\r\n return false;\r\n }\r\n\r\n onPredicateChange = (currData) => {\r\n const whiteList = ['isValid', 'predicates', 'predicateCount'];\r\n const {\r\n data: prevData,\r\n setData,\r\n } = this.props;\r\n const prevDataPick = _.pick(prevData, whiteList);\r\n const currDataPick = _.pick(currData, whiteList);\r\n\r\n // Allow no filter\r\n if (currDataPick.predicateCount === 0) {\r\n currDataPick.isValid = true;\r\n }\r\n\r\n if (!_.isEqual(prevDataPick, currDataPick)) {\r\n setData(currDataPick);\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n \r\n
);\r\n }\r\n}\r\n\r\n\r\nFilterComponent.propTypes = {\r\n i18n: ReportingProps.i18n.isRequired,\r\n legacyI18n: ReportingProps.i18n.isRequired,\r\n reportSchema: ReportingProps.reportSchema.isRequired,\r\n setData: PropTypes.func.isRequired,\r\n data: PropTypes.objectOf(PropTypes.any),\r\n showValidationErrors: PropTypes.bool.isRequired,\r\n permissions: PropTypes.shape({}),\r\n};\r\n\r\nFilterComponent.defaultProps = {\r\n data: null,\r\n permissions: {\r\n IsAdsGlobalizationPhase1Enabled: false,\r\n },\r\n};\r\n\r\nconst wrapped = withPerfMarker(FilterComponent, { name: 'reporting-filter' });\r\nexport { wrapped as Filter };\r\n","import _ from 'underscore';\r\n\r\nfunction isPlainObject(value) {\r\n return _.isObject(value) && !_.isArray(value);\r\n}\r\n\r\nexport function queryToPredicates(query) {\r\n if (!isPlainObject(query) || _.isEmpty(query)) {\r\n return [];\r\n }\r\n if (query.$and) {\r\n return query.$and;\r\n }\r\n return [query];\r\n}\r\n\r\nexport function predicatesToQuery(predicates) {\r\n if (!_.isArray(predicates) || _.isEmpty(predicates)) {\r\n return {};\r\n }\r\n if (predicates.length === 1) {\r\n return predicates[0];\r\n }\r\n return {\r\n $and: predicates,\r\n };\r\n}\r\n\r\nexport function validateGoalIdFilter(filter) {\r\n const { predicates } = filter;\r\n if (_.isArray(predicates) && predicates.length > 0) {\r\n const goalIdPredicate = _.find(predicates, predicate => _.has(predicate, 'GoalIds'));\r\n if (_.isObject(goalIdPredicate)) {\r\n const regex = /^\\d+(,\\d+)*$/;\r\n return regex.test(goalIdPredicate.GoalIds.$eq);\r\n }\r\n return true;\r\n }\r\n return true;\r\n}\r\n\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport 'bootstrap/js/dropdown';\r\nimport { Button, Glyphicon } from '@bingads-webui-react/primitive';\r\nimport { withPerfMarker } from '@bingads-webui/performance-marker-react-wrapper';\r\nimport { PredicateList } from '@bingads-webui/predicate-list-react';\r\nimport ReportingProps from '@bingads-webui-campaign-react/props-reporting';\r\nimport { FilterEntity } from '@bingads-webui/filter-entity';\r\nimport { filterSchemaProcessor } from './filter-schema-processor';\r\nimport { queryToPredicates, predicatesToQuery } from './filter-util';\r\n\r\nexport class FilterComponent extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n const {\r\n i18n, reportSchema,\r\n permissions,\r\n } = props;\r\n\r\n this.filterSchema = filterSchemaProcessor(\r\n reportSchema.Filters,\r\n i18n, true, permissions\r\n );\r\n this.editableFilter = new FilterEntity({}, {\r\n entitySchema: this.filterSchema,\r\n });\r\n }\r\n\r\n onQueryChange = (query) => {\r\n const {\r\n data: prevData,\r\n setData,\r\n } = this.props;\r\n const currData = {\r\n predicates: queryToPredicates(query),\r\n };\r\n\r\n if (!_.isEqual(prevData, currData)) {\r\n setData(currData);\r\n }\r\n }\r\n\r\n onQueryReset = () => {\r\n this.onQueryChange(null);\r\n }\r\n\r\n render() {\r\n const {\r\n classes,\r\n i18n,\r\n data: {\r\n predicates,\r\n },\r\n } = this.props;\r\n\r\n const query = predicatesToQuery(predicates);\r\n this.editableFilter.updateQuery(query);\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n {this.props.i18n.getString(_TL_('Reset'))}\r\n \r\n
);\r\n }\r\n}\r\n\r\n\r\nFilterComponent.propTypes = {\r\n classes: PropTypes.objectOf(PropTypes.string).isRequired,\r\n i18n: ReportingProps.i18n.isRequired,\r\n reportSchema: ReportingProps.reportSchema.isRequired,\r\n setData: PropTypes.func.isRequired,\r\n data: PropTypes.objectOf(PropTypes.any),\r\n permissions: PropTypes.shape({}),\r\n};\r\n\r\nFilterComponent.defaultProps = {\r\n data: null,\r\n permissions: {\r\n IsAdsGlobalizationPhase1Enabled: false,\r\n },\r\n};\r\n\r\nconst wrapped = withPerfMarker(FilterComponent, { name: 'reporting-filter' });\r\nexport { wrapped as Filter };\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport 'bootstrap/js/dropdown';\r\nimport ReportingProps from '@bingads-webui-campaign-react/props-reporting';\r\nimport { withPermissionContext } from '@bingads-webui-campaign/report-shared';\r\nimport { Filter as FilterOld } from './filter-old';\r\nimport { Filter as FilterNew } from './filter-new';\r\nimport { validateGoalIdFilter } from './filter-util';\r\n\r\nfunction FilterSection(props) {\r\n const {\r\n classes,\r\n data,\r\n i18n,\r\n reportSchema,\r\n permissions,\r\n showValidationErrors,\r\n } = props;\r\n const hasFilters = _.size(reportSchema.Filters.properties) > 0;\r\n const Filter = permissions.IsReportingUIPhaseNext ? FilterNew : FilterOld;\r\n const { setData: originalSetData } = props;\r\n\r\n const wrappedSetData = (oldData) => {\r\n let newData = oldData;\r\n if (!validateGoalIdFilter(newData)) {\r\n newData = _.defaults({ isValid: false }, newData);\r\n }\r\n originalSetData(newData);\r\n };\r\n\r\n return hasFilters ?\r\n \r\n \r\n {\r\n showValidationErrors && !validateGoalIdFilter(data) &&\r\n
\r\n {i18n.getString(_TL_('Goal ID filter only allows comma separated integer values.'))}\r\n
\r\n }\r\n
\r\n :\r\n i18n.getString(_TL_('There are no filters defined for this report.'));\r\n}\r\n\r\nFilterSection.propTypes = {\r\n classes: PropTypes.objectOf(PropTypes.string).isRequired,\r\n i18n: ReportingProps.i18n.isRequired,\r\n legacyI18n: ReportingProps.i18n.isRequired,\r\n reportSchema: ReportingProps.reportSchema.isRequired,\r\n setData: PropTypes.func.isRequired,\r\n data: PropTypes.objectOf(PropTypes.any),\r\n showValidationErrors: PropTypes.bool.isRequired,\r\n permissions: ReportingProps.permissions.isRequired,\r\n};\r\n\r\nFilterSection.defaultProps = {\r\n data: null,\r\n};\r\n\r\nconst Wrapped = withPermissionContext(FilterSection);\r\n\r\nexport { Wrapped as FilterSection };\r\n","import _ from 'underscore';\r\n\r\nfunction getRejectedColumns(permissions, pilotSets) {\r\n let rejectedColumns = [];\r\n _.forEach(pilotSets, ({ isAllowed, columns }) => {\r\n if (!isAllowed(permissions)) {\r\n rejectedColumns = _.union(rejectedColumns, columns);\r\n }\r\n });\r\n\r\n return rejectedColumns;\r\n}\r\n\r\nexport const filterDefaultColumnByPilot = (permissions, defaultColumn, pilotSets) => {\r\n const rejectedColumns = getRejectedColumns(permissions, pilotSets);\r\n\r\n const filtered = _.difference(defaultColumn, rejectedColumns);\r\n return filtered;\r\n};\r\n","import _ from 'underscore';\r\nimport { predicateValueEditorStyle, uiblockerStyle, underlineLinkStyle } from '@bingads-webui-campaign-react/common-styles';\r\nimport { radioAndCheckboxStyle } from './radio-checkbox-style';\r\n\r\n/* istanbul ignore file */\r\nexport const getStyle = function (components, core) {\r\n const baseStyle = {\r\n createReportContainer: {\r\n '& .blocker-indicator': {\r\n position: 'absolute',\r\n },\r\n },\r\n container: {\r\n width: '100%',\r\n marginTop: '16px',\r\n marginBottom: '10px',\r\n paddingLeft: '24px',\r\n position: 'relative',\r\n '& div.error': {\r\n color: '#A80000',\r\n },\r\n },\r\n title: {\r\n fontFamily: 'Arial',\r\n fontSize: '20px',\r\n color: '#333333',\r\n marginBottom: '10px',\r\n },\r\n description:\r\n {\r\n margin: '15px 10px',\r\n },\r\n actions: {\r\n marginTop: '22px',\r\n marginLeft: '7px',\r\n },\r\n sla: {\r\n marginTop: '20px',\r\n fontSize: '10px',\r\n color: '#666666',\r\n },\r\n customizationContent: {\r\n width: '994px',\r\n minWidth: '994px',\r\n },\r\n blocker: {\r\n height: '100%',\r\n },\r\n paddingTop5: {\r\n paddingTop: '5px',\r\n },\r\n accountCampaignSelector: {\r\n '& > div > .row': {\r\n marginLeft: '0',\r\n marginRight: '0',\r\n '& > .col-sm-4': {\r\n padding: '0',\r\n width: '100%',\r\n },\r\n },\r\n ...radioAndCheckboxStyle(components, core),\r\n },\r\n positionRelative: {\r\n position: 'relative',\r\n },\r\n goalIdErrorMsg: {\r\n color: '#D90026',\r\n marginTop: '10px',\r\n },\r\n timeRangeSelector: {\r\n },\r\n };\r\n if (!core.isUIVnext) {\r\n return baseStyle;\r\n }\r\n const blockStyle = uiblockerStyle({ palette: core.palette });\r\n return {\r\n ...baseStyle,\r\n createReportContainer: {\r\n '& .blocker-global': _.extend(blockStyle['.blocker-global'], blockStyle['.blocker-global, .blocker-local'], blockStyle['.blocker, .blocker-global, .blocker-local']),\r\n },\r\n container: _.extend(baseStyle.container, {\r\n marginTop: '14px',\r\n marginBottom: '18px',\r\n paddingLeft: '32px',\r\n }),\r\n title: _.extend(baseStyle.title, {\r\n fontSize: '26px',\r\n fontFamily: 'inherit',\r\n fontWeight: '500',\r\n color: '#333333',\r\n paddingBottom: '10px',\r\n borderBottom: `1px solid ${core.palette.neutralLighter};`,\r\n }),\r\n description: _.extend(baseStyle.description, {\r\n marginTop: '8px',\r\n marginLeft: '0px',\r\n '& b': {\r\n fontWeight: '500',\r\n },\r\n }),\r\n customizationContent: _.extend(baseStyle.customizationContent, {\r\n width: '1302px',\r\n minWidth: '1302px',\r\n paddingLeft: '0 !important',\r\n }),\r\n generalSetting: {\r\n width: '435px',\r\n '& .compared-date-range-picker-input button': {\r\n width: '435px',\r\n },\r\n '& .single-row': {\r\n position: 'static',\r\n },\r\n },\r\n filterContainer: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'space-between',\r\n '& > .predicate-list': {\r\n paddingLeft: 0,\r\n },\r\n '& .add-filter-button': {\r\n background: 'transparent',\r\n marginLeft: 0,\r\n '&:focus': {\r\n background: 'transparent',\r\n },\r\n '&:focus:after': {\r\n border: 0,\r\n },\r\n },\r\n '& .filter-bar-button': {\r\n height: '56px',\r\n border: 0,\r\n '&:focus:after': {\r\n border: 0,\r\n },\r\n '& .iconba': {\r\n color: core.palette.themePrimary,\r\n },\r\n },\r\n '& .btn:focus': {\r\n outline: '1px solid',\r\n },\r\n '& .selector-placeholder.labels-selector': (() => {\r\n const selectorStyle = predicateValueEditorStyle.selector({ palette: core.palette });\r\n // Fix bug 3279977\r\n if (_.result(selectorStyle, ['& .search-box-v2', '& .search-box__input.form-control', 'width'])) {\r\n delete selectorStyle['& .search-box-v2']['& .search-box__input.form-control'].width;\r\n }\r\n return selectorStyle;\r\n })(),\r\n },\r\n actions: {\r\n marginTop: '60px',\r\n '& button + button': {\r\n marginLeft: '12px',\r\n },\r\n },\r\n sla: {\r\n marginTop: '20px',\r\n fontSize: '12px',\r\n color: `${core.palette.neutralPrimary}`,\r\n ...underlineLinkStyle({ palette: core.palette, elementLocator: 'a.HelpTopic' }),\r\n '& a.HelpTopic:focus': {\r\n border: 0,\r\n },\r\n },\r\n };\r\n};\r\n","import React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport ReportingProps from '@bingads-webui-campaign-react/props-reporting';\r\nimport _ from 'underscore';\r\nimport { perfMarkerPropTypes } from '@bingads-webui/performance-marker';\r\nimport { ValidationGroup } from '@bingads-webui-react/primitive-validation';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { UiBlocker } from '@bingads-webui-react/ui-blocker';\r\nimport { Panel } from '@bingads-webui-campaign/report-controls';\r\nimport { HelpLink, withPermissionContext } from '@bingads-webui-campaign/report-shared';\r\nimport { fromLegacyTimeZone } from '@bingads-webui-universal/time-zone-converter';\r\nimport { ActionCenter, Warning } from './components';\r\nimport { sectionType, renderTypes as allRenderTypes, ScopeFilterLevel, getScopeFilterLevel } from './config';\r\nimport { getDefaultTimeRange } from './config/time-ranges';\r\nimport { RootSection, GeneralSection, ColumnSection, FilterSection, SettingSection } from './sections';\r\nimport { filterDefaultColumnByPilot } from './pilot';\r\nimport { getStyle } from './style';\r\n\r\nconst {\r\n GENERAL, COLUMN, FILTER, SETTING, ROOT,\r\n} = sectionType;\r\n\r\nclass CreateReport extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n const panelStatus = {\r\n [GENERAL]: true,\r\n [COLUMN]: false,\r\n [FILTER]: false,\r\n [SETTING]: false,\r\n };\r\n const {\r\n i18n,\r\n reportDefinition,\r\n reportSchema,\r\n identityDetails: {\r\n customer,\r\n account: {\r\n Id: accountId,\r\n Name: accountName,\r\n TimeZone: accountTimeZone,\r\n } = {},\r\n },\r\n savedReportData,\r\n saveType,\r\n permissions: {\r\n IsReportingUIPhaseNext,\r\n IsReportsMergeEnabled,\r\n },\r\n } = props;\r\n\r\n this.defaultColumns = filterDefaultColumnByPilot(\r\n props.permissions,\r\n props.reportSchema.Columns.default,\r\n props.reportSchema.Columns.pilotDefault\r\n );\r\n\r\n const customerOrAccountName = IsReportingUIPhaseNext && accountId && accountName ?\r\n accountName :\r\n customer.Name;\r\n const defaultData = {\r\n [ROOT]: {\r\n name: `${reportDefinition.name} ${i18n.formatDate(new Date(), { timeZone: null, skeleton: 'yMd' })} ${customerOrAccountName}`,\r\n type: reportDefinition.apiKey,\r\n schemaName: reportSchema.SchemaName,\r\n renderType: 'Table',\r\n },\r\n [GENERAL]: {\r\n timeGrain: reportSchema.ReportAggregation.default,\r\n timeRange: {\r\n key: getDefaultTimeRange(reportSchema.ReportAggregation.default, reportSchema),\r\n },\r\n timeZone: IsReportingUIPhaseNext && accountId && accountTimeZone ?\r\n fromLegacyTimeZone(accountTimeZone) :\r\n 'PacificTimeUSCanadaTijuana',\r\n format: 'Xlsx',\r\n accountCampaignSelector: {\r\n CustomerScopes:\r\n getScopeFilterLevel(reportSchema.ScopeFilterLevel) === ScopeFilterLevel.None ?\r\n [customer.Id] : null,\r\n AccountIds:\r\n (getScopeFilterLevel(reportSchema.ScopeFilterLevel) === ScopeFilterLevel.Account) &&\r\n IsReportingUIPhaseNext && accountId ?\r\n [accountId] : null,\r\n },\r\n userScopes: null,\r\n },\r\n [COLUMN]: {\r\n selected: this.defaultColumns,\r\n },\r\n [FILTER]: {\r\n isValid: true,\r\n },\r\n [SETTING]: {\r\n type: IsReportsMergeEnabled ?\r\n saveType :\r\n 'ReportUI',\r\n scheduleThisReport: false,\r\n includeTotalRow: false,\r\n AttachFileToEmail: false,\r\n EmailRecipients: '',\r\n // if cron not def it must be empty string\r\n Cron: '',\r\n StartDate: null,\r\n EndDate: null,\r\n },\r\n };\r\n\r\n this.state = {\r\n blocking: false,\r\n panelStatus,\r\n showValidationErrors: false,\r\n data: savedReportData ?\r\n _.mapObject(savedReportData, (value, key) => _.defaults(value, defaultData[key])) :\r\n defaultData,\r\n warnings: {},\r\n renderTypes: _.pick(allRenderTypes, reportSchema.RenderTypes),\r\n };\r\n\r\n this.accountSelectorPerfMarker = this.props.creationPerfMarker.createChild('accountCampaignSelector');\r\n this.accountSelectorPerfMarker.willInit();\r\n }\r\n\r\n componentDidMount() {\r\n this.props.creationPerfMarker.done();\r\n }\r\n\r\n onPanelClick = (val) => {\r\n const panelStatus = { ...this.state.panelStatus };\r\n panelStatus[val] = !panelStatus[val];\r\n this.setState({ panelStatus });\r\n }\r\n\r\n onFailedValidation = (section) => {\r\n const { ...panelStatus } = this.state.panelStatus;\r\n panelStatus[section] = true;\r\n this.setState({ panelStatus, showValidationErrors: true });\r\n };\r\n\r\n setSection = (section, newData) => {\r\n const { ...data } = this.state.data;\r\n data[section] = _.defaults(newData, this.state.data[section]);\r\n this.setState({\r\n data,\r\n });\r\n }\r\n\r\n setWarning = (key, value) => {\r\n const { ...warnings } = this.state.warnings;\r\n warnings[key] = value;\r\n this.setState({\r\n warnings,\r\n });\r\n }\r\n\r\n setBlocker = (shoudBlock) => {\r\n this.setState({ blocking: shoudBlock });\r\n }\r\n\r\n setFilterSection = (data) => {\r\n this.setSection(FILTER, data);\r\n }\r\n\r\n setGeneralSection = (newData) => {\r\n const { ...data } = this.state.data;\r\n data[GENERAL] = _.defaults(newData, this.state.data[GENERAL]);\r\n if (data[GENERAL].format !== 'Xlsx') {\r\n data[SETTING] = _.defaults({ includeTotalRow: false }, this.state.data[SETTING]);\r\n }\r\n this.setState({\r\n data,\r\n });\r\n }\r\n\r\n setRootSection = (newData) => {\r\n const { ...data } = this.state.data;\r\n data[ROOT] = _.defaults(newData, this.state.data[ROOT]);\r\n\r\n if (newData.renderType && newData.renderType !== this.state.data[ROOT].renderType) {\r\n if (data[ROOT].renderType === 'Linechart') {\r\n data[GENERAL] = _.defaults({ timeGrain: 'Daily' }, this.state.data[GENERAL]);\r\n data[COLUMN] = _.defaults(\r\n { selected: this.props.reportSchema.Columns.linechartDefault },\r\n this.state.data[COLUMN]\r\n );\r\n } else if (data[ROOT].renderType === 'Barchart') {\r\n data[GENERAL] = _.defaults({ timeGrain: 'Summary' }, this.state.data[GENERAL]);\r\n data[COLUMN] = _.defaults(\r\n { selected: this.props.reportSchema.Columns.barchartDefault },\r\n this.state.data[COLUMN]\r\n );\r\n } else {\r\n data[COLUMN] = _.defaults(\r\n { selected: this.defaultColumns },\r\n this.state.data[COLUMN]\r\n );\r\n }\r\n }\r\n\r\n this.setState({\r\n data,\r\n });\r\n }\r\n\r\n render() {\r\n const {\r\n i18n, reportDefinition, updateId, reportSchema,\r\n legacyI18n, classes, identityDetails, saveType,\r\n permissions: {\r\n IsInternalUser,\r\n IsReportingUIPhaseNext,\r\n },\r\n } = this.props;\r\n const {\r\n account: {\r\n Id: accountId,\r\n TimeZone: accountTimeZone,\r\n } = {},\r\n } = identityDetails;\r\n const { panelStatus, renderTypes } = this.state;\r\n const getValidationItemProps = field =>\r\n ({ field, alwaysShowError: this.state.showValidationErrors });\r\n const disableTimeZoneSelector = IsReportingUIPhaseNext && accountId && accountTimeZone;\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n this.onPanelClick(GENERAL)} isUIVnext={IsReportingUIPhaseNext}>\r\n { this.accountSelectorPerfMarker.done(); }}\r\n />\r\n \r\n this.onPanelClick(COLUMN)} isUIVnext={IsReportingUIPhaseNext}>\r\n this.setSection(COLUMN, data)}\r\n timeGrain={this.state.data[GENERAL].timeGrain}\r\n renderType={this.state.data[ROOT].renderType}\r\n />\r\n \r\n this.onPanelClick(FILTER)} isUIVnext={IsReportingUIPhaseNext}>\r\n \r\n \r\n this.onPanelClick(SETTING)} isUIVnext={IsReportingUIPhaseNext}>\r\n this.setSection(SETTING, data)}\r\n forceValidate={this.state.showValidationErrors}\r\n disableIncludeTotalRow={\r\n !_.some(reportSchema.Columns.categories, category => category.type === 'MetricColumns') ||\r\n this.state.data[GENERAL].format !== 'Xlsx'\r\n }\r\n />\r\n \r\n
\r\n \r\n
\r\n {\r\n \r\n }\r\n
\r\n
\r\n {i18n.getString(_TL_('Not all metrics are in real time. Clicks and impressions in the last 1 hour, UET conversions in the last 2 hours, and Non-UET conversions (App Install, Offline Conversions) in the last 5 hours might not be included.'))}\r\n
\r\n \r\n
\r\n {\r\n reportDefinition.helpId &&\r\n
\r\n }\r\n
\r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nconst CreateReportStyled = withPermissionContext(withDefaultStyles(CreateReport, getStyle));\r\nexport { CreateReportStyled as CreateReport };\r\n\r\n\r\n/* eslint-disable react/no-typos */\r\nCreateReport.propTypes = {\r\n classes: PropTypes.objectOf(PropTypes.string).isRequired,\r\n reportDefinition: ReportingProps.reportDefinition.isRequired,\r\n identityDetails: ReportingProps.identityDetails.isRequired,\r\n // logger: ReportingProps.logger.isRequired,\r\n i18n: ReportingProps.i18n.isRequired,\r\n legacyI18n: ReportingProps.i18n.isRequired,\r\n // eslint-disable-next-line react/forbid-prop-types\r\n updateId: ReportingProps.updateId,\r\n reportSchema: ReportingProps.reportSchema.isRequired,\r\n savedReportData: PropTypes.objectOf(PropTypes.any),\r\n permissions: ReportingProps.permissions.isRequired,\r\n creationPerfMarker: perfMarkerPropTypes.isRequired,\r\n saveType: PropTypes.string.isRequired,\r\n};\r\n\r\nCreateReport.defaultProps = {\r\n updateId: undefined,\r\n savedReportData: null,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport ReportingProps from '@bingads-webui-campaign-react/props-reporting';\r\nimport { perfMarkerPropTypes } from '@bingads-webui/performance-marker';\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\nimport { withInstrumentation } from '@bingads-webui-react/hoc-with-instrumentation';\r\nimport { Loading } from '@bingads-webui-campaign/report-controls';\r\nimport { NavLink } from 'react-router-dom';\r\nimport { withReportListContext, withRepositoryContext, withLegacyI18n, withIdentityContext, withPermissionContext, getErrorMessage, DefaultErrorView, navigator } from '@bingads-webui-campaign/report-shared';\r\nimport { deprecatedReports, schema } from '@bingads-webui-campaign/report-schema';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { withLastPromise, get } from '@bingads-webui-universal/primitive-utilities';\r\nimport { CreateReport } from './create-report';\r\nimport { getSaveType, isValidSaveType, getPartialConversionsQualifiedColumns } from './config';\r\nimport { getDataObject } from './components/shared/formatter/map';\r\nimport { getStyle } from './style';\r\n\r\n\r\nclass CreateReportIndex extends React.PureComponent {\r\n static instrumentationSchema = {\r\n scenario: [\r\n {\r\n name: 'CreateReport',\r\n value: 'reporting/CreateReport',\r\n activity: [\r\n {\r\n name: 'general',\r\n value: 'general',\r\n },\r\n ],\r\n },\r\n ],\r\n }\r\n\r\n static setupInstrumentation = (instrumentation) => {\r\n instrumentation.addScenario(CreateReportIndex.instrumentationSchema);\r\n return instrumentation.CreateReport.create();\r\n }\r\n\r\n static shouldReloadTaskItem(currentProps, previousProps) {\r\n const keys = ['executionId', 'templateId'];\r\n const currentPropsPick = _.pick(currentProps, keys);\r\n const previousPropsPick = _.pick(previousProps, keys);\r\n\r\n if (!_.isEqual(currentPropsPick, previousPropsPick)) {\r\n return currentPropsPick;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n static getDerivedStateFromProps(props, state) {\r\n const derivedState = CreateReportIndex.shouldReloadTaskItem(props, state);\r\n if (derivedState) {\r\n // Store propsPick in state so we can compare when props change.\r\n // Clear out previously-loaded data (so we don't render stale stuff).\r\n // https://reactjs.org/blog/2018/03/27/update-on-async-rendering.html#fetching-external-data-when-props-change\r\n return {\r\n ...derivedState,\r\n taskItem: null,\r\n };\r\n }\r\n\r\n return null;\r\n }\r\n\r\n constructor(props) {\r\n super(props);\r\n const { instrumentation, viewName, perfMarker } = this.props;\r\n this.logger = CreateReportIndex.setupInstrumentation(instrumentation).general.create();\r\n this.creationPerfMarker = perfMarker.createChild(viewName);\r\n this.creationPerfMarker.willInit();\r\n }\r\n\r\n state = {\r\n taskItem: null,\r\n }\r\n\r\n componentDidMount() {\r\n this.fetchTaskItem();\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (CreateReportIndex.shouldReloadTaskItem(this.props, prevProps)) {\r\n this.fetchTaskItem();\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n if (this.fetchTaskItemRequest) {\r\n this.fetchTaskItemRequest.cancel();\r\n }\r\n }\r\n\r\n fetchTaskItem() {\r\n const { repository, executionId, templateId } = this.props;\r\n this.creationPerfMarker.willFetchData();\r\n\r\n if (executionId) {\r\n this.fetchTaskItemRequest = withLastPromise({\r\n promiseFactory: () => repository.getDetailsByExecutionId(executionId),\r\n finish: ({\r\n TaskItem: taskItem,\r\n } = {}) => {\r\n this.fetchTaskItemRequest = null;\r\n this.setState({ taskItem, errorCode: null });\r\n },\r\n fail: (error) => {\r\n const errorCode = get(error, 'body.value[0].Code');\r\n this.setState({ taskItem: null, errorCode });\r\n },\r\n })();\r\n } else if (templateId) {\r\n this.fetchTaskItemRequest = withLastPromise({\r\n promiseFactory: () => repository.getDetailsByTaskItemId(templateId),\r\n finish: (taskItem) => {\r\n this.fetchTaskItemRequest = null;\r\n this.setState({ taskItem, errorCode: null });\r\n },\r\n fail: (error) => {\r\n const errorCode = get(error, 'body.value[0].Code');\r\n this.setState({ taskItem: null, errorCode });\r\n },\r\n })();\r\n }\r\n }\r\n\r\n render() {\r\n const {\r\n reportKey, executionId, templateId,\r\n i18n, reportList: { reports }, updateId, legacyI18n, identityDetails,\r\n permissions: { IsReportsMergeEnabled, IsInternalUser, IsReportingUIPhaseNext },\r\n GlobalErrorView,\r\n } = this.props;\r\n const {\r\n account: {\r\n Id: accountId,\r\n } = {},\r\n } = identityDetails;\r\n\r\n if (!reportKey && !executionId && !templateId) {\r\n throw new Error('At least one of reportKey, executionId or templateId is required!');\r\n }\r\n\r\n if (executionId || templateId) {\r\n const { taskItem, errorCode } = this.state;\r\n\r\n if (taskItem) {\r\n const { ReportType: reportType } = taskItem;\r\n if (deprecatedReports[reportType]) {\r\n return (\r\n
\r\n {i18n.getString(_TL_('This report type has been deprecated and is no longer available'))}\r\n
);\r\n }\r\n const reportSchema = schema[reportType];\r\n const reportDefinition = _.find(reports, ({ apiKey }) => apiKey === reportType);\r\n const savedReportData = getDataObject(taskItem);\r\n const saveType = getSaveType({\r\n IsReportsMergeEnabled,\r\n IsInternalUser,\r\n accountScope: !!accountId,\r\n taskItem,\r\n });\r\n\r\n // In new UI, we should always check 'Save as custom report' option,\r\n // even if it's create similar from a report instance.\r\n if (IsReportingUIPhaseNext && !isValidSaveType(savedReportData.setting.type)) {\r\n savedReportData.setting.type = saveType;\r\n }\r\n\r\n if (this.props.permissions.dynamic.PartialConversions) {\r\n savedReportData.column.selected =\r\n getPartialConversionsQualifiedColumns(savedReportData.column.selected);\r\n }\r\n\r\n this.creationPerfMarker.willRender();\r\n\r\n return (\r\n \r\n );\r\n }\r\n\r\n if (errorCode) {\r\n return (\r\n
\r\n {i18n.getString(_TL_('Back to custom reports'))},\r\n ]}\r\n />\r\n
\r\n );\r\n }\r\n\r\n return ;\r\n }\r\n\r\n const reportDefinition = reports[reportKey];\r\n const { apiKey } = reportDefinition;\r\n const reportSchema = schema[apiKey];\r\n const saveType =\r\n getSaveType({ IsReportsMergeEnabled, IsInternalUser, accountScope: !!accountId });\r\n this.creationPerfMarker.willRender();\r\n\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\n\r\n/* eslint-disable react/no-typos */\r\nCreateReportIndex.propTypes = {\r\n reportKey: PropTypes.string,\r\n executionId: PropTypes.string,\r\n templateId: PropTypes.string,\r\n instrumentation: ReportingProps.instrumentation.isRequired,\r\n permissions: ReportingProps.permissions.isRequired,\r\n i18n: ReportingProps.i18n.isRequired,\r\n legacyI18n: ReportingProps.i18n.isRequired,\r\n reportList: ReportingProps.reportList.isRequired,\r\n identityDetails: ReportingProps.identityDetails.isRequired,\r\n repository: ReportingProps.repository.isRequired,\r\n updateId: PropTypes.string,\r\n perfMarker: perfMarkerPropTypes.isRequired,\r\n viewName: PropTypes.string,\r\n GlobalErrorView: PropTypes.elementType,\r\n};\r\n\r\nCreateReportIndex.defaultProps = {\r\n reportKey: null,\r\n executionId: null,\r\n templateId: null,\r\n updateId: undefined,\r\n viewName: 'createReport',\r\n GlobalErrorView: DefaultErrorView,\r\n};\r\n\r\nconst hocs = [\r\n _.partial(withDefaultStyles, _, getStyle),\r\n withRepositoryContext,\r\n withIdentityContext,\r\n withReportListContext,\r\n withInstrumentation,\r\n withLegacyI18n,\r\n withI18nConsumer,\r\n withPermissionContext,\r\n];\r\n\r\nconst WrappedCreateReport = _.compose(...hocs)(CreateReportIndex);\r\n\r\nexport { WrappedCreateReport as CreateReport };\r\n","export const VideoMetricColumns = [\r\n 'VideoViews',\r\n 'ViewThroughRate',\r\n 'AverageCPV',\r\n 'TotalWatchTimeInMS',\r\n 'AverageWatchTimePerImpression',\r\n 'AverageWatchTimePerVideoView',\r\n 'VideoViewsAt25Percent',\r\n 'VideoViewsAt50Percent',\r\n 'VideoViewsAt75Percent',\r\n 'CompletedVideoViews',\r\n 'VideoCompletionRate',\r\n];\r\n\r\nexport const performance = {\r\n AccountPerformanceReport: {\r\n default: [\r\n 'TimePeriod',\r\n 'AccountNumber',\r\n 'AccountName',\r\n 'AdDistribution',\r\n 'Impressions',\r\n 'Clicks',\r\n 'CTR',\r\n 'AverageCPC',\r\n 'AverageCPM',\r\n 'Spend',\r\n 'AveragePosition',\r\n 'TopImpressionRatePercent',\r\n 'AbsoluteTopImpressionRatePercent',\r\n 'Conversions',\r\n 'ConversionRate',\r\n 'CostPerConversion',\r\n ...VideoMetricColumns,\r\n ],\r\n mandatory: [\r\n 'TimePeriod',\r\n 'AccountNumber',\r\n 'AccountName',\r\n 'Impressions',\r\n ],\r\n linechartDefault: [\r\n 'AccountName',\r\n ],\r\n barchartDefault: [\r\n 'AccountName',\r\n ],\r\n },\r\n CampaignPerformanceReport: {\r\n default: [\r\n 'TimePeriod',\r\n 'AccountName',\r\n 'CampaignName',\r\n 'AdDistribution',\r\n 'QualityScore',\r\n 'Impressions',\r\n 'Clicks',\r\n 'CTR',\r\n 'AverageCPC',\r\n 'AverageCPM',\r\n 'Spend',\r\n 'AveragePosition',\r\n 'TopImpressionRatePercent',\r\n 'AbsoluteTopImpressionRatePercent',\r\n 'Conversions',\r\n 'ConversionRate',\r\n 'CostPerConversion',\r\n ...VideoMetricColumns,\r\n ],\r\n mandatory: [\r\n 'TimePeriod',\r\n 'Impressions',\r\n ],\r\n linechartDefault: [\r\n 'CampaignName',\r\n ],\r\n barchartDefault: [\r\n 'CampaignName',\r\n ],\r\n },\r\n AdGroupPerformanceReport: {\r\n default: [\r\n 'TimePeriod',\r\n 'AccountName',\r\n 'CampaignName',\r\n 'AdGroupName',\r\n 'AdGroupId',\r\n 'AdDistribution',\r\n 'QualityScore',\r\n 'Impressions',\r\n 'Clicks',\r\n 'CTR',\r\n 'AverageCPC',\r\n 'AverageCPM',\r\n 'Spend',\r\n 'AveragePosition',\r\n 'TopImpressionRatePercent',\r\n 'AbsoluteTopImpressionRatePercent',\r\n 'Conversions',\r\n 'ConversionRate',\r\n 'CostPerConversion',\r\n ...VideoMetricColumns,\r\n ],\r\n mandatory: [\r\n 'TimePeriod',\r\n 'Impressions',\r\n 'AdGroupId',\r\n ],\r\n linechartDefault: [\r\n 'AdGroupName',\r\n ],\r\n barchartDefault: [\r\n 'AdGroupName',\r\n ],\r\n },\r\n AdPerformanceReport: {\r\n default: [\r\n 'TimePeriod',\r\n 'AccountName',\r\n 'CampaignName',\r\n 'AdGroupName',\r\n 'AdId',\r\n 'AdType',\r\n 'AdTitle',\r\n 'TitlePart1',\r\n 'TitlePart2',\r\n 'TitlePart3',\r\n 'AdDescription',\r\n 'AdDescription2',\r\n 'AdDistribution',\r\n 'Impressions',\r\n 'Clicks',\r\n 'CTR',\r\n 'AverageCPC',\r\n 'AverageCPM',\r\n 'Spend',\r\n 'AveragePosition',\r\n 'TopImpressionRatePercent',\r\n 'AbsoluteTopImpressionRatePercent',\r\n 'Conversions',\r\n 'ConversionRate',\r\n 'CostPerConversion',\r\n ...VideoMetricColumns,\r\n ],\r\n mandatory: [\r\n 'TimePeriod',\r\n ],\r\n linechartDefault: [\r\n 'AdId',\r\n ],\r\n barchartDefault: [\r\n 'AdId',\r\n ],\r\n },\r\n KeywordPerformanceReport: {\r\n default: [\r\n 'TimePeriod',\r\n 'AccountName',\r\n 'CampaignName',\r\n 'AdGroupName',\r\n 'KeywordId',\r\n 'Keyword',\r\n 'BidMatchType',\r\n 'AdDistribution',\r\n 'CurrentMaxCpc',\r\n 'QualityScore',\r\n 'Impressions',\r\n 'Clicks',\r\n 'CTR',\r\n 'AverageCPC',\r\n 'Spend',\r\n 'AveragePosition',\r\n 'TopImpressionRatePercent',\r\n 'AbsoluteTopImpressionRatePercent',\r\n 'Conversions',\r\n 'ConversionRate',\r\n 'CostPerConversion',\r\n ],\r\n mandatory: [\r\n 'TimePeriod',\r\n ],\r\n linechartDefault: [\r\n 'Keyword',\r\n ],\r\n barchartDefault: [\r\n 'Keyword',\r\n ],\r\n },\r\n NegativeKeywordConflictReport: {\r\n mandatory: [\r\n 'AccountName',\r\n 'Keyword',\r\n 'NegativeKeyword',\r\n ],\r\n default: [\r\n 'AccountName',\r\n 'CampaignName',\r\n 'AdGroupId',\r\n 'Keyword',\r\n 'NegativeKeyword',\r\n 'ConflictLevel',\r\n ],\r\n },\r\n ShareOfVoiceReport: {\r\n default: [\r\n 'TimePeriod',\r\n 'AccountName',\r\n 'CampaignName',\r\n 'AdGroupName',\r\n 'Language',\r\n 'KeywordId',\r\n 'Impressions',\r\n 'Clicks',\r\n 'CTR',\r\n 'AverageCPC',\r\n 'AverageCPM',\r\n 'Spend',\r\n 'AveragePosition',\r\n 'TopImpressionRatePercent',\r\n 'AbsoluteTopImpressionRatePercent',\r\n 'ImpressionSharePercent',\r\n 'ImpressionLostToBudgetPercent',\r\n 'ImpressionLostToRankAggPercent',\r\n 'Conversions',\r\n 'ConversionRate',\r\n 'CostPerConversion',\r\n ],\r\n mandatory: [\r\n 'TimePeriod',\r\n 'KeywordId',\r\n 'ImpressionSharePercent',\r\n ],\r\n linechartDefault: [\r\n 'AdGroupName',\r\n ],\r\n barchartDefault: [\r\n 'AdGroupName',\r\n ],\r\n },\r\n SearchQueryPerformanceReport: {\r\n default: [\r\n 'TimePeriod',\r\n 'AccountName',\r\n 'CampaignName',\r\n 'AdGroupName',\r\n 'SearchQuery',\r\n 'KeywordId',\r\n 'Keyword',\r\n 'AdId',\r\n 'BidMatchType',\r\n 'DeliveredMatchType',\r\n 'Language',\r\n 'Network',\r\n 'Impressions',\r\n 'Clicks',\r\n 'CTR',\r\n 'AverageCPC',\r\n 'Spend',\r\n 'AveragePosition',\r\n 'TopImpressionRatePercent',\r\n 'AbsoluteTopImpressionRatePercent',\r\n 'Conversions',\r\n 'ConversionRate',\r\n 'CostPerConversion',\r\n ],\r\n mandatory: [\r\n 'TimePeriod',\r\n 'SearchQuery',\r\n ],\r\n linechartDefault: [\r\n 'SearchQuery',\r\n ],\r\n barchartDefault: [\r\n 'SearchQuery',\r\n ],\r\n },\r\n DestinationURLPerformanceReport: {\r\n default: [\r\n 'TimePeriod',\r\n 'AccountName',\r\n 'CampaignName',\r\n 'AdGroupName',\r\n 'DestinationUrl',\r\n 'AdDistribution',\r\n 'Impressions',\r\n 'Clicks',\r\n 'CTR',\r\n 'AverageCPC',\r\n 'Spend',\r\n 'AveragePosition',\r\n 'TopImpressionRatePercent',\r\n 'AbsoluteTopImpressionRatePercent',\r\n 'Conversions',\r\n 'ConversionRate',\r\n 'CostPerConversion',\r\n ],\r\n mandatory: [\r\n 'TimePeriod',\r\n 'AccountName',\r\n 'CampaignName',\r\n 'DestinationUrl',\r\n ],\r\n linechartDefault: [\r\n 'DestinationUrl',\r\n ],\r\n barchartDefault: [\r\n 'DestinationUrl',\r\n ],\r\n },\r\n PublisherUsagePerformanceReport: {\r\n default: [\r\n 'TimePeriod',\r\n 'AccountName',\r\n 'CampaignName',\r\n 'AdGroupName',\r\n 'PublisherUrl',\r\n 'AdDistribution',\r\n 'Impressions',\r\n 'Clicks',\r\n 'CTR',\r\n 'AverageCPC',\r\n 'AverageCPM',\r\n 'Spend',\r\n 'AveragePosition',\r\n 'TopImpressionRatePercent',\r\n 'AbsoluteTopImpressionRatePercent',\r\n 'Conversions',\r\n 'ConversionRate',\r\n 'CostPerConversion',\r\n ],\r\n mandatory: [\r\n 'TimePeriod',\r\n 'AccountName',\r\n 'CampaignName',\r\n 'PublisherUrl',\r\n ],\r\n },\r\n AdDynamicTextPerformanceReport: {\r\n default: [\r\n 'TimePeriod',\r\n 'AccountName',\r\n 'AdGroupName',\r\n 'AdType',\r\n 'AdTitle',\r\n 'TitlePart1',\r\n 'TitlePart2',\r\n 'TitlePart3',\r\n 'DestinationUrl',\r\n 'Param1',\r\n 'Param2',\r\n 'Param3',\r\n 'AdDistribution',\r\n 'Impressions',\r\n 'Clicks',\r\n 'CTR',\r\n 'AverageCPC',\r\n 'Spend',\r\n 'AveragePosition',\r\n 'TopImpressionRatePercent',\r\n 'AbsoluteTopImpressionRatePercent',\r\n 'Conversions',\r\n 'ConversionRate',\r\n 'CostPerConversion',\r\n ],\r\n mandatory: [\r\n 'TimePeriod',\r\n 'AdTitle',\r\n 'DestinationUrl',\r\n 'Param1',\r\n 'Param2',\r\n 'Param3',\r\n ],\r\n },\r\n AudiencePerformanceReport: {\r\n mandatory: [\r\n 'TimePeriod',\r\n 'AudienceId',\r\n 'AccountId',\r\n ],\r\n default: [\r\n 'TimePeriod',\r\n 'AudienceId',\r\n 'AudienceName',\r\n 'AudienceType',\r\n 'AccountNumber',\r\n 'AccountName',\r\n 'AccountId',\r\n 'CampaignName',\r\n 'AdGroupName',\r\n 'AssociationStatus',\r\n 'BidAdjustment',\r\n 'TargetingSetting',\r\n 'TopImpressionRatePercent',\r\n 'AbsoluteTopImpressionRatePercent',\r\n 'Impressions',\r\n 'Clicks',\r\n 'CTR',\r\n 'Spend',\r\n ],\r\n },\r\n GoalsAndFunnelsReport: {\r\n mandatory: [\r\n 'TimePeriod',\r\n 'Goal',\r\n ],\r\n default: [\r\n 'TimePeriod',\r\n 'Goal',\r\n 'AccountName',\r\n 'CampaignName',\r\n 'AdGroupName',\r\n 'Assists',\r\n 'AllConversions',\r\n 'AllRevenue',\r\n ],\r\n },\r\n ConversionPerformanceReport: {\r\n default: [\r\n 'TimePeriod',\r\n 'AccountName',\r\n 'CampaignName',\r\n 'AdGroupName',\r\n 'AdDistribution',\r\n 'Impressions',\r\n 'Clicks',\r\n 'CTR',\r\n 'Spend',\r\n 'Assists',\r\n 'Conversions',\r\n 'ConversionRate',\r\n 'Revenue',\r\n 'ReturnOnAdSpend',\r\n 'CostPerConversion',\r\n ],\r\n mandatory: [\r\n 'TimePeriod',\r\n ],\r\n },\r\n UserLocationPerformanceReport: {\r\n mandatory: [\r\n 'TimePeriod',\r\n 'AccountName',\r\n ],\r\n default: [\r\n 'TimePeriod',\r\n 'AccountName',\r\n 'CampaignName',\r\n 'AdGroupName',\r\n 'AdDistribution',\r\n 'Country',\r\n 'State',\r\n 'MetroArea',\r\n 'City',\r\n 'County',\r\n 'PostalCode',\r\n 'LocationId',\r\n 'QueryIntentCountry',\r\n 'QueryIntentState',\r\n 'QueryIntentDMA',\r\n 'QueryIntentCity',\r\n 'QueryIntentCounty',\r\n 'QueryIntentPostalCode',\r\n 'QueryIntentLocationId',\r\n 'Impressions',\r\n 'Clicks',\r\n 'CTR',\r\n 'AverageCPC',\r\n 'AveragePosition',\r\n 'TopImpressionRatePercent',\r\n 'AbsoluteTopImpressionRatePercent',\r\n 'Conversions',\r\n 'ConversionRate',\r\n 'CostPerConversion',\r\n ],\r\n },\r\n};\r\n\r\n","import _ from 'underscore';\r\nimport { adExtension } from './ad-extension';\r\nimport { advancedInsights } from './advanced-insights';\r\nimport { billing } from './billing';\r\nimport { changeHistory } from './change-history';\r\nimport { dsa } from './dsa';\r\nimport { performance } from './performance';\r\nimport { product } from './product';\r\nimport { targeting } from './targeting';\r\n\r\nexport const elevatedColumnsMap =\r\n _.extend(\r\n {},\r\n performance, adExtension, advancedInsights, billing, changeHistory, dsa, product, targeting\r\n );\r\n\r\n","export const adExtension = {\r\n AdExtensionByKeywordReport: {\r\n default: [\r\n 'TimePeriod',\r\n 'AccountName',\r\n 'CampaignName',\r\n 'AdGroupName',\r\n 'Keyword',\r\n 'AdExtensionType',\r\n 'ClickType',\r\n 'Impressions',\r\n 'Clicks',\r\n 'TotalClicks',\r\n 'CTR',\r\n 'Conversions',\r\n 'AverageCPC',\r\n 'ConversionRate',\r\n 'Spend',\r\n 'CostPerConversion',\r\n ],\r\n mandatory: [\r\n 'TimePeriod',\r\n 'AdExtensionType',\r\n 'Keyword',\r\n ],\r\n },\r\n AdExtensionByAdReport: {\r\n default: [\r\n 'TimePeriod',\r\n 'AccountName',\r\n 'CampaignName',\r\n 'AdGroupName',\r\n 'AdType',\r\n 'AdTitle',\r\n 'TitlePart1',\r\n 'TitlePart2',\r\n 'TitlePart3',\r\n 'AdExtensionType',\r\n 'ClickType',\r\n 'Impressions',\r\n 'Clicks',\r\n 'CTR',\r\n 'Conversions',\r\n 'AverageCPC',\r\n 'ConversionRate',\r\n 'Spend',\r\n 'CostPerConversion',\r\n ],\r\n mandatory: [\r\n 'TimePeriod',\r\n 'AdExtensionType',\r\n ],\r\n },\r\n AdExtensionDetailReport: {\r\n default: [\r\n 'TimePeriod',\r\n 'AccountName',\r\n 'CampaignName',\r\n 'AdGroupName',\r\n 'AdExtensionType',\r\n 'AdExtensionTypeId',\r\n 'AdExtensionId',\r\n 'AdExtensionPropertyValue',\r\n 'Impressions',\r\n 'Clicks',\r\n 'CTR',\r\n 'Conversions',\r\n 'CostPerConversion',\r\n 'ConversionRate',\r\n 'Spend',\r\n 'AverageCPC',\r\n ],\r\n mandatory: [\r\n 'TimePeriod',\r\n 'AdExtensionType',\r\n 'AdExtensionTypeId',\r\n 'AdExtensionId',\r\n 'AdExtensionPropertyValue',\r\n ],\r\n },\r\n CallDetailReport: {\r\n default: [\r\n 'TimePeriod',\r\n 'AccountName',\r\n 'CampaignName',\r\n 'AdGroupName',\r\n 'StartTime',\r\n 'EndTime',\r\n 'Duration',\r\n ],\r\n mandatory: [\r\n 'TimePeriod',\r\n 'StartTime',\r\n 'EndTime',\r\n ],\r\n },\r\n};\r\n","export const advancedInsights = {\r\n 'AccountPerformanceReport-SixWeeks': {\r\n mandatory: [\r\n 'TimePeriod',\r\n 'CustomerName',\r\n 'AccountName',\r\n 'AccountNumber',\r\n ],\r\n default: [\r\n 'TimePeriod',\r\n 'CustomerName',\r\n 'AccountName',\r\n 'AccountNumber',\r\n 'Impressions',\r\n 'Clicks',\r\n 'CTR',\r\n 'AverageCPC',\r\n 'Spend',\r\n 'AveragePosition',\r\n 'Conversions',\r\n 'ConversionRate',\r\n 'CostPerConversion',\r\n ],\r\n },\r\n 'AccountPerformanceReport-TwoMonths': {\r\n mandatory: [\r\n 'TimePeriod',\r\n 'CustomerName',\r\n 'AccountName',\r\n 'CustomerId',\r\n 'AccountNumber',\r\n ],\r\n default: [\r\n 'TimePeriod',\r\n 'CustomerName',\r\n 'AccountName',\r\n 'CustomerId',\r\n 'AccountNumber',\r\n 'Impressions',\r\n 'Clicks',\r\n 'CTR',\r\n 'AverageCPC',\r\n 'Spend',\r\n 'AveragePosition',\r\n 'Conversions',\r\n ],\r\n },\r\n 'AccountPerformanceReport-TwoYears': {\r\n mandatory: [\r\n 'TimePeriod',\r\n 'CustomerName',\r\n 'AccountName',\r\n 'AccountNumber',\r\n ],\r\n default: [\r\n 'TimePeriod',\r\n 'CustomerName',\r\n 'AccountName',\r\n 'AccountNumber',\r\n 'Impressions',\r\n 'Clicks',\r\n 'CTR',\r\n 'AverageCPC',\r\n 'Spend',\r\n 'AveragePosition',\r\n 'Conversions',\r\n ],\r\n },\r\n 'AccountPerformanceReport-ShareOfVoice': {\r\n mandatory: [\r\n 'TimePeriod',\r\n 'Keyword',\r\n 'AccountName',\r\n 'CampaignName',\r\n 'AdGroupName',\r\n 'Language',\r\n 'ImpressionSharePercent',\r\n 'BidMatchType',\r\n ],\r\n default: [\r\n 'TimePeriod',\r\n 'Keyword',\r\n 'AccountName',\r\n 'CampaignName',\r\n 'AdGroupName',\r\n 'Language',\r\n 'Impressions',\r\n 'Clicks',\r\n 'CTR',\r\n 'AverageCPC',\r\n 'Spend',\r\n 'AveragePosition',\r\n 'ImpressionSharePercent',\r\n 'ImpressionLostToBudgetPercent',\r\n 'ImpressionLostToRankAggPercent',\r\n 'BidMatchType',\r\n ],\r\n },\r\n};\r\n","export const billing = {\r\n BudgetSummaryReport: {\r\n mandatory: [\r\n 'Date',\r\n 'AccountNumber',\r\n 'AccountName',\r\n 'CampaignName',\r\n 'CurrencyCode',\r\n 'MonthlyBudget',\r\n 'DailySpend',\r\n 'MonthToDateSpend',\r\n ],\r\n default: [\r\n 'Date',\r\n 'AccountNumber',\r\n 'AccountName',\r\n 'CampaignName',\r\n 'CurrencyCode',\r\n 'ProductName',\r\n 'MonthlyBudget',\r\n 'DailySpend',\r\n 'MonthToDateSpend',\r\n ],\r\n },\r\n CustomerInvoiceReport: {\r\n default: [\r\n 'Month',\r\n 'CustomerName',\r\n 'CustomerName',\r\n 'PricingMethod',\r\n 'SalesHouse',\r\n 'SoldToCountry',\r\n 'SoldToCustomerName',\r\n 'CurrencyCode',\r\n 'BilledAmount',\r\n 'BilledAmountUSD',\r\n 'BillToCountry',\r\n 'BillToCustomerNumber',\r\n 'BillToCustomerName',\r\n 'BillToCustomerName',\r\n 'Clicks',\r\n 'DocumentNumber',\r\n 'DocumentType',\r\n 'NetRevenue',\r\n 'NetRevenueUSD',\r\n ],\r\n mandatory: [\r\n 'Clicks',\r\n ],\r\n },\r\n BillingStatementReport: {\r\n default: [\r\n 'Month',\r\n 'CustomerName',\r\n 'AccountNumber',\r\n 'CampaignName',\r\n 'BillToCountry',\r\n 'BillToCustomerNumber',\r\n 'SoldToCustomerNumber',\r\n 'BillToCustomerName',\r\n 'DocumentNumber',\r\n 'DocumentType',\r\n 'BillingType',\r\n 'NetAmountDue',\r\n ],\r\n mandatory: [\r\n 'CustomerName',\r\n 'AccountNumber',\r\n 'BillToCountry',\r\n 'BillToCustomerName',\r\n 'DocumentNumber',\r\n 'DocumentType',\r\n 'NetAmountDue',\r\n ],\r\n },\r\n};\r\n","export const changeHistory = {\r\n SearchCampaignChangeHistoryReport: {\r\n mandatory: [\r\n 'DateTime',\r\n ],\r\n default: [\r\n 'DateTime',\r\n 'CampaignName',\r\n 'AdGroupName',\r\n 'ChangedBy',\r\n 'EntityName',\r\n 'AttributeChanged',\r\n 'ItemChanged',\r\n 'HowChanged',\r\n 'OldValue',\r\n 'NewValue',\r\n ],\r\n },\r\n UserRoleChangeHistoryReport: {\r\n default: [\r\n 'CustomerName',\r\n 'AccountName',\r\n 'ChangeMadeBy',\r\n 'ChangeMadeTo',\r\n 'AttributeChanged',\r\n 'HowChanged',\r\n 'OldValue',\r\n 'NewValue',\r\n 'DateTime',\r\n ],\r\n mandatory: [\r\n 'DateTime',\r\n ],\r\n },\r\n FraudChangeHistoryReport: {\r\n mandatory: [\r\n 'UserId',\r\n 'AccountId',\r\n 'AccountName',\r\n 'CustomerId',\r\n 'CustomerName',\r\n 'ChangeTotalCount',\r\n ],\r\n default: [\r\n 'UserId',\r\n 'AccountId',\r\n 'AccountName',\r\n 'CustomerId',\r\n 'CustomerName',\r\n 'ChangeTotalCount',\r\n ],\r\n },\r\n};\r\n\r\n","export const dsa = {\r\n DSAAutoTargetPerformanceReport: {\r\n default: [\r\n 'TimePeriod',\r\n 'AccountName',\r\n 'AverageCPC',\r\n 'AveragePosition',\r\n 'CampaignName',\r\n 'Clicks',\r\n 'Conversions',\r\n 'ConversionRate',\r\n 'CostPerConversion',\r\n 'CTR',\r\n 'DynamicAdTarget',\r\n 'Impressions',\r\n 'TopImpressionRatePercent',\r\n 'AbsoluteTopImpressionRatePercent',\r\n 'AdGroupName',\r\n 'Language',\r\n 'Spend',\r\n ],\r\n mandatory: [\r\n 'TimePeriod',\r\n 'DynamicAdTarget',\r\n ],\r\n },\r\n DSACategoryPerformanceReport: {\r\n default: [\r\n 'TimePeriod',\r\n 'AccountName',\r\n 'AverageCPC',\r\n 'AveragePosition',\r\n 'Clicks',\r\n 'CampaignName',\r\n 'Conversions',\r\n 'ConversionRate',\r\n 'CostPerConversion',\r\n 'CTR',\r\n 'Category1',\r\n 'Category2',\r\n 'Category0',\r\n 'Impressions',\r\n 'TopImpressionRatePercent',\r\n 'AbsoluteTopImpressionRatePercent',\r\n 'Language',\r\n 'AdGroupName',\r\n 'Spend',\r\n ],\r\n mandatory: [\r\n 'TimePeriod',\r\n 'Category1',\r\n 'Category2',\r\n 'Category0',\r\n ],\r\n },\r\n DSASearchQueryPerformanceReport: {\r\n default: [\r\n 'TimePeriod',\r\n 'AccountName',\r\n 'AverageCPC',\r\n 'AveragePosition',\r\n 'Clicks',\r\n 'CampaignName',\r\n 'Conversions',\r\n 'ConversionRate',\r\n 'CostPerConversion',\r\n 'CTR',\r\n 'Impressions',\r\n 'TopImpressionRatePercent',\r\n 'AbsoluteTopImpressionRatePercent',\r\n 'Language',\r\n 'AdGroupName',\r\n 'SearchQuery',\r\n 'Spend',\r\n ],\r\n mandatory: [\r\n 'TimePeriod',\r\n 'SearchQuery',\r\n ],\r\n },\r\n};\r\n\r\n","export const product = {\r\n ProductPartitionPerformanceReport: {\r\n default: [\r\n 'TimePeriod',\r\n 'AccountName',\r\n 'CampaignName',\r\n 'AdGroupName',\r\n 'AdGroupCriterionId',\r\n 'ProductGroup',\r\n 'PartitionType',\r\n 'CurrentMaxCpc',\r\n 'Impressions',\r\n 'Clicks',\r\n 'CTR',\r\n 'AverageCPC',\r\n 'AbsoluteTopImpressionRatePercent',\r\n 'Spend',\r\n 'Conversions',\r\n 'ConversionRate',\r\n 'CostPerConversion',\r\n ],\r\n mandatory: [\r\n 'TimePeriod',\r\n 'ProductGroup',\r\n 'PartitionType',\r\n ],\r\n },\r\n ProductPartitionUnitPerformanceReport: {\r\n default: [\r\n 'TimePeriod',\r\n 'AccountName',\r\n 'CampaignName',\r\n 'AdGroupName',\r\n 'AdGroupCriterionId',\r\n 'ProductGroup',\r\n 'CurrentMaxCpc',\r\n 'Impressions',\r\n 'Clicks',\r\n 'CTR',\r\n 'AverageCPC',\r\n 'AverageCPM',\r\n 'Spend',\r\n 'AbsoluteTopImpressionRatePercent',\r\n ],\r\n mandatory: [\r\n 'TimePeriod',\r\n 'AdGroupCriterionId',\r\n 'ProductGroup',\r\n ],\r\n },\r\n ProductDimensionPerformanceReport: {\r\n default: [\r\n 'TimePeriod',\r\n 'AccountName',\r\n 'CampaignName',\r\n 'AdGroupName',\r\n 'MerchantProductId',\r\n 'Title',\r\n 'Impressions',\r\n 'Clicks',\r\n 'CTR',\r\n 'AverageCPC',\r\n 'AverageCPM',\r\n 'Spend',\r\n 'Conversions',\r\n 'ConversionRate',\r\n 'CostPerConversion',\r\n 'AbsoluteTopImpressionRatePercent',\r\n ],\r\n mandatory: [\r\n 'TimePeriod',\r\n ],\r\n },\r\n ProductSearchQueryPerformanceReport: {\r\n mandatory: [\r\n 'TimePeriod',\r\n 'AccountName',\r\n 'CampaignName',\r\n 'SearchQuery',\r\n ],\r\n default: [\r\n 'TimePeriod',\r\n 'AccountName',\r\n 'CampaignName',\r\n 'SearchQuery',\r\n 'MerchantProductId',\r\n 'Title',\r\n 'AdGroupCriterionId',\r\n 'ProductGroup',\r\n 'PartitionType',\r\n 'Impressions',\r\n 'Clicks',\r\n 'CTR',\r\n 'AverageCPC',\r\n 'AbsoluteTopImpressionRatePercent',\r\n 'Spend',\r\n 'Conversions',\r\n 'ConversionRate',\r\n 'CostPerConversion',\r\n ],\r\n },\r\n ProductMatchCountReport: {\r\n mandatory: [\r\n 'AccountName',\r\n 'CampaignName',\r\n 'ProductGroup',\r\n 'MatchedProductsAtProductGroup',\r\n ],\r\n default: [\r\n 'AccountName',\r\n 'CampaignName',\r\n 'AdGroupCriterionId',\r\n 'ProductGroup',\r\n 'PartitionType',\r\n 'MatchedProductsAtCampaign',\r\n 'MatchedProductsAtAdGroup',\r\n 'MatchedProductsAtProductGroup',\r\n ],\r\n },\r\n ProductNegativeKeywordConflictReport: {\r\n mandatory: [\r\n 'AccountName',\r\n 'CampaignName',\r\n 'AdGroupName',\r\n 'NegativeKeyword',\r\n ],\r\n default: [\r\n 'AccountName',\r\n 'CampaignName',\r\n 'AdGroupName',\r\n 'AdGroupCriterionId',\r\n 'MerchantProductId',\r\n 'NegativeKeyword',\r\n 'ConflictLevel',\r\n ],\r\n },\r\n};\r\n\r\n","export const targeting = {\r\n AgeGenderAudienceReport: {\r\n mandatory: [\r\n 'TimePeriod',\r\n 'AccountName',\r\n 'AdGroupName',\r\n 'AgeGroup',\r\n 'Gender',\r\n ],\r\n default: [\r\n 'TimePeriod',\r\n 'AccountName',\r\n 'CampaignName',\r\n 'AdGroupName',\r\n 'AdDistribution',\r\n 'AgeGroup',\r\n 'Gender',\r\n 'Impressions',\r\n 'TopImpressionRatePercent',\r\n 'AbsoluteTopImpressionRatePercent',\r\n 'Clicks',\r\n 'Conversions',\r\n 'Spend',\r\n ],\r\n },\r\n ProfessionalDemographicsAudienceReport: {\r\n mandatory: [\r\n 'TimePeriod',\r\n 'AccountName',\r\n 'AdGroupName',\r\n 'CompanyName',\r\n 'IndustryName',\r\n 'JobFunctionName',\r\n ],\r\n default: [\r\n 'TimePeriod',\r\n 'AccountName',\r\n 'CampaignName',\r\n 'AdGroupName',\r\n 'CompanyName',\r\n 'IndustryName',\r\n 'JobFunctionName',\r\n 'AdDistribution',\r\n 'Impressions',\r\n 'Clicks',\r\n 'Conversions',\r\n 'Spend',\r\n 'AveragePosition',\r\n 'TopImpressionRatePercent',\r\n 'AbsoluteTopImpressionRatePercent',\r\n ],\r\n },\r\n UserLocationPerformanceReport: {\r\n mandatory: [\r\n 'TimePeriod',\r\n 'AccountName',\r\n ],\r\n default: [\r\n 'TimePeriod',\r\n 'AccountName',\r\n 'CampaignName',\r\n 'AdGroupName',\r\n 'AdDistribution',\r\n 'Country',\r\n 'State',\r\n 'MetroArea',\r\n 'City',\r\n 'County',\r\n 'PostalCode',\r\n 'LocationId',\r\n 'QueryIntentCountry',\r\n 'QueryIntentState',\r\n 'QueryIntentDMA',\r\n 'QueryIntentCity',\r\n 'QueryIntentCounty',\r\n 'QueryIntentPostalCode',\r\n 'QueryIntentLocationId',\r\n 'Impressions',\r\n 'Clicks',\r\n 'CTR',\r\n 'AverageCPC',\r\n 'AverageCPM',\r\n 'Spend',\r\n 'AveragePosition',\r\n 'TopImpressionRatePercent',\r\n 'AbsoluteTopImpressionRatePercent',\r\n 'Conversions',\r\n 'ConversionRate',\r\n 'CostPerConversion',\r\n ],\r\n },\r\n GeographicPerformanceReport: {\r\n mandatory: [\r\n 'TimePeriod',\r\n 'AccountName',\r\n ],\r\n default: [\r\n 'TimePeriod',\r\n 'AccountName',\r\n 'CampaignName',\r\n 'AdGroupName',\r\n 'AdDistribution',\r\n 'Country',\r\n 'State',\r\n 'MetroArea',\r\n 'City',\r\n 'County',\r\n 'PostalCode',\r\n 'LocationId',\r\n 'LocationType',\r\n 'MostSpecificLocation',\r\n 'Impressions',\r\n 'Clicks',\r\n 'CTR',\r\n 'AverageCPC',\r\n 'AverageCPM',\r\n 'Spend',\r\n 'AveragePosition',\r\n 'TopImpressionRatePercent',\r\n 'AbsoluteTopImpressionRatePercent',\r\n 'Conversions',\r\n 'ConversionRate',\r\n 'CostPerConversion',\r\n ],\r\n },\r\n};\r\n","import { VideoMetricColumns } from '../elevated-columns/performance';\r\n\r\nexport const restrictionSets = {\r\n AllConversions: {\r\n isAllowed: () => true,\r\n columns: [\r\n 'AllConversions',\r\n 'AllConversionRate',\r\n 'AllCostPerConversion',\r\n 'AllReturnOnAdSpend',\r\n 'AllRevenuePerConversion',\r\n 'AllRevenue',\r\n 'EstimatedAllConversions',\r\n 'EstimatedAllConversionRate',\r\n ],\r\n },\r\n AIM: {\r\n isAllowed: permissions => permissions.IsAIMCampaignEnabled,\r\n columns: [\r\n 'Headline',\r\n 'LongHeadline',\r\n 'BusinessName',\r\n 'AudienceImpressionSharePercent',\r\n 'AudienceImpressionLostToRankPercent',\r\n 'AudienceImpressionLostToBudgetPercent',\r\n 'RelativeCTR',\r\n ],\r\n },\r\n GoalCategory: {\r\n isAllowed: () => true,\r\n columns: ['GoalCategory'],\r\n },\r\n GoalType: {\r\n isAllowed: permissions =>\r\n permissions.IsInStoreTransactionAttributionSupported,\r\n columns: ['GoalType'],\r\n },\r\n AdGroupType: {\r\n isAllowed: permissions =>\r\n permissions.IsDSAMixedModeCampaignEnabled,\r\n columns: ['AdGroupType'],\r\n },\r\n ViewConversions: {\r\n isAllowed: permissions => permissions.IsViewThroughConversionEnabled,\r\n columns: [\r\n 'ViewThroughConversions',\r\n 'FullViewConversions',\r\n ],\r\n },\r\n ViewThroughConversionsRevenue: {\r\n isAllowed: permissions => permissions.IsViewThroughConversionsRevenueEnabled,\r\n columns: [\r\n 'ViewThroughConversionRate',\r\n 'ViewThroughRevenue',\r\n 'ViewThroughCostPerConversion',\r\n 'ViewThroughReturnOnAdSpend',\r\n ],\r\n },\r\n ConversionValueRuleMetrics: {\r\n isAllowed: permissions => permissions.dynamic.ConvValueRules,\r\n columns: [\r\n 'RevenueAdjustment',\r\n 'AllRevenueAdjustment',\r\n ],\r\n },\r\n ConversionValueRuleViewThroughMetrics: {\r\n isAllowed: permissions => permissions.dynamic.ConvValueRules,\r\n columns: [\r\n 'ViewThroughRevenueAdjustment',\r\n ],\r\n },\r\n AvgPositionDeprecationPhase1: {\r\n isAllowed: permissions => permissions.IsAvgPositionDeprecationPhase1Enabled,\r\n columns: [\r\n 'TopImpressionRatePercent',\r\n 'AbsoluteTopImpressionRatePercent',\r\n ],\r\n },\r\n AvgPositionDeprecationPhase2: {\r\n isAllowed: permissions => !permissions.IsAvgPositionDeprecationPhase2Enabled,\r\n columns: [\r\n 'AveragePosition',\r\n ],\r\n },\r\n VideoMetrics: {\r\n isAllowed: permssions => permssions.IsVideoAdsPerfMetricsEnabled,\r\n columns: VideoMetricColumns,\r\n },\r\n VideoMetricsV2: {\r\n isAllowed: permissions => permissions.dynamic.IsVideoAdsPerfMetricsV2Enabled,\r\n columns: ['VideoStarts', 'VideoSkips', 'CPCV'],\r\n },\r\n AdScenarioType:\r\n {\r\n isAllowed: permssions => permssions.IsVerticalAdsReportingPhase1Enabled,\r\n columns: [\r\n 'AdScenarioType',\r\n ],\r\n },\r\n NeighborhoodLocationType: {\r\n isAllowed: () => true,\r\n columns: [\r\n 'Neighborhood',\r\n 'QueryIntentNeighborhood',\r\n ],\r\n },\r\n Conversions: {\r\n isAllowed: permissions => !permissions.dynamic.PartialConversions,\r\n columns: [\r\n 'AllConversions',\r\n 'Conversions',\r\n 'ConversionRate',\r\n 'AllConversionRate',\r\n 'LowQualityConversions',\r\n 'CostPerConversion',\r\n 'ViewThroughCostPerConversion',\r\n 'ViewThroughConversionRate',\r\n 'AllCostPerConversion',\r\n ],\r\n },\r\n ConversionsQualified: {\r\n isAllowed: permissions => permissions.dynamic.PartialConversions,\r\n columns: [\r\n 'AllConversionsQualified',\r\n 'ConversionsQualified',\r\n 'ConversionRateQualified',\r\n 'AllConversionRateQualified',\r\n 'LowQualityConversionsQualified',\r\n 'CostPerConversionQualified',\r\n 'ViewThroughCostPerConversionQualified',\r\n 'ViewThroughConversionRateQualified',\r\n 'AllCostPerConversionQualified',\r\n ],\r\n },\r\n Description: {\r\n isAllowed: permssions => permssions.IsDSADynamicDescriptionPhase1Enabled,\r\n columns: [\r\n 'Description',\r\n ],\r\n },\r\n AdId: {\r\n isAllowed: () => true,\r\n columns: [\r\n 'AdId',\r\n ],\r\n },\r\n PerformanceMax: {\r\n isAllowed: permissions => permissions.dynamic.PerformanceMaxCampaigns && permissions.dynamic.PerformanceMaxCampaignsPhaseTwoReporting,\r\n columns: [\r\n 'AssetGroupId',\r\n 'AssetGroupName',\r\n 'AssetGroupStatus',\r\n 'CampaignType',\r\n ],\r\n },\r\n ReachAndFreq: {\r\n isAllowed: permissions => permissions.dynamic.ReachAndFrequency,\r\n columns: [\r\n 'AverageImpressionFrequencyPerUser',\r\n 'AverageImpressionFrequencyPerUser7Day',\r\n 'Reach',\r\n ],\r\n },\r\n ReachAndFreq7Day: {\r\n isAllowed: permissions => permissions.dynamic.ReachAndFrequency7Day,\r\n columns: [\r\n 'AverageImpressionFrequencyPerUser7Day',\r\n ],\r\n },\r\n AdStrength: {\r\n isAllowed: () => true,\r\n columns: [\r\n 'AdStrength',\r\n 'AdStrengthActionItems',\r\n ],\r\n },\r\n BoostPlacement: {\r\n isAllowed: permissions => permissions.IsAmplifyEnabled && permissions.dynamic.BoostPlacementReporting,\r\n columns: [\r\n 'PlacementName',\r\n ],\r\n },\r\n};\r\n","export const defaultSets = {\r\n AvgPositionDeprecationPhase1: {\r\n isAllowed: permssions => permssions.IsAvgPositionDeprecationPhase1Enabled,\r\n columns: [\r\n 'TopImpressionRatePercent',\r\n 'AbsoluteTopImpressionRatePercent',\r\n ],\r\n },\r\n AvgPositionDeprecationPhase2: {\r\n isAllowed: permssions => !permssions.IsAvgPositionDeprecationPhase2Enabled,\r\n columns: [\r\n 'AveragePosition',\r\n ],\r\n },\r\n IsManualCpmEnabled: {\r\n isAllowed: permssions => permssions.IsManualCpmEnabled,\r\n columns: [\r\n 'AverageCPM',\r\n ],\r\n },\r\n};\r\n","/* eslint-disable max-len */\r\nimport { restrictionSets } from './restriction-sets';\r\nimport { defaultSets } from './default-sets';\r\n\r\nconst {\r\n AIM,\r\n AllConversions,\r\n GoalType,\r\n GoalCategory,\r\n ViewConversions,\r\n ViewThroughConversionsRevenue,\r\n AdGroupType,\r\n AvgPositionDeprecationPhase1,\r\n AvgPositionDeprecationPhase2,\r\n VideoMetrics,\r\n Description,\r\n AdScenarioType,\r\n NeighborhoodLocationType,\r\n Conversions,\r\n ConversionsQualified,\r\n AdId,\r\n PerformanceMax,\r\n ReachAndFreq,\r\n ReachAndFreq7Day,\r\n AdStrength,\r\n} = restrictionSets;\r\n\r\nconst {\r\n AvgPositionDeprecationPhase1: defaultWhenAvgPosDeprP1Enabled,\r\n AvgPositionDeprecationPhase2: defaultWhenAvgPosDeprP2Enabled,\r\n IsManualCpmEnabled: defaultWhenManualCpmEnabled,\r\n} = defaultSets;\r\n\r\nexport const restrictedColumnsByReport = {\r\n AccountPerformanceReport: [AllConversions, ViewConversions, ViewThroughConversionsRevenue, GoalCategory, AvgPositionDeprecationPhase2, defaultWhenManualCpmEnabled, VideoMetrics, AdScenarioType, Conversions, ConversionsQualified],\r\n AdDynamicTextPerformanceReport: [AllConversions, ViewConversions, ViewThroughConversionsRevenue, GoalCategory, AvgPositionDeprecationPhase1, AvgPositionDeprecationPhase2, Conversions, ConversionsQualified],\r\n AdExtensionByAdReport: [AllConversions, ViewConversions, ViewThroughConversionsRevenue, GoalCategory, Conversions, ConversionsQualified],\r\n AdExtensionByKeywordReport: [AllConversions, ViewConversions, ViewThroughConversionsRevenue, GoalCategory, Conversions, ConversionsQualified],\r\n AdExtensionDetailReport: [AllConversions, ViewConversions, ViewThroughConversionsRevenue, GoalCategory, Conversions, ConversionsQualified],\r\n AdGroupPerformanceReport: [AllConversions, ViewConversions, ViewThroughConversionsRevenue, GoalCategory, AdGroupType, AvgPositionDeprecationPhase2, defaultWhenManualCpmEnabled, VideoMetrics, AdScenarioType, Conversions, ConversionsQualified, ReachAndFreq, ReachAndFreq7Day],\r\n AdPerformanceReport: [AIM, AllConversions, ViewConversions, ViewThroughConversionsRevenue, GoalCategory, AvgPositionDeprecationPhase1, AvgPositionDeprecationPhase2, defaultWhenManualCpmEnabled, VideoMetrics, AdScenarioType, Conversions, ConversionsQualified, AdStrength, ReachAndFreq, ReachAndFreq7Day],\r\n AgeGenderAudienceReport: [AllConversions, ViewConversions, ViewThroughConversionsRevenue, GoalCategory, AvgPositionDeprecationPhase1, AvgPositionDeprecationPhase2, VideoMetrics, AdScenarioType, Conversions, ConversionsQualified],\r\n AudiencePerformanceReport: [AllConversions, ViewConversions, ViewThroughConversionsRevenue, GoalCategory, AvgPositionDeprecationPhase1, AvgPositionDeprecationPhase2, defaultWhenManualCpmEnabled, VideoMetrics, Conversions, ConversionsQualified],\r\n BillingStatementReport: [],\r\n BudgetSummaryReport: [],\r\n CallDetailReport: [],\r\n CampaignPerformanceReport: [AllConversions, ViewConversions, ViewThroughConversionsRevenue, GoalCategory, AvgPositionDeprecationPhase2, defaultWhenManualCpmEnabled, VideoMetrics, AdScenarioType, Conversions, ConversionsQualified, ReachAndFreq, ReachAndFreq7Day],\r\n ConversionPerformanceReport: [AllConversions, ViewConversions, ViewThroughConversionsRevenue, GoalCategory, AvgPositionDeprecationPhase2, Conversions, ConversionsQualified],\r\n DestinationURLPerformanceReport: [AllConversions, ViewConversions, ViewThroughConversionsRevenue, GoalCategory, AvgPositionDeprecationPhase1, AvgPositionDeprecationPhase2, Conversions, ConversionsQualified],\r\n DSAAutoTargetPerformanceReport: [AllConversions, ViewConversions, ViewThroughConversionsRevenue, GoalCategory, AvgPositionDeprecationPhase1, AvgPositionDeprecationPhase2, Conversions, ConversionsQualified, AdId],\r\n DSACategoryPerformanceReport: [AllConversions, ViewConversions, ViewThroughConversionsRevenue, GoalCategory, AvgPositionDeprecationPhase1, AvgPositionDeprecationPhase2, Conversions, ConversionsQualified],\r\n DSASearchQueryPerformanceReport: [AllConversions, ViewConversions, ViewThroughConversionsRevenue, GoalCategory, AvgPositionDeprecationPhase1, AvgPositionDeprecationPhase2, Description, Conversions, ConversionsQualified],\r\n GeographicPerformanceReport: [AllConversions, ViewConversions, ViewThroughConversionsRevenue, GoalCategory, AvgPositionDeprecationPhase1, AvgPositionDeprecationPhase2, defaultWhenManualCpmEnabled, VideoMetrics, AdScenarioType, NeighborhoodLocationType, Conversions, ConversionsQualified],\r\n // AllConversions pilot is omitted from goals as this report has no other conversions\r\n GoalsAndFunnelsReport: [GoalType, ViewConversions, ViewThroughConversionsRevenue, GoalCategory, Conversions, ConversionsQualified],\r\n KeywordPerformanceReport: [AllConversions, ViewConversions, ViewThroughConversionsRevenue, GoalCategory, AvgPositionDeprecationPhase1, AvgPositionDeprecationPhase2, AdScenarioType, Conversions, ConversionsQualified],\r\n NegativeKeywordConflictReport: [],\r\n ProductDimensionPerformanceReport: [AllConversions, ViewConversions, ViewThroughConversionsRevenue, AvgPositionDeprecationPhase1, AvgPositionDeprecationPhase2, defaultWhenManualCpmEnabled, Conversions, ConversionsQualified, PerformanceMax],\r\n ProductMatchCountReport: [PerformanceMax],\r\n ProductNegativeKeywordConflictReport: [PerformanceMax],\r\n ProductPartitionPerformanceReport: [AllConversions, ViewConversions, ViewThroughConversionsRevenue, AvgPositionDeprecationPhase1, AvgPositionDeprecationPhase2, Conversions, ConversionsQualified, PerformanceMax],\r\n ProductPartitionUnitPerformanceReport: [AllConversions, ViewConversions, ViewThroughConversionsRevenue, AvgPositionDeprecationPhase1, AvgPositionDeprecationPhase2, defaultWhenManualCpmEnabled, Conversions, ConversionsQualified, PerformanceMax],\r\n ProductSearchQueryPerformanceReport: [AllConversions, ViewConversions, ViewThroughConversionsRevenue, AvgPositionDeprecationPhase1, AvgPositionDeprecationPhase2, Conversions, ConversionsQualified, PerformanceMax],\r\n ProfessionalDemographicsAudienceReport: [AllConversions, ViewConversions, ViewThroughConversionsRevenue, GoalCategory, AvgPositionDeprecationPhase1, AvgPositionDeprecationPhase2, VideoMetrics, AdScenarioType, Conversions, ConversionsQualified],\r\n PublisherUsagePerformanceReport: [AllConversions, ViewConversions, ViewThroughConversionsRevenue, GoalCategory, AvgPositionDeprecationPhase1, AvgPositionDeprecationPhase2, defaultWhenManualCpmEnabled, VideoMetrics, Conversions, ConversionsQualified],\r\n SearchCampaignChangeHistoryReport: [],\r\n SearchQueryPerformanceReport: [AllConversions, ViewConversions, ViewThroughConversionsRevenue, GoalCategory, AvgPositionDeprecationPhase1, AvgPositionDeprecationPhase2, AdScenarioType, Conversions, ConversionsQualified],\r\n ShareOfVoiceReport: [AllConversions, ViewConversions, ViewThroughConversionsRevenue, GoalCategory, defaultWhenManualCpmEnabled, AvgPositionDeprecationPhase2, Conversions, ConversionsQualified],\r\n UserLocationPerformanceReport: [AllConversions, ViewConversions, ViewThroughConversionsRevenue, GoalCategory, AvgPositionDeprecationPhase1, AvgPositionDeprecationPhase2, defaultWhenManualCpmEnabled, VideoMetrics, AdScenarioType, NeighborhoodLocationType, Conversions, ConversionsQualified],\r\n 'AccountPerformanceReport-SixWeeks': [AvgPositionDeprecationPhase2],\r\n 'AccountPerformanceReport-TwoMonths': [AvgPositionDeprecationPhase2],\r\n 'AccountPerformanceReport-TwoYears': [AvgPositionDeprecationPhase2],\r\n 'AccountPerformanceReport-ShareOfVoice': [AvgPositionDeprecationPhase2],\r\n};\r\n\r\nexport const defaultColumnsByReport = {\r\n AccountPerformanceReport: [defaultWhenAvgPosDeprP1Enabled, defaultWhenAvgPosDeprP2Enabled, defaultWhenManualCpmEnabled],\r\n AdDynamicTextPerformanceReport: [defaultWhenAvgPosDeprP1Enabled, defaultWhenAvgPosDeprP2Enabled],\r\n AdGroupPerformanceReport: [defaultWhenAvgPosDeprP1Enabled, defaultWhenAvgPosDeprP2Enabled, defaultWhenManualCpmEnabled],\r\n AdPerformanceReport: [defaultWhenAvgPosDeprP1Enabled, defaultWhenAvgPosDeprP2Enabled, defaultWhenManualCpmEnabled],\r\n AgeGenderAudienceReport: [defaultWhenAvgPosDeprP1Enabled, defaultWhenAvgPosDeprP2Enabled],\r\n AudiencePerformanceReport: [defaultWhenAvgPosDeprP1Enabled, defaultWhenAvgPosDeprP2Enabled, defaultWhenManualCpmEnabled],\r\n CampaignPerformanceReport: [defaultWhenAvgPosDeprP1Enabled, defaultWhenAvgPosDeprP2Enabled, defaultWhenManualCpmEnabled],\r\n DestinationURLPerformanceReport: [defaultWhenAvgPosDeprP1Enabled, defaultWhenAvgPosDeprP2Enabled],\r\n DSAAutoTargetPerformanceReport: [defaultWhenAvgPosDeprP1Enabled, defaultWhenAvgPosDeprP2Enabled],\r\n DSACategoryPerformanceReport: [defaultWhenAvgPosDeprP1Enabled, defaultWhenAvgPosDeprP2Enabled],\r\n DSASearchQueryPerformanceReport: [defaultWhenAvgPosDeprP1Enabled, defaultWhenAvgPosDeprP2Enabled],\r\n GeographicPerformanceReport: [defaultWhenAvgPosDeprP1Enabled, defaultWhenAvgPosDeprP2Enabled, defaultWhenManualCpmEnabled],\r\n KeywordPerformanceReport: [defaultWhenAvgPosDeprP1Enabled, defaultWhenAvgPosDeprP2Enabled],\r\n ProductDimensionPerformanceReport: [defaultWhenAvgPosDeprP1Enabled, defaultWhenAvgPosDeprP2Enabled, defaultWhenManualCpmEnabled],\r\n ProductPartitionPerformanceReport: [defaultWhenAvgPosDeprP1Enabled, defaultWhenAvgPosDeprP2Enabled],\r\n ProductPartitionUnitPerformanceReport: [defaultWhenAvgPosDeprP1Enabled, defaultWhenAvgPosDeprP2Enabled, defaultWhenManualCpmEnabled],\r\n ProductSearchQueryPerformanceReport: [defaultWhenAvgPosDeprP1Enabled, defaultWhenAvgPosDeprP2Enabled],\r\n ProfessionalDemographicsAudienceReport: [defaultWhenAvgPosDeprP1Enabled, defaultWhenAvgPosDeprP2Enabled],\r\n PublisherUsagePerformanceReport: [defaultWhenAvgPosDeprP1Enabled, defaultWhenAvgPosDeprP2Enabled, defaultWhenManualCpmEnabled],\r\n SearchQueryPerformanceReport: [defaultWhenAvgPosDeprP1Enabled, defaultWhenAvgPosDeprP2Enabled],\r\n ShareOfVoiceReport: [defaultWhenAvgPosDeprP1Enabled, defaultWhenAvgPosDeprP2Enabled, defaultWhenManualCpmEnabled],\r\n UserLocationPerformanceReport: [defaultWhenAvgPosDeprP1Enabled, defaultWhenAvgPosDeprP2Enabled, defaultWhenManualCpmEnabled],\r\n 'AccountPerformanceReport-SixWeeks': [defaultWhenAvgPosDeprP2Enabled],\r\n 'AccountPerformanceReport-TwoMonths': [defaultWhenAvgPosDeprP2Enabled],\r\n 'AccountPerformanceReport-TwoYears': [defaultWhenAvgPosDeprP2Enabled],\r\n 'AccountPerformanceReport-ShareOfVoice': [defaultWhenAvgPosDeprP2Enabled],\r\n};\r\n","export const helpLinkIds = {\r\n // AbsoluteTopImpressionRatePercent\r\n AbsoluteTopImpressionRatePercent: 'pop_BA_Reporting_Clarity_AbsoluteTopImpressionRate',\r\n // AbsoluteTopImpressionShareLostToBudgetPercent\r\n AbsoluteTopImpressionShareLostToBudgetPercent: 'pop_BA_Reporting_Clarity_AbsoluteTopISLosttoBudget',\r\n // AbsoluteTopImpressionShareLostToRankPercent\r\n AbsoluteTopImpressionShareLostToRankPercent: 'pop_BA_Reporting_Clarity_AbsoluteTopISLosttoRank',\r\n // AbsoluteTopImpressionSharePercent\r\n AbsoluteTopImpressionSharePercent: 'pop_BA_Reporting_ProductAds_AbsoluteTopImpShare',\r\n // AccountId\r\n AccountId: 'pop_BA_Reporting_Clarity_AccountID',\r\n // AccountName\r\n AccountName: 'pop_BA_Reporting_Clarity_Account',\r\n // AccountNumber\r\n AccountNumber: 'pop_BA_Reporting_Clarity_AccountNumber',\r\n // AccountStatus\r\n AccountStatus: 'pop_BA_Reporting_Clarity_AccountStatus',\r\n // AdDescription\r\n AdDescription: 'pop_BA_Reporting_Clarity_AdDescription',\r\n // AdDescription2\r\n AdDescription2: 'pop_BA_Reporting_Clarity_AdDescription2',\r\n // AdDistribution\r\n AdDistribution: 'pop_BA_NewCampaignCreate_Distribute',\r\n // AdExtensionId\r\n AdExtensionId: 'pop_BA_Reporting_Clarity_AdExtID',\r\n // AdExtensionPropertyValue\r\n AdExtensionPropertyValue: 'Page_Reporting_Clarity_AdExtensionDisplayName',\r\n // AdExtensionType\r\n AdExtensionType: 'Page_Reporting_Clarity_AdExtensionTypeName',\r\n // AdExtensionTypeId\r\n AdExtensionTypeId: 'pop_BA_Reporting_Clarity_AdExtensionTypeID',\r\n // AdExtensionVersion\r\n AdExtensionVersion: 'pop_BA_Reporting_Clarity_AdExtVersion',\r\n // AdGroupCriterionId\r\n AdGroupCriterionId: 'pop_BA_Reporting_Clarity_ProdTargetID',\r\n // AdGroupId\r\n AdGroupId: 'pop_BA_Reporting_Clarity_AdGroupID',\r\n // AdGroupLabels\r\n AdGroupLabels: 'pop_BA_Reporting_Clarity_AdGroupLabels',\r\n // AdGroupName\r\n AdGroupName: 'pop_BA_Reporting_Clarity_AdGroup',\r\n // AdGroupStatus\r\n AdGroupStatus: 'pop_BA_Reporting_Clarity_AdGroupStatus',\r\n // AdGroupType\r\n AdGroupType: 'pop_BA_DSA_AdGroupType',\r\n // AdId\r\n AdId: 'pop_BA_CampaignGrids_AdID',\r\n // AdLabels\r\n AdLabels: 'pop_BA_Reporting_Clarity_AdLabels',\r\n // AdRelevance\r\n AdRelevance: 'pop_BA_Reporting_Clarity_AdRelevance',\r\n // AdScenarioType\r\n AdScenarioType: 'pop_BA_Reporting_Clarity_VerticalAdType',\r\n // AdStatus\r\n AdStatus: 'pop_BA_Reporting_Clarity_AdStatus',\r\n // AdTitle\r\n AdTitle: 'pop_BA_Reporting_Clarity_AdTitle',\r\n // AdType\r\n AdType: 'pop_BA_CampaignGrids_AdType',\r\n // AgeGroup\r\n AgeGroup: 'pop_BA_Reporting_Clarity_AgeGroup',\r\n // AgencyName\r\n AgencyName: 'pop_BA_Reporting_Clarity_Agency',\r\n // AllConversionRate\r\n AllConversionRate: 'pop_BA_CampaignGrids_AllConvRate',\r\n AllConversionRateQualified: 'pop_BA_CampaignGrids_AllConvRate',\r\n // AllConversions\r\n AllConversions: 'pop_BA_CampaignGrids_AllConv',\r\n AllConversionsQualified: 'pop_BA_CampaignGrids_AllConv',\r\n // AllCostPerConversion\r\n AllCostPerConversion: 'pop_BA_CampaignGrids_AllConvCPA',\r\n AllCostPerConversionQualified: 'pop_BA_CampaignGrids_AllConvCPA',\r\n // AllReturnOnAdSpend\r\n AllReturnOnAdSpend: 'pop_BA_CampaignGrids_AllConvROAS',\r\n // AllRevenue\r\n AllRevenue: 'pop_BA_CampaignGrids_AllConvRevenue',\r\n // AllRevenuePerConversion\r\n AllRevenuePerConversion: 'pop_BA_Reporting_Clarity_AllRevenueConversion',\r\n // AreaCode\r\n AreaCode: 'pop_BA_Reporting_Clarity_AreaCode',\r\n // AssistedClicks\r\n AssistedClicks: 'pop_BA_Reporting_CoopClicks',\r\n // AssistedConversions\r\n AssistedConversions: 'pop_BA_Reporting_CoopConv',\r\n // AssistedImpressions\r\n AssistedImpressions: 'pop_BA_Reporting_CoopImpr',\r\n // Assists\r\n Assists: 'Page_Reporting_Clarity_Assists',\r\n // AssociationId\r\n AssociationId: 'pop_BA_Reporting_Clarity_AssociationID',\r\n // AssociationLevel\r\n AssociationLevel: 'pop_BA_Reporting_Clarity_Level',\r\n // AssociationStatus\r\n AssociationStatus: 'pop_BA_AudienceStatus',\r\n // AttributeChanged\r\n AttributeChanged: 'pop_BA_Reporting_Clarity_AttributeChange',\r\n // AudienceId\r\n AudienceId: 'pop_BA_Reporting_Clarity_AudienceID',\r\n AudienceImpressionSharePercent: 'pop_BA_Reporting_Clarity_AudienceNetwork_ImpressionShare',\r\n AudienceImpressionLostToRankPercent: 'pop_BA_Reporting_Clarity_AudienceNetwork_ImpressionShare_LostRank',\r\n AudienceImpressionLostToBudgetPercent: 'pop_BA_Reporting_Clarity_AudienceNetwork_ImpressionShare_LostBudget',\r\n // AudienceName\r\n AudienceName: 'pop_BA_Reporting_Clarity_AudienceName',\r\n // AudienceType\r\n AudienceType: 'pop_BA_AudienceCategory',\r\n // AverageCPC\r\n AverageCPC: 'pop_BA_CampaignGrids_AvgCPC',\r\n // AverageCPM\r\n AverageCPM: 'Page_Reporting_Clarity_AverageCPM',\r\n // AverageCpp\r\n AverageCpp: 'pop_BA_CampaignGrids_AvgCPP',\r\n // AveragePosition\r\n AveragePosition: 'pop_BA_CampaignGrids_AvgPosition',\r\n BaseCampaignId: 'Pop_BA_Reporting_Clarity_BaseCampaignID',\r\n // BenchmarkBid\r\n BenchmarkBid: 'pop_BA_Reporting_Clarity_BenchmarkBid',\r\n // BenchmarkCtr\r\n BenchmarkCtr: 'pop_BA_Reporting_Clarity_BenchmarkCTR',\r\n // BidAdjustment\r\n BidAdjustment: 'pop_BA_AudienceBidAdj',\r\n // BidMatchType\r\n BidMatchType: 'Page_Reporting_Clarity_BidMatchType',\r\n // BidStrategyType\r\n BidStrategyType: 'pop_BA_Reporting_Clarity_BidStrategy',\r\n // BilledAmount\r\n BilledAmount: 'pop_BA_Reporting_Clarity_BillAmount',\r\n BilledAmountUSD: 'pop_BA_Reporting_Clarity_BillAmountUSD',\r\n // BillingType\r\n BillingType: 'pop_BA_Reporting_Clarity_BillingType',\r\n // BillToCustomerName\r\n BillToCustomerName: 'pop_BA_Reporting_Clarity_BillToName',\r\n // BillToCustomerNumber\r\n BillToCustomerNumber: 'pop_BA_AccountsGrid_BillTo',\r\n // BillToCountry\r\n BillToCountry: 'pop_BA_Reporting_Clarity_BillToCountry',\r\n // Brand\r\n Brand: 'pop_BA_Reporting_Clarity_Brand',\r\n // BudgetAssociationStatus\r\n BudgetAssociationStatus: 'pop_BA_Reporting_Clarity_BudgetAssociation',\r\n // BudgetName\r\n BudgetName: 'pop_BA_Reporting_Clarity_Budget',\r\n // BudgetStatus\r\n BudgetStatus: 'pop_BA_Reporting_Clarity_BudgetStatus',\r\n // BusinessName\r\n BusinessName: 'pop_BA_Reporting_Clarity_BusinessName',\r\n // CPA\r\n CPA: 'Page_Reporting_Clarity_CPA',\r\n // CTR\r\n CTR: 'pop_BA_CampaignGrids_CTR',\r\n // CampaignId\r\n CampaignId: 'pop_BA_Reporting_Clarity_CampaignID',\r\n // CampaignLabels\r\n CampaignLabels: 'pop_BA_Reporting_Clarity_CampaignLabels',\r\n // CampaignName\r\n CampaignName: 'pop_BA_Reporting_Clarity_Campaign',\r\n // CampaignStatus\r\n CampaignStatus: 'pop_BA_Reporting_Clarity_CampaignStatus',\r\n // CampaignType\r\n CampaignType: 'pop_BA_Reporting_Clarity_CampaignType',\r\n // Category0\r\n Category0: 'pop_BA_Reporting_Clarity_DSA_TopLevelCategory',\r\n // Category1\r\n Category1: 'pop_BA_Reporting_Clarity_DSA_FirstLevelCategory',\r\n // Category2\r\n Category2: 'pop_BA_Reporting_Clarity_DSA_SecondLevelCategory',\r\n // CategoryList\r\n CategoryList: 'pop_BA_Reporting_Clarity_DSA_CategoryList',\r\n // ChangeMadeBy\r\n ChangeMadeBy: 'pop_BA_Reporting_Clarity_ChangedBy',\r\n // ChangeMadeTo\r\n ChangeMadeTo: 'pop_BA_Reporting_Clarity_User',\r\n ChangeTotalCount: null,\r\n // ChangedBy\r\n ChangedBy: 'pop_BA_Reporting_Clarity_ChangedBy',\r\n // City\r\n City: 'pop_BA_Reporting_Clarity_CityLocation',\r\n // ClickCalls\r\n ClickCalls: 'pop_BA_CampaignGrids_ClickCalls',\r\n // ClickSharePercent\r\n ClickSharePercent: 'pop_BA_Reporting_Clarity_ClickShare',\r\n // ClickType\r\n ClickType: 'pop_BA_Reporting_Clarity_ClickType',\r\n // ClickTypeId\r\n ClickTypeId: 'pop_BA_Reporting_product_ads_click_type',\r\n // Clicks\r\n Clicks: 'pop_BA_CampaignGrids_Clicks',\r\n // CompanyName\r\n CompanyName: 'pop_BA_Reporting_Clarity_CompanyName',\r\n // Condition\r\n Condition: 'pop_BA_Reporting_Clarity_Condition',\r\n // ConflictLevel\r\n ConflictLevel: 'pop_BA_Reporting_Clarity_ConflictLevel',\r\n // ConflictType\r\n ConflictType: 'pop_BA_Reporting_Clarity_ConflictType',\r\n // ConversionRate\r\n ConversionRate: 'pop_BA_CampaignGrids_ConvRate',\r\n ConversionRateQualified: 'pop_BA_CampaignGrids_ConvRate',\r\n // Conversions\r\n Conversions: 'pop_BA_CampaignGrids_Conv',\r\n ConversionsQualified: 'pop_BA_CampaignGrids_Conv',\r\n // CostPerAssist\r\n CostPerAssist: 'pop_BA_Reporting_Clarity_CostPerAssist',\r\n // CostPerConversion\r\n CostPerConversion: 'Page_Reporting_Clarity_CPA',\r\n CostPerConversionQualified: 'Page_Reporting_Clarity_CPA',\r\n // Country\r\n Country: 'pop_BA_Reporting_Clarity_CountryRegion',\r\n // CountryOfSale\r\n CountryOfSale: 'pop_BA_Reporting_Clarity_ProductCountryofSale',\r\n // County\r\n County: 'pop_BA_Reporting_Clarity_CountyLocation',\r\n // CurrencyCode\r\n CurrencyCode: 'Page_Accounts_Details_Currency',\r\n // CurrentMaxCpc\r\n CurrentMaxCpc: 'pop_BA_Reporting_Clarity_MaxCPC',\r\n // CustomLabel0\r\n CustomLabel0: 'pop_BA_Reporting_Clarity_CustomLabel',\r\n // CustomLabel1\r\n CustomLabel1: 'pop_BA_Reporting_Clarity_CustomLabel',\r\n // CustomLabel2\r\n CustomLabel2: 'pop_BA_Reporting_Clarity_CustomLabel',\r\n // CustomLabel3\r\n CustomLabel3: 'pop_BA_Reporting_Clarity_CustomLabel',\r\n // CustomLabel4\r\n CustomLabel4: 'pop_BA_Reporting_Clarity_CustomLabel',\r\n // CustomParameters\r\n CustomParameters: 'pop_BA_Reporting_Clarity_CustomParameters',\r\n // CustomerId\r\n CustomerId: 'pop_BA_Reporting_Clarity_Customer',\r\n // CustomerName\r\n CustomerName: 'pop_BA_Reporting_Clarity_CustomerName',\r\n // DailySpend\r\n DailySpend: 'pop_BA_Reporting_Clarity_SpendDaily',\r\n // Date\r\n Date: 'pop_BA_Reporting_Clarity_Date',\r\n // DateTime\r\n DateTime: 'pop_BA_Reporting_Clarity_Date',\r\n // DayOfWeek\r\n DayOfWeek: 'pop_BA_Reporting_Clarity_DayOfWeek',\r\n // DeliveredMatchType\r\n DeliveredMatchType: 'Page_Reporting_Clarity_DeliveredMatchType',\r\n // DestinationUrl\r\n DestinationUrl: 'pop_BA_CampaignGrids_DestinationURL',\r\n // DeviceOS\r\n DeviceOS: 'pop_BA_Reporting_Clarity_DeviceOS',\r\n // DeviceType\r\n DeviceType: 'pop_BA_Reporting_Clarity_DeviceType',\r\n // DisplayUrl\r\n DisplayUrl: 'pop_BA_Reporting_Clarity_DisplayURL',\r\n // DocumentNumber\r\n DocumentNumber: 'pop_BA_Reporting_Clarity_DocumentNum',\r\n // DocumentType\r\n DocumentType: 'pop_BA_Reporting_Clarity_DocumentType',\r\n // Duration\r\n Duration: 'pop_BA_Reporting_Clarity_Duration',\r\n // DynamicAdTarget\r\n DynamicAdTarget: 'pop_BA_Reporting_Clarity_DSA_AutoTarget',\r\n // DynamicAdTargetId\r\n DynamicAdTargetId: 'pop_BA_Reporting_Clarity_DSA_AutoTargetId',\r\n // DynamicAdTargetStatus\r\n DynamicAdTargetStatus: 'pop_BA_Reporting_Clarity_DSA_AutoTargetStatus',\r\n // ExcludeZeroClicks\r\n ExcludeZeroClicks: null,\r\n // EndTime\r\n EndTime: 'pop_BA_Reporting_Clarity_CallEndTime',\r\n // EntityId\r\n EntityId: 'pop_BA_Reporting_Clarity_EntityID',\r\n // EntityName\r\n EntityName: 'pop_BA_Reporting_Clarity_EntityName',\r\n // ExactMatchImpressionSharePercent\r\n ExactMatchImpressionSharePercent: 'Page_Reporting_Clarity_ExactMatchImpressionShare',\r\n // ExpectedCtr\r\n ExpectedCtr: 'Page_Reporting_Clarity_KeywordRelevance',\r\n // ExtendedCost\r\n ExtendedCost: 'pop_BA_Reporting_Clarity_ExtendedCost',\r\n // FeedUrl\r\n FeedUrl: 'pop_BA_Reporting_Clarity_DSA_FeedURL',\r\n // FinalAppUrl\r\n FinalAppUrl: 'pop_BA_Reporting_Clarity_FinalAppURL',\r\n // FinalMobileUrl\r\n FinalMobileUrl: 'pop_BA_Reporting_Clarity_FinalMobileURL',\r\n // FinalUrl\r\n FinalUrl: 'pop_BA_Reporting_Clarity_FinalURL',\r\n // FinalUrlSuffix\r\n FinalUrlSuffix: 'pop_BA_NewAdCreate_FinalURLSuffix',\r\n // FirstPageBid\r\n FirstPageBid: 'pop_BA_CampaignGrids_FirstPage',\r\n // FullViewConversions\r\n FullViewConversions: 'pop_BA_Reporting_Clarity_ViewThrough',\r\n // Gender\r\n Gender: 'pop_BA_Reporting_Clarity_Gender',\r\n // Goal\r\n Goal: 'pop_BA_Reporting_Clarity_Goal',\r\n // GoalCategory\r\n GoalCategory: 'pop_BA_Reporting_Clarity_GoalCategory',\r\n // GoalId\r\n GoalId: 'pop_BA_Reporting_Clarity_GoalID',\r\n // GoalType\r\n GoalType: 'pop_BA_Reporting_Clarity_GoalType',\r\n // GregorianDate\r\n GregorianDate: 'pop_BA_Reporting_Clarity_Date',\r\n GTIN: 'pop_BA_DimensionGrid_GTIN',\r\n // Headline\r\n Headline: 'pop_BA_Reporting_Clarity_DSA_Headline',\r\n // Description\r\n Description: 'pop_BA_Reporting_Clarity_DSA_Description',\r\n // HistoricalAdRelevance\r\n HistoricalAdRelevance: 'pop_BA_Reporting_Clarity_HistoricAdRelevance',\r\n // HistoricalExpectedCtr\r\n HistoricalExpectedCtr: 'pop_BA_Reporting_Clarity_HistoricCTR',\r\n // HistoricalLandingPageExperience\r\n HistoricalLandingPageExperience: 'pop_BA_Reporting_Clarity_HistoricLandingPage',\r\n // HistoricalQualityScore\r\n HistoricalQualityScore: 'pop_BA_Reporting_Clarity_HistoricQS',\r\n // HourOfDay\r\n HourOfDay: 'pop_BA_Reporting_Clarity_HourOfDay',\r\n // HowChanged\r\n HowChanged: 'pop_BA_Reporting_Clarity_HowChanged',\r\n // ImpressionLostToAdRelevancePercent\r\n ImpressionLostToAdRelevancePercent: 'pop_BA_Reporting_Clarity_ImpShrLostRev',\r\n // ImpressionLostToBidPercent\r\n ImpressionLostToBidPercent: 'pop_BA_Reporting_Clarity_ImpShrLostBid',\r\n // ImpressionLostToBudgetPercent\r\n ImpressionLostToBudgetPercent: 'pop_BA_Reporting_Clarity_ImpShrLostBudget',\r\n // ImpressionLostToExpectedCtrPercent\r\n ImpressionLostToExpectedCtrPercent: 'pop_BA_Reporting_Clarity_ImpShrLostClickThru',\r\n // ImpressionLostToRankAggPercent\r\n ImpressionLostToRankAggPercent: 'pop_BA_Reporting_Clarity_ImpShrLostRank',\r\n // ImpressionLostToRankPercent\r\n ImpressionLostToRankPercent: 'pop_BA_Reporting_Clarity_ImpShrLostRank',\r\n // ImpressionSharePercent\r\n ImpressionSharePercent: 'Page_Reporting_Clarity_ImpressionShare',\r\n // Impressions\r\n Impressions: 'pop_BA_CampaignGrids_Impr',\r\n // IndustryName\r\n IndustryName: 'pop_BA_Reporting_Clarity_IndustryName',\r\n // ItemChanged\r\n ItemChanged: 'pop_BA_Reporting_Clarity_EntityType',\r\n // JobFunctionName\r\n JobFunctionName: 'pop_BA_Reporting_Clarity_JobFunctionName',\r\n // Keyword\r\n Keyword: 'pop_BA_Reporting_Clarity_Keyword',\r\n // KeywordId\r\n KeywordId: 'pop_BA_Reporting_Clarity_KeywordID',\r\n // KeywordLabels\r\n KeywordLabels: 'pop_BA_Reporting_Clarity_KeywordLabels',\r\n // KeywordStatus\r\n KeywordStatus: 'pop_BA_Reporting_Clarity_KeywordStatus',\r\n // LandingPageExperience\r\n LandingPageExperience: 'Page_Reporting_Clarity_LandingPageUserExperience',\r\n // LandingPageTitle\r\n LandingPageTitle: 'pop_BA_Reporting_Clarity_DSA_LandingPageTitle',\r\n // Language\r\n Language: 'pop_BA_Reporting_Clarity_Language',\r\n // LocalStoreCode\r\n LocalStoreCode: 'pop_BA_Reporting_Local_Store_Code',\r\n // LocationId\r\n LocationId: 'pop_BA_Reporting_Clarity_LocationIdPhysicalLocation',\r\n // LocationType\r\n LocationType: 'pop_BA_Reporting_Clarity_LocationType',\r\n // LongHeadline\r\n LongHeadline: 'pop_BA_Reporting_Clarity_LongHeadline',\r\n // LowQualityClicks\r\n LowQualityClicks: 'pop_BA_Reporting_Clarity_LowQualityClicks',\r\n // LowQualityClicksPercent\r\n LowQualityClicksPercent: 'pop_BA_Reporting_Clarity_LowQualityClickRate',\r\n // LowQualityConversionRate\r\n LowQualityConversionRate: 'pop_BA_Reporting_Clarity_LowQualityClickConvRate',\r\n // LowQualityConversions\r\n LowQualityConversions: 'pop_BA_Reporting_Clarity_LowQualityClickConv',\r\n LowQualityConversionsQualified: 'pop_BA_Reporting_Clarity_LowQualityClickConv',\r\n // LowQualityGeneralClicks\r\n LowQualityGeneralClicks: 'pop_BA_Reporting_Clarity_LowQualityGeneralClicks',\r\n // LowQualityImpressions\r\n LowQualityImpressions: 'pop_BA_Reporting_Clarity_LowQualityImp',\r\n // LowQualityImpressionsPercent\r\n LowQualityImpressionsPercent: 'pop_BA_Reporting_Clarity_LowQualityImpRate',\r\n // LowQualitySophisticatedClicks\r\n LowQualitySophisticatedClicks: 'pop_BA_Reporting_Clarity_LowQualitySophisticatedClicks',\r\n // Mainline1Bid\r\n Mainline1Bid: 'pop_BA_CampaignGrids_TopPage',\r\n // MainlineBid\r\n MainlineBid: 'pop_BA_CampaignGrids_TopPage',\r\n // ManualCalls\r\n ManualCalls: 'pop_BA_CampaignGrids_ManualCalls',\r\n // MatchedProductsAtAdGroup\r\n MatchedProductsAtAdGroup: 'pop_BA_BSC_ProductTargeted',\r\n // MatchedProductsAtCampaign\r\n MatchedProductsAtCampaign: 'pop_BA_BSC_ProductTargeted',\r\n // MatchedProductsAtProductGroup\r\n MatchedProductsAtProductGroup: 'pop_BA_BSC_ProductTargeted',\r\n // MerchantProductId\r\n MerchantProductId: 'pop_BA_Reporting_Clarity_MerchantProductID',\r\n // MetroArea\r\n MetroArea: 'pop_BA_Reporting_Clarity_MetroPhysical',\r\n // Month\r\n Month: 'pop_BA_Reporting_Clarity_Month',\r\n // MonthToDateSpend\r\n MonthToDateSpend: 'pop_BA_Reporting_Clarity_SpendMonthly',\r\n // MonthlyBudget\r\n MonthlyBudget: 'pop_BA_Reporting_Clarity_MonthlyBudget',\r\n // MostSpecificLocation\r\n MostSpecificLocation: 'pop_BA_Reporting_Clarity_MostSpecific',\r\n MPN: 'pop_BA_DimensionGrid_MPN',\r\n // NegativeKeyword\r\n NegativeKeyword: 'pop_BA_Reporting_Clarity_NegativeKeyword',\r\n // NegativeKeyWordList\r\n NegativeKeywordList: 'pop_BA_CampaignGrids_NegKWInList',\r\n // NegativeKeywordId\r\n NegativeKeywordId: 'pop_BA_Reporting_Clarity_NegKeywordID',\r\n // NegativeKeywordListId\r\n NegativeKeywordListId: 'pop_BA_Reporting_Clarity_NegKeywordListID',\r\n // NegativeKeywordMatchType\r\n NegativeKeywordMatchType: 'pop_BA_Reporting_Clarity_NegativeKeywordMatchID',\r\n Neighborhood: 'pop_BA_Reporting_Clarity_NeighborhoodLocation',\r\n // NetAmountDue\r\n NetAmountDue: 'pop_BA_Reporting_Clarity_NetDue',\r\n // NetRevenue\r\n NetRevenue: 'pop_BA_Reporting_Clarity_NetRevenue',\r\n // NetRevenueUSD\r\n NetRevenueUSD: 'pop_BA_Reporting_Clarity_NetRevenueUSD',\r\n // Network\r\n Network: 'Page_Reporting_Clarity_Network',\r\n // NewValue\r\n NewValue: 'pop_BA_Reporting_Clarity_NewValue',\r\n // OfferLanguage\r\n OfferLanguage: 'pop_BA_Reporting_Clarity_ProductOfferLanguage',\r\n // OldValue\r\n OldValue: 'pop_BA_Reporting_Clarity_OldValue',\r\n // Param1\r\n Param1: 'pop_BA_Reporting_Clarity_Param1',\r\n // Param2\r\n Param2: 'pop_BA_Reporting_Clarity_Param2',\r\n // Param3\r\n Param3: 'pop_BA_Reporting_Clarity_Param3',\r\n // PartitionType\r\n PartitionType: 'pop_BA_Reporting_Clarity_ProductPartitionType',\r\n // Path1\r\n Path1: 'pop_BA_Reporting_Clarity_Path1',\r\n // Path2\r\n Path2: 'pop_BA_Reporting_Clarity_Path2',\r\n // PhoneCalls\r\n PhoneCalls: 'pop_BA_Reporting_Clarity_PhoneCalls',\r\n // PhoneImpressions\r\n PhoneImpressions: 'pop_BA_CampaignGrids_PhoneImpr',\r\n // PostalCode\r\n PostalCode: 'pop_BA_Reporting_Clarity_ZipCode',\r\n // Price\r\n Price: 'pop_BA_Reporting_Clarity_Price',\r\n // Pricing Method\r\n PricingMethod: 'pop_BA_Reporting_Clarity_PricingMethod',\r\n // ProductBought\r\n ProductBought: 'pop_BA_Reporting_Clarity_ProductBought',\r\n ProductBoughtTitle: 'pop_BA_DimensionGrid_ProductBoughtTitle',\r\n // ProductCategory1\r\n ProductCategory1: 'pop_BA_Reporting_Clarity_Category',\r\n // ProductCategory2\r\n ProductCategory2: 'pop_BA_Reporting_Clarity_Category',\r\n // ProductCategory3\r\n ProductCategory3: 'pop_BA_Reporting_Clarity_Category',\r\n // ProductCategory4\r\n ProductCategory4: 'pop_BA_Reporting_Clarity_Category',\r\n // ProductCategory5\r\n ProductCategory5: 'pop_BA_Reporting_Clarity_Category',\r\n // ProductGroup\r\n ProductGroup: 'pop_BA_Reporting_Clarity_ProductGroup',\r\n // ProductName\r\n ProductName: 'pop_BA_Reporting_Clarity_ProductName',\r\n // ProductType1\r\n ProductType1: 'pop_BA_Reporting_Clarity_ProductType',\r\n // ProductType2\r\n ProductType2: 'pop_BA_Reporting_Clarity_ProductType',\r\n // ProductType3\r\n ProductType3: 'pop_BA_Reporting_Clarity_ProductType',\r\n // ProductType4\r\n ProductType4: 'pop_BA_Reporting_Clarity_ProductType',\r\n // ProductType5\r\n ProductType5: 'pop_BA_Reporting_Clarity_ProductType',\r\n // ProximityTargetLocation\r\n ProximityTargetLocation: 'pop_BA_Reporting_Clarity_Proximity',\r\n // Ptr\r\n Ptr: 'pop_BA_CampaignGrids_PTR',\r\n // PublisherUrl\r\n PublisherUrl: 'pop_BA_Reporting_Clarity_WebsitePubURL',\r\n // QualityImpact\r\n QualityImpact: 'Page_Reporting_Clarity_QualityImpact',\r\n // QualityScore\r\n QualityScore: 'Page_Reporting_Clarity_QualityScore',\r\n // QuantityBought\r\n QuantityBought: 'pop_BA_Reporting_Clarity_QuantityBought',\r\n // Quarter\r\n Quarter: 'Pop_BA_DimensionGrid_Quarter',\r\n // QueryIntentCity\r\n QueryIntentCity: 'pop_BA_Reporting_Clarity_CitySearchFor',\r\n // QueryIntentCountry\r\n QueryIntentCountry: 'pop_BA_Reporting_Clarity_CountrySearchFor',\r\n // QueryIntentCounty\r\n QueryIntentCounty: 'pop_BA_Reporting_Clarity_CountySearchFor',\r\n // QueryIntentDMA\r\n QueryIntentDMA: 'pop_BA_Reporting_Clarity_MetroSearchFor',\r\n // QueryIntentLocationId\r\n QueryIntentLocationId: 'pop_BA_Reporting_Clarity_LocationIdSearchFor',\r\n QueryIntentNeighborhood: 'pop_BA_Reporting_Clarity_NeighborhoodSearchFor',\r\n // QueryIntentPostalCode\r\n QueryIntentPostalCode: 'pop_BA_Reporting_Clarity_ZipCodeSearchFor',\r\n // QueryIntentState\r\n QueryIntentState: 'pop_BA_Reporting_Clarity_StateSearchFor',\r\n // Radius\r\n Radius: 'pop_BA_Reporting_Clarity_Radius',\r\n RelativeCTR: 'pop_BA_Reporting_Clarity_RelativeCTR',\r\n // ReturnOnAdSpend\r\n ReturnOnAdSpend: 'pop_BA_CampaignGrids_ReturnAdSpend',\r\n // Revenue\r\n Revenue: 'pop_BA_CampaignGrids_Revenue',\r\n // RevenuePerAssist\r\n RevenuePerAssist: 'pop_BA_Reporting_Clarity_RevenueAssist',\r\n // RevenuePerConversion\r\n RevenuePerConversion: 'pop_BA_Reporting_Clarity_RevenueConversion',\r\n // Sales house\r\n SalesHouse: 'pop_BA_Reporting_Clarity_SalesHouse',\r\n // SearchQuery\r\n SearchQuery: 'pop_BA_Reporting_Clarity_SearchTerm',\r\n // SellerName\r\n SellerName: 'pop_BA_Reporting_Clarity_SellerName',\r\n // SoldToCustomerName\r\n SoldToCustomerName: 'pop_BA_Reporting_Clarity_SoldToName',\r\n // SoldToCustomerNumber\r\n SoldToCustomerNumber: 'pop_BA_Reporting_Clarity_SoldToNumber',\r\n // SoldToCountry\r\n SoldToCountry: 'pop_BA_Reporting_Clarity_SoldToCountry',\r\n // Spend\r\n Spend: 'pop_BA_CampaignGrids_Spend',\r\n // StartTime\r\n StartTime: 'pop_BA_Reporting_Clarity_CallStartTime',\r\n // State\r\n State: 'pop_BA_Reporting_Clarity_StatePhysical',\r\n // Status\r\n Status: 'pop_BA_Reporting_Clarity_AdGroupStatus',\r\n // TargetingSetting\r\n TargetingSetting: 'pop_BA_AudienceTarget',\r\n // TimePeriod\r\n TimePeriod: 'pop_BA_Reporting_Clarity_Date',\r\n // StoreId\r\n StoreId: 'pop_BA_Reporting_Store_ID',\r\n // TimePeriod-DayOfWeek\r\n 'TimePeriod-DayOfWeek': 'pop_BA_Reporting_Clarity_DayOfWeek',\r\n // TimePeriod-HourOfDay\r\n 'TimePeriod-HourOfDay': 'pop_BA_Reporting_Clarity_HourOfDay',\r\n // Title\r\n Title: 'pop_BA_Reporting_Clarity_Title',\r\n // TitlePart1\r\n TitlePart1: 'pop_BA_Reporting_Clarity_AdTitle1',\r\n // TitlePart2\r\n TitlePart2: 'pop_BA_Reporting_Clarity_AdTitle2',\r\n // TitlePart3\r\n TitlePart3: 'pop_BA_Reporting_Clarity_AdTitle3',\r\n // Tool\r\n Tool: 'pop_BA_Reporting_Clarity_Tool',\r\n // TopImpressionRatePercent\r\n TopImpressionRatePercent: 'pop_BA_Reporting_Clarity_TopImpressionRate',\r\n // TopImpressionShareLostToBudgetPercent\r\n TopImpressionShareLostToBudgetPercent: 'pop_BA_Reporting_Clarity_TopImpressionLosttoBudget',\r\n // TopImpressionShareLostToRankPercent\r\n TopImpressionShareLostToRankPercent: 'pop_BA_Reporting_Clarity_TopImpressionLosttoRank',\r\n // TopImpressionSharePercent\r\n TopImpressionSharePercent: 'pop_BA_Reporting_Clarity_TopImpressionShare',\r\n // TopVsOther\r\n TopVsOther: 'Page_Reporting_Clarity_TopVsOther',\r\n // TotalClicks\r\n TotalClicks: 'pop_BA_Reporting_Clarity_AdExtTotalClicks',\r\n // TotalClicksOnAdElements\r\n TotalClicksOnAdElements: 'pop_BA_Reporting_Ad_Element_Total_Clicks',\r\n // TrackingTemplate\r\n TrackingTemplate: 'pop_BA_Reporting_Clarity_TrackingTemplate',\r\n // UserId\r\n UserId: 'pop_BA_Reporting_Clarity_UserID',\r\n // WebsiteCoverage\r\n WebsiteCoverage: 'pop_BA_Reporting_Clarity_DSA_WebsiteCoverage',\r\n // Week\r\n Week: 'pop_BA_Reporting_Clarity_Week',\r\n // WeekStartingMonday\r\n WeekStartingMonday: 'pop_BA_Reporting_Clarity_WeekStartingMonday',\r\n // ViewThroughConversions\r\n ViewThroughConversions: 'pop_BA_Reporting_Clarity_ViewThrough',\r\n // ViewThroughConversionsRevenue\r\n ViewThroughRevenue: 'pop_BA_Reporting_Clarity_ViewThroughConvRevenue',\r\n // ViewThroughConversionsCPA\r\n ViewThroughCostPerConversion: 'pop_BA_Reporting_Clarity_ViewThroughConvCPA',\r\n ViewThroughCostPerConversionQualified: 'pop_BA_Reporting_Clarity_ViewThroughConvCPA',\r\n // ViewThroughConversionsReturnOnAdSpend\r\n ViewThroughReturnOnAdSpend: 'pop_BA_Reporting_Clarity_ViewThroughConvReturnOnAdSpend',\r\n // ViewThroughConversionsRate\r\n ViewThroughConversionRate: 'pop_BA_Reporting_Clarity_ViewThroughConvRate',\r\n ViewThroughConversionRateQualified: 'pop_BA_Reporting_Clarity_ViewThroughConvRate',\r\n // Year\r\n Year: 'pop_BA_Reporting_Clarity_Year',\r\n /** Video metrics */\r\n VideoViews: 'pop_BA_VideoAds_VideoViews',\r\n ViewThroughRate: 'pop_BA_VideoAds_ViewThroughRate',\r\n AverageCPV: 'pop_BA_VideoAds_AverageCPV',\r\n TotalWatchTimeInMS: 'Page_CampaignGrids_TotalWatchTimeInMS',\r\n AverageWatchTimePerImpression: 'pop_BA_VideoAds_AverageWatchTimePerImpression',\r\n AverageWatchTimePerVideoView: 'pop_BA_VideoAds_AverageWatchTimePerVideoView',\r\n VideoViewsAt25Percent: 'pop_BA_VideoAds_VideoViewsAt25Percent',\r\n VideoViewsAt50Percent: 'pop_BA_VideoAds_VideoViewsAt50Percent',\r\n VideoViewsAt75Percent: 'pop_BA_VideoAds_VideoViewsAt75Percent',\r\n CompletedVideoViews: 'pop_BA_VideoAds_CompletedVideoViews',\r\n VideoCompletionRate: 'pop_BA_VideoAds_VideoCompletionRate',\r\n};\r\n\r\n","// This error message will be displayed when 'MandateColumnSet' from report interface was violated.\r\nexport const missingMandatoryColumnErrors = {\r\n ProductDimensionPerformanceReport: _TL_('You must select at least one attribute and performance statistic in order for the report to run. Examples of attributes are Brand or Merchant product ID. Examples of performance statistics are Clicks or Impressions.'),\r\n};\r\n","import _ from 'underscore';\r\n\r\nconst enumBlackList = {\r\n LanguageCode: ['NO'],\r\n};\r\n\r\nexport function processFilters(fields) {\r\n return _.mapObject(fields, (rawField, rawKey) => {\r\n const field = {\r\n ...rawField,\r\n filterable: true,\r\n };\r\n\r\n if (enumBlackList[rawKey]) {\r\n field.enum = _.difference(field.enum, enumBlackList[rawKey]);\r\n }\r\n\r\n return field;\r\n });\r\n}\r\n","import _ from 'underscore';\r\n\r\nfunction processCategory(\r\n columns, mandatoryColumns, aggregationRestrictions,\r\n columnNames, helpLinkIds\r\n) {\r\n return _.map(columns, (value, key) => {\r\n const node = {\r\n // value (type info) is not used by column chooser, but we need it for report data grid\r\n key,\r\n name: _.result(columnNames, key, key),\r\n type: _.result(value, 'DisplayType', ''),\r\n };\r\n\r\n if (aggregationRestrictions[key]) {\r\n node.forbiddenTimeGrains = aggregationRestrictions[key];\r\n }\r\n if (mandatoryColumns[key]) {\r\n node.selectOption = 'mandatory';\r\n }\r\n if (_.has(helpLinkIds, key)) {\r\n node.helpTopic = helpLinkIds[key];\r\n }\r\n\r\n return node;\r\n });\r\n}\r\n\r\nexport function processColumns(\r\n categories, mandatoryColumns,\r\n aggregationRestrictions = {}, columnNames = {}, helpLinkIds = {}\r\n) {\r\n return _.map(categories, (category, key) => ({\r\n name: _.result(columnNames, key, key),\r\n type: key,\r\n options: processCategory(\r\n category, mandatoryColumns, aggregationRestrictions,\r\n columnNames, helpLinkIds\r\n ),\r\n }));\r\n}\r\n","import _ from 'underscore';\r\nimport { processSharedFields } from './shared-field-processor';\r\nimport { processFilters } from './filter-processor';\r\nimport { processColumns } from './column-processor';\r\nimport { getAggregationRestrictions } from './columns/get-aggregation-restrictions';\r\n\r\nexport function processSchema(\r\n entitySchema, sharedSchema,\r\n elevatedColumns, pilotRestrictionSets, pilotDefaultSets,\r\n columnNames, helpLinkIds = {}, timeRangeOverride, missingMandatoryColumnError\r\n) {\r\n const rawSchema = entitySchema.properties;\r\n // pass-through fields\r\n const reportSchema = _.pick(rawSchema, 'ReportAggregation', 'ExclusionSets', 'ScopeFilterLevel', 'MandateColumnSet');\r\n reportSchema.SchemaName = rawSchema.SchemaName;\r\n\r\n if (reportSchema.MandateColumnSet) {\r\n reportSchema.MissingMandatoryColumnError = missingMandatoryColumnError;\r\n }\r\n\r\n const supportedAggregations = reportSchema.ReportAggregation.enum;\r\n reportSchema.ReportAggregation.default = _.contains(supportedAggregations, 'Summary') ? 'Summary' : supportedAggregations[0];\r\n reportSchema.DataRetention =\r\n _.object(\r\n supportedAggregations,\r\n _.map(supportedAggregations, value => (value === 'Hourly' || value === 'HourOfDay' ? rawSchema.DataRetention.Hourly : rawSchema.DataRetention.Daily))\r\n );\r\n\r\n if (timeRangeOverride) {\r\n reportSchema.TimeRanges = timeRangeOverride;\r\n }\r\n\r\n // filter fields\r\n const filterFields = rawSchema.Filters.properties;\r\n const flatternedFilters = processSharedFields(filterFields, sharedSchema.filters);\r\n const processedFilter = processFilters(flatternedFilters);\r\n _.extend(reportSchema, {\r\n Filters: {\r\n type: rawSchema.Filters.type,\r\n properties: processedFilter,\r\n },\r\n });\r\n\r\n // column chooser fields\r\n const validCategories = ['DimensionColumns', 'MetricColumns'];\r\n const columnGroups = _.pick(rawSchema, (node, key) =>\r\n _.contains(validCategories, key) && !_.isEmpty(node));\r\n const {\r\n default: defaultColumns,\r\n linechartDefault,\r\n barchartDefault,\r\n mandatory: mandatoryColumns,\r\n } = elevatedColumns;\r\n // For those have mandatory columns more than 4(so far account report and destinationUrl report),\r\n // we don't show chart, because they have more than one row\r\n const RenderTypes = ['Table']\r\n .concat(linechartDefault && mandatoryColumns.length < 4 ? ['Linechart'] : [])\r\n .concat(barchartDefault && mandatoryColumns.length < 4 ? ['Barchart'] : []);\r\n const mandatoryColumnsMap = _.object(mandatoryColumns, mandatoryColumns);\r\n const schemaMandatory = rawSchema.RequiredColumns || [];\r\n const dif = _.difference(schemaMandatory, mandatoryColumns);\r\n if (!_.isEmpty(dif)) {\r\n throw new Error(`Mandatory column not defined for ${entitySchema.name} ${JSON.stringify(dif)}`);\r\n }\r\n const aggregationRestrictions = getAggregationRestrictions(rawSchema);\r\n\r\n const processedColumns =\r\n processColumns(\r\n columnGroups, mandatoryColumnsMap, aggregationRestrictions,\r\n columnNames, helpLinkIds\r\n );\r\n _.extend(reportSchema, {\r\n RenderTypes,\r\n Columns: {\r\n categories: processedColumns,\r\n default: defaultColumns,\r\n linechartDefault,\r\n barchartDefault,\r\n piloted: pilotRestrictionSets,\r\n pilotDefault: pilotDefaultSets,\r\n },\r\n });\r\n\r\n return reportSchema;\r\n}\r\n","import _ from 'underscore';\r\n\r\nexport function processSharedFields(fields, shared) {\r\n return _.mapObject(fields, (field) => {\r\n const fieldSchema = field.$schema || '';\r\n const sharedSchema = _.result(shared, fieldSchema.replace('shared/filters/', ''));\r\n\r\n return sharedSchema;\r\n });\r\n}\r\n","import _ from 'underscore';\r\n\r\nexport const getAggregationRestrictions = (rawSchema) => {\r\n const output = {};\r\n if (!rawSchema.AggregationExclusion) {\r\n return output;\r\n }\r\n _.forEach(rawSchema.AggregationExclusion, (node, timeGrain) => {\r\n if (_.isArray(node)) {\r\n _.forEach(node, (columnKey) => {\r\n if (!output[columnKey]) {\r\n output[columnKey] = [];\r\n }\r\n output[columnKey].push(timeGrain);\r\n });\r\n }\r\n });\r\n return output;\r\n};\r\n\r\n","export const timeRangeOverride = {\r\n 'AccountPerformanceReport-SixWeeks':\r\n {\r\n Weekly: ['LastSixWeeksStartingSun', 'Custom'],\r\n WeeklyStartingMonday: ['LastSixWeeksStartingMon', 'Custom'],\r\n },\r\n 'AccountPerformanceReport-TwoMonths': {\r\n Monthly: ['LastTwoMonths', 'Custom'],\r\n },\r\n 'AccountPerformanceReport-TwoYears': {\r\n Monthly: ['LastTwoYears', 'Custom'],\r\n },\r\n};\r\n","/* eslint-disable camelcase */\r\nimport _ from 'underscore';\r\nimport {\r\n Shared,\r\n AccountPerformanceReportUIV1,\r\n AccountPerformanceReport_SixWeeksUIV1,\r\n AccountPerformanceReport_TwoMonthsUIV1,\r\n AccountPerformanceReport_TwoYearsUIV1,\r\n AccountPerformanceReport_ShareOfVoiceUIV1,\r\n AdDynamicTextPerformanceReportUIV1,\r\n AdExtensionByAdReportUIV1,\r\n AdExtensionByKeywordReportUIV1,\r\n AdExtensionDetailReportUIV1,\r\n AdGroupPerformanceReportUIV1,\r\n AdPerformanceReportUIV1,\r\n AgeGenderAudienceReportUIV1,\r\n AudiencePerformanceReportUIV1,\r\n BillingStatementReportUIV1,\r\n BudgetSummaryReportUIV1,\r\n CallDetailReportUIV1,\r\n CampaignPerformanceReportUIV1,\r\n ConversionPerformanceReportUIV1,\r\n CustomerInvoiceReportUIV1,\r\n DSAAutoTargetPerformanceReportUIV1,\r\n DSACategoryPerformanceReportUIV1,\r\n DSASearchQueryPerformanceReportUIV1,\r\n DestinationURLPerformanceReportUIV1,\r\n FraudChangeHistoryReportUIV1,\r\n GeographicPerformanceReportUIV1,\r\n GoalsAndFunnelsReportUIV1,\r\n KeywordPerformanceReportUIV1,\r\n NegativeKeywordConflictReportUIV1,\r\n ProductDimensionPerformanceReportUIV1,\r\n ProductMatchCountReportUIV1,\r\n ProductNegativeKeywordConflictReportUIV1,\r\n ProductPartitionPerformanceReportUIV1,\r\n ProductPartitionUnitPerformanceReportUIV1,\r\n ProductSearchQueryPerformanceReportUIV1,\r\n ProfessionalDemographicsAudienceReportUIV1,\r\n PublisherUsagePerformanceReportUIV1,\r\n SearchCampaignChangeHistoryReportUIV1,\r\n SearchQueryPerformanceReportUIV1,\r\n ShareOfVoiceReportUIV1,\r\n UserLocationPerformanceReportUIV1,\r\n UserRoleChangeHistoryReportUIV1\r\n} from '@bingads-webui/report-ui-interface';\r\nimport { i18nMap } from '@bingads-webui-campaign/report-shared';\r\nimport { elevatedColumnsMap } from './columns/elevated-columns';\r\nimport { restrictedColumnsByReport, defaultColumnsByReport } from './columns/piloted-columns';\r\nimport { helpLinkIds } from './columns/help-link-ids';\r\nimport { missingMandatoryColumnErrors } from './columns/missing-mandatory-column-error';\r\nimport { processSchema } from './schema-processor';\r\nimport { timeRangeOverride } from './overrides/time-range-override';\r\n\r\nconst process = _.memoize(\r\n rawSchema =>\r\n processSchema(\r\n rawSchema,\r\n Shared,\r\n elevatedColumnsMap[rawSchema.name],\r\n restrictedColumnsByReport[rawSchema.name] || [],\r\n defaultColumnsByReport[rawSchema.name] || [],\r\n i18nMap.ColumnName,\r\n helpLinkIds,\r\n timeRangeOverride[rawSchema.name],\r\n missingMandatoryColumnErrors[rawSchema.name]\r\n ),\r\n reportSchema => reportSchema.name\r\n);\r\n\r\n/* eslint-disable max-len */\r\nexport const AccountPerformanceReport = () => process(AccountPerformanceReportUIV1);\r\nexport const AccountPerformanceReport_SixWeeks = () => process(AccountPerformanceReport_SixWeeksUIV1);\r\nexport const AccountPerformanceReport_TwoMonths = () => process(AccountPerformanceReport_TwoMonthsUIV1);\r\nexport const AccountPerformanceReport_TwoYears = () => process(AccountPerformanceReport_TwoYearsUIV1);\r\nexport const AccountPerformanceReport_ShareOfVoice = () => process(AccountPerformanceReport_ShareOfVoiceUIV1);\r\nexport const AdDynamicTextPerformanceReport = () => process(AdDynamicTextPerformanceReportUIV1);\r\nexport const AdExtensionByAdReport = () => process(AdExtensionByAdReportUIV1);\r\nexport const AdExtensionByKeywordReport = () => process(AdExtensionByKeywordReportUIV1);\r\nexport const AdExtensionDetailReport = () => process(AdExtensionDetailReportUIV1);\r\nexport const AdGroupPerformanceReport = () => process(AdGroupPerformanceReportUIV1);\r\nexport const AdPerformanceReport = () => process(AdPerformanceReportUIV1);\r\nexport const AgeGenderAudienceReport = () => process(AgeGenderAudienceReportUIV1);\r\nexport const AudiencePerformanceReport = () => process(AudiencePerformanceReportUIV1);\r\nexport const BillingStatementReport = () => process(BillingStatementReportUIV1);\r\nexport const BudgetSummaryReport = () => process(BudgetSummaryReportUIV1);\r\nexport const CallDetailReport = () => process(CallDetailReportUIV1);\r\nexport const CampaignPerformanceReport = () => process(CampaignPerformanceReportUIV1);\r\nexport const ConversionPerformanceReport = () => process(ConversionPerformanceReportUIV1);\r\nexport const CustomerInvoiceReport = () => process(CustomerInvoiceReportUIV1);\r\nexport const DSAAutoTargetPerformanceReport = () => process(DSAAutoTargetPerformanceReportUIV1);\r\nexport const DSACategoryPerformanceReport = () => process(DSACategoryPerformanceReportUIV1);\r\nexport const DSASearchQueryPerformanceReport = () => process(DSASearchQueryPerformanceReportUIV1);\r\nexport const DestinationURLPerformanceReport = () => process(DestinationURLPerformanceReportUIV1);\r\nexport const FraudChangeHistoryReport = () => process(FraudChangeHistoryReportUIV1);\r\nexport const GeographicPerformanceReport = () => process(GeographicPerformanceReportUIV1);\r\nexport const GoalsAndFunnelsReport = () => process(GoalsAndFunnelsReportUIV1);\r\nexport const KeywordPerformanceReport = () => process(KeywordPerformanceReportUIV1);\r\nexport const NegativeKeywordConflictReport = () => process(NegativeKeywordConflictReportUIV1);\r\nexport const ProductDimensionPerformanceReport = () => process(ProductDimensionPerformanceReportUIV1);\r\nexport const ProductMatchCountReport = () => process(ProductMatchCountReportUIV1);\r\nexport const ProductNegativeKeywordConflictReport = () => process(ProductNegativeKeywordConflictReportUIV1);\r\nexport const ProductPartitionPerformanceReport = () => process(ProductPartitionPerformanceReportUIV1);\r\nexport const ProductPartitionUnitPerformanceReport = () => process(ProductPartitionUnitPerformanceReportUIV1);\r\nexport const ProductSearchQueryPerformanceReport = () => process(ProductSearchQueryPerformanceReportUIV1);\r\nexport const ProfessionalDemographicsAudienceReport = () => process(ProfessionalDemographicsAudienceReportUIV1);\r\nexport const PublisherUsagePerformanceReport = () => process(PublisherUsagePerformanceReportUIV1);\r\nexport const SearchCampaignChangeHistoryReport = () => process(SearchCampaignChangeHistoryReportUIV1);\r\nexport const SearchQueryPerformanceReport = () => process(SearchQueryPerformanceReportUIV1);\r\nexport const ShareOfVoiceReport = () => process(ShareOfVoiceReportUIV1);\r\nexport const UserLocationPerformanceReport = () => process(UserLocationPerformanceReportUIV1);\r\nexport const UserRoleChangeHistoryReport = () => process(UserRoleChangeHistoryReportUIV1);\r\n\r\nexport const schema = {};\r\nObject.defineProperties(schema, {\r\n AccountPerformanceReport: { get: AccountPerformanceReport, enumerable: true },\r\n 'AccountPerformanceReport-SixWeeks': { get: AccountPerformanceReport_SixWeeks, enumerable: true },\r\n 'AccountPerformanceReport-TwoMonths': { get: AccountPerformanceReport_TwoMonths, enumerable: true },\r\n 'AccountPerformanceReport-TwoYears': { get: AccountPerformanceReport_TwoYears, enumerable: true },\r\n 'AccountPerformanceReport-ShareOfVoice': { get: AccountPerformanceReport_ShareOfVoice, enumerable: true },\r\n AdDynamicTextPerformanceReport: { get: AdDynamicTextPerformanceReport, enumerable: true },\r\n AdExtensionByAdReport: { get: AdExtensionByAdReport, enumerable: true },\r\n AdExtensionByKeywordReport: { get: AdExtensionByKeywordReport, enumerable: true },\r\n AdExtensionDetailReport: { get: AdExtensionDetailReport, enumerable: true },\r\n AdGroupPerformanceReport: { get: AdGroupPerformanceReport, enumerable: true },\r\n AdPerformanceReport: { get: AdPerformanceReport, enumerable: true },\r\n AgeGenderAudienceReport: { get: AgeGenderAudienceReport, enumerable: true },\r\n AudiencePerformanceReport: { get: AudiencePerformanceReport, enumerable: true },\r\n BillingStatementReport: { get: BillingStatementReport, enumerable: true },\r\n BudgetSummaryReport: { get: BudgetSummaryReport, enumerable: true },\r\n CallDetailReport: { get: CallDetailReport, enumerable: true },\r\n CampaignPerformanceReport: { get: CampaignPerformanceReport, enumerable: true },\r\n ConversionPerformanceReport: { get: ConversionPerformanceReport, enumerable: true },\r\n CustomerInvoiceReport: { get: CustomerInvoiceReport, enumerable: true },\r\n DSAAutoTargetPerformanceReport: { get: DSAAutoTargetPerformanceReport, enumerable: true },\r\n DSACategoryPerformanceReport: { get: DSACategoryPerformanceReport, enumerable: true },\r\n DSASearchQueryPerformanceReport: { get: DSASearchQueryPerformanceReport, enumerable: true },\r\n DestinationURLPerformanceReport: { get: DestinationURLPerformanceReport, enumerable: true },\r\n FraudChangeHistoryReport: { get: FraudChangeHistoryReport, enumerable: true },\r\n GeographicPerformanceReport: { get: GeographicPerformanceReport, enumerable: true },\r\n GoalsAndFunnelsReport: { get: GoalsAndFunnelsReport, enumerable: true },\r\n KeywordPerformanceReport: { get: KeywordPerformanceReport, enumerable: true },\r\n NegativeKeywordConflictReport: { get: NegativeKeywordConflictReport, enumerable: true },\r\n ProductDimensionPerformanceReport: { get: ProductDimensionPerformanceReport, enumerable: true },\r\n ProductMatchCountReport: { get: ProductMatchCountReport, enumerable: true },\r\n ProductNegativeKeywordConflictReport: { get: ProductNegativeKeywordConflictReport, enumerable: true },\r\n ProductPartitionPerformanceReport: { get: ProductPartitionPerformanceReport, enumerable: true },\r\n ProductPartitionUnitPerformanceReport: { get: ProductPartitionUnitPerformanceReport, enumerable: true },\r\n ProductSearchQueryPerformanceReport: { get: ProductSearchQueryPerformanceReport, enumerable: true },\r\n ProfessionalDemographicsAudienceReport: { get: ProfessionalDemographicsAudienceReport, enumerable: true },\r\n PublisherUsagePerformanceReport: { get: PublisherUsagePerformanceReport, enumerable: true },\r\n SearchCampaignChangeHistoryReport: { get: SearchCampaignChangeHistoryReport, enumerable: true },\r\n SearchQueryPerformanceReport: { get: SearchQueryPerformanceReport, enumerable: true },\r\n ShareOfVoiceReport: { get: ShareOfVoiceReport, enumerable: true },\r\n UserLocationPerformanceReport: { get: UserLocationPerformanceReport, enumerable: true },\r\n UserRoleChangeHistoryReport: { get: UserRoleChangeHistoryReport, enumerable: true },\r\n});\r\n","export const deprecatedReports = {\r\n AgeGenderDemographicReport: true,\r\n 's:prdct:target:actv:sum': true,\r\n 's:traffic:sum': true,\r\n 's:segmentation:sum': true,\r\n 's:pla:offer:perf': true,\r\n};\r\n\r\n","import { validationLocalization } from '@bingads-webui-campaign-react/smart-i18n';\r\nimport { columnChooser } from './column-chooser';\r\nimport { filter } from './filter';\r\nimport { CronFormat } from './cron-format';\r\nimport { dateRange } from './date-range';\r\nimport { inlineDownload } from './inline-download';\r\nimport { inlineEdit } from './inline-edit';\r\n\r\nexport const legacyKeys = [\r\n validationLocalization, columnChooser, filter, CronFormat, dateRange, inlineDownload, inlineEdit];\r\n","export const columnChooser = {\r\n ColumnChooser_Header: _TL_('Modify columns'),\r\n ColumnChooser_SubHeader: _TL_(''),\r\n ColumnChooser_AvailableColumnsHeader: _TL_('Available columns'),\r\n ColumnChooser_SelectedColumnsHeader: _TL_('Selected columns (drag and drop to reorder)'),\r\n ColumnChooser_SelectedColumnsHeader_TopHalf: _TL_('Selected rows'),\r\n ColumnChooser_SelectedColumnsHeader_BottomHalf: _TL_('Selected columns'),\r\n ColumnChooser_SaveColumnDescription: _TL_('Save this set of columns'),\r\n ColumnChooser_Apply: _TL_('Apply'),\r\n ColumnChooser_Cancel: _TL_(''),\r\n ColumnChooser_Add: _TL_('Add'),\r\n ColumnChooser_Added: _TL_('Added'),\r\n ColumnChooser_Remove: _TL_('Remove'),\r\n ColumnChooser_AddAllInList: _TL_('Add all columns'),\r\n ColumnChooser_RemoveAllInList: _TL_('Remove all columns'),\r\n ColumnChooser_RemoveAllSelected: _TL_('Remove all selected columns'),\r\n ColumnChooser_NoSearchResult: _TL_('No results found'),\r\n ColumnChooser_Disabled: _TL_('Add'),\r\n ColumnChooser_Search_Column: _TL_('Search column'),\r\n ColumnChooser_AddColumn: _TL_('Add Column {{columnName}}'),\r\n ColumnChooser_RemoveColumn: _TL_('Remove Column {{columnName}}'),\r\n ColumnChooser_LiftColumn: _TL_('You have lifted the {{columnName}} column in position {{positionFrom}}.'),\r\n ColumnChooser_MoveColumn: _TL_('You have moved the {{columnName}} column from position {{positionFrom}} to position {{positionTo}}.'),\r\n ColumnChooser_DropColumn: _TL_('You have dropped the {{columnName}} column. You have moved the {{columnName}} column from position {{positionFrom}} to position {{positionTo}}.'),\r\n ColumnChooser_RemovedColumns: _TL_('You have removed the {{columnNames}} columns.'),\r\n ColumnChooser_RemovedColumn: _TL_('You have removed the {{columnNames}} column.'),\r\n ColumnChooser_AddedColumns: _TL_('You have added the {{columnNames}} columns.'),\r\n ColumnChooser_AddedColumn: _TL_('You have added the {{columnNames}} column.'),\r\n};\r\n\r\n","export const filter = {\r\n Filter_Operator_IN: _TL_('either of'),\r\n Filter_Operator_EQ: _TL_('equals'),\r\n Filter_Operator_NEQ: _TL_('does not equal'),\r\n Filter_Operator_Contains: _TL_('contains'),\r\n Filter_Operator_Not_Contains: _TL_('does not contain'),\r\n Filter_Operator_StartsWith: _TL_('begins with'),\r\n Filter_Operator_EndsWith: _TL_('ends with'),\r\n Filter_Operator_LT: _TL_('less than'),\r\n Filter_Operator_GT: _TL_('greater than'),\r\n Filter_Operator_LTE: _TL_('less than or equals'),\r\n Filter_Operator_GTE: _TL_('greater than or equals'),\r\n Filter_Validation_EnumSelectionRequired: _TL_('Select at least one option'),\r\n Filter_Validation_Common_Required: _TL_('Required field'),\r\n Filter_Validation_Common_Number: _TL_('Only numeric values allowed'),\r\n Filter_Validation_Common_Number_Range: _TL_('Numeric value out of allowed range'),\r\n Filter_Validation_Common_Integer: _TL_('Only integer values allowed'),\r\n Filter_Validation_Common_Date: _TL_('Incorrect date format'),\r\n Filter_Validation_Common_Id_Count: _TL_('Only {{maxCount}} items allowed'),\r\n Filter_Cannot_Have_Duplicate: _TL_('Cannot filter by duplicate property'),\r\n Filter_Remove: _TL_('Remove'),\r\n Filter_PredicateList_New: _TL_('Add another'),\r\n Performance: _TL_('Performance'),\r\n Filter_Key_AriaLabel: _TL_('What to filter'),\r\n Filter_Operator_AriaLabel: _TL_('How to filter'),\r\n Filter_Value_AriaLabel: _TL_('What to filter on'),\r\n SelectEntityOrEntities: _TL_('Select {0}', { comment: '{0} is placeholder for name' }),\r\n SelectedEntityOrEntities: _TL_(' selected {0}', { comment: '{0} is placeholder for name' }),\r\n Selector_LoadingText: _TL_('Loading...'),\r\n Selector_Check_All: _TL_('All'),\r\n Filter_Selector_MoreThanLimit: _TL_('Showing only the first {0} {1}. Narrow your search to find the right set of {1}', { comment: '{0} is the max number of items that can be displayed. {1} is the name of the entity in plural form, eg. campaigns, ads, labels etc.' }),\r\n NoEntityOrEntities: _TL_('No {0}', { comment: '{0} is placeholder for name' }),\r\n 'Select all': _TL_('Select all'),\r\n 'Deselect all': _TL_('Deselect all'),\r\n 'Select this row': _TL_('Select this row'),\r\n 'Deselect this row': _TL_('Deselect this row'),\r\n};\r\n","export const CronFormat = {\r\n CronFormatter_Frequency_MonthlyTemplate: _TL_('Runs {{frequency}} on day {{dayOfMonth}} at {{hour}}'),\r\n CronFormatter_Frequency_WeeklyTemplate: _TL_('Runs {{frequency}} on {{dayOfWeek}} at {{hour}}'),\r\n CronFormatter_Frequency_DailyTemplate: _TL_('Runs {{frequency}} at {{hour}}'),\r\n CronFormatter_FrequencyGrain_Runs_Daily: _TL_('daily'),\r\n CronFormatter_FrequencyGrain_Runs_Monthly: _TL_('monthly'),\r\n CronFormatter_FrequencyGrain_Runs_Weekly: _TL_('weekly'),\r\n CronFormatter_FrequencyGrain_DropdownMenu_None: _TL_('None'),\r\n CronFormatter_FrequencyGrain_DropdownMenu_Daily: _TL_('Daily'),\r\n CronFormatter_FrequencyGrain_DropdownMenu_Monthly: _TL_('Monthly'),\r\n CronFormatter_FrequencyGrain_DropdownMenu_Weekly: _TL_('Weekly'),\r\n};\r\n","export const dateRange = {\r\n DateFilter_Option_Custom: _TL_('Custom'),\r\n DateFilter_Option_CustomTime: _TL_('Time'),\r\n DateFilter_Option_Today: _TL_('Today'),\r\n DateFilter_Option_Yesterday: _TL_('Yesterday'),\r\n DateFilter_Option_ThisWeekSunday: _TL_('This week (Sun - Today)'),\r\n DateFilter_Option_ThisWeekMonday: _TL_('This week (Mon - Today)'),\r\n DateFilter_Option_Last7days: _TL_('Last 7 days'),\r\n DateFilter_Option_LastWeekSunday: _TL_('Last week (Sun - Sat)'),\r\n DateFilter_Option_LastWeekMonday: _TL_('Last week (Mon - Sun)'),\r\n DateFilter_Option_Last14Days: _TL_('Last 14 days'),\r\n DateFilter_Option_ThisMonth: _TL_('This month'),\r\n DateFilter_Option_LastMonth: _TL_('Last month'),\r\n DateFilter_Option_Last30Days: _TL_('Last 30 days'),\r\n DateFilter_Option_Last3Months: _TL_('Last 3 months'),\r\n DateFilter_Option_Last6Months: _TL_('Last 6 months'),\r\n DateFilter_Option_TwelveMonthsToDate: _TL_('Rolling year'),\r\n DateFilter_Option_ThisYear: _TL_('This year'),\r\n DateFilter_Option_LastYear: _TL_('Last year'),\r\n DateFilter_Option_AllTime: _TL_('Entire time'),\r\n DateFilter_Option_PreviousPeriod: _TL_('Previous period'),\r\n DateFilter_Option_SamePeriodLastYear: _TL_('Same period last year'),\r\n DateFilter_Option_CustomPeriod: _TL_('Custom'),\r\n};\r\n","export const inlineDownload = {\r\n InlineDownloadReports_Column_EmailFrequency: _TL_('How often'),\r\n InlineDownloadReports_EmailAndScheduling_Frequency_None: _TL_('One time'),\r\n InlineDownloadReports_EmailAndScheduling_Frequency_Daily_Template: _TL_('at {{hour}}'),\r\n InlineDownloadReports_EmailAndScheduling_Frequency_Weekly_Template: _TL_('on {{dayOfWeek}} at {{hour}}'),\r\n InlineDownloadReports_EmailAndScheduling_Frequency_Monthly_Template: _TL_('on day {{dayOfMonth}} of every month at {{hour}}'),\r\n InlineDownloadReports_Action_UnsubscribeMe_Failed_NotSubscribed: _TL_('You didn\\'t subscribe to report \"{{report}}\"'),\r\n InlineDownloadReports_Action_UnsubscribeMe_Failed: _TL_('Failed to unsubscribe from report \"{{report}}\"'),\r\n InlineDownloadReports_Action_UnsubscribeMe_Succeeded: _TL_('You have unsubscribed from report \"{{report}}\"'),\r\n};\r\n","export const inlineEdit = {\r\n Grid_Edit_Cell: _TL_('Edit cell of column {{columnName}} and row {{rowIndex}}'),\r\n Grid_EditButtonText: _TL_('Edit'),\r\n Save: _TL_('Save'),\r\n Cancel: _TL_('Cancel'),\r\n Loading: _TL_('Loading...'),\r\n Schema_ReportEmailRule_Property_Cron: _TL_('Frequency'),\r\n Schema_ReportEmailRule_Property_StartTime: _TL_('Start date'),\r\n Schema_ReportEmailRule_Property_EndTime: _TL_('End date'),\r\n InlineDownloadReports_EmailAndScheduling_SendReportTo: _TL_('Send report to'),\r\n InlineDownloadReports_SearchUsers: _TL_('Search users'),\r\n InlineDownloadReports_EmailAndScheduling_Email_Me: _TL_('me'),\r\n InlineDownloadReports_EmailAndScheduling_Email_Template_Me: _TL_('{{email}} ({{me}})'),\r\n InlineDownloadReports_EmailAndScheduling_User: _TL_('{{email}} {{firstName}} {{lastName}}'),\r\n InlineDownloadReports_EmailAndScheduling_FailedToLoadUsers: _TL_('Failed to load users'),\r\n InlineDownloadReports_EmailAndScheduling_AllUsers: _TL_('All users with access to view reports'),\r\n 'Click to learn more about {{item}}': _TL_('Click to learn more about {{item}}'),\r\n SimpleForm_Button_Save: _TL_('Save'),\r\n SimpleForm_Button_Cancel: _TL_('Cancel'),\r\n KoSchema_String_RemainingCharactersText: _TL_('{{count}} characters remaining'),\r\n KoSchema_String_ExceededCharactersText: _TL_('Exceeded by {{count}} characters'),\r\n /* Start: date range column */\r\n Custom: _TL_('Custom'),\r\n Schema_Enum_DateRangePreset_AllTime: _TL_('Entire time'),\r\n Schema_Enum_DateRangePreset_LastBusinessWeek: _TL_('Last business week'),\r\n Schema_Enum_DateRangePreset_LastFourteenDays: _TL_('Last 14 days'),\r\n Schema_Enum_DateRangePreset_LastMonth: _TL_('Last month'),\r\n Schema_Enum_DateRangePreset_LastSevenDays: _TL_('Last 7 days'),\r\n Schema_Enum_DateRangePreset_LastSixMonth: _TL_('Last six month'),\r\n Schema_Enum_DateRangePreset_LastThirtyDays: _TL_('Last 30 days'),\r\n Schema_Enum_DateRangePreset_LastThreeMonth: _TL_('Last three month'),\r\n Schema_Enum_DateRangePreset_LastWeekStartingMon: _TL_('Last week (Mon - Sun)'),\r\n Schema_Enum_DateRangePreset_LastWeekStartingSun: _TL_('Last week (Sun - Sat)'),\r\n Schema_Enum_DateRangePreset_LastYear: _TL_('Last year'),\r\n Schema_Enum_DateRangePreset_ThisMonth: _TL_('This month'),\r\n Schema_Enum_DateRangePreset_ThisWeekFromMon: _TL_('This week (Mon - Today)'),\r\n Schema_Enum_DateRangePreset_ThisWeekFromSun: _TL_('This week (Sun - Today)'),\r\n Schema_Enum_DateRangePreset_ThisYear: _TL_('This year'),\r\n Schema_Enum_DateRangePreset_Today: _TL_('Today'),\r\n Schema_Enum_DateRangePreset_Yesterday: _TL_('Yesterday'),\r\n /* End: date range column */\r\n};\r\n","import React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\nimport { buildLegacyI18n } from '@bingads-webui-campaign-react/smart-i18n';\r\nimport { legacyKeys } from './i18n/keys';\r\n\r\nexport const LegacyI18n = React.createContext('');\r\n\r\nclass LeagacyI18nProvider extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n const context = buildLegacyI18n(props.i18n, legacyKeys);\r\n this.state = {\r\n context,\r\n };\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n {this.props.children}\r\n );\r\n }\r\n}\r\n\r\nLeagacyI18nProvider.propTypes = {\r\n /**\r\n * Localization module\r\n */\r\n i18n: PropTypes.shape({ getString: PropTypes.func }).isRequired,\r\n children: PropTypes.node.isRequired,\r\n};\r\n\r\nconst Wrapped = withI18nConsumer(LeagacyI18nProvider);\r\n\r\nexport { Wrapped as LeagacyI18nProvider };\r\n","import React from 'react';\r\nimport { LegacyI18n } from './legacy-i18n';\r\n\r\nexport const withLegacyI18n = AReactComponent => (props => (\r\n \r\n {\r\n context => \r\n }\r\n ));\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nexport const Identity = React.createContext('');\r\n\r\nexport function IdentityProvider({ serverContext, children }) {\r\n const identityDetails = {\r\n user: serverContext.CurrentUser,\r\n // customer id should come from url, discuss with Raymond\r\n customer: serverContext.CurrentCustomer,\r\n account: serverContext.CurrentAccount,\r\n lcid: serverContext.CultureLcid,\r\n };\r\n return (\r\n \r\n {children}\r\n );\r\n}\r\n\r\nIdentityProvider.propTypes = {\r\n /**\r\n * Content rendered in the body\r\n */\r\n children: PropTypes.node.isRequired,\r\n\r\n // eslint-disable-next-line react/forbid-prop-types\r\n serverContext: PropTypes.object.isRequired,\r\n\r\n};\r\n\r\n","import React from 'react';\r\nimport { Identity } from './identity-provider';\r\n\r\nexport const withIdentityContext = AReactComponent => (props => (\r\n \r\n {\r\n context => \r\n }\r\n ));\r\n","/* eslint-disable */\r\nimport _ from 'underscore';\r\nimport { odata } from '@bingads-webui/http-util';\r\nimport * as url from '@bingads-webui/url-util';\r\nimport { get } from '@bingads-webui-universal/primitive-utilities';\r\nimport { odataQuery, odataUri, odataCast } from '@bingads-webui/odata-converter';\r\n\r\nfunction sendBatchRequest(definition, params, options) {\r\n const reqs = _.map(params, (param) => {\r\n const id = param.Id;\r\n const uri = odataUri.convert({ definition, options, id });\r\n\r\n return {\r\n type: options.action,\r\n url: uri,\r\n data: param,\r\n };\r\n });\r\n\r\n return odata.batch({ reqs, path: options.path }).then((response) => {\r\n if (_.isFunction(options.processResponse)) {\r\n options.processResponse(response);\r\n }\r\n return response;\r\n });\r\n}\r\n\r\nfunction getCommonOptions({\r\n ajaxOptions = {},\r\n urlParameters,\r\n host,\r\n path,\r\n headers,\r\n successCallback,\r\n state,\r\n oDataToken,\r\n} = {}) {\r\n const options = _.defaults({}, ajaxOptions);\r\n if (_.isObject(urlParameters)) {\r\n options.urlParameters = urlParameters;\r\n }\r\n if (host) {\r\n options.host = host;\r\n }\r\n if (path) {\r\n options.path = path;\r\n }\r\n if (oDataToken) {\r\n options.oDataToken = oDataToken;\r\n }\r\n if (headers) {\r\n options.headers = headers;\r\n }\r\n // [lizho] Remove this after related OData APIs are refactored.\r\n // This callback is to get response header for product offer/product group related OData APIs.\r\n if (_.isFunction(successCallback)) {\r\n options.success = successCallback\r\n }\r\n // \r\n if (state) {\r\n options.params = _.clone(state.attributes);\r\n }\r\n return options;\r\n}\r\n\r\nexport class ODataBaseAdapter {\r\n // All of the methods shown here must return a promise\r\n\r\n // \"definition\" is a resource defintion that would\r\n // be returned by DS#defineResource\r\n\r\n // \"options\" would be the options argument that\r\n // was passed into the DS method that is calling\r\n // the adapter method\r\n constructor(options = {}) {\r\n this.options = options;\r\n }\r\n\r\n convertQuery(queryParameters) {\r\n return odataQuery.convert(queryParameters);\r\n }\r\n\r\n create(definition, attrs, options) {\r\n _.extendOwn(options, this.options);\r\n let data = odataCast.data({ data: attrs, definition, options });\r\n let urlParameters = '';\r\n\r\n // Below if block is for the calls being made without EDM models\r\n // This enables making \"POST\" calls with query parameters without edm.\r\n if (attrs.queryParams) {\r\n urlParameters = this.convertQuery(attrs.queryParams);\r\n data = _.omit(data, 'queryParams');\r\n }\r\n\r\n // Must resolve the promise with the created item\r\n // NOTICE: added ajaxOptions here.\r\n return odata\r\n .post(odataUri.convert({ definition, options }), _.defaults({ data, urlParameters }, getCommonOptions(options)));\r\n }\r\n\r\n find(definition, id, options) {\r\n _.extendOwn(options, this.options);\r\n let params = {};\r\n let queryParameters = options.queryParameters;\r\n\r\n if (_.isObject(queryParameters)) {\r\n params = { data: _.omit(this.convertQuery(queryParameters), '$top', '$count') };\r\n }\r\n\r\n params.path = options.path;\r\n\r\n // Must resolve the promise with the found item\r\n return odata.get(odataUri.convert({ definition, options, id, isFinding: true }), _.defaults(params, getCommonOptions(options)));\r\n }\r\n\r\n findAll(definition, params, options = {}) {\r\n // Must resolve the promise with the found items\r\n _.extendOwn(options, this.options);\r\n const filterOptions = options.filterOptions;\r\n\r\n // params.entitySet is flavored. options.entitySet is only surported for backward support.\r\n const queryEntitySet = get(params, 'query.entitySet');\r\n const entitySet = options.edmRootResourceIdentifier && queryEntitySet ?\r\n options.edmRootResourceIdentifier.identifyEntitySet(queryEntitySet) :\r\n get(options, 'entitySet');\r\n\r\n let request;\r\n\r\n if (entitySet && options.edm && get(entitySet, 'navigation.source.type') instanceof options.edm.types.ActionType) {\r\n request = odata\r\n .post(\r\n url.queryify(odataUri.convert({ definition, options, isFinding: true, entitySet }), this.convertQuery(_.extend({ filterOptions }, params)), options.ajaxOptions.customParameterizationFunc),\r\n _.defaults({ data: entitySet.navigation.parameters }, getCommonOptions(options))\r\n );\r\n\r\n options.cacheResponse = false;\r\n } else {\r\n request = odata\r\n .get(\r\n odataUri.convert({ definition, options, isFinding: true, entitySet }),\r\n _.defaults({ data: this.convertQuery(_.extend({ filterOptions }, params)) }, getCommonOptions(options))\r\n );\r\n }\r\n\r\n return request.then((res) => {\r\n const addPropertyTotalCount = (obj) => Object.defineProperty(obj, 'totalCount', {\r\n value: res['@odata.count'],\r\n enumerable: false,\r\n });\r\n\r\n const addPropertyRaw = (obj) => Object.defineProperty(obj, 'raw', {\r\n value: res,\r\n enumerable: false,\r\n });\r\n\r\n const queryId = _.uniqueId('query-');\r\n\r\n // if OData results is just an array of string, make it an object then assign the object to value.\r\n if (_.isString(_.first(res.value))) {\r\n res.value = _.map(res.value, item => ({id : _.uniqueId('item-'), value: item}));\r\n }\r\n\r\n // JSData requires ID for every resource\r\n // Some calls to OData server won't return items with ID, or return items with an empty string as id\r\n // We add ID here to fit JSData requirement before JSData inject happens\r\n _.each(res.value, (item, index) => {\r\n if (!_.has(item, definition.idAttribute) || item[definition.idAttribute] === '') {\r\n item[definition.idAttribute] = `${queryId}-${index}`;\r\n }\r\n });\r\n\r\n const addProperties = _.compose(addPropertyTotalCount, addPropertyRaw);\r\n\r\n if (options.cacheResponse) {\r\n options.afterInject = _.compose(\r\n options.afterInject || _.identity,\r\n (innerOptions, injected) => addProperties(injected)\r\n );\r\n } else {\r\n // if odata response payload is not wrapped in value property,\r\n // move the contents under res.value\r\n res.value = _.has(res, 'value') ? res.value : res;\r\n addProperties(res.value);\r\n }\r\n\r\n return res.value;\r\n }, (res) => {\r\n //in case of error, it returns statusText for caller\r\n return {\r\n responseText: res.responseText,\r\n status: res.status,\r\n statusText: res.statusText,\r\n errors: res.errors,\r\n raw: res.body,\r\n };\r\n });\r\n }\r\n\r\n update(definition, id, attrs, options) {\r\n _.extendOwn(options, this.options);\r\n const data = odataCast.data({ data: attrs, definition, options });\r\n\r\n return odata\r\n .patch(\r\n odataUri.convert({ definition, options, id }),\r\n // NOTICE: modified to replace app state/config\r\n _.defaults({ data }, getCommonOptions(options))\r\n );\r\n }\r\n updateAll(definition, attrs, params, options) {\r\n _.extendOwn(options, this.options);\r\n\r\n // Must resolve the promise with the updated items\r\n return sendBatchRequest(definition, params.reqs, options);\r\n }\r\n\r\n destroy(definition, id, options) {\r\n _.extendOwn(options, this.options);\r\n\r\n // Must return a promise\r\n return odata\r\n .delete(odataUri.convert({ definition, options, id }), getCommonOptions(options))\r\n .then(_.property('value'));\r\n }\r\n\r\n destroyAll(definition, params, options) {\r\n _.extendOwn(options, this.options);\r\n\r\n return sendBatchRequest(definition, params.reqs, options);\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { ODataAdapter } from './js-data-odata';\r\n\r\nfunction defaultGetODataURLWithKey(odataURL) {\r\n return ({ key }) => `${odataURL}(${key})`;\r\n}\r\n\r\nlet ajaxOptions;\r\n\r\nexport function initJsDataLight({\r\n host,\r\n path,\r\n oDataToken,\r\n loginType,\r\n sessionId,\r\n error,\r\n}) {\r\n ajaxOptions = {\r\n host,\r\n path,\r\n oDataToken,\r\n loginType,\r\n sessionId,\r\n error,\r\n };\r\n}\r\n\r\nexport class JsDataLight {\r\n constructor({\r\n entityName,\r\n idAttribute,\r\n odataURL,\r\n getODataURLWithKey,\r\n }) {\r\n if (!ajaxOptions) {\r\n throw new Error('JsDataLight is not initialized');\r\n }\r\n\r\n this.odataAdapter = new ODataAdapter();\r\n\r\n this.odataURL = odataURL;\r\n this.getODataURLWithKey = getODataURLWithKey || defaultGetODataURLWithKey(odataURL);\r\n\r\n this.entity = {\r\n class: entityName,\r\n name: entityName,\r\n endpoint: entityName,\r\n // Used by js-data-odata-base-adapter\r\n // Refer: AdsAppUISharedComponents/private/client-data/packages/\r\n // js-data-odata-base-adapter/src/index.es\r\n idAttribute,\r\n };\r\n // Used by grid data source\r\n // Refer: AdsAppUISharedComponents/private/client-projection-grid/packages/\r\n // projection-grid/src/data-source/js-data.js\r\n this.idAttribute = idAttribute;\r\n\r\n this.options = _.defaults({ ajaxOptions }, {\r\n // This is some stub code which is required by the js-data-odata module.\r\n edm: {\r\n types: {\r\n ActionType: class ActionType { },\r\n },\r\n },\r\n });\r\n }\r\n\r\n getOptions(options) {\r\n const entitySet = {\r\n odataURL: this.odataURL,\r\n\r\n // This is another stub code which is required by the js-data-odata module.\r\n navigation: {\r\n source: {\r\n type: {\r\n\r\n },\r\n },\r\n },\r\n\r\n $withKey: key => ({\r\n odataURL: this.getODataURLWithKey({ key }),\r\n }),\r\n };\r\n\r\n const finalOptions = _.defaults({}, options, { entitySet }, this.options);\r\n\r\n return finalOptions;\r\n }\r\n\r\n create(data, options) {\r\n return this.odataAdapter.create(this.entity, data, this.getOptions(options));\r\n }\r\n\r\n update(id, data, options) {\r\n return this.odataAdapter.update(this.entity, id, data, this.getOptions(options));\r\n }\r\n\r\n find(id, options) {\r\n return this.odataAdapter.find(this.entity, id, this.getOptions(options));\r\n }\r\n\r\n findAll(params, { afterFindAll, ...options } = {}) {\r\n return this.odataAdapter\r\n .findAll(this.entity, params, this.getOptions(options))\r\n .then(data => (_.isFunction(afterFindAll) ? afterFindAll(this.entity, data) : data))\r\n .then((data) => {\r\n if (_.isArray(data)) {\r\n return data;\r\n }\r\n\r\n throw data;\r\n });\r\n }\r\n}\r\n","/* eslint-disable */\r\nimport _ from 'underscore';\r\n\r\nimport { FilterEntity } from '@bingads-webui/filter-entity';\r\nimport { ODataBaseAdapter } from './js-data-odata-adaptor';\r\nimport { odataQuery } from '@bingads-webui/odata-converter';\r\n\r\nexport class ODataAdapter extends ODataBaseAdapter {\r\n convertQuery(queryParameters) {\r\n const { filterOptions = {}, where = {} } = queryParameters;\r\n const ret = odataQuery.convert(queryParameters);\r\n const { '*': { contains: search } = {} } = where;\r\n\r\n if (!_.isString(where) || _.isEmpty(where)) {\r\n const restWhere = _.omit(where, '*');\r\n\r\n if (!_.isEmpty(restWhere)) {\r\n const $filter = new FilterEntity(restWhere, filterOptions).odataV4();\r\n if (!_.isEmpty($filter)) {\r\n ret.$filter = $filter;\r\n }\r\n }\r\n }\r\n\r\n return ret;\r\n }\r\n}\r\n","export const modeEnum = {\r\n PRIVATE: 'PRIVATE',\r\n SHARED: 'SHARED',\r\n};\r\n","import { JsDataLight } from '../js-data-light';\r\nimport { getScopePath } from './get-scope-path';\r\nimport { modeEnum } from '../reporting-contexts/mode-updater/modes';\r\n\r\nlet cid;\r\nlet pcid;\r\nlet aid;\r\nlet mode = modeEnum.PRIVATE;\r\n\r\nexport class JsDataLightWithScopePath extends JsDataLight {\r\n static init(options) {\r\n ({\r\n cid,\r\n aid,\r\n pcid,\r\n } = options);\r\n }\r\n\r\n static updateMode(newMode) {\r\n mode = newMode;\r\n }\r\n\r\n constructor({\r\n odataURL, ...options\r\n }) {\r\n const currentMode = options.mode || mode;\r\n const scopePath = getScopePath({\r\n cid, aid, pcid, mode: currentMode,\r\n });\r\n super({\r\n ...options,\r\n odataURL: `${scopePath}${odataURL}`,\r\n });\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { modeEnum } from '../reporting-contexts/mode-updater/modes';\r\n\r\nexport function getScopePath({\r\n cid,\r\n aid,\r\n pcid,\r\n mode,\r\n}) {\r\n if (!_.contains(_.values(modeEnum), mode)) {\r\n throw new RangeError(`Error mode ${mode}`, ' is not supported');\r\n }\r\n let customerId;\r\n switch (mode) {\r\n case modeEnum.PRIVATE:\r\n customerId = pcid;\r\n break;\r\n case modeEnum.SHARED:\r\n default:\r\n customerId = cid;\r\n }\r\n\r\n let scopePath = `/Customers(${customerId})`;\r\n\r\n if (aid) {\r\n scopePath += `/Accounts(${aid})`;\r\n }\r\n\r\n return scopePath;\r\n}\r\n","import { JsDataLightWithScopePath } from './js-data-light-with-scope-path';\r\n\r\nexport const historyQueries = {\r\n /**\r\n * getRecentHistory: returns the most recent n reports from odata\r\n * @param {string|integer} cid customer id\r\n * @param {integer} limit max reports\r\n * @returns {promise} resolves to odata response\r\n */\r\n getRecent({ limit }) {\r\n const entity = new JsDataLightWithScopePath({\r\n entityName: 'TaskItemExecution',\r\n odataURL: '/TaskItemExecutions',\r\n });\r\n\r\n const params = {\r\n limit,\r\n query: {\r\n $filter: 'TaskItem/Type eq Enum.TaskItemType\\'ReportUI\\'',\r\n },\r\n };\r\n\r\n return entity.findAll(params);\r\n },\r\n\r\n run({ taskItemIds }) {\r\n const entity = new JsDataLightWithScopePath({\r\n entityName: 'TaskItemExecution',\r\n odataURL: '/TaskItems/RerunReports',\r\n });\r\n const payload = {\r\n ReportIds: taskItemIds,\r\n };\r\n\r\n return entity.create(payload);\r\n },\r\n\r\n download({ executionId }) {\r\n const entity = new JsDataLightWithScopePath({\r\n entityName: 'TaskItemExecution',\r\n odataURL: `/TaskItemExecutions(${executionId})/Default.PollReportDataTaskItemExecution`,\r\n });\r\n\r\n return entity.find();\r\n },\r\n\r\n delete({ taskItemIds }) {\r\n const entity = new JsDataLightWithScopePath({\r\n entityName: 'TaskItemExecution',\r\n odataURL: '/TaskItems/DeleteReports',\r\n });\r\n const payload = {\r\n ReportIds: taskItemIds,\r\n };\r\n\r\n return entity.create(payload);\r\n },\r\n\r\n gridDataSource() {\r\n const entity = new JsDataLightWithScopePath({\r\n entityName: 'TaskItemExecution',\r\n odataURL: '/TaskItemExecutions',\r\n });\r\n\r\n return {\r\n type: 'jsdata',\r\n entity,\r\n primaryKey: 'Id',\r\n query: {\r\n $filter: 'TaskItem/Type eq Enum.TaskItemType\\'ReportUI\\'',\r\n },\r\n };\r\n },\r\n};\r\n","import PropTypes from 'prop-types';\r\nimport { withRouter } from 'react-router-dom';\r\nimport _ from 'underscore';\r\nimport { parse, stringify } from 'query-string';\r\n\r\nlet reactRouterHistory = { location: { search: window.location.search } };\r\nlet routePrefix = '/Reporting';\r\n\r\nexport const navigator = {\r\n init(options) {\r\n ({\r\n history: reactRouterHistory,\r\n routePrefix,\r\n } = options);\r\n },\r\n\r\n resolve(path, { type, carryForward } = {}) {\r\n let qs = parse(reactRouterHistory.location.search);\r\n if (_.isString(type)) {\r\n qs.type = type;\r\n } else if (!carryForward) {\r\n qs = _.omit(qs, 'type');\r\n }\r\n return `${routePrefix}${path}?${stringify(qs)}`;\r\n },\r\n\r\n goto(path, options = {}) {\r\n const uri = navigator.resolve(path, options);\r\n\r\n reactRouterHistory.push(uri);\r\n },\r\n\r\n replaceTo(path, options = {}) {\r\n const uri = navigator.resolve(path, options);\r\n\r\n reactRouterHistory.replace(uri);\r\n },\r\n};\r\n\r\nexport const NavigatorMaintenance = withRouter((props) => {\r\n navigator.init(props);\r\n return false;\r\n});\r\n\r\nNavigatorMaintenance.propTypes = {\r\n routePrefix: PropTypes.string.isRequired,\r\n};\r\n\r\n","import { navigator } from '../../navigator';\r\n\r\nexport const customReports = {\r\n /**\r\n * getUrl\r\n * @param {string|number} id execution id\r\n * @returns {string} custom report url\r\n */\r\n getUrl(id) {\r\n return navigator.resolve(`/updatetemplate/${id}`);\r\n },\r\n\r\n /**\r\n * getId\r\n * @param {object} report customReport object\r\n * @returns {string} id\r\n */\r\n getId(report) {\r\n return report.Id;\r\n },\r\n\r\n};\r\n","import { navigator } from '../../navigator';\r\n\r\nexport const historyReports = {\r\n\r\n /**\r\n * @param {string|number} id execution id\r\n * @param {boolean} isRunning bolean indicating if report is running\r\n * @returns {string} history report url\r\n */\r\n getUrl(id, isRunning) {\r\n return isRunning ?\r\n navigator.resolve(`/v2/pollreport/${id}`) :\r\n navigator.resolve(`/history/${id}`);\r\n },\r\n\r\n /**\r\n * @param {object} report history report object\r\n * @returns {string} id\r\n */\r\n getId(report) {\r\n return report.Id;\r\n },\r\n};\r\n\r\n","import _ from 'underscore';\r\n\r\nlet logger;\r\nconst loggedEnums = [];\r\nconst loggedFilters = [];\r\n\r\nexport const initLogger = _.once((instrumentation) => {\r\n const instrumentationSchema = {\r\n scenario: [\r\n {\r\n name: 'LogUnmappedEnum',\r\n // The value of clienterr.Sn\r\n value: 'Log unmapped enum values',\r\n activity: [\r\n {\r\n name: 'LogUnmappedEnum',\r\n // The value of clienterr.An\r\n value: 'Log unmapped enum values',\r\n },\r\n ],\r\n },\r\n ],\r\n };\r\n\r\n instrumentation.addScenario(instrumentationSchema);\r\n const scenario = instrumentation.LogUnmappedEnum.create();\r\n const activity = scenario.LogUnmappedEnum.create();\r\n\r\n logger = activity;\r\n});\r\n\r\n\r\nexport function logUnmappedEnum({\r\n columnName,\r\n value,\r\n}) {\r\n const uniqueId = `${columnName}-${value}`;\r\n\r\n if (_.contains(loggedEnums, uniqueId)) {\r\n return false;\r\n }\r\n\r\n logger.error(`Missing enum localization map for column: ${columnName}, value: ${value}`);\r\n loggedEnums.push(uniqueId);\r\n\r\n return true;\r\n}\r\n\r\nexport function logUnmappedFilter(filterName) {\r\n if (_.contains(loggedFilters, filterName)) {\r\n return false;\r\n }\r\n\r\n logger.error(`Missing localization map for filter: ${filterName}`);\r\n loggedFilters.push(filterName);\r\n\r\n return true;\r\n}\r\n","export const ReportType = {\r\n AccountPerformanceReport: _TL_('Account'),\r\n 'AccountPerformanceReport-SixWeeks': _TL_('Account - 6 weeks'),\r\n 'AccountPerformanceReport-TwoMonths': _TL_('Account - 2 months (MoM)'),\r\n 'AccountPerformanceReport-TwoYears': _TL_('Account - 2 years (YoY)'),\r\n 'AccountPerformanceReport-ShareOfVoice': _TL_('Account - Share of voice'),\r\n AdDynamicTextPerformanceReport: _TL_('Ad dynamic text'),\r\n AdExtensionByAdReport: _TL_('Ad extension by ad'),\r\n AdExtensionByKeywordReport: _TL_('Ad extension by keyword'),\r\n AdExtensionDetailReport: _TL_('Ad extension details'),\r\n AdGroupPerformanceReport: _TL_('Ad group'),\r\n AdPerformanceReport: _TL_('Ad'),\r\n AgeGenderAudienceReport: _TL_('Age and gender'),\r\n AgeGenderDemographicReport: _TL_('Age and gender'),\r\n AudiencePerformanceReport: _TL_('Audiences'),\r\n BudgetSummaryReport: _TL_('Budget'),\r\n BillingStatementReport: _TL_('Billing statement'),\r\n CallDetailReport: _TL_('Call forwarding detail'),\r\n CampaignPerformanceReport: _TL_('Campaign'),\r\n ConversionPerformanceReport: _TL_('Conversions'),\r\n CustomerInvoiceReport: _TL_('Manager account invoice billing'),\r\n DestinationURLPerformanceReport: _TL_('Destination URL'),\r\n DestinationUrlPerformanceReport: _TL_('Destination URL'),\r\n DSAAutoTargetPerformanceReport: _TL_('Dynamic search ad auto target'),\r\n DSACategoryPerformanceReport: _TL_('Dynamic search ad category'),\r\n DSASearchQueryPerformanceReport: _TL_('Dynamic search ad search term'),\r\n FraudChangeHistoryReport: _TL_('Fraud change history by user'),\r\n GeographicPerformanceReport: _TL_('Geographic'),\r\n GoalsAndFunnelsReport: _TL_('Goals'),\r\n KeywordPerformanceReport: _TL_('Keyword'),\r\n NegativeKeywordConflictReport: _TL_('Negative keyword conflicts'),\r\n ProductDimensionPerformanceReport: _TL_('Product dimension'),\r\n ProductMatchCountReport: _TL_('Product match count'),\r\n ProductNegativeKeywordConflictReport: _TL_('Product negative keyword conflicts'),\r\n ProductPartitionPerformanceReport: _TL_('Product partition'),\r\n ProductPartitionUnitPerformanceReport: _TL_('Product partition unit'),\r\n ProductSearchQueryPerformanceReport: _TL_('Product search term'),\r\n ProfessionalDemographicsAudienceReport: _TL_('Professional demographics'),\r\n PublisherUsagePerformanceReport: _TL_('Website URL (publisher)'),\r\n SearchCampaignChangeHistoryReport: _TL_('Change history'),\r\n SearchQueryPerformanceReport: _TL_('Search term'),\r\n ShareOfVoiceReport: _TL_('Share of voice'),\r\n UserRoleChangeHistoryReport: _TL_('User role change history'),\r\n UserLocationPerformanceReport: _TL_('User location'),\r\n FeedItemPerformanceReport: _TL_('Feed item'),\r\n};\r\n","import _ from 'underscore';\r\n\r\nexport const FileFormat = {\r\n Csv: _TL_('.csv'),\r\n Csvzip: _TL_('.zip (.csv)'),\r\n Tsv: _TL_('.tsv'),\r\n TsvZip: _TL_('.zip (.tsv)'),\r\n Xlsx: _TL_('.xlsx'),\r\n};\r\n\r\nexport const FileFormatForReporting = _.pick(FileFormat, 'Csvzip', 'TsvZip', 'Xlsx');\r\n\r\nexport const FileFormatForInlineDownload = _.pick(FileFormat, 'Csv', 'Tsv', 'Xlsx', 'Csvzip');\r\n","import _ from 'underscore';\r\nimport { ReportType } from './report-type';\r\n\r\nconst messages = {\r\n generalUnavalible: i18n => i18n.getString(_TL_('This report type has been deprecated and is no longer available to run')),\r\n runUnavalible: (i18n, reportType) => i18n.getString(_TL_('{{repotType}} reports have been deprecated and are no longer available to run.'), reportType),\r\n AgeGenderDemographicReport: i18n => `${i18n.getString(_TL_('The age and gender report has been deprecated and replaced with an updated version. Please create a new age and gender report and try running it again.'))} ${i18n.getString('Learn more')}`,\r\n};\r\n\r\nexport const getDeprecatedMessage = (reportType, i18n, isRunReport) => {\r\n if (_.has(messages, reportType)) {\r\n return messages[reportType](i18n);\r\n }\r\n\r\n return isRunReport ?\r\n messages.runUnavalible(i18n, i18n.getString(_.result(ReportType, reportType, reportType))) :\r\n messages.generalUnavalible(i18n);\r\n};\r\n\r\n","import _ from 'underscore';\r\n\r\nconst i18nMap = {\r\n InvalidId: _TL_('The report does not exist or does not belong to current user, manager account or account.'),\r\n InvalidEmail: _TL_('Invalid email address'),\r\n TaskSchedulingInvalid: _TL_('Invalid schedule time'),\r\n TaskThrottlingLimitReached: _TL_('You have reached the maximum allowed number of running reports. Please wait for the reports to finish and try again later.'),\r\n RequiredColumnsNotSelected: _TL_('You must select at least one attribute and performance statistic in order for the report to run. Examples of attributes are Brand or Merchant product ID. Examples of performance statistics are Clicks or Impressions.'),\r\n};\r\n\r\nexport const getErrorMessage = (errorCode, errMsg) => _.result(\r\n i18nMap,\r\n errorCode,\r\n errMsg || _TL_(\"Something went wrong, and we couldn't finish this task. Please refresh and try this operation again or contact support.\")\r\n);\r\n","import { DateRangePreset } from './date-range-preset';\r\nimport { ReportAggregation } from './report-aggregation';\r\nimport { ReportType } from './report-type';\r\nimport { ColumnName } from './column-name';\r\nimport { FilterTitle, FilterEnum } from './filter-enum';\r\nimport { FileFormat, FileFormatForReporting, FileFormatForInlineDownload } from './file-format';\r\n\r\nexport const i18nMap = {\r\n DateRangePreset,\r\n ReportAggregation,\r\n ReportType,\r\n ColumnName,\r\n FilterTitle,\r\n FilterEnum,\r\n FileFormat,\r\n FileFormatForReporting,\r\n FileFormatForInlineDownload,\r\n};\r\n\r\nexport { getDeprecatedMessage } from './get-deprecated-message';\r\nexport { getErrorMessage } from './error-messages';\r\n\r\nexport function safeGetString(i18n, map, key) {\r\n const englishString = map[key];\r\n\r\n if (!englishString) {\r\n // TODO: log error to kusto\r\n return key;\r\n }\r\n\r\n return i18n.getString(englishString);\r\n}\r\n","\r\n// AdsAppsMT/private/Campaign/MT/Source/BingAds.Api/BingAds.Api.Model/DateRange/DateRangePreset.cs\r\nexport const DateRangePreset = {\r\n Custom: _TL_('Custom'),\r\n Today: _TL_('Today'),\r\n Yesterday: _TL_('Yesterday'),\r\n LastSevenDays: _TL_('Last 7 days'),\r\n LastFourteenDays: _TL_('Last 14 days'),\r\n LastThirtyDays: _TL_('Last 30 days'),\r\n ThisWeekFromSun: _TL_('This week (Sun-Today)'),\r\n ThisWeekFromMon: _TL_('This week (Mon-Today)'),\r\n LastWeekStartingSun: _TL_('Last week (Sun-Sat)'),\r\n LastWeekStartingMon: _TL_('Last week (Mon-Sun)'),\r\n LastFourWeeksStartingSun: _TL_('Last 4 weeks (Sun-Sat)'),\r\n LastFourWeeksStartingMon: _TL_('Last 4 weeks (Mon-Sun)'),\r\n LastSixWeeksStartingSun: _TL_('Last 6 weeks (Sun-Sat)'),\r\n LastSixWeeksStartingMon: _TL_('Last 6 weeks (Mon-Sun)'),\r\n ThisMonth: _TL_('This month'),\r\n LastMonth: _TL_('Last month'),\r\n LastTwoMonths: _TL_('Last 2 months'),\r\n LastThreeMonths: _TL_('Last 3 months'),\r\n LastSixMonths: _TL_('Last 6 months'),\r\n ThisYear: _TL_('This year'),\r\n LastYear: _TL_('Last year'),\r\n LastTwoYears: _TL_('Last 2 years'),\r\n AllTime: _TL_('All time'),\r\n};\r\n","/**\r\n * CampaignManagement.MT.Entity.ReportData.ReportAggregation\r\n * AdsAppsMT\\private\\Campaign\\MT\\Source\\Interface\\Internal\\Entity\\ReportData\\ReportAggregation.cs\r\n *\r\n * !!! Keep this order for create report page -> Show (unit of time)\r\n * !!! Do not reorder them\r\n */\r\nexport const ReportAggregation = {\r\n Hourly: _TL_('Hour'),\r\n HourOfDay: _TL_('Hour of day'),\r\n Daily: _TL_('Day'),\r\n DayOfWeek: _TL_('Day of week'),\r\n Weekly: _TL_('Week'),\r\n WeeklyStartingMonday: _TL_('Week Mon-Sun'),\r\n Monthly: _TL_('Month'),\r\n Yearly: _TL_('Year'),\r\n Summary: _TL_('Summary'),\r\n};\r\n","export const ColumnName = {\r\n // absolute:top:imprate\r\n AbsoluteTopImpressionRatePercent: _TL_('Absolute top impression rate'),\r\n // absolute:top:imp:lost:budget:pct\r\n AbsoluteTopImpressionShareLostToBudgetPercent: _TL_('Absolute top impression share lost to budget'),\r\n // absolute:top:imp:lost:rank:pct\r\n AbsoluteTopImpressionShareLostToRankPercent: _TL_('Absolute top impression share lost to rank'),\r\n // absolute:top:impshare:BSC\r\n AbsoluteTopImpressionSharePercent: _TL_('Absolute top impression share'),\r\n // acct:id\r\n AccountId: _TL_('Account ID'),\r\n // acct:name\r\n AccountName: _TL_('Account'),\r\n // acct:num\r\n AccountNumber: _TL_('Account number'),\r\n // acct:status:name\r\n AccountStatus: _TL_('Account status'),\r\n // ad:desc\r\n AdDescription: _TL_('Ad description'),\r\n // ad:desc2\r\n AdDescription2: _TL_('Ad description 2'),\r\n // med:name\r\n AdDistribution: _TL_('Ad distribution'),\r\n AdvertiserHotelId: _TL_('Advertiser hotel ID'),\r\n // ad:ext:id\r\n AdExtensionId: _TL_('Ad extension ID'),\r\n // ad:ext:prop:value\r\n AdExtensionPropertyValue: _TL_('Ad extension property value'),\r\n // ad:ext:type:name\r\n AdExtensionType: _TL_('Ad extension type name'),\r\n // ad:ext:type:id\r\n AdExtensionTypeId: _TL_('Ad extension type ID'),\r\n // ad:ext:vrsn\r\n AdExtensionVersion: _TL_('Ad extension version'),\r\n // order:item:id\r\n AdGroupCriterionId: _TL_('Product group ID/Listing group ID'),\r\n // ord:id\r\n AdGroupId: _TL_('Ad group ID'),\r\n // ord:labels\r\n AdGroupLabels: _TL_('Ad group labels'),\r\n // ord:name\r\n AdGroupName: _TL_('Ad group'),\r\n // ad:group:status:name\r\n AdGroupStatus: _TL_('Ad group status'),\r\n // ad group:ad group type\r\n AdGroupType: _TL_('Ad group type'),\r\n AdGroupTypePreview: _TL_('Ad group type'),\r\n // ad:id\r\n AdId: _TL_('Ad ID'),\r\n // ad:labels\r\n AdLabels: _TL_('Ad labels'),\r\n // landing:page:relevance\r\n AdRelevance: _TL_('Ad relevance'),\r\n AdRelevanceCampaign: _TL_('Ad relevance (campaign)'),\r\n AdRelevanceAdGroup: _TL_('Ad relevance (Ad Group)'),\r\n AdRelevanceKeyword: _TL_('Ad relevance (Keyword)'),\r\n // ad:status\r\n AdStatus: _TL_('Ad status'),\r\n AdStrength: _TL_('Ad strength'),\r\n AdStrengthActionItems: _TL_('Ad strength action items'),\r\n // ad:scenario type\r\n AdScenarioType: _TL_('Vertical ad type'),\r\n // ad:ttl\r\n AdTitle: _TL_('Ad title'),\r\n // ad:type:name\r\n AdType: _TL_('Ad type'),\r\n AdvancedBookingWindow: _TL_('Advanced booking window'),\r\n // age:bucket:desc\r\n AgeGroup: _TL_('Age group'),\r\n // AgencyName\r\n AgencyName: _TL_('Agency'),\r\n // cnv:rate:all\r\n AllConversionRate: _TL_('All Conversion rate'),\r\n AllConversionRateQualified: _TL_('All Conversion rate'),\r\n // cnv:all\r\n AllConversions: _TL_('All Conversions'),\r\n AllConversionsQualified: _TL_('All conversions'),\r\n // cost:per:cnv:all\r\n AllCostPerConversion: _TL_('All CPA'),\r\n AllCostPerConversionQualified: _TL_('All CPA'),\r\n // roas:all\r\n AllReturnOnAdSpend: _TL_('All Return on ad spend'),\r\n // goal:adv:reported:rev\r\n AllRevenue: _TL_('All Revenue'),\r\n // rev:per:cnv:all\r\n AllRevenuePerConversion: _TL_('All Revenue per conversion'),\r\n // call:area:code\r\n AreaCode: _TL_('Area code'),\r\n // coop:click:Cnt\r\n AssistedClicks: _TL_('Assisted clicks'),\r\n // coop:conversion:Cnt\r\n AssistedConversions: _TL_('Assisted conversions'),\r\n // coop:imp:Cnt\r\n AssistedImpressions: _TL_('Assisted impressions'),\r\n // assists\r\n Assists: _TL_('Assists'),\r\n // association:id\r\n AssociationId: _TL_('Association ID'),\r\n AssociationLevel: _TL_('Association level'),\r\n // audience:status\r\n AssociationStatus: _TL_('Association status'),\r\n // change:attribute\r\n AttributeChanged: _TL_('Attribute changed'),\r\n // audience:id\r\n AudienceId: _TL_('Audience ID'),\r\n AudienceImpressionSharePercent: _TL_('Audience impression share'),\r\n AudienceImpressionLostToRankPercent: _TL_('Audience impression share lost to rank'),\r\n AudienceImpressionLostToBudgetPercent: _TL_('Audience impression share lost to budget'),\r\n // audience:name\r\n AudienceName: _TL_('Audience name'),\r\n // audience:type\r\n AudienceType: _TL_('Category'),\r\n AvgBookedABW: _TL_('Average booked ABW'),\r\n AvgBookedNights: _TL_('Average booked nights'),\r\n // avg:cpc\r\n AverageCPC: _TL_('Avg. CPC'),\r\n // avg:cpm\r\n AverageCPM: _TL_('Avg. CPM'),\r\n // avg:cpp\r\n AverageCpp: _TL_('Avg. CPP'),\r\n // avg:pos\r\n AveragePosition: _TL_('Avg. position'),\r\n BaseCampaignId: _TL_('Base campaign ID'),\r\n // benchmark:bid\r\n BenchmarkBid: _TL_('Benchmark bid'),\r\n BenchmarkBidProduct: _TL_('Benchmark bid (product)'),\r\n // benchmark:ctr\r\n BenchmarkCtr: _TL_('Benchmark CTR'),\r\n BenchmarkCtrProduct: _TL_('Benchmark CTR (product)'),\r\n // bid:adj\r\n BidAdjustment: _TL_('Bid adjustment'),\r\n // bidded:match:type:desc\r\n BidMatchType: _TL_('Bid match type'),\r\n // f:bid:strategy:type\r\n BidStrategyType: _TL_('Bid strategy type'),\r\n // BilledAmount\r\n BilledAmount: _TL_('Billed amount'),\r\n BilledAmountUSD: _TL_('Billed amount - USD'),\r\n // BillingType\r\n BillingType: _TL_('Billing type'),\r\n // BillToCountry\r\n BillToCountry: _TL_('Bill-to country/region'),\r\n // bill:to:cust:name\r\n BillToCustomerName: _TL_('Bill-to customer'),\r\n // bill:to:cust:num\r\n BillToCustomerNumber: _TL_('Bill-to customer number'),\r\n BookedABW: _TL_('Booked ABW'),\r\n BookedLengthOfStay: _TL_('Booked length of stay'),\r\n // product:brand\r\n Brand: _TL_('Brand'),\r\n // bdgt:association\r\n BudgetAssociationStatus: _TL_('Budget association status'),\r\n // bdgt:name\r\n BudgetName: _TL_('Budget name'),\r\n // bdgt:status:name\r\n BudgetStatus: _TL_('Budget status'),\r\n // business:name\r\n BusinessName: _TL_('Business name'),\r\n // cost:per:cnv\r\n CPA: _TL_('CPA'),\r\n // ctr\r\n CTR: _TL_('CTR'),\r\n // call:status:name\r\n CallStatus: _TL_('Call status'),\r\n // call:type:name\r\n CallTypeName: _TL_('Call type'),\r\n CampaignHotelId: _TL_('Campaign hotel ID'),\r\n // cmp:id\r\n CampaignId: _TL_('Campaign ID'),\r\n // cmp:labels\r\n CampaignLabels: _TL_('Campaign labels'),\r\n // cmp:name\r\n CampaignName: _TL_('Campaign'),\r\n // campaign:status:name\r\n CampaignStatus: _TL_('Campaign status'),\r\n // cmp:type:name\r\n CampaignType: _TL_('Campaign type'),\r\n Category: _TL_('Category'),\r\n // dsa:category:top\r\n Category0: _TL_('Top level category'),\r\n // dsa:category:first\r\n Category1: _TL_('First level category'),\r\n // dsa:category:second\r\n Category2: _TL_('Second level category'),\r\n // dsa:category:lst\r\n CategoryList: _TL_('Category list'),\r\n // change:made:by\r\n ChangedBy: _TL_('Changed by'),\r\n // Change made by\r\n ChangeMadeBy: _TL_('Changed by'),\r\n // ChangeMadeTo\r\n ChangeMadeTo: _TL_('Change made to'),\r\n // Change total count\r\n ChangeTotalCount: _TL_('Change history total counts'),\r\n CheckInDate: _TL_('Check in date'),\r\n CheckInDateDayOfWeek: _TL_('Check in day of week'),\r\n // city\r\n City: _TL_('City (physical location)'),\r\n // calls:click\r\n ClickCalls: _TL_('Click calls'),\r\n // click:share:percent:BSC\r\n ClickSharePercent: _TL_('Click share'),\r\n // click:BSCtype\r\n ClickType: _TL_('Click type'),\r\n // click:type:BSCid\r\n ClickTypeId: _TL_('Click type ID'),\r\n // clicks\r\n Clicks: _TL_('Clicks'),\r\n // tgt:cmpy:name\r\n CompanyName: _TL_('Company name'),\r\n // product:condition\r\n Condition: _TL_('Condition'),\r\n // conflict:lvl:name\r\n ConflictLevel: _TL_('Conflict level'),\r\n // neg:kywd:conflict:type\r\n ConflictType: _TL_('Conflict type'),\r\n // cnv:rate\r\n ConversionRate: _TL_('Conversion rate'),\r\n ConversionRateQualified: _TL_('Conversion rate'),\r\n // cnv\r\n Conversions: _TL_('Conversions'),\r\n ConversionsQualified: _TL_('Conversions'),\r\n // cost:per:assist\r\n CostPerAssist: _TL_('Cost per assist'),\r\n // cost:per:cnv\r\n CostPerConversion: _TL_('CPA'),\r\n CostPerConversionQualified: _TL_('CPA'),\r\n // f:country\r\n Country: _TL_('Country/region (physical location)'),\r\n // FeedLabel\r\n FeedLabel: _TL_('Feed label'),\r\n // countryofsale:name\r\n CountryOfSale: _TL_('Country/Region of sale'),\r\n // CountryName\r\n CountryName: _TL_('Country name'),\r\n // county\r\n County: _TL_('County (physical location)'),\r\n // cncy:code\r\n CurrencyCode: _TL_('Currency'),\r\n // max:cpc\r\n CurrentMaxCpc: _TL_('Current maximum CPC'),\r\n // product:label0\r\n CustomLabel0: _TL_('Custom label 0'),\r\n // product:label1\r\n CustomLabel1: _TL_('Custom label 1'),\r\n // product:label2\r\n CustomLabel2: _TL_('Custom label 2'),\r\n // product:label3\r\n CustomLabel3: _TL_('Custom label 3'),\r\n // product:label4\r\n CustomLabel4: _TL_('Custom label 4'),\r\n CustomLabel0Product: _TL_('Custom label 0(Product)'),\r\n CustomLabel1Product: _TL_('Custom label 1(Product)'),\r\n CustomLabel2Product: _TL_('Custom label 2(Product)'),\r\n CustomLabel3Product: _TL_('Custom label 3(Product)'),\r\n CustomLabel4Product: _TL_('Custom label 4(Product)'),\r\n // custom:param\r\n CustomParameters: _TL_('Custom parameters'),\r\n CustomParametersCampaign: _TL_('Custom parameters(Campaign)'),\r\n CustomParametersAdGroup: _TL_('Custom parameters(Ad Group)'),\r\n CustomParametersKeyword: _TL_('Custom parameters(Keyword)'),\r\n CustomParametersAd: _TL_('Custom parameters(Ad)'),\r\n CustomParametersProduct: _TL_('Custom parameters(Product)'),\r\n // cust:id\r\n CustomerId: _TL_('Manager account'),\r\n // cust:name\r\n CustomerName: _TL_('Manager account name'),\r\n // day:spend:amt\r\n DailySpend: _TL_('Daily spend'),\r\n // date\r\n Date: _TL_('Date'),\r\n // date:time\r\n DateTime: _TL_('Date'),\r\n DateType: _TL_('Date type'),\r\n // day:of:week\r\n DayOfWeek: _TL_('Day of week'),\r\n // quarter\r\n Quarter: _TL_('Quarter'),\r\n // delivered:match:type:desc\r\n DeliveredMatchType: _TL_('Delivered match type'),\r\n // dest:url\r\n DestinationUrl: _TL_('Destination URL'),\r\n DestinationUrlAd: _TL_('Destination URL(Ad)'),\r\n DestinationUrlKeyword: _TL_('Destination URL(Keyword)'),\r\n DestinationUrlProduct: _TL_('Destination URL(Product)'),\r\n // device:os:name\r\n DeviceOS: _TL_('Device OS'),\r\n // device:type:name\r\n DeviceType: _TL_('Device type'),\r\n // disp:url\r\n DisplayUrl: _TL_('Display URL'),\r\n // doc:num\r\n DocumentNumber: _TL_('Document number'),\r\n // doc:type\r\n DocumentType: _TL_('Document type'),\r\n // call:duration\r\n Duration: _TL_('Duration (sec)'),\r\n // dsa:at\r\n DynamicAdTarget: _TL_('Dynamic ad target'),\r\n // dsa:at:id\r\n DynamicAdTargetId: _TL_('Dynamic ad target ID'),\r\n // dsa:at:status:name\r\n DynamicAdTargetStatus: _TL_('Dynamic ad target status'),\r\n EligibleImpressions: _TL_('Eligible impressions'),\r\n // end:time\r\n EndTime: _TL_('End time'),\r\n // change:entity:value:id\r\n EntityId: _TL_('Entity ID'),\r\n // change:entity:value\r\n EntityName: _TL_('Entity name'),\r\n // est:click:pct\r\n EstimatedClickPercent: _TL_('Estimated click rate'),\r\n // est:click\r\n EstimatedClicks: _TL_('Estimated clicks'),\r\n // est:cnv:rate\r\n EstimatedConversionRate: _TL_('Estimated conversion rate'),\r\n // est:cnv\r\n EstimatedConversions: _TL_('Estimated conversions'),\r\n // est:ctr\r\n EstimatedCtr: _TL_('Estimated CTR'),\r\n // est:imp:pct\r\n EstimatedImpressionPercent: _TL_('Estimated impression rate'),\r\n // est:imp\r\n EstimatedImpressions: _TL_('Estimated impressions'),\r\n // em:imp:share:pct\r\n ExactMatchImpressionSharePercent: _TL_('Exact match impression share'),\r\n // excl:zero:clicks\r\n ExcludeZeroClicks: _TL_('Exclude zero clicks'),\r\n // keyword:relevance\r\n ExpectedCtr: _TL_('Expected click-through rate'),\r\n ExpectedCtrKeyword: _TL_('Expected click-through rate(Keyword)'),\r\n ExpectedCtrCampaign: _TL_('Expected click-through rate(Campaign)'),\r\n ExpectedCtrAdGroup: _TL_('Expected click-through rate(Ad Group)'),\r\n // extended:cost\r\n ExtendedCost: _TL_('Extended cost'),\r\n FeedId: _TL_('Feed Id'),\r\n FeedItemId: _TL_('Feed Item Id'),\r\n // dsa:feed:url\r\n FeedUrl: _TL_('Feed URL'),\r\n // final:app:url\r\n FinalAppUrl: _TL_('App URL'),\r\n // final:mob:url\r\n FinalMobileUrl: _TL_('Mobile URL'),\r\n // final:url\r\n FinalUrl: _TL_('Final URL'),\r\n // final:url:suf\r\n FinalUrlSuffix: _TL_('Final URL suffix'),\r\n FinalUrlSuffixCampaign: _TL_('Final URL suffix(Campaign)'),\r\n FinalUrlSuffixAdGroup: _TL_('Final URL suffix(Ad Group)'),\r\n FinalUrlSuffixKeyword: _TL_('Final URL suffix(Keyword)'),\r\n FinalUrlSuffixAd: _TL_('Final URL suffix(Ad)'),\r\n // sb:bid\r\n FirstPageBid: _TL_('Est. first page bid'),\r\n // FullViewConversions\r\n FullViewConversions: _TL_('View-through conversions'),\r\n // ViewThroughConversions\r\n ViewThroughConversions: _TL_('View-through conversions'),\r\n // ViewThroughConversionsRevenue\r\n ViewThroughRevenue: _TL_('View-through conversions revenue'),\r\n // ViewThroughConversionsCPA\r\n ViewThroughCostPerConversion: _TL_('View-through conversions CPA'),\r\n ViewThroughCostPerConversionQualified: _TL_('View-through conversions CPA'),\r\n // ViewThroughConversionsReturnOnAdSpend\r\n ViewThroughReturnOnAdSpend: _TL_('View-through conversions return on ad spend'),\r\n // ViewThroughConversionsRate\r\n ViewThroughConversionRate: _TL_('View-through conversions rate'),\r\n ViewThroughConversionRateQualified: _TL_('View-through conversions rate'),\r\n // gender:name\r\n Gender: _TL_('Gender'),\r\n // goal:name\r\n Goal: _TL_('Goal'),\r\n // goal:category\r\n GoalCategory: _TL_('Goal category'),\r\n // goal:type\r\n GoalType: _TL_('Goal type'),\r\n // goal:id\r\n GoalId: _TL_('Goal Id'),\r\n // gregorian:date\r\n GregorianDate: _TL_('Date'),\r\n GrossReturnOnAdSpend: _TL_('Gross return on ad spend'),\r\n GTIN: _TL_('GTIN'),\r\n // Xnadr Video Campaign\r\n Genre: _TL_('Genre'),\r\n // dsa:ad:ttl\r\n Headline: _TL_('Headline'),\r\n // dsa:description\r\n Description: _TL_('Description'),\r\n // his:landing:page:relevance\r\n HistoricalAdRelevance: _TL_('Historic ad relevance'),\r\n HistoricalAdRelevanceAdGroup: _TL_('Historical ad relevance(Ad Group)'),\r\n HistoricalAdRelevanceCampaign: _TL_('Historical ad relevance(Campaign)'),\r\n HistoricalAdRelevanceKeyword: _TL_('Historical ad relevance(Keyword)'),\r\n // his:keyword:relevance\r\n HistoricalExpectedCtr: _TL_('Historic expected click-through rate'),\r\n HistoricalExpectedCtrAdGroup: _TL_('Historical expected CTR(Ad Group)'),\r\n HistoricalExpectedCtrCampaign: _TL_('Historical expected CTR(Campaign)'),\r\n HistoricalExpectedCtrKeyword: _TL_('Historical expected CTR(Keyword)'),\r\n // his:landing:page:user:exp\r\n HistoricalLandingPageExperience: _TL_('Historic landing page experience'),\r\n HistoricalLandingPageExperienceAdGroup: _TL_('Historical landing page experience(Ad Group)'),\r\n HistoricalLandingPageExperienceCampaign: _TL_('Historical landing page experience(Campaign)'),\r\n HistoricalLandingPageExperienceKeyword: _TL_('Historical landing page experience(Keyword)'),\r\n // his:quality:score\r\n HistoricalQualityScore: _TL_('Historic quality score'),\r\n HistoricalQualityScoreAdGroup: _TL_('Historical quality score(Ad Group)'),\r\n HistoricalQualityScoreCampaign: _TL_('Historical quality score(Campaign)'),\r\n HistoricalQualityScoreKeyword: _TL_('Historical quality score(Keyword)'),\r\n HotelGroup: _TL_('Hotel group'),\r\n HotelGroupNodeId: _TL_('Hotel group node id'),\r\n HotelName: _TL_('Hotel name'),\r\n // hour:of:day\r\n HourOfDay: _TL_('Hour of day'),\r\n // t:hourly\r\n Hourly: _TL_('Hourly'),\r\n // change:type\r\n HowChanged: _TL_('How changed'),\r\n // imp:lost:lndg:page:relv:pct\r\n ImpressionLostToAdRelevancePercent: _TL_('Impression share lost to ad relevance'),\r\n // imp:lost:min:bid:pct\r\n ImpressionLostToBidPercent: _TL_('Impression share lost to bid'),\r\n // imp:lost:budget:pct\r\n ImpressionLostToBudgetPercent: _TL_('Impression share lost to budget'),\r\n // imp:lost:rank:agg:pct\r\n ImpressionLostToRankAggPercent: _TL_('Impression share lost to rank'),\r\n // imp:lost:rank:pct\r\n ImpressionLostToRankPercent: _TL_('Impression share lost to rank'),\r\n // imp:lost:relevance:pct\r\n ImpressionLostToRelevancePercent: _TL_('Impression share lost to relevance (%)'),\r\n ImpressionShare: _TL_('Impression share'),\r\n // imp:share:pct\r\n ImpressionSharePercent: _TL_('Impression share'),\r\n // imp\r\n Impressions: _TL_('Impressions'),\r\n // tgt:ind:name\r\n IndustryName: _TL_('Industry name'),\r\n // change:entity\r\n ItemChanged: _TL_('Entity type'),\r\n // tgt:jf:name\r\n JobFunctionName: _TL_('Job function name'),\r\n // kywd\r\n Keyword: _TL_('Keyword'),\r\n // ord:item:id\r\n KeywordId: _TL_('Keyword ID'),\r\n // kywd:labels\r\n KeywordLabels: _TL_('Keyword labels'),\r\n // kywd:status:name\r\n KeywordStatus: _TL_('Keyword status'),\r\n LabelName: _TL_('Label'),\r\n LabelNameAccount: _TL_('Label(Account)'),\r\n LabelNameCampaign: _TL_('Label(Campaign)'),\r\n LabelNameAdGroup: _TL_('Label(Ad Group)'),\r\n LabelNameAd: _TL_('Label(Ad)'),\r\n LabelNameKeyword: _TL_('Label(Keyword)'),\r\n LabelColor: _TL_('Label color'),\r\n // landing:page:user:exp\r\n LandingPageExperience: _TL_('Landing page experience'),\r\n LandingPageExperienceAdGroup: _TL_('Landing page experience(Ad Group)'),\r\n LandingPageExperienceCampaign: _TL_('Landing page experience(Campaign)'),\r\n LandingPageExperienceKeyword: _TL_('Landing page experience(Keyword)'),\r\n // dsa:landing:page:ttl\r\n LandingPageTitle: _TL_('Landing page title'),\r\n // language:name\r\n Language: _TL_('Language'),\r\n LengthOfStay: _TL_('Length of stay'),\r\n // Local:Store:Code\r\n LocalStoreCode: _TL_('Local store code'),\r\n // location:id\r\n LocationId: _TL_('Location ID (physical location)'),\r\n // location:type\r\n LocationType: _TL_('Location type'),\r\n // ad:long\r\n LongHeadline: _TL_('Long headline'),\r\n // inv:clicks\r\n LowQualityClicks: _TL_('Low-quality clicks (not charged)'),\r\n // inv:clicks:pct\r\n LowQualityClicksPercent: _TL_('Low-quality click rate'),\r\n // inv:cnv:rate\r\n LowQualityConversionRate: _TL_('Low-quality click conversion rate'),\r\n // inv:cnv\r\n LowQualityConversions: _TL_('Low-quality click conversions'),\r\n LowQualityConversionsQualified: _TL_('Low-quality click conversions'),\r\n // inv:clicks:gnl\r\n LowQualityGeneralClicks: _TL_('Low-quality clicks - general (not charged)'),\r\n // inv:imp\r\n LowQualityImpressions: _TL_('Low-quality impressions'),\r\n // inv:imp:pct\r\n LowQualityImpressionsPercent: _TL_('Low-quality impression rate'),\r\n // inv:clicks:sptd\r\n LowQualitySophisticatedClicks: _TL_('Low-quality clicks - sophisticated (not charged)'),\r\n // ml1:bid\r\n Mainline1Bid: _TL_('Est. best position bid'),\r\n // ml:bid\r\n MainlineBid: _TL_('Est. mainline bid'),\r\n // calls:manual\r\n ManualCalls: _TL_('Manual calls'),\r\n // order:match:cnt\r\n MatchedProductsAtAdGroup: _TL_('Matched products at ad group/asset group'),\r\n // campaign:match:cnt\r\n MatchedProductsAtCampaign: _TL_('Matched products at campaign'),\r\n // productgrp:match:cnt\r\n MatchedProductsAtProductGroup: _TL_('Matched products at product group/listing group'),\r\n // merchant:product:id\r\n MerchantProductId: _TL_('Merchant product ID'),\r\n // metro:area:name\r\n MetroArea: _TL_('Metro area (physical location)'),\r\n MissedImpressions: _TL_('Missed impressions'),\r\n MissedImpressionsNoBid: _TL_('Missed impressions no bid'),\r\n MissedImpressionsInsufficientBid: _TL_('Missed impressions insufficient bid'),\r\n MissedImpressionsSpendingCapReached: _TL_('Missed impressions spending cap reached'),\r\n MissedImpressionsNoTax: _TL_('Missed impressions no tax'),\r\n MissedImpressionsOther: _TL_('Missed impressions other'),\r\n // month:start:date\r\n Month: _TL_('Month'),\r\n // mtd:spend:amt\r\n MonthToDateSpend: _TL_('Month-to-date spend'),\r\n // month:budget:amt\r\n MonthlyBudget: _TL_('Monthly budget'),\r\n // most:specific:location\r\n MostSpecificLocation: _TL_('Most specific location'),\r\n MPN: _TL_('MPN'),\r\n // neg:keyword\r\n NegativeKeyword: _TL_('Negative keyword'),\r\n // neg:kywd:id\r\n NegativeKeywordId: _TL_('Negative keyword ID'),\r\n // neg:kywd:list:name\r\n NegativeKeywordList: _TL_('Negative keyword list'),\r\n // neg:kywd:list:id\r\n NegativeKeywordListId: _TL_('Negative keyword list ID'),\r\n // neg:kywd:match:type:desc\r\n NegativeKeywordMatchType: _TL_('Negative keyword match type'),\r\n Neighborhood: _TL_('Neighborhood (physical location)'),\r\n // NetAmountDue\r\n NetAmountDue: _TL_('Net due'),\r\n NetReturnOnAdSpend: _TL_('Net return on ad spend'),\r\n // net:rev\r\n NetRevenue: _TL_('Net revenue'),\r\n // net:rev:usd\r\n NetRevenueUSD: _TL_('Net revenue (USD)'),\r\n // network\r\n Network: _TL_('Network'),\r\n // change:new:value\r\n NewValue: _TL_('New value'),\r\n // productofferlanguage:name\r\n OfferLanguage: _TL_('Product offer language'),\r\n // change:old:value\r\n OldValue: _TL_('Old value'),\r\n OrderId: _TL_('Order Id'),\r\n // param1\r\n Param1: _TL_('Param 1'),\r\n // param2\r\n Param2: _TL_('Param 2'),\r\n // param3\r\n Param3: _TL_('Param 3'),\r\n // product:partition:type\r\n PartitionType: _TL_('Product partition type'),\r\n PartnerImpressions: _TL_('Partner impressions'),\r\n // ad:path1\r\n Path1: _TL_('Path 1'),\r\n // ad:path2\r\n Path2: _TL_('Path 2'),\r\n // ttl:calls\r\n PhoneCalls: _TL_('Phone calls'),\r\n // phone:imp\r\n PhoneImpressions: _TL_('Phone impr.'),\r\n // postal:code:api\r\n PostalCode: _TL_('Postal code (physical location)'),\r\n // product:price\r\n Price: _TL_('Price'),\r\n // \"PricingMethod\":\r\n PricingMethod: _TL_('Pricing method'),\r\n // ProductBought\r\n ProductBought: _TL_('Product bought'),\r\n ProductBoughtTitle: _TL_('Product bought title'),\r\n // product:cat1\r\n ProductCategory1: _TL_('Category(1st level)'),\r\n // product:cat2\r\n ProductCategory2: _TL_('Category(2nd level)'),\r\n // product:cat3\r\n ProductCategory3: _TL_('Category(3rd level)'),\r\n // product:cat4\r\n ProductCategory4: _TL_('Category(4th level)'),\r\n // product:cat5\r\n ProductCategory5: _TL_('Category(5th level)'),\r\n // product:group\r\n ProductGroup: _TL_('Product group/Listing group'),\r\n // prdct:name\r\n ProductName: _TL_('Product name'),\r\n // product:type1\r\n ProductType1: _TL_('Product type(1st level)'),\r\n // product:type2\r\n ProductType2: _TL_('Product type(2nd level)'),\r\n // product:type3\r\n ProductType3: _TL_('Product type(3rd level)'),\r\n // product:type4\r\n ProductType4: _TL_('Product type(4th level)'),\r\n // product:type5\r\n ProductType5: _TL_('Product type(5th level)'),\r\n // location\r\n ProximityTargetLocation: _TL_('Proximity target locations'),\r\n // ptr\r\n Ptr: _TL_('PTR'),\r\n // pub:url\r\n PublisherUrl: _TL_('Website URL'),\r\n // quality:impact\r\n QualityImpact: _TL_('Quality impact'),\r\n // quality:score\r\n QualityScore: _TL_('Quality score'),\r\n QualityScoreAdGroup: _TL_('Quality score(Ad Group)'),\r\n QualityScoreCampaign: _TL_('Quality score(Campaign)'),\r\n QualityScoreKeyword: _TL_('Quality score(Keyword)'),\r\n // QuantityBought\r\n QuantityBought: _TL_('Quantity bought'),\r\n // query:intent:city\r\n QueryIntentCity: _TL_('City (searching for)'),\r\n // query:intent:country\r\n QueryIntentCountry: _TL_('Country/region (searching for)'),\r\n // query:intent:county\r\n QueryIntentCounty: _TL_('County (searching for)'),\r\n // query:intent:dma\r\n QueryIntentDMA: _TL_('Metro area (searching for)'),\r\n // query:intent:location:id\r\n QueryIntentLocationId: _TL_('Location ID (searching for)'),\r\n QueryIntentNeighborhood: _TL_('Neighborhood (searching for)'),\r\n // query:intent:postal:code:api\r\n QueryIntentPostalCode: _TL_('Postal code (searching for)'),\r\n // query:intent:state\r\n QueryIntentState: _TL_('State/province (searching for)'),\r\n // radius\r\n Radius: _TL_('Radius (miles)'),\r\n RelativeCTR: _TL_('Relative CTR'),\r\n // roas\r\n ReturnOnAdSpend: _TL_('Return on ad spend'),\r\n ReturnOnAdSpendCPS: _TL_('Return on ad spend (CPS)'),\r\n // adv:reported:rev\r\n Revenue: _TL_('Revenue'),\r\n RevenueCPS: _TL_('Revenue (CPS)'),\r\n // rev:per:assist\r\n RevenuePerAssist: _TL_('Revenue per assist'),\r\n // rev:per:cnv\r\n RevenuePerConversion: _TL_('Revenue per conversion'),\r\n // Sales house\r\n SalesHouse: _TL_('Sales House'),\r\n // search:query\r\n SearchQuery: _TL_('Search term'),\r\n // seller:name\r\n SellerName: _TL_('Seller name'),\r\n // SoldToCustomerName\r\n SoldToCustomerName: _TL_('Sold-to name'),\r\n // sold:to:cust:num\r\n SoldToCustomerNumber: _TL_('Sold-to customer number'),\r\n // Sold to country\r\n SoldToCountry: _TL_('Sold-to country/region'),\r\n SourceHotelId: _TL_('Source hotel ID'),\r\n // total:cost\r\n Spend: _TL_('Spend'),\r\n StarRating: _TL_('Star rating '),\r\n // start:time\r\n StartTime: _TL_('Start time'),\r\n // sub:geog:name\r\n State: _TL_('State/province (physical location)'),\r\n // ord:status:name\r\n Status: _TL_('Ad group status'),\r\n // product:provider:id\r\n StoreId: _TL_('Store id'),\r\n // audience:target:setting\r\n TargetingSetting: _TL_('Targeting setting'),\r\n // gregorian:date\r\n TimePeriod: _TL_('Unit of time'),\r\n // t:day\r\n 'TimePeriod-Daily': _TL_('Day'),\r\n // day:of:week\r\n 'TimePeriod-DayOfWeek': _TL_('Day of week'),\r\n // hour:of:day\r\n 'TimePeriod-HourOfDay': _TL_('Hour of day'),\r\n // t:hourly\r\n 'TimePeriod-Hourly': _TL_('Hourly'),\r\n // t:month\r\n 'TimePeriod-Monthly': _TL_('Month'),\r\n // t:week\r\n 'TimePeriod-Weekly': _TL_('Weekly'),\r\n // t:week:mon TODO: finalize the string\r\n 'TimePeriod-WeeklyStartingMonday': _TL_('Weekly (Mon - Sun)', { locked: true }),\r\n // t:year\r\n 'TimePeriod-Yearly': _TL_('Year'),\r\n // product:title\r\n Title: _TL_('Title'),\r\n // ad:ttl1\r\n TitlePart1: _TL_('Title Part 1'),\r\n // ad:ttl2\r\n TitlePart2: _TL_('Title Part 2'),\r\n // ad:ttl3\r\n TitlePart3: _TL_('Title Part 3'),\r\n // tools:name\r\n Tool: _TL_('Tool'),\r\n // top:imprate\r\n TopImpressionRatePercent: _TL_('Top impression rate'),\r\n // top:imp:lost:budget:pct\r\n TopImpressionShareLostToBudgetPercent: _TL_('Top impression share lost to budget'),\r\n // imp:lost:low:ad:quality:pct\r\n ImpressionLostToExpectedCtrPercent: _TL_('Impression share lost to expected CTR'),\r\n // top:imp:lost:rank:pct\r\n TopImpressionShareLostToRankPercent: _TL_('Top impression share lost to rank'),\r\n // top:impshare\r\n TopImpressionSharePercent: _TL_('Top impression share'),\r\n // top:vs:other\r\n TopVsOther: _TL_('Top vs. other'),\r\n // ad:ext:total:clicks\r\n TotalClicks: _TL_('Ad extension total clicks'),\r\n // click:type:Clickcnt\r\n TotalClicksOnAdElements: _TL_('Total clicks on ad elements'),\r\n // tracking:tmplt\r\n TrackingTemplate: _TL_('Tracking template'),\r\n TrackingTemplateCampaign: _TL_('Tracking template(Campaign)'),\r\n TrackingTemplateAdGroup: _TL_('Tracking template(Ad Group)'),\r\n TrackingTemplateKeyword: _TL_('Tracking template(Keyword)'),\r\n TrackingTemplateAd: _TL_('Tracking template(Ad)'),\r\n TrackingTemplateProduct: _TL_('Tracking template(Product)'),\r\n // user id\r\n UserId: _TL_('User id'),\r\n // website:cov\r\n WebsiteCoverage: _TL_('Website coverage'),\r\n // week:start:date\r\n Week: _TL_('Week (Sun - Sat)'),\r\n // week:start:date:mon\r\n WeekStartingMonday: _TL_('Week (Mon - Sun)'),\r\n // year:num\r\n Year: _TL_('Year'),\r\n\r\n /** Custom */\r\n DimensionColumns: _TL_('Attributes'),\r\n MetricColumns: _TL_('Performance Statistics'),\r\n TimeColumns: _TL_('Time'),\r\n\r\n /** Video metrics */\r\n VideoViews: _TL_('Video views'),\r\n ViewThroughRate: _TL_('View through rate'),\r\n AverageCPV: _TL_('Avg. CPV'),\r\n TotalWatchTimeInMS: _TL_('Total watch time in msec'),\r\n AverageWatchTimePerImpression: _TL_('Avg. watch time per impression'),\r\n AverageWatchTimePerVideoView: _TL_('Avg. watch time per video view'),\r\n VideoViewsAt25Percent: _TL_('Video views at 25 percent'),\r\n VideoViewsAt50Percent: _TL_('Video views at 50 percent'),\r\n VideoViewsAt75Percent: _TL_('Video views at 75 percent'),\r\n CompletedVideoViews: _TL_('Completed video views'),\r\n VideoCompletionRate: _TL_('Video completion rate'),\r\n\r\n ChangeInAdvertiserReportedRevenuePct: _TL_('% Change in All conv. revenue'),\r\n ChangeInAllConvRatePct: _TL_('% Change in All conv. rate'),\r\n ChangeInConversionCreditPct: _TL_('% Change in All conv.'),\r\n ChangeInCPAPct: _TL_('% Change in CPA'),\r\n ChangeInFullViewAdvertiserReportedRevenuePct: _TL_('% Change in View-through conv. revenue'),\r\n ChangeInFullViewThroughConversionPct: _TL_('% Change in View-through conv.'),\r\n ChangeInROASPct: _TL_('% Change in Return on ad spend'),\r\n ChangeInViewThroughRatePct: _TL_('% Change in View-through conv. rate'),\r\n ChangeInVTCCPAPct: _TL_('% Change in View-through conv. CPA'),\r\n ChangeInVTCROASPct: _TL_('% Change in View-through conv. return on ad spend'),\r\n DDAAllConvRate: _TL_('All conv. rate (DDA'),\r\n DDACPA: _TL_('CPA (DDA)'),\r\n DDAFullAdvertiserReportedRevenue: _TL_('All conv. revenue (DDA)'),\r\n DDAFullConversionCredit: _TL_('All conv. (DDA)'),\r\n DDAFullViewAdvertiserReportedRevenue: _TL_('View-through conv. revenue (DDA)'),\r\n DDAFullViewThroughConversion: _TL_('View-through conv. (DDA)'),\r\n DDAROAS: _TL_('Return on ad spend (DDA)'),\r\n DDAViewThroughRate: _TL_('View-through conv. rate (DDA)'),\r\n DDAVTCCPA: _TL_('View-through conv. CPA (DDA)'),\r\n DDAVTCROAS: _TL_('View through conv. return on ad spend (DDA)'),\r\n LCAAllConvRate: _TL_('All conv. rate (LCA)'),\r\n LCACPA: _TL_('CPA (LCA)'),\r\n LCAFullAdvertiserReportedRevenue: _TL_('All conv. revenue (LCA)'),\r\n LCAFullConversionCredit: _TL_('All conv. (LCA)'),\r\n LCAFullViewAdvertiserReportedRevenue: _TL_('View-through conv. revenue (LCA)'),\r\n LCAFullViewThroughConversion: _TL_('View-through conv. (LCA)'),\r\n LCAROAS: _TL_('Return on ad spend (LCA)'),\r\n LCAViewThroughRate: _TL_('View-through conv. rate (LCA)'),\r\n LCAVTCCPA: _TL_('View-through conv. CPA (LCA)'),\r\n LCAVTCROAS: _TL_('View-through conv. return on ad spend (LCA)'),\r\n IsMainConversionGoal: _TL_('Include in converions'),\r\n\r\n Sales: _TL_('Sales'),\r\n CostPerSale: _TL_('Cost per sale'),\r\n RevenuePerSale: _TL_('Revenue per sale'),\r\n\r\n msxAdClicks: _TL_('Clicks'),\r\n msxDeliveredCountry: _TL_('Delivered country'),\r\n msxDeliveredMarket: _TL_('Delivered market'),\r\n msxDevice: _TL_('Device'),\r\n msxPageType: _TL_('Page type'),\r\n msxPlacementId: _TL_('PlacementId'),\r\n msxProvider: _TL_('Provider'),\r\n msxPublisher: _TL_('Publisher'),\r\n msxRegion: _TL_('Region'),\r\n msxServedImpressions: _TL_('Served impressions'),\r\n msxServedRevenue: _TL_('Served revenue'),\r\n msxViewedImpressions: _TL_('Viewed impressions'),\r\n\r\n Installs: _TL_('Installs (charged)-legacy'),\r\n CostPerInstall: _TL_('Cost per install-legacy'),\r\n RevenuePerInstall: _TL_('Revenue per install-legacy'),\r\n\r\n AssetGroupId: _TL_('Asset group ID'),\r\n AssetGroupName: _TL_('Asset group'),\r\n AssetGroupStatus: _TL_('Asset group status'),\r\n\r\n UserCountry: _TL_('User country'),\r\n SiteType: _TL_('Site type'),\r\n\r\n ClickShare: _TL_('Click share'),\r\n\r\n // Conversion value rule adjustment columns\r\n RevenueAdjustment: _TL_('Revenue adj.'),\r\n AllRevenueAdjustment: _TL_('All revenue adj.'),\r\n ViewThroughRevenueAdjustment: _TL_('View-through revenue adj.'),\r\n\r\n // Video ad metrics\r\n VideoStarts: _TL_('Video starts'),\r\n VideoSkips: _TL_('Video skips'),\r\n CPCV: _TL_('CPCV'),\r\n\r\n CollectionId: _TL_('Collection ID'), // Temporary to fix translation-test.js, find owner for name.\r\n\r\n AverageImpressionFrequencyPerUser: _TL_('Avg. Impression Frequency per User'),\r\n AverageImpressionFrequencyPerUser7Day: _TL_('Avg. Impression Frequency per User (7 days)'),\r\n Reach: _TL_('Unique Reach'),\r\n\r\n // App ads camapign columns\r\n Downloads: _TL_('Downloads'),\r\n PostClickDownloadRate: _TL_('Post-click download rate'),\r\n CostPerDownload: _TL_('Cost per Download'),\r\n AppInstalls: _TL_('Install'),\r\n PostClickInstallRate: _TL_('Post-click install rate'),\r\n CPI: _TL_('CPI'),\r\n Purchases: _TL_('In-app purchases'),\r\n PostInstallPurchaseRate: _TL_('Post-install purchase rate'),\r\n CPP: _TL_('Cost per in-app purchase'),\r\n Subscriptions: _TL_('In-app subscriptions'),\r\n PostInstallSubscriptionRate: _TL_('Post-install subscription rate'),\r\n CPS: _TL_('Cost per in-app subscription'),\r\n RevenuePerDownload: _TL_('Revenue per Download'),\r\n RevenuePerAppInstall: _TL_('Revenue per Install'),\r\n NewCustomerConversions: _TL_('New customer conversions'),\r\n NewCustomerRevenue: _TL_('New customer revenue'),\r\n NewCustomerConversionRate: _TL_('New customer conversion rate'),\r\n NewCustomerCPA: _TL_('New customer CPA'),\r\n NewCustomerReturnOnAdSpend: _TL_('New customer return on ad spend'),\r\n\r\n // Boost placement name\r\n PlacementName: _TL_('Placement name'),\r\n // Insertion order report columns\r\n IOReportMonth: _TL_('Month'),\r\n ChangeType: _TL_('Change type'),\r\n ChangeAmount: _TL_('Amount'),\r\n RemainingIOBudget: _TL_('Remaining IO budget'),\r\n InsertionOrderDetails: _TL_('IO details'),\r\n BillingDocumentNumber: _TL_('Billing document'),\r\n\r\n // Data columns, don't show in the grid\r\n MismatchedReason: _TL_('Mismatched reason'),\r\n InsertionOrderId: _TL_('Insertion order ID'),\r\n BDAmount: _TL_('Billing document amount'),\r\n MismatchedAmount: _TL_('Mismatched amount'),\r\n CouponAmount: _TL_('Coupon amount'),\r\n BudgetChangedAmount: _TL_('Budget changed amount'),\r\n SpendAmount: _TL_('Spend amount'),\r\n AdjustmentAmount: _TL_('Adjustment amount'),\r\n BudgetChangeOldValue: _TL_('Budget change old value'),\r\n BudgetChangeNewValue: _TL_('Budget change new value'),\r\n SpendCouponAmount: _TL_('Spend coupon amount'),\r\n AdjustmentCouponAmount: _TL_('Adjustment coupon amount'),\r\n\r\n SearchCategory: _TL_('Search Category'),\r\n SearchVolume: _TL_('Search Volume'),\r\n\r\n // Asset report columns\r\n AssetId: _TL_('Asset ID'),\r\n AssetContent: _TL_('Asset content'),\r\n AssetType: _TL_('Asset type'),\r\n AssetSource: _TL_('Asset source'),\r\n\r\n // Marketplace insights report columns\r\n L1Vertical: _TL_('L1 vertical'),\r\n L2Vertical: _TL_('L2 vertical'),\r\n L3Vertical: _TL_('L3 vertical'),\r\n SearchesIndexed: _TL_('Searches'),\r\n ClicksIndexed: _TL_('Clicks'),\r\n WoWSearches: _TL_('Week over week (WoW) searches'),\r\n WoWClicks: _TL_('Week over week (WoW) clicks'),\r\n MoMSearches: _TL_('Month over month (MoM) searches'),\r\n MoMClicks: _TL_('Month over month (MoM) clicks'),\r\n YoYLast1WeekSearches: _TL_('Year over year (YoY) current week searches'),\r\n YoYLast1WeekClicks: _TL_('Year over year (YoY) current week clicks'),\r\n YoYLast4WeeksSearches: _TL_('Year over year (YoY) last four week searches'),\r\n YoYLast4WeeksClicks: _TL_('Year over year (YoY) last four week clicks'),\r\n SearchesPeekWeek: _TL_('Peak searches (week)'),\r\n ClicksPeekWeek: _TL_('Peak clicks (week)'),\r\n MarketplaceClickCoverage: _TL_('Marketplace click coverage'),\r\n ProportionOfSpend: _TL_('Proportion Of Spend'),\r\n Headline1: _TL_('Headline1'),\r\n Headline2: _TL_('Headline2'),\r\n Headline3: _TL_('Headline3'),\r\n Description1: _TL_('Description1'),\r\n Description2: _TL_('Description2'),\r\n Image: _TL_('Image'),\r\n Logo: _TL_('Logo'),\r\n CombinationLongHeadline: _TL_('Long headline'),\r\n};\r\n","export const FilterTitle = {\r\n AccountStatus: _TL_('Account status'),\r\n AdDistribution: _TL_('Ad distribution'),\r\n AdGroupStatus: _TL_('Ad group status'),\r\n AdRelevance: _TL_('Ad relevance'),\r\n AdStatus: _TL_('Ad status'),\r\n AdType: _TL_('Ad type'),\r\n BidMatchType: _TL_('Bid match types'),\r\n BidStrategyType: _TL_('Bid strategy type'),\r\n CampaignStatus: _TL_('Campaign status'),\r\n Clicks: _TL_('Clicks'),\r\n CountryCode: _TL_('Countries/regions'),\r\n DeliveredMatchType: _TL_('Delivered match types'),\r\n DeviceOS: _TL_('Device OS'),\r\n DeviceType: _TL_('Device type'),\r\n DynamicAdTargetStatus: _TL_('Auto target status'),\r\n ExpectedCtr: _TL_('Expected click-through rate'),\r\n FeedUrl: _TL_('Feed URL'),\r\n GoalIds: _TL_('Goal ID'),\r\n HowChanged: _TL_('How changed'),\r\n ItemChanged: _TL_('Entity type'),\r\n Keywords: _TL_('Keywords'),\r\n KeywordStatus: _TL_('Keyword status'),\r\n LandingPageExperience: _TL_('Landing page experience'),\r\n LanguageCode: _TL_('Language'),\r\n QualityScore: _TL_('Quality score'),\r\n SearchQueries: _TL_('Search term'),\r\n Status: _TL_('Ad group status'),\r\n};\r\n\r\n// !!! Notice: Put strings below only if you want to override the mapping defined in\r\n// @bingads-webui/report-ui-interface/src/Shared.js\r\nexport const FilterEnum = {\r\n AdRelevance: {\r\n 1: _TL_('Below Average - 1'),\r\n 2: _TL_('Average - 2'),\r\n 3: _TL_('Above Average - 3'),\r\n },\r\n ExpectedCtr: {\r\n 1: _TL_('Below Average - 1'),\r\n 2: _TL_('Average - 2'),\r\n 3: _TL_('Above Average - 3'),\r\n },\r\n LandingPageExperience: {\r\n 1: _TL_('Below Average - 1'),\r\n 2: _TL_('Average - 2'),\r\n 3: _TL_('Above Average - 3'),\r\n },\r\n};\r\n","import _ from 'underscore';\r\nimport { toIANATimeZone, getUTCOffsetWithoutDST } from '@bingads-webui-universal/time-zone-converter';\r\nimport { CivilDate } from 'tc39-proposal-temporal';\r\nimport { i18nMap } from '../i18n-map';\r\nimport { logUnmappedEnum } from '../logger';\r\n\r\nexport function getUTCOffsetWithDST(i18n, dateStr, timeZone) {\r\n if (_.isString(dateStr)) {\r\n const date = new Date(dateStr);\r\n const formatter = i18n.dateFormatter({\r\n raw: 'ZZZZ',\r\n timeZone: toIANATimeZone(timeZone) || 'UTC',\r\n });\r\n\r\n return formatter(date);\r\n }\r\n\r\n return '';\r\n}\r\n\r\nexport function reformatDate(i18n, dateStr, timeZone, skeleton = 'yMdhms') {\r\n if (_.isString(dateStr)) {\r\n const date = new Date(dateStr);\r\n const formatter = i18n.dateFormatter({\r\n skeleton,\r\n timeZone: toIANATimeZone(timeZone) || 'UTC',\r\n });\r\n\r\n return formatter(date).replace(',', '');\r\n }\r\n\r\n return dateStr;\r\n}\r\n\r\nexport function reformatMediumDate(i18n, dateStr, timeZone) {\r\n return reformatDate(i18n, dateStr, timeZone, 'yMdhm');\r\n}\r\n\r\nexport function reformatShortDate(i18n, dateStr, timeZone) {\r\n return reformatDate(i18n, dateStr, timeZone, 'yMd');\r\n}\r\n\r\nexport const dummyDate = new CivilDate(2020, 1, 1);\r\n\r\nexport function convertDateTimeStringToCivilDate(dateTimeString) {\r\n if (_.isString(dateTimeString)) {\r\n const match = /(\\d{4})-(\\d{2})-(\\d{2})/.exec(dateTimeString);\r\n\r\n if (match) {\r\n // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars\r\n const [dummy, year, month, day] = match;\r\n return new CivilDate(year, month, day);\r\n }\r\n }\r\n\r\n return null;\r\n}\r\n\r\nexport function formatDateRange(\r\n i18n,\r\n ReportTime,\r\n ReportTimeZone,\r\n appendActualRange,\r\n showTimeZone = true\r\n) {\r\n if (!ReportTime) {\r\n return ' ';\r\n }\r\n\r\n const {\r\n DateRangePreset,\r\n StartDate,\r\n EndDate,\r\n } = ReportTime;\r\n\r\n const fragments = [];\r\n\r\n if (DateRangePreset) {\r\n const englishString = i18nMap.DateRangePreset[DateRangePreset];\r\n let localizedString;\r\n if (englishString) {\r\n localizedString = i18n.getString(englishString);\r\n } else {\r\n localizedString = DateRangePreset;\r\n logUnmappedEnum({ columnName: 'DateRangePreset', value: DateRangePreset });\r\n }\r\n\r\n fragments.push(localizedString);\r\n\r\n if (appendActualRange) {\r\n const startDate = reformatShortDate(i18n, StartDate, 'UTC');\r\n const endDate = reformatShortDate(i18n, EndDate, 'UTC');\r\n\r\n fragments.push(`(${startDate} - ${endDate})`);\r\n }\r\n } else {\r\n const startDate = i18n.formatCivilDate(convertDateTimeStringToCivilDate(StartDate), { skeleton: 'yMd' });\r\n const endDate = i18n.formatCivilDate(convertDateTimeStringToCivilDate(EndDate), { skeleton: 'yMd' });\r\n\r\n fragments.push(`${startDate} - ${endDate}`);\r\n\r\n if (showTimeZone) {\r\n const offset = ReportTimeZone ? getUTCOffsetWithoutDST(ReportTimeZone) : '';\r\n\r\n fragments.push(`(GMT${offset})`);\r\n }\r\n }\r\n\r\n return fragments.join(' ');\r\n}\r\n","import { getCustomerId, getUserId } from './get-customer-id';\r\nimport { customReports, historyReports } from './model-help';\r\nimport { isReportRunning } from './is-report-running';\r\nimport { shouldRefresh } from './should-refresh-poller';\r\nimport { getUTCOffsetWithDST, reformatDate, reformatMediumDate, reformatShortDate, formatDateRange, convertDateTimeStringToCivilDate, dummyDate } from './date';\r\nimport { getMergeFilter } from './get-merge-filter';\r\n\r\nexport const util = {\r\n getCustomerId,\r\n getUserId,\r\n customReports,\r\n historyReports,\r\n isReportRunning,\r\n shouldRefresh,\r\n getMergeFilter,\r\n getUTCOffsetWithDST,\r\n reformatDate,\r\n reformatMediumDate,\r\n reformatShortDate,\r\n formatDateRange,\r\n convertDateTimeStringToCivilDate,\r\n dummyDate,\r\n};\r\n","import { keyCode as KEY_CODES } from '@bingads-webui/keycode';\r\n\r\nexport const wrapKeyDownEvent = availablekeys => handler => ({ keyCode }, ...params) => {\r\n if (keyCode in availablekeys) {\r\n handler(...params);\r\n }\r\n};\r\n\r\nconst submitEvent = wrapKeyDownEvent({ [KEY_CODES.Enter]: null });\r\n\r\nexport const keyDown = {\r\n submitEvent,\r\n};\r\n","\r\n\r\nexport const getCustomerId = (url) => {\r\n const regex = /cid=(\\d+)/gi;\r\n const value = regex.exec(url);\r\n\r\n return value ? parseInt(value[1], 10) : 0;\r\n};\r\n\r\nexport const getUserId = (url) => {\r\n const regex = /uid=(\\d+)/gi;\r\n const value = regex.exec(url);\r\n\r\n return value ? parseInt(value[1], 10) : 0;\r\n};\r\n\r\n","/**\r\n * isReportRunning: given a report returns if it is still executing\r\n * @param {object} report odata report object\r\n * @returns {boolean} whether or not the report is executing\r\n */\r\nexport const isReportRunning = (report) => {\r\n const { Status } = report;\r\n return Status === 'PendingExecution' || Status === 'InProgress';\r\n};\r\n\r\n","/**\r\n * @param {promise|undefined} promise a bluebird promise\r\n * @returns {boolean} whether the promise is fullfilled or undefined\r\n */\r\nexport function shouldRefresh(promise) {\r\n const empty = !promise;\r\n const fullfilled = !!promise && promise.isFulfilled();\r\n return empty || fullfilled;\r\n}\r\n","import _ from 'underscore';\r\n\r\nexport function getMergeFilter({ accountScope, userId }) {\r\n let $filter = accountScope ?\r\n 'Type eq Enum.TaskItemType\\'ReportUIAccountTemplate\\' or Type eq Enum.TaskItemType\\'ReportUITemplate\\'or Type eq Enum.TaskItemType\\'ReportAccountEmail\\'' :\r\n 'Type eq Enum.TaskItemType\\'ReportUICustomerTemplate\\' or Type eq Enum.TaskItemType\\'ReportUITemplate\\' or Type eq Enum.TaskItemType\\'Email\\'';\r\n\r\n if (_.isNumber(userId)) {\r\n $filter = `(${$filter}) and CreatedBy/Id eq ${userId}`;\r\n }\r\n\r\n return $filter;\r\n}\r\n","import { JsDataLightWithScopePath } from './js-data-light-with-scope-path';\r\nimport { util } from '../util';\r\n\r\nexport const customReportQueries = {\r\n /**\r\n * getRecentCustomReports: returns the most recent n custom reports from odata\r\n * @param {integer} limit max reports\r\n * @returns {promise} resolves to odata response\r\n */\r\n getRecent({ limit }) {\r\n const entity = new JsDataLightWithScopePath({\r\n entityName: 'TaskItems',\r\n odataURL: '/TaskItems',\r\n });\r\n\r\n const params = {\r\n limit,\r\n query: {\r\n $filter: 'Type eq Enum.TaskItemType\\'ReportUITemplate\\'',\r\n },\r\n };\r\n\r\n return entity.findAll(params);\r\n },\r\n\r\n run({ templateIds, options }) {\r\n const entity = new JsDataLightWithScopePath({\r\n entityName: 'TaskItems',\r\n odataURL: '/TaskItems/RerunReports',\r\n ...options,\r\n });\r\n const payload = {\r\n ReportIds: templateIds,\r\n };\r\n\r\n return entity.create(payload);\r\n },\r\n\r\n delete({ templateIds, options }) {\r\n const entity = new JsDataLightWithScopePath({\r\n entityName: 'TaskItems',\r\n odataURL: '/TaskItems/DeleteReports',\r\n ...options,\r\n });\r\n const payload = {\r\n ReportIds: templateIds,\r\n };\r\n\r\n return entity.create(payload);\r\n },\r\n\r\n gridDataSource() {\r\n const entity = new JsDataLightWithScopePath({\r\n entityName: 'TaskItems',\r\n odataURL: '/TaskItems',\r\n });\r\n\r\n return {\r\n type: 'jsdata',\r\n entity,\r\n primaryKey: 'Id',\r\n query: {\r\n $filter: 'Type eq Enum.TaskItemType\\'ReportUITemplate\\'',\r\n },\r\n };\r\n },\r\n\r\n gridMergeDataSource(accountScope = false, createdByUserId = null) {\r\n const entity = new JsDataLightWithScopePath({\r\n entityName: 'TaskItems',\r\n odataURL: '/TaskItems',\r\n });\r\n const $filter = util.getMergeFilter({ accountScope, userId: createdByUserId });\r\n\r\n return {\r\n type: 'jsdata',\r\n entity,\r\n primaryKey: 'Id',\r\n query: {\r\n $filter,\r\n },\r\n };\r\n },\r\n};\r\n","import { ClientCenterCustomerService } from '@bingads-webui/clientcenter-customer-service';\r\nimport { JsDataLightWithScopePath } from './js-data-light-with-scope-path';\r\n\r\nexport const detailsQueries = {\r\n getByTaskItemId({ taskItemId, mode }) {\r\n const entity = new JsDataLightWithScopePath({\r\n entityName: 'TaskItem',\r\n odataURL: `/TaskItems(${taskItemId})`,\r\n mode,\r\n });\r\n\r\n return entity.find();\r\n },\r\n\r\n getByExecutionId({ executionId, expandTaskItem }) {\r\n const entity = new JsDataLightWithScopePath({\r\n entityName: 'TaskItemExecution',\r\n odataURL: '/TaskItemExecutions',\r\n });\r\n\r\n if (expandTaskItem) {\r\n return entity.find(executionId, {\r\n queryParameters: {\r\n expand: ['TaskItem'],\r\n },\r\n });\r\n }\r\n return entity.find(executionId);\r\n },\r\n\r\n pollReport({ executionId }) {\r\n const entity = new JsDataLightWithScopePath({\r\n entityName: 'TaskItemExecution',\r\n odataURL: `/TaskItemExecutions(${executionId})/Default.PollReportDataTaskItemExecution`,\r\n });\r\n return entity.find();\r\n },\r\n\r\n gridDataSource({ executionId, lcid }) {\r\n const entity = new JsDataLightWithScopePath({\r\n entityName: 'ReportData',\r\n idAttribute: 'RowId',\r\n odataURL: `/TaskItemExecutions(${executionId})/Default.ReportData()`,\r\n });\r\n\r\n const query = {\r\n $filter: 'TaskItem/Type eq Enum.TaskItemType\\'ReportUI\\'',\r\n };\r\n\r\n if (lcid) {\r\n query.lcid = lcid;\r\n }\r\n\r\n return {\r\n type: 'jsdata',\r\n entity,\r\n query,\r\n };\r\n },\r\n\r\n getCustomerHierarchy({ cid, uid, ccBaseUrl }) {\r\n const customerService = new ClientCenterCustomerService({ ccBaseUrl });\r\n return customerService.getCustomerHierarchy({\r\n cid,\r\n uid,\r\n returnOnlyDirectlyLinkedEntities: false,\r\n }).then(({ customerHierarchyEntities }) => customerHierarchyEntities[0]);\r\n },\r\n};\r\n","import _ from 'underscore';\r\nimport { JsDataLightWithScopePath } from './js-data-light-with-scope-path';\r\nimport { modeEnum } from '../reporting-contexts/mode-updater/modes';\r\n\r\nconst isNewUI = () => window.location.pathname.includes('vnext');\r\n\r\nexport const createReportQueries = {\r\n create({ payload }) {\r\n let mode;\r\n\r\n if (isNewUI()) {\r\n mode = _.result(payload.ReportData, 'Type') === 'ReportUITemplate' ?\r\n modeEnum.PRIVATE : modeEnum.SHARED;\r\n } else {\r\n mode = modeEnum.PRIVATE;\r\n }\r\n\r\n const entity = new JsDataLightWithScopePath({\r\n entityName: 'TaskItems',\r\n odataURL: '/TaskItems/SubmitReportDataTaskItem?$expand=TaskItemExecutions',\r\n mode,\r\n });\r\n\r\n return entity.create(payload);\r\n },\r\n\r\n update({ taskItemId, payload }) {\r\n const entity = new JsDataLightWithScopePath({\r\n entityName: 'TaskItems',\r\n odataURL: '/TaskItems',\r\n mode: payload.Type === 'ReportUITemplate' ?\r\n modeEnum.PRIVATE : null,\r\n });\r\n return entity.update(taskItemId, payload, { urlParameters: { runNow: 'false' } });\r\n },\r\n\r\n updateAndRun({ taskItemId, payload }) {\r\n const entity = new JsDataLightWithScopePath({\r\n entityName: 'TaskItems',\r\n odataURL: '/TaskItems',\r\n });\r\n return entity.update(taskItemId, payload, { urlParameters: { runNow: 'true', $expand: 'TaskItemExecutions' } });\r\n },\r\n};\r\n","export const constants = {\r\n QUERY_LIMIT: 20,\r\n POLL_INTERVAL: 5990,\r\n};\r\n","/* eslint-disable jsx-a11y/anchor-is-valid */\r\n/* eslint-disable no-script-url */\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nexport function HelpLink({ label, query }) {\r\n return e.preventDefault()} query={query}>{label};\r\n}\r\n\r\nHelpLink.propTypes = {\r\n label: PropTypes.string.isRequired,\r\n query: PropTypes.string.isRequired,\r\n};\r\n\r\n","import _ from 'underscore';\r\n\r\nexport function serializeError(error) {\r\n if (_.isString(error)) {\r\n return `${error}`;\r\n }\r\n if (_.isObject(error)) {\r\n const errorStack = error.stack ? error.stack : '';\r\n return `${error.message}\\n ${errorStack}`.trim();\r\n }\r\n // If some other object, log it as is\r\n try {\r\n return `${error.toString()}`;\r\n } catch (e) {\r\n return 'Error could not be serialized';\r\n }\r\n}\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nexport const Permission = React.createContext('');\r\n\r\nexport function PermissionProvider(props) {\r\n return (\r\n \r\n {props.children}\r\n );\r\n}\r\n\r\nPermissionProvider.propTypes = {\r\n /**\r\n * Content rendered in the body\r\n */\r\n children: PropTypes.node.isRequired,\r\n\r\n permissions:\r\n PropTypes.shape({}).isRequired,\r\n\r\n};\r\n\r\n","import React from 'react';\r\nimport { Permission } from './permission-provider';\r\n\r\nexport const withPermissionContext = AReactComponent => (props => (\r\n \r\n {\r\n context => \r\n }\r\n ));\r\n","import _ from 'underscore';\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { AlertCenter } from '@bingads-webui/alert-center';\r\nimport { show as showBanner } from '@bingads-webui-react/floating-banner';\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\nimport { BackboneInstanceWrapper } from '@bingads-webui-react/backbone-instance-wrapper';\r\nimport { withPermissionContext } from '../reporting-contexts/permission-provider';\r\n\r\n\r\n// Backbone version of ReportAlertCenter\r\nclass ReportAlertCenterBackbone extends AlertCenter {\r\n showError(message) {\r\n this.show({\r\n message,\r\n level: 'Error',\r\n hasIcon: true,\r\n dismissible: true,\r\n });\r\n }\r\n}\r\n\r\nfunction showTryNewUIMessage(url, message) {\r\n showBanner({\r\n customCssClass: 'alert__try-ui-next',\r\n message: `${message}`,\r\n level: 'Info',\r\n });\r\n}\r\n\r\nconst getInstance = _.once(() => {\r\n const instance = new ReportAlertCenterBackbone();\r\n instance.render();\r\n return instance;\r\n});\r\n\r\nconst showInitialMessage = _.once((url, message) =>\r\n showTryNewUIMessage(url, message));\r\n\r\n// React version of ReportAlertCenter\r\nclass ReportAlertCenter extends React.PureComponent {\r\n componentDidMount() {\r\n const { uiNextLink, i18n, permissions } = this.props;\r\n if (permissions.IsNewUIPhaseTwoEnabled) {\r\n const message = i18n.getString(_TL_('Try the new Microsoft Advertising'));\r\n showInitialMessage(uiNextLink, message);\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nReportAlertCenter.propTypes = {\r\n permissions:\r\n PropTypes.shape({}).isRequired,\r\n uiNextLink: PropTypes.string.isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n};\r\n\r\nconst Wrapped = withPermissionContext(withI18nConsumer(ReportAlertCenter));\r\nexport { Wrapped as ReportAlertCenter };\r\n\r\n// Alert API\r\nexport function alert() {\r\n return getInstance();\r\n}\r\n","import _ from 'underscore';\r\nimport { alert } from '../alert-center';\r\n\r\n// eslint-disable-next-line no-underscore-dangle\r\nlet _showError = (message) => {\r\n alert().showError(message);\r\n};\r\n\r\nexport const initializeErrorDisplayer = (displayError) => {\r\n if (_.isFunction(displayError)) {\r\n _showError = displayError;\r\n }\r\n};\r\n\r\nexport const showError = (message) => {\r\n _showError(message);\r\n};\r\n\r\n","/* eslint-disable react/no-array-index-key */\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\n\r\nexport function DefaultErrorView({ description, title }) {\r\n return (\r\n
\r\n

{title}

\r\n { description.map((txt, index) =>
{_.isFunction(txt) ? txt() : txt}
)}\r\n
\r\n );\r\n}\r\n\r\n\r\nDefaultErrorView.propTypes = {\r\n description:\r\n PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.string])).isRequired,\r\n title: PropTypes.string.isRequired,\r\n};\r\n","import React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport ReportingProps from '@bingads-webui-campaign-react/props-reporting';\r\nimport _ from 'underscore';\r\nimport Promise from 'bluebird';\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\nimport { withInstrumentation } from '@bingads-webui-react/hoc-with-instrumentation';\r\nimport { iframeDownload } from '@bingads-webui/download-service';\r\nimport * as putil from '@bingads-webui-universal/primitive-utilities';\r\nimport { createReportQueries, customReportQueries, historyQueries, detailsQueries, JsDataLightWithScopePath } from '../../odata-abstraction';\r\nimport { util } from '../../util';\r\nimport { serializeError } from '../../general';\r\nimport { getErrorMessage } from '../../i18n-map';\r\nimport { showError } from '../../general/error-displayer';\r\nimport { withIdentityContext } from '../../identity-provider';\r\nimport { withPermissionContext } from '../../reporting-contexts/permission-provider';\r\nimport { modeEnum } from '../mode-updater/modes';\r\n\r\nconst { isReportRunning } = util;\r\nexport const RepositoryContext = React.createContext('');\r\nexport const RepositoryDataContext = React.createContext('');\r\n\r\nexport class ReportRepositoryComponent extends Component {\r\n static instrumentationSchema = {\r\n scenario: [\r\n {\r\n name: 'ReportRepository',\r\n value: 'reporting/ReportRepository',\r\n activity: [\r\n {\r\n name: 'general',\r\n value: 'fetching',\r\n },\r\n ],\r\n },\r\n ],\r\n }\r\n\r\n static setupInstrumentation = (instrumentation) => {\r\n instrumentation.addScenario(ReportRepositoryComponent.instrumentationSchema);\r\n return instrumentation.ReportRepository.create();\r\n }\r\n\r\n constructor(props) {\r\n super(props);\r\n this.logger =\r\n ReportRepositoryComponent.setupInstrumentation(props.instrumentation).general.create();\r\n this.state = {\r\n historyExpansion: 0,\r\n historyData: props.prefetchedData.History.value,\r\n customData: props.prefetchedData.CustomReports.value,\r\n };\r\n this.uid = props.identityDetails.user.Id;\r\n this.lcid = props.identityDetails.user.Locale;\r\n this.aid = _.result(props.identityDetails.account, 'Id');\r\n this.reportsToDownload = {};\r\n this.historyExpansionInstance = 0;\r\n JsDataLightWithScopePath.init({\r\n pcid: props.identityDetails.user.ParentCustomerId,\r\n cid: props.identityDetails.customer.Id,\r\n aid: props.permissions.IsReportingUIPhaseNext ? this.aid : undefined,\r\n });\r\n }\r\n\r\n getDetailsByTaskItemId =\r\n (taskItemId, mode) => detailsQueries.getByTaskItemId({ taskItemId, mode })\r\n .catch(this.catchException);\r\n\r\n getDetailsByExecutionId =\r\n (executionId, expandTaskItem = true) =>\r\n detailsQueries.getByExecutionId({ executionId, expandTaskItem })\r\n .then((response) => {\r\n this.resolveDownload(response);\r\n return response;\r\n })\r\n .catch(this.catchException);\r\n\r\n catchException = (err) => {\r\n const errorCode = putil.get(err, 'body.value[0].Code');\r\n const errMsg = putil.get(err, 'body.value[0].Message');\r\n const errorMessage = getErrorMessage(errorCode, errMsg);\r\n const localizedMessage = this.props.i18n.getString(errorMessage);\r\n\r\n showError(localizedMessage);\r\n\r\n throw err;\r\n }\r\n\r\n detailsGridDataSource =\r\n executionId => detailsQueries.gridDataSource({ executionId, lcid: this.lcid })\r\n\r\n customReportGridDataSource =\r\n () => {\r\n const { IsReportsMergeEnabled, IsInternalUser } = this.props.permissions;\r\n\r\n return IsReportsMergeEnabled ?\r\n customReportQueries.gridMergeDataSource(!!this.aid, IsInternalUser && this.uid) :\r\n customReportQueries.gridDataSource();\r\n }\r\n\r\n historyGridDataSource =\r\n () => historyQueries.gridDataSource()\r\n\r\n checkAndUpdateHistory = (response) => {\r\n let allReportsFinished = true;\r\n if (_.isArray(response)) {\r\n _.forEach(response, (report) => {\r\n this.resolveDownload(report);\r\n allReportsFinished = !isReportRunning(report) && allReportsFinished;\r\n });\r\n if (!_.isEqual(response, this.state.historyData)) {\r\n try {\r\n this.setState({\r\n historyData: response,\r\n });\r\n } catch (error) {\r\n this.logger.error(`encounted an error refreshing historyData: ${serializeError(error)}`);\r\n }\r\n }\r\n return allReportsFinished;\r\n }\r\n return false;\r\n }\r\n\r\n\r\n resolveDownload = (report) => {\r\n if (\r\n isReportRunning(report) ||\r\n !_.has(this.reportsToDownload, report.Id)\r\n ) {\r\n return;\r\n } else if (report.Status !== 'Completed') {\r\n // placeholder for\r\n // showing floating banner error on download failed\r\n return;\r\n }\r\n this.rdsDownloadReport(report.Id);\r\n this.reportsToDownload = _.omit(this.reportsToDownload, report.Id);\r\n }\r\n\r\n queueDownload = (reportId) => {\r\n this.reportsToDownload[reportId] = true;\r\n }\r\n\r\n pollReport = executionId =>\r\n detailsQueries.pollReport({ executionId })\r\n .then((response) => {\r\n this.resolveDownload(response);\r\n return response;\r\n })\r\n .catch(this.catchException)\r\n\r\n createReport = payload => createReportQueries.create({ payload }).catch(this.catchException)\r\n\r\n updateReport = (payload, taskItemId) =>\r\n createReportQueries.update({ taskItemId, payload }).catch(this.catchException)\r\n\r\n updateReportAndRun = (payload, taskItemId) =>\r\n createReportQueries.updateAndRun({ taskItemId, payload }).catch(this.catchException)\r\n\r\n // rds run report\r\n rdsRunReport = taskItemIds =>\r\n historyQueries.run({ taskItemIds }).catch(this.catchException)\r\n\r\n rdsRunReportTemplate = (templateIds, options = {}) =>\r\n customReportQueries.run({ templateIds, options }).catch(this.catchException)\r\n\r\n rdsDeleteReport = taskItemIds =>\r\n historyQueries.delete({ taskItemIds }).catch(this.catchException)\r\n\r\n rdsDeleteReportTemplate = (templateIds, options = {}) =>\r\n customReportQueries.delete({ templateIds, options })\r\n .catch(this.catchException)\r\n\r\n rdsDownloadReport = executionId =>\r\n historyQueries.download({ executionId })\r\n .then((response) => {\r\n const { ResultId } = response;\r\n if (ResultId) {\r\n iframeDownload(ResultId);\r\n }\r\n return response;\r\n })\r\n .catch(this.catchException)\r\n\r\n inlineEditReport = (partialTaskItem, mapper) => {\r\n const mode = partialTaskItem.Type === 'ReportUITemplate' ? modeEnum.PRIVATE : modeEnum.SHARED;\r\n return this.getDetailsByTaskItemId(partialTaskItem.Id, mode)\r\n .then(fullTaskItem => this.updateReport(mapper(fullTaskItem), partialTaskItem.Id))\r\n .catch(this.catchException);\r\n }\r\n\r\n unsubscribeMe = (taskItem) => {\r\n // Unsubscribe for report templates\r\n const userEmail = this.props.identityDetails.user.Email;\r\n\r\n if (!_.contains(taskItem.EmailRecipients, userEmail)) {\r\n showError(this.props.i18n.getString(_TL_('You didn\\'t subscribe to report \"{{report}}\"'), { report: taskItem.Name }));\r\n return Promise.reject();\r\n }\r\n\r\n return this.inlineEditReport(taskItem, ({\r\n EmailRecipients,\r\n ...others\r\n }) => {\r\n if (_.isEqual(EmailRecipients, [userEmail])) {\r\n return {\r\n ...others,\r\n EmailRecipients: [],\r\n AttachFileToEmail: false, // Fix issue \"AttachFileToEmail used without EmailRecipients\"\r\n };\r\n }\r\n return ({\r\n ...others,\r\n EmailRecipients: _.difference(EmailRecipients, [userEmail]),\r\n });\r\n });\r\n }\r\n\r\n baseContext = {\r\n pollReport: this.pollReport,\r\n rdsRunReport: this.rdsRunReport,\r\n rdsRunSingleReport: this.rdsRunSingleReport,\r\n rdsDeleteReport: this.rdsDeleteReport,\r\n rdsDeleteReportTemplate: this.rdsDeleteReportTemplate,\r\n rdsRunReportTemplate: this.rdsRunReportTemplate,\r\n createReport: this.createReport,\r\n rdsDownloadReport: this.rdsDownloadReport,\r\n getDetailsByTaskItemId: this.getDetailsByTaskItemId,\r\n getDetailsByExecutionId: this.getDetailsByExecutionId,\r\n detailsGridDataSource: this.detailsGridDataSource,\r\n getAllAccountIds: this.getAllAccountIds,\r\n customReportGridDataSource: this.customReportGridDataSource,\r\n historyGridDataSource: this.historyGridDataSource,\r\n queueDownload: this.queueDownload,\r\n updateReport: this.updateReport,\r\n updateReportAndRun: this.updateReportAndRun,\r\n inlineEditReport: this.inlineEditReport,\r\n unsubscribeMe: this.unsubscribeMe,\r\n }\r\n\r\n render() {\r\n const dataContext =\r\n _.defaults(\r\n { ...this.baseContext },\r\n {\r\n historyData: this.state.historyData,\r\n historyExpansion: this.state.historyExpansion,\r\n customData: this.state.customData,\r\n }\r\n );\r\n return (\r\n \r\n \r\n {this.props.children}\r\n \r\n );\r\n }\r\n}\r\n\r\nReportRepositoryComponent.propTypes = {\r\n /**\r\n * Content rendered in the body\r\n */\r\n children: PropTypes.node.isRequired,\r\n\r\n /**\r\n * Localization module\r\n */\r\n i18n: ReportingProps.i18n.isRequired,\r\n\r\n /**\r\n * instrumentation object\r\n */\r\n // eslint-disable-next-line react/forbid-prop-types\r\n instrumentation: PropTypes.object.isRequired,\r\n\r\n /**\r\n * Customer id\r\n */\r\n identityDetails: ReportingProps.identityDetails.isRequired,\r\n\r\n\r\n permissions: ReportingProps.permissions.isRequired,\r\n\r\n /**\r\n * odata serverside calls\r\n */\r\n prefetchedData: PropTypes.shape({\r\n History: PropTypes.shape({\r\n value: PropTypes.array,\r\n }),\r\n CustomReports: PropTypes.shape({\r\n value: PropTypes.array,\r\n }),\r\n }),\r\n};\r\n\r\nReportRepositoryComponent.defaultProps = {\r\n prefetchedData: {\r\n History: {\r\n value: [],\r\n },\r\n CustomReports: {\r\n value: [],\r\n },\r\n },\r\n};\r\n\r\nconst hocs = [\r\n withI18nConsumer,\r\n withIdentityContext,\r\n withInstrumentation,\r\n withPermissionContext,\r\n];\r\n\r\nexport const ReportRepository = _.compose(...hocs)(ReportRepositoryComponent);\r\n","import React from 'react';\r\nimport { RepositoryContext, RepositoryDataContext } from './report-repository';\r\n\r\nexport const withRepositoryContext = AReactComponent => (props => (\r\n \r\n {\r\n context => \r\n }\r\n ));\r\n\r\nexport const withRepositoryDataContext = AReactComponent => (props => (\r\n \r\n {\r\n context => \r\n }\r\n ));\r\n","import _ from 'underscore';\r\n\r\nexport class ReportListDataFactory {\r\n constructor(initialReportsTree, permissions, providedLogger, cid, uid) {\r\n this.log = providedLogger;\r\n this.reportsTree = initialReportsTree;\r\n this.permissions = permissions;\r\n this.cid = cid;\r\n this.uid = uid;\r\n this.validCatergoryIds = {};\r\n this.validCreateReportIds = {};\r\n\r\n if (!_.isObject(permissions)) {\r\n this.log.Error('PathDataFactory:constructor - Permissions is null');\r\n this.permissions = {};\r\n }\r\n if (!_.isNumber(cid)) {\r\n throw new TypeError('PathDataFactory:constructor - CID is NAN');\r\n } else if (cid < 0) {\r\n throw new RangeError('PathDataFactory:constructor - CID is less than 0');\r\n }\r\n\r\n if (!_.isNumber(uid)) {\r\n throw new TypeError('PathDataFactory:constructor - UID is NAN');\r\n } else if (uid < 0) {\r\n throw new RangeError('PathDataFactory:constructor - UID is less than 0');\r\n }\r\n\r\n this.filterReports();\r\n this.populateCategoryIds();\r\n this.populateCreateReportIds();\r\n }\r\n\r\n isAllowed(node) {\r\n const { permissions } = this;\r\n if (node.isAllowed &&\r\n !node.isAllowed(permissions)) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n fetchData() {\r\n return {\r\n reportsTree: this.reportsTree,\r\n validCategoryIds: this.validCatergoryIds,\r\n validCreateReportIds: this.validCreateReportIds,\r\n };\r\n }\r\n\r\n // TODO: scsuarez- impement filter logic in reports structure\r\n filterReports() {\r\n let runnableReports = this.reportsTree.children;\r\n\r\n // filter report by permission\r\n _.each(runnableReports, (reportCategory, index) => {\r\n if (runnableReports[index].children) {\r\n runnableReports[index].children =\r\n _.filter(reportCategory.children, report => this.isAllowed(report));\r\n }\r\n });\r\n\r\n // filter ReportCategories by permission and omit empty categories\r\n runnableReports =\r\n _.filter(runnableReports, (reportCategory) => {\r\n if (!this.isAllowed(reportCategory)) {\r\n return false;\r\n }\r\n if (!reportCategory.children || reportCategory.children.length === 0) {\r\n return false;\r\n }\r\n\r\n return true;\r\n });\r\n\r\n this.reportsTree.children = runnableReports;\r\n }\r\n\r\n populateCategoryIds() {\r\n this.validCatergoryIds = {};\r\n const runnableReports = this.reportsTree.children;\r\n\r\n _.each(runnableReports, (category) => {\r\n const { id } = category;\r\n this.validCatergoryIds[id.toLowerCase()] = true;\r\n });\r\n }\r\n\r\n populateCreateReportIds() {\r\n this.validCreateReportIds = {};\r\n const runnableReports = this.reportsTree.children;\r\n\r\n _.each(runnableReports, (category) => {\r\n const reports = category.children;\r\n _.each(reports, (report) => {\r\n const { id } = report;\r\n this.validCreateReportIds[id.toLowerCase()] = true;\r\n });\r\n });\r\n }\r\n}\r\n\r\n","import _ from 'underscore';\r\nimport { performance } from './report-categories/performance';\r\nimport { extensions } from './report-categories/extensions';\r\nimport { billingAndBudget } from './report-categories/billing-and-budget';\r\nimport { changeHistory } from './report-categories/change-history';\r\nimport { dynamicSearch } from './report-categories/dynamic-search';\r\nimport { productAds } from './report-categories/product-ads';\r\nimport { targeting } from './report-categories/targeting';\r\nimport { advancedInsights } from './report-categories/advanced-insights';\r\n\r\nexport const rootNode = {\r\n children: [\r\n performance,\r\n extensions,\r\n productAds,\r\n changeHistory,\r\n targeting,\r\n billingAndBudget,\r\n advancedInsights,\r\n dynamicSearch,\r\n ],\r\n name: _TL_('Standard reports'),\r\n path: 0,\r\n id: 'welcome',\r\n title: _TL_('These are a collection of standard reports that we’ve created for you. Click each to create a new report.'),\r\n state: {\r\n expanded: true,\r\n },\r\n};\r\n\r\nfunction cloneNodes(node) {\r\n const output = _.clone(node);\r\n _.forEach(output, (value, key) => {\r\n if (key !== 'children' && _.isObject(value) && !_.isFunction(value)) {\r\n output[key] = _.clone(value);\r\n }\r\n });\r\n output.children = _.map(node.children, childNode => cloneNodes(childNode));\r\n return output;\r\n}\r\n\r\nfunction localizeNodes(node, i18n) {\r\n const output = node;\r\n if (output.name) {\r\n output.name = i18n.getString(output.name);\r\n }\r\n if (output.title) {\r\n output.title = i18n.getString(output.title);\r\n }\r\n if (output.description) {\r\n output.description = _.isObject(output.description) ?\r\n _.mapObject(output.description, value => i18n.getString(value)) :\r\n i18n.getString(output.description);\r\n }\r\n output.children = _.map(node.children, childNode => localizeNodes(childNode, i18n));\r\n return output;\r\n}\r\n\r\nfunction getLinkFromEnumeration(node, routePrefix, queryParams) {\r\n switch (parseInt(node.path, 10)) {\r\n case 0: return (`${routePrefix}/v2/welcome${queryParams}`);\r\n case 1: return (`${routePrefix}/category/${node.id}${queryParams}`);\r\n case 2: return (`${routePrefix}/create/${node.id}${queryParams}`);\r\n default: /* do nothing */\r\n }\r\n _.defer(() => { throw new Error(`unsupported node type: ${node.path}`); });\r\n return node.path;\r\n}\r\n\r\nfunction resolveNodePaths(node, routePrefix, queryParams = '') {\r\n if (node.children) {\r\n _.each(node.children, (child) => {\r\n resolveNodePaths(child, routePrefix, queryParams);\r\n });\r\n }\r\n // eslint-disable-next-line no-param-reassign\r\n node.path = getLinkFromEnumeration(node, routePrefix, queryParams);\r\n return node;\r\n}\r\n\r\nexport const reportsTree = {\r\n get: (i18n, routePrefix, uid, cid) => {\r\n const queryParams = `?cid=${cid}&uid=${uid}`;\r\n // localize nodes will also clone the tree\r\n let output = cloneNodes(rootNode);\r\n output = localizeNodes(output, i18n);\r\n return resolveNodePaths(output, routePrefix, queryParams);\r\n },\r\n};\r\n\r\n/* istanbul ignore next */\r\nfunction formatForUINext(node, scope, campaignTypes) {\r\n const output = {};\r\n output.id = node.id;\r\n output.name = node.name;\r\n if (node.children) {\r\n output.fixedRoute = node.path;\r\n }\r\n output.route = node.path;\r\n output.campaignTypes = campaignTypes;\r\n output.scope = scope;\r\n if (node.isAllowed) { output.checkPermission = node.isAllowed; }\r\n if (node.searchAlias) { output.searchAlias = node.searchAlias; }\r\n output.available = () => true;\r\n output.children =\r\n _.map(node.children, childNode => formatForUINext(childNode, scope, campaignTypes));\r\n return output;\r\n}\r\n\r\n/* istanbul ignore next */\r\nexport function getReportingNextTree(routePrefix, scope, campaignTypes) {\r\n let output = cloneNodes(rootNode);\r\n output = resolveNodePaths(output, routePrefix);\r\n return formatForUINext(output, scope, campaignTypes).children;\r\n}\r\n","import { ReportType } from '../../../../i18n-map/report-type';\r\n\r\nexport const performance = {\r\n children: [\r\n {\r\n title: _TL_('Understand account performance and identify trends.'),\r\n name: ReportType.AccountPerformanceReport,\r\n searchAlias: _TL_('Account report'),\r\n path: 2,\r\n id: 'accountreport',\r\n apiKey: 'AccountPerformanceReport',\r\n description: {\r\n what: _TL_('The impressions, impression share (%), clicks, spend, and average cost-per-click for individual accounts. This data can be sorted by individual accounts, currency, bid match type, and delivered match type. '),\r\n why: _TL_('To observe long-term account performance and trends.'),\r\n },\r\n },\r\n {\r\n title: _TL_('See a snapshot of your account, and if there’s anything to flag.'),\r\n name: ReportType.CampaignPerformanceReport,\r\n searchAlias: _TL_('Campaign report'),\r\n path: 2,\r\n id: 'campaignreport',\r\n apiKey: 'CampaignPerformanceReport',\r\n description: {\r\n what: _TL_('The impressions, impression share (%), clicks, spend, and average cost-per-click for each campaign or account. This data can be sorted by campaign, campaign status, and quality score. '),\r\n why: _TL_('To view high-level performance statistics and quality attributes for each campaign or account. This is also a quick way to flag any major campaign or account problems.'),\r\n },\r\n },\r\n {\r\n title: _TL_('See if your ad group is meeting your preset goals.'),\r\n name: ReportType.AdGroupPerformanceReport,\r\n searchAlias: _TL_('Ad group report'),\r\n path: 2,\r\n id: 'adgroupreport',\r\n apiKey: 'AdGroupPerformanceReport',\r\n description: {\r\n what: _TL_('The impressions, impression share (%), clicks, spend, and average cost-per-click of your ad groups. This data can be sorted by ad group, ad group status, language, and network.'),\r\n why: _TL_('To more broadly compare delivery performance statistics by ad group, campaign, or account attributes rather than at the keyword level.'),\r\n },\r\n },\r\n {\r\n title: _TL_('See which ads are leading to clicks and conversions.'),\r\n name: ReportType.AdPerformanceReport,\r\n searchAlias: _TL_('Ad report'),\r\n path: 2,\r\n id: 'adreport',\r\n apiKey: 'AdPerformanceReport',\r\n description: {\r\n what: _TL_('The impressions, clicks, spend, and average cost-per-click for each ad. This data can be sorted by ad ID, ad status, ad title, display URL, and destination URL. '),\r\n why: _TL_('To help you determine which ads lead to clicks and conversions, and which are not performing. Having underperforming ads in your account can pull down the quality of your campaigns.'),\r\n },\r\n },\r\n {\r\n title: _TL_('See which keywords are leading to clicks.'),\r\n name: ReportType.KeywordPerformanceReport,\r\n searchAlias: _TL_('Keyword report'),\r\n path: 2,\r\n id: 'keywordreport',\r\n apiKey: 'KeywordPerformanceReport',\r\n description: {\r\n what: _TL_('The impressions, clicks, click-through rate, quality score, bid, cost-per-click, position, and conversions for each individual keyword within your campaign. '),\r\n why: _TL_('To find out which keywords are triggering your ads and getting clicks. You can also identify keywords that aren’t performing well to determine if you want to delete them.'),\r\n },\r\n },\r\n {\r\n title: _TL_('See a set of keyword and negative keyword pairs that are blocking your bids from participating in the auction.'),\r\n name: ReportType.NegativeKeywordConflictReport,\r\n searchAlias: _TL_('Negative keyword conflicts report'),\r\n path: 2,\r\n id: 'negativekeywordconflictreport',\r\n helpId: 'reporting_NkwConflicts',\r\n apiKey: 'NegativeKeywordConflictReport',\r\n description: {\r\n what: _TL_('Negative keywords that conflict with some of your keywords, and block your ad from showing.'),\r\n why: _TL_('This report tells you which keywords and negative keywords are in conflict, and whether the conflict is at the campaign or ad group level. Use this list to figure out which negative keywords to delete.'),\r\n },\r\n },\r\n {\r\n title: _TL_('See which search terms are causing your ads to display.'),\r\n name: ReportType.SearchQueryPerformanceReport,\r\n searchAlias: _TL_('Search term report'),\r\n path: 2,\r\n id: 'searchtermreport',\r\n helpId: 'reporting_SearchTerm',\r\n apiKey: 'SearchQueryPerformanceReport',\r\n description: {\r\n what: _TL_('The impressions, clicks, click-through rate, and average position for search terms that have triggered your ads.'),\r\n why: _TL_('To see what your audience is searching for when your ads are shown. You can use this information to make informed additions, removals, or edits to both your keyword and negative keyword lists.'),\r\n note: _TL_('If you select one or more shopping campaigns, you need to remove the Keyword column before you run this report.'),\r\n },\r\n },\r\n {\r\n title: _TL_('See estimated impressions you might be losing.'),\r\n name: ReportType.ShareOfVoiceReport,\r\n searchAlias: _TL_('Share of voice report'),\r\n path: 2,\r\n id: 'shareofvoicereport',\r\n helpId: 'reporting_SOV',\r\n apiKey: 'ShareOfVoiceReport',\r\n description: {\r\n what: _TL_('The number of times your ad is shown as a percentage of the total available impressions in the marketplace. Along with the impression share you are losing because of insufficient budget, low ad ranking or other reasons. The data is available at the account, campaign, ad group, and keyword levels.'),\r\n why: _TL_('To view the percentage of impression share (%) you have in the marketplace, find out if you are missing opportunities based on your current campaign settings, and make changes to improve impression share. '),\r\n },\r\n },\r\n {\r\n title: _TL_('See how your landing pages are performing.'),\r\n name: ReportType.DestinationURLPerformanceReport,\r\n searchAlias: _TL_('Destination URL report'),\r\n path: 2,\r\n id: 'desturlreport',\r\n apiKey: 'DestinationURLPerformanceReport',\r\n description: {\r\n what: _TL_('The impressions, clicks, spend, and average cost-per-click for your landing pages. This data can be sorted by destination URL, account, campaign, and ad group. Note that only the first URL in the list (ad, keyword or criterion) is reported. '),\r\n why: _TL_('To identify landing pages that met audience expectations, resulting in high click or conversion ratios.'),\r\n },\r\n },\r\n {\r\n title: _TL_('See performance data for both search and content websites where your ads appear.'),\r\n name: ReportType.PublisherUsagePerformanceReport,\r\n searchAlias: _TL_('Website URL (publisher) report'),\r\n path: 2,\r\n id: 'weburlreport',\r\n apiKey: 'PublisherUsagePerformanceReport',\r\n description: {\r\n what: _TL_('The impressions, clicks, spend, and conversions for websites on the Yahoo Microsoft Advertising Network and syndicated search partner networks. This data can be sorted by website URL, account, campaign, and ad group.'),\r\n why: _TL_('To see if any website URLs aren’t performing well enough for your campaign or ad group target settings. For example, if ad impressions at those URLs yield a low click-through-rate, then you might decide to exclude those websites from your campaign.'),\r\n },\r\n },\r\n {\r\n title: _TL_('See which ad text strings are doing well.'),\r\n name: ReportType.AdDynamicTextPerformanceReport,\r\n searchAlias: _TL_('Ad dynamic text report'),\r\n path: 2,\r\n id: 'addynamictextreport',\r\n apiKey: 'AdDynamicTextPerformanceReport',\r\n description: {\r\n what: _TL_('The impressions, clicks, spend, and average cost-per-click of your dynamic text strings. This data can be sorted by ad title, destination URL, param1, param2, and param3.'),\r\n why: _TL_('To identify which dynamic text strings are performing well and which strings you should consider changing.'),\r\n },\r\n },\r\n {\r\n title: _TL_('See how the ad groups that are associated with remarketing lists are performing.'),\r\n name: ReportType.AudiencePerformanceReport,\r\n searchAlias: _TL_('Audiences report'),\r\n path: 2,\r\n id: 'audiencesreport',\r\n apiKey: 'AudiencePerformanceReport',\r\n description: {\r\n what: _TL_('The impressions, clicks, and conversions for your remarketing lists. '),\r\n why: _TL_('To evaluate performance of remarketing campaigns.'),\r\n },\r\n },\r\n {\r\n title: _TL_('See data on how people behave on your website.'),\r\n name: ReportType.GoalsAndFunnelsReport,\r\n searchAlias: _TL_('Goals report'),\r\n path: 2,\r\n id: 'goalsreport',\r\n helpId: 'reporting_CampaignAnalytics',\r\n apiKey: 'GoalsAndFunnelsReport',\r\n description: {\r\n what: _TL_('The conversion data by goal name. This data can be sorted by account, ad group, campaign, keyword, and goal.'),\r\n why: _TL_('To understand which campaigns and keywords are leading users to complete a specific type of conversion action.'),\r\n },\r\n },\r\n {\r\n title: _TL_('See conversion data for your campaigns during a specific time period.'),\r\n name: ReportType.ConversionPerformanceReport,\r\n searchAlias: _TL_('Conversions report'),\r\n path: 2,\r\n id: 'conversionsreport',\r\n helpId: 'reporting_CampaignAnalytics',\r\n apiKey: 'ConversionPerformanceReport',\r\n description: {\r\n what: _TL_('The conversion data which includes conversion counts, assists, revenue, CostPerAssist, and Return on ad spend with other performance data, such as impressions, clicks and spend for your campaigns. This data can be sorted by account, ad group, campaign, keyword, and device type.'),\r\n why: _TL_('To understand which campaigns and keywords are leading customers to complete conversion actions.'),\r\n },\r\n },\r\n ],\r\n title: _TL_('Performance reports give you a closer look at how your campaigns are performing, including details like CTR and impressions.'),\r\n name: _TL_('Performance'),\r\n path: 1,\r\n id: 'performance',\r\n state: {\r\n expanded: true,\r\n },\r\n};\r\n","import { ReportType } from '../../../../i18n-map/report-type';\r\n\r\nexport const extensions = {\r\n children: [\r\n {\r\n title: _TL_('See how your extensions perform for your keywords.'),\r\n name: ReportType.AdExtensionByKeywordReport,\r\n searchAlias: _TL_('Ad extension by keyword report'),\r\n path: 2,\r\n id: 'extensionkeywordreport',\r\n helpId: 'reporting_AdExtension',\r\n apiKey: 'AdExtensionByKeywordReport',\r\n description: {\r\n what: _TL_('The impressions, clicks, and spend of various click types for each keyword when served with different ad extensions. Click types are the different parts of the ad that you can click on.'),\r\n why: _TL_('To understand how different click types are performing for each keyword when different ad extensions are shown in the ad.'),\r\n },\r\n },\r\n {\r\n title: _TL_('See how your extensions perform for your ads.'),\r\n name: ReportType.AdExtensionByAdReport,\r\n searchAlias: _TL_('Ad extension by ad report'),\r\n path: 2,\r\n id: 'extensionadreport',\r\n helpId: 'reporting_AdExtension',\r\n apiKey: 'AdExtensionByAdReport',\r\n description: {\r\n what: _TL_('The impressions, clicks, and spend of various click types for each ad when served with different ad extensions. Click types are the different parts of the ad that you can click on.'),\r\n why: _TL_('To understand how different click types are performing for each ad when the ad is served with different ad extensions.'),\r\n },\r\n },\r\n {\r\n title: _TL_('See how engaging your ad extension items are.'),\r\n name: ReportType.AdExtensionDetailReport,\r\n searchAlias: _TL_('Ad extension details report'),\r\n path: 2,\r\n id: 'adextensiondetailreport',\r\n helpId: 'reporting_AdExtension',\r\n apiKey: 'AdExtensionDetailReport',\r\n description: {\r\n what: _TL_('The impressions, clicks, and spend of various ad extension properties for each ad group when served with different ad extensions.'),\r\n why: _TL_('To understand how different ad extension properties are performing when different ad extensions are shown in the ad.'),\r\n },\r\n },\r\n {\r\n title: _TL_('See duration and phone spend details for each forwarded call.'),\r\n name: ReportType.CallDetailReport,\r\n searchAlias: _TL_('Call forwarding detail report'),\r\n path: 2,\r\n id: 'callforwarddetailreport',\r\n helpId: 'reporting_AdExtension',\r\n apiKey: 'CallDetailReport',\r\n isAllowed: permissions => !!permissions.IsCallMeteringAllowed,\r\n description: {\r\n what: _TL_('The time and duration of each phone call that originated from a call extension for accounts, campaigns, or ad groups.'),\r\n why: _TL_('To understand how the accounts, campaigns, or ad groups are performing with call extensions.'),\r\n },\r\n },\r\n ],\r\n title: _TL_('Ad extension reports give you a closer look at how each ad extension is performing based on click type for ads and keywords and ad extension properties for ad groups.'),\r\n name: _TL_('Ad extensions'),\r\n path: 1,\r\n id: 'extensions',\r\n};\r\n\r\n","import { ReportType } from '../../../../i18n-map/report-type';\r\n\r\nexport const productAds = {\r\n children: [\r\n {\r\n title: _TL_('See the performance of your Product Groups in Shopping campaigns '),\r\n name: ReportType.ProductPartitionPerformanceReport,\r\n searchAlias: _TL_('Product partition report'),\r\n path: 2,\r\n id: 'productpartitionreport',\r\n helpId: 'reporting_ProductAds',\r\n apiKey: 'ProductPartitionPerformanceReport',\r\n isAllowed: permissions => !!permissions.IsEnhancedShoppingCampaignAllowed,\r\n description: {\r\n what: _TL_('The impressions, clicks, spend, average cost-per-click and conversion for each product group in your Shopping campaigns. '),\r\n why: _TL_(' To see the performance data for the product groups in your shopping campaigns and to optimize your campaigns accordingly .'),\r\n },\r\n },\r\n {\r\n title: _TL_('See product partition unit data of your Product Groups in Shopping campaigns'),\r\n name: ReportType.ProductPartitionUnitPerformanceReport,\r\n searchAlias: _TL_('Product partition unit report'),\r\n path: 2,\r\n id: 'productpartitionunitreport',\r\n helpId: 'reporting_ProductAds',\r\n apiKey: 'ProductPartitionUnitPerformanceReport',\r\n description: {\r\n what: _TL_('The impressions, clicks, spend, average cost-per-click, and conversions for each product group in your Shopping campaigns. Depending on the report time and columns you choose, the report may include more than one row per product group. '),\r\n why: _TL_(' To see product partition unit data of your Product Groups in Shopping campaigns.'),\r\n },\r\n },\r\n {\r\n title: _TL_('See the performance of your Products in Shopping campaigns '),\r\n name: ReportType.ProductDimensionPerformanceReport,\r\n searchAlias: _TL_('Product dimension report'),\r\n path: 2,\r\n id: 'productdimensionreport',\r\n helpId: 'reporting_ProductAds',\r\n apiKey: 'ProductDimensionPerformanceReport',\r\n isAllowed: permissions => !!permissions.IsEnhancedShoppingCampaignAllowed,\r\n description: {\r\n what: _TL_('The impressions, clicks, spend, average cost-per-click and conversion for each product in your catalog [ each line item in Microsoft Merchant Center catalog ] '),\r\n why: _TL_('To figure out which of your products are triggering ads and getting most clicks and optimize the ones not performing so well. '),\r\n },\r\n },\r\n {\r\n title: _TL_('See which search terms are causing your ads to display.'),\r\n name: ReportType.ProductSearchQueryPerformanceReport,\r\n searchAlias: _TL_('Product search term report'),\r\n path: 2,\r\n id: 'productsearchtermreport',\r\n helpId: 'reporting_ProductAds',\r\n apiKey: 'ProductSearchQueryPerformanceReport',\r\n description: {\r\n what: _TL_('Impressions, clicks, and other metrics for search terms that have triggered your Product ads. Data from Smart Shopping campaigns is not included in this report.'),\r\n why: _TL_('To see what your audience is searching for when your Product ads are shown.'),\r\n },\r\n },\r\n {\r\n title: _TL_('See how products are distributed acrocss given product tree.'),\r\n name: ReportType.ProductMatchCountReport,\r\n searchAlias: _TL_('Product match count report'),\r\n path: 2,\r\n id: 'productmatchcountreport',\r\n helpId: 'reporting_ProductAds',\r\n apiKey: 'ProductMatchCountReport',\r\n description: {\r\n what: _TL_('The number of products that are matched and targeted at the Campaign, Ad Group, and Product Group level.'),\r\n why: _TL_('To see if you are covering and bidding across your Microsoft shopping campaigns inventory. Note that this only provides the matched data for your current product group within active campaigns, and you cannot obtain historical views.'),\r\n },\r\n },\r\n {\r\n title: _TL_('See a set of negative keyword pairs that are blocking your products from participating in the auction.'),\r\n name: ReportType.ProductNegativeKeywordConflictReport,\r\n searchAlias: _TL_('Product negative keyword conflicts report'),\r\n path: 2,\r\n id: 'productnegativekeywordreport',\r\n helpId: 'reporting_ProductAds',\r\n apiKey: 'ProductNegativeKeywordConflictReport',\r\n description: {\r\n what: _TL_('Shopping negative keywords that conflict with some of your products, and block your ad from showing.'),\r\n why: _TL_('This report tells you which products and negative keywords are in conflict, and whether the conflict is at the campaign or ad group level. Use this list to figure out which negative keywords to delete.'),\r\n },\r\n },\r\n ],\r\n title: _TL_('Product ad reports give you a closer look at how your Bing Shopping campaigns are performing based on product partition and product offer data.'),\r\n name: _TL_('Product ads'),\r\n path: 1,\r\n id: 'productads',\r\n};\r\n","import { ReportType } from '../../../../i18n-map/report-type';\r\n\r\nexport const changeHistory = {\r\n children: [\r\n {\r\n title: _TL_('See a list of changes that have been made to your campaigns.'),\r\n name: ReportType.SearchCampaignChangeHistoryReport,\r\n searchAlias: _TL_('Change history report'),\r\n path: 2,\r\n id: 'changehistoryreport',\r\n helpId: 'reporting_ChangeHistory',\r\n apiKey: 'SearchCampaignChangeHistoryReport',\r\n description: {\r\n what: _TL_('The changes to keyword bids or landing pages, creation of new campaigns, or addition of new budgets.'),\r\n why: _TL_('To discover when changes to an account were made, as well as which user made the changes.'),\r\n },\r\n },\r\n {\r\n title: _TL_('See what changes have been made to individual user profiles in your accounts.'),\r\n name: ReportType.UserRoleChangeHistoryReport,\r\n searchAlias: _TL_('User role change history report'),\r\n path: 2,\r\n id: 'userrolechangehistoryreport',\r\n apiKey: 'UserRoleChangeHistoryReport',\r\n isAllowed: permissions => !!permissions.IsInternalUser,\r\n description: _TL_('See what changes have been made to individual user profiles in your accounts.'),\r\n },\r\n {\r\n title: _TL_('See a list of changes, filtered by user, that shows potentially fraudulent activity.'),\r\n name: ReportType.FraudChangeHistoryReport,\r\n searchAlias: _TL_('Fraud change history report'),\r\n path: 2,\r\n id: 'fraudchangehistoryreport',\r\n apiKey: 'FraudChangeHistoryReport',\r\n isAllowed: permissions => !!permissions.IsInternalUser,\r\n description: _TL_('See a list of changes, filtered by user, that shows potentially fraudulent activity.'),\r\n },\r\n ],\r\n title: _TL_('See the changes that have been made to your campaigns and users within an account, over a period you specify.'),\r\n name: _TL_('Change history'),\r\n path: 1,\r\n id: 'changehistory',\r\n};\r\n\r\n","import { ReportType } from '../../../../i18n-map/report-type';\r\n\r\nexport const targeting = {\r\n children: [\r\n {\r\n title: _TL_('See total impressions and clicks for each campaign or ad group, organized by gender and age group.'),\r\n name: ReportType.AgeGenderAudienceReport,\r\n searchAlias: _TL_('Age and gender report'),\r\n path: 2,\r\n id: 'ageandgenderreport',\r\n apiKey: 'AgeGenderAudienceReport',\r\n description: {\r\n what: _TL_('The impressions, clicks, spend, and average cost-per-click for each ad group, organized by gender and age group.'),\r\n why: _TL_('To discover how your campaigns and ad groups are resonating with different age groups and genders.'),\r\n },\r\n },\r\n {\r\n title: _TL_('See total impressions and clicks for each campaign or ad group, organized by company, industry, and job function.'),\r\n name: ReportType.ProfessionalDemographicsAudienceReport,\r\n searchAlias: _TL_('Professional demographics report'),\r\n path: 2,\r\n id: 'professionaldemographicsreport',\r\n apiKey: 'ProfessionalDemographicsAudienceReport',\r\n isAllowed: permissions =>\r\n !!permissions.IsLinkedInTargetingEnabled ||\r\n !!permissions.IsAIMCampaignEnabled,\r\n description: {\r\n what: _TL_('The impressions, clicks, spend, and average cost-per-click for each ad group, organized by company, industry, and job function. Please note that this report only reflects your Audience Campaign data.'),\r\n why: _TL_('To discover how your campaigns and ad groups are resonating with different companies, industries, and job functions.'),\r\n },\r\n },\r\n {\r\n title: _TL_('See total impressions and clicks for each ad group, organized by the locations where your ads were shown.'),\r\n name: ReportType.UserLocationPerformanceReport,\r\n searchAlias: _TL_('User location report'),\r\n path: 2,\r\n id: 'userlocationreport',\r\n helpId: 'reporting_GEONew',\r\n apiKey: 'UserLocationPerformanceReport',\r\n description: {\r\n what: _TL_('The impressions, clicks, spend, and average cost-per-click for each ad group, organized by city, country, metro area, radius, state, and account.'),\r\n why: _TL_('To see where your traffic is coming from broken out by the physical location and the location people are searching for. You can then validate whether your location targeting strategy is successful, and identify opportunities to improve.'),\r\n },\r\n },\r\n {\r\n title: _TL_('See total impressions and clicks for each ad group, organized by the locations where your ads were shown.'),\r\n name: ReportType.GeographicPerformanceReport,\r\n searchAlias: _TL_('Geographic report'),\r\n path: 2,\r\n id: 'geographicreport',\r\n helpId: 'reporting_GEONew',\r\n apiKey: 'GeographicPerformanceReport',\r\n description: {\r\n what: _TL_('The impressions, clicks, spend, and average cost-per-click for each ad group, organized into columns that show the location used to serve ads.'),\r\n why: _TL_('To see where your traffic is coming from: the physical location of the people searching for your ad or the locations people are searching for. You can then validate whether your location targeting strategy is successful and identify opportunities to improve.'),\r\n },\r\n },\r\n ],\r\n title: _TL_('See how your campaigns are doing among the people and places who are seeing your ads.'),\r\n name: _TL_('Targeting'),\r\n path: 1,\r\n id: 'targeting',\r\n};\r\n","import { ReportType } from '../../../../i18n-map/report-type';\r\n\r\nexport const billingAndBudget = {\r\n children: [\r\n {\r\n title: _TL_('See how you’ve spent your budget over a specific date range.'),\r\n name: ReportType.BudgetSummaryReport,\r\n searchAlias: _TL_('Budget report'),\r\n path: 2,\r\n id: 'budgetreport',\r\n apiKey: 'BudgetSummaryReport',\r\n description: {\r\n what: _TL_('The monthly budget and daily spend organized by accounts and campaigns.'),\r\n why: _TL_('To help control and manage your advertising spend for a particular month.'),\r\n },\r\n },\r\n {\r\n title: _TL_('See your detailed billing history.'),\r\n name: ReportType.CustomerInvoiceReport,\r\n searchAlias: _TL_('Manager account invoice billing report'),\r\n path: 2,\r\n id: 'customerinvoicereport',\r\n apiKey: 'CustomerInvoiceReport',\r\n isAllowed: permissions => !!permissions.IsInternalUser,\r\n description: _TL_('See your detailed billing history.'),\r\n },\r\n {\r\n title: _TL_('See your most recent billing statement.'),\r\n name: ReportType.BillingStatementReport,\r\n searchAlias: _TL_('Billing statement report'),\r\n path: 2,\r\n id: 'billingstatementreport',\r\n apiKey: 'BillingStatementReport',\r\n description: {\r\n what: _TL_('Billing documents, including invoices and credit memos.'),\r\n why: _TL_('To view an overall summary of your billing information.'),\r\n },\r\n },\r\n ],\r\n title: _TL_('See how you are spending your budget, and your most recent billing statement.'),\r\n name: _TL_('Billing and budget'),\r\n path: 1,\r\n id: 'billingandbudget',\r\n};\r\n","import { ReportType } from '../../../../i18n-map/report-type';\r\n\r\nexport const advancedInsights = {\r\n children: [\r\n {\r\n title: _TL_('See how individual accounts are performing with excel charts and graphs'),\r\n name: ReportType['AccountPerformanceReport-SixWeeks'],\r\n searchAlias: _TL_('Account - 6 weeks report'),\r\n path: 2,\r\n id: 'sixweekaccountactivityreport',\r\n apiKey: 'AccountPerformanceReport-SixWeeks',\r\n isAllowed: permissions => !!permissions.IsInternalUser,\r\n description: _TL_('See how individual accounts are performing with excel charts and graphs'),\r\n },\r\n {\r\n title: _TL_('See how individual accounts are performing with excel charts and graphs'),\r\n name: ReportType['AccountPerformanceReport-TwoMonths'],\r\n searchAlias: _TL_('Account - 2 months (MoM) report'),\r\n path: 2,\r\n id: 'twomonthaccountactivityreport',\r\n apiKey: 'AccountPerformanceReport-TwoMonths',\r\n isAllowed: permissions => !!permissions.IsInternalUser,\r\n description: _TL_('See how individual accounts are performing with excel charts and graphs'),\r\n },\r\n {\r\n title: _TL_('See how individual accounts are performing with excel charts and graphs'),\r\n name: ReportType['AccountPerformanceReport-TwoYears'],\r\n searchAlias: _TL_('Account - 2 years (YoY) report'),\r\n path: 2,\r\n id: 'twoyearaccountactivityreport',\r\n apiKey: 'AccountPerformanceReport-TwoYears',\r\n isAllowed: permissions => !!permissions.IsInternalUser,\r\n description: _TL_('See how individual accounts are performing with excel charts and graphs'),\r\n },\r\n {\r\n title: _TL_('See estimated impressions you might be losing.'),\r\n name: ReportType['AccountPerformanceReport-ShareOfVoice'],\r\n searchAlias: _TL_('Account - Share of voice report'),\r\n path: 2,\r\n id: 'advancedinsightsshareofvoicereport',\r\n apiKey: 'AccountPerformanceReport-ShareOfVoice',\r\n isAllowed: permissions => !!permissions.IsInternalUser,\r\n description: {\r\n what: _TL_('The impressions, impression share (%), impression share lost to budget (%), and impression share lost to bid. This data can be sorted by keyword, keyword ID, landing page experience, and quality score.'),\r\n why: _TL_('To view impression share (%) of successful bids for each keyword, and identify opportunities to increase impression share.'),\r\n },\r\n },\r\n ],\r\n title: _TL_('Find advanced insights into how your advertisers are performing'),\r\n name: _TL_('Advanced insights'),\r\n path: 1,\r\n id: 'advancedinsights',\r\n isAllowed: permissions => !!permissions.IsInternalUser,\r\n};\r\n","import { ReportType } from '../../../../i18n-map/report-type';\r\n\r\nexport const dynamicSearch = {\r\n children: [\r\n {\r\n title: _TL_('See the clicks, impressions, and other performance metrics of each of your dynamic ad targets.'),\r\n name: ReportType.DSAAutoTargetPerformanceReport,\r\n searchAlias: _TL_('Dynamic search ad auto target report'),\r\n path: 2,\r\n id: 'dsadautotargetreport',\r\n helpId: 'reporting_DynamicSearchAds',\r\n apiKey: 'DSAAutoTargetPerformanceReport',\r\n isAllowed: permissions => !!permissions.IsDynamicSearchAdsV1Enabled,\r\n description: {\r\n what: _TL_('The clicks, impressions, and other performance metrics of each of your dynamic ad targets.'),\r\n why: _TL_('To understand how your dynamic ad targets are performing and where bid adjustments may be useful.'),\r\n },\r\n },\r\n {\r\n title: _TL_('See the clicks, impressions, and other performance generated from your website.'),\r\n name: ReportType.DSACategoryPerformanceReport,\r\n searchAlias: _TL_('Dynamic search ad category report'),\r\n path: 2,\r\n id: 'dsadcategoryreport',\r\n helpId: 'reporting_DynamicSearchAds',\r\n apiKey: 'DSACategoryPerformanceReport',\r\n isAllowed: permissions => !!permissions.IsDynamicSearchAdsV1Enabled,\r\n description: {\r\n what: _TL_('The clicks, impressions, and other performance generated from your website.'),\r\n why: _TL_('To check the performance of your existing category targets or to find new categories worth targeting. '),\r\n },\r\n },\r\n {\r\n title: _TL_('See search terms that triggered your dynamic search ads and their corresponding headlines, final URLs, and associated performance metrics.'),\r\n name: ReportType.DSASearchQueryPerformanceReport,\r\n searchAlias: _TL_('Dynamic search ad search term report'),\r\n path: 2,\r\n id: 'dsadsearchtermreport',\r\n helpId: 'reporting_DynamicSearchAds',\r\n apiKey: 'DSASearchQueryPerformanceReport',\r\n isAllowed: permissions => !!permissions.IsDynamicSearchAdsV1Enabled,\r\n description: {\r\n what: _TL_('Search terms that triggered your dynamic search ads and their corresponding headlines, final URLs, and associated performance metrics.'),\r\n why: _TL_(\"To see how your ads perform against search terms. The data can help you find negative keywords (so that you're not spending money targeting the wrong customer), as well as the right keywords that create conversions. \"),\r\n },\r\n },\r\n ],\r\n title: _TL_('Dynamic search ads reports allow you to see a holistic view of your campaigns’ dynamic ad target, category, and search term performance.'),\r\n name: _TL_('Dynamic search ads'),\r\n path: 1,\r\n id: 'dynamicsearch',\r\n isAllowed: permissions => !!permissions.IsDynamicSearchAdsV1Enabled,\r\n};\r\n","import _ from 'underscore';\r\nimport { ReportListDataFactory } from './report-list-data-factory';\r\nimport { reportsTree } from './reports';\r\n\r\nexport class ReportList {\r\n constructor(permissions, log, cid, uid, i18n, routePrefix) {\r\n if (!_.isObject(log)) {\r\n throw new Error('PathProvider: log provided is not an Object');\r\n }\r\n\r\n this.log = log;\r\n this.isValidCategoryId = this.isValidCategoryId.bind(this);\r\n this.isValidCreateReportId = this.isValidCreateReportId.bind(this);\r\n\r\n if (ReportList.reportListData != null) { return; }\r\n const dataFactory = new ReportListDataFactory(\r\n reportsTree.get(i18n, routePrefix, uid, cid),\r\n permissions,\r\n log,\r\n cid,\r\n uid,\r\n routePrefix\r\n );\r\n ReportList.reportListData = dataFactory.fetchData();\r\n }\r\n\r\n static reportListData\r\n\r\n isValidCreateReportId(id) {\r\n if (!_.isString(id)) {\r\n this.log\r\n .Error(`PathProvider:isValidCreateReportId - supplied id to isValidCreateReportId is a ${typeof id}`);\r\n return false;\r\n }\r\n\r\n const { reportListData } = ReportList;\r\n const lowerCaseId = id.toLowerCase();\r\n return !!reportListData.validCreateReportIds[lowerCaseId];\r\n }\r\n\r\n isValidCategoryId(id) {\r\n if (!_.isString(id)) {\r\n this.log\r\n .Error(`PathProvider:isValidCategoryId - supplied id to isValidCategoryId is a ${typeof id}`);\r\n return false;\r\n }\r\n\r\n const { reportListData } = ReportList;\r\n const lowerCaseId = id.toLowerCase();\r\n return !!reportListData.validCategoryIds[lowerCaseId];\r\n }\r\n\r\n\r\n getUsersReportsTree() {\r\n const { reportListData } = ReportList;\r\n return reportListData.reportsTree;\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\nimport { withPermissionContext } from '../permission-provider';\r\nimport { ReportList } from './report-list/report-list';\r\n\r\n\r\nexport const ReportListContext = React.createContext('');\r\n\r\nexport class ReportListServiceBase extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n const reportList = new ReportList(\r\n this.props.permissions,\r\n {},\r\n this.props.cid,\r\n this.props.uid,\r\n this.props.i18n,\r\n this.props.routePrefix\r\n );\r\n const reportsTree = reportList.getUsersReportsTree();\r\n const reports = {};\r\n _.each(\r\n reportsTree.children,\r\n (child) => {\r\n _.each(\r\n child.children,\r\n (leaf) => {\r\n reports[leaf.id] = leaf;\r\n }\r\n );\r\n }\r\n );\r\n this.state = {\r\n context: {\r\n /**\r\n * reportsTree is the graph of reports and categories\r\n * reports is the list of reports keyed by id\r\n */\r\n reportsTree,\r\n reports,\r\n isValidCreateReportId: id => reportList.isValidCreateReportId(id),\r\n isValidCategoryId: id => reportList.isValidCategoryId(id),\r\n },\r\n };\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n {this.props.children}\r\n );\r\n }\r\n}\r\n\r\nReportListServiceBase.propTypes = {\r\n /**\r\n * Content rendered in the body\r\n */\r\n children: PropTypes.node.isRequired,\r\n\r\n /**\r\n * Localization module\r\n */\r\n i18n: PropTypes.shape({ getString: PropTypes.func }).isRequired,\r\n\r\n /**\r\n * Customer Id\r\n */\r\n cid: PropTypes.number.isRequired,\r\n\r\n /**\r\n * User Id\r\n */\r\n uid: PropTypes.number.isRequired,\r\n\r\n /**\r\n * Permissions\r\n */\r\n permissions:\r\n PropTypes.shape({}).isRequired,\r\n\r\n routePrefix: PropTypes.string.isRequired,\r\n};\r\n\r\nconst ReportListServiceWithI18n = withI18nConsumer(ReportListServiceBase);\r\nexport const ReportListService = withPermissionContext(ReportListServiceWithI18n);\r\n\r\n","import React from 'react';\r\nimport { ReportListContext } from './report-list-service';\r\n\r\nexport const withReportListContext = AReactComponent => (props => (\r\n \r\n {\r\n context => \r\n }\r\n ));\r\n","import React from 'react';\r\n\r\nconst ServicesEndpointsContext = React.createContext('');\r\n\r\nexport const ServicesEndpointsProvider = ServicesEndpointsContext.Provider;\r\n\r\nexport function withServicesEndpointsConsumer(AReactComponent) {\r\n return function ComponentWithServicesEndpoints(props) {\r\n return (\r\n \r\n {\r\n value => \r\n }\r\n \r\n );\r\n };\r\n}\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport { withScope } from '@bingads-webui-react/scope-service';\r\nimport { JsDataLightWithScopePath } from '../../odata-abstraction/js-data-light-with-scope-path';\r\nimport { withPermissionContext } from '../permission-provider';\r\nimport { modeEnum } from './modes';\r\n\r\nexport const Mode = React.createContext(modeEnum.PRIVATE);\r\n\r\nfunction ModeUpdater({ scope, permissions }) {\r\n const type = _.chain(scope).result('values').result('type', '').value();\r\n const { IsReportsMergeEnabled } = permissions;\r\n\r\n let mode = IsReportsMergeEnabled ?\r\n modeEnum.SHARED :\r\n modeEnum.PRIVATE;\r\n\r\n if (type.toLowerCase() === 'reportuitemplate') {\r\n mode = modeEnum.PRIVATE;\r\n }\r\n\r\n JsDataLightWithScopePath.updateMode(mode);\r\n\r\n return false;\r\n}\r\n\r\nModeUpdater.propTypes = {\r\n scope: PropTypes.shape({}).isRequired,\r\n permissions:\r\n PropTypes.shape({}).isRequired,\r\n};\r\n\r\n\r\nconst Wrapped = withPermissionContext(withScope(ModeUpdater));\r\nexport { Wrapped as ModeUpdater };\r\n\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { ReportRepository } from './report-repository';\r\nimport { PermissionProvider } from './permission-provider';\r\nimport { ReportListService } from './report-list-service';\r\nimport { ServicesEndpointsProvider } from './services-endpoints';\r\nimport { ModeUpdater } from './mode-updater';\r\n\r\nexport const ContextProviders = props => (\r\n \r\n \r\n \r\n \r\n \r\n {props.children}\r\n \r\n \r\n \r\n );\r\n\r\n\r\nContextProviders.propTypes = {\r\n\r\n permissions:\r\n PropTypes.shape({}).isRequired,\r\n\r\n servicesEndpoints: PropTypes.objectOf(PropTypes.string).isRequired,\r\n\r\n children: PropTypes.node.isRequired,\r\n\r\n cid: PropTypes.number.isRequired,\r\n\r\n uid: PropTypes.number.isRequired,\r\n\r\n prefetchedData: PropTypes.shape({\r\n History: PropTypes.shape({\r\n value: PropTypes.array,\r\n }),\r\n CustomReports: PropTypes.shape({\r\n value: PropTypes.array,\r\n }),\r\n }),\r\n\r\n routePrefix: PropTypes.string.isRequired,\r\n};\r\n\r\nContextProviders.defaultProps = {\r\n prefetchedData: {\r\n History: {\r\n value: [],\r\n },\r\n CustomReports: {\r\n value: [],\r\n },\r\n },\r\n};\r\n","\r\nimport React from 'react';\r\n\r\nexport const LegacyDepsContext = React.createContext('');\r\n\r\n\r\nexport const withLegacyDeps = AReactComponent => (props => (\r\n \r\n {\r\n context => \r\n }\r\n ));\r\n","export const theme = {\r\n components: {\r\n blockUi: {\r\n reactBlockUi: {\r\n minHeight: 'unset',\r\n },\r\n },\r\n },\r\n core: {\r\n color: {\r\n light: {\r\n white: '#ffffff',\r\n gray10: '#f7f9f8',\r\n gray20: '#f9f9f9',\r\n gray30: '#f5f5f5',\r\n gray40: '#f4f4f4',\r\n gray50: '#ececec',\r\n gray60: '#dddddd',\r\n gray70: '#cccccc',\r\n },\r\n },\r\n palette: {\r\n neutralPrimary: '#323130',\r\n neutralSecondary: '#605e5c',\r\n },\r\n },\r\n};\r\n\r\n","import { ThemeFluent, ComponentSettings } from '@bingads-webui-theme-2018/theme-fluent';\r\nimport { theme as reportingTheme } from '@bingads-webui-campaign/report-shared';\r\nimport { merge } from '@bingads-webui-universal/primitive-utilities';\r\n\r\nexport const reportVnextTheme = {\r\n core: merge(\r\n { isUIVnext: true },\r\n ThemeFluent,\r\n reportingTheme.core\r\n ),\r\n components: merge(\r\n {},\r\n ComponentSettings,\r\n reportingTheme.components\r\n ),\r\n};\r\n","/* eslint-disable no-restricted-globals */\r\n// @ts-ignore\r\nimport { IDataStore } from '@bingads-webui-cc-react/js-data-rest';\r\nimport { AccountCampaignDataStore } from './account-campaign-data-store';\r\nimport { ClassNames, Ii18n } from '../double-list/double-list.types';\r\nimport { SelectorOption, SelectorExpandableOption } from '../double-list';\r\n\r\nexport interface IFeaturePilots {\r\n IsReportingUINewDesignEnabled: boolean,\r\n}\r\n\r\nexport interface IAccountCampaignSelectorProps {\r\n featurePilots: IFeaturePilots;\r\n ccBaseUrl: string;\r\n ccToken: string;\r\n customerId: string;\r\n userId: string;\r\n accountId?: string;\r\n i18n: Ii18n;\r\n odataURI: string;\r\n allSelected: boolean;\r\n isCreateSimilar: boolean;\r\n onSelectedChange: (value: RdsSelected, addtionInfo?: { searchHistorySelectorOptions?: SelectorOption[] }) => void;\r\n defaultSelected: RdsSelected,\r\n forceAccountScope: boolean;\r\n scopeFilterLevel: string;\r\n isInternalReport?: boolean;\r\n hideRadioButtons?: boolean;\r\n finishedLoading?: () => void;\r\n classes: ClassNames;\r\n isReportingUIPhaseNext?: boolean;\r\n ccJsData?: IDataStore;\r\n searchHistorySelectorOptions?: SelectorOption[];\r\n hideAccountSearchBar?: boolean;\r\n hideAccountNodeArrow?: boolean;\r\n customFetchAndBuildCampaignOptionList?: (rootOption: SelectorExpandableOption) => Promise;\r\n customFetchAndBuildAccountOptionList?: (rootOption: SelectorExpandableOption) => Promise;\r\n}\r\n\r\nexport interface IAccountCampaignSelectorInternalProps extends IAccountCampaignSelectorProps {\r\n store: AccountCampaignDataStore;\r\n}\r\n\r\nexport type RdsSelected = {\r\n allSelected: boolean,\r\n AccountIds: number[],\r\n CustomerScopes: number[],\r\n CampaignReportScopes: CampaignReportScopeType[],\r\n};\r\n\r\nexport type CampaignReportScopeType = {\r\n AccountId: number,\r\n CampaignId: number,\r\n};\r\n\r\ndeclare global {\r\n function _TL_(str: string): string;\r\n}\r\n\r\nexport enum AccountCampaignContainerType {\r\n customerAccount = 'customerAccount',\r\n campaign = 'campaign'\r\n}\r\n\r\nexport enum AccountCampaignOptionType {\r\n customer = 'customer',\r\n account = 'account',\r\n campaign = 'campaign'\r\n}\r\n\r\nexport enum ScopeFilterLevelType {\r\n Customer = 'Customer',\r\n Account = 'Account',\r\n Campaign = 'Campaign'\r\n}\r\n\r\nexport enum ScopeSelectorLevelType {\r\n Customer = 'Customer',\r\n Account = 'Account',\r\n}\r\n\r\nexport enum FilterKeyType {\r\n customer = 'f:cust',\r\n account = 'f:acct',\r\n campaign = 'f:cmp',\r\n undeterminedAccounts = 'undeterminedAccounts'\r\n}\r\n\r\nexport interface IFilter {\r\n FilterKey: FilterKeyType;\r\n Values: string[];\r\n}\r\n\r\nexport interface ISearchAccount {\r\n accountId: number;\r\n accountName: string;\r\n status: string;\r\n advertiserCustomerName: string;\r\n}\r\n\r\nexport interface ISearchCustomer {\r\n advertiserCustomerId: number;\r\n advertiserCustomerName: string;\r\n status: string;\r\n serviceLevel: string;\r\n}\r\n\r\ninterface statusMap {\r\n [key: string]: string;\r\n}\r\n\r\n// eslint-disable-next-line no-redeclare\r\nexport const statusMap: statusMap = {\r\n Active: _TL_('Active'),\r\n Inactive: _TL_('Inactive'),\r\n};\r\n","import { IPaginationParams } from './double-list.types';\r\n/**\r\n * Normal selectorOption type\r\n */\r\n\r\nexport interface SelectorOptionRestParams {\r\n unAuthorized?: boolean;\r\n childFetched?: boolean;\r\n expanded?: boolean;\r\n optionType?: string;\r\n childPagination?: IPaginationParams;\r\n extra?: any;\r\n disabled?: boolean;\r\n visible?: any;\r\n number?: string;\r\n}\r\n\r\nexport class SelectorOption {\r\n id: string;\r\n name: string;\r\n // The option type mapping to business entity\r\n optionType: string;\r\n children: Array; // only tree need that\r\n parent?: SelectorOption;\r\n childFetched: boolean;\r\n extra: any;\r\n state: any;\r\n deepness: number;\r\n key: string;\r\n isSelected: boolean;\r\n visible: boolean;\r\n disabled: boolean;\r\n number: string;\r\n unAuthorized: boolean;\r\n\r\n constructor(id: string, name: string, rest: SelectorOptionRestParams = {}) {\r\n this.childFetched = rest.childFetched || false;\r\n this.children = [];\r\n this.name = name;\r\n this.optionType = rest.optionType || '++';\r\n this.id = id;\r\n this.state = {\r\n expanded: true,\r\n };\r\n\r\n if (rest.expanded !== undefined) {\r\n this.state.expanded = rest.expanded;\r\n }\r\n this.number = rest.number || '';\r\n this.extra = rest.extra || undefined;\r\n this.unAuthorized = !!rest.unAuthorized;\r\n this.deepness = 0;\r\n this.key = `${this.optionType}-${this.id}`;\r\n this.isSelected = false;\r\n this.disabled = rest.disabled || false;\r\n if (rest.visible != null || rest.visible !== undefined) {\r\n this.visible = rest.visible;\r\n } else {\r\n this.visible = true;\r\n }\r\n }\r\n\r\n addChild(option: SelectorOption, childFetched: boolean = true) {\r\n option.parent = this;\r\n this.children.push(option);\r\n this.childFetched = childFetched;\r\n option.updateDeepness(this.deepness + 1);\r\n\r\n return this;\r\n }\r\n\r\n resetChildren() {\r\n this.children = [];\r\n this.childFetched = false;\r\n }\r\n\r\n updateDeepness(deepness: number) {\r\n this.deepness = deepness;\r\n this.children.forEach((child: SelectorOption) => {\r\n child.updateDeepness(deepness + 1);\r\n });\r\n }\r\n\r\n /**\r\n * visit this tree in mid children order\r\n * @param option the tree to visit\r\n * @param visitSeq the exsiting visit seq\r\n * @returns the visit seq\r\n */\r\n midTraverseTree(visitSeq: SelectorOption[] = []): SelectorOption[] {\r\n visitSeq.push(this);\r\n this.children.filter(item => !!item).forEach(o => o.midTraverseTree(visitSeq));\r\n\r\n return visitSeq;\r\n }\r\n\r\n find(predicate: (o: SelectorOption) => boolean): SelectorOption | undefined {\r\n if (predicate(this)) {\r\n return this;\r\n }\r\n for (let i = 0; i < this.children.length; i++) {\r\n const res = this.children[i].find(predicate);\r\n if (res) {\r\n return res;\r\n }\r\n }\r\n return undefined;\r\n }\r\n}\r\n\r\n/**\r\n * Root option of one container start to render\r\n */\r\nexport class SelectorExpandableOption extends SelectorOption {\r\n // children data pagination, if false means there is no need to do pagination\r\n childPagination?: IPaginationParams | boolean;\r\n\r\n // use cotainerKey to find corresponding containerConfig and render that container\r\n containerKey: string;\r\n\r\n constructor(id: string, name: string, containerKey: string, rest: SelectorOptionRestParams = {}) {\r\n super(id, name, rest);\r\n this.containerKey = containerKey;\r\n this.childPagination = rest.childPagination || false;\r\n }\r\n\r\n updateChildPagination(childPagination: IPaginationParams | boolean) {\r\n this.childPagination = childPagination;\r\n }\r\n}\r\n\r\nexport class SelectorRootOption extends SelectorExpandableOption {\r\n isRoot: boolean;\r\n constructor(containerKey: string, id = 'root', name = 'root', rest: SelectorOptionRestParams = {}) {\r\n super(id, name, containerKey, rest);\r\n this.isRoot = true;\r\n }\r\n}\r\n","import { ReactNode, ComponentClass } from 'react';\r\nimport { SelectorOption, SelectorExpandableOption } from './selector-option';\r\n\r\nexport interface IDoubleListProps {\r\n // customized selectBox component\r\n selectorBox: ComponentClass;\r\n\r\n // customized resultBox component\r\n resultBox: ComponentClass;\r\n\r\n // when user click add, remove, addAll, removeAll\r\n onChange?: (selected: SelectorOption[]) => void;\r\n\r\n // selected map\r\n defaultSelectedOptions: SelectorOption[];\r\n\r\n rootOption: SelectorExpandableOption; // | Promise;\r\n\r\n // in multi columns container, just pass expandableOptionList init each container to render in each col\r\n defaultVisibleExpandableOptionList: SelectorExpandableOption[];\r\n\r\n // render the selectorBox and stick to one container config\r\n selectorBoxConfig: ISelectorContainerConfig;\r\n\r\n // key -> SelectorContainer, used during container rendering\r\n containerMap: SelectorContainerMap;\r\n\r\n classNames: {\r\n [key: string]: string;\r\n };\r\n i18n: Ii18n;\r\n onVisibleExpandableOptionChange?: (optionList: SelectorExpandableOption[]) => void;\r\n scopeFilterLevel?: string;\r\n hideAccountSearchBar? : boolean;\r\n hideAccountNodeArrow? : boolean;\r\n}\r\n\r\n/**\r\n * @interface SelectorContainerMap is\r\n */\r\nexport interface SelectorContainerMap {\r\n [key: string]: ISelectorContainerConfig;\r\n}\r\n\r\nexport interface IRenderSelectorNodeOps {\r\n onAdd: (selected: SelectorOption[] | SelectorOption) => void;\r\n onRemove: (unselected: SelectorOption[] | SelectorOption) => void;\r\n}\r\n\r\nexport interface Ii18n {\r\n getString: (str: string) => string;\r\n}\r\nexport interface ClassNames {\r\n [key: string]: any;\r\n}\r\n\r\nexport type RenderSelectorItemFunc = (\r\n option: SelectorOption,\r\n ops: IRenderSelectorNodeOps,\r\n config: ISelectorContainerConfig,\r\n i18n: Ii18n,\r\n classes: ClassNames,\r\n hideAccountNodeArrow?: boolean,\r\n) => ReactNode;\r\n\r\n/**\r\n * @interface SelectorContainer is bundle of rendering, navigation, filter functions and attrs\r\n * Here do one assumption that data under one contaienr is with the same business logic\r\n */\r\nexport interface ISelectorContainerConfig {\r\n // container key used to identify\r\n containerKey: string;\r\n scopeFilterLevel?: string;\r\n isInternalReport?: boolean;\r\n isReportingUIPhaseNext?: boolean;\r\n scopeSelectorLevel?: string;\r\n\r\n // cotainer view type used to render\r\n containerViewType: SelectorContainerViewType;\r\n\r\n renderSelectorNode?: RenderSelectorItemFunc;\r\n renderSelectorHeader?: RenderSelectorItemFunc;\r\n\r\n onQueryCampaignChange: (searchTerm: string) => void;\r\n\r\n onQueryCustomerAccountChange: (searchTerm: string) => void;\r\n // user click search button to search account\r\n onSearchCustomerAccount: (searchText: string) => void;\r\n\r\n onSearchCampaign: (searchText: string) => void;\r\n\r\n onClearSearchCustomerAccount: () => void;\r\n\r\n onClearSearchCampaign: () => void;\r\n\r\n onSelectScopeLevel: (scopeLevel: string) => void;\r\n\r\n // on user filter change\r\n onFilterChange?: (params: any) => void;\r\n\r\n // When user click next page or previous page, load that page data, according to SelectorContainerOption according to that container\r\n onPageChange?: (option: SelectorExpandableOption, pageNumber: number) => void;\r\n\r\n // When user click selectorNode, if the child data is not fetched, loadData will be called to load children data for current node\r\n loadData?: (selectorOption?: SelectorOption) => void;\r\n\r\n // Filter local options according to search keyword\r\n localFilter?: (option: SelectorOption) => boolean;\r\n searchTerm: string,\r\n customerAccountSearchStr: string,\r\n campaignSearchStr: string,\r\n // container from left to right, row add 1, such as 0 1 2\r\n // container do drill down, col add 1, such as 0 1 2\r\n coordinate: {\r\n row: number;\r\n col: number;\r\n };\r\n\r\n // height of container, overflow will be scrolled\r\n containerHeight: number;\r\n rowHeight: number;\r\n isLoading: boolean;\r\n}\r\n\r\nexport interface ISelectorContainerProps {\r\n containerConfig: ISelectorContainerConfig;\r\n rootOption: SelectorExpandableOption;\r\n onAdd: (values: SelectorOption[] | SelectorOption) => void;\r\n isSelected: (option: SelectorOption) => boolean;\r\n onRemove: (values: SelectorOption[] | SelectorOption) => void;\r\n i18n: Ii18n;\r\n classNames: {\r\n [key: string]: any;\r\n };\r\n hideAccountNodeArrow?: boolean;\r\n}\r\n\r\nexport interface ISelectContainerHeaderProps extends IDoubleListProps {\r\n CascaderContainerConfig: ISelectorContainerConfig;\r\n}\r\n\r\nexport interface ISelectorBoxProps extends IDoubleListProps {}\r\n\r\nexport interface IResultBoxProps extends IDoubleListProps {\r\n isReportingUIPhaseNext: boolean;\r\n removeAll: () => void;\r\n selected: SelectorOption[];\r\n onRemove: (option: SelectorOption[] | SelectorOption) => void;\r\n}\r\n\r\nexport interface ISelectorProps extends IDoubleListProps {\r\n onAdd: (values: SelectorOption[] | SelectorOption) => void;\r\n isSelected: (option: SelectorOption) => boolean;\r\n onRemove: (option: SelectorOption[] | SelectorOption) => void;\r\n refresh: number;\r\n}\r\n\r\nexport interface IResultListProps extends IDoubleListProps {\r\n removeAll: () => void;\r\n onRemove?: (values: SelectorOption[] | SelectorOption) => void;\r\n}\r\n\r\nexport interface IResultNodeProps {\r\n onRemove?: (values: SelectorOption[] | SelectorOption) => void;\r\n option: SelectorOption;\r\n}\r\n\r\nexport interface ISelectorNodeProps {\r\n onAdd?: (values: SelectorOption[] | SelectorOption) => void;\r\n option: SelectorOption;\r\n isSelected: boolean;\r\n}\r\n\r\nexport interface ISelectorHeaderProps {\r\n option: SelectorExpandableOption;\r\n onAdd?: (values: SelectorOption[] | SelectorOption) => void;\r\n}\r\n\r\nexport interface IPaginationParams {\r\n currentPage: number;\r\n totalPage: number;\r\n pageSize: number;\r\n}\r\n\r\nexport enum SelectorContainerViewType {\r\n tree = 'tree',\r\n list = 'list'\r\n}\r\n\r\nexport interface IListNodeProps extends ISelectorNodeProps {}\r\nexport interface ITreeNodeProps extends ISelectorNodeProps {}\r\nexport interface ISelectorTreeProps extends ISelectorContainerProps {}\r\nexport interface ISelectorListProps extends ISelectorContainerProps {}\r\n","import jss from 'jss';\r\n// @ts-ignore\r\nimport preset from 'jss-preset-default';\r\n\r\ninterface IStyleParams {\r\n [key: string]: any;\r\n}\r\njss.setup(preset() as any);\r\n\r\nexport function buildSelectorTreeStyles(params: IStyleParams) {\r\n const styles = {\r\n selectorTree: {\r\n height: params.selectorTreeHeight,\r\n margin: 'auto',\r\n padding: '10px 0',\r\n },\r\n };\r\n\r\n const { classes } = jss.createStyleSheet(styles).attach();\r\n return classes;\r\n}\r\n\r\nexport function buildSelectorListStyles(params: IStyleParams) {\r\n const styles = {\r\n selectorList: {\r\n height: params.selectorListHeight,\r\n margin: 'auto',\r\n padding: '10px 0',\r\n overflow: 'auto',\r\n },\r\n };\r\n\r\n const { classes } = jss.createStyleSheet(styles).attach();\r\n return classes;\r\n}\r\n\r\nconst styles = {\r\n selectorContainerHidden: {\r\n display: 'none',\r\n },\r\n isSelected: {\r\n color: 'gray',\r\n },\r\n selectorTreeExpandIcon: {\r\n verticalAlign: 'sub',\r\n float: 'left',\r\n marginTop: 3,\r\n marginRight: 4,\r\n },\r\n};\r\n\r\nconst { classes } = jss.createStyleSheet(styles as any).attach();\r\nexport default classes;\r\n","import React, { Component, ReactNode } from 'react';\r\nimport { TreeView, ExpandableNode, Node, IFlattenedNode } from '@bingads-webui-react/tree-view';\r\nimport { ISelectorTreeProps, RenderSelectorItemFunc } from './double-list.types';\r\nimport { SelectorOption, SelectorExpandableOption } from './selector-option';\r\nimport classes, { buildSelectorTreeStyles } from './styles';\r\n\r\ninterface ISelectorTreeState {\r\n refresh: number;\r\n}\r\n\r\ninterface INodeCache {\r\n [key: string]: Node;\r\n}\r\n\r\nexport default class SelectorTree extends Component {\r\n private rootNode: Node;\r\n private classes: any;\r\n private nodeCache: INodeCache;\r\n\r\n constructor(props: ISelectorTreeProps) {\r\n super(props);\r\n this.nodeCache = {};\r\n this.rootNode = {} as Node;\r\n this.state = {\r\n refresh: 0,\r\n };\r\n }\r\n\r\n onChange = (nodes: Node[]) => {\r\n this.rootNode.children = nodes;\r\n this.setState({\r\n refresh: this.state.refresh + 1,\r\n });\r\n };\r\n\r\n render() {\r\n this.rebuildNodeTreeIncrementally();\r\n return (\r\n \r\n );\r\n }\r\n\r\n /**\r\n * tree node renderer\r\n * @param node data node to render\r\n * @param rest rest params\r\n */\r\n nodeRenderer = (node: IFlattenedNode, rest: any) => {\r\n let selectorNode: ReactNode;\r\n let renderSelectorNode: RenderSelectorItemFunc;\r\n\r\n if (this.props.containerConfig.renderSelectorNode) {\r\n renderSelectorNode = this.props.containerConfig.renderSelectorNode;\r\n } else {\r\n throw new Error('containerConfig.renderSelectorNode should not be null');\r\n }\r\n\r\n const { option } = node;\r\n if (this.props.isSelected(option)) {\r\n option.isSelected = true;\r\n } else {\r\n option.isSelected = false;\r\n }\r\n\r\n // eslint-disable-next-line prefer-const\r\n selectorNode = renderSelectorNode(\r\n option,\r\n {\r\n onAdd: this.props.onAdd,\r\n onRemove: this.props.onRemove,\r\n },\r\n this.props.containerConfig,\r\n this.props.i18n,\r\n this.props.classNames,\r\n this.props.hideAccountNodeArrow\r\n );\r\n\r\n return (\r\n
\r\n \r\n
{selectorNode}
\r\n
\r\n
\r\n );\r\n };\r\n\r\n /**\r\n * Travel rootOptions and build corresponding node tree, the node tree built will be used to store tree state\r\n */\r\n buildNodeTree(option: SelectorOption): Node | undefined {\r\n if (!option.visible) {\r\n return undefined;\r\n }\r\n\r\n const node = this.buildNode(option);\r\n if (!(option instanceof SelectorExpandableOption && option !== this.props.rootOption)) {\r\n const children = option.children\r\n // eslint-disable-next-line @typescript-eslint/no-shadow\r\n .map((option) => {\r\n return this.buildNodeTree(option);\r\n })\r\n .filter(v => v !== undefined) as Node[];\r\n node.children = children;\r\n }\r\n\r\n return node;\r\n }\r\n\r\n buildNode(option: SelectorOption): Node {\r\n if (this.nodeCache[option.key]) {\r\n const node = this.nodeCache[option.key];\r\n node.option = option;\r\n return node;\r\n }\r\n const key = `${option.optionType}-${option.id}`;\r\n const node: Node = {\r\n id: option.id,\r\n key,\r\n name: option.name,\r\n state: {\r\n expanded: option.state && option.state.expanded,\r\n },\r\n option,\r\n };\r\n return node;\r\n }\r\n\r\n rebuildNodeTreeIncrementally() {\r\n this.nodeCache = {};\r\n this.buildNodeCache(this.rootNode);\r\n this.rootNode = this.buildNodeTree(this.props.rootOption) as Node;\r\n this.classes = buildSelectorTreeStyles({\r\n selectorTreeHeight: this.props.containerConfig.containerHeight,\r\n });\r\n }\r\n\r\n buildNodeCache(node: IFlattenedNode) {\r\n this.nodeCache[node.key] = node;\r\n if (node.children) {\r\n for (let i = 0; i < node.children.length; i++) {\r\n this.buildNodeCache(node.children[i]);\r\n }\r\n }\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\nimport { List, AutoSizer, ListRowProps } from 'react-virtualized';\r\nimport { SelectorOption } from './selector-option';\r\nimport { ISelectorListProps, RenderSelectorItemFunc } from './double-list.types';\r\nimport { buildSelectorListStyles } from './styles';\r\n\r\ninterface ISelectorListState {\r\n refresh: number;\r\n}\r\n\r\nexport default class SelectorList extends Component {\r\n private classes: any;\r\n private visibleOptions: SelectorOption[];\r\n\r\n constructor(props: ISelectorListProps) {\r\n super(props);\r\n this.classes = buildSelectorListStyles({\r\n selectorListHeight: this.props.containerConfig.containerHeight,\r\n });\r\n this.state = {\r\n // eslint-disable-next-line react/no-unused-state\r\n refresh: 0,\r\n };\r\n this.visibleOptions = [];\r\n }\r\n\r\n render() {\r\n const { rootOption } = this.props;\r\n\r\n this.visibleOptions = rootOption.children.filter(option => {\r\n return option.visible;\r\n });\r\n\r\n return (\r\n
\r\n \r\n {({ width, height }) => (\r\n \r\n )}\r\n \r\n
\r\n );\r\n }\r\n\r\n private rowRenderer(rowProps: ListRowProps) {\r\n const { index, key, style } = rowProps;\r\n\r\n return (\r\n
\r\n {this.renderListNode(this.visibleOptions[index])}\r\n
\r\n );\r\n }\r\n\r\n private renderListNode(option: SelectorOption) {\r\n let renderSelectorNode: RenderSelectorItemFunc;\r\n\r\n if (this.props.containerConfig.renderSelectorNode) {\r\n renderSelectorNode = this.props.containerConfig.renderSelectorNode;\r\n } else {\r\n throw new Error('containerConfig.renderSelectorNode should not be null');\r\n }\r\n\r\n if (this.props.isSelected(option)) {\r\n option.isSelected = true;\r\n } else {\r\n option.isSelected = false;\r\n }\r\n\r\n return renderSelectorNode(\r\n option,\r\n {\r\n onAdd: this.props.onAdd,\r\n onRemove: this.props.onRemove,\r\n },\r\n this.props.containerConfig,\r\n this.props.i18n,\r\n this.props.classNames,\r\n this.props.hideAccountNodeArrow\r\n );\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\nimport { UiBlocker } from '@bingads-webui-react/ui-blocker';\r\nimport { ISelectorContainerProps, SelectorContainerViewType } from './double-list.types';\r\nimport SelectorTree from './selector-tree';\r\nimport SelectorList from './selector-list';\r\n\r\nexport default class SelectorContainer extends Component {\r\n render() {\r\n let containerContent = null;\r\n\r\n if (!this.props.rootOption.childFetched || this.props.rootOption.children.length === 0) {\r\n containerContent = (\r\n
{this.props.i18n.getString(_TL_('No data available'))}
\r\n );\r\n } else if (this.props.containerConfig.containerViewType === SelectorContainerViewType.tree) {\r\n containerContent = ;\r\n } else {\r\n containerContent = ;\r\n }\r\n\r\n let containerHeader = null;\r\n if (this.props.containerConfig.renderSelectorHeader) {\r\n containerHeader = this.props.containerConfig.renderSelectorHeader(\r\n this.props.rootOption,\r\n {\r\n onAdd: this.props.onAdd,\r\n onRemove: this.props.onRemove,\r\n },\r\n this.props.containerConfig,\r\n this.props.i18n,\r\n this.props.classNames,\r\n this.props.hideAccountNodeArrow\r\n );\r\n }\r\n\r\n const { col } = this.props.containerConfig.coordinate;\r\n const { row } = this.props.containerConfig.coordinate;\r\n\r\n return (\r\n
\r\n {containerHeader}\r\n \r\n {containerContent}\r\n \r\n
\r\n );\r\n }\r\n}\r\n","import React, { PureComponent } from 'react';\r\nimport { Col, Row } from '@bingads-webui-react/primitive';\r\nimport { ISelectorProps, ISelectorContainerConfig } from './double-list.types';\r\nimport { SelectorExpandableOption, SelectorOption, SelectorRootOption } from './selector-option';\r\nimport SelectorContainer from './selector-container';\r\n\r\ninterface ISelectorState {\r\n refresh: number;\r\n}\r\n\r\nexport default class Selector extends PureComponent {\r\n render() {\r\n const containerConfig = this.props.rootOption.containerKey === 'customerAccount' ?\r\n this.props.containerMap.customerAccount :\r\n this.props.containerMap.campaign\r\n\r\n this.confirmOptionVisiblity(this.props.rootOption, containerConfig);\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n\r\n /**\r\n * check the visibility of option with optionContainerConfig\r\n * @param option option to check\r\n * @param optionContainerConfig container config the option is\r\n */\r\n confirmOptionVisiblity(option: SelectorOption, optionContainerConfig: ISelectorContainerConfig) {\r\n let childrenVisible = false;\r\n option.children.forEach(child => {\r\n if (option instanceof SelectorExpandableOption) {\r\n this.confirmOptionVisiblity(child, this.props.containerMap[option.containerKey]);\r\n } else {\r\n this.confirmOptionVisiblity(child, optionContainerConfig);\r\n }\r\n childrenVisible = childrenVisible || child.visible;\r\n });\r\n\r\n if (option instanceof SelectorRootOption) {\r\n option.visible = true;\r\n return;\r\n }\r\n\r\n const localFilter = optionContainerConfig.localFilter\r\n ? optionContainerConfig.localFilter\r\n : () => true;\r\n\r\n option.visible = childrenVisible || localFilter(option);\r\n }\r\n}\r\n","\r\ninterface ICache {\r\n [key: string]: any;\r\n}\r\n\r\nfunction union(leftArr: T[], rightArr: T[], getKey: (item: T) => string): T[] {\r\n const cache: ICache = {};\r\n const result: T[] = [];\r\n\r\n leftArr.forEach((item: T) => {\r\n if (!cache[getKey(item)]) {\r\n result.push(item);\r\n cache[getKey(item)] = item;\r\n }\r\n });\r\n\r\n rightArr.forEach((item: T) => {\r\n if (!cache[getKey(item)]) {\r\n result.push(item);\r\n cache[getKey(item)] = item;\r\n }\r\n });\r\n\r\n return result;\r\n}\r\n\r\ninterface ISetCache {\r\n [key: string]: T;\r\n}\r\n\r\nexport class Set {\r\n protected toStringFunction: (item: T) => string;\r\n protected setCache: ISetCache;\r\n constructor(toStringFunction: (item: T) => string) {\r\n this.toStringFunction = toStringFunction;\r\n this.setCache = {};\r\n }\r\n\r\n contains(element: T): boolean {\r\n return this.setCache[this.toStringFunction(element)] !== undefined;\r\n }\r\n\r\n add(element: T): boolean {\r\n if (this.contains(element) || element === undefined || element == null) {\r\n return false;\r\n }\r\n this.setCache[this.toStringFunction(element)] = element;\r\n return true;\r\n }\r\n\r\n remove(element: T): boolean {\r\n if (!this.contains(element)) {\r\n return false;\r\n }\r\n delete this.setCache[this.toStringFunction(element)];\r\n return true;\r\n }\r\n\r\n isEmpty(): boolean {\r\n return Object.keys(this.setCache).length === 0;\r\n }\r\n\r\n size(): number {\r\n return Object.keys(this.setCache).length;\r\n }\r\n\r\n forEach(callback: (item: T) => void): void {\r\n Object.keys(this.setCache).forEach((key: string) => {\r\n return callback(this.setCache[key]);\r\n });\r\n }\r\n\r\n isSubsetOf(otherSet: Set): boolean {\r\n if (this.size() > otherSet.size()) {\r\n return false;\r\n }\r\n\r\n let isSub = true;\r\n // eslint-disable-next-line consistent-return\r\n this.forEach(element => {\r\n if (!otherSet.contains(element)) {\r\n isSub = false;\r\n return false;\r\n }\r\n });\r\n return isSub;\r\n }\r\n\r\n difference(otherSet: Set): void {\r\n const set = this;\r\n otherSet.forEach((element: T): boolean => {\r\n set.remove(element);\r\n return true;\r\n });\r\n }\r\n\r\n union(otherSet: Set): void {\r\n const set = this;\r\n otherSet.forEach((element: T): boolean => {\r\n set.add(element);\r\n return true;\r\n });\r\n }\r\n\r\n toArray(): T[] {\r\n return Object.keys(this.setCache).map((key: string) => {\r\n return this.setCache[key];\r\n });\r\n }\r\n}\r\n\r\nexport const utils = {\r\n union,\r\n};\r\n","import React, { Component } from 'react';\r\nimport _ from 'underscore';\r\nimport { Col, Row } from '@bingads-webui-react/primitive';\r\nimport { IDoubleListProps } from './double-list.types';\r\nimport Selector from './selector';\r\nimport { SelectorOption } from './selector-option';\r\nimport { utils, Set } from './utils';\r\n\r\ninterface IDoubleListState {\r\n refresh: number;\r\n}\r\n\r\nexport class DoubleList extends Component {\r\n refreshEnabled: boolean;\r\n selected: SelectorOption[];\r\n selectedSet: Set;\r\n\r\n constructor(props: IDoubleListProps) {\r\n super(props);\r\n this.selected = this.props.defaultSelectedOptions || [];\r\n this.selectedSet = this.buildOptionSet(this.prepareDefaultSelectedOptions(this.selected));\r\n this.state = {\r\n refresh: 0,\r\n };\r\n this.refreshEnabled = true;\r\n }\r\n\r\n render() {\r\n const SelectorBox = this.props.selectorBox;\r\n const ResultBox = this.props.resultBox;\r\n\r\n // @ts-ignore\r\n return (\r\n
\r\n \r\n \r\n {/* @ts-ignore */}\r\n \r\n \r\n \r\n \r\n \r\n {/* @ts-ignore */}\r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n\r\n onAdd = (newSelected: SelectorOption[] | SelectorOption) => {\r\n if (newSelected instanceof SelectorOption) {\r\n if (newSelected.deepness === 0) {\r\n newSelected = newSelected.children;\r\n } else {\r\n const temp = [newSelected];\r\n newSelected = temp;\r\n }\r\n }\r\n\r\n const originSelected = [...this.selected];\r\n newSelected = this.unionSelected(originSelected, newSelected);\r\n newSelected = this.bubbleSelected(newSelected);\r\n\r\n this.updateSelected(newSelected);\r\n this.refresh();\r\n };\r\n\r\n onRemove = (unselected: SelectorOption[] | SelectorOption) => {\r\n if (unselected instanceof SelectorOption) {\r\n const temp = [unselected];\r\n unselected = temp;\r\n }\r\n\r\n let selected: SelectorOption[] = [...this.selected];\r\n selected = this.removeUnselected(selected, unselected);\r\n\r\n this.updateSelected(selected);\r\n this.refresh();\r\n };\r\n\r\n removeAll = () => {\r\n this.updateSelected([]);\r\n this.refresh();\r\n };\r\n\r\n /**\r\n * Merge rightMap into leftMap\r\n * @param leftMap the left selectedMap to merge to\r\n * @param rightMap the right selectedMap to merge\r\n */\r\n private unionSelected(leftOptionList: SelectorOption[], rightOptionList: SelectorOption[]) {\r\n return utils.union(leftOptionList, rightOptionList, (option: SelectorOption) => {\r\n return option.key;\r\n });\r\n }\r\n\r\n /**\r\n * If one option's children are all selected, then try to add this option to @param selected\r\n * and remove its all children from @param selected\r\n *\r\n * If one option is in @param selected, means that all its children is selected,\r\n * then remove all its children from @param selected\r\n *\r\n * @param selected the selected option list to bubble\r\n */\r\n private bubbleSelected(selected: SelectorOption[]) {\r\n // build option set for each deepness\r\n const selectedOptionSetList: Set[] = this.buildSelectedSetByDeepness(selected);\r\n\r\n // iterate from the maximum deepness option to minimum deepness option to\r\n // find whether its sibling is all selected\r\n // if true, then remove all of them and add their parent to selectedOptionList\r\n for (let i = selectedOptionSetList.length - 1; i >= 0; i--) {\r\n const optionSet = selectedOptionSetList[i];\r\n const processedSet = this.buildOptionSet();\r\n const optionArr = optionSet.toArray();\r\n\r\n for (let j = 0; j < optionArr.length; j++) {\r\n const option = optionArr[j];\r\n\r\n // this option is handled before\r\n if (processedSet.contains(option) || !option.parent) {\r\n // eslint-disable-next-line no-continue\r\n continue;\r\n }\r\n\r\n const parent = option.parent as SelectorOption;\r\n\r\n // if this option's parent is in selected too, then remove all its children from selected\r\n if (this.isAncestorSelected(option, selectedOptionSetList)) {\r\n const childrenSet = this.buildOptionSet(parent.children);\r\n // eslint-disable-next-line @typescript-eslint/no-shadow\r\n selected = selected.filter((option) => {\r\n return !childrenSet.contains(option);\r\n });\r\n\r\n optionSet.difference(childrenSet);\r\n processedSet.union(childrenSet);\r\n\r\n // eslint-disable-next-line no-continue\r\n continue;\r\n }\r\n\r\n // determine whether or not this option's parent should be checked\r\n // check if option.parent.children are in current optionSet\r\n // if true, then pop its parernt to @selected option list and remove all its siblings from selected\r\n // if not, ignore it\r\n const childrenSet = this.buildOptionSet(parent.children);\r\n\r\n // FixMe: Pagination is not supported yet\r\n if (childrenSet.isSubsetOf(optionSet)) {\r\n if (i > 0 && parent.childFetched && parent.deepness !== 0) {\r\n // add parent to original selected and remove all its children from selected\r\n selected.push(parent);\r\n // eslint-disable-next-line @typescript-eslint/no-shadow\r\n selected = selected.filter((option) => {\r\n return !childrenSet.contains(option);\r\n });\r\n // add parent to the set to check in next iteration\r\n selectedOptionSetList[i - 1].add(parent);\r\n }\r\n }\r\n\r\n optionSet.difference(childrenSet);\r\n processedSet.union(childrenSet);\r\n }\r\n }\r\n\r\n return selected;\r\n }\r\n\r\n /**\r\n * If one option's parent been selected\r\n * @param option selector option\r\n * @param selectedOptionSetList selected option set group by deepness\r\n */\r\n private isAncestorSelected(option: SelectorOption, selectedOptionSetList: Set[]): boolean {\r\n let deepness = option.deepness - 1;\r\n let { parent } = option;\r\n\r\n while (parent && deepness >= 0) {\r\n const optionSet = selectedOptionSetList[deepness];\r\n if (optionSet.contains(parent)) {\r\n return true;\r\n }\r\n deepness--;\r\n parent = parent.parent;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * remove unselected from selected\r\n *\r\n * if one option in unselected, but its parent is in @param selected,\r\n * then try to remove its parent from selected and add all its sibling back to selected\r\n *\r\n * @param selected existing selected options\r\n * @param unselected optins to remove\r\n *\r\n * @returns all selected options expcept for allt he options removed\r\n */\r\n private removeUnselected(selected: SelectorOption[], unselected: SelectorOption[]): SelectorOption[] {\r\n unselected.forEach((unselectedOption) => {\r\n const res: SelectorOption[] | boolean = this.removeOneUnselected(selected, unselectedOption);\r\n if (res) {\r\n selected = res as SelectorOption[];\r\n }\r\n });\r\n\r\n return selected;\r\n }\r\n\r\n /**\r\n * Remove one option from selected\r\n * @param selected\r\n * @param unselectedOption\r\n * @returns selected that is processed if unselectedOption is valid, or return false for unexisted unselectedOption\r\n */\r\n private removeOneUnselected(\r\n selected: SelectorOption[],\r\n unselectedOption: SelectorOption | undefined\r\n ): SelectorOption[] | boolean {\r\n if (!unselectedOption) {\r\n return false;\r\n }\r\n\r\n // Found the option to be removed then remove it directly\r\n if (this.isOptionInList(unselectedOption, selected)) {\r\n selected = selected.filter((o) => {\r\n return o.key !== unselectedOption.key;\r\n });\r\n } else {\r\n const res = this.removeOneUnselected(selected, unselectedOption.parent);\r\n\r\n if (!res) {\r\n return false;\r\n }\r\n selected = res as SelectorOption[];\r\n\r\n\r\n const { parent } = unselectedOption;\r\n if (parent) {\r\n let children: SelectorOption[] = [...parent.children];\r\n children = children.filter((o) => {\r\n return o.key !== unselectedOption.key;\r\n });\r\n\r\n selected = utils.union(selected, children, (item) => {\r\n return item.key;\r\n });\r\n }\r\n }\r\n\r\n return selected;\r\n }\r\n\r\n private isOptionInList(option: SelectorOption, optionList: SelectorOption[]) {\r\n const res = _.findIndex(optionList, (item) => {\r\n return item.key === option.key;\r\n });\r\n\r\n if (res !== -1) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n private prepareDefaultSelectedOptions(defaultOptions: SelectorOption[]) {\r\n this.disableRefresh();\r\n defaultOptions.forEach((option) => {\r\n this.onAdd(option);\r\n });\r\n this.enableRefresh();\r\n return this.selected;\r\n }\r\n\r\n /**\r\n * build option set\r\n */\r\n private buildOptionSet = (options?: SelectorOption[]) => {\r\n const set = new Set((item: SelectorOption) => {\r\n return item.key;\r\n });\r\n\r\n if (options) {\r\n options.forEach((option) => {\r\n set.add(option);\r\n });\r\n }\r\n\r\n return set;\r\n };\r\n\r\n private buildSelectedSetByDeepness(selected: SelectorOption[]): Set[] {\r\n // build option set for each deepness\r\n const optionSetList: Set[] = [];\r\n selected.forEach((option: SelectorOption) => {\r\n let optionSet = optionSetList[option.deepness];\r\n if (!optionSet) {\r\n optionSet = this.buildOptionSet();\r\n optionSetList[option.deepness] = optionSet;\r\n }\r\n optionSet.add(option);\r\n });\r\n\r\n // in case some deepness's optionSet is undefined, replace undefined with empty set\r\n for (let i = 0; i < optionSetList.length; i++) {\r\n if (!optionSetList[i]) {\r\n optionSetList[i] = this.buildOptionSet();\r\n }\r\n }\r\n\r\n return optionSetList;\r\n }\r\n\r\n private isSelected = (option: SelectorOption | undefined): boolean => {\r\n const set = this.selectedSet;\r\n while (option) {\r\n if (set.contains(option)) {\r\n return true;\r\n }\r\n option = option.parent;\r\n }\r\n\r\n return false;\r\n };\r\n\r\n private updateSelected(selected: SelectorOption[]) {\r\n this.selected = selected;\r\n this.selectedSet = this.buildOptionSet(selected);\r\n this.props.onChange!(selected);\r\n }\r\n\r\n refresh() {\r\n if (this.refreshEnabled) {\r\n this.setState({\r\n refresh: this.state.refresh + 1,\r\n });\r\n }\r\n }\r\n\r\n disableRefresh() {\r\n this.refreshEnabled = false;\r\n }\r\n\r\n enableRefresh() {\r\n this.refreshEnabled = true;\r\n }\r\n}\r\n","import jss from 'jss';\r\n// @ts-ignore\r\nimport preset from 'jss-preset-default';\r\nimport _ from 'underscore';\r\n\r\njss.setup(preset() as any);\r\n\r\nexport const sharedBasicStyle = {\r\n doubleListHeight: 450,\r\n bingColor: '#007daa',\r\n doubleListBackgroundColor: '#f2f2f2',\r\n containerBorder: '1px solid #bbbbbb',\r\n containerHegiht: 450 - 130,\r\n resultListHeight: 450 - 90,\r\n};\r\n\r\nconst headerStyle = {\r\n backgroundColor: sharedBasicStyle.doubleListBackgroundColor,\r\n height: 30,\r\n padding: '8px 8px',\r\n fontWeight: 'bold',\r\n overflow: 'hidden',\r\n};\r\n\r\nconst styles = {\r\n maxLimitContainer: {\r\n paddingBottom: '8px',\r\n paddingLeft: '8px',\r\n clear: 'both',\r\n color: 'red',\r\n },\r\n doubleList: {\r\n width: 832,\r\n height: sharedBasicStyle.doubleListHeight,\r\n },\r\n selectorBox: {\r\n height: sharedBasicStyle.doubleListHeight,\r\n border: sharedBasicStyle.containerBorder,\r\n paddingRight: -15,\r\n '& .search-box__input-group': {\r\n position: 'relative',\r\n },\r\n '& .search-box__input': {\r\n paddingRight: '206px',\r\n },\r\n '& .blocker-global': {\r\n position: 'absolute',\r\n },\r\n '& .blocker-indicator': {\r\n position: 'absolute',\r\n top: '100px',\r\n right: '150px',\r\n },\r\n },\r\n selectorTreeNode: {\r\n padding: '3px 17px 0 0',\r\n display: 'flex',\r\n '&.disabled': {\r\n opacity: 0.5,\r\n '& .accountNode': {\r\n cursor: 'not-allowed',\r\n },\r\n },\r\n '& span': {\r\n flex: 1,\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n },\r\n '& span:nth-last-child(2)': {\r\n flex: 2,\r\n },\r\n '& span:first-child': {\r\n flex: 2,\r\n },\r\n },\r\n selectorNodeArrow: {\r\n position: 'absolute',\r\n right: '0px',\r\n fontWeight: 'bold',\r\n cursor: 'pointer',\r\n paddingRight: 5,\r\n '&.disabled': {\r\n cursor: 'not-allowed',\r\n },\r\n },\r\n selectorListNode: {\r\n padding: '3px 0 10px 10px',\r\n },\r\n addAll: {\r\n cursor: 'pointer',\r\n padding: '8px 0',\r\n },\r\n addAllText: {\r\n color: sharedBasicStyle.bingColor,\r\n },\r\n\r\n selectorAccountContainerHeader: headerStyle,\r\n selectorCampaignContainerHeader: headerStyle,\r\n selectorBoxHeader: headerStyle,\r\n searchListHeader: {\r\n display: 'flex',\r\n paddingRight: '16px',\r\n paddingBottom: '2px',\r\n marginTop: '5px',\r\n color: '#333',\r\n fontWeight: 'bold',\r\n borderBottom: '1px solid lightgray',\r\n '& span': {\r\n flex: 1,\r\n },\r\n '& span:last-child': {\r\n flex: 2,\r\n },\r\n '& span:first-child': {\r\n flex: 2,\r\n },\r\n },\r\n selectorDrillUpButton: {\r\n cursor: 'pointer',\r\n margin: '0 5px 0 0',\r\n },\r\n clearIcon: {\r\n position: 'absolute',\r\n right: '49px',\r\n top: '47px',\r\n },\r\n selectorNodeOverflowSafeText: {\r\n maxWidth: '90%',\r\n display: 'inline-block',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n },\r\n selectorAccountNodeText: {\r\n color: '#007daa',\r\n cursor: 'pointer',\r\n },\r\n selectedNodeArrow: {\r\n color: '#aaa',\r\n },\r\n accountNodeSelectedText: {\r\n color: 'gray',\r\n cursor: 'pointer',\r\n },\r\n resultListBox: {\r\n border: sharedBasicStyle.containerBorder,\r\n height: sharedBasicStyle.doubleListHeight,\r\n padding: '0px !important',\r\n },\r\n resultListHeader: headerStyle,\r\n resultListItemArrow: {\r\n float: 'left',\r\n padding: '0 10px',\r\n cursor: 'pointer',\r\n },\r\n resultList: {\r\n paddingTop: 3,\r\n height: sharedBasicStyle.resultListHeight,\r\n overflow: 'auto',\r\n },\r\n resultListItem: {\r\n padding: '0 10px',\r\n paddingBottom: 10,\r\n },\r\n resultListItemContent: {\r\n padding: '5px 0',\r\n backgroundColor: '#e7f0f6',\r\n border: '1px solid #00719a',\r\n },\r\n resultParentChainItem: {\r\n display: 'inline-block',\r\n position: 'relative',\r\n paddingRight: '10px',\r\n paddingLeft: '3px',\r\n verticalAlign: 'top',\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n },\r\n parentArrow: {\r\n position: 'absolute',\r\n right: '0',\r\n },\r\n itemName: {\r\n paddingLeft: '3px',\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n },\r\n accountParent: {\r\n position: 'relative',\r\n paddingLeft: '3px',\r\n paddingRight: '10px',\r\n display: 'inline-block',\r\n verticalAlign: 'top',\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n },\r\n removeAll: {\r\n cursor: 'pointer',\r\n padding: '15px 10px 10px 10px',\r\n padidngTop: 15,\r\n },\r\n removeAllText: {\r\n color: sharedBasicStyle.bingColor,\r\n },\r\n hidden: {\r\n display: 'none',\r\n },\r\n scopeSelector: {\r\n position: 'absolute',\r\n width: '155px',\r\n right: '70px',\r\n top: '41px',\r\n },\r\n};\r\n\r\nconst { classes } = jss.createStyleSheet(styles as any).attach();\r\nexport default classes;\r\nexport const getStyle = function (components: any, core: any) {\r\n if (!core.isUIVnext) {\r\n return styles;\r\n }\r\n return {\r\n ...styles,\r\n doubleList: _.extend(styles.doubleList, {\r\n height: '475px',\r\n }),\r\n selectorBox: _.extend(styles.selectorBox, {\r\n height: '475px',\r\n '& .search-box__icon': {\r\n '&:focus': {\r\n outline: 'none',\r\n },\r\n fontFamily: 'MsAds MDL2 Assets',\r\n position: 'absolute',\r\n top: '6px',\r\n right: '13px',\r\n '&:before': {\r\n content: '\"\\\\E721\"',\r\n },\r\n },\r\n '& .search-box__input': {\r\n paddingRight: '219px',\r\n fontSize: '13px',\r\n },\r\n }),\r\n selectorBoxHeader: _.extend(styles.selectorBoxHeader, {\r\n height: 'auto',\r\n }),\r\n selectorCampaignContainerHeader: _.extend(styles.selectorCampaignContainerHeader, {\r\n height: 'auto',\r\n }),\r\n resultListBox: _.extend(styles.resultListBox, {\r\n height: '475px',\r\n }),\r\n resultList: _.extend(styles.resultList, {\r\n height: '385px',\r\n }),\r\n resultListHeader: _.extend(styles.resultListHeader, {\r\n height: 'auto',\r\n }),\r\n clearIcon: _.extend(styles.clearIcon, {\r\n top: '53px',\r\n right: '61px',\r\n fontSize: '16px',\r\n fontFamily: 'MsAds MDL2 Assets',\r\n color: '#605e5c',\r\n cursor: 'pointer',\r\n '&:before': {\r\n content: '\"\\\\E711\"',\r\n },\r\n }),\r\n selectorListNode: _.extend(styles.selectorListNode, {\r\n '& .glyph-shift-right': {\r\n fontFamily: 'MsAds MDL2 Assets',\r\n '&:before': {\r\n content: '\"\\\\EDBF\"',\r\n },\r\n },\r\n }),\r\n resultListItemArrow: _.extend(styles.resultListItemArrow, {\r\n height: '25px',\r\n }),\r\n scopeSelector: _.extend(styles.scopeSelector, {\r\n right: '87px',\r\n top: '48px',\r\n }),\r\n radioArea: {\r\n '& .row': {\r\n marginBottom: '20px',\r\n },\r\n '& .radio label': {\r\n paddingLeft: '25px !important',\r\n },\r\n '& .radio label > input[type=radio]': {\r\n marginLeft: '-25px !important',\r\n },\r\n },\r\n selectorList: {\r\n height: '100px',\r\n },\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\nimport _ from 'underscore';\r\nimport { Glyphicon } from '@bingads-webui-react/primitive';\r\n\r\ninterface IGlyphiconWrapperProps {\r\n // eslint-disable-next-line react/no-unused-prop-types\r\n env?: 'demo' | 'prod';\r\n glyph: string;\r\n baIcon: boolean;\r\n isUINext?: boolean;\r\n}\r\n\r\n\r\nconst getNextIcon = (glyph: string) => {\r\n return _.result({\r\n 'shift-left': 'ba-DoubleChevronLeft',\r\n 'shift-right': 'ba-DoubleChevronRight',\r\n }, glyph, '');\r\n};\r\n\r\nexport class GlyphiconWrapper extends Component {\r\n static defaultProps = {\r\n env: 'demo',\r\n isUINext: false,\r\n };\r\n\r\n render() {\r\n const ajustStyle = {\r\n display: 'inline-block',\r\n verticalAlign: '-1px',\r\n margin: '0, 5px',\r\n };\r\n\r\n if (this.props.isUINext) {\r\n return \r\n }\r\n\r\n if (this.props.baIcon) {\r\n return ;\r\n }\r\n return ;\r\n }\r\n}\r\n","/* eslint-disable jsx-a11y/no-noninteractive-tabindex */\r\n/* eslint-disable jsx-a11y/no-static-element-interactions */\r\n/* eslint-disable jsx-a11y/click-events-have-key-events */\r\nimport classNames from 'classnames';\r\nimport React from 'react';\r\nimport { ClassNames, Ii18n } from '../double-list/double-list.types';\r\nimport {\r\n ISelectorContainerConfig,\r\n SelectorContainerViewType,\r\n SelectorOption,\r\n IRenderSelectorNodeOps,\r\n SelectorExpandableOption\r\n} from '../double-list';\r\nimport { sharedBasicStyle } from './styles';\r\nimport {\r\n AccountCampaignContainerType,\r\n AccountCampaignOptionType, statusMap,\r\n ScopeFilterLevelType,\r\n } from './account-campaign-selector.types';\r\nimport { AccountCampaignDataStore } from './account-campaign-data-store';\r\nimport { GlyphiconWrapper } from './glyphicon-wrapper';\r\n\r\nfunction createContainerConfig(store: AccountCampaignDataStore) {\r\n const isInternalSearch = store.state.isOnApiSearch && store.state.isInternalReport;\r\n\r\n const renderCustomerAccountSelectorNode = (\r\n option: SelectorOption,\r\n ops: IRenderSelectorNodeOps,\r\n config: ISelectorContainerConfig,\r\n i18n: Ii18n,\r\n classes: ClassNames\r\n ) => {\r\n let selectorNodeText = '';\r\n let selectedNodeArrow = '';\r\n let lastColumnInfo = '';\r\n if (option.optionType === AccountCampaignOptionType.account && !store.state.forceAccountScope && !isInternalSearch) {\r\n selectorNodeText = classes.selectorAccountNodeText;\r\n }\r\n if (option.isSelected) {\r\n selectedNodeArrow = classes.selectedNodeArrow;\r\n }\r\n if (isInternalSearch) {\r\n lastColumnInfo = option.optionType === AccountCampaignOptionType.customer ? option.extra.serviceLevel : option.extra.advertiserCustomerName;\r\n }\r\n\r\n return (\r\n
\r\n {\r\n if (option.disabled) {\r\n return;\r\n }\r\n\r\n if (option.optionType === AccountCampaignOptionType.account && !store.state.forceAccountScope && !isInternalSearch) {\r\n const expandableOption = option as SelectorExpandableOption;\r\n store.drillDown(expandableOption);\r\n }\r\n }}\r\n className={`${selectorNodeText} ${option.optionType === AccountCampaignOptionType.account ? 'accountNode' : 'customerNode'}`}\r\n title={option.name}\r\n data-id={option.id}\r\n >\r\n {option.name} {\r\n (option.extra && option.extra.status && option.optionType === AccountCampaignOptionType.account) ?\r\n `(${i18n.getString(statusMap[option.extra.status])})` : ''\r\n }\r\n \r\n {\r\n lastColumnInfo ?\r\n \r\n {option.id}\r\n {lastColumnInfo}\r\n \r\n : null\r\n }\r\n { {\r\n if (option.disabled) {\r\n return;\r\n }\r\n ops.onAdd(option);\r\n }}\r\n className={`${classes.selectorNodeArrow} ${selectedNodeArrow} selectorNodeArrow ${option.disabled ? 'disabled' : 'enabled'}`}\r\n >\r\n \r\n }\r\n
\r\n );\r\n };\r\n\r\n const renderCampaignSelectorNode = (\r\n option: SelectorOption,\r\n ops: IRenderSelectorNodeOps,\r\n config: ISelectorContainerConfig,\r\n i18n: Ii18n,\r\n classes: ClassNames\r\n ) => {\r\n let selectedNodeArrow = '';\r\n\r\n if (option.isSelected) {\r\n selectedNodeArrow = classes.selectedNodeArrow;\r\n }\r\n\r\n return (\r\n
\r\n \r\n {option.name} {\r\n (option.extra && option.extra.status) ?\r\n `(${i18n.getString(statusMap[option.extra.status])})` : ''\r\n }\r\n \r\n {\r\n ops.onAdd(option);\r\n }}\r\n className={`${classes.selectorNodeArrow} ${selectedNodeArrow} selectorNodeArrow`}\r\n >\r\n \r\n \r\n
\r\n );\r\n };\r\n\r\n const renderAccountSelectorHeader = (\r\n option: SelectorOption,\r\n ops: IRenderSelectorNodeOps,\r\n config: ISelectorContainerConfig,\r\n i18n: Ii18n,\r\n classes: ClassNames,\r\n hideAccountNodeArrow: boolean = false\r\n ) => {\r\n let headerStr = hideAccountNodeArrow ? i18n.getString(_TL_('All accounts')) : i18n.getString(_TL_('All manager accounts and accounts'));\r\n if (store.state.scopeFilterLevel === ScopeFilterLevelType.Customer) {\r\n headerStr = i18n.getString(_TL_('All manager accounts'));\r\n }\r\n\r\n return (\r\n
\r\n
ops.onAdd(option)} className={`${classes.addAll}`}>\r\n {i18n.getString(_TL_('Add all'))}{' '}\r\n \r\n
\r\n
{headerStr}
\r\n {\r\n store.state.isOnApiSearch && store.state.isInternalReport && option.children.length > 0 ?\r\n
\r\n {\r\n option.children[0].optionType === AccountCampaignOptionType.account ?\r\n \r\n {i18n.getString(_TL_('Account name'))}\r\n {i18n.getString(_TL_('AID'))}\r\n {i18n.getString(_TL_('Manager account name'))}\r\n :\r\n \r\n {i18n.getString(_TL_('Manager account name'))}\r\n {i18n.getString(_TL_('CID'))}\r\n {i18n.getString(_TL_('Service level'))}\r\n \r\n }\r\n
\r\n : null\r\n }\r\n
\r\n );\r\n };\r\n\r\n const renderCampaignSelectorHeader = (\r\n option: SelectorOption,\r\n ops: IRenderSelectorNodeOps,\r\n config: ISelectorContainerConfig,\r\n i18n: Ii18n,\r\n classes: ClassNames\r\n ) => {\r\n const showCampaignsWithinCurrentAccount = (store.state.scopeFilterLevel === ScopeFilterLevelType.Campaign) && store.state.accountId;\r\n return (\r\n
\r\n
ops.onAdd(option)} className={classes.addAll} tabIndex={0}>\r\n {i18n.getString('Add all')}{' '}\r\n \r\n
\r\n
\r\n {\r\n !showCampaignsWithinCurrentAccount &&\r\n \r\n \r\n \r\n }\r\n {\r\n showCampaignsWithinCurrentAccount ?\r\n i18n.getString(_TL_('Campaigns for current account')) :\r\n `${i18n.getString(_TL_('Campaigns for'))} ${option.name}`\r\n }\r\n
\r\n
\r\n );\r\n };\r\n\r\n const localFilter = (option: SelectorOption) => {\r\n if (store.state.isOnApiSearch && option.optionType !== AccountCampaignOptionType.campaign) {\r\n return true\r\n }\r\n\r\n const searchTerm = store.state.searchTerm.toLowerCase();\r\n return [option.name, option.id, option.number].some(data => {\r\n return (data || '').toLowerCase().indexOf(searchTerm) > -1\r\n });\r\n };\r\n const getContainerHeight = () => {\r\n let height = sharedBasicStyle.containerHegiht\r\n if (store.state.isInternalReport) {\r\n if (store.state.isOnApiSearch) { // will show api search result\r\n height -= 22;\r\n }\r\n }\r\n return height\r\n }\r\n\r\n const customerAccountContainer: ISelectorContainerConfig = {\r\n containerKey: AccountCampaignContainerType.customerAccount,\r\n scopeFilterLevel: store.state.scopeFilterLevel,\r\n isInternalReport: store.state.isInternalReport,\r\n isReportingUIPhaseNext: store.state.isReportingUIPhaseNext,\r\n scopeSelectorLevel: store.state.scopeSelectorLevel,\r\n containerViewType: SelectorContainerViewType.tree,\r\n coordinate: {\r\n row: 0,\r\n col: 0,\r\n },\r\n renderSelectorNode: renderCustomerAccountSelectorNode,\r\n renderSelectorHeader: renderAccountSelectorHeader,\r\n searchTerm: store.state.searchTerm,\r\n campaignSearchStr: store.state.campaignSearchStr,\r\n customerAccountSearchStr: store.state.customerAccountSearchStr,\r\n onQueryCustomerAccountChange: store.onQueryCustomerAccountChange,\r\n onQueryCampaignChange: store.onQueryCampaignChange,\r\n onSearchCustomerAccount: store.searchCustomerAccount,\r\n onSearchCampaign: store.searchCampaign,\r\n onClearSearchCampaign: store.clearSearchCampaign,\r\n onClearSearchCustomerAccount: store.clearSearchCustomerAccount,\r\n onSelectScopeLevel: store.selectScopeLevel,\r\n localFilter,\r\n containerHeight: getContainerHeight(),\r\n rowHeight: store.state.isReportingUIPhaseNext ? 30 : 20,\r\n isLoading: store.state.isLoading,\r\n };\r\n\r\n const campaignContainer: ISelectorContainerConfig = {\r\n containerKey: AccountCampaignContainerType.campaign,\r\n containerViewType: SelectorContainerViewType.list,\r\n isReportingUIPhaseNext: store.state.isReportingUIPhaseNext,\r\n coordinate: {\r\n row: 1,\r\n col: 0,\r\n },\r\n renderSelectorNode: renderCampaignSelectorNode,\r\n renderSelectorHeader: renderCampaignSelectorHeader,\r\n searchTerm: store.state.searchTerm,\r\n campaignSearchStr: store.state.campaignSearchStr,\r\n customerAccountSearchStr: store.state.customerAccountSearchStr,\r\n onClearSearchCampaign: store.clearSearchCampaign,\r\n onClearSearchCustomerAccount: store.clearSearchCustomerAccount,\r\n onQueryCustomerAccountChange: store.onQueryCustomerAccountChange,\r\n onQueryCampaignChange: store.onQueryCampaignChange,\r\n onSearchCustomerAccount: store.searchCustomerAccount,\r\n onSearchCampaign: store.searchCampaign,\r\n onSelectScopeLevel: () => null,\r\n localFilter,\r\n containerHeight: sharedBasicStyle.containerHegiht,\r\n rowHeight: store.state.isReportingUIPhaseNext ? 30 : 20,\r\n isLoading: store.state.isLoading,\r\n };\r\n\r\n return {\r\n customerAccount: customerAccountContainer,\r\n campaign: campaignContainer,\r\n };\r\n}\r\n\r\nexport class ContainerConfigFactory {\r\n static create(store: AccountCampaignDataStore) {\r\n return createContainerConfig(store);\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\n/* eslint-disable no-mixed-operators */\r\nimport { ClassNames, Ii18n } from '../double-list/double-list.types';\r\nimport { IResultBoxProps, SelectorOption, SelectorRootOption } from '../double-list';\r\n\r\nimport { AccountCampaignOptionType, statusMap } from './account-campaign-selector.types';\r\nimport { GlyphiconWrapper } from './glyphicon-wrapper';\r\n\r\nexport default class AccountCampaignResultBox extends Component {\r\n // eslint-disable-next-line react/sort-comp\r\n render() {\r\n const { i18n } = this.props;\r\n const classes = this.props.classNames;\r\n const isUIVnext = this.props.isReportingUIPhaseNext;\r\n let { selected } = this.props;\r\n if (selected.length === 1 && selected[0] instanceof SelectorRootOption) {\r\n selected = selected[0].children;\r\n }\r\n\r\n selected = [...selected];\r\n return (\r\n
\r\n
{i18n.getString(_TL_('Selected items'))}
\r\n {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions, jsx-a11y/no-noninteractive-tabindex */}\r\n
\r\n {' '}\r\n {i18n.getString(_TL_('Remove all'))}\r\n
\r\n
\r\n {selected.reverse().map(option => this.renderResultNode(option, i18n, classes, isUIVnext))}\r\n
\r\n
\r\n );\r\n }\r\n\r\n renderResultNode(option: SelectorOption, i18n: Ii18n, classes: ClassNames, isUIVnext: boolean) {\r\n return (\r\n
\r\n
\r\n {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions, jsx-a11y/no-noninteractive-tabindex */}\r\n this.props.onRemove(option)}>\r\n \r\n \r\n {this.renderParentChain(option, classes)}\r\n
\r\n {option.name} {\r\n (option.extra && option.optionType === AccountCampaignOptionType.account) ?\r\n `(${i18n.getString(statusMap[option.extra.status])})` : ''\r\n }\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n renderParentChain(option: SelectorOption, classes: ClassNames) {\r\n let parentChain: SelectorOption[] = [];\r\n\r\n let parentOption = option.parent;\r\n let childOption = option;\r\n while (parentOption && !(parentOption instanceof SelectorRootOption)) {\r\n parentChain.push(parentOption);\r\n childOption = parentOption;\r\n parentOption = childOption.parent;\r\n }\r\n\r\n parentChain = parentChain.reverse();\r\n // eslint-disable-next-line @typescript-eslint/no-shadow\r\n const jonitParentStr = parentChain.reduce((joint, option) => joint + option.name + (option.optionType === AccountCampaignOptionType.account ? '' : ' > '), '');\r\n return (\r\n \r\n {/* eslint-disable-next-line @typescript-eslint/no-shadow */}\r\n {parentChain.map((option) => {\r\n if (option.optionType === AccountCampaignOptionType.account) {\r\n return (\r\n \r\n {option.name}\r\n > \r\n
\r\n );\r\n }\r\n return (\r\n \r\n \r\n {option.name}\r\n > \r\n \r\n
\r\n );\r\n })}\r\n
\r\n );\r\n }\r\n}\r\n","import { SearchBox } from '@bingads-webui-react/search-box';\r\nimport { Select } from '@bingads-webui-react/primitive';\r\nimport React, { Component } from 'react';\r\nimport { ISelectorBoxProps } from '../double-list';\r\nimport { ScopeSelectorLevelType, ScopeFilterLevelType } from './account-campaign-selector.types';\r\n\r\nexport default class AccountCampaignSelectorBox extends Component {\r\n onSearch = async (newValue: any) => {\r\n const serachText = newValue.trim();\r\n if (this.props.selectorBoxConfig.containerKey === 'campaign') {\r\n this.props.selectorBoxConfig.onSearchCampaign(serachText);\r\n } else {\r\n this.props.selectorBoxConfig.onSearchCustomerAccount(serachText);\r\n }\r\n };\r\n\r\n onQueryChange = (newValue: any) => {\r\n if (this.props.selectorBoxConfig.containerKey === 'campaign') {\r\n this.props.selectorBoxConfig.onQueryCampaignChange(newValue);\r\n } else {\r\n this.props.selectorBoxConfig.onQueryCustomerAccountChange(newValue);\r\n }\r\n };\r\n\r\n onClearSearch = () => {\r\n if (this.props.selectorBoxConfig.containerKey === 'campaign') {\r\n this.props.selectorBoxConfig.onClearSearchCampaign();\r\n } else {\r\n this.props.selectorBoxConfig.onClearSearchCustomerAccount();\r\n }\r\n };\r\n\r\n onSelect = (event: any) => {\r\n this.props.selectorBoxConfig.onSelectScopeLevel(event.target.value)\r\n }\r\n\r\n getPlaceholder = () => {\r\n const {\r\n i18n,\r\n selectorBoxConfig: {\r\n isInternalReport,\r\n scopeFilterLevel,\r\n scopeSelectorLevel,\r\n containerKey,\r\n },\r\n } = this.props\r\n let placeholder = '';\r\n if (containerKey === 'campaign') {\r\n placeholder = i18n.getString(_TL_('Search campaign'));\r\n return placeholder;\r\n }\r\n\r\n if (isInternalReport) {\r\n placeholder = scopeSelectorLevel === ScopeSelectorLevelType.Customer ?\r\n i18n.getString(_TL_('Search manager account')) : `${i18n.getString(_TL_('Search account'))} (${i18n.getString(_TL_('3 to 1000 characters'))})`\r\n return placeholder;\r\n }\r\n\r\n placeholder = scopeFilterLevel === ScopeFilterLevelType.Customer ?\r\n i18n.getString(_TL_('Search manager account')) : i18n.getString(_TL_('Search manager account, account'));\r\n return placeholder;\r\n }\r\n render() {\r\n const {\r\n i18n,\r\n selectorBoxConfig: {\r\n isInternalReport,\r\n scopeFilterLevel,\r\n scopeSelectorLevel,\r\n customerAccountSearchStr,\r\n campaignSearchStr,\r\n containerKey,\r\n },\r\n hideAccountSearchBar,\r\n classNames,\r\n rootOption,\r\n } = this.props\r\n\r\n const value = containerKey === 'campaign' ?\r\n campaignSearchStr : customerAccountSearchStr\r\n\r\n const showSearchBar = !(hideAccountSearchBar && rootOption.containerKey === 'customerAccount');\r\n return (\r\n
\r\n
{i18n.getString(_TL_('Available items'))}
\r\n \r\n { showSearchBar && }\r\n {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions */}\r\n {showSearchBar && }\r\n\r\n {\r\n isInternalReport && scopeFilterLevel !== ScopeFilterLevelType.Customer ?\r\n
\r\n \r\n
:\r\n null\r\n }\r\n
{this.props.children}
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n","/* eslint-disable @typescript-eslint/no-shadow */\r\n/* eslint-disable no-restricted-globals */\r\nimport { generateGuid } from '@bingads-webui-universal/primitive-utilities';\r\nimport { odata, http } from '@bingads-webui/http-util';\r\nimport _ from 'underscore';\r\nimport { ODataOptions } from '@bingads-webui/http-util/src/types';\r\n\r\n// @ts-ignore\r\nimport { IDataStore, ICustomerNode, IAccountNode, ICustomerAccountBase } from '@bingads-webui-cc-react/js-data-rest';\r\nimport { SelectorExpandableOption, SelectorOption, SelectorRootOption } from '../../double-list';\r\nimport {\r\n AccountCampaignContainerType,\r\n AccountCampaignOptionType,\r\n ScopeFilterLevelType,\r\n IFilter,\r\n ISearchAccount,\r\n ISearchCustomer,\r\n FilterKeyType\r\n} from '../account-campaign-selector.types';\r\nimport { AccountCampaignDataStore } from './account-campaign-data-store';\r\n\r\ninterface ICampaign {\r\n Id: number;\r\n Name: string;\r\n}\r\n\r\nlet ccJsDataStore: IDataStore;\r\nexport const setCCJsDataStore = (ds: IDataStore) => { if (_.isObject(ds)) { ccJsDataStore = ds; } };\r\n\r\nconst fetchCustomerHierarchy = async (searchTerm: string, limit: number) => (await ccJsDataStore.CustomerHierarchy.findAll({\r\n query: {\r\n limit, start: 0, returnOnlyDirectlyLinkedEntities: false, searchTerm,\r\n },\r\n}, {\r\n contentType: 'application/json',\r\n dataType: 'json',\r\n cacheResponse: true,\r\n preProcess: (res: any) => _.result(res, 'customerHierarchyEntities', res),\r\n xhrFields: {\r\n withCredentials: true,\r\n },\r\n}) as any);\r\n\r\ntype CampaignsResult = {\r\n value: ICampaign[];\r\n};\r\n\r\nasync function fetchCampaigns(accountOption: SelectorOption, store: AccountCampaignDataStore) {\r\n const accountId = accountOption.id;\r\n const customerId = (accountOption.parent as SelectorOption).id;\r\n const { token } = store.state;\r\n const { odataURI } = store.state;\r\n\r\n return (await odata.get, CampaignsResult>(\r\n `/Customers(${customerId})/Accounts(${accountId})/Campaigns`,\r\n {\r\n headers: {\r\n 'x-ms-lastwritetime': 'Max',\r\n },\r\n data: {\r\n $top: 10000000, // FixMe: We should not pass this param, but the API still need this one\r\n $count: true,\r\n $select: 'Id,Name,Status',\r\n $orderby: 'Name',\r\n },\r\n oDataToken: token,\r\n host: odataURI,\r\n path: '/Advertiser/V2',\r\n }\r\n )).value;\r\n}\r\n\r\nfunction fetchSelectedScopeFilters() {\r\n const global = (window as any);\r\n if (global.reporting && global.reporting.accountTree && global.reporting.accountTree.selectedScopeFilters) {\r\n return global.reporting.accountTree.selectedScopeFilters;\r\n }\r\n return [];\r\n}\r\n\r\nexport async function fetchDefaultSelectedOptions(store: AccountCampaignDataStore) {\r\n const filters = fetchSelectedScopeFilters();\r\n // eslint-disable-next-line no-return-await\r\n return await buildDefaultSelectedOptions(filters, store);\r\n}\r\n\r\nexport async function buildDefaultSelectedOptions(filters: IFilter[], store: AccountCampaignDataStore) {\r\n const selectedOptions: SelectorOption[] = [];\r\n const { rootOption } = store.state;\r\n\r\n function findCustomerAndAccountFromMultiOptions(options: SelectorOption[], filter: SelectorOption): SelectorOption | null {\r\n for (let index = 0; index < options.length; index++) {\r\n const option = options[index];\r\n const res = findCustomerAndAccount(option, filter);\r\n if (res) { return res; }\r\n }\r\n return null;\r\n }\r\n\r\n function findCustomerAndAccount(option: SelectorOption, filter: SelectorOption): SelectorOption | null {\r\n let foundOption: SelectorOption | null = null;\r\n if (option.optionType === filter.optionType && option.id === filter.id) {\r\n foundOption = option;\r\n } else if (option.childFetched) {\r\n option.children.forEach((child) => {\r\n findCustomerAndAccount(child, filter);\r\n });\r\n for (let i = 0; i < option.children.length; i++) {\r\n const found = findCustomerAndAccount(option.children[i], filter);\r\n if (found != null) {\r\n foundOption = found;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return foundOption;\r\n }\r\n\r\n const campaignFilter = _.find(filters, filter => filter.FilterKey === FilterKeyType.campaign);\r\n\r\n await Promise.all(filters.map(async (filter) => {\r\n if (filter.FilterKey === FilterKeyType.customer || filter.FilterKey === FilterKeyType.account) {\r\n const optionType =\r\n filter.FilterKey === FilterKeyType.customer\r\n ? AccountCampaignOptionType.customer\r\n : AccountCampaignOptionType.account;\r\n filter.Values.forEach((v) => {\r\n const found = findCustomerAndAccountFromMultiOptions(\r\n [rootOption, ...(store.state.searchHistorySelectorOptions ?? [])],\r\n new SelectorOption(v, 'filter-unknown', { optionType })\r\n );\r\n if (found) {\r\n selectedOptions.push(found);\r\n }\r\n });\r\n }\r\n\r\n if (filter.FilterKey === FilterKeyType.undeterminedAccounts && campaignFilter) {\r\n await Promise.all(filter.Values.map(async (v) => {\r\n const foundAccount = findCustomerAndAccountFromMultiOptions(\r\n [rootOption, ...(store.state.searchHistorySelectorOptions ?? [])],\r\n new SelectorOption(v, 'filter-unknown', { optionType: AccountCampaignOptionType.account })\r\n );\r\n if (foundAccount !== null) {\r\n await store.loadCampaigns(foundAccount as SelectorExpandableOption, () => { });\r\n campaignFilter.Values.forEach((v) => {\r\n const campaignOption = _.find(foundAccount.children, child => child.id === v);\r\n if (campaignOption !== undefined) {\r\n selectedOptions.push(campaignOption);\r\n }\r\n });\r\n } else if (store.state.accountId) { // under current account scope, find selected campaigns(create similar)\r\n campaignFilter.Values.forEach((v) => {\r\n const campaignOption = _.find(store.state.rootOption.children, child => child.id === v);\r\n if (campaignOption !== undefined) {\r\n selectedOptions.push(campaignOption);\r\n }\r\n });\r\n }\r\n }));\r\n }\r\n }));\r\n\r\n const allAccountIds = rootOption.midTraverseTree().filter(o => o.optionType === AccountCampaignOptionType.account).map(o => o.id);\r\n const selectedAccountIds = selectedOptions.map(o => o.id);\r\n\r\n // If all accounts are selected, override selectedOptions\r\n if (_.isEqual(allAccountIds.sort(), selectedAccountIds.sort())) {\r\n return [];\r\n }\r\n\r\n return selectedOptions;\r\n}\r\n\r\nfunction buildCustomerAccountOptionTree(\r\n store: AccountCampaignDataStore,\r\n entities: ICustomerAccountBase[] | null | undefined,\r\n parentOption: SelectorOption\r\n) {\r\n if (entities && entities.length !== 0) {\r\n if (store.state.scopeFilterLevel === ScopeFilterLevelType.Customer) {\r\n entities.forEach((entity) => {\r\n if (entity.isCustomer) {\r\n const customer = entity as ICustomerNode;\r\n const customerOption = new SelectorOption(customer.id.toString(), customer.name, {\r\n optionType: AccountCampaignOptionType.customer,\r\n number: customer.number,\r\n unAuthorized: customer.unAuthorized,\r\n });\r\n parentOption.addChild(customerOption);\r\n buildCustomerAccountOptionTree(store, customer.children, parentOption);\r\n }\r\n });\r\n return;\r\n }\r\n\r\n entities.forEach((entity) => {\r\n if (entity.isCustomer) {\r\n const customer = entity as ICustomerNode;\r\n const customerOption = new SelectorOption(customer.id.toString(), customer.name, {\r\n optionType: AccountCampaignOptionType.customer,\r\n number: customer.number,\r\n unAuthorized: customer.unAuthorized,\r\n });\r\n parentOption.addChild(customerOption);\r\n buildCustomerAccountOptionTree(store, customer.children, customerOption);\r\n } else {\r\n const account = entity as IAccountNode;\r\n const accountOption = new SelectorExpandableOption(\r\n account.id.toString(),\r\n account.name,\r\n AccountCampaignContainerType.campaign,\r\n {\r\n optionType: AccountCampaignOptionType.account,\r\n number: account.number,\r\n }\r\n );\r\n parentOption.addChild(accountOption);\r\n }\r\n });\r\n }\r\n}\r\n\r\nasync function buildCampaignOptionList(campaigns: ICampaign[], parentOption: SelectorOption) {\r\n parentOption.resetChildren();\r\n return campaigns.forEach((campaign: ICampaign) => {\r\n const selectorOption: SelectorOption = new SelectorOption(campaign.Id.toString(), campaign.Name, {\r\n optionType: AccountCampaignOptionType.campaign,\r\n });\r\n parentOption.addChild(selectorOption);\r\n });\r\n}\r\n\r\nexport async function fetchAndBuildCustomerAccountOptionTree(store: AccountCampaignDataStore, searchTerm: string) {\r\n const {\r\n rootCustomerId: customerId,\r\n accountId,\r\n hierarchyMaxAccountLimit,\r\n scopeFilterLevel,\r\n customFetchAndBuildAccountOptionList,\r\n } = store.state;\r\n\r\n let rootOption;\r\n\r\n if ((scopeFilterLevel === ScopeFilterLevelType.Campaign) && accountId) {\r\n // In account scope, only show campaigns within current account\r\n rootOption = new SelectorRootOption(AccountCampaignContainerType.campaign, accountId, 'root', { optionType: AccountCampaignOptionType.account });\r\n rootOption.parent = new SelectorOption(customerId, 'dummy-customer');\r\n\r\n await fetchAndBuildCampaignOptionList(rootOption, store);\r\n } else {\r\n rootOption = new SelectorRootOption(AccountCampaignContainerType.customerAccount, customerId, 'root');\r\n\r\n if (customFetchAndBuildAccountOptionList) {\r\n await customFetchAndBuildAccountOptionList(rootOption);\r\n } else {\r\n const customers = await fetchCustomerHierarchy(searchTerm, hierarchyMaxAccountLimit);\r\n buildCustomerAccountOptionTree(store, customers, rootOption);\r\n }\r\n }\r\n\r\n return rootOption;\r\n}\r\n\r\nexport async function fetchAndBuildCampaignOptionList(\r\n accountOption: SelectorExpandableOption,\r\n store: AccountCampaignDataStore\r\n) {\r\n const { customFetchAndBuildCampaignOptionList } = store.state;\r\n if (customFetchAndBuildCampaignOptionList) {\r\n await customFetchAndBuildCampaignOptionList(accountOption);\r\n return accountOption;\r\n }\r\n const campaigns = await fetchCampaigns(accountOption, store);\r\n buildCampaignOptionList(campaigns, accountOption);\r\n return accountOption;\r\n}\r\n\r\nexport async function buildInitialDoubleListOptions(store: AccountCampaignDataStore) {\r\n const rootOption = await fetchAndBuildCustomerAccountOptionTree(store, '');\r\n return rootOption;\r\n}\r\n\r\n// ==================old api, will remove it when ccPilot is opened forever=====================\r\ninterface ICustomerAccountBaseOld {\r\n title: string;\r\n attr: {\r\n scope: string;\r\n tId: number;\r\n status: string;\r\n number: string;\r\n };\r\n}\r\n\r\ninterface ICustomerOld extends ICustomerAccountBaseOld {\r\n children: IAccountOld[];\r\n}\r\n\r\ninterface IAccountOld extends ICustomerAccountBaseOld { }\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\r\nasync function fetchCustomerHierarchyOld(customerId: string, userId: string) {\r\n return await http.get('/reporting/navigationtree/treenodes', {\r\n data: {\r\n tree: 'Customers',\r\n id: 0,\r\n parentId: 0,\r\n cid: customerId,\r\n uid: userId,\r\n ReqId: generateGuid(),\r\n },\r\n contentType: 'application/x-www-form-urlencoded; charset=UTF-8',\r\n xhrFields: {\r\n withCredentials: true,\r\n },\r\n }) as ICustomerAccountBaseOld[];\r\n}\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\r\nasync function buildCustomerAccountOptionTreeOld(\r\n store: AccountCampaignDataStore,\r\n entities: ICustomerAccountBaseOld[] | null | undefined,\r\n parentOption: SelectorOption\r\n) {\r\n if (entities && entities.length !== 0) {\r\n if (store.state.scopeFilterLevel === ScopeFilterLevelType.Customer) {\r\n entities.forEach((entity) => {\r\n if (entity.attr.scope === 'Customers') {\r\n const customer = entity as ICustomerOld;\r\n const customerOption = new SelectorOption(customer.attr.tId.toString(), customer.title, {\r\n optionType: AccountCampaignOptionType.customer,\r\n number: customer.attr.number,\r\n });\r\n parentOption.addChild(customerOption);\r\n buildCustomerAccountOptionTreeOld(store, customer.children, parentOption);\r\n }\r\n });\r\n return;\r\n }\r\n\r\n const sortedEntites =\r\n _.sortBy(\r\n _.filter(entities, entity => entity.attr.scope !== 'Customers'),\r\n account => account.attr.status\r\n )\r\n .concat(_.filter(entities, entity => entity.attr.scope === 'Customers'));\r\n\r\n sortedEntites.forEach((entity) => {\r\n if (entity.attr.scope === 'Customers') {\r\n const customer = entity as ICustomerOld;\r\n const customerOption = new SelectorOption(customer.attr.tId.toString(), customer.title, {\r\n optionType: AccountCampaignOptionType.customer,\r\n number: customer.attr.number,\r\n });\r\n parentOption.addChild(customerOption);\r\n buildCustomerAccountOptionTreeOld(store, customer.children, customerOption);\r\n } else {\r\n const account = entity as IAccountOld;\r\n const accountOption = new SelectorExpandableOption(\r\n account.attr.tId.toString(),\r\n account.title,\r\n AccountCampaignContainerType.campaign,\r\n {\r\n optionType: AccountCampaignOptionType.account,\r\n number: account.attr.number,\r\n extra: {\r\n status: account.attr.status,\r\n },\r\n }\r\n );\r\n parentOption.addChild(accountOption);\r\n }\r\n });\r\n }\r\n}\r\n\r\n\r\nexport async function fetchAndBuildSearchCustomerList(store: AccountCampaignDataStore, searchText: string) {\r\n const customerId = store.state.rootCustomerId;\r\n const { userId } = store.state;\r\n\r\n const rootOption = new SelectorRootOption(AccountCampaignContainerType.customerAccount, customerId, 'root');\r\n const searchCustomers = await fetchSearchCustomerList(store, customerId, userId, searchText);\r\n buildSearchCustomerList(searchCustomers, rootOption);\r\n\r\n return rootOption;\r\n}\r\n\r\nfunction buildSearchCustomerList(\r\n customers: ISearchCustomer[] | null | undefined,\r\n parentOption: SelectorOption\r\n) {\r\n if (customers && customers.length !== 0) {\r\n _.forEach(customers, (customer) => {\r\n const customerOption = new SelectorOption(\r\n customer.advertiserCustomerId.toString(),\r\n customer.advertiserCustomerName,\r\n {\r\n optionType: AccountCampaignOptionType.customer,\r\n number: '',\r\n extra: {\r\n serviceLevel: customer.serviceLevel,\r\n },\r\n }\r\n );\r\n parentOption.addChild(customerOption);\r\n });\r\n }\r\n}\r\n\r\nasync function fetchSearchCustomerList(store: AccountCampaignDataStore, customerId: string, userId: string, searchText: string) {\r\n store.setState({\r\n isLoading: true,\r\n });\r\n return await http.get('/reporting/navigationtree/SearchCustomers', {\r\n data: {\r\n cid: customerId,\r\n uid: userId,\r\n searchText,\r\n ReqId: generateGuid(),\r\n },\r\n xhrFields: {\r\n withCredentials: true,\r\n },\r\n }).finally(() => {\r\n store.setState({\r\n isLoading: false,\r\n });\r\n }) as ISearchCustomer[];\r\n}\r\n\r\nexport async function fetchAndBuildSearchAccountList(store: AccountCampaignDataStore, searchText: string) {\r\n const customerId = store.state.rootCustomerId;\r\n const { userId } = store.state;\r\n\r\n const rootOption = new SelectorRootOption(AccountCampaignContainerType.customerAccount, customerId, 'root');\r\n const searchAccounts = await fetchSearchAccountList(store, customerId, userId, searchText);\r\n buildSearchAccountList(searchAccounts, rootOption);\r\n\r\n return rootOption;\r\n}\r\n\r\nfunction buildSearchAccountList(\r\n accounts: ISearchAccount[] | null | undefined,\r\n parentOption: SelectorOption\r\n) {\r\n if (accounts && accounts.length !== 0) {\r\n _.sortBy(accounts, account => account.status)\r\n .forEach((account) => {\r\n const accountOption = new SelectorExpandableOption(\r\n account.accountId.toString(),\r\n account.accountName,\r\n AccountCampaignContainerType.campaign,\r\n {\r\n optionType: AccountCampaignOptionType.account,\r\n extra: {\r\n status: account.status,\r\n advertiserCustomerName: account.advertiserCustomerName,\r\n },\r\n }\r\n );\r\n parentOption.addChild(accountOption);\r\n });\r\n }\r\n}\r\n\r\nasync function fetchSearchAccountList(store: AccountCampaignDataStore, customerId: string, userId: string, searchText: string) {\r\n store.setState({\r\n isLoading: true,\r\n });\r\n return await http.get('/reporting/navigationtree/SearchAccounts', {\r\n data: {\r\n cid: customerId,\r\n uid: userId,\r\n searchText,\r\n ReqId: generateGuid(),\r\n },\r\n xhrFields: {\r\n withCredentials: true,\r\n },\r\n }).finally(() => {\r\n store.setState({\r\n isLoading: false,\r\n });\r\n }) as ISearchAccount[];\r\n}\r\n","/* eslint-disable no-restricted-globals */\r\nimport _ from 'underscore';\r\nimport { StateStore } from '@bingads-webui/state-store';\r\nimport { SelectorRootOption, SelectorOption, SelectorExpandableOption } from '../../double-list';\r\nimport {\r\n AccountCampaignContainerType,\r\n IFeaturePilots,\r\n AccountCampaignOptionType,\r\n IFilter,\r\n FilterKeyType,\r\n CampaignReportScopeType,\r\n RdsSelected,\r\n ScopeFilterLevelType,\r\n ScopeSelectorLevelType,\r\n} from '../account-campaign-selector.types';\r\n\r\nimport {\r\n fetchAndBuildCustomerAccountOptionTree,\r\n fetchAndBuildCampaignOptionList,\r\n buildInitialDoubleListOptions,\r\n fetchDefaultSelectedOptions,\r\n buildDefaultSelectedOptions,\r\n fetchAndBuildSearchAccountList,\r\n fetchAndBuildSearchCustomerList,\r\n} from './account-campaign-data-processor';\r\n\r\ninterface IStateType {\r\n rootOption: SelectorRootOption;\r\n searchRootOption: SelectorRootOption;\r\n initRootOption: SelectorRootOption;\r\n loading: boolean;\r\n defaultCampaignParentOption: null | SelectorOption;\r\n searchTerm: string,\r\n campaignSearchStr: string,\r\n customerAccountSearchStr: string,\r\n isOnApiSearch: boolean;\r\n isCreateSimilar: boolean;\r\n defaultSelectedOption: SelectorOption[];\r\n rootCustomerId: string;\r\n userId: string;\r\n accountId: string;\r\n isLoading: boolean;\r\n /**\r\n * This is for initialize, when opening account selector, selected items will be filtered by knowning SelectorOptions.\r\n * However, default knowning SelectorOptions might not contain search ones, so we must store the search history results.\r\n * And then pass it when next time open the component.\r\n */\r\n searchHistorySelectorOptions?: SelectorOption[];\r\n\r\n // page level params\r\n ccBaseUrl: string;\r\n token: string;\r\n odataURI: string;\r\n featurePilots: {\r\n IsReportingUINewDesignEnabled: boolean;\r\n };\r\n forceAccountScope: boolean;\r\n scopeFilterLevel: string;\r\n isInternalReport: boolean;\r\n isReportingUIPhaseNext: boolean;\r\n scopeSelectorLevel: string;\r\n maxAccountLimit: number;\r\n hierarchyMaxAccountLimit: number;\r\n isBeyondAccountLimit: boolean;\r\n refresh: number;\r\n customFetchAndBuildCampaignOptionList?: (rootOption: SelectorExpandableOption) => Promise;\r\n customFetchAndBuildAccountOptionList?: (rootOption: SelectorExpandableOption) => Promise;\r\n}\r\n\r\nexport class AccountCampaignDataStore extends StateStore {\r\n constructor() {\r\n const defaultState = {\r\n // component level params\r\n rootOption: new SelectorRootOption(AccountCampaignContainerType.customerAccount),\r\n searchRootOption: new SelectorRootOption(AccountCampaignContainerType.customerAccount),\r\n initRootOption: new SelectorRootOption(AccountCampaignContainerType.customerAccount),\r\n loading: true,\r\n defaultCampaignParentOption: null,\r\n searchTerm: '',\r\n campaignSearchStr: '',\r\n customerAccountSearchStr: '',\r\n isOnApiSearch: false,\r\n isCreateSimilar: false,\r\n // eslint-disable-next-line no-array-constructor\r\n defaultSelectedOption: new Array(),\r\n rootCustomerId: '',\r\n userId: '',\r\n accountId: '',\r\n isLoading: false,\r\n\r\n // page level params\r\n ccBaseUrl: '',\r\n token: '',\r\n odataURI: '',\r\n featurePilots: {\r\n IsReportingUINewDesignEnabled: false,\r\n },\r\n forceAccountScope: false,\r\n scopeFilterLevel: '',\r\n isInternalReport: false,\r\n isReportingUIPhaseNext: false,\r\n scopeSelectorLevel: ScopeSelectorLevelType.Customer,\r\n maxAccountLimit: 2000,\r\n hierarchyMaxAccountLimit: 1000,\r\n isBeyondAccountLimit: false,\r\n // refresh control\r\n refresh: 0,\r\n };\r\n super(defaultState);\r\n }\r\n\r\n initialSetUp = async (\r\n odataURI: string,\r\n token: string,\r\n ccBaseUrl: string,\r\n customerId: string,\r\n userId: string,\r\n accountId: string | undefined,\r\n featurePilots: IFeaturePilots,\r\n isCreateSimilar: boolean,\r\n defaultSelected: RdsSelected,\r\n allSelected: boolean,\r\n onSelectedChange: (value: RdsSelected) => void,\r\n forceAccountScope: boolean,\r\n scopeFilterLevel: string,\r\n isInternalReport: boolean | undefined,\r\n isReportingUIPhaseNext: boolean | undefined,\r\n searchHistorySelectorOptions?: SelectorOption[],\r\n customFetchAndBuildCampaignOptionList?: (rootOption: SelectorExpandableOption) => Promise,\r\n customFetchAndBuildAccountOptionList?: (rootOption: SelectorExpandableOption) => Promise\r\n ) => {\r\n this.setState({\r\n odataURI,\r\n token,\r\n ccBaseUrl,\r\n featurePilots,\r\n isCreateSimilar,\r\n rootCustomerId: customerId,\r\n userId,\r\n accountId,\r\n forceAccountScope,\r\n scopeFilterLevel,\r\n isInternalReport,\r\n isReportingUIPhaseNext,\r\n searchHistorySelectorOptions,\r\n customFetchAndBuildCampaignOptionList,\r\n customFetchAndBuildAccountOptionList,\r\n });\r\n\r\n const rootOption = await buildInitialDoubleListOptions(this);\r\n this.setState({\r\n rootOption,\r\n initRootOption: rootOption,\r\n });\r\n\r\n if (this.countAccount(rootOption.children) >= this.state.hierarchyMaxAccountLimit) {\r\n this.setState({\r\n isBeyondAccountLimit: true,\r\n });\r\n }\r\n\r\n // Once the customer hierarchy is constructed, notify parent view\r\n onSelectedChange(this.toRdsSelected(allSelected, []));\r\n\r\n let defaultSelectedOption: SelectorOption[] = [];\r\n if (isCreateSimilar) {\r\n if (defaultSelected) {\r\n const filters = this.fromRdsSelected(defaultSelected);\r\n defaultSelectedOption = await buildDefaultSelectedOptions(filters, this);\r\n } else {\r\n defaultSelectedOption = await fetchDefaultSelectedOptions(this);\r\n }\r\n }\r\n\r\n this.setState({ defaultSelectedOption, loading: false });\r\n };\r\n\r\n countAccount = (optionList: SelectorOption[]) => {\r\n let accountNumber = 0;\r\n _.map(optionList, (option) => {\r\n if (option.optionType === 'account') {\r\n accountNumber += 1;\r\n } else if (_.isArray(option.children) && option.children.length > 0) {\r\n accountNumber += this.countAccount(option.children);\r\n }\r\n });\r\n return accountNumber;\r\n };\r\n\r\n onQueryCustomerAccountChange = (searchText: string) => {\r\n this.setState({\r\n customerAccountSearchStr: searchText,\r\n });\r\n };\r\n\r\n onQueryCampaignChange = (searchText: string) => {\r\n this.setState({\r\n campaignSearchStr: searchText,\r\n });\r\n };\r\n\r\n searchCustomerAccount = async (searchText: string) => {\r\n if (this.state.scopeFilterLevel === ScopeFilterLevelType.Customer ||\r\n (this.state.isInternalReport && this.state.scopeSelectorLevel === ScopeSelectorLevelType.Customer)\r\n ) {\r\n await this.searchCustomer(searchText);\r\n } else {\r\n await this.searchAccount(searchText);\r\n }\r\n };\r\n\r\n searchCustomer = async (searchText: string) => {\r\n if (searchText === '' || this.state.isLoading) {\r\n return;\r\n }\r\n const searchOption = await fetchAndBuildSearchCustomerList(this, searchText);\r\n const prevSearchHistorySelectorOptions = this.state.searchHistorySelectorOptions ?? [];\r\n const newSearchHistorySelectorOptions: SelectorOption[] | undefined = [...prevSearchHistorySelectorOptions, searchOption];\r\n this.setState({\r\n searchRootOption: searchOption,\r\n rootOption: searchOption,\r\n isOnApiSearch: true,\r\n searchTerm: searchText,\r\n searchHistorySelectorOptions: newSearchHistorySelectorOptions,\r\n });\r\n };\r\n\r\n searchAccount = async (searchText: string) => {\r\n if (searchText === '' || this.state.isLoading) {\r\n return;\r\n }\r\n\r\n // internal report search, internal user can sesarch all accounts\r\n if (this.state.isInternalReport) {\r\n if (searchText.length <= 2) return;\r\n const searchOption = await fetchAndBuildSearchAccountList(this, searchText);\r\n this.setState({\r\n searchRootOption: searchOption,\r\n rootOption: searchOption,\r\n isOnApiSearch: true,\r\n searchTerm: searchText,\r\n });\r\n return;\r\n }\r\n\r\n // root option has more children than maxAccountLimit\r\n if (this.state.isBeyondAccountLimit) {\r\n let searchOption = new SelectorRootOption(AccountCampaignContainerType.customerAccount);\r\n searchOption = await fetchAndBuildCustomerAccountOptionTree(this, searchText);\r\n this.setState({\r\n searchRootOption: searchOption,\r\n rootOption: searchOption,\r\n isOnApiSearch: true,\r\n searchTerm: searchText,\r\n });\r\n } else {\r\n this.setState({\r\n searchTerm: searchText,\r\n isOnApiSearch: false,\r\n });\r\n }\r\n };\r\n\r\n\r\n clearSearchCustomerAccount = () => {\r\n this.setState({\r\n rootOption: this.state.initRootOption,\r\n customerAccountSearchStr: '',\r\n searchTerm: '',\r\n isOnApiSearch: false,\r\n });\r\n };\r\n\r\n searchCampaign = (searchText: string) => {\r\n this.setState({\r\n searchTerm: searchText,\r\n });\r\n };\r\n\r\n clearSearchCampaign = () => {\r\n this.setState({\r\n searchTerm: '',\r\n campaignSearchStr: '',\r\n });\r\n };\r\n\r\n selectScopeLevel = (scopeLevel: string) => {\r\n this.setState({\r\n scopeSelectorLevel: scopeLevel,\r\n });\r\n };\r\n\r\n loadCampaigns = async (accountOption: SelectorExpandableOption, callback: () => void) => {\r\n await fetchAndBuildCampaignOptionList(accountOption, this);\r\n callback();\r\n };\r\n\r\n drillDown = async (accountOption: SelectorExpandableOption) => {\r\n if (!accountOption.childFetched) {\r\n await fetchAndBuildCampaignOptionList(accountOption, this);\r\n }\r\n this.setState({\r\n rootOption: accountOption as SelectorRootOption,\r\n searchTerm: '',\r\n campaignSearchStr: '',\r\n });\r\n };\r\n\r\n drillUp = () => {\r\n if (this.state.isOnApiSearch) {\r\n this.setState({\r\n rootOption: this.state.searchRootOption,\r\n searchTerm: this.state.customerAccountSearchStr,\r\n });\r\n } else {\r\n this.setState({\r\n rootOption: this.state.initRootOption,\r\n searchTerm: this.state.customerAccountSearchStr,\r\n });\r\n }\r\n };\r\n\r\n fromRdsSelected(rdsSelected: RdsSelected) {\r\n const filters = [\r\n {\r\n FilterKey: FilterKeyType.customer,\r\n Values: _.map(rdsSelected.CustomerScopes, v => String(v)),\r\n },\r\n {\r\n FilterKey: FilterKeyType.account,\r\n Values: _.map(rdsSelected.AccountIds, v => String(v)),\r\n },\r\n {\r\n FilterKey: FilterKeyType.campaign,\r\n Values: _.map(rdsSelected.CampaignReportScopes, scope => String(scope.CampaignId)),\r\n },\r\n {\r\n FilterKey: FilterKeyType.undeterminedAccounts,\r\n Values: _.map(rdsSelected.CampaignReportScopes, scope => String(scope.AccountId)),\r\n },\r\n ];\r\n\r\n return filters;\r\n }\r\n\r\n toRdsSelected(userAllSelected: boolean, userSelected: SelectorOption[]) {\r\n let selected = [];\r\n let allSelected = false;\r\n if (userAllSelected || (userSelected.length === 1 && userSelected[0] instanceof SelectorRootOption)) {\r\n // If in account scope reporting, do not split account id into campaign ids\r\n if (this.state.rootOption.optionType === AccountCampaignOptionType.account) {\r\n selected = [this.state.rootOption];\r\n } else {\r\n selected = [...this.state.rootOption.children];\r\n }\r\n allSelected = true;\r\n } else {\r\n selected = [...userSelected];\r\n allSelected = false;\r\n }\r\n\r\n const accountIds: number[] = [];\r\n const campaignReportScopes: CampaignReportScopeType[] = [];\r\n const customerScopes: number[] = [];\r\n\r\n while (selected.length > 0) {\r\n const option: SelectorOption = selected.shift()!;\r\n if (option.optionType === AccountCampaignOptionType.customer) {\r\n customerScopes.push(Number(option.id));\r\n } else if (option.optionType === AccountCampaignOptionType.account) {\r\n accountIds.push(Number(option.id));\r\n } else {\r\n campaignReportScopes.push({\r\n AccountId: Number((option.parent as SelectorOption).id),\r\n CampaignId: Number(option.id),\r\n });\r\n }\r\n }\r\n\r\n return {\r\n allSelected,\r\n AccountIds: accountIds,\r\n CustomerScopes: customerScopes,\r\n CampaignReportScopes: campaignReportScopes,\r\n };\r\n }\r\n\r\n getSelected(userAllSelected: boolean, userSelected: SelectorOption[]) {\r\n const customerFilter: IFilter = { FilterKey: FilterKeyType.customer, Values: [] };\r\n const accountFilter: IFilter = { FilterKey: FilterKeyType.account, Values: [] };\r\n const campaignFilter: IFilter = { FilterKey: FilterKeyType.campaign, Values: [] };\r\n const underminedAccountFilter: IFilter = { FilterKey: FilterKeyType.undeterminedAccounts, Values: [] };\r\n\r\n let selected = [];\r\n let allSelected = false;\r\n if (userAllSelected || (userSelected.length === 1 && userSelected[0] instanceof SelectorRootOption)) {\r\n selected = [...this.state.rootOption.children];\r\n allSelected = true;\r\n } else {\r\n selected = [...userSelected];\r\n allSelected = false;\r\n }\r\n\r\n // split customer into accounts\r\n selected.forEach((option: SelectorOption) => {\r\n if (option.optionType === AccountCampaignOptionType.customer) {\r\n customerFilter.Values.push(`${option.id}`);\r\n\r\n const childAccounts = option.midTraverseTree().filter(o => o.optionType === AccountCampaignOptionType.account);\r\n childAccounts.forEach((o) => {\r\n accountFilter.Values.push(`${o.id}`);\r\n });\r\n } else if (option.optionType === AccountCampaignOptionType.account) {\r\n accountFilter.Values.push(`${option.id}`);\r\n } else {\r\n campaignFilter.Values.push(`${option.id}`);\r\n // pop campaigns into undermined accounts\r\n underminedAccountFilter.Values.push(`${(option.parent as SelectorOption).id}`);\r\n }\r\n });\r\n\r\n return {\r\n Filters: [customerFilter, accountFilter, campaignFilter, underminedAccountFilter],\r\n allSelected,\r\n };\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\nimport _ from 'underscore';\r\nimport { withStateStore } from '@bingads-webui/with-state-store';\r\nimport { Radio, Col, Row } from '@bingads-webui-react/primitive';\r\n// @ts-ignore\r\nimport { withPerfMarker } from '@bingads-webui/performance-marker-react-wrapper';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\n// @ts-ignore\r\nimport { withCcJsData } from '@bingads-webui-cc-react/js-data-rest';\r\nimport {\r\n IAccountCampaignSelectorInternalProps,\r\n IAccountCampaignSelectorProps,\r\n ScopeFilterLevelType\r\n} from './account-campaign-selector.types';\r\nimport { ContainerConfigFactory } from './acccount-campaign-container-config';\r\nimport { DoubleList, SelectorOption } from '../double-list';\r\nimport AccountCampaignResultBox from './account-campaign-result-box';\r\nimport AccountCampaignSelectorBox from './account-campaign-selector-box';\r\nimport classes, { getStyle } from './styles';\r\nimport { AccountCampaignDataStore, setCCJsDataStore } from './account-campaign-data-store';\r\n\r\n\r\ninterface AccountCampaignSelectorInternalState {\r\n allSelected: boolean;\r\n}\r\n\r\nexport class AccountCampaignSelectorInternal extends Component<\r\n IAccountCampaignSelectorInternalProps,\r\n AccountCampaignSelectorInternalState\r\n> {\r\n selected: SelectorOption[];\r\n allSelectedCorrected: boolean = false;\r\n\r\n // a book keeper to call finishedLoading only once\r\n loaded: boolean = false;\r\n\r\n static defaultProps = {\r\n isCreateSimilar: false,\r\n allSelected: true,\r\n onSelectedChange: _.noop,\r\n classes,\r\n };\r\n\r\n constructor(props: IAccountCampaignSelectorInternalProps) {\r\n super(props);\r\n if (props.ccJsData) {\r\n setCCJsDataStore(props.ccJsData)\r\n }\r\n this.selected = [];\r\n this.state = {\r\n allSelected: this.props.allSelected,\r\n };\r\n }\r\n\r\n setAllSelected = (allSelected: boolean) => {\r\n this.setState({ allSelected });\r\n this.props.onSelectedChange(\r\n this.props.store.toRdsSelected(allSelected, this.selected),\r\n { searchHistorySelectorOptions: this.props.store.state.searchHistorySelectorOptions }\r\n );\r\n };\r\n\r\n setSelected = (selected: any) => {\r\n this.selected = selected;\r\n this.props.onSelectedChange(\r\n this.props.store.toRdsSelected(this.state.allSelected, selected),\r\n { searchHistorySelectorOptions: this.props.store.state.searchHistorySelectorOptions }\r\n );\r\n };\r\n\r\n generateBeyondAccountLimitText = (scopeFilterLevel: string) => {\r\n if (scopeFilterLevel === ScopeFilterLevelType.Account || this.props.store.state.forceAccountScope) {\r\n return this.props.i18n.getString(_TL_('There are more accounts than can be displayed. Use the search box to find a specific account.'));\r\n }\r\n // TODO: Can this.props.store.state.isBeyondAccountLimit be true for ScopeFilterLevelType.Customer?\r\n // TODO: If yes, uncomment and update text if needed\r\n // else if (scopeFilterLevel === ScopeFilterLevelType.Customer) {\r\n // return this.props.i18n.getString(_TL_('Some manager accounts cannot be displayed since they have many accounts. Use the search box to find a specific manager account.'));\r\n // }\r\n\r\n return this.props.i18n.getString(_TL_('There are more accounts and campaigns than can be displayed. Use the search box to find a specific account or campaign.'));\r\n };\r\n\r\n render() {\r\n // eslint-disable-next-line @typescript-eslint/no-shadow\r\n const { classes } = this.props;\r\n const containerMap = ContainerConfigFactory.create(this.props.store);\r\n const selectorBoxConfig =\r\n this.props.store.state.rootOption.containerKey === 'customerAccount'\r\n ? containerMap.customerAccount\r\n : containerMap.campaign;\r\n\r\n const { scopeFilterLevel } = this.props.store.state;\r\n let allStr; let\r\nspecificStr;\r\n\r\n if (this.props.store.state.forceAccountScope) {\r\n allStr = this.props.i18n.getString(_TL_('All accounts'));\r\n specificStr = this.props.i18n.getString(_TL_('Specific accounts'));\r\n } else {\r\n switch (scopeFilterLevel) {\r\n case ScopeFilterLevelType.Account:\r\n allStr = this.props.i18n.getString(_TL_('All accounts'));\r\n specificStr = this.props.i18n.getString(_TL_('Specific accounts'));\r\n break;\r\n case ScopeFilterLevelType.Customer:\r\n allStr = this.props.i18n.getString(_TL_('Current manager account'));\r\n specificStr = this.props.i18n.getString(_TL_('Specific manager accounts'));\r\n break;\r\n default:\r\n if (this.props.store.state.accountId) {\r\n allStr = this.props.i18n.getString(_TL_('All campaigns within current account'));\r\n specificStr = this.props.i18n.getString(_TL_('Specific campaigns within current account'));\r\n } else {\r\n allStr = this.props.i18n.getString(_TL_('All accounts and campaigns'));\r\n specificStr = this.props.i18n.getString(_TL_('Specific accounts and campaigns'));\r\n }\r\n }\r\n }\r\n\r\n if (!this.props.store.state.loading\r\n && !this.loaded\r\n && this.props.finishedLoading) {\r\n this.loaded = true;\r\n this.props.finishedLoading();\r\n }\r\n\r\n return !this.props.store.state.loading ? (\r\n
\r\n {!this.props.hideRadioButtons && \r\n \r\n this.setAllSelected(true)}>\r\n {allStr}\r\n \r\n this.setAllSelected(false)}>\r\n {specificStr}\r\n \r\n \r\n }\r\n \r\n {\r\n this.props.store.state.isBeyondAccountLimit ?\r\n
\r\n {this.generateBeyondAccountLimitText(scopeFilterLevel)}\r\n
: ''\r\n }\r\n \r\n
\r\n
\r\n ) : (\r\n
\r\n );\r\n }\r\n\r\n componentDidMount() {\r\n this.props.store.initialSetUp(\r\n this.props.odataURI,\r\n this.props.ccToken,\r\n this.props.ccBaseUrl,\r\n this.props.customerId,\r\n this.props.userId,\r\n this.props.accountId,\r\n this.props.featurePilots,\r\n this.props.isCreateSimilar,\r\n this.props.defaultSelected,\r\n this.props.allSelected,\r\n this.props.onSelectedChange,\r\n this.props.forceAccountScope,\r\n this.props.scopeFilterLevel,\r\n this.props.isInternalReport,\r\n this.props.isReportingUIPhaseNext,\r\n this.props.searchHistorySelectorOptions,\r\n this.props.customFetchAndBuildCampaignOptionList,\r\n this.props.customFetchAndBuildAccountOptionList\r\n );\r\n }\r\n\r\n componentDidUpdate() {\r\n this.correctDefaultAllSelected();\r\n }\r\n\r\n correctDefaultAllSelected() {\r\n const defaultSelectedOptions = this.props.store.state.defaultSelectedOption;\r\n if (defaultSelectedOptions.length > 0 && !this.allSelectedCorrected) {\r\n this.allSelectedCorrected = true;\r\n setTimeout(() => {\r\n this.setAllSelected(false);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Transform the selected type into old api data format\r\n */\r\n getSelected() {\r\n return this.props.store.getSelected(this.state.allSelected, this.selected);\r\n }\r\n}\r\n\r\n\r\nexport const AccountCampaignSelector: any = withCcJsData(withDefaultStyles(withPerfMarker(\r\n // @ts-ignore\r\n withStateStore(AccountCampaignSelectorInternal, (() => new AccountCampaignDataStore()) as any) as any,\r\n { name: 'reporting-account-campaign-selector' }\r\n), getStyle));\r\n\r\n"],"names":["style","view","width","marginTop","marginBottom","paddingLeft","loadingContainer","height","textAlign","loadingMessage","padding","display","backgroundColor","maxWidth","minWidth","minHeight","zIndex","border","color","Loading","_ref","i18n","classes","_jsx","className","concat","children","_jsxs","role","getString","_TL_","defaultProps","Wrapped","withDefaultStyles","withI18nConsumer","components","core","isUIVnext","blockStyle","uiblockerStyle","palette","_objectSpread","_","top","icon","paddingRight","Top","panel","borderRadius","panelHeader","borderBottom","borderTopLeftRadius","borderTopRightRadius","cursor","font","fontWeight","verticalAlign","panelBody","panelTitle","fontSize","lineHeight","PanelBase","_PureComponent","props","_this","_classCallCheck","_callSuper","state","expanded","onClick","bind","_inherits","_createClass","key","value","this","setState","_this$props","helpLinkId","iconType","nextIconType","ReactPanel","id","onToggle","Heading","Glyphicon","iconStyle","glyph","Title","classNames","tabIndex","label","HelpIcon","topic","Body","collapsible","PureComponent","Wraped","baseStyle","borderTop","neutralSecondary","paddingTop","helpbuttonStyle","themePrimary","content","outline","undefined","sectionType","renderTypes","Table","Linechart","Barchart","timeGrains","i18nMap","ReportAggregation","fileFormats","FileFormatForReporting","savedTaskItemTypes","Template","CustomerTemplate","AccountTemplate","sharedTemplateTypes","isValidSaveType","taskItemType","values","contains","getSaveType","IsReportsMergeEnabled","IsInternalUser","accountScope","taskItem","ScopeFilterLevel","getScopeFilterLevel","mtScopeFilterLevel","mtEnum","partialConversionsColumns","AllConversions","Conversions","ConversionRate","AllConversionRate","LowQualityConversions","CostPerConversion","ViewThroughCostPerConversion","ViewThroughConversionRate","AllCostPerConversion","operatorToApi","$eq","$neq","$gt","$gte","$in","$lt","$lte","$contains","$containsany","$doesnotcontain","$startswith","$endswith","operatorFromApi","toApi","predicates","filterSchema","arguments","length","sharedSchema","filters","valueHandledByCaller","predicate","operatorApi","propertyValuesApi","arr","propertyName","propertySchema","propertyValueObject","operatorUi","propertyValueUi","enum","_toConsumableArray","type","split","map","x","trim","Filter","LogicalOperator","Expressions","PropertyName","Operator","Values","String","fromApi","Filters","Expression","_slicedToArray","join","Number","_defineProperty","convertPredicatesToFilters","GENERAL","COLUMN","FILTER","SETTING","ROOT","dataToApi","name","schemaName","renderType","timeGrain","timeRange","to","val","StartDate","start","EndDate","end","DateRangePreset","from","timeZone","format","accountCampaignSelector","keys","userScopes","selected","filterConvertor","includeTotalRow","options","getReportOptions","indexOf","EmailRecipients","v","scheduleThisReport","AttachFileToEmail","Cron","getApiObject","data","preview","output","sectionNode","section","node","property","Error","nodeKey","getDataObject","apiObject","identityDetails","user","customer","lcid","defaultData","ClientApplicationType","UserId","Id","CustomerId","LCID","MaxRowCount","IsDVS","AccountIds","UserScopes","CustomerScopes","CampaignReportScopes","AdGroupReportScopes","StartTime","EndTime","TimeZoneId","toLegacyTimeZone","formattedData","omitible","push","getUpdatePayload","onFailedValidation","valid","sectionData","isValid","ActionCenter","_React$Component","_len","args","Array","_key","runReport","download","_this$props$repositor","repository","createReport","queueDownload","payload","ReportData","getRunPayload","reportType","getReportType","setBlocker","mode","modeEnum","PRIVATE","SHARED","getOdataOptions","then","response","executionId","TaskItemExecutions","navigator","goto","catch","noop","finally","saveReport","updateReport","updateId","carryForward","saveReportAndRun","_this$props$repositor2","updateReportAndRun","_this2","Button","btnStyle","variant","React","withRepositoryContext","GridItem","title","titleId","isGroup","row","md","centerAlignTitle","textRight","fontFamily","paddingBottom","neutralPrimary","Grid","messages","compactMessages","alerts","msg","Alert","warning","defaultTimeRange","Hourly","HourOfDay","Daily","DayOfWeek","Weekly","Monthly","Yearly","Summary","getDefaultTimeRange","reportSchema","TimeRanges","dataLengths","getMinimumSupported","today","warningMessage","dataRetention","DataRetention","plus","days","months","RangeError","timeGrainRangeOptions","WeeklyStartingMonday","dataRetentionBlackList","getAllowedRanges","blackList","regex","getCivilDateFromString","temp","exec","CivilDate","trimDate","date2","Date","year","month","day","isCivilDateGreaterThan","titleMap","true","false","isUpdateReport","Description","description","what","why","note","GenericSelector","onChange","disabled","ariaLabelledByID","optionsJsx","Select","withValidation","RootSection","_Component","onValidate","result","setData","getValidationItemProps","reportDefinition","permissions","ValidationGroup","validationProps","schema","validationSchema","toLocaleLowerCase","customizationContent","Input","IsReportingUIReportChartsEnabled","Component","properties","required","maxLength","withPermissionContext","AccountCampaignSelector","_this$props$permissio","IsReportingUINewDesignEnabled","IsReportingUIPhaseNext","_this$props$servicesE","servicesEndpoints","odataURI","CampaignAPI","ccBaseUrl","ClientCenterUIAPI","ccToken","Token","_this$props$identityD","customerId","userId","_this$props$identityD2","account","accountId","isInternalUser","finishedLoading","isCreateSimilar","defaultSelected","scopeFilterLevel","paddingTop5","RawSelector","isReportingUIPhaseNext","featurePilots","allSelected","onSelectedChange","forceAccountScope","isInternalReport","hocs","withIdentityContext","withServicesEndpointsConsumer","withError","AdapterFactory","apply","TimeGrainSelector","schemaTimeGrains","ariaLabelledBy","allowedTimeGrains","TimeRangeSelectorBase","startDate","endDate","getFilteredRanges","getMinimumDay","getMinimumWarning","setWarning","dateFormat","putil","ianaTimeZone","toIANATimeZone","minSupportedDay","specificRanges","selectedTimeRange","selectedRangeId","allowedTimeRanges","range","rangeId","timeRangeSelector","ComparedDateRangePicker","disableCompare","displayType","relativeDropdown","selectedRange","onPickDateRanges","rangeType","isCivilDateGreaterThanEqual","toString","minDate","maxDate","areEqual","prevProps","nextProps","minSupportDay","daysAwayFromMonday","getCivilDateDayOfWeek","yesterday","sevenDaysAgo","fourteenDaysAgo","thirtyDaysAgo","thisSunday","thisMonday","thisMonthFirstDay","getCivilDateMonthStart","lastMonthlastDay","lastMonthFirstDay","lastTwoMonthlastDay","lastTwoMonthFirstDay","firstDayOfYear","with","rawRanges","englishString","localizedString","text","getTimeRanges","rangeOptions","supportedOptions","TimeRangeSelectorWithMemo","TimeRangeSelectorWithValidation","TimeRangeSelectorWithIdentityContext","TimeRangeSelectorWithStyle","float","right","left","animation","shouldShowSelector","getToday","GeneralSection","currentRange","allowedRanges","setToday","radioValues","getRadioId","item","index","radioOptions","disableTimeZoneSelector","accountCampaignSelectorLoaded","generalSetting","TimeRangeSelector","timeZones","topAlignTitle","validator","selectedItems","accountCampaignValidator","ColumnChooser","categories","legacyI18n","isSplittingSelectedArea","instrumentation","cfg","searchStr","BackboneColumnChooser","simplified","on","selectedKeys","currentActive","helpers","updateView","isSaveNameEnabled","external","BackboneInstanceWrapper","instance","setDisabledColumns","exclusionSets","exclusionMap","memo","category","option","isAvailable","resolveAvailableColumns","cloneSelected","available","unshift","filterByTimeGrain","categoryClone","forbiddenTimeGrains","configs","attributesLimit","statisticsLimit","validate","selectedColumns","columnsLimit","resultColumns","resultCategory","slice","selectedColumnsSet","forEach","ReportColumnChooser","checkValid","errorMessages","_this$state","columnChooser","ErrorMessages","Columns","pilotSets","piloted","pilotFiltered","pilotFilteredCategories","unmodifiedCategories","translatedColumns","currentLocale","getLocale","compareLocale","Intl","Collator","compare","optionClone","sort","a","b","translateColumns","sets","set","groupName","match","formatExclusionSets","ExclusionSets","rejectedColumns","isAllowed","columns","filter","filterByPilot","timeGrainFiltered","timeGrainFilteredCategories","newCategories","exclusionSetsGroups","offendingSets","exclusionSet","resolveExclusionConditions","_resolveChartsColumns","attributesSet","entry","selectedAttributes","selectedStatistics","_configs$renderType","resultCategories","_validate","_validate2","splice","resolveChartsColumns","_props$reportSchema","_props$reportSchema$M","MandateColumnSet","MissingMandatoryColumnError","matches","isMandatoryColumnMissing","component","columnChooserStyle","ComponentSettings","getColumnChooserOverrideStyle","withInstrumentation","withLegacyI18n","merge","boxShadow","margin","position","withPerfMarker","ColumnSection","inputTitleStyle","alignSelf","Frequency","_item","CronModel","changeFrequency","cronFormatter","changeHour","optionFactory","selectorName","optionObj","useIndex","frequencyContainer","frequencyTitle","radioContainer","RadioGroup","items","getItemId","getItemValue","frequency","renderItem","dayOfWeek","dayOfMonth","checked","frequencySelect","e","target","getDaysOfWeek","getDaysOfMonth","hourContainer","hour","getHoursOfDay","StyledFrequency","alignItems","marginRight","flexShrink","StartEndDate","onSelectDate","date","isShowStartDatePicker","startSelectedDate","changeStartEndDate","isShowEndDatePicker","endSelectedDate","errMessage","onKeyDown","event","keyCode","Enter","handelShowHideSingleDatePicker","setWrapperRef","wrapperRef","$","startNavigatedDate","endNavigatedDate","selectedRanges","document","addEventListener","removeEventListener","getCivilDateToday","years","startEndDate","startEndDateLabel","readOnly","formatCivilDate","skeleton","calenderWrapper","ref","SingleMonthCalendar","defaultNavigatedDate","defaultSelectedDate","navigatedDate","selectedDate","isMonthPickerEnabled","errorMsg","getUTCFullYear","getUTCMonth","getUTCDate","StyledStartEndDate","overflow","getValidator","emailList","replace","RegExp","emails","offendingEmail","email","test","ValidatedTextArea","TextArea","EmailTextArea","forceValidate","field","alwaysShowError","ReportSchedule","toCronString","setSchedule","includeReport","onValidateEmail","parse","reportSchedule","scheduleTime","changeDefaultFrequency","emailTextArea","emailTitle","emailTextAreaSub","Checkbox","attachmentTooLarge","_ref2","clear","radioAndCheckboxStyle","marginLeft","SettingSection","changedSettings","settings","Object","assign","_objectDestructuringEmpty","saveType","defaultSchedule","initSchedule","isEmailValid","onChangeVisibleToExternalUsers","newType","isChecked","newSettings","saveAs","schdule","totalRow","visibleToExternalUsers","CronFormatter","showIncludeTotalRow","disableIncludeTotalRow","hasTopMargin","reportSetting","disabledCheckbox","background","metrics","prefix","localizeTitle","FilterTitle","logUnmappedFilter","getUpperDescription","propertyKey","getPropertyPath","processProperty","rawProperty","rawKey","columnName","IsAdsGlobalizationPhase1Enabled","IsAdsGlobalizationPhase2Enabled","IsAdsGlobalizationPhase6Enabled","IsAdsGlobalizationPhase2JapanEnabled","IsAdsGlobalizationPhase9Enabled","IsAdsGlobalizationPhase9VIEnabled","IsDomesticSimplifiedChineseEnabled","localizationMap","tuples","enumValue","FilterEnum","enumToColumnEnum","localizeEnumValues","IsMultiMediaAdsEnabled","ResponsiveAd","sortBy","localized","object","addtionalParams","dataSource","get","dummy","query","queryLowerCase","toLowerCase","includes","Name","itemsDisplayLimit","MAX_SAFE_INTEGER","selectorOptions","keyMap","Selector_Filter_Placeholder","nullable","getByIds","ids","Promise","chooseType","operators","customParameters","lowerDescription","upperDescription","minimum","filterSchemaProcessor","pairs","_ref3","reject","_ref4","_ref5","_ref6","_ref7","FilterComponent","onPredicateChange","currData","whiteList","prevData","prevDataPick","currDataPick","predicateCount","predicateList","PredicateList","entitySchema","maxConditionCount","setPredicates","render","showValidationErrors","wrapped","queryToPredicates","$and","validateGoalIdFilter","goalIdPredicate","GoalIds","onQueryChange","onQueryReset","editableFilter","FilterEntity","_this$props2","predicatesToQuery","updateQuery","positionRelative","filterContainer","onApplySavedFilter","onDeleteFilters","selector","selectableFilter","isPoPEnabled","onEditableFilterUpdate","onSelectableFilterUpdate","popoverContainer","maximumPredicateLimit","disallowDuplicateFilters","FilterSection","hasFilters","FilterNew","FilterOld","originalSetData","oldData","newData","goalIdErrorMsg","filterDefaultColumnByPilot","defaultColumn","getRejectedColumns","getStyle","createReportContainer","container","actions","sla","blocker","neutralLighter","justifyContent","selectorStyle","predicateValueEditorStyle","underlineLinkStyle","elementLocator","CreateReport","onPanelClick","panelStatus","setSection","warnings","shoudBlock","blocking","setFilterSection","setGeneralSection","setRootSection","linechartDefault","barchartDefault","defaultColumns","_props$identityDetail","_props$identityDetail2","_props$identityDetail3","accountName","accountTimeZone","TimeZone","savedReportData","_props$permissions","default","pilotDefault","customerOrAccountName","formatDate","apiKey","SchemaName","fromLegacyTimeZone","allRenderTypes","RenderTypes","accountSelectorPerfMarker","creationPerfMarker","createChild","willInit","done","_identityDetails$acco","_identityDetails$acco2","UiBlocker","loadingText","blockUiContainer","blockerIndicator","Panel","Warning","HelpLink","helpId","railviewid","CreateReportStyled","CreateReportIndex","_React$PureComponent","viewName","perfMarker","logger","setupInstrumentation","general","create","fetchTaskItem","shouldReloadTaskItem","fetchTaskItemRequest","cancel","templateId","willFetchData","withLastPromise","promiseFactory","getDetailsByExecutionId","finish","TaskItem","errorCode","fail","error","getDetailsByTaskItemId","_this$props3","reportKey","reports","reportList","_this$props3$permissi","GlobalErrorView","ReportType","deprecatedReports","setting","dynamic","PartialConversions","column","willRender","getErrorMessage","NavLink","resolve","currentProps","previousProps","currentPropsPick","previousPropsPick","derivedState","_CreateReportIndex","instrumentationSchema","scenario","activity","addScenario","DefaultErrorView","withReportListContext","WrappedCreateReport","VideoMetricColumns","performance","AccountPerformanceReport","mandatory","CampaignPerformanceReport","AdGroupPerformanceReport","AdPerformanceReport","KeywordPerformanceReport","NegativeKeywordConflictReport","ShareOfVoiceReport","SearchQueryPerformanceReport","DestinationURLPerformanceReport","PublisherUsagePerformanceReport","AdDynamicTextPerformanceReport","AudiencePerformanceReport","GoalsAndFunnelsReport","ConversionPerformanceReport","UserLocationPerformanceReport","elevatedColumnsMap","AdExtensionByKeywordReport","AdExtensionByAdReport","AdExtensionDetailReport","CallDetailReport","BudgetSummaryReport","CustomerInvoiceReport","BillingStatementReport","SearchCampaignChangeHistoryReport","UserRoleChangeHistoryReport","FraudChangeHistoryReport","DSAAutoTargetPerformanceReport","DSACategoryPerformanceReport","DSASearchQueryPerformanceReport","ProductPartitionPerformanceReport","ProductPartitionUnitPerformanceReport","ProductDimensionPerformanceReport","ProductSearchQueryPerformanceReport","ProductMatchCountReport","ProductNegativeKeywordConflictReport","AgeGenderAudienceReport","ProfessionalDemographicsAudienceReport","GeographicPerformanceReport","restrictionSets","AIM","IsAIMCampaignEnabled","GoalCategory","GoalType","IsInStoreTransactionAttributionSupported","AdGroupType","IsDSAMixedModeCampaignEnabled","ViewConversions","IsViewThroughConversionEnabled","ViewThroughConversionsRevenue","IsViewThroughConversionsRevenueEnabled","ConversionValueRuleMetrics","ConvValueRules","ConversionValueRuleViewThroughMetrics","AvgPositionDeprecationPhase1","IsAvgPositionDeprecationPhase1Enabled","AvgPositionDeprecationPhase2","IsAvgPositionDeprecationPhase2Enabled","VideoMetrics","permssions","IsVideoAdsPerfMetricsEnabled","VideoMetricsV2","IsVideoAdsPerfMetricsV2Enabled","AdScenarioType","IsVerticalAdsReportingPhase1Enabled","NeighborhoodLocationType","ConversionsQualified","IsDSADynamicDescriptionPhase1Enabled","AdId","PerformanceMax","PerformanceMaxCampaigns","PerformanceMaxCampaignsPhaseTwoReporting","ReachAndFreq","ReachAndFrequency","ReachAndFreq7Day","ReachAndFrequency7Day","AdStrength","BoostPlacement","IsAmplifyEnabled","BoostPlacementReporting","defaultSets","IsManualCpmEnabled","restrictedColumnsByReport","defaultColumnsByReport","helpLinkIds","AbsoluteTopImpressionRatePercent","AbsoluteTopImpressionShareLostToBudgetPercent","AbsoluteTopImpressionShareLostToRankPercent","AbsoluteTopImpressionSharePercent","AccountId","AccountName","AccountNumber","AccountStatus","AdDescription","AdDescription2","AdDistribution","AdExtensionId","AdExtensionPropertyValue","AdExtensionType","AdExtensionTypeId","AdExtensionVersion","AdGroupCriterionId","AdGroupId","AdGroupLabels","AdGroupName","AdGroupStatus","AdLabels","AdRelevance","AdStatus","AdTitle","AdType","AgeGroup","AgencyName","AllConversionRateQualified","AllConversionsQualified","AllCostPerConversionQualified","AllReturnOnAdSpend","AllRevenue","AllRevenuePerConversion","AreaCode","AssistedClicks","AssistedConversions","AssistedImpressions","Assists","AssociationId","AssociationLevel","AssociationStatus","AttributeChanged","AudienceId","AudienceImpressionSharePercent","AudienceImpressionLostToRankPercent","AudienceImpressionLostToBudgetPercent","AudienceName","AudienceType","AverageCPC","AverageCPM","AverageCpp","AveragePosition","BaseCampaignId","BenchmarkBid","BenchmarkCtr","BidAdjustment","BidMatchType","BidStrategyType","BilledAmount","BilledAmountUSD","BillingType","BillToCustomerName","BillToCustomerNumber","BillToCountry","Brand","BudgetAssociationStatus","BudgetName","BudgetStatus","BusinessName","CPA","CTR","CampaignId","CampaignLabels","CampaignName","CampaignStatus","CampaignType","Category0","Category1","Category2","CategoryList","ChangeMadeBy","ChangeMadeTo","ChangeTotalCount","ChangedBy","City","ClickCalls","ClickSharePercent","ClickType","ClickTypeId","Clicks","CompanyName","Condition","ConflictLevel","ConflictType","ConversionRateQualified","CostPerAssist","CostPerConversionQualified","Country","CountryOfSale","County","CurrencyCode","CurrentMaxCpc","CustomLabel0","CustomLabel1","CustomLabel2","CustomLabel3","CustomLabel4","CustomParameters","CustomerName","DailySpend","DateTime","DeliveredMatchType","DestinationUrl","DeviceOS","DeviceType","DisplayUrl","DocumentNumber","DocumentType","Duration","DynamicAdTarget","DynamicAdTargetId","DynamicAdTargetStatus","ExcludeZeroClicks","EntityId","EntityName","ExactMatchImpressionSharePercent","ExpectedCtr","ExtendedCost","FeedUrl","FinalAppUrl","FinalMobileUrl","FinalUrl","FinalUrlSuffix","FirstPageBid","FullViewConversions","Gender","Goal","GoalId","GregorianDate","GTIN","Headline","HistoricalAdRelevance","HistoricalExpectedCtr","HistoricalLandingPageExperience","HistoricalQualityScore","HowChanged","ImpressionLostToAdRelevancePercent","ImpressionLostToBidPercent","ImpressionLostToBudgetPercent","ImpressionLostToExpectedCtrPercent","ImpressionLostToRankAggPercent","ImpressionLostToRankPercent","ImpressionSharePercent","Impressions","IndustryName","ItemChanged","JobFunctionName","Keyword","KeywordId","KeywordLabels","KeywordStatus","LandingPageExperience","LandingPageTitle","Language","LocalStoreCode","LocationId","LocationType","LongHeadline","LowQualityClicks","LowQualityClicksPercent","LowQualityConversionRate","LowQualityConversionsQualified","LowQualityGeneralClicks","LowQualityImpressions","LowQualityImpressionsPercent","LowQualitySophisticatedClicks","Mainline1Bid","MainlineBid","ManualCalls","MatchedProductsAtAdGroup","MatchedProductsAtCampaign","MatchedProductsAtProductGroup","MerchantProductId","MetroArea","Month","MonthToDateSpend","MonthlyBudget","MostSpecificLocation","MPN","NegativeKeyword","NegativeKeywordList","NegativeKeywordId","NegativeKeywordListId","NegativeKeywordMatchType","Neighborhood","NetAmountDue","NetRevenue","NetRevenueUSD","Network","NewValue","OfferLanguage","OldValue","Param1","Param2","Param3","PartitionType","Path1","Path2","PhoneCalls","PhoneImpressions","PostalCode","Price","PricingMethod","ProductBought","ProductBoughtTitle","ProductCategory1","ProductCategory2","ProductCategory3","ProductCategory4","ProductCategory5","ProductGroup","ProductName","ProductType1","ProductType2","ProductType3","ProductType4","ProductType5","ProximityTargetLocation","Ptr","PublisherUrl","QualityImpact","QualityScore","QuantityBought","Quarter","QueryIntentCity","QueryIntentCountry","QueryIntentCounty","QueryIntentDMA","QueryIntentLocationId","QueryIntentNeighborhood","QueryIntentPostalCode","QueryIntentState","Radius","RelativeCTR","ReturnOnAdSpend","Revenue","RevenuePerAssist","RevenuePerConversion","SalesHouse","SearchQuery","SellerName","SoldToCustomerName","SoldToCustomerNumber","SoldToCountry","Spend","State","Status","TargetingSetting","TimePeriod","StoreId","TitlePart1","TitlePart2","TitlePart3","Tool","TopImpressionRatePercent","TopImpressionShareLostToBudgetPercent","TopImpressionShareLostToRankPercent","TopImpressionSharePercent","TopVsOther","TotalClicks","TotalClicksOnAdElements","TrackingTemplate","WebsiteCoverage","Week","WeekStartingMonday","ViewThroughConversions","ViewThroughRevenue","ViewThroughCostPerConversionQualified","ViewThroughReturnOnAdSpend","ViewThroughConversionRateQualified","Year","VideoViews","ViewThroughRate","AverageCPV","TotalWatchTimeInMS","AverageWatchTimePerImpression","AverageWatchTimePerVideoView","VideoViewsAt25Percent","VideoViewsAt50Percent","VideoViewsAt75Percent","CompletedVideoViews","VideoCompletionRate","missingMandatoryColumnErrors","enumBlackList","LanguageCode","processCategory","mandatoryColumns","aggregationRestrictions","columnNames","selectOption","helpTopic","processSchema","elevatedColumns","pilotRestrictionSets","pilotDefaultSets","timeRangeOverride","missingMandatoryColumnError","rawSchema","supportedAggregations","fields","shared","filterFields","processedFilter","rawField","filterable","processFilters","fieldSchema","$schema","validCategories","columnGroups","mandatoryColumnsMap","schemaMandatory","RequiredColumns","dif","JSON","stringify","AggregationExclusion","columnKey","getAggregationRestrictions","processedColumns","processColumns","process","Shared","ColumnName","defineProperties","AccountPerformanceReportUIV1","enumerable","AccountPerformanceReport_SixWeeksUIV1","AccountPerformanceReport_TwoMonthsUIV1","AccountPerformanceReport_TwoYearsUIV1","AccountPerformanceReport_ShareOfVoiceUIV1","AdDynamicTextPerformanceReportUIV1","AdExtensionByAdReportUIV1","AdExtensionByKeywordReportUIV1","AdExtensionDetailReportUIV1","AdGroupPerformanceReportUIV1","AdPerformanceReportUIV1","AgeGenderAudienceReportUIV1","AudiencePerformanceReportUIV1","BillingStatementReportUIV1","BudgetSummaryReportUIV1","CallDetailReportUIV1","CampaignPerformanceReportUIV1","ConversionPerformanceReportUIV1","CustomerInvoiceReportUIV1","DSAAutoTargetPerformanceReportUIV1","DSACategoryPerformanceReportUIV1","DSASearchQueryPerformanceReportUIV1","DestinationURLPerformanceReportUIV1","FraudChangeHistoryReportUIV1","GeographicPerformanceReportUIV1","GoalsAndFunnelsReportUIV1","KeywordPerformanceReportUIV1","NegativeKeywordConflictReportUIV1","ProductDimensionPerformanceReportUIV1","ProductMatchCountReportUIV1","ProductNegativeKeywordConflictReportUIV1","ProductPartitionPerformanceReportUIV1","ProductPartitionUnitPerformanceReportUIV1","ProductSearchQueryPerformanceReportUIV1","ProfessionalDemographicsAudienceReportUIV1","PublisherUsagePerformanceReportUIV1","SearchCampaignChangeHistoryReportUIV1","SearchQueryPerformanceReportUIV1","ShareOfVoiceReportUIV1","UserLocationPerformanceReportUIV1","UserRoleChangeHistoryReportUIV1","AgeGenderDemographicReport","legacyKeys","validationLocalization","ColumnChooser_Header","ColumnChooser_SubHeader","ColumnChooser_AvailableColumnsHeader","ColumnChooser_SelectedColumnsHeader","ColumnChooser_SelectedColumnsHeader_TopHalf","ColumnChooser_SelectedColumnsHeader_BottomHalf","ColumnChooser_SaveColumnDescription","ColumnChooser_Apply","ColumnChooser_Cancel","ColumnChooser_Add","ColumnChooser_Added","ColumnChooser_Remove","ColumnChooser_AddAllInList","ColumnChooser_RemoveAllInList","ColumnChooser_RemoveAllSelected","ColumnChooser_NoSearchResult","ColumnChooser_Disabled","ColumnChooser_Search_Column","ColumnChooser_AddColumn","ColumnChooser_RemoveColumn","ColumnChooser_LiftColumn","ColumnChooser_MoveColumn","ColumnChooser_DropColumn","ColumnChooser_RemovedColumns","ColumnChooser_RemovedColumn","ColumnChooser_AddedColumns","ColumnChooser_AddedColumn","Filter_Operator_IN","Filter_Operator_EQ","Filter_Operator_NEQ","Filter_Operator_Contains","Filter_Operator_Not_Contains","Filter_Operator_StartsWith","Filter_Operator_EndsWith","Filter_Operator_LT","Filter_Operator_GT","Filter_Operator_LTE","Filter_Operator_GTE","Filter_Validation_EnumSelectionRequired","Filter_Validation_Common_Required","Filter_Validation_Common_Number","Filter_Validation_Common_Number_Range","Filter_Validation_Common_Integer","Filter_Validation_Common_Date","Filter_Validation_Common_Id_Count","Filter_Cannot_Have_Duplicate","Filter_Remove","Filter_PredicateList_New","Performance","Filter_Key_AriaLabel","Filter_Operator_AriaLabel","Filter_Value_AriaLabel","SelectEntityOrEntities","SelectedEntityOrEntities","Selector_LoadingText","Selector_Check_All","Filter_Selector_MoreThanLimit","NoEntityOrEntities","CronFormatter_Frequency_MonthlyTemplate","CronFormatter_Frequency_WeeklyTemplate","CronFormatter_Frequency_DailyTemplate","CronFormatter_FrequencyGrain_Runs_Daily","CronFormatter_FrequencyGrain_Runs_Monthly","CronFormatter_FrequencyGrain_Runs_Weekly","CronFormatter_FrequencyGrain_DropdownMenu_None","CronFormatter_FrequencyGrain_DropdownMenu_Daily","CronFormatter_FrequencyGrain_DropdownMenu_Monthly","CronFormatter_FrequencyGrain_DropdownMenu_Weekly","DateFilter_Option_Custom","DateFilter_Option_CustomTime","DateFilter_Option_Today","DateFilter_Option_Yesterday","DateFilter_Option_ThisWeekSunday","DateFilter_Option_ThisWeekMonday","DateFilter_Option_Last7days","DateFilter_Option_LastWeekSunday","DateFilter_Option_LastWeekMonday","DateFilter_Option_Last14Days","DateFilter_Option_ThisMonth","DateFilter_Option_LastMonth","DateFilter_Option_Last30Days","DateFilter_Option_Last3Months","DateFilter_Option_Last6Months","DateFilter_Option_TwelveMonthsToDate","DateFilter_Option_ThisYear","DateFilter_Option_LastYear","DateFilter_Option_AllTime","DateFilter_Option_PreviousPeriod","DateFilter_Option_SamePeriodLastYear","DateFilter_Option_CustomPeriod","InlineDownloadReports_Column_EmailFrequency","InlineDownloadReports_EmailAndScheduling_Frequency_None","InlineDownloadReports_EmailAndScheduling_Frequency_Daily_Template","InlineDownloadReports_EmailAndScheduling_Frequency_Weekly_Template","InlineDownloadReports_EmailAndScheduling_Frequency_Monthly_Template","InlineDownloadReports_Action_UnsubscribeMe_Failed_NotSubscribed","InlineDownloadReports_Action_UnsubscribeMe_Failed","InlineDownloadReports_Action_UnsubscribeMe_Succeeded","Grid_Edit_Cell","Grid_EditButtonText","Save","Cancel","Schema_ReportEmailRule_Property_Cron","Schema_ReportEmailRule_Property_StartTime","Schema_ReportEmailRule_Property_EndTime","InlineDownloadReports_EmailAndScheduling_SendReportTo","InlineDownloadReports_SearchUsers","InlineDownloadReports_EmailAndScheduling_Email_Me","InlineDownloadReports_EmailAndScheduling_Email_Template_Me","InlineDownloadReports_EmailAndScheduling_User","InlineDownloadReports_EmailAndScheduling_FailedToLoadUsers","InlineDownloadReports_EmailAndScheduling_AllUsers","SimpleForm_Button_Save","SimpleForm_Button_Cancel","KoSchema_String_RemainingCharactersText","KoSchema_String_ExceededCharactersText","Custom","Schema_Enum_DateRangePreset_AllTime","Schema_Enum_DateRangePreset_LastBusinessWeek","Schema_Enum_DateRangePreset_LastFourteenDays","Schema_Enum_DateRangePreset_LastMonth","Schema_Enum_DateRangePreset_LastSevenDays","Schema_Enum_DateRangePreset_LastSixMonth","Schema_Enum_DateRangePreset_LastThirtyDays","Schema_Enum_DateRangePreset_LastThreeMonth","Schema_Enum_DateRangePreset_LastWeekStartingMon","Schema_Enum_DateRangePreset_LastWeekStartingSun","Schema_Enum_DateRangePreset_LastYear","Schema_Enum_DateRangePreset_ThisMonth","Schema_Enum_DateRangePreset_ThisWeekFromMon","Schema_Enum_DateRangePreset_ThisWeekFromSun","Schema_Enum_DateRangePreset_ThisYear","Schema_Enum_DateRangePreset_Today","Schema_Enum_DateRangePreset_Yesterday","LegacyI18n","LeagacyI18nProvider","context","buildLegacyI18n","Provider","AReactComponent","Consumer","Identity","IdentityProvider","serverContext","CurrentUser","CurrentCustomer","CurrentAccount","CultureLcid","sendBatchRequest","definition","params","reqs","param","uri","odataUri","convert","action","url","odata","batch","path","processResponse","getCommonOptions","_ref$ajaxOptions","ajaxOptions","urlParameters","host","headers","successCallback","oDataToken","success","attributes","ODataBaseAdapter","queryParameters","odataQuery","attrs","odataCast","queryParams","convertQuery","post","isFinding","request","filterOptions","queryEntitySet","entitySet","edmRootResourceIdentifier","identifyEntitySet","edm","types","ActionType","customParameterizationFunc","navigation","parameters","cacheResponse","res","queryId","idAttribute","addProperties","obj","defineProperty","afterInject","innerOptions","injected","responseText","status","statusText","errors","raw","body","patch","delete","ODataAdapter","_ODataBaseAdapter","_queryParameters$filt","_queryParameters$wher","where","ret","_where$","restWhere","$filter","odataV4","initJsDataLight","loginType","sessionId","JsDataLight","entityName","odataURL","getODataURLWithKey","odataAdapter","defaultGetODataURLWithKey","entity","class","endpoint","source","$withKey","getOptions","update","find","afterFindAll","_objectWithoutProperties","_excluded","findAll","cid","pcid","aid","JsDataLightWithScopePath","_JsDataLight","currentMode","scopePath","getScopePath","newMode","historyQueries","ReportIds","taskItemIds","primaryKey","reactRouterHistory","location","search","window","routePrefix","init","history","qs","replaceTo","NavigatorMaintenance","withRouter","propTypes","PropTypes","isRequired","customReports","getUrl","getId","report","historyReports","isRunning","DestinationUrlPerformanceReport","FeedItemPerformanceReport","FileFormat","Csv","Csvzip","Tsv","TsvZip","Xlsx","FileFormatForInlineDownload","generalUnavalible","runUnavalible","getDeprecatedMessage","isRunReport","InvalidId","InvalidEmail","TaskSchedulingInvalid","TaskThrottlingLimitReached","RequiredColumnsNotSelected","errMsg","Today","Yesterday","LastSevenDays","LastFourteenDays","LastThirtyDays","ThisWeekFromSun","ThisWeekFromMon","LastWeekStartingSun","LastWeekStartingMon","LastFourWeeksStartingSun","LastFourWeeksStartingMon","LastSixWeeksStartingSun","LastSixWeeksStartingMon","ThisMonth","LastMonth","LastTwoMonths","LastThreeMonths","LastSixMonths","ThisYear","LastYear","LastTwoYears","AllTime","AdvertiserHotelId","AdGroupTypePreview","AdRelevanceCampaign","AdRelevanceAdGroup","AdRelevanceKeyword","AdStrengthActionItems","AdvancedBookingWindow","AvgBookedABW","AvgBookedNights","BenchmarkBidProduct","BenchmarkCtrProduct","BookedABW","BookedLengthOfStay","CallStatus","CallTypeName","CampaignHotelId","Category","CheckInDate","CheckInDateDayOfWeek","FeedLabel","CountryName","CustomLabel0Product","CustomLabel1Product","CustomLabel2Product","CustomLabel3Product","CustomLabel4Product","CustomParametersCampaign","CustomParametersAdGroup","CustomParametersKeyword","CustomParametersAd","CustomParametersProduct","DateType","DestinationUrlAd","DestinationUrlKeyword","DestinationUrlProduct","EligibleImpressions","EstimatedClickPercent","EstimatedClicks","EstimatedConversionRate","EstimatedConversions","EstimatedCtr","EstimatedImpressionPercent","EstimatedImpressions","ExpectedCtrKeyword","ExpectedCtrCampaign","ExpectedCtrAdGroup","FeedId","FeedItemId","FinalUrlSuffixCampaign","FinalUrlSuffixAdGroup","FinalUrlSuffixKeyword","FinalUrlSuffixAd","GrossReturnOnAdSpend","Genre","HistoricalAdRelevanceAdGroup","HistoricalAdRelevanceCampaign","HistoricalAdRelevanceKeyword","HistoricalExpectedCtrAdGroup","HistoricalExpectedCtrCampaign","HistoricalExpectedCtrKeyword","HistoricalLandingPageExperienceAdGroup","HistoricalLandingPageExperienceCampaign","HistoricalLandingPageExperienceKeyword","HistoricalQualityScoreAdGroup","HistoricalQualityScoreCampaign","HistoricalQualityScoreKeyword","HotelGroup","HotelGroupNodeId","HotelName","ImpressionLostToRelevancePercent","ImpressionShare","LabelName","LabelNameAccount","LabelNameCampaign","LabelNameAdGroup","LabelNameAd","LabelNameKeyword","LabelColor","LandingPageExperienceAdGroup","LandingPageExperienceCampaign","LandingPageExperienceKeyword","LengthOfStay","MissedImpressions","MissedImpressionsNoBid","MissedImpressionsInsufficientBid","MissedImpressionsSpendingCapReached","MissedImpressionsNoTax","MissedImpressionsOther","NetReturnOnAdSpend","OrderId","PartnerImpressions","QualityScoreAdGroup","QualityScoreCampaign","QualityScoreKeyword","ReturnOnAdSpendCPS","RevenueCPS","SourceHotelId","StarRating","TrackingTemplateCampaign","TrackingTemplateAdGroup","TrackingTemplateKeyword","TrackingTemplateAd","TrackingTemplateProduct","DimensionColumns","MetricColumns","TimeColumns","ChangeInAdvertiserReportedRevenuePct","ChangeInAllConvRatePct","ChangeInConversionCreditPct","ChangeInCPAPct","ChangeInFullViewAdvertiserReportedRevenuePct","ChangeInFullViewThroughConversionPct","ChangeInROASPct","ChangeInViewThroughRatePct","ChangeInVTCCPAPct","ChangeInVTCROASPct","DDAAllConvRate","DDACPA","DDAFullAdvertiserReportedRevenue","DDAFullConversionCredit","DDAFullViewAdvertiserReportedRevenue","DDAFullViewThroughConversion","DDAROAS","DDAViewThroughRate","DDAVTCCPA","DDAVTCROAS","LCAAllConvRate","LCACPA","LCAFullAdvertiserReportedRevenue","LCAFullConversionCredit","LCAFullViewAdvertiserReportedRevenue","LCAFullViewThroughConversion","LCAROAS","LCAViewThroughRate","LCAVTCCPA","LCAVTCROAS","IsMainConversionGoal","Sales","CostPerSale","RevenuePerSale","msxAdClicks","msxDeliveredCountry","msxDeliveredMarket","msxDevice","msxPageType","msxPlacementId","msxProvider","msxPublisher","msxRegion","msxServedImpressions","msxServedRevenue","msxViewedImpressions","Installs","CostPerInstall","RevenuePerInstall","AssetGroupId","AssetGroupName","AssetGroupStatus","UserCountry","SiteType","ClickShare","RevenueAdjustment","AllRevenueAdjustment","ViewThroughRevenueAdjustment","VideoStarts","VideoSkips","CPCV","CollectionId","AverageImpressionFrequencyPerUser","AverageImpressionFrequencyPerUser7Day","Reach","Downloads","PostClickDownloadRate","CostPerDownload","AppInstalls","PostClickInstallRate","CPI","Purchases","PostInstallPurchaseRate","CPP","Subscriptions","PostInstallSubscriptionRate","CPS","RevenuePerDownload","RevenuePerAppInstall","NewCustomerConversions","NewCustomerRevenue","NewCustomerConversionRate","NewCustomerCPA","NewCustomerReturnOnAdSpend","PlacementName","IOReportMonth","ChangeType","ChangeAmount","RemainingIOBudget","InsertionOrderDetails","BillingDocumentNumber","MismatchedReason","InsertionOrderId","BDAmount","MismatchedAmount","CouponAmount","BudgetChangedAmount","SpendAmount","AdjustmentAmount","BudgetChangeOldValue","BudgetChangeNewValue","SpendCouponAmount","AdjustmentCouponAmount","SearchCategory","SearchVolume","AssetId","AssetContent","AssetType","AssetSource","L1Vertical","L2Vertical","L3Vertical","SearchesIndexed","ClicksIndexed","WoWSearches","WoWClicks","MoMSearches","MoMClicks","YoYLast1WeekSearches","YoYLast1WeekClicks","YoYLast4WeeksSearches","YoYLast4WeeksClicks","SearchesPeekWeek","ClicksPeekWeek","MarketplaceClickCoverage","ProportionOfSpend","Headline1","Headline2","Headline3","Description1","Description2","Image","Logo","CombinationLongHeadline","CountryCode","Keywords","SearchQueries","safeGetString","loggedEnums","loggedFilters","initLogger","LogUnmappedEnum","filterName","reformatDate","dateStr","dateFormatter","formatter","reformatShortDate","convertDateTimeStringToCivilDate","dateTimeString","_match","availablekeys","util","getCustomerId","parseInt","getUserId","isReportRunning","shouldRefresh","promise","empty","fullfilled","isFulfilled","getMergeFilter","getUTCOffsetWithDST","reformatMediumDate","formatDateRange","ReportTime","ReportTimeZone","appendActualRange","showTimeZone","fragments","uniqueId","logUnmappedEnum","offset","getUTCOffsetWithoutDST","dummyDate","customReportQueries","templateIds","createdByUserId","detailsQueries","taskItemId","expandTaskItem","expand","createReportQueries","pathname","Type","runNow","$expand","submitEvent","KEY_CODES","handler","keyDown","constants","QUERY_LIMIT","POLL_INTERVAL","href","preventDefault","serializeError","errorStack","stack","message","Permission","PermissionProvider","ReportAlertCenterBackbone","_AlertCenter","show","level","hasIcon","dismissible","AlertCenter","getInstance","showInitialMessage","showBanner","customCssClass","showTryNewUIMessage","ReportAlertCenter","uiNextLink","IsNewUIPhaseTwoEnabled","alert","_showError","showError","initializeErrorDisplayer","displayError","txt","RepositoryContext","RepositoryDataContext","ReportRepositoryComponent","catchException","resolveDownload","err","errorMessage","localizedMessage","detailsGridDataSource","customReportGridDataSource","uid","historyGridDataSource","checkAndUpdateHistory","allReportsFinished","historyData","reportsToDownload","rdsDownloadReport","reportId","pollReport","rdsRunReport","rdsRunReportTemplate","rdsDeleteReport","rdsDeleteReportTemplate","ResultId","iframeDownload","inlineEditReport","partialTaskItem","mapper","fullTaskItem","unsubscribeMe","userEmail","Email","others","baseContext","rdsRunSingleReport","getAllAccountIds","historyExpansion","prefetchedData","History","customData","CustomReports","Locale","historyExpansionInstance","ParentCustomerId","dataContext","_ReportRepositoryComponent","ReportRepository","withRepositoryDataContext","ReportListDataFactory","initialReportsTree","providedLogger","log","reportsTree","validCatergoryIds","validCreateReportIds","TypeError","filterReports","populateCategoryIds","populateCreateReportIds","validCategoryIds","runnableReports","reportCategory","_this3","rootNode","searchAlias","IsCallMeteringAllowed","IsEnhancedShoppingCampaignAllowed","IsLinkedInTargetingEnabled","IsDynamicSearchAdsV1Enabled","cloneNodes","childNode","localizeNodes","resolveNodePaths","child","getLinkFromEnumeration","ReportList","isValidCategoryId","isValidCreateReportId","reportListData","dataFactory","fetchData","lowerCaseId","ReportListContext","ReportListServiceBase","getUsersReportsTree","leaf","ReportListServiceWithI18n","ReportListService","ServicesEndpointsContext","ServicesEndpointsProvider","ModeUpdater","scope","updateMode","withScope","ContextProviders","LegacyDepsContext","withLegacyDeps","legacyDeps","theme","blockUi","reactBlockUi","light","white","gray10","gray20","gray30","gray40","gray50","gray60","gray70","reportVnextTheme","ThemeFluent","reportingTheme","ScopeSelectorLevelType","FilterKeyType","AccountCampaignContainerType","AccountCampaignOptionType","ScopeFilterLevelType","statusMap","Active","Inactive","constructor","rest","childFetched","optionType","number","extra","unAuthorized","deepness","isSelected","visible","addChild","parent","updateDeepness","resetChildren","midTraverseTree","visitSeq","o","i","containerKey","super","childPagination","updateChildPagination","SelectorRootOption","isRoot","SelectorContainerViewType","setup","createStyleSheet","selectorContainerHidden","selectorTreeExpandIcon","attach","SelectorTree","nodes","refresh","nodeRenderer","selectorNode","renderSelectorNode","containerConfig","onAdd","onRemove","hideAccountNodeArrow","ExpandableNode","updateTypeHandlers","nodeCache","rebuildNodeTreeIncrementally","TreeView","treeViewClassNames","selectorTree","iconsClassNameMap","collapsed","lastChild","expandIconAriaLabel","buildNodeTree","buildNode","rootOption","buildNodeCache","styles","selectorTreeHeight","buildSelectorTreeStyles","containerHeight","SelectorList","selectorList","selectorListHeight","buildSelectorListStyles","visibleOptions","AutoSizer","defaultHeight","defaultWidth","List","rowCount","rowHeight","rowRenderer","rowProps","renderListNode","SelectorContainer","containerContent","containerViewType","tree","containerHeader","renderSelectorHeader","col","coordinate","isLoading","Selector","containerMap","customerAccount","campaign","confirmOptionVisiblity","Row","Col","xs","optionContainerConfig","childrenVisible","localFilter","Set","toStringFunction","setCache","element","add","remove","isEmpty","size","callback","isSubsetOf","otherSet","isSub","difference","union","toArray","utils","leftArr","rightArr","getKey","cache","DoubleList","newSelected","originSelected","unionSelected","bubbleSelected","updateSelected","unselected","removeUnselected","removeAll","buildOptionSet","selectedSet","defaultSelectedOptions","prepareDefaultSelectedOptions","refreshEnabled","SelectorBox","selectorBox","ResultBox","resultBox","doubleList","selectorBoxConfig","leftOptionList","rightOptionList","selectedOptionSetList","buildSelectedSetByDeepness","optionSet","processedSet","optionArr","j","isAncestorSelected","childrenSet","unselectedOption","removeOneUnselected","isOptionInList","optionList","defaultOptions","disableRefresh","enableRefresh","optionSetList","sharedBasicStyle","doubleListHeight","bingColor","doubleListBackgroundColor","containerBorder","containerHegiht","resultListHeight","headerStyle","maxLimitContainer","selectorTreeNode","opacity","flex","textOverflow","whiteSpace","selectorNodeArrow","selectorListNode","addAll","addAllText","selectorAccountContainerHeader","selectorCampaignContainerHeader","selectorBoxHeader","searchListHeader","selectorDrillUpButton","clearIcon","selectorNodeOverflowSafeText","selectorAccountNodeText","selectedNodeArrow","accountNodeSelectedText","resultListBox","resultListHeader","resultListItemArrow","resultList","resultListItem","resultListItemContent","resultParentChainItem","parentArrow","itemName","accountParent","padidngTop","removeAllText","hidden","scopeSelector","GlyphiconWrapper","ajustStyle","isUINext","baIcon","env","ContainerConfigFactory","store","isInternalSearch","isOnApiSearch","searchTerm","some","customerAccountContainer","scopeSelectorLevel","ops","config","selectorNodeText","lastColumnInfo","serviceLevel","advertiserCustomerName","expandableOption","drillDown","headerStr","Customer","campaignSearchStr","customerAccountSearchStr","onQueryCustomerAccountChange","onQueryCampaignChange","onSearchCustomerAccount","searchCustomerAccount","onSearchCampaign","searchCampaign","onClearSearchCampaign","clearSearchCampaign","onClearSearchCustomerAccount","clearSearchCustomerAccount","onSelectScopeLevel","selectScopeLevel","getContainerHeight","campaignContainer","list","showCampaignsWithinCurrentAccount","Campaign","drillUp","createContainerConfig","AccountCampaignResultBox","reverse","renderResultNode","renderParentChain","parentChain","parentOption","childOption","jonitParentStr","reduce","joint","AccountCampaignSelectorBox","onSearch","async","newValue","serachText","onClearSearch","onSelect","getPlaceholder","placeholder","hideAccountSearchBar","showSearchBar","SearchBox","Account","ccJsDataStore","fetchDefaultSelectedOptions","global","reporting","accountTree","selectedScopeFilters","fetchSelectedScopeFilters","buildDefaultSelectedOptions","selectedOptions","findCustomerAndAccountFromMultiOptions","findCustomerAndAccount","foundOption","found","campaignFilter","FilterKey","all","searchHistorySelectorOptions","undeterminedAccounts","foundAccount","loadCampaigns","campaignOption","allAccountIds","selectedAccountIds","buildCustomerAccountOptionTree","entities","isCustomer","customerOption","accountOption","fetchAndBuildCustomerAccountOptionTree","rootCustomerId","hierarchyMaxAccountLimit","customFetchAndBuildAccountOptionList","fetchAndBuildCampaignOptionList","customers","limit","CustomerHierarchy","returnOnlyDirectlyLinkedEntities","contentType","dataType","preProcess","xhrFields","withCredentials","fetchCustomerHierarchy","customFetchAndBuildCampaignOptionList","campaigns","token","$top","$count","$select","$orderby","fetchCampaigns","selectorOption","buildCampaignOptionList","fetchAndBuildSearchCustomerList","searchText","searchCustomers","http","ReqId","generateGuid","fetchSearchCustomerList","advertiserCustomerId","fetchAndBuildSearchAccountList","searchAccounts","fetchSearchAccountList","accounts","AccountCampaignDataStore","StateStore","searchRootOption","initRootOption","loading","defaultCampaignParentOption","defaultSelectedOption","maxAccountLimit","isBeyondAccountLimit","initialSetUp","buildInitialDoubleListOptions","countAccount","toRdsSelected","fromRdsSelected","accountNumber","searchCustomer","searchAccount","searchOption","newSearchHistorySelectorOptions","scopeLevel","rdsSelected","userAllSelected","userSelected","accountIds","campaignReportScopes","customerScopes","shift","getSelected","customerFilter","accountFilter","underminedAccountFilter","AccountCampaignSelectorInternal","ds","allSelectedCorrected","loaded","setAllSelected","setSelected","generateBeyondAccountLimitText","ccJsData","allStr","specificStr","radioArea","hideRadioButtons","sm","Radio","defaultVisibleExpandableOptionList","componentDidMount","componentDidUpdate","correctDefaultAllSelected","setTimeout","withCcJsData","withStateStore"],"sourceRoot":""}