{"version":3,"file":"assets/js/286.bundle.94db30d5e5b2e3022ce8.js","mappings":";4HAqEO,SAASA,EAAUC,EAASC,EAAYC,EAAGC,GAE9C,OAAO,IAAKD,IAAMA,EAAIE,WAAU,SAAUC,EAASC,GAC/C,SAASC,EAAUC,GAAS,IAAMC,EAAKN,EAAUO,KAAKF,GAAS,CAAE,MAAOG,GAAKL,EAAOK,EAAI,CAAE,CAC1F,SAASC,EAASJ,GAAS,IAAMC,EAAKN,EAAiB,MAAEK,GAAS,CAAE,MAAOG,GAAKL,EAAOK,EAAI,CAAE,CAC7F,SAASF,EAAKI,GAJlB,IAAeL,EAIaK,EAAOC,KAAOT,EAAQQ,EAAOL,QAJ1CA,EAIyDK,EAAOL,MAJhDA,aAAiBN,EAAIM,EAAQ,IAAIN,GAAE,SAAUG,GAAWA,EAAQG,EAAQ,KAIjBO,KAAKR,EAAWK,EAAW,CAC7GH,GAAMN,EAAYA,EAAUa,MAAMhB,EAASC,GAAc,KAAKS,OAClE,GACJ,CAwIA,ICtMWO,+oCD4FkBC,OAAOC,OA0GXD,OAAOC,OCrMhC,SAAWF,GACPA,EAAmB,IAAI,MACvBA,EAAqB,MAAI,QACzBA,EAAoB,KAAI,OACxBA,EAAmB,IAAI,MACvBA,EAAsB,OAAI,QAC7B,CAND,CAMGA,IAAkBA,EAAgB,CAAC,ICP/B,MAAMG,EAiBT,2BAAOC,CAAqBC,GAwExB,GAAsB,IAAlBA,EAASC,KAAY,CACrB,MAAMC,EAAQ,IAAIC,MAAM,4DAExB,MADAD,EAAME,KAAO,uBACPF,CACV,CACA,MA5EmB,CAACG,IAChB,MAAMC,EAAWD,EAAKE,UACtB,IAAIC,EAAMF,EAASlB,OACnB,MAAQoB,EAAIhB,MAAM,CACd,MAAMiB,EAASD,EAAItB,MAAM,GACzB,QAAyBwB,IAArBD,EAAOE,WAA2BF,EAAOE,UAAUC,OAAS,EAC5D,OAAO,EAEXJ,EAAMF,EAASlB,MACnB,CACA,OAAO,CAAI,EAkERyB,CAAWb,IAhED,CAACK,IACd,MAAMC,EAAWD,EAAKE,UACtB,IAAIC,EAAMF,EAASlB,OACnB,MAAM0B,EAAeN,EAAItB,MAAM,GAC/B,QAA+BwB,IAA3BI,EAAaH,WAA2BG,EAAaH,UAAUC,OAAS,EACxE,OAAO,EAEX,IAAIG,EAAOP,EAEX,IADAA,EAAMF,EAASlB,QACPoB,EAAIhB,MAAM,CACd,MAAMiB,EAASD,EAAItB,MAAM,GACzB,QAAyBwB,IAArBD,EAAOE,WAAuD,IAA5BF,EAAOE,UAAUC,QAAgBH,EAAOE,UAAU,KAAOI,EAAK7B,MAAM,GAAG8B,GACzG,OAAO,EAEXD,EAAOP,EACPA,EAAMF,EAASlB,MACnB,CACA,OAAO,CAAI,EA+CgB6B,CAASjB,IA7CzB,CAACK,IACZ,MAAMC,EAAWD,EAAKE,UACtB,IAAIC,EAAMF,EAASlB,OACnB,MAAM0B,EAAeN,EAAItB,MAAM,GAC/B,IAAIgC,EACJ,QAA+BR,IAA3BI,EAAaH,WAA6D,IAAlCG,EAAaH,UAAUC,OAC/DM,EAAeJ,EAAaE,OAE3B,CACD,GAAsC,IAAlCF,EAAaH,UAAUC,OAUvB,OAAO,EAV8B,CACrC,MAAMO,EAAgBL,EAAaH,UAAU,GAC7C,GAAIQ,IAAkBL,EAAaE,KAAMX,EAAKe,IAAID,GAI9C,OAAO,EAHPD,EAAeC,CAKvB,CAIJ,CAEA,IADAX,EAAMF,EAASlB,QACPoB,EAAIhB,MAAM,CACd,MAAMiB,EAASD,EAAItB,MAAM,GACzB,SAA0BwB,IAArBD,EAAOE,WAAuD,IAA5BF,EAAOE,UAAUC,SAAiBM,IAAiBT,EAAOO,GAC7F,OAAO,EAEX,QAAyBN,IAArBD,EAAOE,WAAuD,IAA5BF,EAAOE,UAAUC,OAAc,CACjE,GAAgC,IAA5BH,EAAOE,UAAUC,SAAiBH,EAAOO,KAAOE,GAAgBT,EAAOE,UAAU,KAAOO,GACxF,OAAO,EAEX,GAAIT,EAAOE,UAAUC,OAAS,EAC1B,OAAO,CAEf,CACAJ,EAAMF,EAASlB,MACnB,CACA,OAAO,CAAI,EAOsCiC,CAAOrB,EAChE,CASA,qBAAOsB,CAAeC,GAClB,OAAO9C,EAAU+C,UAAM,OAAQ,GAAQ,YACnC,MAAMC,EAAc,CAChBC,IAAK,IAEHC,EAAe,IAAIC,OAAO,cAEhCH,EAAYC,IAAMC,EAAaE,KAAKN,EAAQG,KAAO,IAAMH,EAAQG,IAAII,MAAM,gBAAgB,GAAKP,EAAQG,IACxGD,EAAYM,OAASR,EAAQQ,OAC7B,MAAMC,EAAU,CAAC,EAajB,OAZAT,EAAQS,QAAQC,SAAQ,CAAC/C,EAAOgD,KAC5BF,EAAQE,GAAOhD,CAAK,IAEpBU,OAAOuC,KAAKH,GAASpB,SACrBa,EAAYO,QAAUA,GAEtBT,EAAQQ,SAAWpC,EAAcyC,OAASb,EAAQQ,SAAWpC,EAAc0C,MAAQd,EAAQQ,SAAWpC,EAAc2C,MACpHb,EAAYc,WAAazC,EAAoB0C,eAAejB,IAKzDE,CACX,GACJ,CASA,qBAAOe,CAAejB,GAClB,OAAO9C,EAAU+C,UAAM,OAAQ,GAAQ,YACnC,IACIe,EADAE,GAAa,EAEjB,IACI,MAAMC,EAAWnB,EAAQoB,QACzBJ,QAAaG,EAASE,OACtBH,GAAa,CACjB,CACA,MAAOpD,GAEP,CACA,IAAKoD,EACD,IACI,GAAoB,oBAATI,KAAsB,CAC7B,MAAMC,QAAavB,EAAQuB,OACrBC,EAAS,IAAIC,WACnBT,QAAa,IAAIzD,SAASC,IACtBgE,EAAOE,iBAAiB,QAAQ,KAC5B,MAAMC,EAAUH,EAAOxD,OAWjB4D,EADQ,IAAIvB,OAAO,mDACFwB,KAAKF,GAC5BnE,EAAQoE,EAAS,GAAG,IACrB,GACHJ,EAAOM,cAAcP,EAAK,GAElC,KAC2B,oBAAXQ,SAEZf,SADqBhB,EAAQgC,UACfC,SAAS,WAE3Bf,GAAa,CACjB,CACA,MAAOpD,GAEP,CAEJ,OAAOkD,CACX,GACJ,CAQA,WAAAkB,CAAYzD,GAER,GADAwB,KAAKxB,SAAW,IAAI0D,SACI,IAAb1D,EAA0B,CACjC,MAAM2D,EAAQ7D,EAAoB8D,aAClC,GAAI5D,EAASY,OAAS+C,EAAO,CACzB,MAAMzD,EAAQ,IAAIC,MAAM,uEAAuEwD,KAE/F,MADAzD,EAAME,KAAO,uBACPF,CACV,CACA,IAAK,MAAM2D,KAAO7D,EACdwB,KAAKsC,WAAWD,EAExB,CACJ,CAOA,UAAAC,CAAWvC,GACP,MAAMoC,EAAQ7D,EAAoB8D,aAClC,GAAmB,KAAfrC,EAAQP,GAAW,CACnB,MAAMd,EAAQ,IAAIC,MAAM,0DAExB,MADAD,EAAME,KAAO,uBACPF,CACV,CACA,GAAIsB,KAAKxB,SAASC,OAAS0D,EAAO,CAC9B,MAAMzD,EAAQ,IAAIC,MAAM,uEAAuEwD,KAE/F,MADAzD,EAAME,KAAO,uBACPF,CACV,CACA,GAAIsB,KAAKxB,SAASoB,IAAIG,EAAQP,IAAK,CAC/B,MAAMd,EAAQ,IAAIC,MAAM,oCAAoCoB,EAAQP,0CAEpE,MADAd,EAAME,KAAO,4BACPF,CACV,CAEA,OADAsB,KAAKxB,SAAS+D,IAAIxC,EAAQP,GAAIO,GACvBA,EAAQP,EACnB,CAOA,aAAAgD,CAAcC,GACV,MAAMC,EAAe1C,KAAKxB,SAASmE,OAAOF,GACpC3D,EAAWkB,KAAKxB,SAASO,UAC/B,IAAIC,EAAMF,EAASlB,OAInB,MAAQoB,EAAIhB,MAAM,CACd,MAAM4E,EAAe5D,EAAItB,MAAM,GAAGyB,UAClC,QAA4B,IAAjByD,EAA8B,CACrC,MAAMC,EAAQD,EAAaE,QAAQL,IACpB,IAAXI,GACAD,EAAaG,OAAOF,EAAO,GAEH,IAAxBD,EAAaxD,eACNJ,EAAItB,MAAM,GAAGyB,SAE5B,CACAH,EAAMF,EAASlB,MACnB,CACA,OAAO8E,CACX,CAOA,UAAAM,GACI,OAAO/F,EAAU+C,UAAM,OAAQ,GAAQ,YACnC,MAAMxB,EAAW,GACXyE,EAAc,CAChBzE,YAEEM,EAAWkB,KAAKxB,SAASO,UAC/B,IAAIC,EAAMF,EAASlB,OACnB,GAAIoB,EAAIhB,KAAM,CACV,MAAMU,EAAQ,IAAIC,MAAM,2DAExB,MADAD,EAAME,KAAO,gBACPF,CACV,CACA,IAAKJ,EAAoBC,qBAAqByB,KAAKxB,UAAW,CAC1D,MAAME,EAAQ,IAAIC,MAAM,wUAKxB,MADAD,EAAME,KAAO,qBACPF,CACV,CACA,MAAQM,EAAIhB,MAAM,CACd,MAAMkF,EAAclE,EAAItB,MAAM,GACxByF,QAA0B7E,EAAoBwB,eAAeoD,EAAYnD,SAM/E,QAA8Bb,IAA1BiE,EAAiBpC,YAAoD7B,IAA7BiE,EAAiB3C,cAAsEtB,IAA7CiE,EAAiB3C,QAAQ,iBAAgC,CAC3I,MAAM9B,EAAQ,IAAIC,MAAM,qDAAqDuE,EAAY1D,wEAEzF,MADAd,EAAME,KAAO,8BACPF,CACV,CACAyE,EAAiB3D,GAAK0D,EAAY1D,QACJN,IAA1BgE,EAAY/D,WAA2B+D,EAAY/D,UAAUC,OAAS,IACtE+D,EAAiBhE,UAAY+D,EAAY/D,WAE7CX,EAAS4E,KAAKD,GACdnE,EAAMF,EAASlB,MACnB,CAEA,OADAqF,EAAYzE,SAAWA,EAChByE,CACX,GACJ,CAQA,aAAAI,CAAcC,EAAa5D,GACvB,IAAKM,KAAKxB,SAASoB,IAAI0D,GAAc,CACjC,MAAM5E,EAAQ,IAAIC,MAAM,aAAa2E,0CAErC,MADA5E,EAAME,KAAO,oBACPF,CACV,CACA,QAA4B,IAAjBgB,IAAiCM,KAAKxB,SAASoB,IAAIF,GAAe,CACzE,MAAMhB,EAAQ,IAAIC,MAAM,cAAce,0CAEtC,MADAhB,EAAME,KAAO,qBACPF,CACV,CACA,QAA4B,IAAjBgB,EAA8B,CACrC,MAAM6D,EAAYvD,KAAKxB,SAASgF,IAAIF,GAIpC,QAH4BpE,IAAxBqE,EAAUpE,YACVoE,EAAUpE,UAAY,KAEyB,IAA/CoE,EAAUpE,UAAU2D,QAAQpD,GAAsB,CAClD,MAAMhB,EAAQ,IAAIC,MAAM,cAAce,sCAAiD4D,KAEvF,MADA5E,EAAME,KAAO,uBACPF,CACV,CACA6E,EAAUpE,UAAUiE,KAAK1D,EAC7B,KACK,CACD,MAAMZ,EAAWkB,KAAKxB,SAASO,UAC/B,IAAIQ,EACAP,EAAMF,EAASlB,OACnB,MAAQoB,EAAIhB,MAAQgB,EAAItB,MAAM,GAAG8B,KAAO8D,GACpC/D,EAAOP,EACPA,EAAMF,EAASlB,OAEnB,QAAoB,IAAT2B,EAYN,CACD,MAAMb,EAAQ,IAAIC,MAAM,wBAAwBe,qDAEhD,MADAhB,EAAME,KAAO,8BACPF,CACV,CAhBiC,CAC7B,MAAM+E,EAAMlE,EAAK7B,MAAM,GAIvB,QAH+BwB,IAA3BF,EAAItB,MAAM,GAAGyB,YACbH,EAAItB,MAAM,GAAGyB,UAAY,KAEgB,IAAzCH,EAAItB,MAAM,GAAGyB,UAAU2D,QAAQW,GAAa,CAC5C,MAAM/E,EAAQ,IAAIC,MAAM,cAAc8E,sCAAwCH,KAE9E,MADA5E,EAAME,KAAO,uBACPF,CACV,CACAM,EAAItB,MAAM,GAAGyB,UAAUiE,KAAKK,EAChC,CAMJ,CACJ,CAQA,gBAAAC,CAAiBJ,EAAa5D,GAC1B,MAAMK,EAAUC,KAAKxB,SAASgF,IAAIF,GAClC,QAAuB,IAAZvD,QAAiDb,IAAtBa,EAAQZ,WAAwD,IAA7BY,EAAQZ,UAAUC,OACvF,OAAO,EAEX,QAA4B,IAAjBM,EAA8B,CACrC,MAAMmD,EAAQ9C,EAAQZ,UAAU2D,QAAQpD,GACxC,OAAe,IAAXmD,IAGJ9C,EAAQZ,UAAU4D,OAAOF,EAAO,IACzB,EACX,CAGI,cADO9C,EAAQZ,WACR,CAEf,EAOJb,EAAoB8D,aAAe,GCrZ5B,MAAMuB,EAQT,WAAA1B,CAAY2B,GACR5D,KAAK6D,UAAY,IAAI3B,IACrBlC,KAAK8D,OAAOF,EAChB,CAOA,oBAAAG,CAAqBC,GACjB,MAAMjD,EAAOiD,EAAajD,KACpBkD,EAAU,CAAC,EAMjB,GALAA,EAAQC,OAASF,EAAaE,YACEhF,IAA5B8E,EAAaG,aACbF,EAAQE,WAAaH,EAAaG,YAEtCF,EAAQzD,QAAUwD,EAAaxD,aACPtB,IAApB+E,EAAQzD,cAA6DtB,IAApC+E,EAAQzD,QAAQ,iBACK,qBAAlDyD,EAAQzD,QAAQ,gBAAgBF,MAAM,KAAK,GAA2B,CACtE,MAAM8D,EAAaC,KAAKC,UAAUvD,GAClC,OAAO,IAAIwD,SAASH,EAAYH,EACpC,CAEJ,OAAO,IAAIM,SAASxD,EAAMkD,EAC9B,CAOA,MAAAH,CAAOF,GACH5D,KAAKwE,SAAWZ,EAAS,mBACzB,MAAMC,EAAYD,EAASC,UAC3B,IAAK,IAAIY,EAAI,EAAGC,EAAIb,EAAUzE,OAAQqF,EAAIC,EAAGD,IACzCzE,KAAK6D,UAAUtB,IAAIsB,EAAUY,GAAGjF,GAAIQ,KAAK+D,qBAAqBF,EAAUY,IAEhF,CAOA,eAAAE,CAAgBlC,GACZ,OAAOzC,KAAK6D,UAAUL,IAAIf,EAC9B,CAMA,YAAAmC,GACI,OAAO5E,KAAK6D,SAChB,CAMA,qBAACgB,GACG,MAAM/F,EAAWkB,KAAK6D,UAAU9E,UAChC,IAAIC,EAAMF,EAASlB,OACnB,MAAQoB,EAAIhB,YACFgB,EAAItB,MACVsB,EAAMF,EAASlB,MAEvB,ECzEG,MAUMkH,EAAa,IAAIC,IAAI,CAAC,sBAAuB,qBAAsB,yBAA0B,qBAAsB,kCAAmC,+BCR5J,MAAMC,UAAyBrG,MASlC,0BAAOsG,CAAoBvG,GACvB,IAAIwG,EAQJ,OAPIxG,aAAiBC,MACjBuG,EAAmBxG,GAGnBwG,EAAmB,IAAIF,EACvBE,EAAiBC,YAAczG,GAE5BwG,CACX,CAQA,WAAAjD,CAAYmD,GACRC,MAAMD,GACNhH,OAAOkH,eAAetF,KAAMgF,EAAiBO,UACjD,EC/BG,MAAMC,EAAkB,CAAC,UAAW,UAAW,WAAY,UAAW,OAAQ,QAAS,aAAc,UAyB/FC,EAAoBC,IAC7B,MAAMC,EAAYD,GAAWA,EAAQzD,aAAeyD,EAAQzD,YAAYrD,KACxE,GAAkB,WAAd+G,GAAwC,SAAdA,GAAsC,SAAdA,GAAsC,aAAdA,GAA+C,iBAAZD,EAC7G,OAAOA,EAEX,GAAkB,gBAAdC,EACAD,EAAU5D,OAAO8D,KAAKF,QAErB,GAAkB,cAAdC,GAA2C,eAAdA,GAA4C,eAAdA,GAA4C,eAAdA,GAA4C,gBAAdA,GAA6C,gBAAdA,GAA6C,sBAAdA,GAAmD,iBAAdA,GAA8C,iBAAdA,GAA8C,aAAdA,EAC/RD,EAAU5D,OAAO8D,KAAKF,EAAQ3D,aAG9B,IACI2D,EAAUrB,KAAKC,UAAUoB,EAC7B,CACA,MAAOhH,GACH,MAAM,IAAIC,MAAM,kCACpB,CAEJ,OAAO+G,CAAO,EAOLG,EAAc3F,GAChB4F,EAAgB5F,GAQd6F,EAAe,CAAC7F,EAAK8F,KAC9BA,EAAYvF,SAASwF,GAASC,EAAkBD,KACzCH,EAAgB5F,EAAK8F,IAQ1BF,EAAkB,CAAC5F,EAAKiG,EAAerB,KAIzC,IAAiC,KADjC5E,EAAMA,EAAIkG,eACFtD,QAAQ,YAAoB,CAGhC,MAAMuD,GAFNnG,EAAMA,EAAIoG,QAAQ,WAAY,KAEDxD,QAAQ,KAC/ByD,EAAkBrG,EAAI4C,QAAQ,KACpC,IAAI0D,EAAW,GACf,IAAyB,IAArBD,EACA,OAA0B,IAAtBF,GAA2BA,EAAmBE,GAC9CC,EAAWtG,EAAIuG,UAAU,EAAGJ,GACrBF,EAAavG,IAAI4G,KAG5BA,EAAWtG,EAAIuG,UAAU,EAAGF,GACrBJ,EAAavG,IAAI4G,GAEhC,CACA,OAAO,CAAK,EAMVN,EAAqBD,IACvB,IAA2B,IAAvBA,EAAKnD,QAAQ,KACb,MAAM,IAAIkC,EAAiB,iIAC/B,ECvGG,MAAM0B,EAQT,WAAAzE,CAAY0E,EAAoB,IAC5B3G,KAAK2G,kBAAoB,IAAIzE,IAC7B,IAAK,MAAM0E,KAAUD,EAAmB,CACpC,MAAME,EAAKD,EAAO3E,YAClBjC,KAAK2G,kBAAkBpE,IAAIsE,EAAID,EACnC,CACJ,CAWA,oBAAAE,CAAqBD,GACjB,OAAO7G,KAAK2G,kBAAkBnD,IAAIqD,EACtC,CAQA,oBAAAE,CAAqBF,EAAID,GACrB5G,KAAK2G,kBAAkBpE,IAAIsE,EAAID,EACnC,ECnCG,MAAMI,EAAe,KACxB,IAAIC,EAAO,GACX,IAAK,IAAIC,EAAI,EAAGA,EAAI,GAAIA,IACV,IAANA,GAAiB,KAANA,GAAkB,KAANA,GAAkB,KAANA,IACnCD,GAAQ,KAEZA,GAAQE,KAAKC,MAAsB,GAAhBD,KAAKE,UAAerF,SAAS,IAEpD,OAAOiF,CAAI,EAUFK,EAAmB,CAACvH,EAASkE,EAASvD,KAC/C,IAAIhD,EAAQ,KACZ,GAAuB,oBAAZ6J,SAA2BxH,aAAmBwH,QACrD7J,EAAQqC,EAAQS,QAAQgD,IAAI9C,QAE3B,QAAuB,IAAZuD,QAA+C/E,IAApB+E,EAAQzD,QAC/C,GAAuB,oBAAZgH,SAA2BvD,EAAQzD,mBAAmBgH,QAC7D9J,EAAQuG,EAAQzD,QAAQgD,IAAI9C,QAE3B,GAAIuD,EAAQzD,mBAAmBiH,MAAO,CACvC,MAAMjH,EAAUyD,EAAQzD,QACxB,IAAK,IAAIiE,EAAI,EAAGC,EAAIlE,EAAQpB,OAAQqF,EAAIC,EAAGD,IACvC,GAAIjE,EAAQiE,GAAG,KAAO/D,EAAK,CACvBhD,EAAQ8C,EAAQiE,GAAG,GACnB,KACJ,CAER,WACkCvF,IAAzB+E,EAAQzD,QAAQE,KACrBhD,EAAQuG,EAAQzD,QAAQE,IAGhC,OAAOhD,CAAK,EAWHgK,EAAmB,CAAC3H,EAASkE,EAASvD,EAAKhD,KACpD,GAAuB,oBAAZ6J,SAA2BxH,aAAmBwH,QACrDxH,EAAQS,QAAQ+B,IAAI7B,EAAKhD,QAExB,QAAuB,IAAZuG,EACZ,QAAwB/E,IAApB+E,EAAQzD,QACRyD,EAAQzD,QAAU,IAAIgH,QAAQ,CAC1B,CAAC9G,GAAMhD,SAIX,GAAuB,oBAAZ8J,SAA2BvD,EAAQzD,mBAAmBgH,QAC7DvD,EAAQzD,QAAQ+B,IAAI7B,EAAKhD,QAExB,GAAIuG,EAAQzD,mBAAmBiH,MAAO,CACvC,IAAIhD,EAAI,EACR,MAAMC,EAAIT,EAAQzD,QAAQpB,OAC1B,KAAOqF,EAAIC,EAAGD,IAAK,CACf,MAAMkD,EAAS1D,EAAQzD,QAAQiE,GAC/B,GAAIkD,EAAO,KAAOjH,EAAK,CACnBiH,EAAO,GAAKjK,EACZ,KACJ,CACJ,CACI+G,IAAMC,GACNT,EAAQzD,QAAQ4C,KAAK,CAAC1C,EAAKhD,GAEnC,MAEIU,OAAOwJ,OAAO3D,EAAQzD,QAAS,CAAE,CAACE,GAAMhD,GAGpD,EAWSmK,EAAsB,CAAC9H,EAASkE,EAASvD,EAAKhD,KAChC,oBAAZ6J,SAA2BxH,aAAmBwH,QACrDxH,EAAQS,QAAQsH,OAAOpH,EAAKhD,QAEJ,IAAZuG,SACY/E,IAApB+E,EAAQzD,QACRyD,EAAQzD,QAAU,IAAIgH,QAAQ,CAC1B,CAAC9G,GAAMhD,IAIY,oBAAZ8J,SAA2BvD,EAAQzD,mBAAmBgH,QAC7DvD,EAAQzD,QAAQsH,OAAOpH,EAAKhD,GAEvBuG,EAAQzD,mBAAmBiH,MAChCxD,EAAQzD,QAAQ4C,KAAK,CAAC1C,EAAKhD,SAEFwB,IAApB+E,EAAQzD,QACbyD,EAAQzD,QAAU,CAAE,CAACE,GAAMhD,QAEGwB,IAAzB+E,EAAQzD,QAAQE,GACrBuD,EAAQzD,QAAQE,GAAOhD,EAGvBuG,EAAQzD,QAAQE,IAAQ,KAAKhD,IAGzC,EC1HG,MAAMqK,EAST,WAAA9F,CAAY+F,EAAwBC,GAChCjI,KAAKgI,uBAAyBA,EAC9BhI,KAAKiI,8BAAgCA,CACzC,ECTG,IAAIC,ECDAC,GDEX,SAAWD,GAEPA,EAAiBA,EAAuB,KAAI,GAAK,OACjDA,EAAiBA,EAA2C,yBAAI,GAAK,2BACrEA,EAAiBA,EAAwC,sBAAI,GAAK,wBAClEA,EAAiBA,EAAiD,+BAAI,GAAK,gCAE9E,CAPD,CAOGA,IAAqBA,EAAmB,CAAC,IAMrC,MAAME,EACT,WAAAnG,GAKIjC,KAAKqI,aAAeH,EAAiBI,IACzC,CASA,6BAAOC,CAAuBC,EAASC,GACnC,IAAIxE,EACAuE,EAAQE,6BAA6BhC,EACrCzC,EAAUuE,EAAQE,kBAAkB5B,qBAAqBsB,GAGzDI,EAAQE,kBAAoB,IAAIhC,OAEb,IAAZzC,IACPA,EAAU,IAAImE,EACdI,EAAQE,kBAAkB3B,qBAAqBqB,EAAyBnE,IAE5EA,EAAQ0E,gBAAgBF,EAC5B,CAOA,eAAAE,CAAgBF,GACZzI,KAAKqI,aAAerI,KAAKqI,aAAeI,CAC5C,CAMA,eAAAG,GACI,OAAO5I,KAAKqI,aAAarG,SAAS,GACtC,EEtDG,MAAM6G,EAOT,WAAA5G,CAAY+F,GACRhI,KAAKgI,uBAAyBA,CAClC,CAQA,OAAAc,CAAQN,GACJ,OAAOvL,EAAU+C,UAAM,OAAQ,GAAQ,YACnC,MAAME,EAAiC,iBAApBsI,EAAQzI,QAAuByI,EAAQzI,QAAUyI,EAAQzI,QAAQG,IACpF,GAAI2F,EAAW3F,IAASsI,EAAQxC,aAAeD,EAAa7F,EAAKsI,EAAQxC,aAAe,CACpF,IAAI/B,EAIA+D,EACAC,EAJAO,EAAQE,6BAA6BhC,IACrCzC,EAAUuE,EAAQE,kBAAkB5B,qBAAqBiB,IAIzD9D,IACA+D,EAAyB/D,EAAQ+D,uBACjCC,EAAgChE,EAAQgE,+BAEvCD,IACDA,EAAyBhI,KAAKgI,wBAElC,MACMe,EAAY,gBADEf,EAAuBgB,eAAef,KAE1DJ,EAAoBW,EAAQzI,QAASyI,EAAQvE,QAAS4E,EAAsBI,qBAAsBF,GAClGX,EAAwBG,uBAAuBC,EAASN,EAAiBgB,+BAC7E,MAEQV,EAAQvE,QAAQzD,gBACTgI,EAAQvE,QAAQzD,QAAQqI,EAAsBI,sBAG7D,aAAajJ,KAAKmJ,eAAeL,QAAQN,EAC7C,GACJ,CAOA,OAAAY,CAAQxL,GACJoC,KAAKmJ,eAAiBvL,CAC1B,EAMJiL,EAAsBI,qBAAuB,gBCrEtC,MAAMI,EAQT,OAAAP,CAAQN,GACJ,OAAOvL,EAAU+C,UAAM,OAAQ,GAAQ,YACnCwI,EAAQ5E,eAAiB0F,MAAMd,EAAQzI,QAASyI,EAAQvE,QAC5D,GACJ,ECbG,MAAMsF,EAUT,WAAAtH,CAAYuH,EAAQD,EAAoBE,cAAeC,EAAaH,EAAoBI,oBAAqBC,EAAcL,EAAoBM,oBAC3I,GAAIL,EAAQD,EAAoBO,WAAaJ,EAAaH,EAAoBQ,gBAAiB,CAC3F,MAAMrL,EAAQ,IAAIC,MAAM,gDAAgD4K,EAAoBO,iBAAiBP,EAAoBQ,mBAEjI,MADArL,EAAME,KAAO,mBACPF,CACV,CACK,GAAI8K,EAAQD,EAAoBO,UAAW,CAC5C,MAAMpL,EAAQ,IAAIC,MAAM,iCAAiC4K,EAAoBO,aAE7E,MADApL,EAAME,KAAO,mBACPF,CACV,CACK,GAAIgL,EAAaH,EAAoBQ,gBAAiB,CACvD,MAAMrL,EAAQ,IAAIC,MAAM,sCAAsC4K,EAAoBQ,mBAElF,MADArL,EAAME,KAAO,mBACPF,CACV,CACK,GAAI8K,EAAQ,GAAKE,EAAa,EAAG,CAClC,MAAMhL,EAAQ,IAAIC,MAAM,+CAExB,MADAD,EAAME,KAAO,uBACPF,CACV,CACK,GAAI8K,EAAQ,EAAG,CAChB,MAAM9K,EAAQ,IAAIC,MAAM,gCAExB,MADAD,EAAME,KAAO,uBACPF,CACV,CACK,GAAIgL,EAAa,EAAG,CACrB,MAAMhL,EAAQ,IAAIC,MAAM,qCAExB,MADAD,EAAME,KAAO,uBACPF,CACV,CACAsB,KAAKwJ,MAAQrC,KAAK6C,IAAIR,EAAOD,EAAoBO,WACjD9J,KAAK0J,WAAavC,KAAK6C,IAAIN,EAAYH,EAAoBQ,iBAC3D/J,KAAK4J,YAAcA,CACvB,CAMA,WAAAK,GACI,OAAOV,EAAoBO,SAC/B,EAOJP,EAAoBE,cAAgB,EAMpCF,EAAoBI,oBAAsB,EAM1CJ,EAAoBO,UAAY,IAMhCP,EAAoBQ,gBAAkB,GAKtCR,EAAoBM,mBAAqB,KAAM,EC5ExC,MAAMK,EAQT,WAAAjI,CAAYgC,EAAU,IAAIsF,GACtBvJ,KAAKiE,QAAUA,CACnB,CAQA,OAAAkG,CAAQvG,GACJ,OAAqE,IAA9DsG,EAAaE,mBAAmBtH,QAAQc,EAASM,OAC5D,CAQA,UAAAmG,CAAWtK,EAASkE,GAChB,MAAM1D,EAA4B,iBAAZR,EAAuBkE,EAAQ1D,OAASR,EAAQQ,OAEtE,OADyBA,IAAWpC,EAAc2C,KAAOP,IAAWpC,EAAcyC,OAASL,IAAWpC,EAAc0C,MAExC,6BAAvDyG,EAAiBvH,EAASkE,EAAS,eAM5D,CASA,QAAAqG,CAAS1G,EAAU2G,EAAef,GAC9B,MAAMgB,EAAgB,IAAMC,OAAOtD,KAAKE,SAASqD,QAAQ,IACnDC,OAAkCzL,IAArB0E,EAASpD,QAAwBoD,EAASpD,QAAQgD,IAAI0G,EAAaU,oBAAsB,KAC5G,IAAIC,EAaJ,OAVQA,EAFW,OAAfF,EACIF,OAAOK,MAAML,OAAOE,IACTxD,KAAK4D,OAAO,IAAIC,KAAKL,GAAYM,UAAYD,KAAKE,OAAS,KAG3DT,OAAOE,GAKXJ,GAAiB,EAAIvK,KAAKmL,0BAA0BZ,GAAiBf,EAAQgB,IAAkBhB,EAAQgB,IAE/GrD,KAAK6C,IAAIa,EAAU7K,KAAKiE,QAAQgG,cAAgBO,IAC3D,CAOA,yBAAAW,CAA0BC,GACtB,OAAOjE,KAAK4D,MAAM,IAAW5D,KAAKkE,IAAI,EAAGD,GAAY,GACzD,CAQA,KAAAE,CAAMC,GACF,OAAOtO,EAAU+C,UAAM,OAAQ,GAAQ,YACnC,MAAMwL,EAAmC,IAAfD,EAC1B,OAAO,IAAIjO,SAASC,GAAYkO,WAAWlO,EAASiO,IACxD,GACJ,CACA,UAAAE,CAAWlD,GACP,IAAIvE,EAOJ,OANIuE,EAAQE,6BAA6BhC,IACrCzC,EAAUuE,EAAQE,kBAAkB5B,qBAAqB9G,KAAKiE,QAAQhC,mBAEnD,IAAZgC,IACPA,EAAU7F,OAAOwJ,OAAO,IAAI2B,EAAuBvJ,KAAKiE,UAErDA,CACX,CAUA,gBAAA0H,CAAiBnD,EAAS+B,EAAetG,GACrC,OAAOhH,EAAU+C,UAAM,OAAQ,GAAQ,YAEnC,SADMA,KAAKmJ,eAAeL,QAAQN,GAC9B+B,EAAgBtG,EAAQyF,YAAc1J,KAAKmK,QAAQ3B,EAAQ5E,WAAa5D,KAAKqK,WAAW7B,EAAQzI,QAASyI,EAAQvE,UAAYA,EAAQ2F,YAAY3F,EAAQuF,MAAOe,EAAe/B,EAAQzI,QAASyI,EAAQvE,QAASuE,EAAQ5E,UAAW,GAClO2G,EACF7C,EAAiBc,EAAQzI,QAASyI,EAAQvE,QAASiG,EAAa0B,qBAAsBrB,EAAcvI,YACpG,MAAMwH,EAAQxJ,KAAKsK,SAAS9B,EAAQ5E,SAAU2G,EAAetG,EAAQuF,OAErE,aADMxJ,KAAKsL,MAAM9B,SACJxJ,KAAK2L,iBAAiBnD,EAAS+B,EAAetG,EAC/D,CAIJ,GACJ,CAQA,OAAA6E,CAAQN,GACJ,OAAOvL,EAAU+C,UAAM,OAAQ,GAAQ,YACnC,MACMiE,EAAUjE,KAAK0L,WAAWlD,GAEhC,OADAJ,EAAwBG,uBAAuBC,EAASN,EAAiB2D,6BAC5D7L,KAAK2L,iBAAiBnD,EAHb,EAGqCvE,EAC/D,GACJ,CAOA,OAAAmF,CAAQxL,GACJoC,KAAKmJ,eAAiBvL,CAC1B,EAOJsM,EAAaE,mBAAqB,CAC9B,IACA,IACA,KAOJF,EAAa0B,qBAAuB,gBAMpC1B,EAAaU,mBAAqB,cC7K3B,MAAMkB,EAST,WAAA7J,CAAY8J,EAAeD,EAAuBE,sBAAuBC,EAAiBH,EAAuBI,uBAC7G,GAAIH,EAAeD,EAAuBK,kBAAmB,CACzD,MAAMzN,EAAQ,IAAIC,MAAM,wCAAwCmN,EAAuBK,qBAEvF,MADAzN,EAAME,KAAO,mBACPF,CACV,CACA,GAAIqN,EAAe,EAAG,CAClB,MAAMrN,EAAQ,IAAIC,MAAM,uCAExB,MADAD,EAAME,KAAO,uBACPF,CACV,CACAsB,KAAK+L,aAAeA,EACpB/L,KAAKiM,eAAiBA,CAC1B,EAOJH,EAAuBE,sBAAwB,EAM/CF,EAAuBK,kBAAoB,GAK3CL,EAAuBI,sBAAwB,KAAM,ECjC9C,MAAME,EAQT,WAAAnK,CAAYgC,EAAU,IAAI6H,GACtB9L,KAAKiE,QAAUA,CACnB,CAOA,UAAAoI,CAAWzI,GACP,OAA2E,IAApEwI,EAAgBE,sBAAsBxJ,QAAQc,EAASM,OAClE,CAOA,iBAAAqI,CAAkB3I,GACd,OAAOA,EAASpD,QAAQZ,IAAIwM,EAAgBI,gBAChD,CAOA,iBAAAC,CAAkB7I,GACd,OAAOA,EAASpD,QAAQgD,IAAI4I,EAAgBI,gBAChD,CAOA,aAAAE,CAAcxM,GACV,OAA+B,IAAxBA,EAAI4C,QAAQ,MACvB,CAQA,6BAAA6J,CAA8BC,EAAYC,GACtC,MAAMC,EAAkB,+BAClBC,EAAiBD,EAAgBlL,KAAKgL,GAC5C,IAAII,EACAC,EACmB,OAAnBF,IACAC,EAAmBD,EAAe,IAEtC,MAAMG,EAAkBJ,EAAgBlL,KAAKiL,GAI7C,OAHwB,OAApBK,IACAD,EAAoBC,EAAgB,SAEL,IAArBF,QAAiE,IAAtBC,GAAqCD,IAAqBC,CACvH,CASA,gBAAAE,CAAiBN,EAAarE,GAC1B,OAAOvL,EAAU+C,UAAM,OAAQ,GAAQ,YT+CT,IAACoN,EAAQrN,ES9CnCyI,EAAQzI,QAAqC,iBAApByI,EAAQzI,QAAuB8M,QT8C7BO,ES9CwEP,ET8ChE9M,ES9C6EyI,EAAQzI,QT8CzE9C,OAAU,OAAQ,OAAQ,GAAQ,YACzF,MAAM8D,EAAOhB,EAAQS,QAAQgD,IAAI,sBAAwBzD,EAAQuB,aAAehE,QAAQC,aAAQ2B,IAC1F,OAAEqB,EAAM,QAAEC,EAAO,SAAE6M,EAAQ,eAAEC,EAAc,KAAEC,EAAI,YAAEC,EAAW,MAAEC,EAAK,SAAEC,EAAQ,UAAEC,EAAS,UAAEC,EAAS,OAAEC,GAAW9N,EACxH,OAAO,IAAIwH,QAAQ6F,EAAQ,CAAE7M,SAAQC,UAASO,OAAMsM,WAAUC,iBAAgBC,OAAMC,cAAaC,QAAOC,WAAUC,YAAWC,YAAWC,UAC5I,ISjDQ,GACJ,CAOA,UAAAnC,CAAWlD,GACP,IAAIvE,EAOJ,OANIuE,EAAQE,6BAA6BhC,IACrCzC,EAAUuE,EAAQE,kBAAkB5B,qBAAqBgF,SAEtC,IAAZ7H,IACPA,EAAU7F,OAAOwJ,OAAO,IAAIkE,EAA0B9L,KAAKiE,UAExDA,CACX,CAUA,mBAAA6J,CAAoBtF,EAASuF,EAAe9J,GACxC,OAAOhH,EAAU+C,UAAM,OAAQ,GAAQ,kBAC7BA,KAAKmJ,eAAeL,QAAQN,GAClC,MAAM5E,EAAW4E,EAAQ5E,SACzB,GAAImK,EAAgB9J,EAAQ8H,cAAgB/L,KAAKqM,WAAWzI,IAAa5D,KAAKuM,kBAAkB3I,IAAaK,EAAQgI,eAAerI,GAApI,CAEI,KADEmK,EACEnK,EAASM,SAAWkI,EAAgB4B,sBACpCxF,EAAQvE,QAAQ1D,OAASpC,EAAc8P,WAChCzF,EAAQvE,QAAQlD,SAEtB,CACD,MAAM8L,EAAc7M,KAAKyM,kBAAkB7I,IACtC5D,KAAK0M,cAAcG,IAAgB7M,KAAK2M,8BAA8B/I,EAAS1D,IAAK2M,WAC9ErE,EAAQvE,QAAQzD,QAAQ4L,EAAgBnD,4BAE7CjJ,KAAKmN,iBAAiBN,EAAarE,EAC7C,OACMxI,KAAK8N,oBAAoBtF,EAASuF,EAAe9J,EAI3D,CACJ,GACJ,CAQA,OAAA6E,CAAQN,GACJ,OAAOvL,EAAU+C,UAAM,OAAQ,GAAQ,YACnC,MACMiE,EAAUjE,KAAK0L,WAAWlD,GAGhC,OAFAA,EAAQvE,QAAQyJ,SAAWtB,EAAgB8B,gBAC3C9F,EAAwBG,uBAAuBC,EAASN,EAAiBiG,gCAC5DnO,KAAK8N,oBAAoBtF,EAJhB,EAIwCvE,EAClE,GACJ,CAOA,OAAAmF,CAAQxL,GACJoC,KAAKmJ,eAAiBvL,CAC1B,EAOJwO,EAAgBE,sBAAwB,CACpC,IACA,IACA,IACA,IACA,KAOJF,EAAgB4B,sBAAwB,IAMxC5B,EAAgBI,gBAAkB,WAMlCJ,EAAgBnD,qBAAuB,gBAMvCmD,EAAgB8B,gBAAkB,SC7L3B,MAAME,EAQT,OAAAtF,CAAQN,GACJ,OAAOvL,EAAU+C,UAAM,OAAQ,GAAQ,YACnC,MAAME,EAAiC,iBAApBsI,EAAQzI,QAAuByI,EAAQzI,QAAUyI,EAAQzI,QAAQG,IACpF,GAAI2F,EAAW3F,IAASsI,EAAQxC,aAAeD,EAAa7F,EAAKsI,EAAQxC,aAAe,CAGpF,IAAIqI,EAAkB/G,EAAiBkB,EAAQzI,QAASyI,EAAQvE,QAASmK,EAAiBE,0BACrFD,IACDA,EAAkBrH,IAClBU,EAAiBc,EAAQzI,QAASyI,EAAQvE,QAASmK,EAAiBE,yBAA0BD,IAElG,IACIpK,EADAsK,EAAkB,GAAGH,EAAiBI,qBAK1C,GAHIhG,EAAQE,6BAA6BhC,IACrCzC,EAAUuE,EAAQE,kBAAkB5B,qBAAqBsB,IAEzDnE,EAAS,CACT,MAAMoE,EAAepE,EAAQ2E,kBAC7B2F,GAAmB,KAAKH,EAAiBK,wBAAwBpG,IACrE,CACAR,EAAoBW,EAAQzI,QAASyI,EAAQvE,QAASmK,EAAiBM,mBAAoBH,EAC/F,aAGW/F,EAAQvE,QAAQzD,QAAQ4N,EAAiBE,iCACzC9F,EAAQvE,QAAQzD,QAAQ4N,EAAiBM,oBAEpD,aAAa1O,KAAKmJ,eAAeL,QAAQN,EAC7C,GACJ,CAOA,OAAAY,CAAQxL,GACJoC,KAAKmJ,eAAiBvL,CAC1B,EAOJwQ,EAAiBE,yBAA2B,oBAM5CF,EAAiBM,mBAAqB,aAMtCN,EAAiBI,aAAe,WAMhCJ,EAAiBK,qBAAuB,eClEjC,MAAME,EAQT,gCAAOC,CAA0BC,GAC7B,MAAMC,EAAa,GACbC,EAAwB,IAAIlG,EAAsBgG,GAClDG,EAAe,IAAI9E,EAAa,IAAIX,GACpC0F,EAAmB,IAAIb,EACvBc,EAAqB,IAAI7F,EAG/B,GAFAyF,EAAW1L,KAAK2L,GAChBD,EAAW1L,KAAK4L,GArBM,iBAAZG,QAsBe,CACrB,MAAMC,EAAkB,IAAIhD,EAAgB,IAAIN,GAChDgD,EAAW1L,KAAKgM,EACpB,CAGA,OAFAN,EAAW1L,KAAK6L,GAChBH,EAAW1L,KAAK8L,GACTJ,CACX,GRlCJ,SAAW3G,GACPA,EAAcA,EAAsB,OAAI,GAAK,SAC7CA,EAAcA,EAAsB,OAAI,GAAK,QAChD,CAHD,CAGGA,IAAkBA,EAAgB,CAAC,ISD/B,MAAMkH,EAYT,WAAApN,CAAYqN,EAAgBnH,EAAcoH,OAAQC,EAAgB,sBAAuBC,EAAYC,EAAiBC,EAAcnP,GAOhI,GANAR,KAAKsP,cAAgBA,EACrBtP,KAAKyP,WAAaA,EAClBzP,KAAKwP,cAAgBA,EACrBxP,KAAK0P,qBAAsCxQ,IAApBwQ,EAAgCA,EAAkB,GACzE1P,KAAK2P,aAAeA,EACpB3P,KAAKQ,QAAUA,EACXR,KAAK0P,gBAAkB,IACvB,MAAM,IAAI/Q,MAAM,2CAExB,EC1BG,MAAMiR,EAAmB,CAC5B3B,IAAK,CAAC,IAAK,IAAK,IAAK,IAAK,KAC1BpN,KAAM,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,KAChCC,IAAK,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,KAC/BF,MAAO,CAAC,IAAK,IAAK,IAAK,IAAK,KAC5BiP,OAAQ,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,MAKzBC,EAAiB,CAC1B,IAAK,WACL,IAAK,sBACL,IAAK,aACL,IAAK,cACL,IAAK,KACL,IAAK,UACL,IAAK,WACL,IAAK,gCACL,IAAK,aACL,IAAK,gBACL,IAAK,kBACL,IAAK,eACL,IAAK,mBACL,IAAK,UACL,IAAK,mBACL,IAAK,oBACL,IAAK,QACL,IAAK,YACL,IAAK,eACL,IAAK,YACL,IAAK,qBACL,IAAK,qBACL,IAAK,cACL,IAAK,eACL,IAAK,mBACL,IAAK,YACL,IAAK,YACL,IAAK,qBACL,IAAK,iBACL,IAAK,gCACL,IAAK,kBACL,IAAK,WACL,IAAK,OACL,IAAK,kBACL,IAAK,sBACL,IAAK,oBACL,IAAK,eACL,IAAK,yBACL,IAAK,wBACL,IAAK,qBACL,IAAK,sBACL,IAAK,uBACL,IAAK,SACL,IAAK,oBACL,IAAK,YACL,IAAK,mBACL,IAAK,wBACL,IAAK,oBACL,IAAK,kCACL,IAAK,gCACL,IAAK,wBACL,IAAK,kBACL,IAAK,cACL,IAAK,sBACL,IAAK,kBACL,IAAK,6BACL,IAAK,0BACL,IAAK,uBACL,IAAK,gBACL,IAAK,eACL,IAAK,mCCjEF,MAAMC,EAST,WAAA9N,CAAYgC,EAAU,IAAIoL,EAAuBW,GAC7ChQ,KAAKiE,QAAUA,EACfjE,KAAKgQ,UAAYA,CACrB,CASA,qBAAAC,CAAsBC,EAAqBC,EAAWC,GAClD,MAAMC,EAAiBH,EAAoB1P,QAAU,IAAIgH,QAAQ0I,EAAoB1P,SAAW,IAAIgH,QAWpG,OAVA6I,EAAevI,OAAO,gBAAiB,YACvCuI,EAAevI,OAAO,aAAcqI,GACpCE,EAAevI,OAAO,oBAAqBqI,GAC3CE,EAAevI,OAAO,sBAAuB,IAC7CuI,EAAevI,OAAO,OAAQsI,GAC9BC,EAAevI,OAAO,4BAA6B,IACZ,MAAnCoI,EAAoBT,YAEpBY,EAAevI,OAAO,cAAe,KAElCuI,CACX,CASA,kBAAAC,CAAmBJ,EAAqBC,EAAWC,GAC/C,GAAIF,EAAoBP,aACpB,OAAOO,EAAoBP,aAE/B,IAAI5O,EAkBJ,OAdIA,EAHAmP,EAAoBT,YAAc,IAG3B,CACH/Q,MAAO,CACH6R,KAJYT,EAAeI,EAAoBT,YAK/CrK,QAJW8K,EAAoBV,cAK/BgB,WAAY,CACR,aAAcL,EACdM,KAAML,KAMX,CAAC,EAELrP,CACX,CAOA,cAAA2P,CAAeR,EAAqB1H,GAChC,MAAMmI,EAAanI,EAAQzI,QACrBoQ,EAAYnJ,IACZoJ,EAAc,IAAIpF,KAClBqF,EAAiBrQ,KAAKiQ,sBAAsBC,EAAqBC,EAAWC,EAAYpO,YACxF2N,EAAe3P,KAAKsQ,mBAAmBJ,EAAqBC,EAAWC,EAAYpO,YACnF4O,EAAO,CAAE1Q,IAAKyQ,EAAYzM,OAAQgM,EAAoBT,WAAYtL,WAAY+L,EAAoBV,cAAehP,QAAS6P,GAChI7H,EAAQ5E,SAAW,IAAIW,SAAiC,iBAAjBoL,EAA4BA,EAAetL,KAAKC,UAAUqL,GAAeiB,EACpH,CAQA,WAAAC,CAAYX,EAAqB1H,GAC7B,OAAOvL,EAAU+C,UAAM,OAAQ,GAAQ,YACnCA,KAAK8Q,cAAcZ,EAAqB1H,EAAQzI,QAASyI,EAAQvE,QAAQ1D,QACpE2P,EAAoBZ,gBAAkBnH,EAAc4I,SAAW/Q,KAAKmJ,gBAAmBhC,KAAKC,MAAsB,IAAhBD,KAAKE,UAAkB6I,EAAoBR,gBAC9I1P,KAAK0Q,eAAeR,EAAqB1H,GAEpCxI,KAAKmJ,uBACJnJ,KAAKmJ,eAAeL,QAAQN,GAE1C,GACJ,CAOA,mBAAAwI,CAAoBC,GAChB,MAAMC,EAAkBtB,EAAiBqB,GACzC,OAAOC,EAAgB/J,KAAKC,MAAMD,KAAKE,SAAW6J,EAAgB9R,QACtE,CAOA,cAAA+R,CAAeC,GACX,MAAMC,EAAU,qDAChB,IAAIC,EAIJ,OAHgC,OAA5BD,EAAQzP,KAAKwP,KACbE,EAAcD,EAAQzP,KAAKwP,GAAW,IAEnCE,CACX,CAQA,aAAAR,CAAcZ,EAAqBS,EAAYM,GAC3C,GAAIf,EAAoBZ,gBAAkBnH,EAAc4I,QACpD,QAAuC7R,IAAnCgR,EAAoBT,WAA0B,CAE9C,MAAM6B,EAActR,KAAKmR,eAAeR,QACAzR,IAApCc,KAAKgQ,UAAUxM,IAAI8N,QAEwCpS,IAAvDc,KAAKgQ,UAAUxM,IAAI8N,GAAa9N,IAAIyN,KACpCf,EAAoBT,WAAazP,KAAKgQ,UAAUxM,IAAI8N,GAAa9N,IAAIyN,IAMzEjR,KAAKgQ,UAAUvP,SAAQ,CAAC/C,EAAOgD,KACV,IAAIN,OAAOM,EAAM,KACrBL,KAAKiR,SACqCpS,IAA/Cc,KAAKgQ,UAAUxM,IAAI9C,GAAK8C,IAAIyN,KAC5Bf,EAAoBT,WAAazP,KAAKgQ,UAAUxM,IAAI9C,GAAK8C,IAAIyN,GAGrE,GAIZ,OAIAf,EAAoBT,WAAazP,KAAKgR,oBAAoBC,EAGlE,CAOA,UAAAvF,CAAWlD,GACP,IAAIvE,EAOJ,OANIuE,EAAQE,6BAA6BhC,IACrCzC,EAAUuE,EAAQE,kBAAkB5B,qBAAqBuI,SAEtC,IAAZpL,IACPA,EAAU7F,OAAOwJ,OAAO,IAAIyH,EAAuBrP,KAAKiE,UAErDA,CACX,CAQA,OAAA6E,CAAQN,GACJ,OAAOvL,EAAU+C,UAAM,OAAQ,GAAQ,YACnC,MAAMkQ,EAAsBlQ,KAAK0L,WAAWlD,GAC5C,aAAaxI,KAAK6Q,YAAYX,EAAqB1H,EACvD,GACJ,CAOA,OAAAY,CAAQxL,GACJoC,KAAKmJ,eAAiBvL,CAC1B,EC3MG,IAAI2T,ECAAC,EAaPC,EAWAC,GDvBJ,SAAWH,GACPA,EAA0B,YAAI,cAC9BA,EAAmB,KAAI,OACvBA,EAAuB,SAAI,WAC3BA,EAAmB,KAAI,OACvBA,EAAkB,IAAI,MACtBA,EAAqB,OAAI,SACzBA,EAAmB,KAAI,MAC1B,CARD,CAQGA,IAAiBA,EAAe,CAAC,ICRpC,SAAWC,GACPA,EAAwB,UAAI,YAC5BA,EAAuB,SAAI,WAC3BA,EAA8B,gBAAI,kBAClCA,EAAgC,kBAAI,uBACvC,CALD,CAKGA,IAAiBA,EAAe,CAAC,IAQpC,SAAWC,GACPA,EAAwB,WAAI,aAC5BA,EAA8B,iBAAI,kBACrC,CAHD,CAGGA,IAAgBA,EAAc,CAAC,IAQlC,SAAWC,GACPA,EAA8B,SAAI,0DAClCA,EAA2B,MAAI,aAClC,CAHD,CAGGA,IAAwBA,EAAsB,CAAC,IAK3C,MAAMC,EAST,4BAAOC,CAAsBC,EAAaC,GACtC,MAAyB,oBAAdC,UACA,IAAIzU,SAAQ,CAACC,EAASC,KACzBqU,EAAYG,OAAO/T,MAAMgU,IACrB,IACI,MACMC,GADS,IAAIH,WACGI,gBAAgBF,EAAWH,GACjDvU,EAAQ2U,EACZ,CACA,MAAOxT,GACHlB,EAAOkB,EACX,IACF,IAICpB,QAAQC,QAAQsU,EAAY9Q,KAE3C,CAUA,sBAAOqR,CAAgBP,EAAaQ,GAChC,OAAOpV,EAAU+C,UAAM,OAAQ,GAAQ,YACnC,GAA2B,MAAvB6R,EAAY3N,OAEZ,OAAO5G,QAAQC,UAEnB,IAAI+U,EACJ,MAAMC,EAAcV,EAAYrR,QAAQgD,IAAI,gBAC5C,OAAQ6O,GACJ,KAAKd,EAAaiB,YACdF,QAAsBT,EAAYY,cAClC,MACJ,KAAKlB,EAAamB,KACdJ,QAAsBT,EAAYvQ,OAClC,MACJ,KAAKiQ,EAAaoB,SACdL,QAAsBX,EAAqBC,sBAAsBC,EAAaL,EAAaoB,UAC3F,MACJ,KAAKrB,EAAalN,KACdiO,QAAsBT,EAAYzQ,OAClC,MACJ,KAAKmQ,EAAasB,OACdP,QAAsBhV,QAAQC,QAAQsU,EAAY9Q,MAClD,MACJ,KAAKwQ,EAAauB,KACdR,QAAsBT,EAAYG,OAClC,MACJ,QACI,GAAoB,OAAhBO,EAAsB,CACtB,MAAMQ,EAAWR,EAAYjS,MAAM,KAAK,GAEpCgS,EADA,IAAIlS,OAAOsR,EAAoBiB,UAAUtS,KAAK0S,SACxBpB,EAAqBC,sBAAsBC,EAAakB,GAEzE,IAAI3S,OAAOsR,EAAoBsB,OAAO3S,KAAK0S,GAChClB,EAAYvQ,OAEvByR,IAAatB,EAAYwB,iBACRpB,EAAYG,OAE7Be,IAAatB,EAAYyB,uBACRrB,EAAYzQ,OAGlB9D,QAAQC,QAAQsU,EAAY9Q,KAEpD,MAaIuR,EAAgBhV,QAAQC,QAAQsU,EAAY9Q,MAIxD,OAAOuR,CACX,GACJ,CAWA,kBAAOa,CAAYtB,EAAaQ,EAAce,GAC1C,OAAOnW,EAAU+C,UAAM,OAAQ,GAAQ,YACnC,GAAIqS,IAAiBd,EAAa8B,IAC9B,OAAO/V,QAAQC,QAAQsU,GAEtB,CACD,MAAMjO,QAAiB+N,EAAqBS,gBAAgBP,EAAaQ,GACzE,IAAIR,EAAYyB,GAWZ,MAAM1P,EATN,GAAwB,mBAAbwP,EAIP,OAAOxP,EAHPwP,EAAS,KAAMxP,EAU3B,CACJ,GACJ,EC1KG,MAAM2P,EAST,WAAAtR,CAAYuR,GAAS,EAAIC,GAAS,GAC9BzT,KAAK0T,SAAWF,EAChBxT,KAAK2T,SAAWF,CACpB,EChBG,MAAMG,EAMT,YAAIC,GACA,OAAO7T,KAAK8T,SAChB,CAMA,YAAID,CAASA,GACT7T,KAAK8T,UAAYD,CACrB,CAKA,gBAAIlE,GACA,OAAO3P,KAAK+T,aAChB,CAKA,gBAAIpE,CAAaA,GACb3P,KAAK+T,cAAgBpE,CACzB,CAMA,WAAA1N,CAAY0N,EAAckE,GAEtB7T,KAAK8T,UAAYD,EACjB7T,KAAK+T,cAAgBpE,CACzB,CAMA,yBAAOqE,CAAmBrE,EAAcsE,GACpC,OAAO,IAAIL,EAAajE,EAAcsE,EAAgBzQ,IAAI,YAC9D,ECtCG,MAAM0Q,EAYT,0BAAOC,CAAoBC,EAAQxH,EAAYyH,EAAS7T,EAAU,CAAC,GAC/D,OAAOvD,EAAU+C,UAAM,OAAQ,GAAQ,YACnC,MAAMsU,QAAgBF,EACjBG,IAAI3H,GACJpM,QAAQA,GACRgU,KAAKH,GAMV,MAL+B,CAC3BnU,IAAKoU,EAAQG,UACbC,OAAQ,IAAI1J,KAAKsJ,EAAQK,oBACzBC,aAAa,EAGrB,GACJ,CAWA,WAAA3S,CAAYmS,EAAQS,EAAMC,EAAe7Q,EAAU,CAAC,GAOhD,GAFAjE,KAAK+U,kBAAoB,QACzB/U,KAAKoU,OAASA,GACTS,EAAKG,UACN,MAAM,IAAIhQ,EAAiB,mHAG3BhF,KAAK6U,KAAOA,EAEhB7U,KAAK6U,KAAOA,EACP5Q,EAAQgR,YACThR,EAAQgR,UAAYjV,KAAK+U,mBAE7B/U,KAAKiE,QAAUA,EACfjE,KAAK8U,cAAgBA,EACrB9U,KAAKkV,UAAY,IAAI3B,EAAM,EAAGvT,KAAKiE,QAAQgR,UAAY,EAC3D,CAOA,UAAAE,CAAWC,GACP,MAAMC,EAAWD,EAAO,GACxB,QAAwB,IAAbC,GAAyC,KAAbA,EACnC,OAAO,IAAI9B,EAEf,MAAM+B,EAAaD,EAAS/U,MAAM,KAC5BkT,EAAS+B,SAASD,EAAW,GAAI,IACvC,IAAI7B,EAAS8B,SAASD,EAAW,GAAI,IAIrC,OAHI7K,OAAOK,MAAM2I,KACbA,EAASzT,KAAK6U,KAAKpW,KAAO,GAEvB,IAAI8U,EAAMC,EAAQC,EAC7B,CAOA,gBAAA+B,CAAiB5R,GACb5D,KAAK8U,cAAcJ,OAAS,IAAI1J,KAAKpH,EAAS+Q,oBAC9C3U,KAAKkV,UAAYlV,KAAKmV,WAAWvR,EAAS6R,mBAC9C,CAMA,YAAAC,GACI,IAAiC,IAA7B1V,KAAKkV,UAAUxB,SACf,OAAO1T,KAAKkV,UAEhB,MAAM1B,EAASxT,KAAKkV,UAAUxB,SAC9B,IAAIC,EAAWH,EAASxT,KAAKiE,QAAQgR,UAAY,EAIjD,OAHItB,GAAY3T,KAAK6U,KAAKpW,OACtBkV,EAAW3T,KAAK6U,KAAKpW,KAAO,GAEzB,IAAI8U,EAAMC,EAAQG,EAC7B,CAQA,SAAAqB,CAAUW,GAEN,GADAC,QAAQC,KAAK,6GACT7V,KAAK6U,KAAKnP,mBAAmBoQ,aAAe9V,KAAK6U,KAAKnP,mBAAmBrE,MAAQrB,KAAK6U,KAAKnP,mBAAmBqQ,WAC9G,OAAO/V,KAAK6U,KAAKnP,QAAQsQ,MAAML,EAAMjC,SAAUiC,EAAMhC,SAAW,GAEpE,MAAM,IAAI3O,EAAiB,mKAC/B,CAOA,MAAAiR,GACI,OAAOhZ,EAAU+C,UAAM,OAAQ,GAAQ,YACnC,MAAMkW,EAAsBlW,KAAKiE,SAAWjE,KAAKiE,QAAQiS,oBACzD,MAAQlW,KAAK8U,cAAcF,aAAa,CACpC,MAAMM,EAAYlV,KAAK0V,eACvB,IAA4B,IAAxBR,EAAUvB,SAAiB,CAC3B,MAAMwC,EAAM,IAAIxX,MAAM,sGAEtB,MADAwX,EAAIvX,KAAO,kBACLuX,CACV,CACA,MAAMC,QAAkBpW,KAAK6U,KAAKG,UAAUE,GACtCrD,QAAoB7R,KAAKqW,0BAA0BD,EAAWlB,EAAWlV,KAAK6U,KAAKpW,MACzF,IAAKoT,EACD,MAAM,IAAI7M,EAAiB,mEAE/B,MAAM2K,QAAqBgC,EAAqBwB,YAAYtB,GAK5D,GAA2B,MAAvBA,EAAY3N,QAA0C,MAAvB2N,EAAY3N,QAAkByL,EAAanQ,GAE1E,OADAQ,KAAKsW,eAAeJ,EAAqBhB,GAClCtB,EAAaI,mBAAmBrE,EAAckC,EAAYrR,SAKrE,MAAM+V,EAAM,CACR5B,mBAAoBhF,EAAagF,oBAAsBhF,EAAa6G,mBACpEf,mBAAoB9F,EAAa8G,oBAAsB9G,EAAa8F,oBAExEzV,KAAKwV,iBAAiBe,GACtBvW,KAAKsW,eAAeJ,EAAqBhB,EAC7C,CACJ,GACJ,CACA,cAAAoB,CAAeJ,EAAqBhB,GAC5BgB,GAAuBA,EAAoBQ,UAC3CR,EAAoBQ,SAASxB,EAAWgB,EAAoBS,mBAEpE,CAUA,WAAAC,CAAYR,EAAWT,EAAOkB,GAC1B,OAAO5Z,EAAU+C,UAAM,OAAQ,GAAQ,YACnC,aAAaA,KAAKoU,OACbG,IAAIvU,KAAK8U,cAAc5U,KACvBM,QAAQ,CACT,iBAAkB,IAAGmV,EAAMhC,SAAWgC,EAAMjC,SAAW,GACvD,gBAAiB,SAASiC,EAAMjC,YAAYiC,EAAMhC,YAAYkD,IAC9D,eAAgB,6BAEfC,IAAIV,EACb,GACJ,CAUA,yBAAAC,CAA0BD,EAAWT,EAAOkB,GACxC,OAAO5Z,EAAU+C,UAAM,OAAQ,GAAQ,YACnC,aAAaA,KAAKoU,OACbG,IAAIvU,KAAK8U,cAAc5U,KACvBM,QAAQ,CACT,iBAAkB,IAAGmV,EAAMhC,SAAWgC,EAAMjC,SAAW,GACvD,gBAAiB,SAASiC,EAAMjC,YAAYiC,EAAMhC,YAAYkD,IAC9D,eAAgB,6BAEfxE,aAAad,EAAa8B,KAC1ByD,IAAIV,EACb,GACJ,CAOA,MAAAW,GACI,OAAO9Z,EAAU+C,UAAM,OAAQ,GAAQ,YACnC,MAAMgX,QAAuBhX,KAAKoU,OAC7BG,IAAIvU,KAAK8U,cAAc5U,KACvBmS,aAAad,EAAa8B,KAC1B1Q,SAIL,OAH8B,MAA1BqU,EAAe9S,SACflE,KAAK8U,cAAcF,aAAc,GAE9BoC,CACX,GACJ,CAOA,SAAAC,GACI,OAAOha,EAAU+C,UAAM,OAAQ,GAAQ,YACnC,MAAM4D,QAAiB5D,KAAKoU,OAAOG,IAAIvU,KAAK8U,cAAc5U,KAAKsD,MAE/D,OADAxD,KAAKwV,iBAAiB5R,GACfA,CACX,GACJ,CAOA,MAAAsT,GACI,OAAOja,EAAU+C,UAAM,OAAQ,GAAQ,YAEnC,aADMA,KAAKiX,kBACEjX,KAAKiW,QACtB,GACJ,CAOA,gBAAAkB,GACI,OAAOnX,KAAK8U,aAChB,ECxQG,MAAMsC,EAST,WAAAnV,CAAYyD,EAAS9G,EAAMH,GAIvB,GAHAuB,KAAK0F,QAAUA,EACf1F,KAAKpB,KAAOA,EACZoB,KAAKvB,KAAOA,GACPiH,IAAY9G,IAASH,EACtB,MAAM,IAAIuG,EAAiB,2EAEnC,CAOA,SAAAgQ,CAAUW,GACN,OAAO3V,KAAK0F,QAAQsQ,MAAML,EAAMjC,SAAUiC,EAAMhC,SAAW,EAC/D,ECvBJ,MAqBa0D,EAAoB,CAACpC,EArBR,WAsBtB,MAAMqC,EAAU,SAIhB,OAHIrC,EAAYqC,IACZrC,EAAYqC,IAjBE5Z,EAmBEuX,GAlBR,SACRvX,EAA2C,IAAnCyJ,KAAKC,MAAM1J,EAAQ,QAAsB,MAE9CA,EAJU,IAACA,CAmBY,ECtB3B,MAAM6Z,UAAoCrD,EAS7C,gCAAOsD,CAA0BC,EAAUC,EAAOH,EAA4BI,qBAc1E,OAbAF,EAAWA,EAASG,OAEP,MADbF,EAAOA,EAAKE,UAERF,EAAO,KAEK,MAAZA,EAAK,KACLA,EAAO,IAAIA,KAEe,MAA1BA,EAAKA,EAAKtY,OAAS,KACnBsY,EAAO,GAAGA,MAIP,kBAAkBA,EACpBpX,MAAM,KACNuX,KAAKC,GAAMC,mBAAmBD,KAC9BE,KAAK,OAAOD,mBAAmBN,yBACxC,CASA,kBAAOQ,CAAYpD,EAAM4C,GACrB,IAAI/R,EACAjH,EACJ,GAAoB,oBAAT4C,MAAwBwT,aAAgBxT,KAC/CqE,EAAU,IAAIwS,KAAK,CAACrD,GAAO4C,GAC3BhZ,EAAOiH,EAAQjH,UAEd,GAAoB,oBAATyZ,MAAwBrD,aAAgBqD,KACpDxS,EAAUmP,EACVpW,EAAOiH,EAAQjH,UAEd,GAA0B,oBAAfsX,YAA8BlB,aAAgBkB,WAAY,CACtE,MAAMoC,EAAItD,EACVpW,EAAO0Z,EAAEC,WACT1S,EAAUyS,EAAEpW,OAAOiU,MAAMmC,EAAEE,WAAYF,EAAEE,WAAaF,EAAEC,WAC5D,CACA,MAAO,CACH1S,UACAjH,OAER,CAWA,aAAOJ,CAAO+V,EAAQS,EAAM5Q,GACxB,OAAOhH,EAAU+C,UAAM,OAAQ,GAAQ,YACnC,IAAKoU,IAAWS,IAAS5Q,EACrB,MAAM,IAAIe,EAAiB,kGAE/B,MAAMyS,EAAWxT,EAAQwT,SACnBa,EAAWf,EAA4BU,YAAYpD,EAAM4C,GACzDc,EAAU,IAAInB,EAAWkB,EAAS5S,QAAS+R,EAAUa,EAAS7Z,MACpE,OAAOuB,KAAKwY,yBAAyBpE,EAAQmE,EAAStU,EAC1D,GACJ,CAWA,+BAAOuU,CAAyBpE,EAAQqE,EAAYxU,GAChD,OAAOhH,EAAU+C,UAAM,OAAQ,GAAQ,YACnC,IAAKoU,IAAWqE,IAAexU,EAC3B,MAAM,IAAIe,EAAiB,0HAE/B,MAAM4H,EAAa3I,EAAQyU,iBAAmBzU,EAAQyU,iBAAmBnB,EAA4BC,0BAA0BvT,EAAQwT,SAAUxT,EAAQyT,MACnJiB,EAAuB,CACzBlB,SAAUxT,EAAQwT,SAClBmB,gBAAiB3U,EAAQ2U,gBACzBC,iBAAkB5U,EAAQ4U,kBAExBvE,QAAgBiD,EAA4BpD,oBAAoBC,EAAQxH,EAAY+L,GACpF1D,EAAYoC,EAAkBpT,EAAQgR,WAC5C,OAAO,IAAIsC,EAA4BnD,EAAQqE,EAAYnE,EAAS,CAChEW,YACAiB,oBAAqBjS,EAAQiS,qBAErC,GACJ,CAWA,0BAAO/B,CAAoBC,EAAQxH,EAAYkM,GAC3C,MAAMC,EAAS3a,OAAOC,OAAO,KAAM,CAC/B8V,oBAAqB,CAAE3Q,IAAK,IAAM6B,MAAM8O,uBAE5C,OAAOlX,EAAU+C,UAAM,OAAQ,GAAQ,YACnC,MAAMqU,EAAU,CACZ2E,KAAM,CACF,qCAAsCF,aAAuD,EAASA,EAAeD,mBAAqB,SAC1Ija,KAAMka,aAAuD,EAASA,EAAerB,SACrFwB,YAAaH,aAAuD,EAASA,EAAeF,kBAGpG,OAAOG,EAAO5E,oBAAoB+E,KAAKlZ,KAAMoU,EAAQxH,EAAYyH,EACrE,GACJ,CAWA,WAAApS,CAAYmS,EAAQS,EAAMC,EAAe7Q,GACrCoB,MAAM+O,EAAQS,EAAMC,EAAe7Q,EACvC,CAQA,MAAAkV,CAAOvM,EAAYiM,EAAmB,UAClC,OAAO5b,EAAU+C,UAAM,OAAQ,GAAQ,YACnC,MAAMqU,EAAU,CACZzV,KAAMoB,KAAK6U,KAAKjW,KAChB,oCAAqCia,EACrC,6BAA8B7Y,KAAK8U,cAAc5U,KAErD,aAAaF,KAAKoU,OAAOG,IAAI3H,GAAYkK,IAAIzC,EACjD,GACJ,EAOJkD,EAA4BI,oBAAsB,ICpL3C,MAAMyB,EACT,WAAAnX,CAAYyD,EAAS9G,EAAMH,GAIvB,GAHAuB,KAAK0F,QAAUA,EACf1F,KAAKpB,KAAOA,EACZoB,KAAKvB,KAAOA,GACPiH,IAAY9G,IAASH,EACtB,MAAM,IAAIuG,EAAiB,oFAEnC,CAOA,SAAAgQ,CAAUW,GACN,OAAO1Y,EAAU+C,UAAM,OAAQ,GAAQ,YACnC,IAAIiV,EAAYU,EAAMhC,SAAWgC,EAAMjC,SAAW,EAIlD,MAAM2F,EAAO,GAQb,GAAIrZ,KAAKsZ,cAAe,CACpB,GAAI3D,EAAMjC,SAAW1T,KAAKsZ,cAAc3D,MAAMjC,SAC1C,MAAM,IAAI1O,EAAiB,mHAE/B,GAAI2Q,EAAMjC,SAAW1T,KAAKsZ,cAAc3D,MAAMhC,SAAU,CACpD,MAAM4F,EAAmBvZ,KAAKsZ,cAAc3D,MAAMjC,SAC5C8F,EAAmBxZ,KAAKsZ,cAAc3D,MAAMhC,SAElD,GAAIgC,EAAMjC,WAAa6F,GAAoB5D,EAAMhC,WAAa6F,EAC1D,OAAOxZ,KAAKsZ,cAAclD,UAQ9B,GAAIT,EAAMhC,WAAa6F,EACnB,OAAOxZ,KAAKsZ,cAAclD,UAAUJ,MAAML,EAAMjC,SAAUiC,EAAMhC,SAAW,GAQ/E0F,EAAKjW,KAAKpD,KAAKsZ,cAAclD,UAAUJ,MAAML,EAAMjC,SAAU8F,EAAmB,IAChFvE,EAAYU,EAAMhC,SAAW6F,CACjC,CACJ,CACA,IAAIxZ,KAAK0F,UAAW1F,KAAK0F,QAAQ+T,SAS7B,MAAM,IAAIzU,EAAiB,2BARvBhF,KAAK0F,QAAQgU,gBAAkBzE,EAC/BoE,EAAKjW,KAAKpD,KAAK0F,QAAQiU,KAAK1E,IAG5BoE,EAAKjW,WAAWpD,KAAK4Z,qBAAqB3E,IAMlD,MAAM4E,EAAc/X,OAAOgY,OAAOT,GAElC,OADArZ,KAAKsZ,cAAgB,CAAElD,UAAWyD,EAAalE,SACxCkE,CACX,GACJ,CAOA,oBAAAD,CAAqBnb,GACjB,OAAO,IAAInB,SAAQ,CAACC,EAASC,KACzB,MAAMuc,EAAS,GACf,IAAIC,EAAYvb,EACZW,EAAS,EACbY,KAAK0F,QAAQuU,GAAG,OAAO,KACnB,GAAID,EAAY,EACZ,OAAOxc,EAAO,IAAIwH,EAAiB,mDACvC,IAEJhF,KAAK0F,QAAQuU,GAAG,YAAY,KAKxB,IAAIC,EACJ,KAAO9a,EAASX,GAAmD,QAA1Cyb,EAAQla,KAAK0F,QAAQiU,KAAKK,KAC/C5a,GAAU8a,EAAM9a,OAChB2a,EAAO3W,KAAK8W,GACRF,EAAY,IACZA,EAAYvb,EAAOW,GAG3B,OAAIA,IAAWX,EACJlB,EAAQuE,OAAOgY,OAAOC,IAE5B/Z,KAAK0F,SAAY1F,KAAK0F,QAAQ+T,cAAnC,EACWjc,EAAO,IAAIwH,EAAiB,gEACvC,GACF,GAEV,EC3GG,MAAMmV,EAWT,WAAAlY,CAAYmS,EAAQgG,EAAgBhH,EAAUiH,GAC1Cra,KAAKoU,OAASA,EACdpU,KAAKsa,WAAaF,EAAe1c,MACjCsC,KAAKwE,SAAW4V,EAAe,mBAC/Bpa,KAAKua,UAAYH,EAAe,oBAChCpa,KAAKoT,SAAWA,EAChBpT,KAAKwa,OAAS,EACdxa,KAAKya,UAAW,EAChBza,KAAKqa,eAAiBA,CAC1B,CAMA,eAAAK,GACI,QAAwBxb,IAApBc,KAAKsa,WACL,OAAO,EAEX,IAAIK,GAAU,EACd,KAAOA,GAAW3a,KAAKwa,OAASxa,KAAKsa,WAAWlb,QAAQ,CACpD,MAAM4Z,EAAOhZ,KAAKsa,WAAWta,KAAKwa,QAClCG,EAAU3a,KAAKoT,SAAS4F,GACxBhZ,KAAKwa,QACT,CACA,OAAOG,CACX,CAOA,0BAAAC,GACI,OAAO3d,EAAU+C,UAAM,OAAQ,GAAQ,YACnC,IAAI6a,EAAe7a,KAAKoU,OAAOG,IAAIvU,KAAKwE,UACpCxE,KAAKqa,iBACDra,KAAKqa,eAAe7Z,UACpBqa,EAAeA,EAAara,QAAQR,KAAKqa,eAAe7Z,UAExDR,KAAKqa,eAAe1T,oBACpBkU,EAAeA,EAAalU,kBAAkB3G,KAAKqa,eAAe1T,oBAElE3G,KAAKqa,eAAepW,UACpB4W,EAAeA,EAAa5W,QAAQjE,KAAKqa,eAAepW,WAGhE,MAAML,QAAiBiX,EAAarX,MACpCxD,KAAKsa,WAAa1W,EAASlG,MAC3BsC,KAAKwa,OAAS,EACdxa,KAAKwE,SAAWZ,EAAS,mBACzB5D,KAAKua,UAAY3W,EAAS,mBAC9B,GACJ,CAMA,YAAAkX,GACI,OAAO9a,KAAKua,SAChB,CAQA,OAAAQ,GACI,OAAO9d,EAAU+C,UAAM,OAAQ,GAAQ,YACnC,IAAI2a,EAAU3a,KAAK0a,kBACnB,KAAOC,QACmBzb,IAAlBc,KAAKwE,gBACCxE,KAAK4a,6BACXD,EAAU3a,KAAK0a,mBAGfC,GAAU,OAGIzb,IAAlBc,KAAKwE,UAA0BxE,KAAKwa,QAAUxa,KAAKsa,WAAWlb,SAC9DY,KAAKya,UAAW,EAExB,GACJ,CAQA,MAAAvD,GACI,OAAOja,EAAU+C,UAAM,OAAQ,GAAQ,YACnC,OAAOA,KAAK+a,SAChB,GACJ,CAMA,UAAAC,GACI,OAAOhb,KAAKya,QAChB,EC/GG,MAAMQ,EAQT,WAAAhZ,CAAYiZ,GACRlb,KAAKkb,SAAWA,CACpB,CAOA,cAAAlS,GACI,OAAO/L,EAAU+C,UAAM,OAAQ,GAAQ,YACnC,OAAO,IAAI1C,SAAQ,CAACC,EAASC,KACzBwC,KAAKkb,UAAS,CAACxc,EAAOyc,IAAgBle,EAAU+C,UAAM,OAAQ,GAAQ,YAClE,GAAImb,EACA5d,EAAQ4d,OAEP,CACIzc,IAIDA,EAAQ,IAAIsG,EAHgB,mNAKhC,MAAMmR,QAAYnR,EAAiBC,oBAAoBvG,GACvDlB,EAAO2Y,EACX,CACJ,KAAG,GAEX,GACJ,ECrCG,MAAMiF,UAAmBzc,MAU5B,WAAAsD,CAAYwN,GAAa,EAAIrK,EAASiW,GAClChW,MAAMD,GAAYiW,GAAaA,EAAUjW,SAEzChH,OAAOkH,eAAetF,KAAMob,EAAW7V,WACvCvF,KAAKyP,WAAaA,EAClBzP,KAAKuQ,KAAO,KACZvQ,KAAKyC,UAAY,KACjBzC,KAAKyQ,KAAO,IAAIzF,KAChBhL,KAAKe,KAAO,KACZf,KAAKsb,MAAQD,EAAYA,EAAUC,MAAQtb,KAAKsb,KACpD,ECrBG,MAAMC,EAST,qBAAOC,CAAe9c,EAAO+Q,EAAYoC,GACrC,MAAM4J,EAAS,IAAIL,EAAW3L,EAAY,GAAI/Q,GAO9C,YANmBQ,IAAfR,EAAME,OACN6c,EAAOlL,KAAO7R,EAAME,MAExB6c,EAAO1a,KAAOrC,EAAMsD,WACpByZ,EAAOhL,KAAO,IAAIzF,KAClByQ,EAAOjb,QAAUqR,aAAiD,EAASA,EAAYrR,QAChFib,CACX,CAsBA,iCAAOC,CAA2BC,EAAYlM,EAAYoC,GACtD,MAAMnT,EAAQid,EAAWjd,MACnB+c,EAAS,IAAIL,EAAW3L,EAAY/Q,EAAM0G,SAQhD,OAPAqW,EAAOlL,KAAO7R,EAAM6R,UACKrR,IAArBR,EAAM8R,aACNiL,EAAOhZ,UAAY/D,EAAM8R,WAAW,cACpCiL,EAAOhL,KAAO,IAAIzF,KAAKtM,EAAM8R,WAAWC,OAE5CgL,EAAO1a,KAAOsD,KAAKC,UAAU5F,GAC7B+c,EAAOjb,QAAUqR,aAAiD,EAASA,EAAYrR,QAChFib,CACX,CAYA,eAAOG,CAASld,EAAQ,KAAM+Q,GAAa,EAAI2D,EAAUvB,GACrD,OAAO5U,EAAU+C,UAAM,OAAQ,GAAQ,YACnC,IAAIyb,EAWJ,GAVI/c,GAASA,EAAMA,MACf+c,EAASF,EAAkBG,2BAA2Bhd,EAAO+Q,EAAYoC,GAEpEnT,aAAiBC,MACtB8c,EAASF,EAAkBC,eAAe9c,EAAO+Q,EAAYoC,IAG7D4J,EAAS,IAAIL,EAAW3L,GACxBgM,EAAO1a,KAAOrC,GAEM,mBAAb0U,EAIP,OAAOqI,EAHPrI,EAASqI,EAAQ,KAKzB,GACJ,EC7EG,MAAMI,EAST,WAAA5Z,CAAY6Z,EAAYC,EAAQrE,GAO5B1X,KAAKgc,UAAatE,IAEd,IAAkC,IAA9BA,EAAK5U,QAAQ,YAAoB,CAGjC,MAAMyD,GAFNmR,EAAOA,EAAKpR,QAAQ,WAAY,KAEHxD,QAAQ,MACZ,IAArByD,IAEAvG,KAAKic,cAAchW,KAAO,WAAayR,EAAKjR,UAAU,EAAGF,GAEzDmR,EAAOA,EAAKjR,UAAUF,EAAkB,EAAGmR,EAAKtY,SAGpD,MAAM8c,EAAqBxE,EAAK5U,QAAQ,MACZ,IAAxBoZ,IAEAlc,KAAKic,cAAcE,QAAUzE,EAAKjR,UAAU,EAAGyV,GAE/CxE,EAAOA,EAAKjR,UAAUyV,EAAqB,EAAGxE,EAAKtY,QAE3D,CAEuB,MAAnBsY,EAAK0E,OAAO,KACZ1E,EAAOA,EAAK2E,OAAO,IAEvB,MAAMC,EAAc5E,EAAK5U,QAAQ,KACjC,IAAqB,IAAjBwZ,EAEAtc,KAAKic,cAAcvE,KAAOA,MAEzB,CACD1X,KAAKic,cAAcvE,KAAOA,EAAK2E,OAAO,EAAGC,GAEzC,MAAMC,EAAc7E,EAAKjR,UAAU6V,EAAc,EAAG5E,EAAKtY,QAAQkB,MAAM,KACvE,IAAK,MAAMkc,KAAcD,EACrBvc,KAAKyc,oBAAoBD,EAEjC,GAEJxc,KAAK8b,WAAaA,EAClB9b,KAAK+b,OAASA,EACd/b,KAAKic,cAAgB,CACjBhW,KAAMjG,KAAK+b,OAAOW,QAClBP,QAASnc,KAAK+b,OAAOY,eACrBC,iBAAkB,CAAC,EACnBC,oBAAqB,CAAC,EACtBC,qBAAsB,IAE1B9c,KAAK+c,SAAW,CAAC,EACjB/c,KAAKgd,SAAW,CAAC,EACjBhd,KAAKid,mBAAqB,GAC1Bjd,KAAKgc,UAAUtE,EACnB,CASA,oBAAAwF,CAAqBC,EAAcC,EAAeC,GAE9Crd,KAAKic,cAAcW,iBAAiBO,GAAgBnd,KAAKic,cAAcW,iBAAiBO,GAAgBnd,KAAKic,cAAcW,iBAAiBO,GAAgB,IAAM,GAClK,IAAIG,EAAY,GACZD,EAAqBje,OAAS,GAA8B,iBAAlBge,EAC1CE,EAAY7V,MAAMlC,UAAUyQ,MAAMkD,KAAKmE,GAET,iBAAlBD,EACZE,EAAUla,KAAKga,GAGfE,EAAYA,EAAUxD,OAAOsD,GAEjCpd,KAAKic,cAAcW,iBAAiBO,IAAiBG,EAAUtF,KAAK,IACxE,CAMA,YAAAuF,GACI,MAAMrd,E9BnGS,CAACsd,IACpB,MACMC,EAAkBC,GAAMA,EAAEpX,QAAQ,OAAQ,IAGhD,OADcmB,MAAMlC,UAAUyQ,MAAMkD,KAAKsE,GAC5BG,QAFE,CAACC,EAAK5e,KAAQ,QAFJ0e,EAEqBE,EAFfF,EAAEpX,QAAQ,OAAQ,KAEGmX,EAAeze,IAAMgZ,KAAK,KAFtD,IAAC0F,CAEyD,GAEvD,E8B8FXG,CAAQ,CAAC7d,KAAKic,cAAchW,KAAMjG,KAAKic,cAAcE,QAASnc,KAAKic,cAAcvE,OAAS1X,KAAK8d,oBAI3G,OAHI9d,KAAK+b,OAAOgC,cACZnI,QAAQoI,IAAI9d,GAETA,CACX,CAMA,iBAAA4d,GAEI,MAAM7B,EAAgBjc,KAAKic,cACrBgC,EAAQ,GACd,GAA2D,IAAvD7f,OAAOuC,KAAKsb,EAAcW,kBAAkBxd,OAC5C,IAAK,MAAM8e,KAAYjC,EAAcW,iBAC7Bxe,OAAOmH,UAAU4Y,eAAejF,KAAK+C,EAAcW,iBAAkBsB,IACrED,EAAM7a,KAAK8a,EAAW,IAAMjC,EAAcW,iBAAiBsB,IAIvE,GAA8D,IAA1D9f,OAAOuC,KAAKsb,EAAcY,qBAAqBzd,OAC/C,IAAK,MAAM8e,KAAYjC,EAAcY,oBAC7Bze,OAAOmH,UAAU4Y,eAAejF,KAAK+C,EAAcY,oBAAqBqB,IACxED,EAAM7a,KAAK8a,EAAW,IAAMjC,EAAcY,oBAAoBqB,IAI1E,GAAkD,IAA9CjC,EAAca,qBAAqB1d,OACnC,IAAK,MAAMgf,KAAOnC,EAAca,qBAC5BmB,EAAM7a,KAAKgb,GAGnB,OAAOH,EAAM7e,OAAS,EAAI,IAAM6e,EAAMjG,KAAK,KAAO,EACtD,CAOA,mBAAAyE,CAAoB4B,GAChB,GAAuC,iBAA5BA,EAIP,GAH0C,MAAtCA,EAAwBjC,OAAO,KAC/BiC,EAA0BA,EAAwB5X,UAAU,KAElB,IAA1C4X,EAAwBvb,QAAQ,KAAa,CAC7C,MAAMyZ,EAAc8B,EAAwB/d,MAAM,KAClD,IAAK,MAAM8d,KAAO7B,EACdvc,KAAKse,2BAA2BF,EAExC,MAEIpe,KAAKse,2BAA2BD,QAGnC,GAAIA,EAAwBpc,cAAgB7D,OAC7C,IAAK,MAAMsC,KAAO2d,EACVjgB,OAAOmH,UAAU4Y,eAAejF,KAAKmF,EAAyB3d,IAC9DV,KAAKue,+BAA+B7d,EAAK2d,EAAwB3d,IAI7E,OAAOV,IACX,CAOA,0BAAAse,CAA2BE,GAGvB,GAAIxe,KAAKye,yBAAyBD,GAAiB,CAC/C,MAAME,EAAqBF,EAAe1b,QAAQ,KAC5C6b,EAAWH,EAAe/X,UAAU,EAAGiY,GACvCE,EAAaJ,EAAe/X,UAAUiY,EAAqB,GACjE1e,KAAKue,+BAA+BI,EAAUC,EAClD,MAII5e,KAAKic,cAAca,qBAAqB1Z,KAAKob,EAErD,CAQA,8BAAAD,CAA+BI,EAAUC,GACrC,IAA2C,IAAvCpZ,EAAgB1C,QAAQ6b,GAAkB,CAC1C,MAAME,EAAe7e,KAAKic,cAAcW,iBAAiB+B,GACnDG,EAAoBD,IAA8B,YAAbF,GAAuC,YAAbA,GAAuC,aAAbA,GAC/F3e,KAAKic,cAAcW,iBAAiB+B,GAAYG,EAAoBD,EAAe,IAAMD,EAAaA,CAC1G,MAEI5e,KAAKic,cAAcY,oBAAoB8B,GAAYC,CAE3D,CAOA,wBAAAH,CAAyBM,GACrB,MAAMC,EAAqBD,EAAYjc,QAAQ,KAC/C,OAA4B,IAAxBkc,MAI+B,IADDD,EAAYjc,QAAQ,MACdic,EAAYjc,QAAQ,KAAOkc,EAKvE,CAOA,oBAAAC,CAAqBhb,GACjB,MAAMib,EAAiB9gB,OAAOwJ,OAAO,CAAC,EAAG3D,EAAQzD,SACjD,QAAiCtB,IAA7Bc,KAAK+b,OAAOoD,aAA4B,CACxC,MAAMA,EAAe/gB,OAAOwJ,OAAO,CAAC,EAAG5H,KAAK+b,OAAOoD,cACnD/gB,OAAOwJ,OAAO3D,EAASkb,QACyBjgB,WAArCc,KAAK+b,OAAOoD,aAAa3e,UAChCyD,EAAQzD,QAAUpC,OAAOwJ,OAAO,CAAC,EAAG5H,KAAK+b,OAAOoD,aAAa3e,SAErE,CACApC,OAAOwJ,OAAO3D,EAASjE,KAAKgd,eACJ9d,IAApB+E,EAAQzD,SACRpC,OAAOwJ,OAAOsX,EAAgBjb,EAAQzD,SAE1CpC,OAAOwJ,OAAOsX,EAAgBlf,KAAK+c,UACnC9Y,EAAQzD,QAAU0e,CACtB,CAUA,IAAAE,CAAKrf,EAASkE,EAASmP,GACnB,IAAIiM,EACJ,OAAOpiB,EAAU+C,UAAM,OAAQ,GAAQ,YACnC,IAAI6R,EACJ,MAAMnJ,EAAoB,IAAIhC,EAAkB1G,KAAKid,oBACrDjd,KAAKif,qBAAqBhb,GAC1B,MAAM+B,EAAqC,QAAtBqZ,EAAKrf,KAAK+b,cAA2B,IAAPsD,OAAgB,EAASA,EAAGrZ,YAC/E,IASI,OAFA6L,SANsB7R,KAAK8b,WAAWjL,YAAY,CAC9C9Q,UACAkE,UACAyE,oBACA1C,iBAEkBpC,eACC+N,EAAqBwB,YAAYtB,EAAa7R,KAAKsf,cAAelM,EAE7F,CACA,MAAO1U,GACH,GAAIA,aAAiBsG,EACjB,MAAMtG,EAEV,IAAI+Q,EAKJ,MAJIoC,IACApC,EAAaoC,EAAY3N,cAERqX,EAAkBK,SAASld,EAAO+Q,EAAY2D,EAAUvB,EAEjF,CACJ,GACJ,CAOA,oBAAA0N,GACI,IAAKvf,KAAK+c,SAEN,YADA/c,KAAK2H,OAAO,eAAgB,oBAGhC,MAAM6X,EAAaphB,OAAOuC,KAAKX,KAAK+c,UACpC,IAAK,MAAM0C,KAAaD,EACpB,GAAgC,iBAA5BC,EAAUrZ,cACV,OAIRpG,KAAK2H,OAAO,eAAgB,mBAChC,CAQA,MAAAA,CAAO8X,EAAWC,GAEd,OADA1f,KAAK+c,SAAS0C,GAAaC,EACpB1f,IACX,CAOA,OAAAQ,CAAQA,GACJ,IAAK,MAAME,KAAOF,EACVpC,OAAOmH,UAAU4Y,eAAejF,KAAK1Y,EAASE,KAC9CV,KAAK+c,SAASrc,GAAOF,EAAQE,IAGrC,OAAOV,IACX,CAQA,MAAA4G,CAAOlG,EAAKhD,GAER,OADAsC,KAAKgd,SAAStc,GAAOhD,EACdsC,IACX,CAOA,OAAAiE,CAAQA,GACJ,IAAK,MAAMvD,KAAOuD,EACV7F,OAAOmH,UAAU4Y,eAAejF,KAAKjV,EAASvD,KAC9CV,KAAKgd,SAAStc,GAAOuD,EAAQvD,IAGrC,OAAOV,IACX,CAOA,iBAAA2G,CAAkB1C,GAEd,OADAjE,KAAKid,mBAAqBhZ,EACnBjE,IACX,CAOA,OAAAmc,CAAQA,GAEJ,OADAnc,KAAKic,cAAcE,QAAUA,EACtBnc,IACX,CAOA,YAAAqS,CAAaA,GAET,OADArS,KAAKsf,cAAgBjN,EACdrS,IACX,CAaA,MAAA2f,CAAOC,GAEH,OADA5f,KAAKkd,qBAAqB,UAAW0C,EAAYC,WAC1C7f,IACX,CAOA,MAAA8f,CAAOF,GAEH,OADA5f,KAAKkd,qBAAqB,UAAW0C,EAAYC,WAC1C7f,IACX,CAOA,OAAA+f,CAAQH,GAEJ,OADA5f,KAAKkd,qBAAqB,WAAY0C,EAAYC,WAC3C7f,IACX,CAOA,MAAAggB,CAAOC,GAEH,OADAjgB,KAAKic,cAAcW,iBAAiBsD,QAAUD,EACvCjgB,IACX,CAOA,MAAAmgB,CAAOC,GAEH,OADApgB,KAAKic,cAAcW,iBAAiByD,QAAUD,EACvCpgB,IACX,CAOA,GAAAsgB,CAAIC,GAEA,OADAvgB,KAAKic,cAAcW,iBAAiB4D,KAAOD,EACpCvgB,IACX,CAOA,IAAAygB,CAAKF,GAED,OADAvgB,KAAKic,cAAcW,iBAAiB8D,MAAQH,EACrCvgB,IACX,CAOA,SAAA2gB,CAAUC,GAEN,OADA5gB,KAAKic,cAAcW,iBAAiBiE,WAAaD,EAC1C5gB,IACX,CAOA,KAAA8gB,CAAMC,GAAU,GAEZ,OADA/gB,KAAKic,cAAcW,iBAAiBoE,OAASD,EAAQ/e,WAC9ChC,IACX,CAWA,KAAAie,CAAMI,GACF,OAAOre,KAAKyc,oBAAoB4B,EACpC,CAQA,GAAA7a,CAAI4P,GACA,OAAOnW,EAAU+C,UAAM,OAAQ,GAAQ,YACnC,MAAME,EAAMF,KAAKud,eACXtZ,EAAU,CACZ1D,OAAQpC,EAAc8P,KAG1B,aADuBjO,KAAKof,KAAKlf,EAAK+D,EAASmP,EAEnD,GACJ,CASA,IAAAoB,CAAK9O,EAAS0N,GACV,OAAOnW,EAAU+C,UAAM,OAAQ,GAAQ,YACnC,MAAME,EAAMF,KAAKud,eACXtZ,EAAU,CACZ1D,OAAQpC,EAAc0C,KACtBE,KAAM0E,EAAiBC,IAW3B,MARkB,cADAA,GAAWA,EAAQzD,aAAeyD,EAAQzD,YAAYrD,MAGpEqF,EAAQzD,QAAU,CAAC,GAGnBR,KAAKuf,uBACLtb,EAAQzD,QAAUR,KAAK+c,gBAEd/c,KAAKof,KAAKlf,EAAK+D,EAASmP,EACzC,GACJ,CASA,MAAA/U,CAAOqH,EAAS0N,GACZ,OAAOnW,EAAU+C,UAAM,OAAQ,GAAQ,YACnC,aAAaA,KAAKwU,KAAK9O,EAAS0N,EACpC,GACJ,CASA,GAAA0D,CAAIpR,EAAS0N,GACT,OAAOnW,EAAU+C,UAAM,OAAQ,GAAQ,YACnC,MAAME,EAAMF,KAAKud,eACjBvd,KAAKuf,uBACL,MAAMtb,EAAU,CACZ1D,OAAQpC,EAAc2C,IACtBC,KAAM0E,EAAiBC,IAE3B,aAAa1F,KAAKof,KAAKlf,EAAK+D,EAASmP,EACzC,GACJ,CASA,KAAA6N,CAAMvb,EAAS0N,GACX,OAAOnW,EAAU+C,UAAM,OAAQ,GAAQ,YACnC,MAAME,EAAMF,KAAKud,eACjBvd,KAAKuf,uBACL,MAAMtb,EAAU,CACZ1D,OAAQpC,EAAcyC,MACtBG,KAAM0E,EAAiBC,IAE3B,aAAa1F,KAAKof,KAAKlf,EAAK+D,EAASmP,EACzC,GACJ,CASA,MAAAtP,CAAO4B,EAAS0N,GACZ,OAAOnW,EAAU+C,UAAM,OAAQ,GAAQ,YACnC,aAAaA,KAAKihB,MAAMvb,EAAS0N,EACrC,GACJ,CAQA,OAAOA,GACH,OAAOnW,EAAU+C,UAAM,OAAQ,GAAQ,YACnC,MAAME,EAAMF,KAAKud,eACXtZ,EAAU,CACZ1D,OAAQpC,EAAc0R,QAE1B,aAAa7P,KAAKof,KAAKlf,EAAK+D,EAASmP,EACzC,GACJ,CAQA,GAAA8N,CAAI9N,GACA,OAAOnW,EAAU+C,UAAM,OAAQ,GAAQ,YACnC,aAAaA,KAAK2C,OAAOyQ,EAC7B,GACJ,CAQA,SAAA+N,CAAU/N,GACN,OAAOnW,EAAU+C,UAAM,OAAQ,GAAQ,YACnC,MAAME,EAAMF,KAAKud,eACXtZ,EAAU,CACZ1D,OAAQpC,EAAc8P,KAG1B,OADAjO,KAAKqS,aAAad,EAAasB,cAClB7S,KAAKof,KAAKlf,EAAK+D,EAASmP,EACzC,GACJ,CASA,SAAAgO,CAAUC,EAAQjO,GACd,OAAOnW,EAAU+C,UAAM,OAAQ,GAAQ,YACnC,MAAME,EAAMF,KAAKud,eACXtZ,EAAU,CACZ1D,OAAQpC,EAAc2C,IACtBN,QAAS,CACL,eAAgB,4BAEpBO,KAAMsgB,GAEV,aAAarhB,KAAKof,KAAKlf,EAAK+D,EAASmP,EACzC,GACJ,EClqBG,MAAMkO,EAOT,WAAArf,IAAe6M,GACX,IAAKA,IAAeA,EAAW1P,OAAQ,CACnC,MAAMV,EAAQ,IAAIC,MAGlB,MAFAD,EAAME,KAAO,yBACbF,EAAM0G,QAAU,uEACV1G,CACV,CACAsB,KAAKuhB,iBAAiBzS,EAC1B,CAQA,aAAAyS,IAAiBzS,GACTA,EAAW1P,OAAS,EACpBY,KAAKwhB,qBAAqB1S,GAG1B9O,KAAK8O,WAAaA,EAAW,EAErC,CASA,oBAAA0S,CAAqBC,GACjBA,EAAgBhhB,SAAQ,CAACihB,EAAS7e,KAC1BA,EAAQ4e,EAAgBriB,OAAS,GACjCsiB,EAAQtY,QAAQqY,EAAgB5e,EAAQ,GAC5C,IAEJ7C,KAAK8O,WAAa2S,EAAgB,EACtC,CAQA,WAAA5Q,CAAYrI,GACR,OAAOvL,EAAU+C,UAAM,OAAQ,GAAQ,YACnC,GAA+B,iBAApBwI,EAAQzI,cAA4Cb,IAApBsJ,EAAQvE,QAAuB,CACtE,MAAMvF,EAAQ,IAAIC,MAGlB,MAFAD,EAAME,KAAO,wBACbF,EAAM0G,QAAU,+EACV1G,CACV,CAEA,aADMsB,KAAK8O,WAAWhG,QAAQN,GACvBA,CACX,GACJ,EC/CG,MAAMmZ,GAcT,uCAAOC,CAAiC/S,GACpC,MAAME,EAAwB,IAAIlG,EAAsBgG,GAClDG,EAAe,IAAI9E,EAAa,IAAIX,GACpC0F,EAAmB,IAAIb,EACvBc,EAAqB,IAAI7F,EAE/B,GADA0F,EAAsB3F,QAAQ4F,GAzBR,iBAAZG,QA0Be,CACrB,MAAMC,EAAkB,IAAIhD,EAAgB,IAAIN,GAChDkD,EAAa5F,QAAQgG,GACrBA,EAAgBhG,QAAQ6F,EAC5B,MAEID,EAAa5F,QAAQ6F,GAGzB,OADAA,EAAiB7F,QAAQ8F,GAClByS,GAAkBE,qBAAqB9S,EAClD,CAQA,2BAAO8S,IAAwB/S,GAE3B,OAAO,IAAIwS,KAAcxS,EAC7B,ECvDG,MAAMgT,GAQT,WAAOlR,CAAK3M,GACR,MAAM8d,EAAgB,CAAC,EACvB,IAAK,MAAMtd,KAAKR,EACR7F,OAAOmH,UAAU4Y,eAAejF,KAAKjV,EAASQ,KAC9Csd,EAActd,GAAW,iBAANA,EAAuB,IAAIwW,EAA6BhX,EAAQQ,IAAMR,EAAQQ,IAGzG,OAAOqd,GAAOE,mBAAmBD,EACrC,CAQA,yBAAOC,CAAmBD,GACtB,OAAO,IAAID,GAAOC,EACtB,CAOA,WAAA9f,CAAY8f,GAKR/hB,KAAK+b,OAAS,CACVW,QnCpCkB,+BmCqClBqB,cAAc,EACdpB,enC3CqB,QoCDE,MAC/B,GAAuB,oBAAZrf,SAA4C,oBAAVgM,MAAuB,CAChE,MAAM5K,EAAQ,IAAIC,MAAM,4FAExB,MADAD,EAAME,KAAO,uBACPF,CACV,CACK,GAAuB,oBAAZpB,QAAyB,CACrC,MAAMoB,EAAQ,IAAIC,MAAM,gFAExB,MADAD,EAAME,KAAO,uBACPF,CACV,CACK,GAAqB,oBAAV4K,MAAuB,CACnC,MAAM5K,EAAQ,IAAIC,MAAM,8EAExB,MADAD,EAAME,KAAO,uBACPF,CACV,CACW,ED8BPujB,GACA,IAAK,MAAMvhB,KAAOqhB,EACV3jB,OAAOmH,UAAU4Y,eAAejF,KAAK6I,EAAerhB,KACpDV,KAAK+b,OAAOrb,GAAOqhB,EAAcrhB,IAGzC,IAAIob,EACJ,QAAmC5c,IAA/B6iB,EAAclT,mBAA2D3P,IAA7B6iB,EAAcjT,WAA0B,CACpF,MAAMpQ,EAAQ,IAAIC,MAGlB,MAFAD,EAAME,KAAO,4BACbF,EAAM0G,QAAU,0IACV1G,CACV,CACK,QAAmCQ,IAA/B6iB,EAAclT,aACnBiN,EAAa6F,GAAkBC,iCAAiCG,EAAclT,kBAE7E,SAAiC3P,IAA7B6iB,EAAcjT,WAGlB,CACD,MAAMpQ,EAAQ,IAAIC,MAGlB,MAFAD,EAAME,KAAO,yBACbF,EAAM0G,QAAU,iIACV1G,CACV,CAPIod,EAAa,IAAIwF,KAAc,GAAGxH,OAAOiI,EAAcjT,YAO3D,CACA9O,KAAK8b,WAAaA,CACtB,CAOA,GAAAvH,CAAImD,GACA,OAAO,IAAImE,EAAa7b,KAAK8b,WAAY9b,KAAK+b,OAAQrE,EAC1D,4wEEvFG,IAAIwK,EAAW,IAKXC,EAAc,IAKdC,EAAc,IAKdC,EAAW,IAKXC,EAAW,IAKXC,EAAU,IAKVC,EAAqB,IAKrBC,EAAoB,IAKpBC,EAAY,IAKZC,EAAkB,IAKlBC,EAAO,IAKPC,EAA6B,IAK7BC,EAAc,IAKdC,EAAiC,IAKjCC,EAAuB,IAKvBC,EAAwB,IAKxBC,EAAkB,IAKlBC,EAAS,IAKTC,EAAiB,IAKjBC,EAAqB,IAKrBC,EAAoB,IAKpBC,EAAoB,IAKpBC,EAAe,IAKfC,EAAmB,IAKnBC,EAAkC,IAKlCC,EAAa,IAKbC,EAAgC,IAKhCC,EAAiB,IAKjBC,EAAY,IAKZC,EAAkB,IAKlBC,EAAe,IAKfC,EAAK,IAKLC,EAAkB,IAKlBC,EAAmB,IAKnBC,EAAqB,IAKrBC,EAAsB,IAKtBC,EAAwB,IAKxBC,EAAa,IAKbC,EAAgC,IAKhCC,EAAkC,IAKlCC,EAAkB,IAKlBC,EAAmB,IAKnBC,EAAuB,IAKvBC,EAAkC,IAKlCC,EAAgB,IAKhBC,EAAY,IAKZC,EAAsB,IAKtBC,EAAsB,IAKtBC,EAAqB,IAKrBC,EAAoB,IAKpBC,EAAe,IAKfC,GAAuB,IAKvBC,GAAyB,IAKzBC,GAAY,IACvB,IACIrD,SAAUA,EACVC,YAAaA,EACbC,YAAaA,EACbC,SAAUA,EACVC,SAAUA,EACVC,QAASA,EACTC,mBAAoBA,EACpBE,UAAWA,EACXC,gBAAiBA,EACjBC,KAAMA,EACNC,2BAA4BA,EAC5BC,YAAaA,EACbC,+BAAgCA,EAChCC,qBAAsBA,EACtBC,sBAAuBA,EACvBC,gBAAiBA,EACjBC,OAAQA,EACRC,eAAgBA,EAChBC,mBAAoBA,EACpBC,kBAAmBA,EACnBC,kBAAmBA,EACnBC,aAAcA,EACdC,iBAAkBA,EAClBC,gCAAiCA,EACjCC,WAAYA,EACZC,8BAA+BA,EAC/BC,eAAgBA,EAChBC,UAAWA,EACXC,gBAAiBA,EACjBC,aAAcA,EACdC,GAAIA,EACJC,gBAAiBA,EACjBC,iBAAkBA,EAClBC,mBAAoBA,EACpBC,oBAAqBA,EACrBC,sBAAuBA,EACvBC,WAAYA,EACZC,8BAA+BA,EAC/BC,gCAAiCA,EACjCC,gBAAiBA,EACjBC,iBAAkBA,EAClBC,qBAAsBA,EACtBC,gCAAiCA,EACjCC,cAAeA,EACfC,UAAWA,EACXC,oBAAqBA,EACrBC,oBAAqBA,EACrBC,mBAAoBA,EACpBC,kBAAmBA,EACnBC,aAAcA,EACdC,qBAAsBA,GACtBC,uBAAwBA,GACxBC,UAAWA,ICpUJC,GAA2B,CAClC,IAAO,WACP,IAAO,cACP,IAAO,cACP,IAAO,WACP,IAAO,WACP,IAAO,UACP,IAAO,qBACP,IAAO,oBACP,IAAO,YACP,IAAO,kBACP,IAAO,OACP,IAAO,6BACP,IAAO,eACP,IAAO,iCACP,IAAO,uBACP,IAAO,wBACP,IAAO,kBACP,IAAO,SACP,IAAO,iBACP,IAAO,qBACP,IAAO,oBACP,IAAO,oBACP,IAAO,eACP,IAAO,mBACP,IAAO,kCACP,IAAO,aACP,IAAO,gCACP,IAAO,iBACP,IAAO,YACP,IAAO,kBACP,IAAO,eACP,IAAO,KACP,IAAO,kBACP,IAAO,mBACP,IAAO,qBACP,IAAO,sBACP,IAAO,wBACP,IAAO,aACP,IAAO,gCACP,IAAO,kCACP,IAAO,kBACP,IAAO,2BACP,IAAO,uBACP,IAAO,kCACP,IAAO,gBACP,IAAO,YACP,IAAO,sBACP,IAAO,sBACP,IAAO,qBACP,IAAO,oBACP,IAAO,eACP,IAAO,gCACP,IAAO,uBACP,IAAO,yBACP,IAAO,YACP,IAAO,uBAEAC,GAA2B,CAClC,SAAY,IACZ,cAAe,IACf,cAAe,IACf,SAAY,IACZ,SAAY,IACZ,QAAW,IACX,qBAAsB,IACtB,oBAAqB,IACrB,UAAa,IACb,kBAAmB,IACnB,KAAQ,IACR,6BAA8B,IAC9B,eAAgB,IAChB,iCAAkC,IAClC,uBAAwB,IACxB,wBAAyB,IACzB,kBAAmB,IACnB,OAAU,IACV,iBAAkB,IAClB,qBAAsB,IACtB,oBAAqB,IACrB,oBAAqB,IACrB,eAAgB,IAChB,mBAAoB,IACpB,kCAAmC,IACnC,aAAc,IACd,gCAAiC,IACjC,iBAAkB,IAClB,YAAa,IACb,kBAAmB,IACnB,eAAgB,IAChB,GAAM,IACN,kBAAmB,IACnB,mBAAoB,IACpB,qBAAsB,IACtB,sBAAuB,IACvB,wBAAyB,IACzB,WAAc,IACd,gCAAiC,IACjC,kCAAmC,IACnC,kBAAmB,IACnB,2BAA4B,IAC5B,uBAAwB,IACxB,kCAAmC,IACnC,gBAAiB,IACjB,YAAa,IACb,sBAAuB,IACvB,sBAAuB,IACvB,qBAAsB,IACtB,oBAAqB,IACrB,aAAgB,IAChB,gCAAiC,IACjC,uBAAwB,IACxB,yBAA0B,IAC1B,YAAa,IACb,sBAAuB,KC3GpB,SAASC,GAAgBjW,GAC5B,IAAI1R,EAASynB,GAAyB/V,EAAWzN,YACjD,IAAKjE,EACD,MAAM,IAAIY,MAAM,+BAAiC8Q,GAErD,OAAO1R,CACX,CAQO,SAAS4nB,GAAcC,GAC1B,IAAI7nB,EAAS0nB,GAAyBG,GACtC,IAAK7nB,EACD,MAAM,IAAIY,MAAM,iCAAmCinB,GAEvD,OAAO7nB,CACX,CAYO,ICvCI8nB,GCAAC,GFuCAC,GAAgBL,ICtC3B,SAAWG,GAMPA,EAAYA,EAAsB,SAAI,KAAO,WAM7CA,EAAYA,EAAyB,YAAI,KAAO,cAMhDA,EAAYA,EAAyB,YAAI,KAAO,cAMhDA,EAAYA,EAAsB,SAAI,KAAO,WAM7CA,EAAYA,EAAsB,SAAI,KAAO,WAM7CA,EAAYA,EAAqB,QAAI,KAAO,UAM5CA,EAAYA,EAAgC,mBAAI,KAAO,qBAMvDA,EAAYA,EAA+B,kBAAI,KAAO,oBAMtDA,EAAYA,EAAuB,UAAI,KAAO,YAM9CA,EAAYA,EAA6B,gBAAI,KAAO,kBAMpDA,EAAYA,EAAkB,KAAI,KAAO,OAMzCA,EAAYA,EAAwC,2BAAI,KAAO,6BAM/DA,EAAYA,EAAyB,YAAI,KAAO,cAMhDA,EAAYA,EAA4C,+BAAI,KAAO,iCAMnEA,EAAYA,EAAkC,qBAAI,KAAO,uBAMzDA,EAAYA,EAAmC,sBAAI,KAAO,wBAM1DA,EAAYA,EAA6B,gBAAI,KAAO,kBAMpDA,EAAYA,EAAoB,OAAI,KAAO,SAO3CA,EAAYA,EAA4B,eAAI,KAAO,iBAMnDA,EAAYA,EAAgC,mBAAI,KAAO,qBAMvDA,EAAYA,EAA+B,kBAAI,KAAO,oBAMtDA,EAAYA,EAA+B,kBAAI,KAAO,oBAMtDA,EAAYA,EAA0B,aAAI,KAAO,eAMjDA,EAAYA,EAA8B,iBAAI,KAAO,mBAMrDA,EAAYA,EAA6C,gCAAI,KAAO,kCAMpEA,EAAYA,EAAwB,WAAI,KAAO,aAM/CA,EAAYA,EAA2C,8BAAI,KAAO,gCAMlEA,EAAYA,EAA4B,eAAI,KAAO,iBAMnDA,EAAYA,EAAuB,UAAI,KAAO,YAM9CA,EAAYA,EAA6B,gBAAI,KAAO,kBAMpDA,EAAYA,EAA0B,aAAI,KAAO,eAUjDA,EAAYA,EAAgB,GAAI,KAAO,KAMvCA,EAAYA,EAA6B,gBAAI,KAAO,kBAMpDA,EAAYA,EAA8B,iBAAI,KAAO,mBAMrDA,EAAYA,EAAgC,mBAAI,KAAO,qBAMvDA,EAAYA,EAAiC,oBAAI,KAAO,sBAMxDA,EAAYA,EAAmC,sBAAI,KAAO,wBAM1DA,EAAYA,EAAwB,WAAI,KAAO,aAM/CA,EAAYA,EAA2C,8BAAI,KAAO,gCAMlEA,EAAYA,EAA6C,gCAAI,KAAO,kCAMpEA,EAAYA,EAA6B,gBAAI,KAAO,kBAMpDA,EAAYA,EAA8B,iBAAI,KAAO,mBAMrDA,EAAYA,EAAkC,qBAAI,KAAO,uBAMzDA,EAAYA,EAA6C,gCAAI,KAAO,kCAMpEA,EAAYA,EAA2B,cAAI,KAAO,gBAMlDA,EAAYA,EAAuB,UAAI,KAAO,YAM9CA,EAAYA,EAAiC,oBAAI,KAAO,sBAMxDA,EAAYA,EAAiC,oBAAI,KAAO,sBAMxDA,EAAYA,EAAgC,mBAAI,KAAO,qBAMvDA,EAAYA,EAA+B,kBAAI,KAAO,oBAMtDA,EAAYA,EAA0B,aAAI,KAAO,eAMjDA,EAAYA,EAA2C,8BAAI,KAAO,gCAMlEA,EAAYA,EAAkC,qBAAI,KAAO,uBAMzDA,EAAYA,EAAoC,uBAAI,KAAO,yBAO3DA,EAAYA,EAAuB,UAAI,KAAO,YAM9CA,EAAYA,EAAiC,oBAAI,KAAO,qBAC3D,CAvVD,CAuVGA,KAAgBA,GAAc,CAAC,ICvVlC,SAAWC,GAMPA,EAAwB,SAAI,WAM5BA,EAA2B,YAAI,cAM/BA,EAA2B,YAAI,cAM/BA,EAAwB,SAAI,WAM5BA,EAAwB,SAAI,WAM5BA,EAAuB,QAAI,UAM3BA,EAAkC,mBAAI,qBAMtCA,EAAiC,kBAAI,oBAMrCA,EAAyB,UAAI,YAM7BA,EAA+B,gBAAI,kBAMnCA,EAAoB,KAAI,OAMxBA,EAA0C,2BAAI,6BAM9CA,EAA2B,YAAI,eAM/BA,EAA8C,+BAAI,iCAMlDA,EAAoC,qBAAI,uBAMxCA,EAAqC,sBAAI,wBAMzCA,EAA+B,gBAAI,kBAMnCA,EAAsB,OAAI,SAO1BA,EAA8B,eAAI,iBAMlCA,EAAkC,mBAAI,qBAMtCA,EAAiC,kBAAI,oBAMrCA,EAAiC,kBAAI,oBAMrCA,EAA4B,aAAI,eAMhCA,EAAgC,iBAAI,mBAMpCA,EAA+C,gCAAI,kCAMnDA,EAA0B,WAAI,aAM9BA,EAA6C,8BAAI,gCAMjDA,EAA8B,eAAI,iBAMlCA,EAAyB,UAAI,YAM7BA,EAA+B,gBAAI,kBAMnCA,EAA4B,aAAI,eAUhCA,EAAkB,GAAI,KAMtBA,EAA+B,gBAAI,kBAMnCA,EAAgC,iBAAI,mBAMpCA,EAAkC,mBAAI,qBAMtCA,EAAmC,oBAAI,sBAMvCA,EAAqC,sBAAI,wBAMzCA,EAA0B,WAAI,aAM9BA,EAA6C,8BAAI,gCAMjDA,EAA+C,gCAAI,kCAMnDA,EAA+B,gBAAI,kBAMnCA,EAAgC,iBAAI,2BAMpCA,EAAoC,qBAAI,uBAMxCA,EAA+C,gCAAI,kCAMnDA,EAA6B,cAAI,gBAMjCA,EAAyB,UAAI,YAM7BA,EAAmC,oBAAI,sBAMvCA,EAAmC,oBAAI,sBAMvCA,EAAkC,mBAAI,qBAMtCA,EAAiC,kBAAI,oBAMrCA,EAA4B,aAAI,eAMhCA,EAA6C,8BAAI,gCAMjDA,EAAoC,qBAAI,uBAMxCA,EAAsC,uBAAI,yBAO1CA,EAAyB,UAAI,YAM7BA,EAAmC,oBAAI,qBAC1C,CAvVD,CAuVGA,KAAkBA,GAAgB,CAAC,ICzVtC,IAAIE,GAAsC,WAStC,OARAA,GAAW5nB,OAAOwJ,QAAU,SAASqe,GACjC,IAAK,IAAIvI,EAAGjZ,EAAI,EAAG8b,EAAIV,UAAUzgB,OAAQqF,EAAI8b,EAAG9b,IAE5C,IAAK,IAAIqT,KADT4F,EAAImC,UAAUpb,GACOrG,OAAOmH,UAAU4Y,eAAejF,KAAKwE,EAAG5F,KACzDmO,EAAEnO,GAAK4F,EAAE5F,IAEjB,OAAOmO,CACX,EACOD,GAAS9nB,MAAM8B,KAAM6f,UAChC,EAOA,GAAemG,GAASA,GAAS,CAAC,EAAGE,IAAc,CAAEP,cAAeA,GAChEI,cAAeA,4BClBnB,UAUI,EAAO,CAAC,UAAW,EAuBpB,SAAUI,GAIX,IAAIC,EAAK,WAGT,GAAID,GAAUA,EAAOtf,IAAMsf,EAAOtf,GAAGwf,SAAWF,EAAOtf,GAAGwf,QAAQC,IAChE,IAAIF,EAAKD,EAAOtf,GAAGwf,QAAQC,IAE/B,IAUIC,EAAWC,EAASC,EA0/LtB,OApgMyBL,GAAOA,EAAGG,YAChCH,EAAwBI,EAAUJ,EAA5BA,EAAK,CAAC,EAUhB,SAAUM,GACP,IAAIC,EAAMtkB,EAAKukB,EAASC,EACpBC,EAAU,CAAC,EACXC,EAAU,CAAC,EACXhL,EAAS,CAAC,EACViL,EAAW,CAAC,EACZC,EAAS7oB,OAAOmH,UAAU4Y,eAC1B+I,EAAM,GAAGlR,MACTmR,EAAiB,QAErB,SAASC,EAAQC,EAAKC,GAClB,OAAOL,EAAO/N,KAAKmO,EAAKC,EAC5B,CAUA,SAASC,EAAU3oB,EAAM4oB,GACrB,IAAIC,EAAWC,EAAaC,EAAUC,EAAUC,EAC5CC,EAAQC,EAAcC,EAAOvjB,EAAGyC,EAAG+gB,EACnCC,EAAYV,GAAYA,EAASlnB,MAAM,KACvCuX,EAAMkE,EAAOlE,IACbsQ,EAAWtQ,GAAOA,EAAI,MAAS,CAAC,EAGpC,GAAIjZ,EAAM,CAwBN,IAtBAipB,GADAjpB,EAAOA,EAAK0B,MAAM,MACDlB,OAAS,EAMtB2c,EAAOqM,cAAgBjB,EAAe9mB,KAAKzB,EAAKipB,MAChDjpB,EAAKipB,GAAajpB,EAAKipB,GAAWvhB,QAAQ6gB,EAAgB,KAIpC,MAAtBvoB,EAAK,GAAGwd,OAAO,IAAc8L,IAO7BtpB,EADsBspB,EAAUlS,MAAM,EAAGkS,EAAU9oB,OAAS,GACjC0a,OAAOlb,IAIjC6F,EAAI,EAAGA,EAAI7F,EAAKQ,OAAQqF,IAEzB,GAAa,OADbwjB,EAAOrpB,EAAK6F,IAER7F,EAAKmE,OAAO0B,EAAG,GACfA,GAAK,OACF,GAAa,OAATwjB,EAAe,CAMtB,GAAU,IAANxjB,GAAkB,IAANA,GAAuB,OAAZ7F,EAAK,IAAgC,OAAhBA,EAAK6F,EAAI,GACrD,SACOA,EAAI,IACX7F,EAAKmE,OAAO0B,EAAI,EAAG,GACnBA,GAAK,EAEb,CAIJ7F,EAAOA,EAAKoZ,KAAK,IACrB,CAGA,IAAKkQ,GAAaC,IAAYtQ,EAAK,CAG/B,IAAKpT,GAFLgjB,EAAY7oB,EAAK0B,MAAM,MAEJlB,OAAQqF,EAAI,EAAGA,GAAK,EAAG,CAGtC,GAFAijB,EAAcD,EAAUzR,MAAM,EAAGvR,GAAGuT,KAAK,KAErCkQ,EAGA,IAAKhhB,EAAIghB,EAAU9oB,OAAQ8H,EAAI,EAAGA,GAAK,EAKnC,IAJAygB,EAAW9P,EAAIqQ,EAAUlS,MAAM,EAAG9O,GAAG8Q,KAAK,SAKtC2P,EAAWA,EAASD,IACN,CAEVE,EAAWD,EACXG,EAASrjB,EACT,KACJ,CAKZ,GAAImjB,EACA,OAMCG,GAAgBI,GAAWA,EAAQT,KACpCK,EAAeI,EAAQT,GACvBM,EAAQvjB,EAEhB,EAEKmjB,GAAYG,IACbH,EAAWG,EACXD,EAASE,GAGTJ,IACAH,EAAU1kB,OAAO,EAAG+kB,EAAQF,GAC5BhpB,EAAO6oB,EAAUzP,KAAK,KAE9B,CAEA,OAAOpZ,CACX,CAEA,SAASypB,EAAYC,EAASC,GAC1B,OAAO,WAIH,IAAIC,EAAOtB,EAAIhO,KAAK2G,UAAW,GAQ/B,MAHuB,iBAAZ2I,EAAK,IAAmC,IAAhBA,EAAKppB,QACpCopB,EAAKplB,KAAK,MAEPf,EAAInE,MAAMwoB,EAAO8B,EAAK1O,OAAO,CAACwO,EAASC,IAClD,CACJ,CAQA,SAASE,EAASC,GACd,OAAO,SAAUhrB,GACbopB,EAAQ4B,GAAWhrB,CACvB,CACJ,CAEA,SAASirB,EAAQ/pB,GACb,GAAIwoB,EAAQL,EAASnoB,GAAO,CACxB,IAAI4pB,EAAOzB,EAAQnoB,UACZmoB,EAAQnoB,GACfooB,EAASpoB,IAAQ,EACjB+nB,EAAKzoB,MAAMwoB,EAAO8B,EACtB,CAEA,IAAKpB,EAAQN,EAASloB,KAAUwoB,EAAQJ,EAAUpoB,GAC9C,MAAM,IAAID,MAAM,MAAQC,GAE5B,OAAOkoB,EAAQloB,EACnB,CAKA,SAASgqB,EAAYhqB,GACjB,IAAIiqB,EACAhmB,EAAQjE,EAAOA,EAAKkE,QAAQ,MAAQ,EAKxC,OAJID,GAAS,IACTgmB,EAASjqB,EAAK6H,UAAU,EAAG5D,GAC3BjE,EAAOA,EAAK6H,UAAU5D,EAAQ,EAAGjE,EAAKQ,SAEnC,CAACypB,EAAQjqB,EACpB,CAIA,SAASkqB,EAAaR,GAClB,OAAOA,EAAUM,EAAYN,GAAW,EAC5C,CA8CA,SAASS,EAAWnqB,GAChB,OAAO,WACH,OAAQmd,GAAUA,EAAOA,QAAUA,EAAOA,OAAOnd,IAAU,CAAC,CAChE,CACJ,CA3CAgoB,EAAU,SAAUhoB,EAAMoqB,GACtB,IAAIC,EAnDeX,EAoDfY,EAAQN,EAAYhqB,GACpBiqB,EAASK,EAAM,GACfC,EAAkBH,EAAS,GA2B/B,OAzBApqB,EAAOsqB,EAAM,GAETL,IAEAI,EAASN,EADTE,EAAStB,EAAUsB,EAAQM,KAK3BN,EAEIjqB,EADAqqB,GAAUA,EAAO1B,UACV0B,EAAO1B,UAAU3oB,GAlEb0pB,EAkEiCa,EAjE7C,SAAUvqB,GACb,OAAO2oB,EAAU3oB,EAAM0pB,EAC3B,IAiEef,EAAU3oB,EAAMuqB,IAK3BN,GADAK,EAAQN,EADRhqB,EAAO2oB,EAAU3oB,EAAMuqB,KAER,GACfvqB,EAAOsqB,EAAM,GACTL,IACAI,EAASN,EAAQE,KAKlB,CACHO,EAAGP,EAASA,EAAS,IAAMjqB,EAAOA,EAClC2hB,EAAG3hB,EACHyqB,GAAIR,EACJ/Q,EAAGmR,EAEX,EAQApC,EAAW,CACPL,QAAS,SAAU5nB,GACf,OAAOypB,EAAYzpB,EACvB,EACA0qB,QAAS,SAAU1qB,GACf,IAAIf,EAAIipB,EAAQloB,GAChB,YAAiB,IAANf,EACAA,EAECipB,EAAQloB,GAAQ,CAAC,CAEjC,EACA2qB,OAAQ,SAAU3qB,GACd,MAAO,CACHY,GAAIZ,EACJ4qB,IAAK,GACLF,QAASxC,EAAQloB,GACjBmd,OAAQgN,EAAWnqB,GAE3B,GAGJ+nB,EAAO,SAAU/nB,EAAM6qB,EAAMrW,EAAUkV,GACnC,IAAIoB,EAAWhB,EAASiB,EAAK9R,EAAKpT,EAAGukB,EAGjCY,EAFApB,EAAO,GACPqB,SAAsBzW,EAQ1B,GAHA4V,EAAWF,EADXR,EAAUA,GAAW1pB,GAIA,cAAjBirB,GAAiD,aAAjBA,EAA6B,CAK7D,IADAJ,GAAQA,EAAKrqB,QAAUgU,EAAShU,OAAS,CAAC,UAAW,UAAW,UAAYqqB,EACvEhlB,EAAI,EAAGA,EAAIglB,EAAKrqB,OAAQqF,GAAK,EAK9B,GAAgB,aAHhBikB,GADA7Q,EAAM+O,EAAQ6C,EAAKhlB,GAAIukB,IACTI,GAIVZ,EAAK/jB,GAAKoiB,EAASL,QAAQ5nB,QACxB,GAAgB,YAAZ8pB,EAEPF,EAAK/jB,GAAKoiB,EAASyC,QAAQ1qB,GAC3BgrB,GAAe,OACZ,GAAgB,WAAZlB,EAEPgB,EAAYlB,EAAK/jB,GAAKoiB,EAAS0C,OAAO3qB,QACnC,GAAIwoB,EAAQN,EAAS4B,IACjBtB,EAAQL,EAAS2B,IACjBtB,EAAQJ,EAAU0B,GACzBF,EAAK/jB,GAAKkkB,EAAQD,OACf,KAAI7Q,EAAIC,EAIX,MAAM,IAAInZ,MAAMC,EAAO,YAAc8pB,GAHrC7Q,EAAIC,EAAEgS,KAAKjS,EAAI0I,EAAG8H,EAAYC,GAAS,GAAOG,EAASC,GAAU,CAAC,GAClEF,EAAK/jB,GAAKqiB,EAAQ4B,EAGtB,CAGJiB,EAAMvW,EAAWA,EAASlV,MAAM4oB,EAAQloB,GAAO4pB,QAAQtpB,EAEnDN,IAII8qB,GAAaA,EAAUJ,UAAY5C,GAC/BgD,EAAUJ,UAAYxC,EAAQloB,GAClCkoB,EAAQloB,GAAQ8qB,EAAUJ,QACnBK,IAAQjD,GAAUkD,IAEzB9C,EAAQloB,GAAQ+qB,GAG5B,MAAW/qB,IAGPkoB,EAAQloB,GAAQwU,EAExB,EAEAmT,EAAYC,EAAUnkB,EAAM,SAAUonB,EAAMrW,EAAUkV,EAASC,EAAWwB,GACtE,GAAoB,iBAATN,EACP,OAAI5C,EAAS4C,GAEF5C,EAAS4C,GAAMrW,GAMnBuV,EAAQ/B,EAAQ6C,EAAMX,EAAa1V,IAAWgW,GAClD,IAAKK,EAAK1mB,OAAQ,CAMrB,IAJAgZ,EAAS0N,GACEA,MACPpnB,EAAI0Z,EAAO0N,KAAM1N,EAAO3I,WAEvBA,EACD,OAGAA,EAASrQ,QAGT0mB,EAAOrW,EACPA,EAAWkV,EACXA,EAAU,MAEVmB,EAAO/C,CAEf,CA2BA,OAxBAtT,EAAWA,GAAY,WAAa,EAIb,mBAAZkV,IACPA,EAAUC,EACVA,EAAYwB,GAIZxB,EACA5B,EAAKD,EAAO+C,EAAMrW,EAAUkV,GAQ5B7c,YAAW,WACPkb,EAAKD,EAAO+C,EAAMrW,EAAUkV,EAChC,GAAG,GAGAjmB,CACX,EAMAA,EAAI0Z,OAAS,SAAUiO,GACnB,OAAO3nB,EAAI2nB,EACf,EAKAzD,EAAU0D,SAAWnD,GAErBL,EAAS,SAAU7nB,EAAM6qB,EAAMrW,GAC3B,GAAoB,iBAATxU,EACP,MAAM,IAAID,MAAM,6DAIf8qB,EAAK1mB,SAINqQ,EAAWqW,EACXA,EAAO,IAGNrC,EAAQN,EAASloB,IAAUwoB,EAAQL,EAASnoB,KAC7CmoB,EAAQnoB,GAAQ,CAACA,EAAM6qB,EAAMrW,GAErC,GAEOkT,IAAM,CACTH,QAAQ,EAEhB,CAxaA,GA0aAC,EAAGG,UAAYA,EAAUH,EAAGI,QAAUA,EAAQJ,EAAGK,OAASA,GAG1DL,EAAGK,OAAO,UAAU,WAAW,IAG/BL,EAAGK,OAAO,SAAS,IAAG,WACpB,IAAIyD,EAAK/D,GAAUgE,EAUnB,OARU,MAAND,GAActU,SAAWA,QAAQlX,OACnCkX,QAAQlX,MACN,yJAMGwrB,CACT,IAEA9D,EAAGK,OAAO,gBAAgB,CACxB,WACC,SAAU0D,GACX,IAAIC,EAAQ,CAAC,EAsBb,SAASC,EAAYC,GACnB,IAAIC,EAAQD,EAAS/kB,UAEjBilB,EAAU,GAEd,IAAK,IAAIC,KAAcF,EAGJ,mBAFTA,EAAME,IAMK,gBAAfA,GAIJD,EAAQpnB,KAAKqnB,GAGf,OAAOD,CACT,CAxCAJ,EAAMM,OAAS,SAAUC,EAAYC,GACnC,IAAIC,EAAY,CAAC,EAAE1M,eAEnB,SAAS2M,IACP9qB,KAAKiC,YAAc0oB,CACrB,CAEA,IAAK,IAAIjqB,KAAOkqB,EACVC,EAAU3R,KAAK0R,EAAYlqB,KAC7BiqB,EAAWjqB,GAAOkqB,EAAWlqB,IAQjC,OAJAoqB,EAAgBvlB,UAAYqlB,EAAWrlB,UACvColB,EAAWplB,UAAY,IAAIulB,EAC3BH,EAAWI,UAAYH,EAAWrlB,UAE3BolB,CACT,EAwBAP,EAAMY,SAAW,SAAUJ,EAAYK,GACrC,IAAIC,EAAmBb,EAAWY,GAC9BE,EAAed,EAAWO,GAE9B,SAASQ,IACP,IAAIC,EAAU5jB,MAAMlC,UAAU8lB,QAE1BC,EAAWL,EAAe1lB,UAAUtD,YAAY7C,OAEhDmsB,EAAoBX,EAAWrlB,UAAUtD,YAEzCqpB,EAAW,IACbD,EAAQnS,KAAK2G,UAAW+K,EAAWrlB,UAAUtD,aAE7CspB,EAAoBN,EAAe1lB,UAAUtD,aAG/CspB,EAAkBrtB,MAAM8B,KAAM6f,UAChC,CAEAoL,EAAeO,YAAcZ,EAAWY,YAMxCJ,EAAe7lB,UAAY,IAJ3B,WACEvF,KAAKiC,YAAcmpB,CACrB,EAIA,IAAK,IAAIK,EAAI,EAAGA,EAAIN,EAAa/rB,OAAQqsB,IAAK,CAC5C,IAAIC,EAAcP,EAAaM,GAE/BL,EAAe7lB,UAAUmmB,GACvBd,EAAWrlB,UAAUmmB,EACzB,CAqBA,IAnBA,IAAIC,EAAe,SAAUlB,GAE3B,IAAImB,EAAiB,WAAa,EAE9BnB,KAAcW,EAAe7lB,YAC/BqmB,EAAiBR,EAAe7lB,UAAUklB,IAG5C,IAAIoB,EAAkBZ,EAAe1lB,UAAUklB,GAE/C,OAAO,WAKL,OAJchjB,MAAMlC,UAAU8lB,QAEtBnS,KAAK2G,UAAW+L,GAEjBC,EAAgB3tB,MAAM8B,KAAM6f,UACrC,CACF,EAESiM,EAAI,EAAGA,EAAIZ,EAAiB9rB,OAAQ0sB,IAAK,CAChD,IAAID,EAAkBX,EAAiBY,GAEvCV,EAAe7lB,UAAUsmB,GAAmBF,EAAaE,EAC3D,CAEA,OAAOT,CACT,EAEA,IAAIW,EAAa,WACf/rB,KAAKgsB,UAAY,CAAC,CACpB,EAEAD,EAAWxmB,UAAU0U,GAAK,SAAUgS,EAAO7Y,GACzCpT,KAAKgsB,UAAYhsB,KAAKgsB,WAAa,CAAC,EAEhCC,KAASjsB,KAAKgsB,UAChBhsB,KAAKgsB,UAAUC,GAAO7oB,KAAKgQ,GAE3BpT,KAAKgsB,UAAUC,GAAS,CAAC7Y,EAE7B,EAEA2Y,EAAWxmB,UAAU2mB,QAAU,SAAUD,GACvC,IAAIjW,EAAQvO,MAAMlC,UAAUyQ,MACxBmW,EAASnW,EAAMkD,KAAK2G,UAAW,GAEnC7f,KAAKgsB,UAAYhsB,KAAKgsB,WAAa,CAAC,EAGtB,MAAVG,IACFA,EAAS,IAIW,IAAlBA,EAAO/sB,QACT+sB,EAAO/oB,KAAK,CAAC,GAIf+oB,EAAO,GAAGC,MAAQH,EAEdA,KAASjsB,KAAKgsB,WAChBhsB,KAAKqsB,OAAOrsB,KAAKgsB,UAAUC,GAAQjW,EAAMkD,KAAK2G,UAAW,IAGvD,MAAO7f,KAAKgsB,WACdhsB,KAAKqsB,OAAOrsB,KAAKgsB,UAAU,KAAMnM,UAErC,EAEAkM,EAAWxmB,UAAU8mB,OAAS,SAAUL,EAAWG,GACjD,IAAK,IAAI1nB,EAAI,EAAG6nB,EAAMN,EAAU5sB,OAAQqF,EAAI6nB,EAAK7nB,IAC/CunB,EAAUvnB,GAAGvG,MAAM8B,KAAMmsB,EAE7B,EAEA/B,EAAM2B,WAAaA,EAEnB3B,EAAMmC,cAAgB,SAAUntB,GAG9B,IAFA,IAAIotB,EAAQ,GAEH/nB,EAAI,EAAGA,EAAIrF,EAAQqF,IAE1B+nB,GADiBrlB,KAAKC,MAAsB,GAAhBD,KAAKE,UACbrF,SAAS,IAG/B,OAAOwqB,CACT,EAEApC,EAAMqC,KAAO,SAAUC,EAAMlkB,GAC3B,OAAO,WACLkkB,EAAKxuB,MAAMsK,EAASqX,UACtB,CACF,EAEAuK,EAAMuC,aAAe,SAAUC,GAC7B,IAAK,IAAIC,KAAeD,EAAM,CAC5B,IAAIjsB,EAAOksB,EAAYvsB,MAAM,KAEzBwsB,EAAYF,EAEhB,GAAoB,IAAhBjsB,EAAKvB,OAAT,CAIA,IAAK,IAAI2tB,EAAI,EAAGA,EAAIpsB,EAAKvB,OAAQ2tB,IAAK,CACpC,IAAIrsB,EAAMC,EAAKosB,IAIfrsB,EAAMA,EAAI+F,UAAU,EAAG,GAAGL,cAAgB1F,EAAI+F,UAAU,MAE3CqmB,IACXA,EAAUpsB,GAAO,CAAC,GAGhBqsB,GAAKpsB,EAAKvB,OAAS,IACrB0tB,EAAUpsB,GAAOksB,EAAKC,IAGxBC,EAAYA,EAAUpsB,EACxB,QAEOksB,EAAKC,EApBZ,CAqBF,CAEA,OAAOD,CACT,EAEAxC,EAAM4C,UAAY,SAAUnqB,EAAOoqB,GAOjC,IAAIC,EAAM/C,EAAE8C,GACRE,EAAYF,EAAGG,MAAMD,UACrBE,EAAYJ,EAAGG,MAAMC,UAGzB,OAAIF,IAAcE,GACC,WAAdA,GAAwC,YAAdA,KAIb,WAAdF,GAAwC,WAAdE,GAItBH,EAAII,cAAgBL,EAAGM,cAC7BL,EAAIM,aAAeP,EAAGQ,YAC1B,EAEArD,EAAMsD,aAAe,SAAUC,GAC7B,IAAIC,EAAa,CACf,KAAM,QACN,IAAK,QACL,IAAK,OACL,IAAK,OACL,IAAK,SACL,IAAM,QACN,IAAK,SAIP,MAAsB,iBAAXD,EACFA,EAGFE,OAAOF,GAAQrnB,QAAQ,gBAAgB,SAAUwnB,GACtD,OAAOF,EAAWE,EACpB,GACF,EAGA1D,EAAM2D,QAAU,CAAC,EAEjB,IAAIvuB,EAAK,EAwFT,OAvFA4qB,EAAM4D,mBAAqB,SAAUtM,GAMnC,IAAIuM,EAAYvM,EAAQwM,aAAa,mBAErC,OAAiB,MAAbD,IAMFA,EADEvM,EAAQliB,GACE,gBAAkBkiB,EAAQliB,GAE1B,mBAAqBA,GAAIwC,WACnC,IAAMooB,EAAMmC,cAAc,GAG9B7K,EAAQyM,aAAa,kBAAmBF,IAX/BA,CAcX,EAEA7D,EAAMgE,UAAY,SAAU1M,EAAS9iB,EAAMlB,GAGzC,IAAI8B,EAAK4qB,EAAM4D,mBAAmBtM,GAC7B0I,EAAM2D,QAAQvuB,KACjB4qB,EAAM2D,QAAQvuB,GAAM,CAAC,GAGvB4qB,EAAM2D,QAAQvuB,GAAIZ,GAAQlB,CAC5B,EAEA0sB,EAAMiE,QAAU,SAAU3M,EAAS9iB,GAKjC,IAAIY,EAAK4qB,EAAM4D,mBAAmBtM,GAClC,OAAI9iB,EACEwrB,EAAM2D,QAAQvuB,IACe,MAA3B4qB,EAAM2D,QAAQvuB,GAAIZ,GACbwrB,EAAM2D,QAAQvuB,GAAIZ,GAItBurB,EAAEzI,GAASkL,KAAKhuB,GAEhBwrB,EAAM2D,QAAQvuB,EAEzB,EAEA4qB,EAAMkE,WAAa,SAAU5M,GAE3B,IAAIliB,EAAK4qB,EAAM4D,mBAAmBtM,GACT,MAArB0I,EAAM2D,QAAQvuB,WACT4qB,EAAM2D,QAAQvuB,GAGvBkiB,EAAQ6M,gBAAgB,kBAC1B,EAEAnE,EAAMoE,0BAA4B,SAAUC,EAAMC,GAChD,IAEIC,EAAqBF,EAAKP,aAAa,SAAStW,OAAOtX,MAAM,OAEjEquB,EAAqBA,EAAmB3O,QAAO,SAAU4O,GAEvD,OAAqC,IAA9BA,EAAM9rB,QAAQ,WACvB,IAEA,IAAI+rB,EAAgBH,EAAIR,aAAa,SAAStW,OAAOtX,MAAM,OAE3DuuB,EAAgBA,EAAc7O,QAAO,SAAU4O,GAE7C,OAAqC,IAA9BA,EAAM9rB,QAAQ,WACvB,IAEA,IAAIgsB,EAAeH,EAAmB7U,OAAO+U,GAE7CJ,EAAKN,aAAa,QAASW,EAAa9W,KAAK,KAC/C,EAEOoS,CACT,IAEAhE,EAAGK,OAAO,kBAAkB,CAC1B,SACA,YACC,SAAU0D,EAAGC,GACd,SAAS2E,EAASC,EAAU/qB,EAASgrB,GACnCjvB,KAAKgvB,SAAWA,EAChBhvB,KAAK4sB,KAAOqC,EACZjvB,KAAKiE,QAAUA,EAEf8qB,EAAQhE,UAAU9oB,YAAYiX,KAAKlZ,KACrC,CAmhBA,OAjhBAoqB,EAAMM,OAAOqE,EAAS3E,EAAM2B,YAE5BgD,EAAQxpB,UAAU2pB,OAAS,WACzB,IAAIC,EAAWhF,EACb,6DASF,OANInqB,KAAKiE,QAAQT,IAAI,aACnB2rB,EAASC,KAAK,uBAAwB,QAGxCpvB,KAAKmvB,SAAWA,EAETA,CACT,EAEAJ,EAAQxpB,UAAU8pB,MAAQ,WACxBrvB,KAAKmvB,SAASG,OAChB,EAEAP,EAAQxpB,UAAUgqB,eAAiB,SAAUpD,GAC3C,IAAIuB,EAAe1tB,KAAKiE,QAAQT,IAAI,gBAEpCxD,KAAKqvB,QACLrvB,KAAKwvB,cAEL,IAAIC,EAAWtF,EACb,gFAIE/kB,EAAUpF,KAAKiE,QAAQT,IAAI,gBAAgBA,IAAI2oB,EAAO/mB,SAE1DqqB,EAAS3nB,OACP4lB,EACEtoB,EAAQ+mB,EAAO3D,QAInBiH,EAAS,GAAG9pB,WAAa,4BAEzB3F,KAAKmvB,SAASrnB,OAAO2nB,EACvB,EAEAV,EAAQxpB,UAAUmqB,aAAe,WAC/B1vB,KAAKmvB,SAASQ,KAAK,6BAA6BC,QAClD,EAEAb,EAAQxpB,UAAUuC,OAAS,SAAU8kB,GACnC5sB,KAAKwvB,cAEL,IAAIK,EAAW,GAEf,GAAoB,MAAhBjD,EAAKkD,SAA2C,IAAxBlD,EAAKkD,QAAQ1wB,OAAzC,CAUAwtB,EAAKkD,QAAU9vB,KAAK+vB,KAAKnD,EAAKkD,SAE9B,IAAK,IAAIhE,EAAI,EAAGA,EAAIc,EAAKkD,QAAQ1wB,OAAQ0sB,IAAK,CAC5C,IAAI9S,EAAO4T,EAAKkD,QAAQhE,GAEpBkE,EAAUhwB,KAAK4G,OAAOoS,GAE1B6W,EAASzsB,KAAK4sB,EAChB,CAEAhwB,KAAKmvB,SAASrnB,OAAO+nB,EAZrB,MAP0C,IAApC7vB,KAAKmvB,SAASc,WAAW7wB,QAC3BY,KAAKksB,QAAQ,kBAAmB,CAC9B9mB,QAAS,aAkBjB,EAEA2pB,EAAQxpB,UAAU2qB,SAAW,SAAUf,EAAUgB,GACvBA,EAAUR,KAAK,oBACrB7nB,OAAOqnB,EAC3B,EAEAJ,EAAQxpB,UAAUwqB,KAAO,SAAUnD,GAGjC,OAFa5sB,KAAKiE,QAAQT,IAAI,SAEvB4sB,CAAOxD,EAChB,EAEAmC,EAAQxpB,UAAU8qB,mBAAqB,WACrC,IAAIR,EAAW7vB,KAAKmvB,SACjBQ,KAAK,wCAEJW,EAAYT,EAAS7P,OAAO,sCAG5BsQ,EAAUlxB,OAAS,EAErBkxB,EAAUC,QAAQrE,QAAQ,cAI1B2D,EAASU,QAAQrE,QAAQ,cAG3BlsB,KAAKwwB,wBACP,EAEAzB,EAAQxpB,UAAUkrB,WAAa,WAC7B,IAAIC,EAAO1wB,KAEXA,KAAK4sB,KAAK+D,SAAQ,SAAUC,GAC1B,IAAIC,EAAcD,EAAS/Y,KAAI,SAAU6F,GACvC,OAAOA,EAAEle,GAAGwC,UACd,IAEe0uB,EAAKvB,SACjBQ,KAAK,wCAECmB,MAAK,WACZ,IAAId,EAAU7F,EAAEnqB,MAEZgZ,EAAOoR,EAAMiE,QAAQruB,KAAM,QAG3BR,EAAK,GAAKwZ,EAAKxZ,GAEE,MAAhBwZ,EAAK0I,SAAmB1I,EAAK0I,QAAQkP,UACrB,MAAhB5X,EAAK0I,SAAmBmP,EAAY/tB,QAAQtD,IAAO,GACtDQ,KAAK+wB,UAAUC,IAAI,qCACnBhB,EAAQZ,KAAK,gBAAiB,UAE9BpvB,KAAK+wB,UAAUnB,OAAO,qCACtBI,EAAQZ,KAAK,gBAAiB,SAElC,GAEF,GACF,EAEAL,EAAQxpB,UAAU0rB,YAAc,SAAU9E,GACxCnsB,KAAKwvB,cAEL,IAEI0B,EAAU,CACZC,UAAU,EACVD,SAAS,EACTlf,KALgBhS,KAAKiE,QAAQT,IAAI,gBAAgBA,IAAI,YAK/C4tB,CAAYjF,IAEhBkF,EAAWrxB,KAAK4G,OAAOsqB,GAC3BG,EAAS1rB,WAAa,mBAEtB3F,KAAKmvB,SAASmC,QAAQD,EACxB,EAEAtC,EAAQxpB,UAAUiqB,YAAc,WAC9BxvB,KAAKmvB,SAASQ,KAAK,oBAAoBC,QACzC,EAEAb,EAAQxpB,UAAUqB,OAAS,SAAUgmB,GACnC,IAAIhmB,EAAS2qB,SAASC,cAAc,MACpC5qB,EAAOmqB,UAAUC,IAAI,2BACrBpqB,EAAOmqB,UAAUC,IAAI,uCAErB,IAAIS,EAAQ,CACV,KAAQ,UAGNC,EAAUC,OAAOC,QAAQrsB,UAAUmsB,SACrCC,OAAOC,QAAQrsB,UAAUssB,mBACzBF,OAAOC,QAAQrsB,UAAUusB,sBA8B3B,IAAK,IAAI1C,KA5BY,MAAhBxC,EAAKlL,SAAmBgQ,EAAQxY,KAAK0T,EAAKlL,QAAS,cACnC,MAAhBkL,EAAKlL,SAAmBkL,EAAKuE,YAChCM,EAAM,iBAAmB,OAEzB7qB,EAAOmqB,UAAUnB,OAAO,uCACxBhpB,EAAOmqB,UAAUC,IAAI,sCAGR,MAAXpE,EAAKptB,IACPoH,EAAOmqB,UAAUnB,OAAO,uCAGJ,MAAlBhD,EAAKmF,YACPnrB,EAAOpH,GAAKotB,EAAKmF,WAGfnF,EAAKoF,QACPprB,EAAOorB,MAAQpF,EAAKoF,OAGlBpF,EAAKqD,WACPwB,EAAMQ,KAAO,QACbR,EAAM,cAAgB7E,EAAK5a,KAE3BpL,EAAOmqB,UAAUnB,OAAO,uCACxBhpB,EAAOmqB,UAAUC,IAAI,mCAGNS,EAAO,CACtB,IAAIS,EAAMT,EAAMrC,GAEhBxoB,EAAOunB,aAAaiB,EAAM8C,EAC5B,CAEA,GAAItF,EAAKqD,SAAU,CACjB,IAAID,EAAU7F,EAAEvjB,GAEZurB,EAAQZ,SAASC,cAAc,UACnCW,EAAMxsB,UAAY,yBAElB3F,KAAKoyB,SAASxF,EAAMuF,GAIpB,IAFA,IAAIE,EAAY,GAEPC,EAAI,EAAGA,EAAI1F,EAAKqD,SAAS7wB,OAAQkzB,IAAK,CAC7C,IAAIC,EAAQ3F,EAAKqD,SAASqC,GAEtBE,EAASxyB,KAAK4G,OAAO2rB,GAEzBF,EAAUjvB,KAAKovB,EACjB,CAEA,IAAIC,EAAqBtI,EAAE,YAAa,CACtC,MAAS,4DACT,KAAQ,SAGVsI,EAAmB3qB,OAAOuqB,GAE1BrC,EAAQloB,OAAOqqB,GACfnC,EAAQloB,OAAO2qB,EACjB,MACEzyB,KAAKoyB,SAASxF,EAAMhmB,GAKtB,OAFAwjB,EAAMgE,UAAUxnB,EAAQ,OAAQgmB,GAEzBhmB,CACT,EAEAmoB,EAAQxpB,UAAUknB,KAAO,SAAUiG,EAAWC,GAC5C,IAAIjC,EAAO1wB,KAEPR,EAAKkzB,EAAUlzB,GAAK,WAExBQ,KAAKmvB,SAASC,KAAK,KAAM5vB,GAEzBkzB,EAAUzY,GAAG,eAAe,SAAUkS,GACpCuE,EAAKrB,QACLqB,EAAK5oB,OAAOqkB,EAAOS,MAEf8F,EAAUE,WACZlC,EAAKD,aACLC,EAAKL,qBAET,IAEAqC,EAAUzY,GAAG,kBAAkB,SAAUkS,GACvCuE,EAAK5oB,OAAOqkB,EAAOS,MAEf8F,EAAUE,UACZlC,EAAKD,YAET,IAEAiC,EAAUzY,GAAG,SAAS,SAAUkS,GAC9BuE,EAAKhB,eACLgB,EAAKO,YAAY9E,EACnB,IAEAuG,EAAUzY,GAAG,UAAU,WAChByY,EAAUE,WAIflC,EAAKD,aAEDC,EAAKzsB,QAAQT,IAAI,sBACnBktB,EAAKL,qBAET,IAEAqC,EAAUzY,GAAG,YAAY,WAClByY,EAAUE,WAIflC,EAAKD,aAEDC,EAAKzsB,QAAQT,IAAI,sBACnBktB,EAAKL,qBAET,IAEAqC,EAAUzY,GAAG,QAAQ,WAEnByW,EAAKvB,SAASC,KAAK,gBAAiB,QACpCsB,EAAKvB,SAASC,KAAK,cAAe,SAElCsB,EAAKD,aACLC,EAAKF,wBACP,IAEAkC,EAAUzY,GAAG,SAAS,WAEpByW,EAAKvB,SAASC,KAAK,gBAAiB,SACpCsB,EAAKvB,SAASC,KAAK,cAAe,QAClCsB,EAAKvB,SAAS0D,WAAW,wBAC3B,IAEAH,EAAUzY,GAAG,kBAAkB,WAC7B,IAAI6Y,EAAepC,EAAKqC,wBAEI,IAAxBD,EAAa1zB,QAIjB0zB,EAAa5G,QAAQ,UACvB,IAEAwG,EAAUzY,GAAG,kBAAkB,WAC7B,IAAI6Y,EAAepC,EAAKqC,wBAExB,GAA4B,IAAxBD,EAAa1zB,OAAjB,CAIA,IAAIwtB,EAAOxC,EAAMiE,QAAQyE,EAAa,GAAI,QAEtCA,EAAaE,SAAS,qCACxBtC,EAAKxE,QAAQ,QAAS,CAAC,GAEvBwE,EAAKxE,QAAQ,SAAU,CACrBU,KAAMA,GARV,CAWF,IAEA8F,EAAUzY,GAAG,oBAAoB,WAC/B,IAAI6Y,EAAepC,EAAKqC,wBAEpBlD,EAAWa,EAAKvB,SAASQ,KAAK,wCAE9BsD,EAAepD,EAAShtB,MAAMiwB,GAIlC,KAAIG,GAAgB,GAApB,CAIA,IAAIC,EAAYD,EAAe,EAGH,IAAxBH,EAAa1zB,SACf8zB,EAAY,GAGd,IAAIC,EAAQtD,EAASuD,GAAGF,GAExBC,EAAMjH,QAAQ,cAEd,IAAImH,EAAgB3C,EAAKvB,SAASmE,SAAShT,IACvCiT,EAAUJ,EAAMG,SAAShT,IACzBkT,EAAa9C,EAAKvB,SAASsE,aAAeF,EAAUF,GAEtC,IAAdH,EACFxC,EAAKvB,SAASsE,UAAU,GACfF,EAAUF,EAAgB,GACnC3C,EAAKvB,SAASsE,UAAUD,EApB1B,CAsBF,IAEAd,EAAUzY,GAAG,gBAAgB,WAC3B,IAAI6Y,EAAepC,EAAKqC,wBAEpBlD,EAAWa,EAAKvB,SAASQ,KAAK,wCAI9BuD,EAFerD,EAAShtB,MAAMiwB,GAEH,EAG/B,KAAII,GAAarD,EAASzwB,QAA1B,CAIA,IAAI+zB,EAAQtD,EAASuD,GAAGF,GAExBC,EAAMjH,QAAQ,cAEd,IAAImH,EAAgB3C,EAAKvB,SAASmE,SAAShT,IACzCoQ,EAAKvB,SAASuE,aAAY,GACxBC,EAAaR,EAAMG,SAAShT,IAAM6S,EAAMO,aAAY,GACpDF,EAAa9C,EAAKvB,SAASsE,YAAcE,EAAaN,EAExC,IAAdH,EACFxC,EAAKvB,SAASsE,UAAU,GACfE,EAAaN,GACtB3C,EAAKvB,SAASsE,UAAUD,EAd1B,CAgBF,IAEAd,EAAUzY,GAAG,iBAAiB,SAAUkS,GACtCA,EAAOzK,QAAQ,GAAGqP,UAAUC,IAAI,wCAChC7E,EAAOzK,QAAQ,GAAGyM,aAAa,gBAAiB,OAClD,IAEAuE,EAAUzY,GAAG,mBAAmB,SAAUkS,GACxCuE,EAAKnB,eAAepD,EACtB,IAEIhC,EAAEtjB,GAAG+sB,YACP5zB,KAAKmvB,SAASlV,GAAG,cAAc,SAAUpc,GACvC,IAAIyiB,EAAMoQ,EAAKvB,SAASsE,YAEpBI,EAASnD,EAAKvB,SAAS3rB,IAAI,GAAG+pB,aAAejN,EAAMziB,EAAEi2B,OAErDC,EAAUl2B,EAAEi2B,OAAS,GAAKxT,EAAMziB,EAAEi2B,QAAU,EAC5CE,EAAan2B,EAAEi2B,OAAS,GAAKD,GAAUnD,EAAKvB,SAAS8E,SAErDF,GACFrD,EAAKvB,SAASsE,UAAU,GAExB51B,EAAEq2B,iBACFr2B,EAAEs2B,mBACOH,IACTtD,EAAKvB,SAASsE,UACZ/C,EAAKvB,SAAS3rB,IAAI,GAAG+pB,aAAemD,EAAKvB,SAAS8E,UAGpDp2B,EAAEq2B,iBACFr2B,EAAEs2B,kBAEN,IAGFn0B,KAAKmvB,SAASlV,GAAG,UAAW,wCAC1B,SAAUma,GACV,IAAIC,EAAQlK,EAAEnqB,MAEV4sB,EAAOxC,EAAMiE,QAAQruB,KAAM,QAE3Bq0B,EAAMrB,SAAS,qCACbtC,EAAKzsB,QAAQT,IAAI,YACnBktB,EAAKxE,QAAQ,WAAY,CACvBoI,cAAeF,EACfxH,KAAMA,IAGR8D,EAAKxE,QAAQ,QAAS,CAAC,GAM3BwE,EAAKxE,QAAQ,SAAU,CACrBoI,cAAeF,EACfxH,KAAMA,GAEV,IAEA5sB,KAAKmvB,SAASlV,GAAG,aAAc,wCAC7B,SAAUma,GACV,IAAIxH,EAAOxC,EAAMiE,QAAQruB,KAAM,QAE/B0wB,EAAKqC,wBACAwB,YAAY,wCACZnF,KAAK,gBAAiB,SAE3BsB,EAAKxE,QAAQ,gBAAiB,CAC5BU,KAAMA,EACNlL,QAASyI,EAAEnqB,OAEf,GACF,EAEA+uB,EAAQxpB,UAAUwtB,sBAAwB,WAIxC,OAHmB/yB,KAAKmvB,SACvBQ,KAAK,wCAGR,EAEAZ,EAAQxpB,UAAUivB,QAAU,WAC1Bx0B,KAAKmvB,SAASS,QAChB,EAEAb,EAAQxpB,UAAUirB,uBAAyB,WACzC,IAAIsC,EAAe9yB,KAAK+yB,wBAExB,GAA4B,IAAxBD,EAAa1zB,OAAjB,CAIA,IAEI6zB,EAFWjzB,KAAKmvB,SAASQ,KAAK,wCAEN9sB,MAAMiwB,GAE9BO,EAAgBrzB,KAAKmvB,SAASmE,SAAShT,IACvCiT,EAAUT,EAAaQ,SAAShT,IAChCkT,EAAaxzB,KAAKmvB,SAASsE,aAAeF,EAAUF,GAEpDoB,EAAclB,EAAUF,EAC5BG,GAAgD,EAAlCV,EAAaY,aAAY,GAEnCT,GAAgB,EAClBjzB,KAAKmvB,SAASsE,UAAU,IACfgB,EAAcz0B,KAAKmvB,SAASuE,eAAiBe,EAAc,IACpEz0B,KAAKmvB,SAASsE,UAAUD,EAhB1B,CAkBF,EAEAzE,EAAQxpB,UAAU6sB,SAAW,SAAUr0B,EAAQ20B,GAC7C,IAAIN,EAAWpyB,KAAKiE,QAAQT,IAAI,kBAC5BkqB,EAAe1tB,KAAKiE,QAAQT,IAAI,gBAEhCkC,EAAU0sB,EAASr0B,EAAQ20B,GAEhB,MAAXhtB,EACFgtB,EAAUtF,MAAMsH,QAAU,OACE,iBAAZhvB,EAChBgtB,EAAUiC,UAAYjH,EAAahoB,GAEnCykB,EAAEuI,GAAW5qB,OAAOpC,EAExB,EAEOqpB,CACT,IAEA3I,EAAGK,OAAO,eAAe,IAEtB,WAqBD,MApBW,CACTmO,UAAW,EACXC,IAAK,EACLC,MAAO,GACPC,MAAO,GACPC,KAAM,GACNC,IAAK,GACLC,IAAK,GACLC,MAAO,GACPC,QAAS,GACTC,UAAW,GACXC,IAAK,GACLC,KAAM,GACNC,KAAM,GACNC,GAAI,GACJC,MAAO,GACPC,KAAM,GACN9lB,OAAQ,GAIZ,IAEAuW,EAAGK,OAAO,yBAAyB,CACjC,SACA,WACA,YACC,SAAU0D,EAAGC,EAAOwL,GACrB,SAASC,EAAe7G,EAAU/qB,GAChCjE,KAAKgvB,SAAWA,EAChBhvB,KAAKiE,QAAUA,EAEf4xB,EAAc9K,UAAU9oB,YAAYiX,KAAKlZ,KAC3C,CAsKA,OApKAoqB,EAAMM,OAAOmL,EAAezL,EAAM2B,YAElC8J,EAActwB,UAAU2pB,OAAS,WAC/B,IAAI4G,EAAa3L,EACf,uGAmBF,OAdAnqB,KAAK+1B,UAAY,EAEsC,MAAnD3L,EAAMiE,QAAQruB,KAAKgvB,SAAS,GAAI,gBAClChvB,KAAK+1B,UAAY3L,EAAMiE,QAAQruB,KAAKgvB,SAAS,GAAI,gBACN,MAAlChvB,KAAKgvB,SAASI,KAAK,cAC5BpvB,KAAK+1B,UAAY/1B,KAAKgvB,SAASI,KAAK,aAGtC0G,EAAW1G,KAAK,QAASpvB,KAAKgvB,SAASI,KAAK,UAC5C0G,EAAW1G,KAAK,WAAYpvB,KAAK+1B,WACjCD,EAAW1G,KAAK,gBAAiB,SAEjCpvB,KAAK81B,WAAaA,EAEXA,CACT,EAEAD,EAActwB,UAAUknB,KAAO,SAAUiG,EAAWC,GAClD,IAAIjC,EAAO1wB,KAEPg2B,EAAYtD,EAAUlzB,GAAK,WAE/BQ,KAAK0yB,UAAYA,EAEjB1yB,KAAK81B,WAAW7b,GAAG,SAAS,SAAUma,GACpC1D,EAAKxE,QAAQ,QAASkI,EACxB,IAEAp0B,KAAK81B,WAAW7b,GAAG,QAAQ,SAAUma,GACnC1D,EAAKuF,YAAY7B,EACnB,IAEAp0B,KAAK81B,WAAW7b,GAAG,WAAW,SAAUma,GACtC1D,EAAKxE,QAAQ,WAAYkI,GAErBA,EAAI8B,QAAUN,EAAKT,OACrBf,EAAIF,gBAER,IAEAxB,EAAUzY,GAAG,iBAAiB,SAAUkS,GACtCuE,EAAKoF,WAAW1G,KAAK,wBAAyBjD,EAAOS,KAAKmF,UAC5D,IAEAW,EAAUzY,GAAG,oBAAoB,SAAUkS,GACzCuE,EAAK5sB,OAAOqoB,EAAOS,KACrB,IAEA8F,EAAUzY,GAAG,QAAQ,WAEnByW,EAAKoF,WAAW1G,KAAK,gBAAiB,QACtCsB,EAAKoF,WAAW1G,KAAK,YAAa4G,GAElCtF,EAAKyF,oBAAoBzD,EAC3B,IAEAA,EAAUzY,GAAG,SAAS,WAEpByW,EAAKoF,WAAW1G,KAAK,gBAAiB,SACtCsB,EAAKoF,WAAWjD,WAAW,yBAC3BnC,EAAKoF,WAAWjD,WAAW,aAE3BnC,EAAKoF,WAAW5J,QAAQ,SAExBwE,EAAK0F,oBAAoB1D,EAC3B,IAEAA,EAAUzY,GAAG,UAAU,WACrByW,EAAKoF,WAAW1G,KAAK,WAAYsB,EAAKqF,WACtCrF,EAAKoF,WAAW1G,KAAK,gBAAiB,QACxC,IAEAsD,EAAUzY,GAAG,WAAW,WACtByW,EAAKoF,WAAW1G,KAAK,WAAY,MACjCsB,EAAKoF,WAAW1G,KAAK,gBAAiB,OACxC,GACF,EAEAyG,EAActwB,UAAU0wB,YAAc,SAAU7B,GAC9C,IAAI1D,EAAO1wB,KAIX2xB,OAAOlmB,YAAW,WAGb8lB,SAAS8E,eAAiB3F,EAAKoF,WAAW,IAC1C3L,EAAEmM,SAAS5F,EAAKoF,WAAW,GAAIvE,SAAS8E,gBAK3C3F,EAAKxE,QAAQ,OAAQkI,EACvB,GAAG,EACL,EAEAyB,EAActwB,UAAU4wB,oBAAsB,SAAUzD,GAEtDvI,EAAEoH,SAASxwB,MAAMkZ,GAAG,qBAAuByY,EAAUlzB,IAAI,SAAU3B,GACjE,IAEI04B,EAFUpM,EAAEtsB,EAAE24B,QAEIC,QAAQ,YAEnBtM,EAAE,oCAER2G,MAAK,WACJ9wB,MAAQu2B,EAAQ,IAILnM,EAAMiE,QAAQruB,KAAM,WAE1BqmB,QAAQ,QACnB,GACF,GACF,EAEAwP,EAActwB,UAAU6wB,oBAAsB,SAAU1D,GACtDvI,EAAEoH,SAASxwB,MAAM21B,IAAI,qBAAuBhE,EAAUlzB,GACxD,EAEAq2B,EAActwB,UAAU2qB,SAAW,SAAU4F,EAAYnD,GAC7BA,EAAWhD,KAAK,cACtB7nB,OAAOguB,EAC7B,EAEAD,EAActwB,UAAUivB,QAAU,WAChCx0B,KAAKo2B,oBAAoBp2B,KAAK0yB,UAChC,EAEAmD,EAActwB,UAAUzB,OAAS,SAAU8oB,GACzC,MAAM,IAAIjuB,MAAM,wDAClB,EASAk3B,EAActwB,UAAUoxB,UAAY,WAClC,OAAQ32B,KAAK42B,YACf,EAQAf,EAActwB,UAAUqxB,WAAa,WACnC,OAAO52B,KAAKiE,QAAQT,IAAI,WAC1B,EAEOqyB,CACT,IAEAzP,EAAGK,OAAO,2BAA2B,CACnC,SACA,SACA,WACA,YACC,SAAU0D,EAAG0L,EAAezL,EAAOwL,GACpC,SAASiB,IACPA,EAAgB9L,UAAU9oB,YAAY/D,MAAM8B,KAAM6f,UACpD,CAkGA,OAhGAuK,EAAMM,OAAOmM,EAAiBhB,GAE9BgB,EAAgBtxB,UAAU2pB,OAAS,WACjC,IAAI4G,EAAae,EAAgB9L,UAAUmE,OAAOhW,KAAKlZ,MAWvD,OATA81B,EAAW,GAAG/E,UAAUC,IAAI,6BAE5B8E,EAAWgB,KACT,kJAMKhB,CACT,EAEAe,EAAgBtxB,UAAUknB,KAAO,SAAUiG,EAAWC,GACpD,IAAIjC,EAAO1wB,KAEX62B,EAAgB9L,UAAU0B,KAAKvuB,MAAM8B,KAAM6f,WAE3C,IAAIrgB,EAAKkzB,EAAUlzB,GAAK,aAExBQ,KAAK81B,WAAWnG,KAAK,gCAClBP,KAAK,KAAM5vB,GACX4vB,KAAK,OAAQ,WACbA,KAAK,gBAAiB,QACzBpvB,KAAK81B,WAAW1G,KAAK,kBAAmB5vB,GACxCQ,KAAK81B,WAAW1G,KAAK,gBAAiB5vB,GAEtCQ,KAAK81B,WAAW7b,GAAG,aAAa,SAAUma,GAEtB,IAAdA,EAAI8B,OAIRxF,EAAKxE,QAAQ,SAAU,CACrBoI,cAAeF,GAEnB,IAEAp0B,KAAK81B,WAAW7b,GAAG,SAAS,SAAUma,GAEtC,IAEAp0B,KAAK81B,WAAW7b,GAAG,QAAQ,SAAUma,GAErC,IAEA1B,EAAUzY,GAAG,SAAS,SAAUma,GACzB1B,EAAUE,UACblC,EAAKoF,WAAW5J,QAAQ,QAE5B,GACF,EAEA2K,EAAgBtxB,UAAU8pB,MAAQ,WAChC,IAAI0H,EAAY/2B,KAAK81B,WAAWnG,KAAK,gCACrCoH,EAAUzH,QACVyH,EAAUlE,WAAW,QACvB,EAEAgE,EAAgBtxB,UAAUmvB,QAAU,SAAU9H,EAAM8F,GAClD,IAAIN,EAAWpyB,KAAKiE,QAAQT,IAAI,qBAGhC,OAFmBxD,KAAKiE,QAAQT,IAAI,eAE7BkqB,CAAa0E,EAASxF,EAAM8F,GACrC,EAEAmE,EAAgBtxB,UAAUyxB,mBAAqB,WAC7C,OAAO7M,EAAE,gBACX,EAEA0M,EAAgBtxB,UAAUzB,OAAS,SAAU8oB,GAC3C,GAAoB,IAAhBA,EAAKxtB,OAAT,CAKA,IAAI63B,EAAYrK,EAAK,GAEjBmK,EAAY/2B,KAAK81B,WAAWnG,KAAK,gCACjCuH,EAAYl3B,KAAK00B,QAAQuC,EAAWF,GAExCA,EAAUzH,QAAQxnB,OAAOovB,GAEzB,IAAIlF,EAAQiF,EAAUjF,OAASiF,EAAUjlB,KAErCggB,EACF+E,EAAU3H,KAAK,QAAS4C,GAExB+E,EAAUlE,WAAW,QAdvB,MAFE7yB,KAAKqvB,OAkBT,EAEOwH,CACT,IAEAzQ,EAAGK,OAAO,6BAA6B,CACrC,SACA,SACA,aACC,SAAU0D,EAAG0L,EAAezL,GAC7B,SAAS+M,EAAmBnI,EAAU/qB,GACpCkzB,EAAkBpM,UAAU9oB,YAAY/D,MAAM8B,KAAM6f,UACtD,CAkJA,OAhJAuK,EAAMM,OAAOyM,EAAmBtB,GAEhCsB,EAAkB5xB,UAAU2pB,OAAS,WACnC,IAAI4G,EAAaqB,EAAkBpM,UAAUmE,OAAOhW,KAAKlZ,MAQzD,OANA81B,EAAW,GAAG/E,UAAUC,IAAI,+BAE5B8E,EAAWgB,KACT,iDAGKhB,CACT,EAEAqB,EAAkB5xB,UAAUknB,KAAO,SAAUiG,EAAWC,GACtD,IAAIjC,EAAO1wB,KAEXm3B,EAAkBpM,UAAU0B,KAAKvuB,MAAM8B,KAAM6f,WAE7C,IAAIrgB,EAAKkzB,EAAUlzB,GAAK,aACxBQ,KAAK81B,WAAWnG,KAAK,gCAAgCP,KAAK,KAAM5vB,GAEhEQ,KAAK81B,WAAW7b,GAAG,SAAS,SAAUma,GACpC1D,EAAKxE,QAAQ,SAAU,CACrBoI,cAAeF,GAEnB,IAEAp0B,KAAK81B,WAAW7b,GACd,QACA,sCACA,SAAUma,GAER,IAAI1D,EAAKkG,aAAT,CAIA,IACId,EADU3L,EAAEnqB,MACSo3B,SAErBxK,EAAOxC,EAAMiE,QAAQyH,EAAW,GAAI,QAExCpF,EAAKxE,QAAQ,WAAY,CACvBoI,cAAeF,EACfxH,KAAMA,GATR,CAWF,IAGF5sB,KAAK81B,WAAW7b,GACd,UACA,sCACA,SAAUma,GAEJ1D,EAAKkG,cAITxC,EAAID,iBACN,GAEJ,EAEAgD,EAAkB5xB,UAAU8pB,MAAQ,WAClC,IAAI0H,EAAY/2B,KAAK81B,WAAWnG,KAAK,gCACrCoH,EAAUzH,QACVyH,EAAUlE,WAAW,QACvB,EAEAsE,EAAkB5xB,UAAUmvB,QAAU,SAAU9H,EAAM8F,GACpD,IAAIN,EAAWpyB,KAAKiE,QAAQT,IAAI,qBAGhC,OAFmBxD,KAAKiE,QAAQT,IAAI,eAE7BkqB,CAAa0E,EAASxF,EAAM8F,GACrC,EAEAyE,EAAkB5xB,UAAUyxB,mBAAqB,WAW/C,OAViB7M,EACf,oOAUJ,EAEAgN,EAAkB5xB,UAAUzB,OAAS,SAAU8oB,GAG7C,GAFA5sB,KAAKqvB,QAEe,IAAhBzC,EAAKxtB,OAAT,CASA,IALA,IAAIi4B,EAAc,GAEdC,EAAoBt3B,KAAK81B,WAAWnG,KAAK,gCAC1CP,KAAK,MAAQ,WAEPtD,EAAI,EAAGA,EAAIc,EAAKxtB,OAAQ0sB,IAAK,CACpC,IAAImL,EAAYrK,EAAKd,GAEjBgK,EAAa91B,KAAKg3B,qBAClBE,EAAYl3B,KAAK00B,QAAQuC,EAAWnB,GAEpCyB,EAAcD,EAAoBlN,EAAMmC,cAAc,GAAK,IAE3D0K,EAAUz3B,GACZ+3B,GAAeN,EAAUz3B,GAEzB+3B,GAAenN,EAAMmC,cAAc,GAGrCuJ,EAAWnG,KAAK,uCACb7nB,OAAOovB,GACP9H,KAAK,KAAMmI,GAEd,IAAIvF,EAAQiF,EAAUjF,OAASiF,EAAUjlB,KAErCggB,GACF8D,EAAW1G,KAAK,QAAS4C,GAG3B,IAAIwF,EAAax3B,KAAKiE,QAAQT,IAAI,gBAAgBA,IAAI,cAElDi0B,EAAU3B,EAAWnG,KAAK,sCAE9B8H,EAAQrI,KAAK,QAASoI,KACtBC,EAAQrI,KAAK,aAAcoI,KAC3BC,EAAQrI,KAAK,mBAAoBmI,GAEjCnN,EAAMgE,UAAU0H,EAAW,GAAI,OAAQmB,GAEvCI,EAAYj0B,KAAK0yB,EACnB,CAEgB91B,KAAK81B,WAAWnG,KAAK,gCAE3B7nB,OAAOuvB,EA9CjB,CA+CF,EAEOF,CACT,IAEA/Q,EAAGK,OAAO,gCAAgC,IAEvC,WACD,SAASiR,EAAaC,EAAW3I,EAAU/qB,GACzCjE,KAAK43B,YAAc53B,KAAK63B,qBAAqB5zB,EAAQT,IAAI,gBAEzDm0B,EAAUze,KAAKlZ,KAAMgvB,EAAU/qB,EACjC,CAiDA,OA/CAyzB,EAAYnyB,UAAUsyB,qBAAuB,SAAUC,EAAGF,GAQxD,MAP2B,iBAAhBA,IACTA,EAAc,CACZp4B,GAAI,GACJwS,KAAM4lB,IAIHA,CACT,EAEAF,EAAYnyB,UAAUwyB,kBAAoB,SAAUJ,EAAWC,GAC7D,IAAII,EAAeh4B,KAAKg3B,qBAExBgB,EAAalB,KAAK92B,KAAK00B,QAAQkD,IAC/BI,EAAa,GAAGjH,UAAUC,IAAI,kCAC9BgH,EAAa,GAAGjH,UAAUnB,OAAO,6BAEjC,IAAIqI,EAAmBL,EAAY5F,OACjC4F,EAAY5lB,MACZgmB,EAAahmB,OAOf,OALAhS,KAAK81B,WAAWnG,KAAK,gCAAgCP,KACnD,QACA6I,GAGKD,CACT,EAEAN,EAAYnyB,UAAUzB,OAAS,SAAU6zB,EAAW/K,GAClD,IAAIsL,EACa,GAAftL,EAAKxtB,QAAewtB,EAAK,GAAGptB,IAAMQ,KAAK43B,YAAYp4B,GAIrD,GAFyBotB,EAAKxtB,OAAS,GAEb84B,EACxB,OAAOP,EAAUze,KAAKlZ,KAAM4sB,GAG9B5sB,KAAKqvB,QAEL,IAAI2I,EAAeh4B,KAAK+3B,kBAAkB/3B,KAAK43B,aAE/C53B,KAAK81B,WAAWnG,KAAK,gCAAgC7nB,OAAOkwB,EAC9D,EAEON,CACT,IAEAtR,EAAGK,OAAO,+BAA+B,CACvC,SACA,UACA,aACC,SAAU0D,EAAGyL,EAAMxL,GACpB,SAAS+N,IAAgB,CAoHzB,OAlHAA,EAAW5yB,UAAUknB,KAAO,SAAUkL,EAAWjF,EAAWC,GAC1D,IAAIjC,EAAO1wB,KAEX23B,EAAUze,KAAKlZ,KAAM0yB,EAAWC,GAER,MAApB3yB,KAAK43B,aACH53B,KAAKiE,QAAQT,IAAI,UAAYmuB,OAAO/b,SAAWA,QAAQlX,OACzDkX,QAAQlX,MACN,iGAMNsB,KAAK81B,WAAW7b,GAAG,YAAa,6BAC9B,SAAUma,GACR1D,EAAK0H,aAAahE,EACtB,IAEA1B,EAAUzY,GAAG,YAAY,SAAUma,GACjC1D,EAAK2H,qBAAqBjE,EAAK1B,EACjC,GACF,EAEAyF,EAAW5yB,UAAU6yB,aAAe,SAAUN,EAAG1D,GAE/C,IAAIp0B,KAAK42B,aAAT,CAIA,IAAI0B,EAASt4B,KAAK81B,WAAWnG,KAAK,6BAGlC,GAAsB,IAAlB2I,EAAOl5B,OAAX,CAIAg1B,EAAID,kBAEJ,IAAIvH,EAAOxC,EAAMiE,QAAQiK,EAAO,GAAI,QAEhCC,EAAcv4B,KAAKgvB,SAASkD,MAChClyB,KAAKgvB,SAASkD,IAAIlyB,KAAK43B,YAAYp4B,IAEnC,IAAIg5B,EAAe,CACjB5L,KAAMA,GAGR,GADA5sB,KAAKksB,QAAQ,QAASsM,GAClBA,EAAaC,UACfz4B,KAAKgvB,SAASkD,IAAIqG,OADpB,CAKA,IAAK,IAAIzM,EAAI,EAAGA,EAAIc,EAAKxtB,OAAQ0sB,IAU/B,GATA0M,EAAe,CACb5L,KAAMA,EAAKd,IAKb9rB,KAAKksB,QAAQ,WAAYsM,GAGrBA,EAAaC,UAEf,YADAz4B,KAAKgvB,SAASkD,IAAIqG,GAKtBv4B,KAAKgvB,SAAS9C,QAAQ,SAASA,QAAQ,UAEvClsB,KAAKksB,QAAQ,SAAU,CAAC,EApBxB,CAhBA,CAPA,CA4CF,EAEAiM,EAAW5yB,UAAU8yB,qBAAuB,SAAUP,EAAG1D,EAAK1B,GACxDA,EAAUE,UAIVwB,EAAI8B,OAASN,EAAK/lB,QAAUukB,EAAI8B,OAASN,EAAKhB,WAChD50B,KAAKo4B,aAAahE,EAEtB,EAEA+D,EAAW5yB,UAAUzB,OAAS,SAAU6zB,EAAW/K,GAMjD,GALA+K,EAAUze,KAAKlZ,KAAM4sB,GAErB5sB,KAAK81B,WAAWnG,KAAK,6BAA6BC,SAClD5vB,KAAK81B,WAAW,GAAG/E,UAAUnB,OAAO,kCAEhC5vB,KAAK81B,WAAWnG,KAAK,mCAAmCvwB,OAAS,GACjD,IAAhBwtB,EAAKxtB,QADT,CAKA,IAAIm4B,EAAcv3B,KAAK81B,WAAWnG,KAAK,gCACpCP,KAAK,MAEJsJ,EAAY14B,KAAKiE,QAAQT,IAAI,gBAAgBA,IAAI,kBAEjDi0B,EAAUtN,EACZ,yHAIFsN,EAAQrI,KAAK,QAASsJ,KACtBjB,EAAQrI,KAAK,aAAcsJ,KAC3BjB,EAAQrI,KAAK,mBAAoBmI,GACjCnN,EAAMgE,UAAUqJ,EAAQ,GAAI,OAAQ7K,GAEpC5sB,KAAK81B,WAAWxE,QAAQmG,GACxBz3B,KAAK81B,WAAW,GAAG/E,UAAUC,IAAI,+BAlBjC,CAmBF,EAEOmH,CACT,IAEA/R,EAAGK,OAAO,2BAA2B,CACnC,SACA,WACA,YACC,SAAU0D,EAAGC,EAAOwL,GACrB,SAAS+C,EAAQhB,EAAW3I,EAAU/qB,GACpC0zB,EAAUze,KAAKlZ,KAAMgvB,EAAU/qB,EACjC,CAyOA,OAvOA00B,EAAOpzB,UAAU2pB,OAAS,SAAUyI,GAClC,IAAIiB,EAAc54B,KAAKiE,QAAQT,IAAI,gBAAgBA,IAAI,UACnD6c,EAAU8J,EACZ,oPASFnqB,KAAK64B,iBAAmBxY,EACxBrgB,KAAKqgB,QAAUA,EAAQsP,KAAK,YAE5B3vB,KAAKqgB,QAAQiH,KAAK,eAAgBtnB,KAAKiE,QAAQT,IAAI,iBACnDxD,KAAKqgB,QAAQ+O,KAAK,aAAcwJ,KAEhC,IAAI7B,EAAYY,EAAUze,KAAKlZ,MAK/B,OAHAA,KAAK84B,oBACL/B,EAAUjvB,OAAO9H,KAAK64B,kBAEf9B,CACT,EAEA4B,EAAOpzB,UAAUknB,KAAO,SAAUkL,EAAWjF,EAAWC,GACtD,IAAIjC,EAAO1wB,KAEPg2B,EAAYtD,EAAUlzB,GAAK,WAC3B+3B,EAAc7E,EAAUlzB,GAAK,aAEjCm4B,EAAUze,KAAKlZ,KAAM0yB,EAAWC,GAEhCjC,EAAKrQ,QAAQ+O,KAAK,mBAAoBmI,GAEtC7E,EAAUzY,GAAG,QAAQ,WACnByW,EAAKrQ,QAAQ+O,KAAK,gBAAiB4G,GACnCtF,EAAKrQ,QAAQ6L,QAAQ,QACvB,IAEAwG,EAAUzY,GAAG,SAAS,WACpByW,EAAKrQ,QAAQ6R,IAAI,IACjBxB,EAAKqI,eACLrI,EAAKrQ,QAAQwS,WAAW,iBACxBnC,EAAKrQ,QAAQwS,WAAW,yBACxBnC,EAAKrQ,QAAQ6L,QAAQ,QACvB,IAEAwG,EAAUzY,GAAG,UAAU,WACrByW,EAAKrQ,QAAQiH,KAAK,YAAY,GAE9BoJ,EAAKoI,mBACP,IAEApG,EAAUzY,GAAG,WAAW,WACtByW,EAAKrQ,QAAQiH,KAAK,YAAY,EAChC,IAEAoL,EAAUzY,GAAG,SAAS,SAAUma,GAC9B1D,EAAKrQ,QAAQ6L,QAAQ,QACvB,IAEAwG,EAAUzY,GAAG,iBAAiB,SAAUkS,GAClCA,EAAOS,KAAKmF,UACdrB,EAAKrQ,QAAQ+O,KAAK,wBAAyBjD,EAAOS,KAAKmF,WAEvDrB,EAAKrQ,QAAQwS,WAAW,wBAE5B,IAEA7yB,KAAK81B,WAAW7b,GAAG,UAAW,2BAA2B,SAAUma,GACjE1D,EAAKxE,QAAQ,QAASkI,EACxB,IAEAp0B,KAAK81B,WAAW7b,GAAG,WAAY,2BAA2B,SAAUma,GAClE1D,EAAKuF,YAAY7B,EACnB,IAEAp0B,KAAK81B,WAAW7b,GAAG,UAAW,2BAA2B,SAAUma,GASjE,GARAA,EAAID,kBAEJzD,EAAKxE,QAAQ,WAAYkI,GAEzB1D,EAAKsI,gBAAkB5E,EAAI6E,qBAEjB7E,EAAI8B,QAEFN,EAAKhB,WAAoC,KAAvBlE,EAAKrQ,QAAQ6R,MAAc,CACvD,IAAIgH,EAAkBxI,EAAKoF,WACxBnG,KAAK,8BAA8BwJ,OAEtC,GAAID,EAAgB95B,OAAS,EAAG,CAC9B,IAAI4Z,EAAOoR,EAAMiE,QAAQ6K,EAAgB,GAAI,QAE7CxI,EAAK0I,mBAAmBpgB,GAExBob,EAAIF,gBACN,CACF,CACF,IAEAl0B,KAAK81B,WAAW7b,GAAG,QAAS,2BAA2B,SAAUma,GAC3D1D,EAAKrQ,QAAQ6R,OACfkC,EAAID,iBAER,IAOA,IAAIkF,EAAO9H,SAAS+H,aAChBC,EAAqBF,GAAQA,GAAQ,GAKzCr5B,KAAK81B,WAAW7b,GACd,oBACA,2BACA,SAAUma,GAIJmF,EACF7I,EAAKoF,WAAWY,IAAI,kCAKtBhG,EAAKoF,WAAWY,IAAI,eACtB,IAGF12B,KAAK81B,WAAW7b,GACd,4BACA,2BACA,SAAUma,GAIR,GAAImF,GAAmC,UAAbnF,EAAItiB,KAC5B4e,EAAKoF,WAAWY,IAAI,sCADtB,CAKA,IAAIh2B,EAAM0zB,EAAI8B,MAGVx1B,GAAOk1B,EAAKb,OAASr0B,GAAOk1B,EAAKZ,MAAQt0B,GAAOk1B,EAAKX,KAKrDv0B,GAAOk1B,EAAKf,KAIhBnE,EAAK8I,aAAapF,EAdlB,CAeF,GAEJ,EASAuE,EAAOpzB,UAAUuzB,kBAAoB,SAAUnB,GAC7C33B,KAAKqgB,QAAQ+O,KAAK,WAAYpvB,KAAK81B,WAAW1G,KAAK,aACnDpvB,KAAK81B,WAAW1G,KAAK,WAAY,KACnC,EAEAuJ,EAAOpzB,UAAUwyB,kBAAoB,SAAUJ,EAAWC,GACxD53B,KAAKqgB,QAAQ+O,KAAK,cAAewI,EAAY5lB,KAC/C,EAEA2mB,EAAOpzB,UAAUzB,OAAS,SAAU6zB,EAAW/K,GAC7C,IAAI6M,EAAiBz5B,KAAKqgB,QAAQ,IAAMkR,SAAS8E,cAEjDr2B,KAAKqgB,QAAQ+O,KAAK,cAAe,IAEjCuI,EAAUze,KAAKlZ,KAAM4sB,GAErB5sB,KAAK+4B,eACDU,GACFz5B,KAAKqgB,QAAQ6L,QAAQ,QAEzB,EAEAyM,EAAOpzB,UAAUi0B,aAAe,WAG9B,GAFAx5B,KAAK+4B,gBAEA/4B,KAAKg5B,gBAAiB,CACzB,IAAIU,EAAQ15B,KAAKqgB,QAAQ6R,MAEzBlyB,KAAKksB,QAAQ,QAAS,CACpByN,KAAMD,GAEV,CAEA15B,KAAKg5B,iBAAkB,CACzB,EAEAL,EAAOpzB,UAAU6zB,mBAAqB,SAAUzB,EAAW3e,GACzDhZ,KAAKksB,QAAQ,WAAY,CACvBU,KAAM5T,IAGRhZ,KAAKqgB,QAAQ6R,IAAIlZ,EAAKhH,MACtBhS,KAAKw5B,cACP,EAEAb,EAAOpzB,UAAUwzB,aAAe,WAC9B/4B,KAAKqgB,QAAQuZ,IAAI,QAAS,QAE1B,IAAIC,EAAQ,OAE6B,KAArC75B,KAAKqgB,QAAQ+O,KAAK,iBAGpByK,EAAwB,KAFL75B,KAAKqgB,QAAQ6R,MAAM9yB,OAAS,GAEf,MAGlCY,KAAKqgB,QAAQuZ,IAAI,QAASC,EAC5B,EAEOlB,CACT,IAEAvS,EAAGK,OAAO,iCAAiC,CACzC,aACC,SAAU2D,GACX,SAAS0P,IAAkB,CAkB3B,OAhBAA,EAAav0B,UAAU2pB,OAAS,SAAUyI,GACxC,IAAI7B,EAAa6B,EAAUze,KAAKlZ,MAE5B+5B,EAAoB/5B,KAAKiE,QAAQT,IAAI,sBAAwB,GAUjE,OAR4C,IAAxCu2B,EAAkBj3B,QAAQ,WAC5Bi3B,EAAoBA,EAAkBzzB,QAAQ,QAAS,IAEvD8jB,EAAMoE,0BAA0BsH,EAAW,GAAI91B,KAAKgvB,SAAS,KAG/D8G,EAAWkE,SAASD,GAEbjE,CACT,EAEOgE,CACT,IAEA1T,EAAGK,OAAO,+BAA+B,CACvC,WACC,SAAU0D,GACX,SAAS8P,IAAgB,CA2CzB,OAzCAA,EAAW10B,UAAUknB,KAAO,SAAUkL,EAAWjF,EAAWC,GAC1D,IAAIjC,EAAO1wB,KACPk6B,EAAc,CAChB,OAAQ,UACR,QAAS,UACT,SAAU,YACV,WAAY,cACZ,QAAS,YAGPC,EAAoB,CACtB,UAAW,UAAW,YAAa,cAAe,YAGpDxC,EAAUze,KAAKlZ,KAAM0yB,EAAWC,GAEhCD,EAAUzY,GAAG,KAAK,SAAUrb,EAAMutB,GAEhC,IAAmC,IAA/B+N,EAAYp3B,QAAQlE,GAAxB,CAKAutB,EAASA,GAAU,CAAC,EAGpB,IAAIiI,EAAMjK,EAAEiQ,MAAM,WAAax7B,EAAM,CACnCutB,OAAQA,IAGVuE,EAAK1B,SAAS9C,QAAQkI,IAGmB,IAArC+F,EAAkBr3B,QAAQlE,KAI9ButB,EAAOsM,UAAYrE,EAAI6E,qBAjBvB,CAkBF,GACF,EAEOgB,CACT,IAEA7T,EAAGK,OAAO,sBAAsB,CAC9B,SACA,YACC,SAAU0D,EAAG3D,GACd,SAAS6T,EAAaC,GACpBt6B,KAAKs6B,KAAOA,GAAQ,CAAC,CACvB,CA4BA,OA1BAD,EAAY90B,UAAUg1B,IAAM,WAC1B,OAAOv6B,KAAKs6B,IACd,EAEAD,EAAY90B,UAAU/B,IAAM,SAAU9C,GACpC,OAAOV,KAAKs6B,KAAK55B,EACnB,EAEA25B,EAAY90B,UAAUi1B,OAAS,SAAUC,GACvCz6B,KAAKs6B,KAAOnQ,EAAEqQ,OAAO,CAAC,EAAGC,EAAYF,MAAOv6B,KAAKs6B,KACnD,EAIAD,EAAYK,OAAS,CAAC,EAEtBL,EAAYM,SAAW,SAAUjjB,GAC/B,KAAMA,KAAQ2iB,EAAYK,QAAS,CACjC,IAAIE,EAAepU,EAAQ9O,GAE3B2iB,EAAYK,OAAOhjB,GAAQkjB,CAC7B,CAEA,OAAO,IAAIP,EAAYA,EAAYK,OAAOhjB,GAC5C,EAEO2iB,CACT,IAEAjU,EAAGK,OAAO,qBAAqB,IAE5B,WA80BD,MA70BiB,CACf,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IAId,IAEAL,EAAGK,OAAO,oBAAoB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","sources":["webpack://addon-stakeholder/./node_modules/tslib/tslib.es6.js","webpack://addon-stakeholder/./node_modules/@microsoft/microsoft-graph-client/lib/es/src/RequestMethod.js","webpack://addon-stakeholder/./node_modules/@microsoft/microsoft-graph-client/lib/es/src/content/BatchRequestContent.js","webpack://addon-stakeholder/./node_modules/@microsoft/microsoft-graph-client/lib/es/src/content/BatchResponseContent.js","webpack://addon-stakeholder/./node_modules/@microsoft/microsoft-graph-client/lib/es/src/Constants.js","webpack://addon-stakeholder/./node_modules/@microsoft/microsoft-graph-client/lib/es/src/GraphClientError.js","webpack://addon-stakeholder/./node_modules/@microsoft/microsoft-graph-client/lib/es/src/GraphRequestUtil.js","webpack://addon-stakeholder/./node_modules/@microsoft/microsoft-graph-client/lib/es/src/middleware/MiddlewareControl.js","webpack://addon-stakeholder/./node_modules/@microsoft/microsoft-graph-client/lib/es/src/middleware/MiddlewareUtil.js","webpack://addon-stakeholder/./node_modules/@microsoft/microsoft-graph-client/lib/es/src/middleware/options/AuthenticationHandlerOptions.js","webpack://addon-stakeholder/./node_modules/@microsoft/microsoft-graph-client/lib/es/src/middleware/options/TelemetryHandlerOptions.js","webpack://addon-stakeholder/./node_modules/@microsoft/microsoft-graph-client/lib/es/src/middleware/options/ChaosStrategy.js","webpack://addon-stakeholder/./node_modules/@microsoft/microsoft-graph-client/lib/es/src/middleware/AuthenticationHandler.js","webpack://addon-stakeholder/./node_modules/@microsoft/microsoft-graph-client/lib/es/src/middleware/HTTPMessageHandler.js","webpack://addon-stakeholder/./node_modules/@microsoft/microsoft-graph-client/lib/es/src/middleware/options/RetryHandlerOptions.js","webpack://addon-stakeholder/./node_modules/@microsoft/microsoft-graph-client/lib/es/src/middleware/RetryHandler.js","webpack://addon-stakeholder/./node_modules/@microsoft/microsoft-graph-client/lib/es/src/middleware/options/RedirectHandlerOptions.js","webpack://addon-stakeholder/./node_modules/@microsoft/microsoft-graph-client/lib/es/src/middleware/RedirectHandler.js","webpack://addon-stakeholder/./node_modules/@microsoft/microsoft-graph-client/lib/es/src/middleware/TelemetryHandler.js","webpack://addon-stakeholder/./node_modules/@microsoft/microsoft-graph-client/lib/es/src/middleware/MiddlewareFactory.js","webpack://addon-stakeholder/./node_modules/@microsoft/microsoft-graph-client/lib/es/src/middleware/options/ChaosHandlerOptions.js","webpack://addon-stakeholder/./node_modules/@microsoft/microsoft-graph-client/lib/es/src/middleware/options/ChaosHandlerData.js","webpack://addon-stakeholder/./node_modules/@microsoft/microsoft-graph-client/lib/es/src/middleware/ChaosHandler.js","webpack://addon-stakeholder/./node_modules/@microsoft/microsoft-graph-client/lib/es/src/ResponseType.js","webpack://addon-stakeholder/./node_modules/@microsoft/microsoft-graph-client/lib/es/src/GraphResponseHandler.js","webpack://addon-stakeholder/./node_modules/@microsoft/microsoft-graph-client/lib/es/src/tasks/FileUploadTask/Range.js","webpack://addon-stakeholder/./node_modules/@microsoft/microsoft-graph-client/lib/es/src/tasks/FileUploadTask/UploadResult.js","webpack://addon-stakeholder/./node_modules/@microsoft/microsoft-graph-client/lib/es/src/tasks/LargeFileUploadTask.js","webpack://addon-stakeholder/./node_modules/@microsoft/microsoft-graph-client/lib/es/src/tasks/FileUploadTask/FileObjectClasses/FileUpload.js","webpack://addon-stakeholder/./node_modules/@microsoft/microsoft-graph-client/lib/es/src/tasks/OneDriveLargeFileUploadTaskUtil.js","webpack://addon-stakeholder/./node_modules/@microsoft/microsoft-graph-client/lib/es/src/tasks/OneDriveLargeFileUploadTask.js","webpack://addon-stakeholder/./node_modules/@microsoft/microsoft-graph-client/lib/es/src/tasks/FileUploadTask/FileObjectClasses/StreamUpload.js","webpack://addon-stakeholder/./node_modules/@microsoft/microsoft-graph-client/lib/es/src/tasks/PageIterator.js","webpack://addon-stakeholder/./node_modules/@microsoft/microsoft-graph-client/lib/es/src/CustomAuthenticationProvider.js","webpack://addon-stakeholder/./node_modules/@microsoft/microsoft-graph-client/lib/es/src/GraphError.js","webpack://addon-stakeholder/./node_modules/@microsoft/microsoft-graph-client/lib/es/src/GraphErrorHandler.js","webpack://addon-stakeholder/./node_modules/@microsoft/microsoft-graph-client/lib/es/src/GraphRequest.js","webpack://addon-stakeholder/./node_modules/@microsoft/microsoft-graph-client/lib/es/src/HTTPClient.js","webpack://addon-stakeholder/./node_modules/@microsoft/microsoft-graph-client/lib/es/src/HTTPClientFactory.js","webpack://addon-stakeholder/./node_modules/@microsoft/microsoft-graph-client/lib/es/src/Client.js","webpack://addon-stakeholder/./node_modules/@microsoft/microsoft-graph-client/lib/es/src/ValidatePolyFilling.js","webpack://addon-stakeholder/./node_modules/http-status-codes/build/es/legacy.js","webpack://addon-stakeholder/./node_modules/http-status-codes/build/es/utils.js","webpack://addon-stakeholder/./node_modules/http-status-codes/build/es/utils-functions.js","webpack://addon-stakeholder/./node_modules/http-status-codes/build/es/status-codes.js","webpack://addon-stakeholder/./node_modules/http-status-codes/build/es/reason-phrases.js","webpack://addon-stakeholder/./node_modules/http-status-codes/build/es/index.js","webpack://addon-stakeholder/./node_modules/select2/dist/js/select2.js"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","/**\n * -------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the MIT License.\n * See License in the project root for license information.\n * -------------------------------------------------------------------------------------------\n */\n/**\n * @enum\n * Enum for RequestMethods\n * @property {string} GET - The get request type\n * @property {string} PATCH - The patch request type\n * @property {string} POST - The post request type\n * @property {string} PUT - The put request type\n * @property {string} DELETE - The delete request type\n */\nexport var RequestMethod;\n(function (RequestMethod) {\n RequestMethod[\"GET\"] = \"GET\";\n RequestMethod[\"PATCH\"] = \"PATCH\";\n RequestMethod[\"POST\"] = \"POST\";\n RequestMethod[\"PUT\"] = \"PUT\";\n RequestMethod[\"DELETE\"] = \"DELETE\";\n})(RequestMethod || (RequestMethod = {}));\n//# sourceMappingURL=RequestMethod.js.map","/**\n * -------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the MIT License.\n * See License in the project root for license information.\n * -------------------------------------------------------------------------------------------\n */\nimport { __awaiter } from \"tslib\";\n/**\n * @module BatchRequestContent\n */\nimport { RequestMethod } from \"../RequestMethod\";\n/**\n * @class\n * Class for handling BatchRequestContent\n */\nexport class BatchRequestContent {\n /**\n * @private\n * @static\n * Validates the dependency chain of the requests\n *\n * Note:\n * Individual requests can depend on other individual requests. Currently, requests can only depend on a single other request, and must follow one of these three patterns:\n * 1. Parallel - no individual request states a dependency in the dependsOn property.\n * 2. Serial - all individual requests depend on the previous individual request.\n * 3. Same - all individual requests that state a dependency in the dependsOn property, state the same dependency.\n * As JSON batching matures, these limitations will be removed.\n * @see {@link https://developer.microsoft.com/en-us/graph/docs/concepts/known_issues#json-batching}\n *\n * @param {Map} requests - The map of requests.\n * @returns The boolean indicating the validation status\n */\n static validateDependencies(requests) {\n const isParallel = (reqs) => {\n const iterator = reqs.entries();\n let cur = iterator.next();\n while (!cur.done) {\n const curReq = cur.value[1];\n if (curReq.dependsOn !== undefined && curReq.dependsOn.length > 0) {\n return false;\n }\n cur = iterator.next();\n }\n return true;\n };\n const isSerial = (reqs) => {\n const iterator = reqs.entries();\n let cur = iterator.next();\n const firstRequest = cur.value[1];\n if (firstRequest.dependsOn !== undefined && firstRequest.dependsOn.length > 0) {\n return false;\n }\n let prev = cur;\n cur = iterator.next();\n while (!cur.done) {\n const curReq = cur.value[1];\n if (curReq.dependsOn === undefined || curReq.dependsOn.length !== 1 || curReq.dependsOn[0] !== prev.value[1].id) {\n return false;\n }\n prev = cur;\n cur = iterator.next();\n }\n return true;\n };\n const isSame = (reqs) => {\n const iterator = reqs.entries();\n let cur = iterator.next();\n const firstRequest = cur.value[1];\n let dependencyId;\n if (firstRequest.dependsOn === undefined || firstRequest.dependsOn.length === 0) {\n dependencyId = firstRequest.id;\n }\n else {\n if (firstRequest.dependsOn.length === 1) {\n const fDependencyId = firstRequest.dependsOn[0];\n if (fDependencyId !== firstRequest.id && reqs.has(fDependencyId)) {\n dependencyId = fDependencyId;\n }\n else {\n return false;\n }\n }\n else {\n return false;\n }\n }\n cur = iterator.next();\n while (!cur.done) {\n const curReq = cur.value[1];\n if ((curReq.dependsOn === undefined || curReq.dependsOn.length === 0) && dependencyId !== curReq.id) {\n return false;\n }\n if (curReq.dependsOn !== undefined && curReq.dependsOn.length !== 0) {\n if (curReq.dependsOn.length === 1 && (curReq.id === dependencyId || curReq.dependsOn[0] !== dependencyId)) {\n return false;\n }\n if (curReq.dependsOn.length > 1) {\n return false;\n }\n }\n cur = iterator.next();\n }\n return true;\n };\n if (requests.size === 0) {\n const error = new Error(\"Empty requests map, Please provide at least one request.\");\n error.name = \"Empty Requests Error\";\n throw error;\n }\n return isParallel(requests) || isSerial(requests) || isSame(requests);\n }\n /**\n * @private\n * @static\n * @async\n * Converts Request Object instance to a JSON\n * @param {IsomorphicRequest} request - The IsomorphicRequest Object instance\n * @returns A promise that resolves to JSON representation of a request\n */\n static getRequestData(request) {\n return __awaiter(this, void 0, void 0, function* () {\n const requestData = {\n url: \"\",\n };\n const hasHttpRegex = new RegExp(\"^https?://\");\n // Stripping off hostname, port and url scheme\n requestData.url = hasHttpRegex.test(request.url) ? \"/\" + request.url.split(/.*?\\/\\/.*?\\//)[1] : request.url;\n requestData.method = request.method;\n const headers = {};\n request.headers.forEach((value, key) => {\n headers[key] = value;\n });\n if (Object.keys(headers).length) {\n requestData.headers = headers;\n }\n if (request.method === RequestMethod.PATCH || request.method === RequestMethod.POST || request.method === RequestMethod.PUT) {\n requestData.body = yield BatchRequestContent.getRequestBody(request);\n }\n /**\n * TODO: Check any other property needs to be used from the Request object and add them\n */\n return requestData;\n });\n }\n /**\n * @private\n * @static\n * @async\n * Gets the body of a Request object instance\n * @param {IsomorphicRequest} request - The IsomorphicRequest object instance\n * @returns The Promise that resolves to a body value of a Request\n */\n static getRequestBody(request) {\n return __awaiter(this, void 0, void 0, function* () {\n let bodyParsed = false;\n let body;\n try {\n const cloneReq = request.clone();\n body = yield cloneReq.json();\n bodyParsed = true;\n }\n catch (e) {\n //TODO- Handle empty catches\n }\n if (!bodyParsed) {\n try {\n if (typeof Blob !== \"undefined\") {\n const blob = yield request.blob();\n const reader = new FileReader();\n body = yield new Promise((resolve) => {\n reader.addEventListener(\"load\", () => {\n const dataURL = reader.result;\n /**\n * Some valid dataURL schemes:\n * 1. data:text/vnd-example+xyz;foo=bar;base64,R0lGODdh\n * 2. data:text/plain;charset=UTF-8;page=21,the%20data:1234,5678\n * 3. data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==\n * 4. data:image/png,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==\n * 5. data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==\n * @see Syntax {@link https://en.wikipedia.org/wiki/Data_URI_scheme} for more\n */\n const regex = new RegExp(\"^s*data:(.+?/.+?(;.+?=.+?)*)?(;base64)?,(.*)s*$\");\n const segments = regex.exec(dataURL);\n resolve(segments[4]);\n }, false);\n reader.readAsDataURL(blob);\n });\n }\n else if (typeof Buffer !== \"undefined\") {\n const buffer = yield request.buffer();\n body = buffer.toString(\"base64\");\n }\n bodyParsed = true;\n }\n catch (e) {\n // TODO-Handle empty catches\n }\n }\n return body;\n });\n }\n /**\n * @public\n * @constructor\n * Constructs a BatchRequestContent instance\n * @param {BatchRequestStep[]} [requests] - Array of requests value\n * @returns An instance of a BatchRequestContent\n */\n constructor(requests) {\n this.requests = new Map();\n if (typeof requests !== \"undefined\") {\n const limit = BatchRequestContent.requestLimit;\n if (requests.length > limit) {\n const error = new Error(`Maximum requests limit exceeded, Max allowed number of requests are ${limit}`);\n error.name = \"Limit Exceeded Error\";\n throw error;\n }\n for (const req of requests) {\n this.addRequest(req);\n }\n }\n }\n /**\n * @public\n * Adds a request to the batch request content\n * @param {BatchRequestStep} request - The request value\n * @returns The id of the added request\n */\n addRequest(request) {\n const limit = BatchRequestContent.requestLimit;\n if (request.id === \"\") {\n const error = new Error(`Id for a request is empty, Please provide an unique id`);\n error.name = \"Empty Id For Request\";\n throw error;\n }\n if (this.requests.size === limit) {\n const error = new Error(`Maximum requests limit exceeded, Max allowed number of requests are ${limit}`);\n error.name = \"Limit Exceeded Error\";\n throw error;\n }\n if (this.requests.has(request.id)) {\n const error = new Error(`Adding request with duplicate id ${request.id}, Make the id of the requests unique`);\n error.name = \"Duplicate RequestId Error\";\n throw error;\n }\n this.requests.set(request.id, request);\n return request.id;\n }\n /**\n * @public\n * Removes request from the batch payload and its dependencies from all dependents\n * @param {string} requestId - The id of a request that needs to be removed\n * @returns The boolean indicating removed status\n */\n removeRequest(requestId) {\n const deleteStatus = this.requests.delete(requestId);\n const iterator = this.requests.entries();\n let cur = iterator.next();\n /**\n * Removing dependencies where this request is present as a dependency\n */\n while (!cur.done) {\n const dependencies = cur.value[1].dependsOn;\n if (typeof dependencies !== \"undefined\") {\n const index = dependencies.indexOf(requestId);\n if (index !== -1) {\n dependencies.splice(index, 1);\n }\n if (dependencies.length === 0) {\n delete cur.value[1].dependsOn;\n }\n }\n cur = iterator.next();\n }\n return deleteStatus;\n }\n /**\n * @public\n * @async\n * Serialize content from BatchRequestContent instance\n * @returns The body content to make batch request\n */\n getContent() {\n return __awaiter(this, void 0, void 0, function* () {\n const requests = [];\n const requestBody = {\n requests,\n };\n const iterator = this.requests.entries();\n let cur = iterator.next();\n if (cur.done) {\n const error = new Error(\"No requests added yet, Please add at least one request.\");\n error.name = \"Empty Payload\";\n throw error;\n }\n if (!BatchRequestContent.validateDependencies(this.requests)) {\n const error = new Error(`Invalid dependency found, Dependency should be:\n1. Parallel - no individual request states a dependency in the dependsOn property.\n2. Serial - all individual requests depend on the previous individual request.\n3. Same - all individual requests that state a dependency in the dependsOn property, state the same dependency.`);\n error.name = \"Invalid Dependency\";\n throw error;\n }\n while (!cur.done) {\n const requestStep = cur.value[1];\n const batchRequestData = (yield BatchRequestContent.getRequestData(requestStep.request));\n /**\n * @see{@https://tools.ietf.org/html/rfc7578#section-4.4}\n * TODO- Setting/Defaulting of content-type header to the correct value\n * @see {@link https://developer.microsoft.com/en-us/graph/docs/concepts/json_batching#request-format}\n */\n if (batchRequestData.body !== undefined && (batchRequestData.headers === undefined || batchRequestData.headers[\"content-type\"] === undefined)) {\n const error = new Error(`Content-type header is not mentioned for request #${requestStep.id}, For request having body, Content-type header should be mentioned`);\n error.name = \"Invalid Content-type header\";\n throw error;\n }\n batchRequestData.id = requestStep.id;\n if (requestStep.dependsOn !== undefined && requestStep.dependsOn.length > 0) {\n batchRequestData.dependsOn = requestStep.dependsOn;\n }\n requests.push(batchRequestData);\n cur = iterator.next();\n }\n requestBody.requests = requests;\n return requestBody;\n });\n }\n /**\n * @public\n * Adds a dependency for a given dependent request\n * @param {string} dependentId - The id of the dependent request\n * @param {string} [dependencyId] - The id of the dependency request, if not specified the preceding request will be considered as a dependency\n * @returns Nothing\n */\n addDependency(dependentId, dependencyId) {\n if (!this.requests.has(dependentId)) {\n const error = new Error(`Dependent ${dependentId} does not exists, Please check the id`);\n error.name = \"Invalid Dependent\";\n throw error;\n }\n if (typeof dependencyId !== \"undefined\" && !this.requests.has(dependencyId)) {\n const error = new Error(`Dependency ${dependencyId} does not exists, Please check the id`);\n error.name = \"Invalid Dependency\";\n throw error;\n }\n if (typeof dependencyId !== \"undefined\") {\n const dependent = this.requests.get(dependentId);\n if (dependent.dependsOn === undefined) {\n dependent.dependsOn = [];\n }\n if (dependent.dependsOn.indexOf(dependencyId) !== -1) {\n const error = new Error(`Dependency ${dependencyId} is already added for the request ${dependentId}`);\n error.name = \"Duplicate Dependency\";\n throw error;\n }\n dependent.dependsOn.push(dependencyId);\n }\n else {\n const iterator = this.requests.entries();\n let prev;\n let cur = iterator.next();\n while (!cur.done && cur.value[1].id !== dependentId) {\n prev = cur;\n cur = iterator.next();\n }\n if (typeof prev !== \"undefined\") {\n const dId = prev.value[0];\n if (cur.value[1].dependsOn === undefined) {\n cur.value[1].dependsOn = [];\n }\n if (cur.value[1].dependsOn.indexOf(dId) !== -1) {\n const error = new Error(`Dependency ${dId} is already added for the request ${dependentId}`);\n error.name = \"Duplicate Dependency\";\n throw error;\n }\n cur.value[1].dependsOn.push(dId);\n }\n else {\n const error = new Error(`Can't add dependency ${dependencyId}, There is only a dependent request in the batch`);\n error.name = \"Invalid Dependency Addition\";\n throw error;\n }\n }\n }\n /**\n * @public\n * Removes a dependency for a given dependent request id\n * @param {string} dependentId - The id of the dependent request\n * @param {string} [dependencyId] - The id of the dependency request, if not specified will remove all the dependencies of that request\n * @returns The boolean indicating removed status\n */\n removeDependency(dependentId, dependencyId) {\n const request = this.requests.get(dependentId);\n if (typeof request === \"undefined\" || request.dependsOn === undefined || request.dependsOn.length === 0) {\n return false;\n }\n if (typeof dependencyId !== \"undefined\") {\n const index = request.dependsOn.indexOf(dependencyId);\n if (index === -1) {\n return false;\n }\n request.dependsOn.splice(index, 1);\n return true;\n }\n else {\n delete request.dependsOn;\n return true;\n }\n }\n}\n/**\n * @private\n * @static\n * Limit for number of requests {@link - https://developer.microsoft.com/en-us/graph/docs/concepts/known_issues#json-batching}\n */\nBatchRequestContent.requestLimit = 20;\n//# sourceMappingURL=BatchRequestContent.js.map","/**\n * -------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the MIT License.\n * See License in the project root for license information.\n * -------------------------------------------------------------------------------------------\n */\n/**\n * @class\n * Class that handles BatchResponseContent\n */\nexport class BatchResponseContent {\n /**\n * @public\n * @constructor\n * Creates the BatchResponseContent instance\n * @param {BatchResponseBody} response - The response body returned for batch request from server\n * @returns An instance of a BatchResponseContent\n */\n constructor(response) {\n this.responses = new Map();\n this.update(response);\n }\n /**\n * @private\n * Creates native Response object from the json representation of it.\n * @param {KeyValuePairObject} responseJSON - The response json value\n * @returns The Response Object instance\n */\n createResponseObject(responseJSON) {\n const body = responseJSON.body;\n const options = {};\n options.status = responseJSON.status;\n if (responseJSON.statusText !== undefined) {\n options.statusText = responseJSON.statusText;\n }\n options.headers = responseJSON.headers;\n if (options.headers !== undefined && options.headers[\"Content-Type\"] !== undefined) {\n if (options.headers[\"Content-Type\"].split(\";\")[0] === \"application/json\") {\n const bodyString = JSON.stringify(body);\n return new Response(bodyString, options);\n }\n }\n return new Response(body, options);\n }\n /**\n * @public\n * Updates the Batch response content instance with given responses.\n * @param {BatchResponseBody} response - The response json representing batch response message\n * @returns Nothing\n */\n update(response) {\n this.nextLink = response[\"@odata.nextLink\"];\n const responses = response.responses;\n for (let i = 0, l = responses.length; i < l; i++) {\n this.responses.set(responses[i].id, this.createResponseObject(responses[i]));\n }\n }\n /**\n * @public\n * To get the response of a request for a given request id\n * @param {string} requestId - The request id value\n * @returns The Response object instance for the particular request\n */\n getResponseById(requestId) {\n return this.responses.get(requestId);\n }\n /**\n * @public\n * To get all the responses of the batch request\n * @returns The Map of id and Response objects\n */\n getResponses() {\n return this.responses;\n }\n /**\n * @public\n * To get the iterator for the responses\n * @returns The Iterable generator for the response objects\n */\n *getResponsesIterator() {\n const iterator = this.responses.entries();\n let cur = iterator.next();\n while (!cur.done) {\n yield cur.value;\n cur = iterator.next();\n }\n }\n}\n//# sourceMappingURL=BatchResponseContent.js.map","/**\n * -------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the MIT License.\n * See License in the project root for license information.\n * -------------------------------------------------------------------------------------------\n */\n/**\n * @module Constants\n */\n/**\n * @constant\n * A Default API endpoint version for a request\n */\nexport const GRAPH_API_VERSION = \"v1.0\";\n/**\n * @constant\n * A Default base url for a request\n */\nexport const GRAPH_BASE_URL = \"https://graph.microsoft.com/\";\n/**\n * To hold list of the service root endpoints for Microsoft Graph and Graph Explorer for each national cloud.\n * Set(iterable:Object) is not supported in Internet Explorer. The consumer is recommended to use a suitable polyfill.\n */\nexport const GRAPH_URLS = new Set([\"graph.microsoft.com\", \"graph.microsoft.us\", \"dod-graph.microsoft.us\", \"graph.microsoft.de\", \"microsoftgraph.chinacloudapi.cn\", \"canary.graph.microsoft.com\"]);\n//# sourceMappingURL=Constants.js.map","/**\n * -------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the MIT License.\n * See License in the project root for license information.\n * -------------------------------------------------------------------------------------------\n */\n/**\n * @module GraphClientError\n */\n/**\n * @class\n * Create GraphClientError object to handle client-side errors\n * encountered within the JavaScript Client SDK.\n * Whereas GraphError Class should be used to handle errors in the response from the Graph API.\n */\nexport class GraphClientError extends Error {\n /**\n * @public\n * @static\n * @async\n * To set the GraphClientError object\n * @param {any} error - The error returned encountered by the Graph JavaScript Client SDK while processing request\n * @returns GraphClientError object set to the error passed\n */\n static setGraphClientError(error) {\n let graphClientError;\n if (error instanceof Error) {\n graphClientError = error;\n }\n else {\n graphClientError = new GraphClientError();\n graphClientError.customError = error;\n }\n return graphClientError;\n }\n /**\n * @public\n * @constructor\n * Creates an instance of GraphClientError\n * @param {string} message? - Error message\n * @returns An instance of GraphClientError\n */\n constructor(message) {\n super(message);\n Object.setPrototypeOf(this, GraphClientError.prototype);\n }\n}\n//# sourceMappingURL=GraphClientError.js.map","/**\n * -------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the MIT License.\n * See License in the project root for license information.\n * -------------------------------------------------------------------------------------------\n */\n/**\n * @module GraphRequestUtil\n */\nimport { GRAPH_URLS } from \"./Constants\";\nimport { GraphClientError } from \"./GraphClientError\";\n/**\n * To hold list of OData query params\n */\nexport const oDataQueryNames = [\"$select\", \"$expand\", \"$orderby\", \"$filter\", \"$top\", \"$skip\", \"$skipToken\", \"$count\"];\n/**\n * To construct the URL by appending the segments with \"/\"\n * @param {string[]} urlSegments - The array of strings\n * @returns The constructed URL string\n */\nexport const urlJoin = (urlSegments) => {\n const removePostSlash = (s) => s.replace(/\\/+$/, \"\");\n const removePreSlash = (s) => s.replace(/^\\/+/, \"\");\n const joiner = (pre, cur) => [removePostSlash(pre), removePreSlash(cur)].join(\"/\");\n const parts = Array.prototype.slice.call(urlSegments);\n return parts.reduce(joiner);\n};\n/**\n * Serializes the content\n * @param {any} content - The content value that needs to be serialized\n * @returns The serialized content\n *\n * Note:\n * This conversion is required due to the following reasons:\n * Body parameter of Request method of isomorphic-fetch only accepts Blob, ArrayBuffer, FormData, TypedArrays string.\n * Node.js platform does not support Blob, FormData. Javascript File object inherits from Blob so it is also not supported in node. Therefore content of type Blob, File, FormData will only come from browsers.\n * Parallel to ArrayBuffer in javascript, node provides Buffer interface. Node's Buffer is able to send the arbitrary binary data to the server successfully for both Browser and Node platform. Whereas sending binary data via ArrayBuffer or TypedArrays was only possible using Browser. To support both Node and Browser, `serializeContent` converts TypedArrays or ArrayBuffer to `Node Buffer`.\n * If the data received is in JSON format, `serializeContent` converts the JSON to string.\n */\nexport const serializeContent = (content) => {\n const className = content && content.constructor && content.constructor.name;\n if (className === \"Buffer\" || className === \"Blob\" || className === \"File\" || className === \"FormData\" || typeof content === \"string\") {\n return content;\n }\n if (className === \"ArrayBuffer\") {\n content = Buffer.from(content);\n }\n else if (className === \"Int8Array\" || className === \"Int16Array\" || className === \"Int32Array\" || className === \"Uint8Array\" || className === \"Uint16Array\" || className === \"Uint32Array\" || className === \"Uint8ClampedArray\" || className === \"Float32Array\" || className === \"Float64Array\" || className === \"DataView\") {\n content = Buffer.from(content.buffer);\n }\n else {\n try {\n content = JSON.stringify(content);\n }\n catch (error) {\n throw new Error(\"Unable to stringify the content\");\n }\n }\n return content;\n};\n/**\n * Checks if the url is one of the service root endpoints for Microsoft Graph and Graph Explorer.\n * @param {string} url - The url to be verified\n * @returns {boolean} - Returns true if the url is a Graph URL\n */\nexport const isGraphURL = (url) => {\n return isValidEndpoint(url);\n};\n/**\n * Checks if the url is for one of the custom hosts provided during client initialization\n * @param {string} url - The url to be verified\n * @param {Set} customHosts - The url to be verified\n * @returns {boolean} - Returns true if the url is a for a custom host\n */\nexport const isCustomHost = (url, customHosts) => {\n customHosts.forEach((host) => isCustomHostValid(host));\n return isValidEndpoint(url, customHosts);\n};\n/**\n * Checks if the url is for one of the provided hosts.\n * @param {string} url - The url to be verified\n * @param {Set} allowedHosts - A set of hosts.\n * @returns {boolean} - Returns true is for one of the provided endpoints.\n */\nconst isValidEndpoint = (url, allowedHosts = GRAPH_URLS) => {\n // Valid Graph URL pattern - https://graph.microsoft.com/{version}/{resource}?{query-parameters}\n // Valid Graph URL example - https://graph.microsoft.com/v1.0/\n url = url.toLowerCase();\n if (url.indexOf(\"https://\") !== -1) {\n url = url.replace(\"https://\", \"\");\n // Find where the host ends\n const startofPortNoPos = url.indexOf(\":\");\n const endOfHostStrPos = url.indexOf(\"/\");\n let hostName = \"\";\n if (endOfHostStrPos !== -1) {\n if (startofPortNoPos !== -1 && startofPortNoPos < endOfHostStrPos) {\n hostName = url.substring(0, startofPortNoPos);\n return allowedHosts.has(hostName);\n }\n // Parse out the host\n hostName = url.substring(0, endOfHostStrPos);\n return allowedHosts.has(hostName);\n }\n }\n return false;\n};\n/**\n * Throws error if the string is not a valid host/hostname and contains other url parts.\n * @param {string} host - The host to be verified\n */\nconst isCustomHostValid = (host) => {\n if (host.indexOf(\"/\") !== -1) {\n throw new GraphClientError(\"Please add only hosts or hostnames to the CustomHosts config. If the url is `http://example.com:3000/`, host is `example:3000`\");\n }\n};\n//# sourceMappingURL=GraphRequestUtil.js.map","/**\n * -------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the MIT License.\n * See License in the project root for license information.\n * -------------------------------------------------------------------------------------------\n */\n/**\n * @class\n * Class representing MiddlewareControl\n */\nexport class MiddlewareControl {\n /**\n * @public\n * @constructor\n * Creates an instance of MiddlewareControl\n * @param {MiddlewareOptions[]} [middlewareOptions = []] - The array of middlewareOptions\n * @returns The instance of MiddlewareControl\n */\n constructor(middlewareOptions = []) {\n this.middlewareOptions = new Map();\n for (const option of middlewareOptions) {\n const fn = option.constructor;\n this.middlewareOptions.set(fn, option);\n }\n }\n /**\n * @public\n * To get the middleware option using the class of the option\n * @param {Function} fn - The class of the strongly typed option class\n * @returns The middleware option\n * @example\n * // if you wanted to return the middleware option associated with this class (MiddlewareControl)\n * // call this function like this:\n * getMiddlewareOptions(MiddlewareControl)\n */\n getMiddlewareOptions(fn) {\n return this.middlewareOptions.get(fn);\n }\n /**\n * @public\n * To set the middleware options using the class of the option\n * @param {Function} fn - The class of the strongly typed option class\n * @param {MiddlewareOptions} option - The strongly typed middleware option\n * @returns nothing\n */\n setMiddlewareOptions(fn, option) {\n this.middlewareOptions.set(fn, option);\n }\n}\n//# sourceMappingURL=MiddlewareControl.js.map","/**\n * -------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the MIT License.\n * See License in the project root for license information.\n * -------------------------------------------------------------------------------------------\n */\nimport { __awaiter } from \"tslib\";\n/**\n * @constant\n * To generate the UUID\n * @returns The UUID string\n */\nexport const generateUUID = () => {\n let uuid = \"\";\n for (let j = 0; j < 32; j++) {\n if (j === 8 || j === 12 || j === 16 || j === 20) {\n uuid += \"-\";\n }\n uuid += Math.floor(Math.random() * 16).toString(16);\n }\n return uuid;\n};\n/**\n * @constant\n * To get the request header from the request\n * @param {RequestInfo} request - The request object or the url string\n * @param {FetchOptions|undefined} options - The request options object\n * @param {string} key - The header key string\n * @returns A header value for the given key from the request\n */\nexport const getRequestHeader = (request, options, key) => {\n let value = null;\n if (typeof Request !== \"undefined\" && request instanceof Request) {\n value = request.headers.get(key);\n }\n else if (typeof options !== \"undefined\" && options.headers !== undefined) {\n if (typeof Headers !== \"undefined\" && options.headers instanceof Headers) {\n value = options.headers.get(key);\n }\n else if (options.headers instanceof Array) {\n const headers = options.headers;\n for (let i = 0, l = headers.length; i < l; i++) {\n if (headers[i][0] === key) {\n value = headers[i][1];\n break;\n }\n }\n }\n else if (options.headers[key] !== undefined) {\n value = options.headers[key];\n }\n }\n return value;\n};\n/**\n * @constant\n * To set the header value to the given request\n * @param {RequestInfo} request - The request object or the url string\n * @param {FetchOptions|undefined} options - The request options object\n * @param {string} key - The header key string\n * @param {string } value - The header value string\n * @returns Nothing\n */\nexport const setRequestHeader = (request, options, key, value) => {\n if (typeof Request !== \"undefined\" && request instanceof Request) {\n request.headers.set(key, value);\n }\n else if (typeof options !== \"undefined\") {\n if (options.headers === undefined) {\n options.headers = new Headers({\n [key]: value,\n });\n }\n else {\n if (typeof Headers !== \"undefined\" && options.headers instanceof Headers) {\n options.headers.set(key, value);\n }\n else if (options.headers instanceof Array) {\n let i = 0;\n const l = options.headers.length;\n for (; i < l; i++) {\n const header = options.headers[i];\n if (header[0] === key) {\n header[1] = value;\n break;\n }\n }\n if (i === l) {\n options.headers.push([key, value]);\n }\n }\n else {\n Object.assign(options.headers, { [key]: value });\n }\n }\n }\n};\n/**\n * @constant\n * To append the header value to the given request\n * @param {RequestInfo} request - The request object or the url string\n * @param {FetchOptions|undefined} options - The request options object\n * @param {string} key - The header key string\n * @param {string } value - The header value string\n * @returns Nothing\n */\nexport const appendRequestHeader = (request, options, key, value) => {\n if (typeof Request !== \"undefined\" && request instanceof Request) {\n request.headers.append(key, value);\n }\n else if (typeof options !== \"undefined\") {\n if (options.headers === undefined) {\n options.headers = new Headers({\n [key]: value,\n });\n }\n else {\n if (typeof Headers !== \"undefined\" && options.headers instanceof Headers) {\n options.headers.append(key, value);\n }\n else if (options.headers instanceof Array) {\n options.headers.push([key, value]);\n }\n else if (options.headers === undefined) {\n options.headers = { [key]: value };\n }\n else if (options.headers[key] === undefined) {\n options.headers[key] = value;\n }\n else {\n options.headers[key] += `, ${value}`;\n }\n }\n }\n};\n/**\n * @constant\n * To clone the request with the new url\n * @param {string} url - The new url string\n * @param {Request} request - The request object\n * @returns A promise that resolves to request object\n */\nexport const cloneRequestWithNewUrl = (newUrl, request) => __awaiter(void 0, void 0, void 0, function* () {\n const body = request.headers.get(\"Content-Type\") ? yield request.blob() : yield Promise.resolve(undefined);\n const { method, headers, referrer, referrerPolicy, mode, credentials, cache, redirect, integrity, keepalive, signal } = request;\n return new Request(newUrl, { method, headers, body, referrer, referrerPolicy, mode, credentials, cache, redirect, integrity, keepalive, signal });\n});\n//# sourceMappingURL=MiddlewareUtil.js.map","/**\n * -------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the MIT License.\n * See License in the project root for license information.\n * -------------------------------------------------------------------------------------------\n */\n/**\n * @class\n * @implements MiddlewareOptions\n * Class representing AuthenticationHandlerOptions\n */\nexport class AuthenticationHandlerOptions {\n /**\n * @public\n * @constructor\n * To create an instance of AuthenticationHandlerOptions\n * @param {AuthenticationProvider} [authenticationProvider] - The authentication provider instance\n * @param {AuthenticationProviderOptions} [authenticationProviderOptions] - The authentication provider options instance\n * @returns An instance of AuthenticationHandlerOptions\n */\n constructor(authenticationProvider, authenticationProviderOptions) {\n this.authenticationProvider = authenticationProvider;\n this.authenticationProviderOptions = authenticationProviderOptions;\n }\n}\n//# sourceMappingURL=AuthenticationHandlerOptions.js.map","/**\n * -------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the MIT License.\n * See License in the project root for license information.\n * -------------------------------------------------------------------------------------------\n */\nimport { MiddlewareControl } from \"../MiddlewareControl\";\n/**\n * @enum\n * @property {number} NONE - The hexadecimal flag value for nothing enabled\n * @property {number} REDIRECT_HANDLER_ENABLED - The hexadecimal flag value for redirect handler enabled\n * @property {number} RETRY_HANDLER_ENABLED - The hexadecimal flag value for retry handler enabled\n * @property {number} AUTHENTICATION_HANDLER_ENABLED - The hexadecimal flag value for the authentication handler enabled\n */\nexport var FeatureUsageFlag;\n(function (FeatureUsageFlag) {\n /* eslint-disable @typescript-eslint/naming-convention */\n FeatureUsageFlag[FeatureUsageFlag[\"NONE\"] = 0] = \"NONE\";\n FeatureUsageFlag[FeatureUsageFlag[\"REDIRECT_HANDLER_ENABLED\"] = 1] = \"REDIRECT_HANDLER_ENABLED\";\n FeatureUsageFlag[FeatureUsageFlag[\"RETRY_HANDLER_ENABLED\"] = 2] = \"RETRY_HANDLER_ENABLED\";\n FeatureUsageFlag[FeatureUsageFlag[\"AUTHENTICATION_HANDLER_ENABLED\"] = 4] = \"AUTHENTICATION_HANDLER_ENABLED\";\n /* eslint-enable @typescript-eslint/naming-convention */\n})(FeatureUsageFlag || (FeatureUsageFlag = {}));\n/**\n * @class\n * @implements MiddlewareOptions\n * Class for TelemetryHandlerOptions\n */\nexport class TelemetryHandlerOptions {\n constructor() {\n /**\n * @private\n * A member to hold the OR of feature usage flags\n */\n this.featureUsage = FeatureUsageFlag.NONE;\n }\n /**\n * @public\n * @static\n * To update the feature usage in the context object\n * @param {Context} context - The request context object containing middleware options\n * @param {FeatureUsageFlag} flag - The flag value\n * @returns nothing\n */\n static updateFeatureUsageFlag(context, flag) {\n let options;\n if (context.middlewareControl instanceof MiddlewareControl) {\n options = context.middlewareControl.getMiddlewareOptions(TelemetryHandlerOptions);\n }\n else {\n context.middlewareControl = new MiddlewareControl();\n }\n if (typeof options === \"undefined\") {\n options = new TelemetryHandlerOptions();\n context.middlewareControl.setMiddlewareOptions(TelemetryHandlerOptions, options);\n }\n options.setFeatureUsage(flag);\n }\n /**\n * @private\n * To set the feature usage flag\n * @param {FeatureUsageFlag} flag - The flag value\n * @returns nothing\n */\n setFeatureUsage(flag) {\n this.featureUsage = this.featureUsage | flag;\n }\n /**\n * @public\n * To get the feature usage\n * @returns A feature usage flag as hexadecimal string\n */\n getFeatureUsage() {\n return this.featureUsage.toString(16);\n }\n}\n//# sourceMappingURL=TelemetryHandlerOptions.js.map","/**\n * -------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the MIT License.\n * See License in the project root for license information.\n * -------------------------------------------------------------------------------------------\n */\n/**\n * @module ChaosStrategy\n */\n/**\n * Strategy used for Testing Handler\n * @enum\n */\nexport var ChaosStrategy;\n(function (ChaosStrategy) {\n ChaosStrategy[ChaosStrategy[\"MANUAL\"] = 0] = \"MANUAL\";\n ChaosStrategy[ChaosStrategy[\"RANDOM\"] = 1] = \"RANDOM\";\n})(ChaosStrategy || (ChaosStrategy = {}));\n//# sourceMappingURL=ChaosStrategy.js.map","/**\n * -------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the MIT License.\n * See License in the project root for license information.\n * -------------------------------------------------------------------------------------------\n */\nimport { __awaiter } from \"tslib\";\n/**\n * @module AuthenticationHandler\n */\nimport { isCustomHost, isGraphURL } from \"../GraphRequestUtil\";\nimport { MiddlewareControl } from \"./MiddlewareControl\";\nimport { appendRequestHeader } from \"./MiddlewareUtil\";\nimport { AuthenticationHandlerOptions } from \"./options/AuthenticationHandlerOptions\";\nimport { FeatureUsageFlag, TelemetryHandlerOptions } from \"./options/TelemetryHandlerOptions\";\n/**\n * @class\n * @implements Middleware\n * Class representing AuthenticationHandler\n */\nexport class AuthenticationHandler {\n /**\n * @public\n * @constructor\n * Creates an instance of AuthenticationHandler\n * @param {AuthenticationProvider} authenticationProvider - The authentication provider for the authentication handler\n */\n constructor(authenticationProvider) {\n this.authenticationProvider = authenticationProvider;\n }\n /**\n * @public\n * @async\n * To execute the current middleware\n * @param {Context} context - The context object of the request\n * @returns A Promise that resolves to nothing\n */\n execute(context) {\n return __awaiter(this, void 0, void 0, function* () {\n const url = typeof context.request === \"string\" ? context.request : context.request.url;\n if (isGraphURL(url) || (context.customHosts && isCustomHost(url, context.customHosts))) {\n let options;\n if (context.middlewareControl instanceof MiddlewareControl) {\n options = context.middlewareControl.getMiddlewareOptions(AuthenticationHandlerOptions);\n }\n let authenticationProvider;\n let authenticationProviderOptions;\n if (options) {\n authenticationProvider = options.authenticationProvider;\n authenticationProviderOptions = options.authenticationProviderOptions;\n }\n if (!authenticationProvider) {\n authenticationProvider = this.authenticationProvider;\n }\n const token = yield authenticationProvider.getAccessToken(authenticationProviderOptions);\n const bearerKey = `Bearer ${token}`;\n appendRequestHeader(context.request, context.options, AuthenticationHandler.AUTHORIZATION_HEADER, bearerKey);\n TelemetryHandlerOptions.updateFeatureUsageFlag(context, FeatureUsageFlag.AUTHENTICATION_HANDLER_ENABLED);\n }\n else {\n if (context.options.headers) {\n delete context.options.headers[AuthenticationHandler.AUTHORIZATION_HEADER];\n }\n }\n return yield this.nextMiddleware.execute(context);\n });\n }\n /**\n * @public\n * To set the next middleware in the chain\n * @param {Middleware} next - The middleware instance\n * @returns Nothing\n */\n setNext(next) {\n this.nextMiddleware = next;\n }\n}\n/**\n * @private\n * A member representing the authorization header name\n */\nAuthenticationHandler.AUTHORIZATION_HEADER = \"Authorization\";\n//# sourceMappingURL=AuthenticationHandler.js.map","/**\n * -------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the MIT License.\n * See License in the project root for license information.\n * -------------------------------------------------------------------------------------------\n */\nimport { __awaiter } from \"tslib\";\n/**\n * @class\n * @implements Middleware\n * Class for HTTPMessageHandler\n */\nexport class HTTPMessageHandler {\n /**\n * @public\n * @async\n * To execute the current middleware\n * @param {Context} context - The request context object\n * @returns A promise that resolves to nothing\n */\n execute(context) {\n return __awaiter(this, void 0, void 0, function* () {\n context.response = yield fetch(context.request, context.options);\n });\n }\n}\n//# sourceMappingURL=HTTPMessageHandler.js.map","/**\n * -------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the MIT License.\n * See License in the project root for license information.\n * -------------------------------------------------------------------------------------------\n */\n/**\n * @class\n * @implements MiddlewareOptions\n * Class for RetryHandlerOptions\n */\nexport class RetryHandlerOptions {\n /**\n * @public\n * @constructor\n * To create an instance of RetryHandlerOptions\n * @param {number} [delay = RetryHandlerOptions.DEFAULT_DELAY] - The delay value in seconds\n * @param {number} [maxRetries = RetryHandlerOptions.DEFAULT_MAX_RETRIES] - The maxRetries value\n * @param {ShouldRetry} [shouldRetry = RetryHandlerOptions.DEFAULT_SHOULD_RETRY] - The shouldRetry callback function\n * @returns An instance of RetryHandlerOptions\n */\n constructor(delay = RetryHandlerOptions.DEFAULT_DELAY, maxRetries = RetryHandlerOptions.DEFAULT_MAX_RETRIES, shouldRetry = RetryHandlerOptions.defaultShouldRetry) {\n if (delay > RetryHandlerOptions.MAX_DELAY && maxRetries > RetryHandlerOptions.MAX_MAX_RETRIES) {\n const error = new Error(`Delay and MaxRetries should not be more than ${RetryHandlerOptions.MAX_DELAY} and ${RetryHandlerOptions.MAX_MAX_RETRIES}`);\n error.name = \"MaxLimitExceeded\";\n throw error;\n }\n else if (delay > RetryHandlerOptions.MAX_DELAY) {\n const error = new Error(`Delay should not be more than ${RetryHandlerOptions.MAX_DELAY}`);\n error.name = \"MaxLimitExceeded\";\n throw error;\n }\n else if (maxRetries > RetryHandlerOptions.MAX_MAX_RETRIES) {\n const error = new Error(`MaxRetries should not be more than ${RetryHandlerOptions.MAX_MAX_RETRIES}`);\n error.name = \"MaxLimitExceeded\";\n throw error;\n }\n else if (delay < 0 && maxRetries < 0) {\n const error = new Error(`Delay and MaxRetries should not be negative`);\n error.name = \"MinExpectationNotMet\";\n throw error;\n }\n else if (delay < 0) {\n const error = new Error(`Delay should not be negative`);\n error.name = \"MinExpectationNotMet\";\n throw error;\n }\n else if (maxRetries < 0) {\n const error = new Error(`MaxRetries should not be negative`);\n error.name = \"MinExpectationNotMet\";\n throw error;\n }\n this.delay = Math.min(delay, RetryHandlerOptions.MAX_DELAY);\n this.maxRetries = Math.min(maxRetries, RetryHandlerOptions.MAX_MAX_RETRIES);\n this.shouldRetry = shouldRetry;\n }\n /**\n * @public\n * To get the maximum delay\n * @returns A maximum delay\n */\n getMaxDelay() {\n return RetryHandlerOptions.MAX_DELAY;\n }\n}\n/**\n * @private\n * @static\n * A member holding default delay value in seconds\n */\nRetryHandlerOptions.DEFAULT_DELAY = 3;\n/**\n * @private\n * @static\n * A member holding default maxRetries value\n */\nRetryHandlerOptions.DEFAULT_MAX_RETRIES = 3;\n/**\n * @private\n * @static\n * A member holding maximum delay value in seconds\n */\nRetryHandlerOptions.MAX_DELAY = 180;\n/**\n * @private\n * @static\n * A member holding maximum maxRetries value\n */\nRetryHandlerOptions.MAX_MAX_RETRIES = 10;\n/**\n * @private\n * A member holding default shouldRetry callback\n */\nRetryHandlerOptions.defaultShouldRetry = () => true;\n//# sourceMappingURL=RetryHandlerOptions.js.map","/**\n * -------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the MIT License.\n * See License in the project root for license information.\n * -------------------------------------------------------------------------------------------\n */\nimport { __awaiter } from \"tslib\";\nimport { RequestMethod } from \"../RequestMethod\";\nimport { MiddlewareControl } from \"./MiddlewareControl\";\nimport { getRequestHeader, setRequestHeader } from \"./MiddlewareUtil\";\nimport { RetryHandlerOptions } from \"./options/RetryHandlerOptions\";\nimport { FeatureUsageFlag, TelemetryHandlerOptions } from \"./options/TelemetryHandlerOptions\";\n/**\n * @class\n * @implements Middleware\n * Class for RetryHandler\n */\nexport class RetryHandler {\n /**\n * @public\n * @constructor\n * To create an instance of RetryHandler\n * @param {RetryHandlerOptions} [options = new RetryHandlerOptions()] - The retry handler options value\n * @returns An instance of RetryHandler\n */\n constructor(options = new RetryHandlerOptions()) {\n this.options = options;\n }\n /**\n *\n * @private\n * To check whether the response has the retry status code\n * @param {Response} response - The response object\n * @returns Whether the response has retry status code or not\n */\n isRetry(response) {\n return RetryHandler.RETRY_STATUS_CODES.indexOf(response.status) !== -1;\n }\n /**\n * @private\n * To check whether the payload is buffered or not\n * @param {RequestInfo} request - The url string or the request object value\n * @param {FetchOptions} options - The options of a request\n * @returns Whether the payload is buffered or not\n */\n isBuffered(request, options) {\n const method = typeof request === \"string\" ? options.method : request.method;\n const isPutPatchOrPost = method === RequestMethod.PUT || method === RequestMethod.PATCH || method === RequestMethod.POST;\n if (isPutPatchOrPost) {\n const isStream = getRequestHeader(request, options, \"Content-Type\") === \"application/octet-stream\";\n if (isStream) {\n return false;\n }\n }\n return true;\n }\n /**\n * @private\n * To get the delay for a retry\n * @param {Response} response - The response object\n * @param {number} retryAttempts - The current attempt count\n * @param {number} delay - The delay value in seconds\n * @returns A delay for a retry\n */\n getDelay(response, retryAttempts, delay) {\n const getRandomness = () => Number(Math.random().toFixed(3));\n const retryAfter = response.headers !== undefined ? response.headers.get(RetryHandler.RETRY_AFTER_HEADER) : null;\n let newDelay;\n if (retryAfter !== null) {\n if (Number.isNaN(Number(retryAfter))) {\n newDelay = Math.round((new Date(retryAfter).getTime() - Date.now()) / 1000);\n }\n else {\n newDelay = Number(retryAfter);\n }\n }\n else {\n // Adding randomness to avoid retrying at a same\n newDelay = retryAttempts >= 2 ? this.getExponentialBackOffTime(retryAttempts) + delay + getRandomness() : delay + getRandomness();\n }\n return Math.min(newDelay, this.options.getMaxDelay() + getRandomness());\n }\n /**\n * @private\n * To get an exponential back off value\n * @param {number} attempts - The current attempt count\n * @returns An exponential back off value\n */\n getExponentialBackOffTime(attempts) {\n return Math.round((1 / 2) * (Math.pow(2, attempts) - 1));\n }\n /**\n * @private\n * @async\n * To add delay for the execution\n * @param {number} delaySeconds - The delay value in seconds\n * @returns Nothing\n */\n sleep(delaySeconds) {\n return __awaiter(this, void 0, void 0, function* () {\n const delayMilliseconds = delaySeconds * 1000;\n return new Promise((resolve) => setTimeout(resolve, delayMilliseconds));\n });\n }\n getOptions(context) {\n let options;\n if (context.middlewareControl instanceof MiddlewareControl) {\n options = context.middlewareControl.getMiddlewareOptions(this.options.constructor);\n }\n if (typeof options === \"undefined\") {\n options = Object.assign(new RetryHandlerOptions(), this.options);\n }\n return options;\n }\n /**\n * @private\n * @async\n * To execute the middleware with retries\n * @param {Context} context - The context object\n * @param {number} retryAttempts - The current attempt count\n * @param {RetryHandlerOptions} options - The retry middleware options instance\n * @returns A Promise that resolves to nothing\n */\n executeWithRetry(context, retryAttempts, options) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.nextMiddleware.execute(context);\n if (retryAttempts < options.maxRetries && this.isRetry(context.response) && this.isBuffered(context.request, context.options) && options.shouldRetry(options.delay, retryAttempts, context.request, context.options, context.response)) {\n ++retryAttempts;\n setRequestHeader(context.request, context.options, RetryHandler.RETRY_ATTEMPT_HEADER, retryAttempts.toString());\n const delay = this.getDelay(context.response, retryAttempts, options.delay);\n yield this.sleep(delay);\n return yield this.executeWithRetry(context, retryAttempts, options);\n }\n else {\n return;\n }\n });\n }\n /**\n * @public\n * @async\n * To execute the current middleware\n * @param {Context} context - The context object of the request\n * @returns A Promise that resolves to nothing\n */\n execute(context) {\n return __awaiter(this, void 0, void 0, function* () {\n const retryAttempts = 0;\n const options = this.getOptions(context);\n TelemetryHandlerOptions.updateFeatureUsageFlag(context, FeatureUsageFlag.RETRY_HANDLER_ENABLED);\n return yield this.executeWithRetry(context, retryAttempts, options);\n });\n }\n /**\n * @public\n * To set the next middleware in the chain\n * @param {Middleware} next - The middleware instance\n * @returns Nothing\n */\n setNext(next) {\n this.nextMiddleware = next;\n }\n}\n/**\n * @private\n * @static\n * A list of status codes that needs to be retried\n */\nRetryHandler.RETRY_STATUS_CODES = [\n 429,\n 503,\n 504, // Gateway timeout\n];\n/**\n * @private\n * @static\n * A member holding the name of retry attempt header\n */\nRetryHandler.RETRY_ATTEMPT_HEADER = \"Retry-Attempt\";\n/**\n * @private\n * @static\n * A member holding the name of retry after header\n */\nRetryHandler.RETRY_AFTER_HEADER = \"Retry-After\";\n//# sourceMappingURL=RetryHandler.js.map","/**\n * -------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the MIT License.\n * See License in the project root for license information.\n * -------------------------------------------------------------------------------------------\n */\n/**\n * @class\n * @implements MiddlewareOptions\n * A class representing RedirectHandlerOptions\n */\nexport class RedirectHandlerOptions {\n /**\n * @public\n * @constructor\n * To create an instance of RedirectHandlerOptions\n * @param {number} [maxRedirects = RedirectHandlerOptions.DEFAULT_MAX_REDIRECTS] - The max redirects value\n * @param {ShouldRedirect} [shouldRedirect = RedirectHandlerOptions.DEFAULT_SHOULD_RETRY] - The should redirect callback\n * @returns An instance of RedirectHandlerOptions\n */\n constructor(maxRedirects = RedirectHandlerOptions.DEFAULT_MAX_REDIRECTS, shouldRedirect = RedirectHandlerOptions.defaultShouldRedirect) {\n if (maxRedirects > RedirectHandlerOptions.MAX_MAX_REDIRECTS) {\n const error = new Error(`MaxRedirects should not be more than ${RedirectHandlerOptions.MAX_MAX_REDIRECTS}`);\n error.name = \"MaxLimitExceeded\";\n throw error;\n }\n if (maxRedirects < 0) {\n const error = new Error(`MaxRedirects should not be negative`);\n error.name = \"MinExpectationNotMet\";\n throw error;\n }\n this.maxRedirects = maxRedirects;\n this.shouldRedirect = shouldRedirect;\n }\n}\n/**\n * @private\n * @static\n * A member holding default max redirects value\n */\nRedirectHandlerOptions.DEFAULT_MAX_REDIRECTS = 5;\n/**\n * @private\n * @static\n * A member holding maximum max redirects value\n */\nRedirectHandlerOptions.MAX_MAX_REDIRECTS = 20;\n/**\n * @private\n * A member holding default shouldRedirect callback\n */\nRedirectHandlerOptions.defaultShouldRedirect = () => true;\n//# sourceMappingURL=RedirectHandlerOptions.js.map","/**\n * -------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the MIT License.\n * See License in the project root for license information.\n * -------------------------------------------------------------------------------------------\n */\nimport { __awaiter } from \"tslib\";\nimport { RequestMethod } from \"../RequestMethod\";\nimport { MiddlewareControl } from \"./MiddlewareControl\";\nimport { cloneRequestWithNewUrl } from \"./MiddlewareUtil\";\nimport { RedirectHandlerOptions } from \"./options/RedirectHandlerOptions\";\nimport { FeatureUsageFlag, TelemetryHandlerOptions } from \"./options/TelemetryHandlerOptions\";\n/**\n * @class\n * Class\n * @implements Middleware\n * Class representing RedirectHandler\n */\nexport class RedirectHandler {\n /**\n * @public\n * @constructor\n * To create an instance of RedirectHandler\n * @param {RedirectHandlerOptions} [options = new RedirectHandlerOptions()] - The redirect handler options instance\n * @returns An instance of RedirectHandler\n */\n constructor(options = new RedirectHandlerOptions()) {\n this.options = options;\n }\n /**\n * @private\n * To check whether the response has the redirect status code or not\n * @param {Response} response - The response object\n * @returns A boolean representing whether the response contains the redirect status code or not\n */\n isRedirect(response) {\n return RedirectHandler.REDIRECT_STATUS_CODES.indexOf(response.status) !== -1;\n }\n /**\n * @private\n * To check whether the response has location header or not\n * @param {Response} response - The response object\n * @returns A boolean representing the whether the response has location header or not\n */\n hasLocationHeader(response) {\n return response.headers.has(RedirectHandler.LOCATION_HEADER);\n }\n /**\n * @private\n * To get the redirect url from location header in response object\n * @param {Response} response - The response object\n * @returns A redirect url from location header\n */\n getLocationHeader(response) {\n return response.headers.get(RedirectHandler.LOCATION_HEADER);\n }\n /**\n * @private\n * To check whether the given url is a relative url or not\n * @param {string} url - The url string value\n * @returns A boolean representing whether the given url is a relative url or not\n */\n isRelativeURL(url) {\n return url.indexOf(\"://\") === -1;\n }\n /**\n * @private\n * To check whether the authorization header in the request should be dropped for consequent redirected requests\n * @param {string} requestUrl - The request url value\n * @param {string} redirectUrl - The redirect url value\n * @returns A boolean representing whether the authorization header in the request should be dropped for consequent redirected requests\n */\n shouldDropAuthorizationHeader(requestUrl, redirectUrl) {\n const schemeHostRegex = /^[A-Za-z].+?:\\/\\/.+?(?=\\/|$)/;\n const requestMatches = schemeHostRegex.exec(requestUrl);\n let requestAuthority;\n let redirectAuthority;\n if (requestMatches !== null) {\n requestAuthority = requestMatches[0];\n }\n const redirectMatches = schemeHostRegex.exec(redirectUrl);\n if (redirectMatches !== null) {\n redirectAuthority = redirectMatches[0];\n }\n return typeof requestAuthority !== \"undefined\" && typeof redirectAuthority !== \"undefined\" && requestAuthority !== redirectAuthority;\n }\n /**\n * @private\n * @async\n * To update a request url with the redirect url\n * @param {string} redirectUrl - The redirect url value\n * @param {Context} context - The context object value\n * @returns Nothing\n */\n updateRequestUrl(redirectUrl, context) {\n return __awaiter(this, void 0, void 0, function* () {\n context.request = typeof context.request === \"string\" ? redirectUrl : yield cloneRequestWithNewUrl(redirectUrl, context.request);\n });\n }\n /**\n * @private\n * To get the options for execution of the middleware\n * @param {Context} context - The context object\n * @returns A options for middleware execution\n */\n getOptions(context) {\n let options;\n if (context.middlewareControl instanceof MiddlewareControl) {\n options = context.middlewareControl.getMiddlewareOptions(RedirectHandlerOptions);\n }\n if (typeof options === \"undefined\") {\n options = Object.assign(new RedirectHandlerOptions(), this.options);\n }\n return options;\n }\n /**\n * @private\n * @async\n * To execute the next middleware and to handle in case of redirect response returned by the server\n * @param {Context} context - The context object\n * @param {number} redirectCount - The redirect count value\n * @param {RedirectHandlerOptions} options - The redirect handler options instance\n * @returns A promise that resolves to nothing\n */\n executeWithRedirect(context, redirectCount, options) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.nextMiddleware.execute(context);\n const response = context.response;\n if (redirectCount < options.maxRedirects && this.isRedirect(response) && this.hasLocationHeader(response) && options.shouldRedirect(response)) {\n ++redirectCount;\n if (response.status === RedirectHandler.STATUS_CODE_SEE_OTHER) {\n context.options.method = RequestMethod.GET;\n delete context.options.body;\n }\n else {\n const redirectUrl = this.getLocationHeader(response);\n if (!this.isRelativeURL(redirectUrl) && this.shouldDropAuthorizationHeader(response.url, redirectUrl)) {\n delete context.options.headers[RedirectHandler.AUTHORIZATION_HEADER];\n }\n yield this.updateRequestUrl(redirectUrl, context);\n }\n yield this.executeWithRedirect(context, redirectCount, options);\n }\n else {\n return;\n }\n });\n }\n /**\n * @public\n * @async\n * To execute the current middleware\n * @param {Context} context - The context object of the request\n * @returns A Promise that resolves to nothing\n */\n execute(context) {\n return __awaiter(this, void 0, void 0, function* () {\n const redirectCount = 0;\n const options = this.getOptions(context);\n context.options.redirect = RedirectHandler.MANUAL_REDIRECT;\n TelemetryHandlerOptions.updateFeatureUsageFlag(context, FeatureUsageFlag.REDIRECT_HANDLER_ENABLED);\n return yield this.executeWithRedirect(context, redirectCount, options);\n });\n }\n /**\n * @public\n * To set the next middleware in the chain\n * @param {Middleware} next - The middleware instance\n * @returns Nothing\n */\n setNext(next) {\n this.nextMiddleware = next;\n }\n}\n/**\n * @private\n * @static\n * A member holding the array of redirect status codes\n */\nRedirectHandler.REDIRECT_STATUS_CODES = [\n 301,\n 302,\n 303,\n 307,\n 308, // Moved Permanently\n];\n/**\n * @private\n * @static\n * A member holding SeeOther status code\n */\nRedirectHandler.STATUS_CODE_SEE_OTHER = 303;\n/**\n * @private\n * @static\n * A member holding the name of the location header\n */\nRedirectHandler.LOCATION_HEADER = \"Location\";\n/**\n * @private\n * @static\n * A member representing the authorization header name\n */\nRedirectHandler.AUTHORIZATION_HEADER = \"Authorization\";\n/**\n * @private\n * @static\n * A member holding the manual redirect value\n */\nRedirectHandler.MANUAL_REDIRECT = \"manual\";\n//# sourceMappingURL=RedirectHandler.js.map","/**\n * -------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the MIT License.\n * See License in the project root for license information.\n * -------------------------------------------------------------------------------------------\n */\nimport { __awaiter } from \"tslib\";\n/**\n * @module TelemetryHandler\n */\nimport { isCustomHost, isGraphURL } from \"../GraphRequestUtil\";\nimport { PACKAGE_VERSION } from \"../Version\";\nimport { MiddlewareControl } from \"./MiddlewareControl\";\nimport { appendRequestHeader, generateUUID, getRequestHeader, setRequestHeader } from \"./MiddlewareUtil\";\nimport { TelemetryHandlerOptions } from \"./options/TelemetryHandlerOptions\";\n/**\n * @class\n * @implements Middleware\n * Class for TelemetryHandler\n */\nexport class TelemetryHandler {\n /**\n * @public\n * @async\n * To execute the current middleware\n * @param {Context} context - The context object of the request\n * @returns A Promise that resolves to nothing\n */\n execute(context) {\n return __awaiter(this, void 0, void 0, function* () {\n const url = typeof context.request === \"string\" ? context.request : context.request.url;\n if (isGraphURL(url) || (context.customHosts && isCustomHost(url, context.customHosts))) {\n // Add telemetry only if the request url is a Graph URL.\n // Errors are reported as in issue #265 if headers are present when redirecting to a non Graph URL\n let clientRequestId = getRequestHeader(context.request, context.options, TelemetryHandler.CLIENT_REQUEST_ID_HEADER);\n if (!clientRequestId) {\n clientRequestId = generateUUID();\n setRequestHeader(context.request, context.options, TelemetryHandler.CLIENT_REQUEST_ID_HEADER, clientRequestId);\n }\n let sdkVersionValue = `${TelemetryHandler.PRODUCT_NAME}/${PACKAGE_VERSION}`;\n let options;\n if (context.middlewareControl instanceof MiddlewareControl) {\n options = context.middlewareControl.getMiddlewareOptions(TelemetryHandlerOptions);\n }\n if (options) {\n const featureUsage = options.getFeatureUsage();\n sdkVersionValue += ` (${TelemetryHandler.FEATURE_USAGE_STRING}=${featureUsage})`;\n }\n appendRequestHeader(context.request, context.options, TelemetryHandler.SDK_VERSION_HEADER, sdkVersionValue);\n }\n else {\n // Remove telemetry headers if present during redirection.\n delete context.options.headers[TelemetryHandler.CLIENT_REQUEST_ID_HEADER];\n delete context.options.headers[TelemetryHandler.SDK_VERSION_HEADER];\n }\n return yield this.nextMiddleware.execute(context);\n });\n }\n /**\n * @public\n * To set the next middleware in the chain\n * @param {Middleware} next - The middleware instance\n * @returns Nothing\n */\n setNext(next) {\n this.nextMiddleware = next;\n }\n}\n/**\n * @private\n * @static\n * A member holding the name of the client request id header\n */\nTelemetryHandler.CLIENT_REQUEST_ID_HEADER = \"client-request-id\";\n/**\n * @private\n * @static\n * A member holding the name of the sdk version header\n */\nTelemetryHandler.SDK_VERSION_HEADER = \"SdkVersion\";\n/**\n * @private\n * @static\n * A member holding the language prefix for the sdk version header value\n */\nTelemetryHandler.PRODUCT_NAME = \"graph-js\";\n/**\n * @private\n * @static\n * A member holding the key for the feature usage metrics\n */\nTelemetryHandler.FEATURE_USAGE_STRING = \"featureUsage\";\n//# sourceMappingURL=TelemetryHandler.js.map","/**\n * -------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the MIT License.\n * See License in the project root for license information.\n * -------------------------------------------------------------------------------------------\n */\nimport { AuthenticationHandler } from \"./AuthenticationHandler\";\nimport { HTTPMessageHandler } from \"./HTTPMessageHandler\";\nimport { RedirectHandlerOptions } from \"./options/RedirectHandlerOptions\";\nimport { RetryHandlerOptions } from \"./options/RetryHandlerOptions\";\nimport { RedirectHandler } from \"./RedirectHandler\";\nimport { RetryHandler } from \"./RetryHandler\";\nimport { TelemetryHandler } from \"./TelemetryHandler\";\n/**\n * @private\n * To check whether the environment is node or not\n * @returns A boolean representing the environment is node or not\n */\nconst isNodeEnvironment = () => {\n return typeof process === \"object\" && typeof require === \"function\";\n};\n/**\n * @class\n * Class containing function(s) related to the middleware pipelines.\n */\nexport class MiddlewareFactory {\n /**\n * @public\n * @static\n * Returns the default middleware chain an array with the middleware handlers\n * @param {AuthenticationProvider} authProvider - The authentication provider instance\n * @returns an array of the middleware handlers of the default middleware chain\n */\n static getDefaultMiddlewareChain(authProvider) {\n const middleware = [];\n const authenticationHandler = new AuthenticationHandler(authProvider);\n const retryHandler = new RetryHandler(new RetryHandlerOptions());\n const telemetryHandler = new TelemetryHandler();\n const httpMessageHandler = new HTTPMessageHandler();\n middleware.push(authenticationHandler);\n middleware.push(retryHandler);\n if (isNodeEnvironment()) {\n const redirectHandler = new RedirectHandler(new RedirectHandlerOptions());\n middleware.push(redirectHandler);\n }\n middleware.push(telemetryHandler);\n middleware.push(httpMessageHandler);\n return middleware;\n }\n}\n//# sourceMappingURL=MiddlewareFactory.js.map","/**\n * -------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the MIT License.\n * See License in the project root for license information.\n * -------------------------------------------------------------------------------------------\n */\n/**\n * @module ChaosHandlerOptions\n */\nimport { ChaosStrategy } from \"./ChaosStrategy\";\n/**\n * Class representing ChaosHandlerOptions\n * @class\n * Class\n * @implements MiddlewareOptions\n */\nexport class ChaosHandlerOptions {\n /**\n * @public\n * @constructor\n * To create an instance of Testing Handler Options\n * @param {ChaosStrategy} chaosStrategy - Specifies the startegy used for the Testing Handler -> RAMDOM/MANUAL\n * @param {string} statusMessage - The Message to be returned in the response\n * @param {number?} statusCode - The statusCode to be returned in the response\n * @param {number?} chaosPercentage - The percentage of randomness/chaos in the handler\n * @param {any?} responseBody - The response body to be returned in the response\n * @returns An instance of ChaosHandlerOptions\n */\n constructor(chaosStrategy = ChaosStrategy.RANDOM, statusMessage = \"Some error Happened\", statusCode, chaosPercentage, responseBody, headers) {\n this.chaosStrategy = chaosStrategy;\n this.statusCode = statusCode;\n this.statusMessage = statusMessage;\n this.chaosPercentage = chaosPercentage !== undefined ? chaosPercentage : 10;\n this.responseBody = responseBody;\n this.headers = headers;\n if (this.chaosPercentage > 100) {\n throw new Error(\"Error Pecentage can not be more than 100\");\n }\n }\n}\n//# sourceMappingURL=ChaosHandlerOptions.js.map","/**\n * -------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the MIT License.\n * See License in the project root for license information.\n * -------------------------------------------------------------------------------------------\n */\n/**\n * @module ChaosHandlerData\n */\n/**\n * Contains RequestMethod to corresponding array of possible status codes, used for Random mode\n */\nexport const methodStatusCode = {\n GET: [429, 500, 502, 503, 504],\n POST: [429, 500, 502, 503, 504, 507],\n PUT: [429, 500, 502, 503, 504, 507],\n PATCH: [429, 500, 502, 503, 504],\n DELETE: [429, 500, 502, 503, 504, 507],\n};\n/**\n * Contains statusCode to statusMessage map\n */\nexport const httpStatusCode = {\n 100: \"Continue\",\n 101: \"Switching Protocols\",\n 102: \"Processing\",\n 103: \"Early Hints\",\n 200: \"OK\",\n 201: \"Created\",\n 202: \"Accepted\",\n 203: \"Non-Authoritative Information\",\n 204: \"No Content\",\n 205: \"Reset Content\",\n 206: \"Partial Content\",\n 207: \"Multi-Status\",\n 208: \"Already Reported\",\n 226: \"IM Used\",\n 300: \"Multiple Choices\",\n 301: \"Moved Permanently\",\n 302: \"Found\",\n 303: \"See Other\",\n 304: \"Not Modified\",\n 305: \"Use Proxy\",\n 307: \"Temporary Redirect\",\n 308: \"Permanent Redirect\",\n 400: \"Bad Request\",\n 401: \"Unauthorized\",\n 402: \"Payment Required\",\n 403: \"Forbidden\",\n 404: \"Not Found\",\n 405: \"Method Not Allowed\",\n 406: \"Not Acceptable\",\n 407: \"Proxy Authentication Required\",\n 408: \"Request Timeout\",\n 409: \"Conflict\",\n 410: \"Gone\",\n 411: \"Length Required\",\n 412: \"Precondition Failed\",\n 413: \"Payload Too Large\",\n 414: \"URI Too Long\",\n 415: \"Unsupported Media Type\",\n 416: \"Range Not Satisfiable\",\n 417: \"Expectation Failed\",\n 421: \"Misdirected Request\",\n 422: \"Unprocessable Entity\",\n 423: \"Locked\",\n 424: \"Failed Dependency\",\n 425: \"Too Early\",\n 426: \"Upgrade Required\",\n 428: \"Precondition Required\",\n 429: \"Too Many Requests\",\n 431: \"Request Header Fields Too Large\",\n 451: \"Unavailable For Legal Reasons\",\n 500: \"Internal Server Error\",\n 501: \"Not Implemented\",\n 502: \"Bad Gateway\",\n 503: \"Service Unavailable\",\n 504: \"Gateway Timeout\",\n 505: \"HTTP Version Not Supported\",\n 506: \"Variant Also Negotiates\",\n 507: \"Insufficient Storage\",\n 508: \"Loop Detected\",\n 510: \"Not Extended\",\n 511: \"Network Authentication Required\",\n};\n//# sourceMappingURL=ChaosHandlerData.js.map","/**\n * -------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the MIT License.\n * See License in the project root for license information.\n * -------------------------------------------------------------------------------------------\n */\nimport { __awaiter } from \"tslib\";\nimport { MiddlewareControl } from \"./MiddlewareControl\";\nimport { generateUUID } from \"./MiddlewareUtil\";\nimport { httpStatusCode, methodStatusCode } from \"./options/ChaosHandlerData\";\nimport { ChaosHandlerOptions } from \"./options/ChaosHandlerOptions\";\nimport { ChaosStrategy } from \"./options/ChaosStrategy\";\n/**\n * Class representing ChaosHandler\n * @class\n * Class\n * @implements Middleware\n */\nexport class ChaosHandler {\n /**\n * @public\n * @constructor\n * To create an instance of Testing Handler\n * @param {ChaosHandlerOptions} [options = new ChaosHandlerOptions()] - The testing handler options instance\n * @param manualMap - The Map passed by user containing url-statusCode info\n * @returns An instance of Testing Handler\n */\n constructor(options = new ChaosHandlerOptions(), manualMap) {\n this.options = options;\n this.manualMap = manualMap;\n }\n /**\n * Generates responseHeader\n * @private\n * @param {ChaosHandlerOptions} chaosHandlerOptions - The ChaosHandlerOptions object\n * @param {string} requestID - request id\n * @param {string} requestDate - date of the request\n * @returns response Header\n */\n createResponseHeaders(chaosHandlerOptions, requestID, requestDate) {\n const responseHeader = chaosHandlerOptions.headers ? new Headers(chaosHandlerOptions.headers) : new Headers();\n responseHeader.append(\"Cache-Control\", \"no-store\");\n responseHeader.append(\"request-id\", requestID);\n responseHeader.append(\"client-request-id\", requestID);\n responseHeader.append(\"x-ms-ags-diagnostic\", \"\");\n responseHeader.append(\"Date\", requestDate);\n responseHeader.append(\"Strict-Transport-Security\", \"\");\n if (chaosHandlerOptions.statusCode === 429) {\n // throttling case has to have a timeout scenario\n responseHeader.append(\"retry-after\", \"3\");\n }\n return responseHeader;\n }\n /**\n * Generates responseBody\n * @private\n * @param {ChaosHandlerOptions} chaosHandlerOptions - The ChaosHandlerOptions object\n * @param {string} requestID - request id\n * @param {string} requestDate - date of the request\n * * @returns response body\n */\n createResponseBody(chaosHandlerOptions, requestID, requestDate) {\n if (chaosHandlerOptions.responseBody) {\n return chaosHandlerOptions.responseBody;\n }\n let body;\n if (chaosHandlerOptions.statusCode >= 400) {\n const codeMessage = httpStatusCode[chaosHandlerOptions.statusCode];\n const errMessage = chaosHandlerOptions.statusMessage;\n body = {\n error: {\n code: codeMessage,\n message: errMessage,\n innerError: {\n \"request-id\": requestID,\n date: requestDate,\n },\n },\n };\n }\n else {\n body = {};\n }\n return body;\n }\n /**\n * creates a response\n * @private\n * @param {ChaosHandlerOptions} chaosHandlerOptions - The ChaosHandlerOptions object\n * @param {Context} context - Contains the context of the request\n */\n createResponse(chaosHandlerOptions, context) {\n const requestURL = context.request;\n const requestID = generateUUID();\n const requestDate = new Date();\n const responseHeader = this.createResponseHeaders(chaosHandlerOptions, requestID, requestDate.toString());\n const responseBody = this.createResponseBody(chaosHandlerOptions, requestID, requestDate.toString());\n const init = { url: requestURL, status: chaosHandlerOptions.statusCode, statusText: chaosHandlerOptions.statusMessage, headers: responseHeader };\n context.response = new Response(typeof responseBody === \"string\" ? responseBody : JSON.stringify(responseBody), init);\n }\n /**\n * Decides whether to send the request to the graph or not\n * @private\n * @param {ChaosHandlerOptions} chaosHandlerOptions - A ChaosHandlerOptions object\n * @param {Context} context - Contains the context of the request\n * @returns nothing\n */\n sendRequest(chaosHandlerOptions, context) {\n return __awaiter(this, void 0, void 0, function* () {\n this.setStatusCode(chaosHandlerOptions, context.request, context.options.method);\n if ((chaosHandlerOptions.chaosStrategy === ChaosStrategy.MANUAL && !this.nextMiddleware) || Math.floor(Math.random() * 100) < chaosHandlerOptions.chaosPercentage) {\n this.createResponse(chaosHandlerOptions, context);\n }\n else if (this.nextMiddleware) {\n yield this.nextMiddleware.execute(context);\n }\n });\n }\n /**\n * Fetches a random status code for the RANDOM mode from the predefined array\n * @private\n * @param {string} requestMethod - the API method for the request\n * @returns a random status code from a given set of status codes\n */\n getRandomStatusCode(requestMethod) {\n const statusCodeArray = methodStatusCode[requestMethod];\n return statusCodeArray[Math.floor(Math.random() * statusCodeArray.length)];\n }\n /**\n * To fetch the relative URL out of the complete URL using a predefined regex pattern\n * @private\n * @param {string} urlMethod - the complete URL\n * @returns the string as relative URL\n */\n getRelativeURL(urlMethod) {\n const pattern = /https?:\\/\\/graph\\.microsoft\\.com\\/[^/]+(.+?)(\\?|$)/;\n let relativeURL;\n if (pattern.exec(urlMethod) !== null) {\n relativeURL = pattern.exec(urlMethod)[1];\n }\n return relativeURL;\n }\n /**\n * To fetch the status code from the map(if needed), then returns response by calling createResponse\n * @private\n * @param {ChaosHandlerOptions} chaosHandlerOptions - The ChaosHandlerOptions object\n * @param {string} requestURL - the URL for the request\n * @param {string} requestMethod - the API method for the request\n */\n setStatusCode(chaosHandlerOptions, requestURL, requestMethod) {\n if (chaosHandlerOptions.chaosStrategy === ChaosStrategy.MANUAL) {\n if (chaosHandlerOptions.statusCode === undefined) {\n // manual mode with no status code, can be a global level or request level without statusCode\n const relativeURL = this.getRelativeURL(requestURL);\n if (this.manualMap.get(relativeURL) !== undefined) {\n // checking Manual Map for exact match\n if (this.manualMap.get(relativeURL).get(requestMethod) !== undefined) {\n chaosHandlerOptions.statusCode = this.manualMap.get(relativeURL).get(requestMethod);\n }\n // else statusCode would be undefined\n }\n else {\n // checking for regex match if exact match doesn't work\n this.manualMap.forEach((value, key) => {\n const regexURL = new RegExp(key + \"$\");\n if (regexURL.test(relativeURL)) {\n if (this.manualMap.get(key).get(requestMethod) !== undefined) {\n chaosHandlerOptions.statusCode = this.manualMap.get(key).get(requestMethod);\n }\n // else statusCode would be undefined\n }\n });\n }\n // Case of redirection or request url not in map ---> statusCode would be undefined\n }\n }\n else {\n // Handling the case of Random here\n chaosHandlerOptions.statusCode = this.getRandomStatusCode(requestMethod);\n // else statusCode would be undefined\n }\n }\n /**\n * To get the options for execution of the middleware\n * @private\n * @param {Context} context - The context object\n * @returns options for middleware execution\n */\n getOptions(context) {\n let options;\n if (context.middlewareControl instanceof MiddlewareControl) {\n options = context.middlewareControl.getMiddlewareOptions(ChaosHandlerOptions);\n }\n if (typeof options === \"undefined\") {\n options = Object.assign(new ChaosHandlerOptions(), this.options);\n }\n return options;\n }\n /**\n * To execute the current middleware\n * @public\n * @async\n * @param {Context} context - The context object of the request\n * @returns A Promise that resolves to nothing\n */\n execute(context) {\n return __awaiter(this, void 0, void 0, function* () {\n const chaosHandlerOptions = this.getOptions(context);\n return yield this.sendRequest(chaosHandlerOptions, context);\n });\n }\n /**\n * @public\n * To set the next middleware in the chain\n * @param {Middleware} next - The middleware instance\n * @returns Nothing\n */\n setNext(next) {\n this.nextMiddleware = next;\n }\n}\n//# sourceMappingURL=ChaosHandler.js.map","/**\n * -------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the MIT License.\n * See License in the project root for license information.\n * -------------------------------------------------------------------------------------------\n */\n/**\n * @enum\n * Enum for ResponseType values\n * @property {string} ARRAYBUFFER - To download response content as an [ArrayBuffer]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer}\n * @property {string} BLOB - To download content as a [binary/blob] {@link https://developer.mozilla.org/en-US/docs/Web/API/Blob}\n * @property {string} DOCUMENT - This downloads content as a document or stream\n * @property {string} JSON - To download response content as a json\n * @property {string} STREAM - To download response as a [stream]{@link https://nodejs.org/api/stream.html}\n * @property {string} TEXT - For downloading response as a text\n */\nexport var ResponseType;\n(function (ResponseType) {\n ResponseType[\"ARRAYBUFFER\"] = \"arraybuffer\";\n ResponseType[\"BLOB\"] = \"blob\";\n ResponseType[\"DOCUMENT\"] = \"document\";\n ResponseType[\"JSON\"] = \"json\";\n ResponseType[\"RAW\"] = \"raw\";\n ResponseType[\"STREAM\"] = \"stream\";\n ResponseType[\"TEXT\"] = \"text\";\n})(ResponseType || (ResponseType = {}));\n//# sourceMappingURL=ResponseType.js.map","/**\n * -------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the MIT License.\n * See License in the project root for license information.\n * -------------------------------------------------------------------------------------------\n */\nimport { __awaiter } from \"tslib\";\nimport { ResponseType } from \"./ResponseType\";\n/**\n * @enum\n * Enum for document types\n * @property {string} TEXT_HTML - The text/html content type\n * @property {string} TEXT_XML - The text/xml content type\n * @property {string} APPLICATION_XML - The application/xml content type\n * @property {string} APPLICATION_XHTML - The application/xhml+xml content type\n */\nexport var DocumentType;\n(function (DocumentType) {\n DocumentType[\"TEXT_HTML\"] = \"text/html\";\n DocumentType[\"TEXT_XML\"] = \"text/xml\";\n DocumentType[\"APPLICATION_XML\"] = \"application/xml\";\n DocumentType[\"APPLICATION_XHTML\"] = \"application/xhtml+xml\";\n})(DocumentType || (DocumentType = {}));\n/**\n * @enum\n * Enum for Content types\n * @property {string} TEXT_PLAIN - The text/plain content type\n * @property {string} APPLICATION_JSON - The application/json content type\n */\nvar ContentType;\n(function (ContentType) {\n ContentType[\"TEXT_PLAIN\"] = \"text/plain\";\n ContentType[\"APPLICATION_JSON\"] = \"application/json\";\n})(ContentType || (ContentType = {}));\n/**\n * @enum\n * Enum for Content type regex\n * @property {string} DOCUMENT - The regex to match document content types\n * @property {string} IMAGE - The regex to match image content types\n */\nvar ContentTypeRegexStr;\n(function (ContentTypeRegexStr) {\n ContentTypeRegexStr[\"DOCUMENT\"] = \"^(text\\\\/(html|xml))|(application\\\\/(xml|xhtml\\\\+xml))$\";\n ContentTypeRegexStr[\"IMAGE\"] = \"^image\\\\/.+\";\n})(ContentTypeRegexStr || (ContentTypeRegexStr = {}));\n/**\n * @class\n * Class for GraphResponseHandler\n */\nexport class GraphResponseHandler {\n /**\n * @private\n * @static\n * To parse Document response\n * @param {Response} rawResponse - The response object\n * @param {DocumentType} type - The type to which the document needs to be parsed\n * @returns A promise that resolves to a document content\n */\n static parseDocumentResponse(rawResponse, type) {\n if (typeof DOMParser !== \"undefined\") {\n return new Promise((resolve, reject) => {\n rawResponse.text().then((xmlString) => {\n try {\n const parser = new DOMParser();\n const xmlDoc = parser.parseFromString(xmlString, type);\n resolve(xmlDoc);\n }\n catch (error) {\n reject(error);\n }\n });\n });\n }\n else {\n return Promise.resolve(rawResponse.body);\n }\n }\n /**\n * @private\n * @static\n * @async\n * To convert the native Response to response content\n * @param {Response} rawResponse - The response object\n * @param {ResponseType} [responseType] - The response type value\n * @returns A promise that resolves to the converted response content\n */\n static convertResponse(rawResponse, responseType) {\n return __awaiter(this, void 0, void 0, function* () {\n if (rawResponse.status === 204) {\n // NO CONTENT\n return Promise.resolve();\n }\n let responseValue;\n const contentType = rawResponse.headers.get(\"Content-type\");\n switch (responseType) {\n case ResponseType.ARRAYBUFFER:\n responseValue = yield rawResponse.arrayBuffer();\n break;\n case ResponseType.BLOB:\n responseValue = yield rawResponse.blob();\n break;\n case ResponseType.DOCUMENT:\n responseValue = yield GraphResponseHandler.parseDocumentResponse(rawResponse, DocumentType.TEXT_XML);\n break;\n case ResponseType.JSON:\n responseValue = yield rawResponse.json();\n break;\n case ResponseType.STREAM:\n responseValue = yield Promise.resolve(rawResponse.body);\n break;\n case ResponseType.TEXT:\n responseValue = yield rawResponse.text();\n break;\n default:\n if (contentType !== null) {\n const mimeType = contentType.split(\";\")[0];\n if (new RegExp(ContentTypeRegexStr.DOCUMENT).test(mimeType)) {\n responseValue = yield GraphResponseHandler.parseDocumentResponse(rawResponse, mimeType);\n }\n else if (new RegExp(ContentTypeRegexStr.IMAGE).test(mimeType)) {\n responseValue = rawResponse.blob();\n }\n else if (mimeType === ContentType.TEXT_PLAIN) {\n responseValue = yield rawResponse.text();\n }\n else if (mimeType === ContentType.APPLICATION_JSON) {\n responseValue = yield rawResponse.json();\n }\n else {\n responseValue = Promise.resolve(rawResponse.body);\n }\n }\n else {\n /**\n * RFC specification {@link https://tools.ietf.org/html/rfc7231#section-3.1.1.5} says:\n * A sender that generates a message containing a payload body SHOULD\n * generate a Content-Type header field in that message unless the\n * intended media type of the enclosed representation is unknown to the\n * sender. If a Content-Type header field is not present, the recipient\n * MAY either assume a media type of \"application/octet-stream\"\n * ([RFC2046], Section 4.5.1) or examine the data to determine its type.\n *\n * So assuming it as a stream type so returning the body.\n */\n responseValue = Promise.resolve(rawResponse.body);\n }\n break;\n }\n return responseValue;\n });\n }\n /**\n * @public\n * @static\n * @async\n * To get the parsed response\n * @param {Response} rawResponse - The response object\n * @param {ResponseType} [responseType] - The response type value\n * @param {GraphRequestCallback} [callback] - The graph request callback function\n * @returns The parsed response\n */\n static getResponse(rawResponse, responseType, callback) {\n return __awaiter(this, void 0, void 0, function* () {\n if (responseType === ResponseType.RAW) {\n return Promise.resolve(rawResponse);\n }\n else {\n const response = yield GraphResponseHandler.convertResponse(rawResponse, responseType);\n if (rawResponse.ok) {\n // Status Code 2XX\n if (typeof callback === \"function\") {\n callback(null, response);\n }\n else {\n return response;\n }\n }\n else {\n // NOT OK Response\n throw response;\n }\n }\n });\n }\n}\n//# sourceMappingURL=GraphResponseHandler.js.map","/**\n * -------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the MIT License.\n * See License in the project root for license information.\n * -------------------------------------------------------------------------------------------\n */\n/**\n * @module Range\n */\n/**\n * @class\n * Class representing Range\n */\nexport class Range {\n /**\n * @public\n * @constructor\n * Creates a range for given min and max values\n * @param {number} [minVal = -1] - The minimum value.\n * @param {number} [maxVal = -1] - The maximum value.\n * @returns An instance of a Range\n */\n constructor(minVal = -1, maxVal = -1) {\n this.minValue = minVal;\n this.maxValue = maxVal;\n }\n}\n//# sourceMappingURL=Range.js.map","/**\n * -------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the MIT License.\n * See License in the project root for license information.\n * -------------------------------------------------------------------------------------------\n */\n/**\n * Class representing a successful file upload result\n */\nexport class UploadResult {\n /**\n * @public\n * Get of the location value.\n * Location value is looked up in the response header\n */\n get location() {\n return this._location;\n }\n /**\n * @public\n * Set the location value\n * Location value is looked up in the response header\n */\n set location(location) {\n this._location = location;\n }\n /**\n * @public\n * Get The response body from the completed upload response\n */\n get responseBody() {\n return this._responseBody;\n }\n /**\n * @public\n * Set the response body from the completed upload response\n */\n set responseBody(responseBody) {\n this._responseBody = responseBody;\n }\n /**\n * @public\n * @param {responseBody} responsebody - The response body from the completed upload response\n * @param {location} location - The location value from the headers from the completed upload response\n */\n constructor(responseBody, location) {\n // Response body or the location parameter can be undefined.\n this._location = location;\n this._responseBody = responseBody;\n }\n /**\n * @public\n * @param {responseBody} responseBody - The response body from the completed upload response\n * @param {responseHeaders} responseHeaders - The headers from the completed upload response\n */\n static CreateUploadResult(responseBody, responseHeaders) {\n return new UploadResult(responseBody, responseHeaders.get(\"location\"));\n }\n}\n//# sourceMappingURL=UploadResult.js.map","/**\n * -------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the MIT License.\n * See License in the project root for license information.\n * -------------------------------------------------------------------------------------------\n */\nimport { __awaiter } from \"tslib\";\n/**\n * @module LargeFileUploadTask\n */\nimport { GraphClientError } from \"../GraphClientError\";\nimport { GraphResponseHandler } from \"../GraphResponseHandler\";\nimport { ResponseType } from \"../ResponseType\";\nimport { Range } from \"./FileUploadTask/Range\";\nimport { UploadResult } from \"./FileUploadTask/UploadResult\";\n/**\n * @class\n * Class representing LargeFileUploadTask\n */\nexport class LargeFileUploadTask {\n /**\n * @public\n * @static\n * @async\n * Makes request to the server to create an upload session\n * @param {Client} client - The GraphClient instance\n * @param {string} requestUrl - The URL to create the upload session\n * @param {any} payload - The payload that needs to be sent\n * @param {KeyValuePairObjectStringNumber} headers - The headers that needs to be sent\n * @returns The promise that resolves to LargeFileUploadSession\n */\n static createUploadSession(client, requestUrl, payload, headers = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n const session = yield client\n .api(requestUrl)\n .headers(headers)\n .post(payload);\n const largeFileUploadSession = {\n url: session.uploadUrl,\n expiry: new Date(session.expirationDateTime),\n isCancelled: false,\n };\n return largeFileUploadSession;\n });\n }\n /**\n * @public\n * @constructor\n * Constructs a LargeFileUploadTask\n * @param {Client} client - The GraphClient instance\n * @param {FileObject} file - The FileObject holding details of a file that needs to be uploaded\n * @param {LargeFileUploadSession} uploadSession - The upload session to which the upload has to be done\n * @param {LargeFileUploadTaskOptions} options - The upload task options\n * @returns An instance of LargeFileUploadTask\n */\n constructor(client, file, uploadSession, options = {}) {\n /**\n * @private\n * Default value for the rangeSize\n */\n this.DEFAULT_FILE_SIZE = 5 * 1024 * 1024;\n this.client = client;\n if (!file.sliceFile) {\n throw new GraphClientError(\"Please pass the FileUpload object, StreamUpload object or any custom implementation of the FileObject interface\");\n }\n else {\n this.file = file;\n }\n this.file = file;\n if (!options.rangeSize) {\n options.rangeSize = this.DEFAULT_FILE_SIZE;\n }\n this.options = options;\n this.uploadSession = uploadSession;\n this.nextRange = new Range(0, this.options.rangeSize - 1);\n }\n /**\n * @private\n * Parses given range string to the Range instance\n * @param {string[]} ranges - The ranges value\n * @returns The range instance\n */\n parseRange(ranges) {\n const rangeStr = ranges[0];\n if (typeof rangeStr === \"undefined\" || rangeStr === \"\") {\n return new Range();\n }\n const firstRange = rangeStr.split(\"-\");\n const minVal = parseInt(firstRange[0], 10);\n let maxVal = parseInt(firstRange[1], 10);\n if (Number.isNaN(maxVal)) {\n maxVal = this.file.size - 1;\n }\n return new Range(minVal, maxVal);\n }\n /**\n * @private\n * Updates the expiration date and the next range\n * @param {UploadStatusResponse} response - The response of the upload status\n * @returns Nothing\n */\n updateTaskStatus(response) {\n this.uploadSession.expiry = new Date(response.expirationDateTime);\n this.nextRange = this.parseRange(response.nextExpectedRanges);\n }\n /**\n * @public\n * Gets next range that needs to be uploaded\n * @returns The range instance\n */\n getNextRange() {\n if (this.nextRange.minValue === -1) {\n return this.nextRange;\n }\n const minVal = this.nextRange.minValue;\n let maxValue = minVal + this.options.rangeSize - 1;\n if (maxValue >= this.file.size) {\n maxValue = this.file.size - 1;\n }\n return new Range(minVal, maxValue);\n }\n /**\n * @deprecated This function has been moved into FileObject interface.\n * @public\n * Slices the file content to the given range\n * @param {Range} range - The range value\n * @returns The sliced ArrayBuffer or Blob\n */\n sliceFile(range) {\n console.warn(\"The LargeFileUploadTask.sliceFile() function has been deprecated and moved into the FileObject interface.\");\n if (this.file.content instanceof ArrayBuffer || this.file.content instanceof Blob || this.file.content instanceof Uint8Array) {\n return this.file.content.slice(range.minValue, range.maxValue + 1);\n }\n throw new GraphClientError(\"The LargeFileUploadTask.sliceFile() function expects only Blob, ArrayBuffer or Uint8Array file content. Please note that the sliceFile() function is deprecated.\");\n }\n /**\n * @public\n * @async\n * Uploads file to the server in a sequential order by slicing the file\n * @returns The promise resolves to uploaded response\n */\n upload() {\n return __awaiter(this, void 0, void 0, function* () {\n const uploadEventHandlers = this.options && this.options.uploadEventHandlers;\n while (!this.uploadSession.isCancelled) {\n const nextRange = this.getNextRange();\n if (nextRange.maxValue === -1) {\n const err = new Error(\"Task with which you are trying to upload is already completed, Please check for your uploaded file\");\n err.name = \"Invalid Session\";\n throw err;\n }\n const fileSlice = yield this.file.sliceFile(nextRange);\n const rawResponse = yield this.uploadSliceGetRawResponse(fileSlice, nextRange, this.file.size);\n if (!rawResponse) {\n throw new GraphClientError(\"Something went wrong! Large file upload slice response is null.\");\n }\n const responseBody = yield GraphResponseHandler.getResponse(rawResponse);\n /**\n * (rawResponse.status === 201) -> This condition is applicable for OneDrive, PrintDocument and Outlook APIs.\n * (rawResponse.status === 200 && responseBody.id) -> This additional condition is applicable only for OneDrive API.\n */\n if (rawResponse.status === 201 || (rawResponse.status === 200 && responseBody.id)) {\n this.reportProgress(uploadEventHandlers, nextRange);\n return UploadResult.CreateUploadResult(responseBody, rawResponse.headers);\n }\n /* Handling the API issue where the case of Outlook upload response property -'nextExpectedRanges' is not uniform.\n * https://github.com/microsoftgraph/msgraph-sdk-serviceissues/issues/39\n */\n const res = {\n expirationDateTime: responseBody.expirationDateTime || responseBody.ExpirationDateTime,\n nextExpectedRanges: responseBody.NextExpectedRanges || responseBody.nextExpectedRanges,\n };\n this.updateTaskStatus(res);\n this.reportProgress(uploadEventHandlers, nextRange);\n }\n });\n }\n reportProgress(uploadEventHandlers, nextRange) {\n if (uploadEventHandlers && uploadEventHandlers.progress) {\n uploadEventHandlers.progress(nextRange, uploadEventHandlers.extraCallbackParam);\n }\n }\n /**\n * @public\n * @async\n * Uploads given slice to the server\n * @param {ArrayBuffer | Blob | File} fileSlice - The file slice\n * @param {Range} range - The range value\n * @param {number} totalSize - The total size of a complete file\n * @returns The response body of the upload slice result\n */\n uploadSlice(fileSlice, range, totalSize) {\n return __awaiter(this, void 0, void 0, function* () {\n return yield this.client\n .api(this.uploadSession.url)\n .headers({\n \"Content-Length\": `${range.maxValue - range.minValue + 1}`,\n \"Content-Range\": `bytes ${range.minValue}-${range.maxValue}/${totalSize}`,\n \"Content-Type\": \"application/octet-stream\",\n })\n .put(fileSlice);\n });\n }\n /**\n * @public\n * @async\n * Uploads given slice to the server\n * @param {unknown} fileSlice - The file slice\n * @param {Range} range - The range value\n * @param {number} totalSize - The total size of a complete file\n * @returns The raw response of the upload slice result\n */\n uploadSliceGetRawResponse(fileSlice, range, totalSize) {\n return __awaiter(this, void 0, void 0, function* () {\n return yield this.client\n .api(this.uploadSession.url)\n .headers({\n \"Content-Length\": `${range.maxValue - range.minValue + 1}`,\n \"Content-Range\": `bytes ${range.minValue}-${range.maxValue}/${totalSize}`,\n \"Content-Type\": \"application/octet-stream\",\n })\n .responseType(ResponseType.RAW)\n .put(fileSlice);\n });\n }\n /**\n * @public\n * @async\n * Deletes upload session in the server\n * @returns The promise resolves to cancelled response\n */\n cancel() {\n return __awaiter(this, void 0, void 0, function* () {\n const cancelResponse = yield this.client\n .api(this.uploadSession.url)\n .responseType(ResponseType.RAW)\n .delete();\n if (cancelResponse.status === 204) {\n this.uploadSession.isCancelled = true;\n }\n return cancelResponse;\n });\n }\n /**\n * @public\n * @async\n * Gets status for the upload session\n * @returns The promise resolves to the status enquiry response\n */\n getStatus() {\n return __awaiter(this, void 0, void 0, function* () {\n const response = yield this.client.api(this.uploadSession.url).get();\n this.updateTaskStatus(response);\n return response;\n });\n }\n /**\n * @public\n * @async\n * Resumes upload session and continue uploading the file from the last sent range\n * @returns The promise resolves to the uploaded response\n */\n resume() {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.getStatus();\n return yield this.upload();\n });\n }\n /**\n * @public\n * @async\n * Get the upload session information\n * @returns The large file upload session\n */\n getUploadSession() {\n return this.uploadSession;\n }\n}\n//# sourceMappingURL=LargeFileUploadTask.js.map","/**\n * -------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the MIT License.\n * See License in the project root for license information.\n * -------------------------------------------------------------------------------------------\n */\nimport { GraphClientError } from \"../../../GraphClientError\";\n/**\n * @class\n * Class used for creating LargeFileUploadTask fileobject.\n * This class accepts files of type ArrayBuffer, Blob, Uint8Array.\n */\nexport class FileUpload {\n /**\n * @public\n * @constructor\n * @param {ArrayBuffer | Blob | Uint8Array} content - The file to be uploaded\n * @param {string} name - The name of the file to be uploaded\n * @param {number} size - The total size of the file to be uploaded\n * @returns An instance of the FileUpload class\n */\n constructor(content, name, size) {\n this.content = content;\n this.name = name;\n this.size = size;\n if (!content || !name || !size) {\n throw new GraphClientError(\"Please provide the upload content, name of the file and size of the file\");\n }\n }\n /**\n * @public\n * Slices the file content to the given range\n * @param {Range} range - The range value\n * @returns The sliced file part\n */\n sliceFile(range) {\n return this.content.slice(range.minValue, range.maxValue + 1);\n }\n}\n//# sourceMappingURL=FileUpload.js.map","/**\n * -------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the MIT License.\n * See License in the project root for license information.\n * -------------------------------------------------------------------------------------------\n */\n/**\n * @module OneDriveLargeFileUploadTaskUtil\n */\n/**\n * @constant\n * Default value for the rangeSize\n * Recommended size is between 5 - 10 MB {@link https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/api/driveitem_createuploadsession#best-practices}\n */\nconst DEFAULT_FILE_SIZE = 5 * 1024 * 1024;\n/**\n * @constant\n * Rounds off the given value to a multiple of 320 KB\n * @param {number} value - The value\n * @returns The rounded off value\n */\nconst roundTo320KB = (value) => {\n if (value > 320 * 1024) {\n value = Math.floor(value / (320 * 1024)) * 320 * 1024;\n }\n return value;\n};\n/**\n * @constant\n * Get the valid rangeSize for a file slicing (validity is based on the constrains mentioned in here\n * {@link https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/api/driveitem_createuploadsession#upload-bytes-to-the-upload-session})\n *\n * @param {number} [rangeSize = DEFAULT_FILE_SIZE] - The rangeSize value.\n * @returns The valid rangeSize\n */\nexport const getValidRangeSize = (rangeSize = DEFAULT_FILE_SIZE) => {\n const sixtyMB = 60 * 1024 * 1024;\n if (rangeSize > sixtyMB) {\n rangeSize = sixtyMB;\n }\n return roundTo320KB(rangeSize);\n};\n//# sourceMappingURL=OneDriveLargeFileUploadTaskUtil.js.map","/**\n * -------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the MIT License.\n * See License in the project root for license information.\n * -------------------------------------------------------------------------------------------\n */\nimport { __awaiter } from \"tslib\";\n/**\n * @module OneDriveLargeFileUploadTask\n */\nimport { GraphClientError } from \"../GraphClientError\";\nimport { FileUpload } from \"./FileUploadTask/FileObjectClasses/FileUpload\";\nimport { LargeFileUploadTask } from \"./LargeFileUploadTask\";\nimport { getValidRangeSize } from \"./OneDriveLargeFileUploadTaskUtil\";\n/**\n * @class\n * Class representing OneDriveLargeFileUploadTask\n */\nexport class OneDriveLargeFileUploadTask extends LargeFileUploadTask {\n /**\n * @private\n * @static\n * Constructs the create session url for Onedrive\n * @param {string} fileName - The name of the file\n * @param {path} [path = OneDriveLargeFileUploadTask.DEFAULT_UPLOAD_PATH] - The path for the upload\n * @returns The constructed create session url\n */\n static constructCreateSessionUrl(fileName, path = OneDriveLargeFileUploadTask.DEFAULT_UPLOAD_PATH) {\n fileName = fileName.trim();\n path = path.trim();\n if (path === \"\") {\n path = \"/\";\n }\n if (path[0] !== \"/\") {\n path = `/${path}`;\n }\n if (path[path.length - 1] !== \"/\") {\n path = `${path}/`;\n }\n // we choose to encode each component of the file path separately because when encoding full URI\n // with encodeURI, special characters like # or % in the file name doesn't get encoded as desired\n return `/me/drive/root:${path\n .split(\"/\")\n .map((p) => encodeURIComponent(p))\n .join(\"/\")}${encodeURIComponent(fileName)}:/createUploadSession`;\n }\n /**\n * @private\n * @static\n * Get file information\n * @param {Blob | Uint8Array | File} file - The file entity\n * @param {string} fileName - The file name\n * @returns {FileInfo} The file information\n */\n static getFileInfo(file, fileName) {\n let content;\n let size;\n if (typeof Blob !== \"undefined\" && file instanceof Blob) {\n content = new File([file], fileName);\n size = content.size;\n }\n else if (typeof File !== \"undefined\" && file instanceof File) {\n content = file;\n size = content.size;\n }\n else if (typeof Uint8Array !== \"undefined\" && file instanceof Uint8Array) {\n const b = file;\n size = b.byteLength;\n content = b.buffer.slice(b.byteOffset, b.byteOffset + b.byteLength);\n }\n return {\n content,\n size,\n };\n }\n /**\n * @public\n * @static\n * @async\n * Creates a OneDriveLargeFileUploadTask\n * @param {Client} client - The GraphClient instance\n * @param {Blob | Uint8Array | File} file - File represented as Blob, Uint8Array or File\n * @param {OneDriveLargeFileUploadOptions} options - The options for upload task\n * @returns The promise that will be resolves to OneDriveLargeFileUploadTask instance\n */\n static create(client, file, options) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!client || !file || !options) {\n throw new GraphClientError(\"Please provide the Graph client instance, file object and OneDriveLargeFileUploadOptions value\");\n }\n const fileName = options.fileName;\n const fileInfo = OneDriveLargeFileUploadTask.getFileInfo(file, fileName);\n const fileObj = new FileUpload(fileInfo.content, fileName, fileInfo.size);\n return this.createTaskWithFileObject(client, fileObj, options);\n });\n }\n /**\n * @public\n * @static\n * @async\n * Creates a OneDriveLargeFileUploadTask\n * @param {Client} client - The GraphClient instance\n * @param {FileObject} fileObject - FileObject instance\n * @param {OneDriveLargeFileUploadOptions} options - The options for upload task\n * @returns The promise that will be resolves to OneDriveLargeFileUploadTask instance\n */\n static createTaskWithFileObject(client, fileObject, options) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!client || !fileObject || !options) {\n throw new GraphClientError(\"Please provide the Graph client instance, FileObject interface implementation and OneDriveLargeFileUploadOptions value\");\n }\n const requestUrl = options.uploadSessionURL ? options.uploadSessionURL : OneDriveLargeFileUploadTask.constructCreateSessionUrl(options.fileName, options.path);\n const uploadSessionPayload = {\n fileName: options.fileName,\n fileDescription: options.fileDescription,\n conflictBehavior: options.conflictBehavior,\n };\n const session = yield OneDriveLargeFileUploadTask.createUploadSession(client, requestUrl, uploadSessionPayload);\n const rangeSize = getValidRangeSize(options.rangeSize);\n return new OneDriveLargeFileUploadTask(client, fileObject, session, {\n rangeSize,\n uploadEventHandlers: options.uploadEventHandlers,\n });\n });\n }\n /**\n * @public\n * @static\n * @async\n * Makes request to the server to create an upload session\n * @param {Client} client - The GraphClient instance\n * @param {string} requestUrl - The URL to create the upload session\n * @param {string} payloadOptions - The payload option. Default conflictBehavior is 'rename'\n * @returns The promise that resolves to LargeFileUploadSession\n */\n static createUploadSession(client, requestUrl, payloadOptions) {\n const _super = Object.create(null, {\n createUploadSession: { get: () => super.createUploadSession }\n });\n return __awaiter(this, void 0, void 0, function* () {\n const payload = {\n item: {\n \"@microsoft.graph.conflictBehavior\": (payloadOptions === null || payloadOptions === void 0 ? void 0 : payloadOptions.conflictBehavior) || \"rename\",\n name: payloadOptions === null || payloadOptions === void 0 ? void 0 : payloadOptions.fileName,\n description: payloadOptions === null || payloadOptions === void 0 ? void 0 : payloadOptions.fileDescription,\n },\n };\n return _super.createUploadSession.call(this, client, requestUrl, payload);\n });\n }\n /**\n * @public\n * @constructor\n * Constructs a OneDriveLargeFileUploadTask\n * @param {Client} client - The GraphClient instance\n * @param {FileObject} file - The FileObject holding details of a file that needs to be uploaded\n * @param {LargeFileUploadSession} uploadSession - The upload session to which the upload has to be done\n * @param {LargeFileUploadTaskOptions} options - The upload task options\n * @returns An instance of OneDriveLargeFileUploadTask\n */\n constructor(client, file, uploadSession, options) {\n super(client, file, uploadSession, options);\n }\n /**\n * @public\n * Commits upload session to end uploading\n * @param {string} requestUrl - The URL to commit the upload session\n * @param {string} conflictBehavior - Conflict behaviour option. Default is 'rename'\n * @returns The promise resolves to committed response\n */\n commit(requestUrl, conflictBehavior = \"rename\") {\n return __awaiter(this, void 0, void 0, function* () {\n const payload = {\n name: this.file.name,\n \"@microsoft.graph.conflictBehavior\": conflictBehavior,\n \"@microsoft.graph.sourceUrl\": this.uploadSession.url,\n };\n return yield this.client.api(requestUrl).put(payload);\n });\n }\n}\n/**\n * @private\n * @static\n * Default path for the file being uploaded\n */\nOneDriveLargeFileUploadTask.DEFAULT_UPLOAD_PATH = \"/\";\n//# sourceMappingURL=OneDriveLargeFileUploadTask.js.map","import { __awaiter } from \"tslib\";\nimport { GraphClientError } from \"../../../GraphClientError\";\n/**\n * @class\n * FileObject class for Readable Stream upload\n */\nexport class StreamUpload {\n constructor(content, name, size) {\n this.content = content;\n this.name = name;\n this.size = size;\n if (!content || !name || !size) {\n throw new GraphClientError(\"Please provide the Readable Stream content, name of the file and size of the file\");\n }\n }\n /**\n * @public\n * Slices the file content to the given range\n * @param {Range} range - The range value\n * @returns The sliced file part\n */\n sliceFile(range) {\n return __awaiter(this, void 0, void 0, function* () {\n let rangeSize = range.maxValue - range.minValue + 1;\n /* readable.readable Is true if it is safe to call readable.read(),\n * which means the stream has not been destroyed or emitted 'error' or 'end'\n */\n const bufs = [];\n /**\n * The sliceFile reads the first `rangeSize` number of bytes from the stream.\n * The previousSlice property is used to seek the range of bytes in the previous slice.\n * Suppose, the sliceFile reads bytes from `10 - 20` from the stream but the upload of this slice fails.\n * When the user resumes, the stream will have bytes from position 21.\n * The previousSlice.Range is used to compare if the requested range is cached in the previousSlice property or present in the Readable Stream.\n */\n if (this.previousSlice) {\n if (range.minValue < this.previousSlice.range.minValue) {\n throw new GraphClientError(\"An error occurred while uploading the stream. Please restart the stream upload from the first byte of the file.\");\n }\n if (range.minValue < this.previousSlice.range.maxValue) {\n const previousRangeMin = this.previousSlice.range.minValue;\n const previousRangeMax = this.previousSlice.range.maxValue;\n // Check if the requested range is same as previously sliced range\n if (range.minValue === previousRangeMin && range.maxValue === previousRangeMax) {\n return this.previousSlice.fileSlice;\n }\n /**\n * The following check considers a possibility\n * of an upload failing after some of the bytes of the previous slice\n * were successfully uploaded.\n * Example - Previous slice range - `10 - 20`. Current requested range is `15 - 20`.\n */\n if (range.maxValue === previousRangeMax) {\n return this.previousSlice.fileSlice.slice(range.minValue, range.maxValue + 1);\n }\n /**\n * If an upload fails after some of the bytes of the previous slice\n * were successfully uploaded and the new Range.Maximum is greater than the previous Range.Maximum\n * Example - Previous slice range - `10 - 20`. Current requested range is `15 - 25`,\n * then read the bytes from position 15 to 20 from previousSlice.fileSlice and read bytes from position 21 to 25 from the Readable Stream\n */\n bufs.push(this.previousSlice.fileSlice.slice(range.minValue, previousRangeMax + 1));\n rangeSize = range.maxValue - previousRangeMax;\n }\n }\n if (this.content && this.content.readable) {\n if (this.content.readableLength >= rangeSize) {\n bufs.push(this.content.read(rangeSize));\n }\n else {\n bufs.push(yield this.readNBytesFromStream(rangeSize));\n }\n }\n else {\n throw new GraphClientError(\"Stream is not readable.\");\n }\n const slicedChunk = Buffer.concat(bufs);\n this.previousSlice = { fileSlice: slicedChunk, range };\n return slicedChunk;\n });\n }\n /**\n * @private\n * Reads the specified byte size from the stream\n * @param {number} size - The size of bytes to be read\n * @returns Buffer with the given length of data.\n */\n readNBytesFromStream(size) {\n return new Promise((resolve, reject) => {\n const chunks = [];\n let remainder = size;\n let length = 0;\n this.content.on(\"end\", () => {\n if (remainder > 0) {\n return reject(new GraphClientError(\"Stream ended before reading required range size\"));\n }\n });\n this.content.on(\"readable\", () => {\n /**\n * (chunk = this.content.read(size)) can return null if size of stream is less than 'size' parameter.\n * Read the remainder number of bytes from the stream iteratively as they are available.\n */\n let chunk;\n while (length < size && (chunk = this.content.read(remainder)) !== null) {\n length += chunk.length;\n chunks.push(chunk);\n if (remainder > 0) {\n remainder = size - length;\n }\n }\n if (length === size) {\n return resolve(Buffer.concat(chunks));\n }\n if (!this.content || !this.content.readable) {\n return reject(new GraphClientError(\"Error encountered while reading the stream during the upload\"));\n }\n });\n });\n }\n}\n//# sourceMappingURL=StreamUpload.js.map","/**\n * -------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the MIT License.\n * See License in the project root for license information.\n * -------------------------------------------------------------------------------------------\n */\nimport { __awaiter } from \"tslib\";\n/**\n * @class\n * Class for PageIterator\n */\nexport class PageIterator {\n /**\n * @public\n * @constructor\n * Creates new instance for PageIterator\n * @param {Client} client - The graph client instance\n * @param {PageCollection} pageCollection - The page collection object\n * @param {PageIteratorCallback} callBack - The callback function\n * @param {GraphRequestOptions} requestOptions - The request options\n * @returns An instance of a PageIterator\n */\n constructor(client, pageCollection, callback, requestOptions) {\n this.client = client;\n this.collection = pageCollection.value;\n this.nextLink = pageCollection[\"@odata.nextLink\"];\n this.deltaLink = pageCollection[\"@odata.deltaLink\"];\n this.callback = callback;\n this.cursor = 0;\n this.complete = false;\n this.requestOptions = requestOptions;\n }\n /**\n * @private\n * Iterates over a collection by enqueuing entries one by one and kicking the callback with the enqueued entry\n * @returns A boolean indicating the continue flag to process next page\n */\n iterationHelper() {\n if (this.collection === undefined) {\n return false;\n }\n let advance = true;\n while (advance && this.cursor < this.collection.length) {\n const item = this.collection[this.cursor];\n advance = this.callback(item);\n this.cursor++;\n }\n return advance;\n }\n /**\n * @private\n * @async\n * Helper to make a get request to fetch next page with nextLink url and update the page iterator instance with the returned response\n * @returns A promise that resolves to a response data with next page collection\n */\n fetchAndUpdateNextPageData() {\n return __awaiter(this, void 0, void 0, function* () {\n let graphRequest = this.client.api(this.nextLink);\n if (this.requestOptions) {\n if (this.requestOptions.headers) {\n graphRequest = graphRequest.headers(this.requestOptions.headers);\n }\n if (this.requestOptions.middlewareOptions) {\n graphRequest = graphRequest.middlewareOptions(this.requestOptions.middlewareOptions);\n }\n if (this.requestOptions.options) {\n graphRequest = graphRequest.options(this.requestOptions.options);\n }\n }\n const response = yield graphRequest.get();\n this.collection = response.value;\n this.cursor = 0;\n this.nextLink = response[\"@odata.nextLink\"];\n this.deltaLink = response[\"@odata.deltaLink\"];\n });\n }\n /**\n * @public\n * Getter to get the deltaLink in the current response\n * @returns A deltaLink which is being used to make delta requests in future\n */\n getDeltaLink() {\n return this.deltaLink;\n }\n /**\n * @public\n * @async\n * Iterates over the collection and kicks callback for each item on iteration. Fetches next set of data through nextLink and iterates over again\n * This happens until the nextLink is drained out or the user responds with a red flag to continue from callback\n * @returns A Promise that resolves to nothing on completion and throws error incase of any discrepancy.\n */\n iterate() {\n return __awaiter(this, void 0, void 0, function* () {\n let advance = this.iterationHelper();\n while (advance) {\n if (this.nextLink !== undefined) {\n yield this.fetchAndUpdateNextPageData();\n advance = this.iterationHelper();\n }\n else {\n advance = false;\n }\n }\n if (this.nextLink === undefined && this.cursor >= this.collection.length) {\n this.complete = true;\n }\n });\n }\n /**\n * @public\n * @async\n * To resume the iteration\n * Note: This internally calls the iterate method, It's just for more readability.\n * @returns A Promise that resolves to nothing on completion and throws error incase of any discrepancy\n */\n resume() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.iterate();\n });\n }\n /**\n * @public\n * To get the completeness status of the iterator\n * @returns Boolean indicating the completeness\n */\n isComplete() {\n return this.complete;\n }\n}\n//# sourceMappingURL=PageIterator.js.map","/**\n * -------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the MIT License.\n * See License in the project root for license information.\n * -------------------------------------------------------------------------------------------\n */\nimport { __awaiter } from \"tslib\";\n/**\n * @module CustomAuthenticationProvider\n */\nimport { GraphClientError } from \"./GraphClientError\";\n/**\n * @class\n * Class representing CustomAuthenticationProvider\n * @extends AuthenticationProvider\n */\nexport class CustomAuthenticationProvider {\n /**\n * @public\n * @constructor\n * Creates an instance of CustomAuthenticationProvider\n * @param {AuthProviderCallback} provider - An authProvider function\n * @returns An instance of CustomAuthenticationProvider\n */\n constructor(provider) {\n this.provider = provider;\n }\n /**\n * @public\n * @async\n * To get the access token\n * @returns The promise that resolves to an access token\n */\n getAccessToken() {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise((resolve, reject) => {\n this.provider((error, accessToken) => __awaiter(this, void 0, void 0, function* () {\n if (accessToken) {\n resolve(accessToken);\n }\n else {\n if (!error) {\n const invalidTokenMessage = \"Access token is undefined or empty.\\\n\t\t\t\t\t\tPlease provide a valid token.\\\n\t\t\t\t\t\tFor more help - https://github.com/microsoftgraph/msgraph-sdk-javascript/blob/dev/docs/CustomAuthenticationProvider.md\";\n error = new GraphClientError(invalidTokenMessage);\n }\n const err = yield GraphClientError.setGraphClientError(error);\n reject(err);\n }\n }));\n });\n });\n }\n}\n//# sourceMappingURL=CustomAuthenticationProvider.js.map","/**\n * -------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the MIT License.\n * See License in the project root for license information.\n * -------------------------------------------------------------------------------------------\n */\n/**\n * @module GraphError\n */\n/**\n * @class\n * Class for GraphError\n * @NOTE: This is NOT what is returned from the Graph\n * GraphError is created from parsing JSON errors returned from the graph\n * Some fields are renamed ie, \"request-id\" => requestId so you can use dot notation\n */\nexport class GraphError extends Error {\n /**\n * @public\n * @constructor\n * Creates an instance of GraphError\n * @param {number} [statusCode = -1] - The status code of the error\n * @param {string} [message] - The message of the error\n * @param {Error} [baseError] - The base error\n * @returns An instance of GraphError\n */\n constructor(statusCode = -1, message, baseError) {\n super(message || (baseError && baseError.message));\n // https://github.com/Microsoft/TypeScript/wiki/Breaking-Changes#extending-built-ins-like-error-array-and-map-may-no-longer-work\n Object.setPrototypeOf(this, GraphError.prototype);\n this.statusCode = statusCode;\n this.code = null;\n this.requestId = null;\n this.date = new Date();\n this.body = null;\n this.stack = baseError ? baseError.stack : this.stack;\n }\n}\n//# sourceMappingURL=GraphError.js.map","/**\n * -------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the MIT License.\n * See License in the project root for license information.\n * -------------------------------------------------------------------------------------------\n */\nimport { __awaiter } from \"tslib\";\n/**\n * @module GraphErrorHandler\n */\nimport { GraphError } from \"./GraphError\";\n/**\n * @class\n * Class for GraphErrorHandler\n */\nexport class GraphErrorHandler {\n /**\n * @private\n * @static\n * Populates the GraphError instance with Error instance values\n * @param {Error} error - The error returned by graph service or some native error\n * @param {number} [statusCode] - The status code of the response\n * @returns The GraphError instance\n */\n static constructError(error, statusCode, rawResponse) {\n const gError = new GraphError(statusCode, \"\", error);\n if (error.name !== undefined) {\n gError.code = error.name;\n }\n gError.body = error.toString();\n gError.date = new Date();\n gError.headers = rawResponse === null || rawResponse === void 0 ? void 0 : rawResponse.headers;\n return gError;\n }\n /**\n * @private\n * @static\n * @async\n * Populates the GraphError instance from the Error returned by graph service\n * @param {GraphAPIErrorResponse} graphError - The error possibly returned by graph service or some native error\n * @param {number} statusCode - The status code of the response\n * @returns A promise that resolves to GraphError instance\n *\n * Example error for https://graph.microsoft.com/v1.0/me/events?$top=3&$search=foo\n * {\n * \"error\": {\n * \"code\": \"SearchEvents\",\n * \"message\": \"The parameter $search is not currently supported on the Events resource.\",\n * \"innerError\": {\n * \"request-id\": \"b31c83fd-944c-4663-aa50-5d9ceb367e19\",\n * \"date\": \"2016-11-17T18:37:45\"\n * }\n * }\n * }\n */\n static constructErrorFromResponse(graphError, statusCode, rawResponse) {\n const error = graphError.error;\n const gError = new GraphError(statusCode, error.message);\n gError.code = error.code;\n if (error.innerError !== undefined) {\n gError.requestId = error.innerError[\"request-id\"];\n gError.date = new Date(error.innerError.date);\n }\n gError.body = JSON.stringify(error);\n gError.headers = rawResponse === null || rawResponse === void 0 ? void 0 : rawResponse.headers;\n return gError;\n }\n /**\n * @public\n * @static\n * @async\n * To get the GraphError object\n * Reference - https://docs.microsoft.com/en-us/graph/errors\n * @param {any} [error = null] - The error returned by graph service or some native error\n * @param {number} [statusCode = -1] - The status code of the response\n * @param {GraphRequestCallback} [callback] - The graph request callback function\n * @returns A promise that resolves to GraphError instance\n */\n static getError(error = null, statusCode = -1, callback, rawResponse) {\n return __awaiter(this, void 0, void 0, function* () {\n let gError;\n if (error && error.error) {\n gError = GraphErrorHandler.constructErrorFromResponse(error, statusCode, rawResponse);\n }\n else if (error instanceof Error) {\n gError = GraphErrorHandler.constructError(error, statusCode, rawResponse);\n }\n else {\n gError = new GraphError(statusCode);\n gError.body = error; // if a custom error is passed which is not instance of Error object or a graph API response\n }\n if (typeof callback === \"function\") {\n callback(gError, null);\n }\n else {\n return gError;\n }\n });\n }\n}\n//# sourceMappingURL=GraphErrorHandler.js.map","/**\n * -------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the MIT License.\n * See License in the project root for license information.\n * -------------------------------------------------------------------------------------------\n */\nimport { __awaiter } from \"tslib\";\n/**\n * @module GraphRequest\n */\nimport { GraphClientError } from \"./GraphClientError\";\nimport { GraphErrorHandler } from \"./GraphErrorHandler\";\nimport { oDataQueryNames, serializeContent, urlJoin } from \"./GraphRequestUtil\";\nimport { GraphResponseHandler } from \"./GraphResponseHandler\";\nimport { MiddlewareControl } from \"./middleware/MiddlewareControl\";\nimport { RequestMethod } from \"./RequestMethod\";\nimport { ResponseType } from \"./ResponseType\";\n/**\n * @class\n * A Class representing GraphRequest\n */\nexport class GraphRequest {\n /**\n * @public\n * @constructor\n * Creates an instance of GraphRequest\n * @param {HTTPClient} httpClient - The HTTPClient instance\n * @param {ClientOptions} config - The options for making request\n * @param {string} path - A path string\n */\n constructor(httpClient, config, path) {\n /**\n * @private\n * Parses the path string and creates URLComponents out of it\n * @param {string} path - The request path string\n * @returns Nothing\n */\n this.parsePath = (path) => {\n // Strips out the base of the url if they passed in\n if (path.indexOf(\"https://\") !== -1) {\n path = path.replace(\"https://\", \"\");\n // Find where the host ends\n const endOfHostStrPos = path.indexOf(\"/\");\n if (endOfHostStrPos !== -1) {\n // Parse out the host\n this.urlComponents.host = \"https://\" + path.substring(0, endOfHostStrPos);\n // Strip the host from path\n path = path.substring(endOfHostStrPos + 1, path.length);\n }\n // Remove the following version\n const endOfVersionStrPos = path.indexOf(\"/\");\n if (endOfVersionStrPos !== -1) {\n // Parse out the version\n this.urlComponents.version = path.substring(0, endOfVersionStrPos);\n // Strip version from path\n path = path.substring(endOfVersionStrPos + 1, path.length);\n }\n }\n // Strip out any leading \"/\"\n if (path.charAt(0) === \"/\") {\n path = path.substr(1);\n }\n const queryStrPos = path.indexOf(\"?\");\n if (queryStrPos === -1) {\n // No query string\n this.urlComponents.path = path;\n }\n else {\n this.urlComponents.path = path.substr(0, queryStrPos);\n // Capture query string into oDataQueryParams and otherURLQueryParams\n const queryParams = path.substring(queryStrPos + 1, path.length).split(\"&\");\n for (const queryParam of queryParams) {\n this.parseQueryParameter(queryParam);\n }\n }\n };\n this.httpClient = httpClient;\n this.config = config;\n this.urlComponents = {\n host: this.config.baseUrl,\n version: this.config.defaultVersion,\n oDataQueryParams: {},\n otherURLQueryParams: {},\n otherURLQueryOptions: [],\n };\n this._headers = {};\n this._options = {};\n this._middlewareOptions = [];\n this.parsePath(path);\n }\n /**\n * @private\n * Adds the query parameter as comma separated values\n * @param {string} propertyName - The name of a property\n * @param {string|string[]} propertyValue - The vale of a property\n * @param {IArguments} additionalProperties - The additional properties\n * @returns Nothing\n */\n addCsvQueryParameter(propertyName, propertyValue, additionalProperties) {\n // If there are already $propertyName value there, append a \",\"\n this.urlComponents.oDataQueryParams[propertyName] = this.urlComponents.oDataQueryParams[propertyName] ? this.urlComponents.oDataQueryParams[propertyName] + \",\" : \"\";\n let allValues = [];\n if (additionalProperties.length > 1 && typeof propertyValue === \"string\") {\n allValues = Array.prototype.slice.call(additionalProperties);\n }\n else if (typeof propertyValue === \"string\") {\n allValues.push(propertyValue);\n }\n else {\n allValues = allValues.concat(propertyValue);\n }\n this.urlComponents.oDataQueryParams[propertyName] += allValues.join(\",\");\n }\n /**\n * @private\n * Builds the full url from the URLComponents to make a request\n * @returns The URL string that is qualified to make a request to graph endpoint\n */\n buildFullUrl() {\n const url = urlJoin([this.urlComponents.host, this.urlComponents.version, this.urlComponents.path]) + this.createQueryString();\n if (this.config.debugLogging) {\n console.log(url);\n }\n return url;\n }\n /**\n * @private\n * Builds the query string from the URLComponents\n * @returns The Constructed query string\n */\n createQueryString() {\n // Combining query params from oDataQueryParams and otherURLQueryParams\n const urlComponents = this.urlComponents;\n const query = [];\n if (Object.keys(urlComponents.oDataQueryParams).length !== 0) {\n for (const property in urlComponents.oDataQueryParams) {\n if (Object.prototype.hasOwnProperty.call(urlComponents.oDataQueryParams, property)) {\n query.push(property + \"=\" + urlComponents.oDataQueryParams[property]);\n }\n }\n }\n if (Object.keys(urlComponents.otherURLQueryParams).length !== 0) {\n for (const property in urlComponents.otherURLQueryParams) {\n if (Object.prototype.hasOwnProperty.call(urlComponents.otherURLQueryParams, property)) {\n query.push(property + \"=\" + urlComponents.otherURLQueryParams[property]);\n }\n }\n }\n if (urlComponents.otherURLQueryOptions.length !== 0) {\n for (const str of urlComponents.otherURLQueryOptions) {\n query.push(str);\n }\n }\n return query.length > 0 ? \"?\" + query.join(\"&\") : \"\";\n }\n /**\n * @private\n * Parses the query parameters to set the urlComponents property of the GraphRequest object\n * @param {string|KeyValuePairObjectStringNumber} queryDictionaryOrString - The query parameter\n * @returns The same GraphRequest instance that is being called with\n */\n parseQueryParameter(queryDictionaryOrString) {\n if (typeof queryDictionaryOrString === \"string\") {\n if (queryDictionaryOrString.charAt(0) === \"?\") {\n queryDictionaryOrString = queryDictionaryOrString.substring(1);\n }\n if (queryDictionaryOrString.indexOf(\"&\") !== -1) {\n const queryParams = queryDictionaryOrString.split(\"&\");\n for (const str of queryParams) {\n this.parseQueryParamenterString(str);\n }\n }\n else {\n this.parseQueryParamenterString(queryDictionaryOrString);\n }\n }\n else if (queryDictionaryOrString.constructor === Object) {\n for (const key in queryDictionaryOrString) {\n if (Object.prototype.hasOwnProperty.call(queryDictionaryOrString, key)) {\n this.setURLComponentsQueryParamater(key, queryDictionaryOrString[key]);\n }\n }\n }\n return this;\n }\n /**\n * @private\n * Parses the query parameter of string type to set the urlComponents property of the GraphRequest object\n * @param {string} queryParameter - the query parameters\n * returns nothing\n */\n parseQueryParamenterString(queryParameter) {\n /* The query key-value pair must be split on the first equals sign to avoid errors in parsing nested query parameters.\n Example-> \"/me?$expand=home($select=city)\" */\n if (this.isValidQueryKeyValuePair(queryParameter)) {\n const indexOfFirstEquals = queryParameter.indexOf(\"=\");\n const paramKey = queryParameter.substring(0, indexOfFirstEquals);\n const paramValue = queryParameter.substring(indexOfFirstEquals + 1);\n this.setURLComponentsQueryParamater(paramKey, paramValue);\n }\n else {\n /* Push values which are not of key-value structure.\n Example-> Handle an invalid input->.query(test), .query($select($select=name)) and let the Graph API respond with the error in the URL*/\n this.urlComponents.otherURLQueryOptions.push(queryParameter);\n }\n }\n /**\n * @private\n * Sets values into the urlComponents property of GraphRequest object.\n * @param {string} paramKey - the query parameter key\n * @param {string} paramValue - the query paramter value\n * @returns nothing\n */\n setURLComponentsQueryParamater(paramKey, paramValue) {\n if (oDataQueryNames.indexOf(paramKey) !== -1) {\n const currentValue = this.urlComponents.oDataQueryParams[paramKey];\n const isValueAppendable = currentValue && (paramKey === \"$expand\" || paramKey === \"$select\" || paramKey === \"$orderby\");\n this.urlComponents.oDataQueryParams[paramKey] = isValueAppendable ? currentValue + \",\" + paramValue : paramValue;\n }\n else {\n this.urlComponents.otherURLQueryParams[paramKey] = paramValue;\n }\n }\n /**\n * @private\n * Check if the query parameter string has a valid key-value structure\n * @param {string} queryString - the query parameter string. Example -> \"name=value\"\n * #returns true if the query string has a valid key-value structure else false\n */\n isValidQueryKeyValuePair(queryString) {\n const indexofFirstEquals = queryString.indexOf(\"=\");\n if (indexofFirstEquals === -1) {\n return false;\n }\n const indexofOpeningParanthesis = queryString.indexOf(\"(\");\n if (indexofOpeningParanthesis !== -1 && queryString.indexOf(\"(\") < indexofFirstEquals) {\n // Example -> .query($select($expand=true));\n return false;\n }\n return true;\n }\n /**\n * @private\n * Updates the custom headers and options for a request\n * @param {FetchOptions} options - The request options object\n * @returns Nothing\n */\n updateRequestOptions(options) {\n const optionsHeaders = Object.assign({}, options.headers);\n if (this.config.fetchOptions !== undefined) {\n const fetchOptions = Object.assign({}, this.config.fetchOptions);\n Object.assign(options, fetchOptions);\n if (typeof this.config.fetchOptions.headers !== undefined) {\n options.headers = Object.assign({}, this.config.fetchOptions.headers);\n }\n }\n Object.assign(options, this._options);\n if (options.headers !== undefined) {\n Object.assign(optionsHeaders, options.headers);\n }\n Object.assign(optionsHeaders, this._headers);\n options.headers = optionsHeaders;\n }\n /**\n * @private\n * @async\n * Adds the custom headers and options to the request and makes the HTTPClient send request call\n * @param {RequestInfo} request - The request url string or the Request object value\n * @param {FetchOptions} options - The options to make a request\n * @param {GraphRequestCallback} [callback] - The callback function to be called in response with async call\n * @returns A promise that resolves to the response content\n */\n send(request, options, callback) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n let rawResponse;\n const middlewareControl = new MiddlewareControl(this._middlewareOptions);\n this.updateRequestOptions(options);\n const customHosts = (_a = this.config) === null || _a === void 0 ? void 0 : _a.customHosts;\n try {\n const context = yield this.httpClient.sendRequest({\n request,\n options,\n middlewareControl,\n customHosts,\n });\n rawResponse = context.response;\n const response = yield GraphResponseHandler.getResponse(rawResponse, this._responseType, callback);\n return response;\n }\n catch (error) {\n if (error instanceof GraphClientError) {\n throw error;\n }\n let statusCode;\n if (rawResponse) {\n statusCode = rawResponse.status;\n }\n const gError = yield GraphErrorHandler.getError(error, statusCode, callback, rawResponse);\n throw gError;\n }\n });\n }\n /**\n * @private\n * Checks if the content-type is present in the _headers property. If not present, defaults the content-type to application/json\n * @param none\n * @returns nothing\n */\n setHeaderContentType() {\n if (!this._headers) {\n this.header(\"Content-Type\", \"application/json\");\n return;\n }\n const headerKeys = Object.keys(this._headers);\n for (const headerKey of headerKeys) {\n if (headerKey.toLowerCase() === \"content-type\") {\n return;\n }\n }\n // Default the content-type to application/json in case the content-type is not present in the header\n this.header(\"Content-Type\", \"application/json\");\n }\n /**\n * @public\n * Sets the custom header for a request\n * @param {string} headerKey - A header key\n * @param {string} headerValue - A header value\n * @returns The same GraphRequest instance that is being called with\n */\n header(headerKey, headerValue) {\n this._headers[headerKey] = headerValue;\n return this;\n }\n /**\n * @public\n * Sets the custom headers for a request\n * @param {KeyValuePairObjectStringNumber | HeadersInit} headers - The request headers\n * @returns The same GraphRequest instance that is being called with\n */\n headers(headers) {\n for (const key in headers) {\n if (Object.prototype.hasOwnProperty.call(headers, key)) {\n this._headers[key] = headers[key];\n }\n }\n return this;\n }\n /**\n * @public\n * Sets the option for making a request\n * @param {string} key - The key value\n * @param {any} value - The value\n * @returns The same GraphRequest instance that is being called with\n */\n option(key, value) {\n this._options[key] = value;\n return this;\n }\n /**\n * @public\n * Sets the options for making a request\n * @param {{ [key: string]: any }} options - The options key value pair\n * @returns The same GraphRequest instance that is being called with\n */\n options(options) {\n for (const key in options) {\n if (Object.prototype.hasOwnProperty.call(options, key)) {\n this._options[key] = options[key];\n }\n }\n return this;\n }\n /**\n * @public\n * Sets the middleware options for a request\n * @param {MiddlewareOptions[]} options - The array of middleware options\n * @returns The same GraphRequest instance that is being called with\n */\n middlewareOptions(options) {\n this._middlewareOptions = options;\n return this;\n }\n /**\n * @public\n * Sets the api endpoint version for a request\n * @param {string} version - The version value\n * @returns The same GraphRequest instance that is being called with\n */\n version(version) {\n this.urlComponents.version = version;\n return this;\n }\n /**\n * @public\n * Sets the api endpoint version for a request\n * @param {ResponseType} responseType - The response type value\n * @returns The same GraphRequest instance that is being called with\n */\n responseType(responseType) {\n this._responseType = responseType;\n return this;\n }\n /**\n * @public\n * To add properties for select OData Query param\n * @param {string|string[]} properties - The Properties value\n * @returns The same GraphRequest instance that is being called with, after adding the properties for $select query\n */\n /*\n * Accepts .select(\"displayName,birthday\")\n * and .select([\"displayName\", \"birthday\"])\n * and .select(\"displayName\", \"birthday\")\n *\n */\n select(properties) {\n this.addCsvQueryParameter(\"$select\", properties, arguments);\n return this;\n }\n /**\n * @public\n * To add properties for expand OData Query param\n * @param {string|string[]} properties - The Properties value\n * @returns The same GraphRequest instance that is being called with, after adding the properties for $expand query\n */\n expand(properties) {\n this.addCsvQueryParameter(\"$expand\", properties, arguments);\n return this;\n }\n /**\n * @public\n * To add properties for orderby OData Query param\n * @param {string|string[]} properties - The Properties value\n * @returns The same GraphRequest instance that is being called with, after adding the properties for $orderby query\n */\n orderby(properties) {\n this.addCsvQueryParameter(\"$orderby\", properties, arguments);\n return this;\n }\n /**\n * @public\n * To add query string for filter OData Query param. The request URL accepts only one $filter Odata Query option and its value is set to the most recently passed filter query string.\n * @param {string} filterStr - The filter query string\n * @returns The same GraphRequest instance that is being called with, after adding the $filter query\n */\n filter(filterStr) {\n this.urlComponents.oDataQueryParams.$filter = filterStr;\n return this;\n }\n /**\n * @public\n * To add criterion for search OData Query param. The request URL accepts only one $search Odata Query option and its value is set to the most recently passed search criterion string.\n * @param {string} searchStr - The search criterion string\n * @returns The same GraphRequest instance that is being called with, after adding the $search query criteria\n */\n search(searchStr) {\n this.urlComponents.oDataQueryParams.$search = searchStr;\n return this;\n }\n /**\n * @public\n * To add number for top OData Query param. The request URL accepts only one $top Odata Query option and its value is set to the most recently passed number value.\n * @param {number} n - The number value\n * @returns The same GraphRequest instance that is being called with, after adding the number for $top query\n */\n top(n) {\n this.urlComponents.oDataQueryParams.$top = n;\n return this;\n }\n /**\n * @public\n * To add number for skip OData Query param. The request URL accepts only one $skip Odata Query option and its value is set to the most recently passed number value.\n * @param {number} n - The number value\n * @returns The same GraphRequest instance that is being called with, after adding the number for the $skip query\n */\n skip(n) {\n this.urlComponents.oDataQueryParams.$skip = n;\n return this;\n }\n /**\n * @public\n * To add token string for skipToken OData Query param. The request URL accepts only one $skipToken Odata Query option and its value is set to the most recently passed token value.\n * @param {string} token - The token value\n * @returns The same GraphRequest instance that is being called with, after adding the token string for $skipToken query option\n */\n skipToken(token) {\n this.urlComponents.oDataQueryParams.$skipToken = token;\n return this;\n }\n /**\n * @public\n * To add boolean for count OData Query param. The URL accepts only one $count Odata Query option and its value is set to the most recently passed boolean value.\n * @param {boolean} isCount - The count boolean\n * @returns The same GraphRequest instance that is being called with, after adding the boolean value for the $count query option\n */\n count(isCount = true) {\n this.urlComponents.oDataQueryParams.$count = isCount.toString();\n return this;\n }\n /**\n * @public\n * Appends query string to the urlComponent\n * @param {string|KeyValuePairObjectStringNumber} queryDictionaryOrString - The query value\n * @returns The same GraphRequest instance that is being called with, after appending the query string to the url component\n */\n /*\n * Accepts .query(\"displayName=xyz\")\n * and .select({ name: \"value\" })\n */\n query(queryDictionaryOrString) {\n return this.parseQueryParameter(queryDictionaryOrString);\n }\n /**\n * @public\n * @async\n * Makes a http request with GET method\n * @param {GraphRequestCallback} [callback] - The callback function to be called in response with async call\n * @returns A promise that resolves to the get response\n */\n get(callback) {\n return __awaiter(this, void 0, void 0, function* () {\n const url = this.buildFullUrl();\n const options = {\n method: RequestMethod.GET,\n };\n const response = yield this.send(url, options, callback);\n return response;\n });\n }\n /**\n * @public\n * @async\n * Makes a http request with POST method\n * @param {any} content - The content that needs to be sent with the request\n * @param {GraphRequestCallback} [callback] - The callback function to be called in response with async call\n * @returns A promise that resolves to the post response\n */\n post(content, callback) {\n return __awaiter(this, void 0, void 0, function* () {\n const url = this.buildFullUrl();\n const options = {\n method: RequestMethod.POST,\n body: serializeContent(content),\n };\n const className = content && content.constructor && content.constructor.name;\n if (className === \"FormData\") {\n // Content-Type headers should not be specified in case the of FormData type content\n options.headers = {};\n }\n else {\n this.setHeaderContentType();\n options.headers = this._headers;\n }\n return yield this.send(url, options, callback);\n });\n }\n /**\n * @public\n * @async\n * Alias for Post request call\n * @param {any} content - The content that needs to be sent with the request\n * @param {GraphRequestCallback} [callback] - The callback function to be called in response with async call\n * @returns A promise that resolves to the post response\n */\n create(content, callback) {\n return __awaiter(this, void 0, void 0, function* () {\n return yield this.post(content, callback);\n });\n }\n /**\n * @public\n * @async\n * Makes http request with PUT method\n * @param {any} content - The content that needs to be sent with the request\n * @param {GraphRequestCallback} [callback] - The callback function to be called in response with async call\n * @returns A promise that resolves to the put response\n */\n put(content, callback) {\n return __awaiter(this, void 0, void 0, function* () {\n const url = this.buildFullUrl();\n this.setHeaderContentType();\n const options = {\n method: RequestMethod.PUT,\n body: serializeContent(content),\n };\n return yield this.send(url, options, callback);\n });\n }\n /**\n * @public\n * @async\n * Makes http request with PATCH method\n * @param {any} content - The content that needs to be sent with the request\n * @param {GraphRequestCallback} [callback] - The callback function to be called in response with async call\n * @returns A promise that resolves to the patch response\n */\n patch(content, callback) {\n return __awaiter(this, void 0, void 0, function* () {\n const url = this.buildFullUrl();\n this.setHeaderContentType();\n const options = {\n method: RequestMethod.PATCH,\n body: serializeContent(content),\n };\n return yield this.send(url, options, callback);\n });\n }\n /**\n * @public\n * @async\n * Alias for PATCH request\n * @param {any} content - The content that needs to be sent with the request\n * @param {GraphRequestCallback} [callback] - The callback function to be called in response with async call\n * @returns A promise that resolves to the patch response\n */\n update(content, callback) {\n return __awaiter(this, void 0, void 0, function* () {\n return yield this.patch(content, callback);\n });\n }\n /**\n * @public\n * @async\n * Makes http request with DELETE method\n * @param {GraphRequestCallback} [callback] - The callback function to be called in response with async call\n * @returns A promise that resolves to the delete response\n */\n delete(callback) {\n return __awaiter(this, void 0, void 0, function* () {\n const url = this.buildFullUrl();\n const options = {\n method: RequestMethod.DELETE,\n };\n return yield this.send(url, options, callback);\n });\n }\n /**\n * @public\n * @async\n * Alias for delete request call\n * @param {GraphRequestCallback} [callback] - The callback function to be called in response with async call\n * @returns A promise that resolves to the delete response\n */\n del(callback) {\n return __awaiter(this, void 0, void 0, function* () {\n return yield this.delete(callback);\n });\n }\n /**\n * @public\n * @async\n * Makes a http request with GET method to read response as a stream.\n * @param {GraphRequestCallback} [callback] - The callback function to be called in response with async call\n * @returns A promise that resolves to the getStream response\n */\n getStream(callback) {\n return __awaiter(this, void 0, void 0, function* () {\n const url = this.buildFullUrl();\n const options = {\n method: RequestMethod.GET,\n };\n this.responseType(ResponseType.STREAM);\n return yield this.send(url, options, callback);\n });\n }\n /**\n * @public\n * @async\n * Makes a http request with GET method to read response as a stream.\n * @param {any} stream - The stream instance\n * @param {GraphRequestCallback} [callback] - The callback function to be called in response with async call\n * @returns A promise that resolves to the putStream response\n */\n putStream(stream, callback) {\n return __awaiter(this, void 0, void 0, function* () {\n const url = this.buildFullUrl();\n const options = {\n method: RequestMethod.PUT,\n headers: {\n \"Content-Type\": \"application/octet-stream\",\n },\n body: stream,\n };\n return yield this.send(url, options, callback);\n });\n }\n}\n//# sourceMappingURL=GraphRequest.js.map","/**\n * -------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the MIT License.\n * See License in the project root for license information.\n * -------------------------------------------------------------------------------------------\n */\nimport { __awaiter } from \"tslib\";\n/**\n * @class\n * Class representing HTTPClient\n */\nexport class HTTPClient {\n /**\n * @public\n * @constructor\n * Creates an instance of a HTTPClient\n * @param {...Middleware} middleware - The first middleware of the middleware chain or a sequence of all the Middleware handlers\n */\n constructor(...middleware) {\n if (!middleware || !middleware.length) {\n const error = new Error();\n error.name = \"InvalidMiddlewareChain\";\n error.message = \"Please provide a default middleware chain or custom middleware chain\";\n throw error;\n }\n this.setMiddleware(...middleware);\n }\n /**\n * @private\n * Processes the middleware parameter passed to set this.middleware property\n * The calling function should validate if middleware is not undefined or not empty.\n * @param {...Middleware} middleware - The middleware passed\n * @returns Nothing\n */\n setMiddleware(...middleware) {\n if (middleware.length > 1) {\n this.parseMiddleWareArray(middleware);\n }\n else {\n this.middleware = middleware[0];\n }\n }\n /**\n * @private\n * Processes the middleware array to construct the chain\n * and sets this.middleware property to the first middleware handler of the array\n * The calling function should validate if middleware is not undefined or not empty\n * @param {Middleware[]} middlewareArray - The array of middleware handlers\n * @returns Nothing\n */\n parseMiddleWareArray(middlewareArray) {\n middlewareArray.forEach((element, index) => {\n if (index < middlewareArray.length - 1) {\n element.setNext(middlewareArray[index + 1]);\n }\n });\n this.middleware = middlewareArray[0];\n }\n /**\n * @public\n * @async\n * To send the request through the middleware chain\n * @param {Context} context - The context of a request\n * @returns A promise that resolves to the Context\n */\n sendRequest(context) {\n return __awaiter(this, void 0, void 0, function* () {\n if (typeof context.request === \"string\" && context.options === undefined) {\n const error = new Error();\n error.name = \"InvalidRequestOptions\";\n error.message = \"Unable to execute the middleware, Please provide valid options for a request\";\n throw error;\n }\n yield this.middleware.execute(context);\n return context;\n });\n }\n}\n//# sourceMappingURL=HTTPClient.js.map","/**\n * -------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the MIT License.\n * See License in the project root for license information.\n * -------------------------------------------------------------------------------------------\n */\n/**\n * @module HTTPClientFactory\n */\nimport { HTTPClient } from \"./HTTPClient\";\nimport { AuthenticationHandler } from \"./middleware/AuthenticationHandler\";\nimport { HTTPMessageHandler } from \"./middleware/HTTPMessageHandler\";\nimport { RedirectHandlerOptions } from \"./middleware/options/RedirectHandlerOptions\";\nimport { RetryHandlerOptions } from \"./middleware/options/RetryHandlerOptions\";\nimport { RedirectHandler } from \"./middleware/RedirectHandler\";\nimport { RetryHandler } from \"./middleware/RetryHandler\";\nimport { TelemetryHandler } from \"./middleware/TelemetryHandler\";\n/**\n * @private\n * To check whether the environment is node or not\n * @returns A boolean representing the environment is node or not\n */\nconst isNodeEnvironment = () => {\n return typeof process === \"object\" && typeof require === \"function\";\n};\n/**\n * @class\n * Class representing HTTPClientFactory\n */\nexport class HTTPClientFactory {\n /**\n * @public\n * @static\n * Creates HTTPClient with default middleware chain\n * @param {AuthenticationProvider} authProvider - The authentication provider instance\n * @returns A HTTPClient instance\n *\n * NOTE: These are the things that we need to remember while doing modifications in the below default pipeline.\n * \t\t* HTTPMessageHandler should be the last one in the middleware pipeline, because this makes the actual network call of the request\n * \t\t* TelemetryHandler should be the one prior to the last middleware in the chain, because this is the one which actually collects and appends the usage flag and placing this handler \t*\t\t before making the actual network call ensures that the usage of all features are recorded in the flag.\n * \t\t* The best place for AuthenticationHandler is in the starting of the pipeline, because every other handler might have to work for multiple times for a request but the auth token for\n * \t\t them will remain same. For example, Retry and Redirect handlers might be working multiple times for a request based on the response but their auth token would remain same.\n */\n static createWithAuthenticationProvider(authProvider) {\n const authenticationHandler = new AuthenticationHandler(authProvider);\n const retryHandler = new RetryHandler(new RetryHandlerOptions());\n const telemetryHandler = new TelemetryHandler();\n const httpMessageHandler = new HTTPMessageHandler();\n authenticationHandler.setNext(retryHandler);\n if (isNodeEnvironment()) {\n const redirectHandler = new RedirectHandler(new RedirectHandlerOptions());\n retryHandler.setNext(redirectHandler);\n redirectHandler.setNext(telemetryHandler);\n }\n else {\n retryHandler.setNext(telemetryHandler);\n }\n telemetryHandler.setNext(httpMessageHandler);\n return HTTPClientFactory.createWithMiddleware(authenticationHandler);\n }\n /**\n * @public\n * @static\n * Creates a middleware chain with the given one\n * @property {...Middleware} middleware - The first middleware of the middleware chain or a sequence of all the Middleware handlers\n * @returns A HTTPClient instance\n */\n static createWithMiddleware(...middleware) {\n // Middleware should not empty or undefined. This is check is present in the HTTPClient constructor.\n return new HTTPClient(...middleware);\n }\n}\n//# sourceMappingURL=HTTPClientFactory.js.map","/**\n * -------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the MIT License.\n * See License in the project root for license information.\n * -------------------------------------------------------------------------------------------\n */\n/**\n * @module Client\n */\nimport { GRAPH_API_VERSION, GRAPH_BASE_URL } from \"./Constants\";\nimport { CustomAuthenticationProvider } from \"./CustomAuthenticationProvider\";\nimport { GraphRequest } from \"./GraphRequest\";\nimport { HTTPClient } from \"./HTTPClient\";\nimport { HTTPClientFactory } from \"./HTTPClientFactory\";\nimport { validatePolyFilling } from \"./ValidatePolyFilling\";\nexport class Client {\n /**\n * @public\n * @static\n * To create a client instance with options and initializes the default middleware chain\n * @param {Options} options - The options for client instance\n * @returns The Client instance\n */\n static init(options) {\n const clientOptions = {};\n for (const i in options) {\n if (Object.prototype.hasOwnProperty.call(options, i)) {\n clientOptions[i] = i === \"authProvider\" ? new CustomAuthenticationProvider(options[i]) : options[i];\n }\n }\n return Client.initWithMiddleware(clientOptions);\n }\n /**\n * @public\n * @static\n * To create a client instance with the Client Options\n * @param {ClientOptions} clientOptions - The options object for initializing the client\n * @returns The Client instance\n */\n static initWithMiddleware(clientOptions) {\n return new Client(clientOptions);\n }\n /**\n * @private\n * @constructor\n * Creates an instance of Client\n * @param {ClientOptions} clientOptions - The options to instantiate the client object\n */\n constructor(clientOptions) {\n /**\n * @private\n * A member which stores the Client instance options\n */\n this.config = {\n baseUrl: GRAPH_BASE_URL,\n debugLogging: false,\n defaultVersion: GRAPH_API_VERSION,\n };\n validatePolyFilling();\n for (const key in clientOptions) {\n if (Object.prototype.hasOwnProperty.call(clientOptions, key)) {\n this.config[key] = clientOptions[key];\n }\n }\n let httpClient;\n if (clientOptions.authProvider !== undefined && clientOptions.middleware !== undefined) {\n const error = new Error();\n error.name = \"AmbiguityInInitialization\";\n error.message = \"Unable to Create Client, Please provide either authentication provider for default middleware chain or custom middleware chain not both\";\n throw error;\n }\n else if (clientOptions.authProvider !== undefined) {\n httpClient = HTTPClientFactory.createWithAuthenticationProvider(clientOptions.authProvider);\n }\n else if (clientOptions.middleware !== undefined) {\n httpClient = new HTTPClient(...[].concat(clientOptions.middleware));\n }\n else {\n const error = new Error();\n error.name = \"InvalidMiddlewareChain\";\n error.message = \"Unable to Create Client, Please provide either authentication provider for default middleware chain or custom middleware chain\";\n throw error;\n }\n this.httpClient = httpClient;\n }\n /**\n * @public\n * Entry point to make requests\n * @param {string} path - The path string value\n * @returns The graph request instance\n */\n api(path) {\n return new GraphRequest(this.httpClient, this.config, path);\n }\n}\n//# sourceMappingURL=Client.js.map","/**\n * -------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the MIT License.\n * See License in the project root for license information.\n * -------------------------------------------------------------------------------------------\n */\n/**\n * @constant\n * @function\n * Validates availability of Promise and fetch in global context\n * @returns The true in case the Promise and fetch available, otherwise throws error\n */\nexport const validatePolyFilling = () => {\n if (typeof Promise === \"undefined\" && typeof fetch === \"undefined\") {\n const error = new Error(\"Library cannot function without Promise and fetch. So, please provide polyfill for them.\");\n error.name = \"PolyFillNotAvailable\";\n throw error;\n }\n else if (typeof Promise === \"undefined\") {\n const error = new Error(\"Library cannot function without Promise. So, please provide polyfill for it.\");\n error.name = \"PolyFillNotAvailable\";\n throw error;\n }\n else if (typeof fetch === \"undefined\") {\n const error = new Error(\"Library cannot function without fetch. So, please provide polyfill for it.\");\n error.name = \"PolyFillNotAvailable\";\n throw error;\n }\n return true;\n};\n//# sourceMappingURL=ValidatePolyFilling.js.map","// Exporting constants directly to maintain compatability with v1\n// These are deprecated. Please don't add any new codes here.\n/**\n * @deprecated Please use StatusCodes.ACCEPTED\n *\n * */\nexport var ACCEPTED = 202;\n/**\n * @deprecated Please use StatusCodes.BAD_GATEWAY\n *\n * */\nexport var BAD_GATEWAY = 502;\n/**\n * @deprecated Please use StatusCodes.BAD_REQUEST\n *\n * */\nexport var BAD_REQUEST = 400;\n/**\n * @deprecated Please use StatusCodes.CONFLICT\n *\n * */\nexport var CONFLICT = 409;\n/**\n * @deprecated Please use StatusCodes.CONTINUE\n *\n * */\nexport var CONTINUE = 100;\n/**\n * @deprecated Please use StatusCodes.CREATED\n *\n * */\nexport var CREATED = 201;\n/**\n * @deprecated Please use StatusCodes.EXPECTATION_FAILED\n *\n * */\nexport var EXPECTATION_FAILED = 417;\n/**\n * @deprecated Please use StatusCodes.FAILED_DEPENDENCY\n *\n * */\nexport var FAILED_DEPENDENCY = 424;\n/**\n * @deprecated Please use StatusCodes.FORBIDDEN\n *\n * */\nexport var FORBIDDEN = 403;\n/**\n * @deprecated Please use StatusCodes.GATEWAY_TIMEOUT\n *\n * */\nexport var GATEWAY_TIMEOUT = 504;\n/**\n * @deprecated Please use StatusCodes.GONE\n *\n * */\nexport var GONE = 410;\n/**\n * @deprecated Please use StatusCodes.HTTP_VERSION_NOT_SUPPORTED\n *\n * */\nexport var HTTP_VERSION_NOT_SUPPORTED = 505;\n/**\n * @deprecated Please use StatusCodes.IM_A_TEAPOT\n *\n * */\nexport var IM_A_TEAPOT = 418;\n/**\n * @deprecated Please use StatusCodes.INSUFFICIENT_SPACE_ON_RESOURCE\n *\n * */\nexport var INSUFFICIENT_SPACE_ON_RESOURCE = 419;\n/**\n * @deprecated Please use StatusCodes.INSUFFICIENT_STORAGE\n *\n * */\nexport var INSUFFICIENT_STORAGE = 507;\n/**\n * @deprecated Please use StatusCodes.INTERNAL_SERVER_ERROR\n *\n * */\nexport var INTERNAL_SERVER_ERROR = 500;\n/**\n * @deprecated Please use StatusCodes.LENGTH_REQUIRED\n *\n * */\nexport var LENGTH_REQUIRED = 411;\n/**\n * @deprecated Please use StatusCodes.LOCKED\n *\n * */\nexport var LOCKED = 423;\n/**\n * @deprecated Please use StatusCodes.METHOD_FAILURE\n *\n * */\nexport var METHOD_FAILURE = 420;\n/**\n * @deprecated Please use StatusCodes.METHOD_NOT_ALLOWED\n *\n * */\nexport var METHOD_NOT_ALLOWED = 405;\n/**\n * @deprecated Please use StatusCodes.MOVED_PERMANENTLY\n *\n * */\nexport var MOVED_PERMANENTLY = 301;\n/**\n * @deprecated Please use StatusCodes.MOVED_TEMPORARILY\n *\n * */\nexport var MOVED_TEMPORARILY = 302;\n/**\n * @deprecated Please use StatusCodes.MULTI_STATUS\n *\n * */\nexport var MULTI_STATUS = 207;\n/**\n * @deprecated Please use StatusCodes.MULTIPLE_CHOICES\n *\n * */\nexport var MULTIPLE_CHOICES = 300;\n/**\n * @deprecated Please use StatusCodes.NETWORK_AUTHENTICATION_REQUIRED\n *\n * */\nexport var NETWORK_AUTHENTICATION_REQUIRED = 511;\n/**\n * @deprecated Please use StatusCodes.NO_CONTENT\n *\n * */\nexport var NO_CONTENT = 204;\n/**\n * @deprecated Please use StatusCodes.NON_AUTHORITATIVE_INFORMATION\n *\n * */\nexport var NON_AUTHORITATIVE_INFORMATION = 203;\n/**\n * @deprecated Please use StatusCodes.NOT_ACCEPTABLE\n *\n * */\nexport var NOT_ACCEPTABLE = 406;\n/**\n * @deprecated Please use StatusCodes.NOT_FOUND\n *\n * */\nexport var NOT_FOUND = 404;\n/**\n * @deprecated Please use StatusCodes.NOT_IMPLEMENTED\n *\n * */\nexport var NOT_IMPLEMENTED = 501;\n/**\n * @deprecated Please use StatusCodes.NOT_MODIFIED\n *\n * */\nexport var NOT_MODIFIED = 304;\n/**\n * @deprecated Please use StatusCodes.OK\n *\n * */\nexport var OK = 200;\n/**\n * @deprecated Please use StatusCodes.PARTIAL_CONTENT\n *\n * */\nexport var PARTIAL_CONTENT = 206;\n/**\n * @deprecated Please use StatusCodes.PAYMENT_REQUIRED\n *\n * */\nexport var PAYMENT_REQUIRED = 402;\n/**\n * @deprecated Please use StatusCodes.PERMANENT_REDIRECT\n *\n * */\nexport var PERMANENT_REDIRECT = 308;\n/**\n * @deprecated Please use StatusCodes.PRECONDITION_FAILED\n *\n * */\nexport var PRECONDITION_FAILED = 412;\n/**\n * @deprecated Please use StatusCodes.PRECONDITION_REQUIRED\n *\n * */\nexport var PRECONDITION_REQUIRED = 428;\n/**\n * @deprecated Please use StatusCodes.PROCESSING\n *\n * */\nexport var PROCESSING = 102;\n/**\n * @deprecated Please use StatusCodes.PROXY_AUTHENTICATION_REQUIRED\n *\n * */\nexport var PROXY_AUTHENTICATION_REQUIRED = 407;\n/**\n * @deprecated Please use StatusCodes.REQUEST_HEADER_FIELDS_TOO_LARGE\n *\n * */\nexport var REQUEST_HEADER_FIELDS_TOO_LARGE = 431;\n/**\n * @deprecated Please use StatusCodes.REQUEST_TIMEOUT\n *\n * */\nexport var REQUEST_TIMEOUT = 408;\n/**\n * @deprecated Please use StatusCodes.REQUEST_TOO_LONG\n *\n * */\nexport var REQUEST_TOO_LONG = 413;\n/**\n * @deprecated Please use StatusCodes.REQUEST_URI_TOO_LONG\n *\n * */\nexport var REQUEST_URI_TOO_LONG = 414;\n/**\n * @deprecated Please use StatusCodes.REQUESTED_RANGE_NOT_SATISFIABLE\n *\n * */\nexport var REQUESTED_RANGE_NOT_SATISFIABLE = 416;\n/**\n * @deprecated Please use StatusCodes.RESET_CONTENT\n *\n * */\nexport var RESET_CONTENT = 205;\n/**\n * @deprecated Please use StatusCodes.SEE_OTHER\n *\n * */\nexport var SEE_OTHER = 303;\n/**\n * @deprecated Please use StatusCodes.SERVICE_UNAVAILABLE\n *\n * */\nexport var SERVICE_UNAVAILABLE = 503;\n/**\n * @deprecated Please use StatusCodes.SWITCHING_PROTOCOLS\n *\n * */\nexport var SWITCHING_PROTOCOLS = 101;\n/**\n * @deprecated Please use StatusCodes.TEMPORARY_REDIRECT\n *\n * */\nexport var TEMPORARY_REDIRECT = 307;\n/**\n * @deprecated Please use StatusCodes.TOO_MANY_REQUESTS\n *\n * */\nexport var TOO_MANY_REQUESTS = 429;\n/**\n * @deprecated Please use StatusCodes.UNAUTHORIZED\n *\n * */\nexport var UNAUTHORIZED = 401;\n/**\n * @deprecated Please use StatusCodes.UNPROCESSABLE_ENTITY\n *\n * */\nexport var UNPROCESSABLE_ENTITY = 422;\n/**\n * @deprecated Please use StatusCodes.UNSUPPORTED_MEDIA_TYPE\n *\n * */\nexport var UNSUPPORTED_MEDIA_TYPE = 415;\n/**\n * @deprecated Please use StatusCodes.USE_PROXY\n *\n * */\nexport var USE_PROXY = 305;\nexport default {\n ACCEPTED: ACCEPTED,\n BAD_GATEWAY: BAD_GATEWAY,\n BAD_REQUEST: BAD_REQUEST,\n CONFLICT: CONFLICT,\n CONTINUE: CONTINUE,\n CREATED: CREATED,\n EXPECTATION_FAILED: EXPECTATION_FAILED,\n FORBIDDEN: FORBIDDEN,\n GATEWAY_TIMEOUT: GATEWAY_TIMEOUT,\n GONE: GONE,\n HTTP_VERSION_NOT_SUPPORTED: HTTP_VERSION_NOT_SUPPORTED,\n IM_A_TEAPOT: IM_A_TEAPOT,\n INSUFFICIENT_SPACE_ON_RESOURCE: INSUFFICIENT_SPACE_ON_RESOURCE,\n INSUFFICIENT_STORAGE: INSUFFICIENT_STORAGE,\n INTERNAL_SERVER_ERROR: INTERNAL_SERVER_ERROR,\n LENGTH_REQUIRED: LENGTH_REQUIRED,\n LOCKED: LOCKED,\n METHOD_FAILURE: METHOD_FAILURE,\n METHOD_NOT_ALLOWED: METHOD_NOT_ALLOWED,\n MOVED_PERMANENTLY: MOVED_PERMANENTLY,\n MOVED_TEMPORARILY: MOVED_TEMPORARILY,\n MULTI_STATUS: MULTI_STATUS,\n MULTIPLE_CHOICES: MULTIPLE_CHOICES,\n NETWORK_AUTHENTICATION_REQUIRED: NETWORK_AUTHENTICATION_REQUIRED,\n NO_CONTENT: NO_CONTENT,\n NON_AUTHORITATIVE_INFORMATION: NON_AUTHORITATIVE_INFORMATION,\n NOT_ACCEPTABLE: NOT_ACCEPTABLE,\n NOT_FOUND: NOT_FOUND,\n NOT_IMPLEMENTED: NOT_IMPLEMENTED,\n NOT_MODIFIED: NOT_MODIFIED,\n OK: OK,\n PARTIAL_CONTENT: PARTIAL_CONTENT,\n PAYMENT_REQUIRED: PAYMENT_REQUIRED,\n PERMANENT_REDIRECT: PERMANENT_REDIRECT,\n PRECONDITION_FAILED: PRECONDITION_FAILED,\n PRECONDITION_REQUIRED: PRECONDITION_REQUIRED,\n PROCESSING: PROCESSING,\n PROXY_AUTHENTICATION_REQUIRED: PROXY_AUTHENTICATION_REQUIRED,\n REQUEST_HEADER_FIELDS_TOO_LARGE: REQUEST_HEADER_FIELDS_TOO_LARGE,\n REQUEST_TIMEOUT: REQUEST_TIMEOUT,\n REQUEST_TOO_LONG: REQUEST_TOO_LONG,\n REQUEST_URI_TOO_LONG: REQUEST_URI_TOO_LONG,\n REQUESTED_RANGE_NOT_SATISFIABLE: REQUESTED_RANGE_NOT_SATISFIABLE,\n RESET_CONTENT: RESET_CONTENT,\n SEE_OTHER: SEE_OTHER,\n SERVICE_UNAVAILABLE: SERVICE_UNAVAILABLE,\n SWITCHING_PROTOCOLS: SWITCHING_PROTOCOLS,\n TEMPORARY_REDIRECT: TEMPORARY_REDIRECT,\n TOO_MANY_REQUESTS: TOO_MANY_REQUESTS,\n UNAUTHORIZED: UNAUTHORIZED,\n UNPROCESSABLE_ENTITY: UNPROCESSABLE_ENTITY,\n UNSUPPORTED_MEDIA_TYPE: UNSUPPORTED_MEDIA_TYPE,\n USE_PROXY: USE_PROXY,\n};\n","// Generated file. Do not edit\nexport var statusCodeToReasonPhrase = {\n \"202\": \"Accepted\",\n \"502\": \"Bad Gateway\",\n \"400\": \"Bad Request\",\n \"409\": \"Conflict\",\n \"100\": \"Continue\",\n \"201\": \"Created\",\n \"417\": \"Expectation Failed\",\n \"424\": \"Failed Dependency\",\n \"403\": \"Forbidden\",\n \"504\": \"Gateway Timeout\",\n \"410\": \"Gone\",\n \"505\": \"HTTP Version Not Supported\",\n \"418\": \"I'm a teapot\",\n \"419\": \"Insufficient Space on Resource\",\n \"507\": \"Insufficient Storage\",\n \"500\": \"Internal Server Error\",\n \"411\": \"Length Required\",\n \"423\": \"Locked\",\n \"420\": \"Method Failure\",\n \"405\": \"Method Not Allowed\",\n \"301\": \"Moved Permanently\",\n \"302\": \"Moved Temporarily\",\n \"207\": \"Multi-Status\",\n \"300\": \"Multiple Choices\",\n \"511\": \"Network Authentication Required\",\n \"204\": \"No Content\",\n \"203\": \"Non Authoritative Information\",\n \"406\": \"Not Acceptable\",\n \"404\": \"Not Found\",\n \"501\": \"Not Implemented\",\n \"304\": \"Not Modified\",\n \"200\": \"OK\",\n \"206\": \"Partial Content\",\n \"402\": \"Payment Required\",\n \"308\": \"Permanent Redirect\",\n \"412\": \"Precondition Failed\",\n \"428\": \"Precondition Required\",\n \"102\": \"Processing\",\n \"407\": \"Proxy Authentication Required\",\n \"431\": \"Request Header Fields Too Large\",\n \"408\": \"Request Timeout\",\n \"413\": \"Request Entity Too Large\",\n \"414\": \"Request-URI Too Long\",\n \"416\": \"Requested Range Not Satisfiable\",\n \"205\": \"Reset Content\",\n \"303\": \"See Other\",\n \"503\": \"Service Unavailable\",\n \"101\": \"Switching Protocols\",\n \"307\": \"Temporary Redirect\",\n \"429\": \"Too Many Requests\",\n \"401\": \"Unauthorized\",\n \"451\": \"Unavailable For Legal Reasons\",\n \"422\": \"Unprocessable Entity\",\n \"415\": \"Unsupported Media Type\",\n \"305\": \"Use Proxy\",\n \"421\": \"Misdirected Request\"\n};\nexport var reasonPhraseToStatusCode = {\n \"Accepted\": 202,\n \"Bad Gateway\": 502,\n \"Bad Request\": 400,\n \"Conflict\": 409,\n \"Continue\": 100,\n \"Created\": 201,\n \"Expectation Failed\": 417,\n \"Failed Dependency\": 424,\n \"Forbidden\": 403,\n \"Gateway Timeout\": 504,\n \"Gone\": 410,\n \"HTTP Version Not Supported\": 505,\n \"I'm a teapot\": 418,\n \"Insufficient Space on Resource\": 419,\n \"Insufficient Storage\": 507,\n \"Internal Server Error\": 500,\n \"Length Required\": 411,\n \"Locked\": 423,\n \"Method Failure\": 420,\n \"Method Not Allowed\": 405,\n \"Moved Permanently\": 301,\n \"Moved Temporarily\": 302,\n \"Multi-Status\": 207,\n \"Multiple Choices\": 300,\n \"Network Authentication Required\": 511,\n \"No Content\": 204,\n \"Non Authoritative Information\": 203,\n \"Not Acceptable\": 406,\n \"Not Found\": 404,\n \"Not Implemented\": 501,\n \"Not Modified\": 304,\n \"OK\": 200,\n \"Partial Content\": 206,\n \"Payment Required\": 402,\n \"Permanent Redirect\": 308,\n \"Precondition Failed\": 412,\n \"Precondition Required\": 428,\n \"Processing\": 102,\n \"Proxy Authentication Required\": 407,\n \"Request Header Fields Too Large\": 431,\n \"Request Timeout\": 408,\n \"Request Entity Too Large\": 413,\n \"Request-URI Too Long\": 414,\n \"Requested Range Not Satisfiable\": 416,\n \"Reset Content\": 205,\n \"See Other\": 303,\n \"Service Unavailable\": 503,\n \"Switching Protocols\": 101,\n \"Temporary Redirect\": 307,\n \"Too Many Requests\": 429,\n \"Unauthorized\": 401,\n \"Unavailable For Legal Reasons\": 451,\n \"Unprocessable Entity\": 422,\n \"Unsupported Media Type\": 415,\n \"Use Proxy\": 305,\n \"Misdirected Request\": 421\n};\n","import { statusCodeToReasonPhrase, reasonPhraseToStatusCode, } from './utils';\n/**\n * Returns the reason phrase for the given status code.\n * If the given status code does not exist, an error is thrown.\n *\n * @param {number|string} statusCode The HTTP status code\n * @returns {string} The associated reason phrase (e.g. \"Bad Request\", \"OK\")\n * */\nexport function getReasonPhrase(statusCode) {\n var result = statusCodeToReasonPhrase[statusCode.toString()];\n if (!result) {\n throw new Error(\"Status code does not exist: \" + statusCode);\n }\n return result;\n}\n/**\n * Returns the status code for the given reason phrase.\n * If the given reason phrase does not exist, undefined is returned.\n *\n * @param {string} reasonPhrase The HTTP reason phrase (e.g. \"Bad Request\", \"OK\")\n * @returns {string} The associated status code\n * */\nexport function getStatusCode(reasonPhrase) {\n var result = reasonPhraseToStatusCode[reasonPhrase];\n if (!result) {\n throw new Error(\"Reason phrase does not exist: \" + reasonPhrase);\n }\n return result;\n}\n/**\n * @deprecated\n *\n * Returns the reason phrase for the given status code.\n * If the given status code does not exist, undefined is returned.\n *\n * Deprecated in favor of getReasonPhrase\n *\n * @param {number|string} statusCode The HTTP status code\n * @returns {string|undefined} The associated reason phrase (e.g. \"Bad Request\", \"OK\")\n * */\nexport var getStatusText = getReasonPhrase;\n","// Generated file. Do not edit\nexport var StatusCodes;\n(function (StatusCodes) {\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.3.3\n *\n * The request has been received but not yet acted upon. It is non-committal, meaning that there is no way in HTTP to later send an asynchronous response indicating the outcome of processing the request. It is intended for cases where another process or server handles the request, or for batch processing.\n */\n StatusCodes[StatusCodes[\"ACCEPTED\"] = 202] = \"ACCEPTED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.6.3\n *\n * This error response means that the server, while working as a gateway to get a response needed to handle the request, got an invalid response.\n */\n StatusCodes[StatusCodes[\"BAD_GATEWAY\"] = 502] = \"BAD_GATEWAY\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.1\n *\n * This response means that server could not understand the request due to invalid syntax.\n */\n StatusCodes[StatusCodes[\"BAD_REQUEST\"] = 400] = \"BAD_REQUEST\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.8\n *\n * This response is sent when a request conflicts with the current state of the server.\n */\n StatusCodes[StatusCodes[\"CONFLICT\"] = 409] = \"CONFLICT\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.2.1\n *\n * This interim response indicates that everything so far is OK and that the client should continue with the request or ignore it if it is already finished.\n */\n StatusCodes[StatusCodes[\"CONTINUE\"] = 100] = \"CONTINUE\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.3.2\n *\n * The request has succeeded and a new resource has been created as a result of it. This is typically the response sent after a PUT request.\n */\n StatusCodes[StatusCodes[\"CREATED\"] = 201] = \"CREATED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.14\n *\n * This response code means the expectation indicated by the Expect request header field can't be met by the server.\n */\n StatusCodes[StatusCodes[\"EXPECTATION_FAILED\"] = 417] = \"EXPECTATION_FAILED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc2518#section-10.5\n *\n * The request failed due to failure of a previous request.\n */\n StatusCodes[StatusCodes[\"FAILED_DEPENDENCY\"] = 424] = \"FAILED_DEPENDENCY\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.3\n *\n * The client does not have access rights to the content, i.e. they are unauthorized, so server is rejecting to give proper response. Unlike 401, the client's identity is known to the server.\n */\n StatusCodes[StatusCodes[\"FORBIDDEN\"] = 403] = \"FORBIDDEN\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.6.5\n *\n * This error response is given when the server is acting as a gateway and cannot get a response in time.\n */\n StatusCodes[StatusCodes[\"GATEWAY_TIMEOUT\"] = 504] = \"GATEWAY_TIMEOUT\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.9\n *\n * This response would be sent when the requested content has been permenantly deleted from server, with no forwarding address. Clients are expected to remove their caches and links to the resource. The HTTP specification intends this status code to be used for \"limited-time, promotional services\". APIs should not feel compelled to indicate resources that have been deleted with this status code.\n */\n StatusCodes[StatusCodes[\"GONE\"] = 410] = \"GONE\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.6.6\n *\n * The HTTP version used in the request is not supported by the server.\n */\n StatusCodes[StatusCodes[\"HTTP_VERSION_NOT_SUPPORTED\"] = 505] = \"HTTP_VERSION_NOT_SUPPORTED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc2324#section-2.3.2\n *\n * Any attempt to brew coffee with a teapot should result in the error code \"418 I'm a teapot\". The resulting entity body MAY be short and stout.\n */\n StatusCodes[StatusCodes[\"IM_A_TEAPOT\"] = 418] = \"IM_A_TEAPOT\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc2518#section-10.6\n *\n * The 507 (Insufficient Storage) status code means the method could not be performed on the resource because the server is unable to store the representation needed to successfully complete the request. This condition is considered to be temporary. If the request which received this status code was the result of a user action, the request MUST NOT be repeated until it is requested by a separate user action.\n */\n StatusCodes[StatusCodes[\"INSUFFICIENT_SPACE_ON_RESOURCE\"] = 419] = \"INSUFFICIENT_SPACE_ON_RESOURCE\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc2518#section-10.6\n *\n * The server has an internal configuration error: the chosen variant resource is configured to engage in transparent content negotiation itself, and is therefore not a proper end point in the negotiation process.\n */\n StatusCodes[StatusCodes[\"INSUFFICIENT_STORAGE\"] = 507] = \"INSUFFICIENT_STORAGE\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.6.1\n *\n * The server encountered an unexpected condition that prevented it from fulfilling the request.\n */\n StatusCodes[StatusCodes[\"INTERNAL_SERVER_ERROR\"] = 500] = \"INTERNAL_SERVER_ERROR\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.10\n *\n * The server rejected the request because the Content-Length header field is not defined and the server requires it.\n */\n StatusCodes[StatusCodes[\"LENGTH_REQUIRED\"] = 411] = \"LENGTH_REQUIRED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc2518#section-10.4\n *\n * The resource that is being accessed is locked.\n */\n StatusCodes[StatusCodes[\"LOCKED\"] = 423] = \"LOCKED\";\n /**\n * @deprecated\n * Official Documentation @ https://tools.ietf.org/rfcdiff?difftype=--hwdiff&url2=draft-ietf-webdav-protocol-06.txt\n *\n * A deprecated response used by the Spring Framework when a method has failed.\n */\n StatusCodes[StatusCodes[\"METHOD_FAILURE\"] = 420] = \"METHOD_FAILURE\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.5\n *\n * The request method is known by the server but has been disabled and cannot be used. For example, an API may forbid DELETE-ing a resource. The two mandatory methods, GET and HEAD, must never be disabled and should not return this error code.\n */\n StatusCodes[StatusCodes[\"METHOD_NOT_ALLOWED\"] = 405] = \"METHOD_NOT_ALLOWED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.4.2\n *\n * This response code means that URI of requested resource has been changed. Probably, new URI would be given in the response.\n */\n StatusCodes[StatusCodes[\"MOVED_PERMANENTLY\"] = 301] = \"MOVED_PERMANENTLY\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.4.3\n *\n * This response code means that URI of requested resource has been changed temporarily. New changes in the URI might be made in the future. Therefore, this same URI should be used by the client in future requests.\n */\n StatusCodes[StatusCodes[\"MOVED_TEMPORARILY\"] = 302] = \"MOVED_TEMPORARILY\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc2518#section-10.2\n *\n * A Multi-Status response conveys information about multiple resources in situations where multiple status codes might be appropriate.\n */\n StatusCodes[StatusCodes[\"MULTI_STATUS\"] = 207] = \"MULTI_STATUS\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.4.1\n *\n * The request has more than one possible responses. User-agent or user should choose one of them. There is no standardized way to choose one of the responses.\n */\n StatusCodes[StatusCodes[\"MULTIPLE_CHOICES\"] = 300] = \"MULTIPLE_CHOICES\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc6585#section-6\n *\n * The 511 status code indicates that the client needs to authenticate to gain network access.\n */\n StatusCodes[StatusCodes[\"NETWORK_AUTHENTICATION_REQUIRED\"] = 511] = \"NETWORK_AUTHENTICATION_REQUIRED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.3.5\n *\n * There is no content to send for this request, but the headers may be useful. The user-agent may update its cached headers for this resource with the new ones.\n */\n StatusCodes[StatusCodes[\"NO_CONTENT\"] = 204] = \"NO_CONTENT\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.3.4\n *\n * This response code means returned meta-information set is not exact set as available from the origin server, but collected from a local or a third party copy. Except this condition, 200 OK response should be preferred instead of this response.\n */\n StatusCodes[StatusCodes[\"NON_AUTHORITATIVE_INFORMATION\"] = 203] = \"NON_AUTHORITATIVE_INFORMATION\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.6\n *\n * This response is sent when the web server, after performing server-driven content negotiation, doesn't find any content following the criteria given by the user agent.\n */\n StatusCodes[StatusCodes[\"NOT_ACCEPTABLE\"] = 406] = \"NOT_ACCEPTABLE\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.4\n *\n * The server can not find requested resource. In the browser, this means the URL is not recognized. In an API, this can also mean that the endpoint is valid but the resource itself does not exist. Servers may also send this response instead of 403 to hide the existence of a resource from an unauthorized client. This response code is probably the most famous one due to its frequent occurence on the web.\n */\n StatusCodes[StatusCodes[\"NOT_FOUND\"] = 404] = \"NOT_FOUND\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.6.2\n *\n * The request method is not supported by the server and cannot be handled. The only methods that servers are required to support (and therefore that must not return this code) are GET and HEAD.\n */\n StatusCodes[StatusCodes[\"NOT_IMPLEMENTED\"] = 501] = \"NOT_IMPLEMENTED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7232#section-4.1\n *\n * This is used for caching purposes. It is telling to client that response has not been modified. So, client can continue to use same cached version of response.\n */\n StatusCodes[StatusCodes[\"NOT_MODIFIED\"] = 304] = \"NOT_MODIFIED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.3.1\n *\n * The request has succeeded. The meaning of a success varies depending on the HTTP method:\n * GET: The resource has been fetched and is transmitted in the message body.\n * HEAD: The entity headers are in the message body.\n * POST: The resource describing the result of the action is transmitted in the message body.\n * TRACE: The message body contains the request message as received by the server\n */\n StatusCodes[StatusCodes[\"OK\"] = 200] = \"OK\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7233#section-4.1\n *\n * This response code is used because of range header sent by the client to separate download into multiple streams.\n */\n StatusCodes[StatusCodes[\"PARTIAL_CONTENT\"] = 206] = \"PARTIAL_CONTENT\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.2\n *\n * This response code is reserved for future use. Initial aim for creating this code was using it for digital payment systems however this is not used currently.\n */\n StatusCodes[StatusCodes[\"PAYMENT_REQUIRED\"] = 402] = \"PAYMENT_REQUIRED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7538#section-3\n *\n * This means that the resource is now permanently located at another URI, specified by the Location: HTTP Response header. This has the same semantics as the 301 Moved Permanently HTTP response code, with the exception that the user agent must not change the HTTP method used: if a POST was used in the first request, a POST must be used in the second request.\n */\n StatusCodes[StatusCodes[\"PERMANENT_REDIRECT\"] = 308] = \"PERMANENT_REDIRECT\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7232#section-4.2\n *\n * The client has indicated preconditions in its headers which the server does not meet.\n */\n StatusCodes[StatusCodes[\"PRECONDITION_FAILED\"] = 412] = \"PRECONDITION_FAILED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc6585#section-3\n *\n * The origin server requires the request to be conditional. Intended to prevent the 'lost update' problem, where a client GETs a resource's state, modifies it, and PUTs it back to the server, when meanwhile a third party has modified the state on the server, leading to a conflict.\n */\n StatusCodes[StatusCodes[\"PRECONDITION_REQUIRED\"] = 428] = \"PRECONDITION_REQUIRED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc2518#section-10.1\n *\n * This code indicates that the server has received and is processing the request, but no response is available yet.\n */\n StatusCodes[StatusCodes[\"PROCESSING\"] = 102] = \"PROCESSING\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7235#section-3.2\n *\n * This is similar to 401 but authentication is needed to be done by a proxy.\n */\n StatusCodes[StatusCodes[\"PROXY_AUTHENTICATION_REQUIRED\"] = 407] = \"PROXY_AUTHENTICATION_REQUIRED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc6585#section-5\n *\n * The server is unwilling to process the request because its header fields are too large. The request MAY be resubmitted after reducing the size of the request header fields.\n */\n StatusCodes[StatusCodes[\"REQUEST_HEADER_FIELDS_TOO_LARGE\"] = 431] = \"REQUEST_HEADER_FIELDS_TOO_LARGE\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.7\n *\n * This response is sent on an idle connection by some servers, even without any previous request by the client. It means that the server would like to shut down this unused connection. This response is used much more since some browsers, like Chrome, Firefox 27+, or IE9, use HTTP pre-connection mechanisms to speed up surfing. Also note that some servers merely shut down the connection without sending this message.\n */\n StatusCodes[StatusCodes[\"REQUEST_TIMEOUT\"] = 408] = \"REQUEST_TIMEOUT\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.11\n *\n * Request entity is larger than limits defined by server; the server might close the connection or return an Retry-After header field.\n */\n StatusCodes[StatusCodes[\"REQUEST_TOO_LONG\"] = 413] = \"REQUEST_TOO_LONG\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.12\n *\n * The URI requested by the client is longer than the server is willing to interpret.\n */\n StatusCodes[StatusCodes[\"REQUEST_URI_TOO_LONG\"] = 414] = \"REQUEST_URI_TOO_LONG\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7233#section-4.4\n *\n * The range specified by the Range header field in the request can't be fulfilled; it's possible that the range is outside the size of the target URI's data.\n */\n StatusCodes[StatusCodes[\"REQUESTED_RANGE_NOT_SATISFIABLE\"] = 416] = \"REQUESTED_RANGE_NOT_SATISFIABLE\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.3.6\n *\n * This response code is sent after accomplishing request to tell user agent reset document view which sent this request.\n */\n StatusCodes[StatusCodes[\"RESET_CONTENT\"] = 205] = \"RESET_CONTENT\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.4.4\n *\n * Server sent this response to directing client to get requested resource to another URI with an GET request.\n */\n StatusCodes[StatusCodes[\"SEE_OTHER\"] = 303] = \"SEE_OTHER\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.6.4\n *\n * The server is not ready to handle the request. Common causes are a server that is down for maintenance or that is overloaded. Note that together with this response, a user-friendly page explaining the problem should be sent. This responses should be used for temporary conditions and the Retry-After: HTTP header should, if possible, contain the estimated time before the recovery of the service. The webmaster must also take care about the caching-related headers that are sent along with this response, as these temporary condition responses should usually not be cached.\n */\n StatusCodes[StatusCodes[\"SERVICE_UNAVAILABLE\"] = 503] = \"SERVICE_UNAVAILABLE\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.2.2\n *\n * This code is sent in response to an Upgrade request header by the client, and indicates the protocol the server is switching too.\n */\n StatusCodes[StatusCodes[\"SWITCHING_PROTOCOLS\"] = 101] = \"SWITCHING_PROTOCOLS\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.4.7\n *\n * Server sent this response to directing client to get requested resource to another URI with same method that used prior request. This has the same semantic than the 302 Found HTTP response code, with the exception that the user agent must not change the HTTP method used: if a POST was used in the first request, a POST must be used in the second request.\n */\n StatusCodes[StatusCodes[\"TEMPORARY_REDIRECT\"] = 307] = \"TEMPORARY_REDIRECT\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc6585#section-4\n *\n * The user has sent too many requests in a given amount of time (\"rate limiting\").\n */\n StatusCodes[StatusCodes[\"TOO_MANY_REQUESTS\"] = 429] = \"TOO_MANY_REQUESTS\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7235#section-3.1\n *\n * Although the HTTP standard specifies \"unauthorized\", semantically this response means \"unauthenticated\". That is, the client must authenticate itself to get the requested response.\n */\n StatusCodes[StatusCodes[\"UNAUTHORIZED\"] = 401] = \"UNAUTHORIZED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7725\n *\n * The user-agent requested a resource that cannot legally be provided, such as a web page censored by a government.\n */\n StatusCodes[StatusCodes[\"UNAVAILABLE_FOR_LEGAL_REASONS\"] = 451] = \"UNAVAILABLE_FOR_LEGAL_REASONS\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc2518#section-10.3\n *\n * The request was well-formed but was unable to be followed due to semantic errors.\n */\n StatusCodes[StatusCodes[\"UNPROCESSABLE_ENTITY\"] = 422] = \"UNPROCESSABLE_ENTITY\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.13\n *\n * The media format of the requested data is not supported by the server, so the server is rejecting the request.\n */\n StatusCodes[StatusCodes[\"UNSUPPORTED_MEDIA_TYPE\"] = 415] = \"UNSUPPORTED_MEDIA_TYPE\";\n /**\n * @deprecated\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.4.6\n *\n * Was defined in a previous version of the HTTP specification to indicate that a requested response must be accessed by a proxy. It has been deprecated due to security concerns regarding in-band configuration of a proxy.\n */\n StatusCodes[StatusCodes[\"USE_PROXY\"] = 305] = \"USE_PROXY\";\n /**\n * Official Documentation @ https://datatracker.ietf.org/doc/html/rfc7540#section-9.1.2\n *\n * Defined in the specification of HTTP/2 to indicate that a server is not able to produce a response for the combination of scheme and authority that are included in the request URI.\n */\n StatusCodes[StatusCodes[\"MISDIRECTED_REQUEST\"] = 421] = \"MISDIRECTED_REQUEST\";\n})(StatusCodes || (StatusCodes = {}));\n","// Generated file. Do not edit\nexport var ReasonPhrases;\n(function (ReasonPhrases) {\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.3.3\n *\n * The request has been received but not yet acted upon. It is non-committal, meaning that there is no way in HTTP to later send an asynchronous response indicating the outcome of processing the request. It is intended for cases where another process or server handles the request, or for batch processing.\n */\n ReasonPhrases[\"ACCEPTED\"] = \"Accepted\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.6.3\n *\n * This error response means that the server, while working as a gateway to get a response needed to handle the request, got an invalid response.\n */\n ReasonPhrases[\"BAD_GATEWAY\"] = \"Bad Gateway\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.1\n *\n * This response means that server could not understand the request due to invalid syntax.\n */\n ReasonPhrases[\"BAD_REQUEST\"] = \"Bad Request\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.8\n *\n * This response is sent when a request conflicts with the current state of the server.\n */\n ReasonPhrases[\"CONFLICT\"] = \"Conflict\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.2.1\n *\n * This interim response indicates that everything so far is OK and that the client should continue with the request or ignore it if it is already finished.\n */\n ReasonPhrases[\"CONTINUE\"] = \"Continue\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.3.2\n *\n * The request has succeeded and a new resource has been created as a result of it. This is typically the response sent after a PUT request.\n */\n ReasonPhrases[\"CREATED\"] = \"Created\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.14\n *\n * This response code means the expectation indicated by the Expect request header field can't be met by the server.\n */\n ReasonPhrases[\"EXPECTATION_FAILED\"] = \"Expectation Failed\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc2518#section-10.5\n *\n * The request failed due to failure of a previous request.\n */\n ReasonPhrases[\"FAILED_DEPENDENCY\"] = \"Failed Dependency\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.3\n *\n * The client does not have access rights to the content, i.e. they are unauthorized, so server is rejecting to give proper response. Unlike 401, the client's identity is known to the server.\n */\n ReasonPhrases[\"FORBIDDEN\"] = \"Forbidden\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.6.5\n *\n * This error response is given when the server is acting as a gateway and cannot get a response in time.\n */\n ReasonPhrases[\"GATEWAY_TIMEOUT\"] = \"Gateway Timeout\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.9\n *\n * This response would be sent when the requested content has been permenantly deleted from server, with no forwarding address. Clients are expected to remove their caches and links to the resource. The HTTP specification intends this status code to be used for \"limited-time, promotional services\". APIs should not feel compelled to indicate resources that have been deleted with this status code.\n */\n ReasonPhrases[\"GONE\"] = \"Gone\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.6.6\n *\n * The HTTP version used in the request is not supported by the server.\n */\n ReasonPhrases[\"HTTP_VERSION_NOT_SUPPORTED\"] = \"HTTP Version Not Supported\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc2324#section-2.3.2\n *\n * Any attempt to brew coffee with a teapot should result in the error code \"418 I'm a teapot\". The resulting entity body MAY be short and stout.\n */\n ReasonPhrases[\"IM_A_TEAPOT\"] = \"I'm a teapot\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc2518#section-10.6\n *\n * The 507 (Insufficient Storage) status code means the method could not be performed on the resource because the server is unable to store the representation needed to successfully complete the request. This condition is considered to be temporary. If the request which received this status code was the result of a user action, the request MUST NOT be repeated until it is requested by a separate user action.\n */\n ReasonPhrases[\"INSUFFICIENT_SPACE_ON_RESOURCE\"] = \"Insufficient Space on Resource\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc2518#section-10.6\n *\n * The server has an internal configuration error: the chosen variant resource is configured to engage in transparent content negotiation itself, and is therefore not a proper end point in the negotiation process.\n */\n ReasonPhrases[\"INSUFFICIENT_STORAGE\"] = \"Insufficient Storage\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.6.1\n *\n * The server encountered an unexpected condition that prevented it from fulfilling the request.\n */\n ReasonPhrases[\"INTERNAL_SERVER_ERROR\"] = \"Internal Server Error\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.10\n *\n * The server rejected the request because the Content-Length header field is not defined and the server requires it.\n */\n ReasonPhrases[\"LENGTH_REQUIRED\"] = \"Length Required\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc2518#section-10.4\n *\n * The resource that is being accessed is locked.\n */\n ReasonPhrases[\"LOCKED\"] = \"Locked\";\n /**\n * @deprecated\n * Official Documentation @ https://tools.ietf.org/rfcdiff?difftype=--hwdiff&url2=draft-ietf-webdav-protocol-06.txt\n *\n * A deprecated response used by the Spring Framework when a method has failed.\n */\n ReasonPhrases[\"METHOD_FAILURE\"] = \"Method Failure\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.5\n *\n * The request method is known by the server but has been disabled and cannot be used. For example, an API may forbid DELETE-ing a resource. The two mandatory methods, GET and HEAD, must never be disabled and should not return this error code.\n */\n ReasonPhrases[\"METHOD_NOT_ALLOWED\"] = \"Method Not Allowed\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.4.2\n *\n * This response code means that URI of requested resource has been changed. Probably, new URI would be given in the response.\n */\n ReasonPhrases[\"MOVED_PERMANENTLY\"] = \"Moved Permanently\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.4.3\n *\n * This response code means that URI of requested resource has been changed temporarily. New changes in the URI might be made in the future. Therefore, this same URI should be used by the client in future requests.\n */\n ReasonPhrases[\"MOVED_TEMPORARILY\"] = \"Moved Temporarily\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc2518#section-10.2\n *\n * A Multi-Status response conveys information about multiple resources in situations where multiple status codes might be appropriate.\n */\n ReasonPhrases[\"MULTI_STATUS\"] = \"Multi-Status\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.4.1\n *\n * The request has more than one possible responses. User-agent or user should choose one of them. There is no standardized way to choose one of the responses.\n */\n ReasonPhrases[\"MULTIPLE_CHOICES\"] = \"Multiple Choices\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc6585#section-6\n *\n * The 511 status code indicates that the client needs to authenticate to gain network access.\n */\n ReasonPhrases[\"NETWORK_AUTHENTICATION_REQUIRED\"] = \"Network Authentication Required\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.3.5\n *\n * There is no content to send for this request, but the headers may be useful. The user-agent may update its cached headers for this resource with the new ones.\n */\n ReasonPhrases[\"NO_CONTENT\"] = \"No Content\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.3.4\n *\n * This response code means returned meta-information set is not exact set as available from the origin server, but collected from a local or a third party copy. Except this condition, 200 OK response should be preferred instead of this response.\n */\n ReasonPhrases[\"NON_AUTHORITATIVE_INFORMATION\"] = \"Non Authoritative Information\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.6\n *\n * This response is sent when the web server, after performing server-driven content negotiation, doesn't find any content following the criteria given by the user agent.\n */\n ReasonPhrases[\"NOT_ACCEPTABLE\"] = \"Not Acceptable\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.4\n *\n * The server can not find requested resource. In the browser, this means the URL is not recognized. In an API, this can also mean that the endpoint is valid but the resource itself does not exist. Servers may also send this response instead of 403 to hide the existence of a resource from an unauthorized client. This response code is probably the most famous one due to its frequent occurence on the web.\n */\n ReasonPhrases[\"NOT_FOUND\"] = \"Not Found\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.6.2\n *\n * The request method is not supported by the server and cannot be handled. The only methods that servers are required to support (and therefore that must not return this code) are GET and HEAD.\n */\n ReasonPhrases[\"NOT_IMPLEMENTED\"] = \"Not Implemented\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7232#section-4.1\n *\n * This is used for caching purposes. It is telling to client that response has not been modified. So, client can continue to use same cached version of response.\n */\n ReasonPhrases[\"NOT_MODIFIED\"] = \"Not Modified\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.3.1\n *\n * The request has succeeded. The meaning of a success varies depending on the HTTP method:\n * GET: The resource has been fetched and is transmitted in the message body.\n * HEAD: The entity headers are in the message body.\n * POST: The resource describing the result of the action is transmitted in the message body.\n * TRACE: The message body contains the request message as received by the server\n */\n ReasonPhrases[\"OK\"] = \"OK\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7233#section-4.1\n *\n * This response code is used because of range header sent by the client to separate download into multiple streams.\n */\n ReasonPhrases[\"PARTIAL_CONTENT\"] = \"Partial Content\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.2\n *\n * This response code is reserved for future use. Initial aim for creating this code was using it for digital payment systems however this is not used currently.\n */\n ReasonPhrases[\"PAYMENT_REQUIRED\"] = \"Payment Required\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7538#section-3\n *\n * This means that the resource is now permanently located at another URI, specified by the Location: HTTP Response header. This has the same semantics as the 301 Moved Permanently HTTP response code, with the exception that the user agent must not change the HTTP method used: if a POST was used in the first request, a POST must be used in the second request.\n */\n ReasonPhrases[\"PERMANENT_REDIRECT\"] = \"Permanent Redirect\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7232#section-4.2\n *\n * The client has indicated preconditions in its headers which the server does not meet.\n */\n ReasonPhrases[\"PRECONDITION_FAILED\"] = \"Precondition Failed\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc6585#section-3\n *\n * The origin server requires the request to be conditional. Intended to prevent the 'lost update' problem, where a client GETs a resource's state, modifies it, and PUTs it back to the server, when meanwhile a third party has modified the state on the server, leading to a conflict.\n */\n ReasonPhrases[\"PRECONDITION_REQUIRED\"] = \"Precondition Required\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc2518#section-10.1\n *\n * This code indicates that the server has received and is processing the request, but no response is available yet.\n */\n ReasonPhrases[\"PROCESSING\"] = \"Processing\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7235#section-3.2\n *\n * This is similar to 401 but authentication is needed to be done by a proxy.\n */\n ReasonPhrases[\"PROXY_AUTHENTICATION_REQUIRED\"] = \"Proxy Authentication Required\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc6585#section-5\n *\n * The server is unwilling to process the request because its header fields are too large. The request MAY be resubmitted after reducing the size of the request header fields.\n */\n ReasonPhrases[\"REQUEST_HEADER_FIELDS_TOO_LARGE\"] = \"Request Header Fields Too Large\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.7\n *\n * This response is sent on an idle connection by some servers, even without any previous request by the client. It means that the server would like to shut down this unused connection. This response is used much more since some browsers, like Chrome, Firefox 27+, or IE9, use HTTP pre-connection mechanisms to speed up surfing. Also note that some servers merely shut down the connection without sending this message.\n */\n ReasonPhrases[\"REQUEST_TIMEOUT\"] = \"Request Timeout\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.11\n *\n * Request entity is larger than limits defined by server; the server might close the connection or return an Retry-After header field.\n */\n ReasonPhrases[\"REQUEST_TOO_LONG\"] = \"Request Entity Too Large\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.12\n *\n * The URI requested by the client is longer than the server is willing to interpret.\n */\n ReasonPhrases[\"REQUEST_URI_TOO_LONG\"] = \"Request-URI Too Long\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7233#section-4.4\n *\n * The range specified by the Range header field in the request can't be fulfilled; it's possible that the range is outside the size of the target URI's data.\n */\n ReasonPhrases[\"REQUESTED_RANGE_NOT_SATISFIABLE\"] = \"Requested Range Not Satisfiable\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.3.6\n *\n * This response code is sent after accomplishing request to tell user agent reset document view which sent this request.\n */\n ReasonPhrases[\"RESET_CONTENT\"] = \"Reset Content\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.4.4\n *\n * Server sent this response to directing client to get requested resource to another URI with an GET request.\n */\n ReasonPhrases[\"SEE_OTHER\"] = \"See Other\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.6.4\n *\n * The server is not ready to handle the request. Common causes are a server that is down for maintenance or that is overloaded. Note that together with this response, a user-friendly page explaining the problem should be sent. This responses should be used for temporary conditions and the Retry-After: HTTP header should, if possible, contain the estimated time before the recovery of the service. The webmaster must also take care about the caching-related headers that are sent along with this response, as these temporary condition responses should usually not be cached.\n */\n ReasonPhrases[\"SERVICE_UNAVAILABLE\"] = \"Service Unavailable\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.2.2\n *\n * This code is sent in response to an Upgrade request header by the client, and indicates the protocol the server is switching too.\n */\n ReasonPhrases[\"SWITCHING_PROTOCOLS\"] = \"Switching Protocols\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.4.7\n *\n * Server sent this response to directing client to get requested resource to another URI with same method that used prior request. This has the same semantic than the 302 Found HTTP response code, with the exception that the user agent must not change the HTTP method used: if a POST was used in the first request, a POST must be used in the second request.\n */\n ReasonPhrases[\"TEMPORARY_REDIRECT\"] = \"Temporary Redirect\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc6585#section-4\n *\n * The user has sent too many requests in a given amount of time (\"rate limiting\").\n */\n ReasonPhrases[\"TOO_MANY_REQUESTS\"] = \"Too Many Requests\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7235#section-3.1\n *\n * Although the HTTP standard specifies \"unauthorized\", semantically this response means \"unauthenticated\". That is, the client must authenticate itself to get the requested response.\n */\n ReasonPhrases[\"UNAUTHORIZED\"] = \"Unauthorized\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7725\n *\n * The user-agent requested a resource that cannot legally be provided, such as a web page censored by a government.\n */\n ReasonPhrases[\"UNAVAILABLE_FOR_LEGAL_REASONS\"] = \"Unavailable For Legal Reasons\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc2518#section-10.3\n *\n * The request was well-formed but was unable to be followed due to semantic errors.\n */\n ReasonPhrases[\"UNPROCESSABLE_ENTITY\"] = \"Unprocessable Entity\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.13\n *\n * The media format of the requested data is not supported by the server, so the server is rejecting the request.\n */\n ReasonPhrases[\"UNSUPPORTED_MEDIA_TYPE\"] = \"Unsupported Media Type\";\n /**\n * @deprecated\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.4.6\n *\n * Was defined in a previous version of the HTTP specification to indicate that a requested response must be accessed by a proxy. It has been deprecated due to security concerns regarding in-band configuration of a proxy.\n */\n ReasonPhrases[\"USE_PROXY\"] = \"Use Proxy\";\n /**\n * Official Documentation @ https://datatracker.ietf.org/doc/html/rfc7540#section-9.1.2\n *\n * Defined in the specification of HTTP/2 to indicate that a server is not able to produce a response for the combination of scheme and authority that are included in the request URI.\n */\n ReasonPhrases[\"MISDIRECTED_REQUEST\"] = \"Misdirected Request\";\n})(ReasonPhrases || (ReasonPhrases = {}));\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport legacyCodes from './legacy';\nimport { getStatusCode, getStatusText, } from './utils-functions';\nexport { getStatusCode, getReasonPhrase, getStatusText, } from './utils-functions';\nexport { StatusCodes, } from './status-codes';\nexport { ReasonPhrases, } from './reason-phrases';\nexport * from './legacy';\nexport default __assign(__assign({}, legacyCodes), { getStatusCode: getStatusCode,\n getStatusText: getStatusText });\n","/*!\n * Select2 4.1.0-rc.0\n * https://select2.github.io\n *\n * Released under the MIT license\n * https://github.com/select2/select2/blob/master/LICENSE.md\n */\n;(function (factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(['jquery'], factory);\n } else if (typeof module === 'object' && module.exports) {\n // Node/CommonJS\n module.exports = function (root, jQuery) {\n if (jQuery === undefined) {\n // require('jQuery') returns a factory that requires window to\n // build a jQuery instance, we normalize how we use modules\n // that require this pattern but the window provided is a noop\n // if it's defined (how jquery works)\n if (typeof window !== 'undefined') {\n jQuery = require('jquery');\n }\n else {\n jQuery = require('jquery')(root);\n }\n }\n factory(jQuery);\n return jQuery;\n };\n } else {\n // Browser globals\n factory(jQuery);\n }\n} (function (jQuery) {\n // This is needed so we can catch the AMD loader configuration and use it\n // The inner file should be wrapped (by `banner.start.js`) in a function that\n // returns the AMD loader references.\n var S2 =(function () {\n // Restore the Select2 AMD loader so it can be used\n // Needed mostly in the language files, where the loader is not inserted\n if (jQuery && jQuery.fn && jQuery.fn.select2 && jQuery.fn.select2.amd) {\n var S2 = jQuery.fn.select2.amd;\n }\nvar S2;(function () { if (!S2 || !S2.requirejs) {\nif (!S2) { S2 = {}; } else { require = S2; }\n/**\n * @license almond 0.3.3 Copyright jQuery Foundation and other contributors.\n * Released under MIT license, http://github.com/requirejs/almond/LICENSE\n */\n//Going sloppy to avoid 'use strict' string cost, but strict practices should\n//be followed.\n/*global setTimeout: false */\n\nvar requirejs, require, define;\n(function (undef) {\n var main, req, makeMap, handlers,\n defined = {},\n waiting = {},\n config = {},\n defining = {},\n hasOwn = Object.prototype.hasOwnProperty,\n aps = [].slice,\n jsSuffixRegExp = /\\.js$/;\n\n function hasProp(obj, prop) {\n return hasOwn.call(obj, prop);\n }\n\n /**\n * Given a relative module name, like ./something, normalize it to\n * a real name that can be mapped to a path.\n * @param {String} name the relative name\n * @param {String} baseName a real name that the name arg is relative\n * to.\n * @returns {String} normalized name\n */\n function normalize(name, baseName) {\n var nameParts, nameSegment, mapValue, foundMap, lastIndex,\n foundI, foundStarMap, starI, i, j, part, normalizedBaseParts,\n baseParts = baseName && baseName.split(\"/\"),\n map = config.map,\n starMap = (map && map['*']) || {};\n\n //Adjust any relative paths.\n if (name) {\n name = name.split('/');\n lastIndex = name.length - 1;\n\n // If wanting node ID compatibility, strip .js from end\n // of IDs. Have to do this here, and not in nameToUrl\n // because node allows either .js or non .js to map\n // to same file.\n if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) {\n name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, '');\n }\n\n // Starts with a '.' so need the baseName\n if (name[0].charAt(0) === '.' && baseParts) {\n //Convert baseName to array, and lop off the last part,\n //so that . matches that 'directory' and not name of the baseName's\n //module. For instance, baseName of 'one/two/three', maps to\n //'one/two/three.js', but we want the directory, 'one/two' for\n //this normalization.\n normalizedBaseParts = baseParts.slice(0, baseParts.length - 1);\n name = normalizedBaseParts.concat(name);\n }\n\n //start trimDots\n for (i = 0; i < name.length; i++) {\n part = name[i];\n if (part === '.') {\n name.splice(i, 1);\n i -= 1;\n } else if (part === '..') {\n // If at the start, or previous value is still ..,\n // keep them so that when converted to a path it may\n // still work when converted to a path, even though\n // as an ID it is less than ideal. In larger point\n // releases, may be better to just kick out an error.\n if (i === 0 || (i === 1 && name[2] === '..') || name[i - 1] === '..') {\n continue;\n } else if (i > 0) {\n name.splice(i - 1, 2);\n i -= 2;\n }\n }\n }\n //end trimDots\n\n name = name.join('/');\n }\n\n //Apply map config if available.\n if ((baseParts || starMap) && map) {\n nameParts = name.split('/');\n\n for (i = nameParts.length; i > 0; i -= 1) {\n nameSegment = nameParts.slice(0, i).join(\"/\");\n\n if (baseParts) {\n //Find the longest baseName segment match in the config.\n //So, do joins on the biggest to smallest lengths of baseParts.\n for (j = baseParts.length; j > 0; j -= 1) {\n mapValue = map[baseParts.slice(0, j).join('/')];\n\n //baseName segment has config, find if it has one for\n //this name.\n if (mapValue) {\n mapValue = mapValue[nameSegment];\n if (mapValue) {\n //Match, update name to the new value.\n foundMap = mapValue;\n foundI = i;\n break;\n }\n }\n }\n }\n\n if (foundMap) {\n break;\n }\n\n //Check for a star map match, but just hold on to it,\n //if there is a shorter segment match later in a matching\n //config, then favor over this star map.\n if (!foundStarMap && starMap && starMap[nameSegment]) {\n foundStarMap = starMap[nameSegment];\n starI = i;\n }\n }\n\n if (!foundMap && foundStarMap) {\n foundMap = foundStarMap;\n foundI = starI;\n }\n\n if (foundMap) {\n nameParts.splice(0, foundI, foundMap);\n name = nameParts.join('/');\n }\n }\n\n return name;\n }\n\n function makeRequire(relName, forceSync) {\n return function () {\n //A version of a require function that passes a moduleName\n //value for items that may need to\n //look up paths relative to the moduleName\n var args = aps.call(arguments, 0);\n\n //If first arg is not require('string'), and there is only\n //one arg, it is the array form without a callback. Insert\n //a null so that the following concat is correct.\n if (typeof args[0] !== 'string' && args.length === 1) {\n args.push(null);\n }\n return req.apply(undef, args.concat([relName, forceSync]));\n };\n }\n\n function makeNormalize(relName) {\n return function (name) {\n return normalize(name, relName);\n };\n }\n\n function makeLoad(depName) {\n return function (value) {\n defined[depName] = value;\n };\n }\n\n function callDep(name) {\n if (hasProp(waiting, name)) {\n var args = waiting[name];\n delete waiting[name];\n defining[name] = true;\n main.apply(undef, args);\n }\n\n if (!hasProp(defined, name) && !hasProp(defining, name)) {\n throw new Error('No ' + name);\n }\n return defined[name];\n }\n\n //Turns a plugin!resource to [plugin, resource]\n //with the plugin being undefined if the name\n //did not have a plugin prefix.\n function splitPrefix(name) {\n var prefix,\n index = name ? name.indexOf('!') : -1;\n if (index > -1) {\n prefix = name.substring(0, index);\n name = name.substring(index + 1, name.length);\n }\n return [prefix, name];\n }\n\n //Creates a parts array for a relName where first part is plugin ID,\n //second part is resource ID. Assumes relName has already been normalized.\n function makeRelParts(relName) {\n return relName ? splitPrefix(relName) : [];\n }\n\n /**\n * Makes a name map, normalizing the name, and using a plugin\n * for normalization if necessary. Grabs a ref to plugin\n * too, as an optimization.\n */\n makeMap = function (name, relParts) {\n var plugin,\n parts = splitPrefix(name),\n prefix = parts[0],\n relResourceName = relParts[1];\n\n name = parts[1];\n\n if (prefix) {\n prefix = normalize(prefix, relResourceName);\n plugin = callDep(prefix);\n }\n\n //Normalize according\n if (prefix) {\n if (plugin && plugin.normalize) {\n name = plugin.normalize(name, makeNormalize(relResourceName));\n } else {\n name = normalize(name, relResourceName);\n }\n } else {\n name = normalize(name, relResourceName);\n parts = splitPrefix(name);\n prefix = parts[0];\n name = parts[1];\n if (prefix) {\n plugin = callDep(prefix);\n }\n }\n\n //Using ridiculous property names for space reasons\n return {\n f: prefix ? prefix + '!' + name : name, //fullName\n n: name,\n pr: prefix,\n p: plugin\n };\n };\n\n function makeConfig(name) {\n return function () {\n return (config && config.config && config.config[name]) || {};\n };\n }\n\n handlers = {\n require: function (name) {\n return makeRequire(name);\n },\n exports: function (name) {\n var e = defined[name];\n if (typeof e !== 'undefined') {\n return e;\n } else {\n return (defined[name] = {});\n }\n },\n module: function (name) {\n return {\n id: name,\n uri: '',\n exports: defined[name],\n config: makeConfig(name)\n };\n }\n };\n\n main = function (name, deps, callback, relName) {\n var cjsModule, depName, ret, map, i, relParts,\n args = [],\n callbackType = typeof callback,\n usingExports;\n\n //Use name if no relName\n relName = relName || name;\n relParts = makeRelParts(relName);\n\n //Call the callback to define the module, if necessary.\n if (callbackType === 'undefined' || callbackType === 'function') {\n //Pull out the defined dependencies and pass the ordered\n //values to the callback.\n //Default to [require, exports, module] if no deps\n deps = !deps.length && callback.length ? ['require', 'exports', 'module'] : deps;\n for (i = 0; i < deps.length; i += 1) {\n map = makeMap(deps[i], relParts);\n depName = map.f;\n\n //Fast path CommonJS standard dependencies.\n if (depName === \"require\") {\n args[i] = handlers.require(name);\n } else if (depName === \"exports\") {\n //CommonJS module spec 1.1\n args[i] = handlers.exports(name);\n usingExports = true;\n } else if (depName === \"module\") {\n //CommonJS module spec 1.1\n cjsModule = args[i] = handlers.module(name);\n } else if (hasProp(defined, depName) ||\n hasProp(waiting, depName) ||\n hasProp(defining, depName)) {\n args[i] = callDep(depName);\n } else if (map.p) {\n map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {});\n args[i] = defined[depName];\n } else {\n throw new Error(name + ' missing ' + depName);\n }\n }\n\n ret = callback ? callback.apply(defined[name], args) : undefined;\n\n if (name) {\n //If setting exports via \"module\" is in play,\n //favor that over return value and exports. After that,\n //favor a non-undefined return value over exports use.\n if (cjsModule && cjsModule.exports !== undef &&\n cjsModule.exports !== defined[name]) {\n defined[name] = cjsModule.exports;\n } else if (ret !== undef || !usingExports) {\n //Use the return value from the function.\n defined[name] = ret;\n }\n }\n } else if (name) {\n //May just be an object definition for the module. Only\n //worry about defining if have a module name.\n defined[name] = callback;\n }\n };\n\n requirejs = require = req = function (deps, callback, relName, forceSync, alt) {\n if (typeof deps === \"string\") {\n if (handlers[deps]) {\n //callback in this case is really relName\n return handlers[deps](callback);\n }\n //Just return the module wanted. In this scenario, the\n //deps arg is the module name, and second arg (if passed)\n //is just the relName.\n //Normalize module name, if it contains . or ..\n return callDep(makeMap(deps, makeRelParts(callback)).f);\n } else if (!deps.splice) {\n //deps is a config object, not an array.\n config = deps;\n if (config.deps) {\n req(config.deps, config.callback);\n }\n if (!callback) {\n return;\n }\n\n if (callback.splice) {\n //callback is an array, which means it is a dependency list.\n //Adjust args if there are dependencies\n deps = callback;\n callback = relName;\n relName = null;\n } else {\n deps = undef;\n }\n }\n\n //Support require(['a'])\n callback = callback || function () {};\n\n //If relName is a function, it is an errback handler,\n //so remove it.\n if (typeof relName === 'function') {\n relName = forceSync;\n forceSync = alt;\n }\n\n //Simulate async callback;\n if (forceSync) {\n main(undef, deps, callback, relName);\n } else {\n //Using a non-zero value because of concern for what old browsers\n //do, and latest browsers \"upgrade\" to 4 if lower value is used:\n //http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-settimeout:\n //If want a value immediately, use require('id') instead -- something\n //that works in almond on the global level, but not guaranteed and\n //unlikely to work in other AMD implementations.\n setTimeout(function () {\n main(undef, deps, callback, relName);\n }, 4);\n }\n\n return req;\n };\n\n /**\n * Just drops the config on the floor, but returns req in case\n * the config return value is used.\n */\n req.config = function (cfg) {\n return req(cfg);\n };\n\n /**\n * Expose module registry for debugging and tooling\n */\n requirejs._defined = defined;\n\n define = function (name, deps, callback) {\n if (typeof name !== 'string') {\n throw new Error('See almond README: incorrect module build, no module name');\n }\n\n //This module may not have dependencies\n if (!deps.splice) {\n //deps is not an array, so probably means\n //an object literal or factory function for\n //the value. Adjust args.\n callback = deps;\n deps = [];\n }\n\n if (!hasProp(defined, name) && !hasProp(waiting, name)) {\n waiting[name] = [name, deps, callback];\n }\n };\n\n define.amd = {\n jQuery: true\n };\n}());\n\nS2.requirejs = requirejs;S2.require = require;S2.define = define;\n}\n}());\nS2.define(\"almond\", function(){});\n\n/* global jQuery:false, $:false */\nS2.define('jquery',[],function () {\n var _$ = jQuery || $;\n\n if (_$ == null && console && console.error) {\n console.error(\n 'Select2: An instance of jQuery or a jQuery-compatible library was not ' +\n 'found. Make sure that you are including jQuery before Select2 on your ' +\n 'web page.'\n );\n }\n\n return _$;\n});\n\nS2.define('select2/utils',[\n 'jquery'\n], function ($) {\n var Utils = {};\n\n Utils.Extend = function (ChildClass, SuperClass) {\n var __hasProp = {}.hasOwnProperty;\n\n function BaseConstructor () {\n this.constructor = ChildClass;\n }\n\n for (var key in SuperClass) {\n if (__hasProp.call(SuperClass, key)) {\n ChildClass[key] = SuperClass[key];\n }\n }\n\n BaseConstructor.prototype = SuperClass.prototype;\n ChildClass.prototype = new BaseConstructor();\n ChildClass.__super__ = SuperClass.prototype;\n\n return ChildClass;\n };\n\n function getMethods (theClass) {\n var proto = theClass.prototype;\n\n var methods = [];\n\n for (var methodName in proto) {\n var m = proto[methodName];\n\n if (typeof m !== 'function') {\n continue;\n }\n\n if (methodName === 'constructor') {\n continue;\n }\n\n methods.push(methodName);\n }\n\n return methods;\n }\n\n Utils.Decorate = function (SuperClass, DecoratorClass) {\n var decoratedMethods = getMethods(DecoratorClass);\n var superMethods = getMethods(SuperClass);\n\n function DecoratedClass () {\n var unshift = Array.prototype.unshift;\n\n var argCount = DecoratorClass.prototype.constructor.length;\n\n var calledConstructor = SuperClass.prototype.constructor;\n\n if (argCount > 0) {\n unshift.call(arguments, SuperClass.prototype.constructor);\n\n calledConstructor = DecoratorClass.prototype.constructor;\n }\n\n calledConstructor.apply(this, arguments);\n }\n\n DecoratorClass.displayName = SuperClass.displayName;\n\n function ctr () {\n this.constructor = DecoratedClass;\n }\n\n DecoratedClass.prototype = new ctr();\n\n for (var m = 0; m < superMethods.length; m++) {\n var superMethod = superMethods[m];\n\n DecoratedClass.prototype[superMethod] =\n SuperClass.prototype[superMethod];\n }\n\n var calledMethod = function (methodName) {\n // Stub out the original method if it's not decorating an actual method\n var originalMethod = function () {};\n\n if (methodName in DecoratedClass.prototype) {\n originalMethod = DecoratedClass.prototype[methodName];\n }\n\n var decoratedMethod = DecoratorClass.prototype[methodName];\n\n return function () {\n var unshift = Array.prototype.unshift;\n\n unshift.call(arguments, originalMethod);\n\n return decoratedMethod.apply(this, arguments);\n };\n };\n\n for (var d = 0; d < decoratedMethods.length; d++) {\n var decoratedMethod = decoratedMethods[d];\n\n DecoratedClass.prototype[decoratedMethod] = calledMethod(decoratedMethod);\n }\n\n return DecoratedClass;\n };\n\n var Observable = function () {\n this.listeners = {};\n };\n\n Observable.prototype.on = function (event, callback) {\n this.listeners = this.listeners || {};\n\n if (event in this.listeners) {\n this.listeners[event].push(callback);\n } else {\n this.listeners[event] = [callback];\n }\n };\n\n Observable.prototype.trigger = function (event) {\n var slice = Array.prototype.slice;\n var params = slice.call(arguments, 1);\n\n this.listeners = this.listeners || {};\n\n // Params should always come in as an array\n if (params == null) {\n params = [];\n }\n\n // If there are no arguments to the event, use a temporary object\n if (params.length === 0) {\n params.push({});\n }\n\n // Set the `_type` of the first object to the event\n params[0]._type = event;\n\n if (event in this.listeners) {\n this.invoke(this.listeners[event], slice.call(arguments, 1));\n }\n\n if ('*' in this.listeners) {\n this.invoke(this.listeners['*'], arguments);\n }\n };\n\n Observable.prototype.invoke = function (listeners, params) {\n for (var i = 0, len = listeners.length; i < len; i++) {\n listeners[i].apply(this, params);\n }\n };\n\n Utils.Observable = Observable;\n\n Utils.generateChars = function (length) {\n var chars = '';\n\n for (var i = 0; i < length; i++) {\n var randomChar = Math.floor(Math.random() * 36);\n chars += randomChar.toString(36);\n }\n\n return chars;\n };\n\n Utils.bind = function (func, context) {\n return function () {\n func.apply(context, arguments);\n };\n };\n\n Utils._convertData = function (data) {\n for (var originalKey in data) {\n var keys = originalKey.split('-');\n\n var dataLevel = data;\n\n if (keys.length === 1) {\n continue;\n }\n\n for (var k = 0; k < keys.length; k++) {\n var key = keys[k];\n\n // Lowercase the first letter\n // By default, dash-separated becomes camelCase\n key = key.substring(0, 1).toLowerCase() + key.substring(1);\n\n if (!(key in dataLevel)) {\n dataLevel[key] = {};\n }\n\n if (k == keys.length - 1) {\n dataLevel[key] = data[originalKey];\n }\n\n dataLevel = dataLevel[key];\n }\n\n delete data[originalKey];\n }\n\n return data;\n };\n\n Utils.hasScroll = function (index, el) {\n // Adapted from the function created by @ShadowScripter\n // and adapted by @BillBarry on the Stack Exchange Code Review website.\n // The original code can be found at\n // http://codereview.stackexchange.com/q/13338\n // and was designed to be used with the Sizzle selector engine.\n\n var $el = $(el);\n var overflowX = el.style.overflowX;\n var overflowY = el.style.overflowY;\n\n //Check both x and y declarations\n if (overflowX === overflowY &&\n (overflowY === 'hidden' || overflowY === 'visible')) {\n return false;\n }\n\n if (overflowX === 'scroll' || overflowY === 'scroll') {\n return true;\n }\n\n return ($el.innerHeight() < el.scrollHeight ||\n $el.innerWidth() < el.scrollWidth);\n };\n\n Utils.escapeMarkup = function (markup) {\n var replaceMap = {\n '\\\\': '\',\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n '\\'': ''',\n '/': '/'\n };\n\n // Do not try to escape the markup if it's not a string\n if (typeof markup !== 'string') {\n return markup;\n }\n\n return String(markup).replace(/[&<>\"'\\/\\\\]/g, function (match) {\n return replaceMap[match];\n });\n };\n\n // Cache objects in Utils.__cache instead of $.data (see #4346)\n Utils.__cache = {};\n\n var id = 0;\n Utils.GetUniqueElementId = function (element) {\n // Get a unique element Id. If element has no id,\n // creates a new unique number, stores it in the id\n // attribute and returns the new id with a prefix.\n // If an id already exists, it simply returns it with a prefix.\n\n var select2Id = element.getAttribute('data-select2-id');\n\n if (select2Id != null) {\n return select2Id;\n }\n\n // If element has id, use it.\n if (element.id) {\n select2Id = 'select2-data-' + element.id;\n } else {\n select2Id = 'select2-data-' + (++id).toString() +\n '-' + Utils.generateChars(4);\n }\n\n element.setAttribute('data-select2-id', select2Id);\n\n return select2Id;\n };\n\n Utils.StoreData = function (element, name, value) {\n // Stores an item in the cache for a specified element.\n // name is the cache key.\n var id = Utils.GetUniqueElementId(element);\n if (!Utils.__cache[id]) {\n Utils.__cache[id] = {};\n }\n\n Utils.__cache[id][name] = value;\n };\n\n Utils.GetData = function (element, name) {\n // Retrieves a value from the cache by its key (name)\n // name is optional. If no name specified, return\n // all cache items for the specified element.\n // and for a specified element.\n var id = Utils.GetUniqueElementId(element);\n if (name) {\n if (Utils.__cache[id]) {\n if (Utils.__cache[id][name] != null) {\n return Utils.__cache[id][name];\n }\n return $(element).data(name); // Fallback to HTML5 data attribs.\n }\n return $(element).data(name); // Fallback to HTML5 data attribs.\n } else {\n return Utils.__cache[id];\n }\n };\n\n Utils.RemoveData = function (element) {\n // Removes all cached items for a specified element.\n var id = Utils.GetUniqueElementId(element);\n if (Utils.__cache[id] != null) {\n delete Utils.__cache[id];\n }\n\n element.removeAttribute('data-select2-id');\n };\n\n Utils.copyNonInternalCssClasses = function (dest, src) {\n var classes;\n\n var destinationClasses = dest.getAttribute('class').trim().split(/\\s+/);\n\n destinationClasses = destinationClasses.filter(function (clazz) {\n // Save all Select2 classes\n return clazz.indexOf('select2-') === 0;\n });\n\n var sourceClasses = src.getAttribute('class').trim().split(/\\s+/);\n\n sourceClasses = sourceClasses.filter(function (clazz) {\n // Only copy non-Select2 classes\n return clazz.indexOf('select2-') !== 0;\n });\n\n var replacements = destinationClasses.concat(sourceClasses);\n\n dest.setAttribute('class', replacements.join(' '));\n };\n\n return Utils;\n});\n\nS2.define('select2/results',[\n 'jquery',\n './utils'\n], function ($, Utils) {\n function Results ($element, options, dataAdapter) {\n this.$element = $element;\n this.data = dataAdapter;\n this.options = options;\n\n Results.__super__.constructor.call(this);\n }\n\n Utils.Extend(Results, Utils.Observable);\n\n Results.prototype.render = function () {\n var $results = $(\n ''\n );\n\n if (this.options.get('multiple')) {\n $results.attr('aria-multiselectable', 'true');\n }\n\n this.$results = $results;\n\n return $results;\n };\n\n Results.prototype.clear = function () {\n this.$results.empty();\n };\n\n Results.prototype.displayMessage = function (params) {\n var escapeMarkup = this.options.get('escapeMarkup');\n\n this.clear();\n this.hideLoading();\n\n var $message = $(\n '
  • '\n );\n\n var message = this.options.get('translations').get(params.message);\n\n $message.append(\n escapeMarkup(\n message(params.args)\n )\n );\n\n $message[0].className += ' select2-results__message';\n\n this.$results.append($message);\n };\n\n Results.prototype.hideMessages = function () {\n this.$results.find('.select2-results__message').remove();\n };\n\n Results.prototype.append = function (data) {\n this.hideLoading();\n\n var $options = [];\n\n if (data.results == null || data.results.length === 0) {\n if (this.$results.children().length === 0) {\n this.trigger('results:message', {\n message: 'noResults'\n });\n }\n\n return;\n }\n\n data.results = this.sort(data.results);\n\n for (var d = 0; d < data.results.length; d++) {\n var item = data.results[d];\n\n var $option = this.option(item);\n\n $options.push($option);\n }\n\n this.$results.append($options);\n };\n\n Results.prototype.position = function ($results, $dropdown) {\n var $resultsContainer = $dropdown.find('.select2-results');\n $resultsContainer.append($results);\n };\n\n Results.prototype.sort = function (data) {\n var sorter = this.options.get('sorter');\n\n return sorter(data);\n };\n\n Results.prototype.highlightFirstItem = function () {\n var $options = this.$results\n .find('.select2-results__option--selectable');\n\n var $selected = $options.filter('.select2-results__option--selected');\n\n // Check if there are any selected options\n if ($selected.length > 0) {\n // If there are selected options, highlight the first\n $selected.first().trigger('mouseenter');\n } else {\n // If there are no selected options, highlight the first option\n // in the dropdown\n $options.first().trigger('mouseenter');\n }\n\n this.ensureHighlightVisible();\n };\n\n Results.prototype.setClasses = function () {\n var self = this;\n\n this.data.current(function (selected) {\n var selectedIds = selected.map(function (s) {\n return s.id.toString();\n });\n\n var $options = self.$results\n .find('.select2-results__option--selectable');\n\n $options.each(function () {\n var $option = $(this);\n\n var item = Utils.GetData(this, 'data');\n\n // id needs to be converted to a string when comparing\n var id = '' + item.id;\n\n if ((item.element != null && item.element.selected) ||\n (item.element == null && selectedIds.indexOf(id) > -1)) {\n this.classList.add('select2-results__option--selected');\n $option.attr('aria-selected', 'true');\n } else {\n this.classList.remove('select2-results__option--selected');\n $option.attr('aria-selected', 'false');\n }\n });\n\n });\n };\n\n Results.prototype.showLoading = function (params) {\n this.hideLoading();\n\n var loadingMore = this.options.get('translations').get('searching');\n\n var loading = {\n disabled: true,\n loading: true,\n text: loadingMore(params)\n };\n var $loading = this.option(loading);\n $loading.className += ' loading-results';\n\n this.$results.prepend($loading);\n };\n\n Results.prototype.hideLoading = function () {\n this.$results.find('.loading-results').remove();\n };\n\n Results.prototype.option = function (data) {\n var option = document.createElement('li');\n option.classList.add('select2-results__option');\n option.classList.add('select2-results__option--selectable');\n\n var attrs = {\n 'role': 'option'\n };\n\n var matches = window.Element.prototype.matches ||\n window.Element.prototype.msMatchesSelector ||\n window.Element.prototype.webkitMatchesSelector;\n\n if ((data.element != null && matches.call(data.element, ':disabled')) ||\n (data.element == null && data.disabled)) {\n attrs['aria-disabled'] = 'true';\n\n option.classList.remove('select2-results__option--selectable');\n option.classList.add('select2-results__option--disabled');\n }\n\n if (data.id == null) {\n option.classList.remove('select2-results__option--selectable');\n }\n\n if (data._resultId != null) {\n option.id = data._resultId;\n }\n\n if (data.title) {\n option.title = data.title;\n }\n\n if (data.children) {\n attrs.role = 'group';\n attrs['aria-label'] = data.text;\n\n option.classList.remove('select2-results__option--selectable');\n option.classList.add('select2-results__option--group');\n }\n\n for (var attr in attrs) {\n var val = attrs[attr];\n\n option.setAttribute(attr, val);\n }\n\n if (data.children) {\n var $option = $(option);\n\n var label = document.createElement('strong');\n label.className = 'select2-results__group';\n\n this.template(data, label);\n\n var $children = [];\n\n for (var c = 0; c < data.children.length; c++) {\n var child = data.children[c];\n\n var $child = this.option(child);\n\n $children.push($child);\n }\n\n var $childrenContainer = $('', {\n 'class': 'select2-results__options select2-results__options--nested',\n 'role': 'none'\n });\n\n $childrenContainer.append($children);\n\n $option.append(label);\n $option.append($childrenContainer);\n } else {\n this.template(data, option);\n }\n\n Utils.StoreData(option, 'data', data);\n\n return option;\n };\n\n Results.prototype.bind = function (container, $container) {\n var self = this;\n\n var id = container.id + '-results';\n\n this.$results.attr('id', id);\n\n container.on('results:all', function (params) {\n self.clear();\n self.append(params.data);\n\n if (container.isOpen()) {\n self.setClasses();\n self.highlightFirstItem();\n }\n });\n\n container.on('results:append', function (params) {\n self.append(params.data);\n\n if (container.isOpen()) {\n self.setClasses();\n }\n });\n\n container.on('query', function (params) {\n self.hideMessages();\n self.showLoading(params);\n });\n\n container.on('select', function () {\n if (!container.isOpen()) {\n return;\n }\n\n self.setClasses();\n\n if (self.options.get('scrollAfterSelect')) {\n self.highlightFirstItem();\n }\n });\n\n container.on('unselect', function () {\n if (!container.isOpen()) {\n return;\n }\n\n self.setClasses();\n\n if (self.options.get('scrollAfterSelect')) {\n self.highlightFirstItem();\n }\n });\n\n container.on('open', function () {\n // When the dropdown is open, aria-expended=\"true\"\n self.$results.attr('aria-expanded', 'true');\n self.$results.attr('aria-hidden', 'false');\n\n self.setClasses();\n self.ensureHighlightVisible();\n });\n\n container.on('close', function () {\n // When the dropdown is closed, aria-expended=\"false\"\n self.$results.attr('aria-expanded', 'false');\n self.$results.attr('aria-hidden', 'true');\n self.$results.removeAttr('aria-activedescendant');\n });\n\n container.on('results:toggle', function () {\n var $highlighted = self.getHighlightedResults();\n\n if ($highlighted.length === 0) {\n return;\n }\n\n $highlighted.trigger('mouseup');\n });\n\n container.on('results:select', function () {\n var $highlighted = self.getHighlightedResults();\n\n if ($highlighted.length === 0) {\n return;\n }\n\n var data = Utils.GetData($highlighted[0], 'data');\n\n if ($highlighted.hasClass('select2-results__option--selected')) {\n self.trigger('close', {});\n } else {\n self.trigger('select', {\n data: data\n });\n }\n });\n\n container.on('results:previous', function () {\n var $highlighted = self.getHighlightedResults();\n\n var $options = self.$results.find('.select2-results__option--selectable');\n\n var currentIndex = $options.index($highlighted);\n\n // If we are already at the top, don't move further\n // If no options, currentIndex will be -1\n if (currentIndex <= 0) {\n return;\n }\n\n var nextIndex = currentIndex - 1;\n\n // If none are highlighted, highlight the first\n if ($highlighted.length === 0) {\n nextIndex = 0;\n }\n\n var $next = $options.eq(nextIndex);\n\n $next.trigger('mouseenter');\n\n var currentOffset = self.$results.offset().top;\n var nextTop = $next.offset().top;\n var nextOffset = self.$results.scrollTop() + (nextTop - currentOffset);\n\n if (nextIndex === 0) {\n self.$results.scrollTop(0);\n } else if (nextTop - currentOffset < 0) {\n self.$results.scrollTop(nextOffset);\n }\n });\n\n container.on('results:next', function () {\n var $highlighted = self.getHighlightedResults();\n\n var $options = self.$results.find('.select2-results__option--selectable');\n\n var currentIndex = $options.index($highlighted);\n\n var nextIndex = currentIndex + 1;\n\n // If we are at the last option, stay there\n if (nextIndex >= $options.length) {\n return;\n }\n\n var $next = $options.eq(nextIndex);\n\n $next.trigger('mouseenter');\n\n var currentOffset = self.$results.offset().top +\n self.$results.outerHeight(false);\n var nextBottom = $next.offset().top + $next.outerHeight(false);\n var nextOffset = self.$results.scrollTop() + nextBottom - currentOffset;\n\n if (nextIndex === 0) {\n self.$results.scrollTop(0);\n } else if (nextBottom > currentOffset) {\n self.$results.scrollTop(nextOffset);\n }\n });\n\n container.on('results:focus', function (params) {\n params.element[0].classList.add('select2-results__option--highlighted');\n params.element[0].setAttribute('aria-selected', 'true');\n });\n\n container.on('results:message', function (params) {\n self.displayMessage(params);\n });\n\n if ($.fn.mousewheel) {\n this.$results.on('mousewheel', function (e) {\n var top = self.$results.scrollTop();\n\n var bottom = self.$results.get(0).scrollHeight - top + e.deltaY;\n\n var isAtTop = e.deltaY > 0 && top - e.deltaY <= 0;\n var isAtBottom = e.deltaY < 0 && bottom <= self.$results.height();\n\n if (isAtTop) {\n self.$results.scrollTop(0);\n\n e.preventDefault();\n e.stopPropagation();\n } else if (isAtBottom) {\n self.$results.scrollTop(\n self.$results.get(0).scrollHeight - self.$results.height()\n );\n\n e.preventDefault();\n e.stopPropagation();\n }\n });\n }\n\n this.$results.on('mouseup', '.select2-results__option--selectable',\n function (evt) {\n var $this = $(this);\n\n var data = Utils.GetData(this, 'data');\n\n if ($this.hasClass('select2-results__option--selected')) {\n if (self.options.get('multiple')) {\n self.trigger('unselect', {\n originalEvent: evt,\n data: data\n });\n } else {\n self.trigger('close', {});\n }\n\n return;\n }\n\n self.trigger('select', {\n originalEvent: evt,\n data: data\n });\n });\n\n this.$results.on('mouseenter', '.select2-results__option--selectable',\n function (evt) {\n var data = Utils.GetData(this, 'data');\n\n self.getHighlightedResults()\n .removeClass('select2-results__option--highlighted')\n .attr('aria-selected', 'false');\n\n self.trigger('results:focus', {\n data: data,\n element: $(this)\n });\n });\n };\n\n Results.prototype.getHighlightedResults = function () {\n var $highlighted = this.$results\n .find('.select2-results__option--highlighted');\n\n return $highlighted;\n };\n\n Results.prototype.destroy = function () {\n this.$results.remove();\n };\n\n Results.prototype.ensureHighlightVisible = function () {\n var $highlighted = this.getHighlightedResults();\n\n if ($highlighted.length === 0) {\n return;\n }\n\n var $options = this.$results.find('.select2-results__option--selectable');\n\n var currentIndex = $options.index($highlighted);\n\n var currentOffset = this.$results.offset().top;\n var nextTop = $highlighted.offset().top;\n var nextOffset = this.$results.scrollTop() + (nextTop - currentOffset);\n\n var offsetDelta = nextTop - currentOffset;\n nextOffset -= $highlighted.outerHeight(false) * 2;\n\n if (currentIndex <= 2) {\n this.$results.scrollTop(0);\n } else if (offsetDelta > this.$results.outerHeight() || offsetDelta < 0) {\n this.$results.scrollTop(nextOffset);\n }\n };\n\n Results.prototype.template = function (result, container) {\n var template = this.options.get('templateResult');\n var escapeMarkup = this.options.get('escapeMarkup');\n\n var content = template(result, container);\n\n if (content == null) {\n container.style.display = 'none';\n } else if (typeof content === 'string') {\n container.innerHTML = escapeMarkup(content);\n } else {\n $(container).append(content);\n }\n };\n\n return Results;\n});\n\nS2.define('select2/keys',[\n\n], function () {\n var KEYS = {\n BACKSPACE: 8,\n TAB: 9,\n ENTER: 13,\n SHIFT: 16,\n CTRL: 17,\n ALT: 18,\n ESC: 27,\n SPACE: 32,\n PAGE_UP: 33,\n PAGE_DOWN: 34,\n END: 35,\n HOME: 36,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n DELETE: 46\n };\n\n return KEYS;\n});\n\nS2.define('select2/selection/base',[\n 'jquery',\n '../utils',\n '../keys'\n], function ($, Utils, KEYS) {\n function BaseSelection ($element, options) {\n this.$element = $element;\n this.options = options;\n\n BaseSelection.__super__.constructor.call(this);\n }\n\n Utils.Extend(BaseSelection, Utils.Observable);\n\n BaseSelection.prototype.render = function () {\n var $selection = $(\n '' +\n ''\n );\n\n this._tabindex = 0;\n\n if (Utils.GetData(this.$element[0], 'old-tabindex') != null) {\n this._tabindex = Utils.GetData(this.$element[0], 'old-tabindex');\n } else if (this.$element.attr('tabindex') != null) {\n this._tabindex = this.$element.attr('tabindex');\n }\n\n $selection.attr('title', this.$element.attr('title'));\n $selection.attr('tabindex', this._tabindex);\n $selection.attr('aria-disabled', 'false');\n\n this.$selection = $selection;\n\n return $selection;\n };\n\n BaseSelection.prototype.bind = function (container, $container) {\n var self = this;\n\n var resultsId = container.id + '-results';\n\n this.container = container;\n\n this.$selection.on('focus', function (evt) {\n self.trigger('focus', evt);\n });\n\n this.$selection.on('blur', function (evt) {\n self._handleBlur(evt);\n });\n\n this.$selection.on('keydown', function (evt) {\n self.trigger('keypress', evt);\n\n if (evt.which === KEYS.SPACE) {\n evt.preventDefault();\n }\n });\n\n container.on('results:focus', function (params) {\n self.$selection.attr('aria-activedescendant', params.data._resultId);\n });\n\n container.on('selection:update', function (params) {\n self.update(params.data);\n });\n\n container.on('open', function () {\n // When the dropdown is open, aria-expanded=\"true\"\n self.$selection.attr('aria-expanded', 'true');\n self.$selection.attr('aria-owns', resultsId);\n\n self._attachCloseHandler(container);\n });\n\n container.on('close', function () {\n // When the dropdown is closed, aria-expanded=\"false\"\n self.$selection.attr('aria-expanded', 'false');\n self.$selection.removeAttr('aria-activedescendant');\n self.$selection.removeAttr('aria-owns');\n\n self.$selection.trigger('focus');\n\n self._detachCloseHandler(container);\n });\n\n container.on('enable', function () {\n self.$selection.attr('tabindex', self._tabindex);\n self.$selection.attr('aria-disabled', 'false');\n });\n\n container.on('disable', function () {\n self.$selection.attr('tabindex', '-1');\n self.$selection.attr('aria-disabled', 'true');\n });\n };\n\n BaseSelection.prototype._handleBlur = function (evt) {\n var self = this;\n\n // This needs to be delayed as the active element is the body when the tab\n // key is pressed, possibly along with others.\n window.setTimeout(function () {\n // Don't trigger `blur` if the focus is still in the selection\n if (\n (document.activeElement == self.$selection[0]) ||\n ($.contains(self.$selection[0], document.activeElement))\n ) {\n return;\n }\n\n self.trigger('blur', evt);\n }, 1);\n };\n\n BaseSelection.prototype._attachCloseHandler = function (container) {\n\n $(document.body).on('mousedown.select2.' + container.id, function (e) {\n var $target = $(e.target);\n\n var $select = $target.closest('.select2');\n\n var $all = $('.select2.select2-container--open');\n\n $all.each(function () {\n if (this == $select[0]) {\n return;\n }\n\n var $element = Utils.GetData(this, 'element');\n\n $element.select2('close');\n });\n });\n };\n\n BaseSelection.prototype._detachCloseHandler = function (container) {\n $(document.body).off('mousedown.select2.' + container.id);\n };\n\n BaseSelection.prototype.position = function ($selection, $container) {\n var $selectionContainer = $container.find('.selection');\n $selectionContainer.append($selection);\n };\n\n BaseSelection.prototype.destroy = function () {\n this._detachCloseHandler(this.container);\n };\n\n BaseSelection.prototype.update = function (data) {\n throw new Error('The `update` method must be defined in child classes.');\n };\n\n /**\n * Helper method to abstract the \"enabled\" (not \"disabled\") state of this\n * object.\n *\n * @return {true} if the instance is not disabled.\n * @return {false} if the instance is disabled.\n */\n BaseSelection.prototype.isEnabled = function () {\n return !this.isDisabled();\n };\n\n /**\n * Helper method to abstract the \"disabled\" state of this object.\n *\n * @return {true} if the disabled option is true.\n * @return {false} if the disabled option is false.\n */\n BaseSelection.prototype.isDisabled = function () {\n return this.options.get('disabled');\n };\n\n return BaseSelection;\n});\n\nS2.define('select2/selection/single',[\n 'jquery',\n './base',\n '../utils',\n '../keys'\n], function ($, BaseSelection, Utils, KEYS) {\n function SingleSelection () {\n SingleSelection.__super__.constructor.apply(this, arguments);\n }\n\n Utils.Extend(SingleSelection, BaseSelection);\n\n SingleSelection.prototype.render = function () {\n var $selection = SingleSelection.__super__.render.call(this);\n\n $selection[0].classList.add('select2-selection--single');\n\n $selection.html(\n '' +\n '' +\n '' +\n ''\n );\n\n return $selection;\n };\n\n SingleSelection.prototype.bind = function (container, $container) {\n var self = this;\n\n SingleSelection.__super__.bind.apply(this, arguments);\n\n var id = container.id + '-container';\n\n this.$selection.find('.select2-selection__rendered')\n .attr('id', id)\n .attr('role', 'textbox')\n .attr('aria-readonly', 'true');\n this.$selection.attr('aria-labelledby', id);\n this.$selection.attr('aria-controls', id);\n\n this.$selection.on('mousedown', function (evt) {\n // Only respond to left clicks\n if (evt.which !== 1) {\n return;\n }\n\n self.trigger('toggle', {\n originalEvent: evt\n });\n });\n\n this.$selection.on('focus', function (evt) {\n // User focuses on the container\n });\n\n this.$selection.on('blur', function (evt) {\n // User exits the container\n });\n\n container.on('focus', function (evt) {\n if (!container.isOpen()) {\n self.$selection.trigger('focus');\n }\n });\n };\n\n SingleSelection.prototype.clear = function () {\n var $rendered = this.$selection.find('.select2-selection__rendered');\n $rendered.empty();\n $rendered.removeAttr('title'); // clear tooltip on empty\n };\n\n SingleSelection.prototype.display = function (data, container) {\n var template = this.options.get('templateSelection');\n var escapeMarkup = this.options.get('escapeMarkup');\n\n return escapeMarkup(template(data, container));\n };\n\n SingleSelection.prototype.selectionContainer = function () {\n return $('');\n };\n\n SingleSelection.prototype.update = function (data) {\n if (data.length === 0) {\n this.clear();\n return;\n }\n\n var selection = data[0];\n\n var $rendered = this.$selection.find('.select2-selection__rendered');\n var formatted = this.display(selection, $rendered);\n\n $rendered.empty().append(formatted);\n\n var title = selection.title || selection.text;\n\n if (title) {\n $rendered.attr('title', title);\n } else {\n $rendered.removeAttr('title');\n }\n };\n\n return SingleSelection;\n});\n\nS2.define('select2/selection/multiple',[\n 'jquery',\n './base',\n '../utils'\n], function ($, BaseSelection, Utils) {\n function MultipleSelection ($element, options) {\n MultipleSelection.__super__.constructor.apply(this, arguments);\n }\n\n Utils.Extend(MultipleSelection, BaseSelection);\n\n MultipleSelection.prototype.render = function () {\n var $selection = MultipleSelection.__super__.render.call(this);\n\n $selection[0].classList.add('select2-selection--multiple');\n\n $selection.html(\n ''\n );\n\n return $selection;\n };\n\n MultipleSelection.prototype.bind = function (container, $container) {\n var self = this;\n\n MultipleSelection.__super__.bind.apply(this, arguments);\n\n var id = container.id + '-container';\n this.$selection.find('.select2-selection__rendered').attr('id', id);\n\n this.$selection.on('click', function (evt) {\n self.trigger('toggle', {\n originalEvent: evt\n });\n });\n\n this.$selection.on(\n 'click',\n '.select2-selection__choice__remove',\n function (evt) {\n // Ignore the event if it is disabled\n if (self.isDisabled()) {\n return;\n }\n\n var $remove = $(this);\n var $selection = $remove.parent();\n\n var data = Utils.GetData($selection[0], 'data');\n\n self.trigger('unselect', {\n originalEvent: evt,\n data: data\n });\n }\n );\n\n this.$selection.on(\n 'keydown',\n '.select2-selection__choice__remove',\n function (evt) {\n // Ignore the event if it is disabled\n if (self.isDisabled()) {\n return;\n }\n\n evt.stopPropagation();\n }\n );\n };\n\n MultipleSelection.prototype.clear = function () {\n var $rendered = this.$selection.find('.select2-selection__rendered');\n $rendered.empty();\n $rendered.removeAttr('title');\n };\n\n MultipleSelection.prototype.display = function (data, container) {\n var template = this.options.get('templateSelection');\n var escapeMarkup = this.options.get('escapeMarkup');\n\n return escapeMarkup(template(data, container));\n };\n\n MultipleSelection.prototype.selectionContainer = function () {\n var $container = $(\n '
  • ' +\n '' +\n '' +\n '
  • '\n );\n\n return $container;\n };\n\n MultipleSelection.prototype.update = function (data) {\n this.clear();\n\n if (data.length === 0) {\n return;\n }\n\n var $selections = [];\n\n var selectionIdPrefix = this.$selection.find('.select2-selection__rendered')\n .attr('id') + '-choice-';\n\n for (var d = 0; d < data.length; d++) {\n var selection = data[d];\n\n var $selection = this.selectionContainer();\n var formatted = this.display(selection, $selection);\n\n var selectionId = selectionIdPrefix + Utils.generateChars(4) + '-';\n\n if (selection.id) {\n selectionId += selection.id;\n } else {\n selectionId += Utils.generateChars(4);\n }\n\n $selection.find('.select2-selection__choice__display')\n .append(formatted)\n .attr('id', selectionId);\n\n var title = selection.title || selection.text;\n\n if (title) {\n $selection.attr('title', title);\n }\n\n var removeItem = this.options.get('translations').get('removeItem');\n\n var $remove = $selection.find('.select2-selection__choice__remove');\n\n $remove.attr('title', removeItem());\n $remove.attr('aria-label', removeItem());\n $remove.attr('aria-describedby', selectionId);\n\n Utils.StoreData($selection[0], 'data', selection);\n\n $selections.push($selection);\n }\n\n var $rendered = this.$selection.find('.select2-selection__rendered');\n\n $rendered.append($selections);\n };\n\n return MultipleSelection;\n});\n\nS2.define('select2/selection/placeholder',[\n\n], function () {\n function Placeholder (decorated, $element, options) {\n this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\n\n decorated.call(this, $element, options);\n }\n\n Placeholder.prototype.normalizePlaceholder = function (_, placeholder) {\n if (typeof placeholder === 'string') {\n placeholder = {\n id: '',\n text: placeholder\n };\n }\n\n return placeholder;\n };\n\n Placeholder.prototype.createPlaceholder = function (decorated, placeholder) {\n var $placeholder = this.selectionContainer();\n\n $placeholder.html(this.display(placeholder));\n $placeholder[0].classList.add('select2-selection__placeholder');\n $placeholder[0].classList.remove('select2-selection__choice');\n\n var placeholderTitle = placeholder.title ||\n placeholder.text ||\n $placeholder.text();\n\n this.$selection.find('.select2-selection__rendered').attr(\n 'title',\n placeholderTitle\n );\n\n return $placeholder;\n };\n\n Placeholder.prototype.update = function (decorated, data) {\n var singlePlaceholder = (\n data.length == 1 && data[0].id != this.placeholder.id\n );\n var multipleSelections = data.length > 1;\n\n if (multipleSelections || singlePlaceholder) {\n return decorated.call(this, data);\n }\n\n this.clear();\n\n var $placeholder = this.createPlaceholder(this.placeholder);\n\n this.$selection.find('.select2-selection__rendered').append($placeholder);\n };\n\n return Placeholder;\n});\n\nS2.define('select2/selection/allowClear',[\n 'jquery',\n '../keys',\n '../utils'\n], function ($, KEYS, Utils) {\n function AllowClear () { }\n\n AllowClear.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\n if (this.placeholder == null) {\n if (this.options.get('debug') && window.console && console.error) {\n console.error(\n 'Select2: The `allowClear` option should be used in combination ' +\n 'with the `placeholder` option.'\n );\n }\n }\n\n this.$selection.on('mousedown', '.select2-selection__clear',\n function (evt) {\n self._handleClear(evt);\n });\n\n container.on('keypress', function (evt) {\n self._handleKeyboardClear(evt, container);\n });\n };\n\n AllowClear.prototype._handleClear = function (_, evt) {\n // Ignore the event if it is disabled\n if (this.isDisabled()) {\n return;\n }\n\n var $clear = this.$selection.find('.select2-selection__clear');\n\n // Ignore the event if nothing has been selected\n if ($clear.length === 0) {\n return;\n }\n\n evt.stopPropagation();\n\n var data = Utils.GetData($clear[0], 'data');\n\n var previousVal = this.$element.val();\n this.$element.val(this.placeholder.id);\n\n var unselectData = {\n data: data\n };\n this.trigger('clear', unselectData);\n if (unselectData.prevented) {\n this.$element.val(previousVal);\n return;\n }\n\n for (var d = 0; d < data.length; d++) {\n unselectData = {\n data: data[d]\n };\n\n // Trigger the `unselect` event, so people can prevent it from being\n // cleared.\n this.trigger('unselect', unselectData);\n\n // If the event was prevented, don't clear it out.\n if (unselectData.prevented) {\n this.$element.val(previousVal);\n return;\n }\n }\n\n this.$element.trigger('input').trigger('change');\n\n this.trigger('toggle', {});\n };\n\n AllowClear.prototype._handleKeyboardClear = function (_, evt, container) {\n if (container.isOpen()) {\n return;\n }\n\n if (evt.which == KEYS.DELETE || evt.which == KEYS.BACKSPACE) {\n this._handleClear(evt);\n }\n };\n\n AllowClear.prototype.update = function (decorated, data) {\n decorated.call(this, data);\n\n this.$selection.find('.select2-selection__clear').remove();\n this.$selection[0].classList.remove('select2-selection--clearable');\n\n if (this.$selection.find('.select2-selection__placeholder').length > 0 ||\n data.length === 0) {\n return;\n }\n\n var selectionId = this.$selection.find('.select2-selection__rendered')\n .attr('id');\n\n var removeAll = this.options.get('translations').get('removeAllItems');\n\n var $remove = $(\n ''\n );\n $remove.attr('title', removeAll());\n $remove.attr('aria-label', removeAll());\n $remove.attr('aria-describedby', selectionId);\n Utils.StoreData($remove[0], 'data', data);\n\n this.$selection.prepend($remove);\n this.$selection[0].classList.add('select2-selection--clearable');\n };\n\n return AllowClear;\n});\n\nS2.define('select2/selection/search',[\n 'jquery',\n '../utils',\n '../keys'\n], function ($, Utils, KEYS) {\n function Search (decorated, $element, options) {\n decorated.call(this, $element, options);\n }\n\n Search.prototype.render = function (decorated) {\n var searchLabel = this.options.get('translations').get('search');\n var $search = $(\n '' +\n '' +\n ''\n );\n\n this.$searchContainer = $search;\n this.$search = $search.find('textarea');\n\n this.$search.prop('autocomplete', this.options.get('autocomplete'));\n this.$search.attr('aria-label', searchLabel());\n\n var $rendered = decorated.call(this);\n\n this._transferTabIndex();\n $rendered.append(this.$searchContainer);\n\n return $rendered;\n };\n\n Search.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n var resultsId = container.id + '-results';\n var selectionId = container.id + '-container';\n\n decorated.call(this, container, $container);\n\n self.$search.attr('aria-describedby', selectionId);\n\n container.on('open', function () {\n self.$search.attr('aria-controls', resultsId);\n self.$search.trigger('focus');\n });\n\n container.on('close', function () {\n self.$search.val('');\n self.resizeSearch();\n self.$search.removeAttr('aria-controls');\n self.$search.removeAttr('aria-activedescendant');\n self.$search.trigger('focus');\n });\n\n container.on('enable', function () {\n self.$search.prop('disabled', false);\n\n self._transferTabIndex();\n });\n\n container.on('disable', function () {\n self.$search.prop('disabled', true);\n });\n\n container.on('focus', function (evt) {\n self.$search.trigger('focus');\n });\n\n container.on('results:focus', function (params) {\n if (params.data._resultId) {\n self.$search.attr('aria-activedescendant', params.data._resultId);\n } else {\n self.$search.removeAttr('aria-activedescendant');\n }\n });\n\n this.$selection.on('focusin', '.select2-search--inline', function (evt) {\n self.trigger('focus', evt);\n });\n\n this.$selection.on('focusout', '.select2-search--inline', function (evt) {\n self._handleBlur(evt);\n });\n\n this.$selection.on('keydown', '.select2-search--inline', function (evt) {\n evt.stopPropagation();\n\n self.trigger('keypress', evt);\n\n self._keyUpPrevented = evt.isDefaultPrevented();\n\n var key = evt.which;\n\n if (key === KEYS.BACKSPACE && self.$search.val() === '') {\n var $previousChoice = self.$selection\n .find('.select2-selection__choice').last();\n\n if ($previousChoice.length > 0) {\n var item = Utils.GetData($previousChoice[0], 'data');\n\n self.searchRemoveChoice(item);\n\n evt.preventDefault();\n }\n }\n });\n\n this.$selection.on('click', '.select2-search--inline', function (evt) {\n if (self.$search.val()) {\n evt.stopPropagation();\n }\n });\n\n // Try to detect the IE version should the `documentMode` property that\n // is stored on the document. This is only implemented in IE and is\n // slightly cleaner than doing a user agent check.\n // This property is not available in Edge, but Edge also doesn't have\n // this bug.\n var msie = document.documentMode;\n var disableInputEvents = msie && msie <= 11;\n\n // Workaround for browsers which do not support the `input` event\n // This will prevent double-triggering of events for browsers which support\n // both the `keyup` and `input` events.\n this.$selection.on(\n 'input.searchcheck',\n '.select2-search--inline',\n function (evt) {\n // IE will trigger the `input` event when a placeholder is used on a\n // search box. To get around this issue, we are forced to ignore all\n // `input` events in IE and keep using `keyup`.\n if (disableInputEvents) {\n self.$selection.off('input.search input.searchcheck');\n return;\n }\n\n // Unbind the duplicated `keyup` event\n self.$selection.off('keyup.search');\n }\n );\n\n this.$selection.on(\n 'keyup.search input.search',\n '.select2-search--inline',\n function (evt) {\n // IE will trigger the `input` event when a placeholder is used on a\n // search box. To get around this issue, we are forced to ignore all\n // `input` events in IE and keep using `keyup`.\n if (disableInputEvents && evt.type === 'input') {\n self.$selection.off('input.search input.searchcheck');\n return;\n }\n\n var key = evt.which;\n\n // We can freely ignore events from modifier keys\n if (key == KEYS.SHIFT || key == KEYS.CTRL || key == KEYS.ALT) {\n return;\n }\n\n // Tabbing will be handled during the `keydown` phase\n if (key == KEYS.TAB) {\n return;\n }\n\n self.handleSearch(evt);\n }\n );\n };\n\n /**\n * This method will transfer the tabindex attribute from the rendered\n * selection to the search box. This allows for the search box to be used as\n * the primary focus instead of the selection container.\n *\n * @private\n */\n Search.prototype._transferTabIndex = function (decorated) {\n this.$search.attr('tabindex', this.$selection.attr('tabindex'));\n this.$selection.attr('tabindex', '-1');\n };\n\n Search.prototype.createPlaceholder = function (decorated, placeholder) {\n this.$search.attr('placeholder', placeholder.text);\n };\n\n Search.prototype.update = function (decorated, data) {\n var searchHadFocus = this.$search[0] == document.activeElement;\n\n this.$search.attr('placeholder', '');\n\n decorated.call(this, data);\n\n this.resizeSearch();\n if (searchHadFocus) {\n this.$search.trigger('focus');\n }\n };\n\n Search.prototype.handleSearch = function () {\n this.resizeSearch();\n\n if (!this._keyUpPrevented) {\n var input = this.$search.val();\n\n this.trigger('query', {\n term: input\n });\n }\n\n this._keyUpPrevented = false;\n };\n\n Search.prototype.searchRemoveChoice = function (decorated, item) {\n this.trigger('unselect', {\n data: item\n });\n\n this.$search.val(item.text);\n this.handleSearch();\n };\n\n Search.prototype.resizeSearch = function () {\n this.$search.css('width', '25px');\n\n var width = '100%';\n\n if (this.$search.attr('placeholder') === '') {\n var minimumWidth = this.$search.val().length + 1;\n\n width = (minimumWidth * 0.75) + 'em';\n }\n\n this.$search.css('width', width);\n };\n\n return Search;\n});\n\nS2.define('select2/selection/selectionCss',[\n '../utils'\n], function (Utils) {\n function SelectionCSS () { }\n\n SelectionCSS.prototype.render = function (decorated) {\n var $selection = decorated.call(this);\n\n var selectionCssClass = this.options.get('selectionCssClass') || '';\n\n if (selectionCssClass.indexOf(':all:') !== -1) {\n selectionCssClass = selectionCssClass.replace(':all:', '');\n\n Utils.copyNonInternalCssClasses($selection[0], this.$element[0]);\n }\n\n $selection.addClass(selectionCssClass);\n\n return $selection;\n };\n\n return SelectionCSS;\n});\n\nS2.define('select2/selection/eventRelay',[\n 'jquery'\n], function ($) {\n function EventRelay () { }\n\n EventRelay.prototype.bind = function (decorated, container, $container) {\n var self = this;\n var relayEvents = [\n 'open', 'opening',\n 'close', 'closing',\n 'select', 'selecting',\n 'unselect', 'unselecting',\n 'clear', 'clearing'\n ];\n\n var preventableEvents = [\n 'opening', 'closing', 'selecting', 'unselecting', 'clearing'\n ];\n\n decorated.call(this, container, $container);\n\n container.on('*', function (name, params) {\n // Ignore events that should not be relayed\n if (relayEvents.indexOf(name) === -1) {\n return;\n }\n\n // The parameters should always be an object\n params = params || {};\n\n // Generate the jQuery event for the Select2 event\n var evt = $.Event('select2:' + name, {\n params: params\n });\n\n self.$element.trigger(evt);\n\n // Only handle preventable events if it was one\n if (preventableEvents.indexOf(name) === -1) {\n return;\n }\n\n params.prevented = evt.isDefaultPrevented();\n });\n };\n\n return EventRelay;\n});\n\nS2.define('select2/translation',[\n 'jquery',\n 'require'\n], function ($, require) {\n function Translation (dict) {\n this.dict = dict || {};\n }\n\n Translation.prototype.all = function () {\n return this.dict;\n };\n\n Translation.prototype.get = function (key) {\n return this.dict[key];\n };\n\n Translation.prototype.extend = function (translation) {\n this.dict = $.extend({}, translation.all(), this.dict);\n };\n\n // Static functions\n\n Translation._cache = {};\n\n Translation.loadPath = function (path) {\n if (!(path in Translation._cache)) {\n var translations = require(path);\n\n Translation._cache[path] = translations;\n }\n\n return new Translation(Translation._cache[path]);\n };\n\n return Translation;\n});\n\nS2.define('select2/diacritics',[\n\n], function () {\n var diacritics = {\n '\\u24B6': 'A',\n '\\uFF21': 'A',\n '\\u00C0': 'A',\n '\\u00C1': 'A',\n '\\u00C2': 'A',\n '\\u1EA6': 'A',\n '\\u1EA4': 'A',\n '\\u1EAA': 'A',\n '\\u1EA8': 'A',\n '\\u00C3': 'A',\n '\\u0100': 'A',\n '\\u0102': 'A',\n '\\u1EB0': 'A',\n '\\u1EAE': 'A',\n '\\u1EB4': 'A',\n '\\u1EB2': 'A',\n '\\u0226': 'A',\n '\\u01E0': 'A',\n '\\u00C4': 'A',\n '\\u01DE': 'A',\n '\\u1EA2': 'A',\n '\\u00C5': 'A',\n '\\u01FA': 'A',\n '\\u01CD': 'A',\n '\\u0200': 'A',\n '\\u0202': 'A',\n '\\u1EA0': 'A',\n '\\u1EAC': 'A',\n '\\u1EB6': 'A',\n '\\u1E00': 'A',\n '\\u0104': 'A',\n '\\u023A': 'A',\n '\\u2C6F': 'A',\n '\\uA732': 'AA',\n '\\u00C6': 'AE',\n '\\u01FC': 'AE',\n '\\u01E2': 'AE',\n '\\uA734': 'AO',\n '\\uA736': 'AU',\n '\\uA738': 'AV',\n '\\uA73A': 'AV',\n '\\uA73C': 'AY',\n '\\u24B7': 'B',\n '\\uFF22': 'B',\n '\\u1E02': 'B',\n '\\u1E04': 'B',\n '\\u1E06': 'B',\n '\\u0243': 'B',\n '\\u0182': 'B',\n '\\u0181': 'B',\n '\\u24B8': 'C',\n '\\uFF23': 'C',\n '\\u0106': 'C',\n '\\u0108': 'C',\n '\\u010A': 'C',\n '\\u010C': 'C',\n '\\u00C7': 'C',\n '\\u1E08': 'C',\n '\\u0187': 'C',\n '\\u023B': 'C',\n '\\uA73E': 'C',\n '\\u24B9': 'D',\n '\\uFF24': 'D',\n '\\u1E0A': 'D',\n '\\u010E': 'D',\n '\\u1E0C': 'D',\n '\\u1E10': 'D',\n '\\u1E12': 'D',\n '\\u1E0E': 'D',\n '\\u0110': 'D',\n '\\u018B': 'D',\n '\\u018A': 'D',\n '\\u0189': 'D',\n '\\uA779': 'D',\n '\\u01F1': 'DZ',\n '\\u01C4': 'DZ',\n '\\u01F2': 'Dz',\n '\\u01C5': 'Dz',\n '\\u24BA': 'E',\n '\\uFF25': 'E',\n '\\u00C8': 'E',\n '\\u00C9': 'E',\n '\\u00CA': 'E',\n '\\u1EC0': 'E',\n '\\u1EBE': 'E',\n '\\u1EC4': 'E',\n '\\u1EC2': 'E',\n '\\u1EBC': 'E',\n '\\u0112': 'E',\n '\\u1E14': 'E',\n '\\u1E16': 'E',\n '\\u0114': 'E',\n '\\u0116': 'E',\n '\\u00CB': 'E',\n '\\u1EBA': 'E',\n '\\u011A': 'E',\n '\\u0204': 'E',\n '\\u0206': 'E',\n '\\u1EB8': 'E',\n '\\u1EC6': 'E',\n '\\u0228': 'E',\n '\\u1E1C': 'E',\n '\\u0118': 'E',\n '\\u1E18': 'E',\n '\\u1E1A': 'E',\n '\\u0190': 'E',\n '\\u018E': 'E',\n '\\u24BB': 'F',\n '\\uFF26': 'F',\n '\\u1E1E': 'F',\n '\\u0191': 'F',\n '\\uA77B': 'F',\n '\\u24BC': 'G',\n '\\uFF27': 'G',\n '\\u01F4': 'G',\n '\\u011C': 'G',\n '\\u1E20': 'G',\n '\\u011E': 'G',\n '\\u0120': 'G',\n '\\u01E6': 'G',\n '\\u0122': 'G',\n '\\u01E4': 'G',\n '\\u0193': 'G',\n '\\uA7A0': 'G',\n '\\uA77D': 'G',\n '\\uA77E': 'G',\n '\\u24BD': 'H',\n '\\uFF28': 'H',\n '\\u0124': 'H',\n '\\u1E22': 'H',\n '\\u1E26': 'H',\n '\\u021E': 'H',\n '\\u1E24': 'H',\n '\\u1E28': 'H',\n '\\u1E2A': 'H',\n '\\u0126': 'H',\n '\\u2C67': 'H',\n '\\u2C75': 'H',\n '\\uA78D': 'H',\n '\\u24BE': 'I',\n '\\uFF29': 'I',\n '\\u00CC': 'I',\n '\\u00CD': 'I',\n '\\u00CE': 'I',\n '\\u0128': 'I',\n '\\u012A': 'I',\n '\\u012C': 'I',\n '\\u0130': 'I',\n '\\u00CF': 'I',\n '\\u1E2E': 'I',\n '\\u1EC8': 'I',\n '\\u01CF': 'I',\n '\\u0208': 'I',\n '\\u020A': 'I',\n '\\u1ECA': 'I',\n '\\u012E': 'I',\n '\\u1E2C': 'I',\n '\\u0197': 'I',\n '\\u24BF': 'J',\n '\\uFF2A': 'J',\n '\\u0134': 'J',\n '\\u0248': 'J',\n '\\u24C0': 'K',\n '\\uFF2B': 'K',\n '\\u1E30': 'K',\n '\\u01E8': 'K',\n '\\u1E32': 'K',\n '\\u0136': 'K',\n '\\u1E34': 'K',\n '\\u0198': 'K',\n '\\u2C69': 'K',\n '\\uA740': 'K',\n '\\uA742': 'K',\n '\\uA744': 'K',\n '\\uA7A2': 'K',\n '\\u24C1': 'L',\n '\\uFF2C': 'L',\n '\\u013F': 'L',\n '\\u0139': 'L',\n '\\u013D': 'L',\n '\\u1E36': 'L',\n '\\u1E38': 'L',\n '\\u013B': 'L',\n '\\u1E3C': 'L',\n '\\u1E3A': 'L',\n '\\u0141': 'L',\n '\\u023D': 'L',\n '\\u2C62': 'L',\n '\\u2C60': 'L',\n '\\uA748': 'L',\n '\\uA746': 'L',\n '\\uA780': 'L',\n '\\u01C7': 'LJ',\n '\\u01C8': 'Lj',\n '\\u24C2': 'M',\n '\\uFF2D': 'M',\n '\\u1E3E': 'M',\n '\\u1E40': 'M',\n '\\u1E42': 'M',\n '\\u2C6E': 'M',\n '\\u019C': 'M',\n '\\u24C3': 'N',\n '\\uFF2E': 'N',\n '\\u01F8': 'N',\n '\\u0143': 'N',\n '\\u00D1': 'N',\n '\\u1E44': 'N',\n '\\u0147': 'N',\n '\\u1E46': 'N',\n '\\u0145': 'N',\n '\\u1E4A': 'N',\n '\\u1E48': 'N',\n '\\u0220': 'N',\n '\\u019D': 'N',\n '\\uA790': 'N',\n '\\uA7A4': 'N',\n '\\u01CA': 'NJ',\n '\\u01CB': 'Nj',\n '\\u24C4': 'O',\n '\\uFF2F': 'O',\n '\\u00D2': 'O',\n '\\u00D3': 'O',\n '\\u00D4': 'O',\n '\\u1ED2': 'O',\n '\\u1ED0': 'O',\n '\\u1ED6': 'O',\n '\\u1ED4': 'O',\n '\\u00D5': 'O',\n '\\u1E4C': 'O',\n '\\u022C': 'O',\n '\\u1E4E': 'O',\n '\\u014C': 'O',\n '\\u1E50': 'O',\n '\\u1E52': 'O',\n '\\u014E': 'O',\n '\\u022E': 'O',\n '\\u0230': 'O',\n '\\u00D6': 'O',\n '\\u022A': 'O',\n '\\u1ECE': 'O',\n '\\u0150': 'O',\n '\\u01D1': 'O',\n '\\u020C': 'O',\n '\\u020E': 'O',\n '\\u01A0': 'O',\n '\\u1EDC': 'O',\n '\\u1EDA': 'O',\n '\\u1EE0': 'O',\n '\\u1EDE': 'O',\n '\\u1EE2': 'O',\n '\\u1ECC': 'O',\n '\\u1ED8': 'O',\n '\\u01EA': 'O',\n '\\u01EC': 'O',\n '\\u00D8': 'O',\n '\\u01FE': 'O',\n '\\u0186': 'O',\n '\\u019F': 'O',\n '\\uA74A': 'O',\n '\\uA74C': 'O',\n '\\u0152': 'OE',\n '\\u01A2': 'OI',\n '\\uA74E': 'OO',\n '\\u0222': 'OU',\n '\\u24C5': 'P',\n '\\uFF30': 'P',\n '\\u1E54': 'P',\n '\\u1E56': 'P',\n '\\u01A4': 'P',\n '\\u2C63': 'P',\n '\\uA750': 'P',\n '\\uA752': 'P',\n '\\uA754': 'P',\n '\\u24C6': 'Q',\n '\\uFF31': 'Q',\n '\\uA756': 'Q',\n '\\uA758': 'Q',\n '\\u024A': 'Q',\n '\\u24C7': 'R',\n '\\uFF32': 'R',\n '\\u0154': 'R',\n '\\u1E58': 'R',\n '\\u0158': 'R',\n '\\u0210': 'R',\n '\\u0212': 'R',\n '\\u1E5A': 'R',\n '\\u1E5C': 'R',\n '\\u0156': 'R',\n '\\u1E5E': 'R',\n '\\u024C': 'R',\n '\\u2C64': 'R',\n '\\uA75A': 'R',\n '\\uA7A6': 'R',\n '\\uA782': 'R',\n '\\u24C8': 'S',\n '\\uFF33': 'S',\n '\\u1E9E': 'S',\n '\\u015A': 'S',\n '\\u1E64': 'S',\n '\\u015C': 'S',\n '\\u1E60': 'S',\n '\\u0160': 'S',\n '\\u1E66': 'S',\n '\\u1E62': 'S',\n '\\u1E68': 'S',\n '\\u0218': 'S',\n '\\u015E': 'S',\n '\\u2C7E': 'S',\n '\\uA7A8': 'S',\n '\\uA784': 'S',\n '\\u24C9': 'T',\n '\\uFF34': 'T',\n '\\u1E6A': 'T',\n '\\u0164': 'T',\n '\\u1E6C': 'T',\n '\\u021A': 'T',\n '\\u0162': 'T',\n '\\u1E70': 'T',\n '\\u1E6E': 'T',\n '\\u0166': 'T',\n '\\u01AC': 'T',\n '\\u01AE': 'T',\n '\\u023E': 'T',\n '\\uA786': 'T',\n '\\uA728': 'TZ',\n '\\u24CA': 'U',\n '\\uFF35': 'U',\n '\\u00D9': 'U',\n '\\u00DA': 'U',\n '\\u00DB': 'U',\n '\\u0168': 'U',\n '\\u1E78': 'U',\n '\\u016A': 'U',\n '\\u1E7A': 'U',\n '\\u016C': 'U',\n '\\u00DC': 'U',\n '\\u01DB': 'U',\n '\\u01D7': 'U',\n '\\u01D5': 'U',\n '\\u01D9': 'U',\n '\\u1EE6': 'U',\n '\\u016E': 'U',\n '\\u0170': 'U',\n '\\u01D3': 'U',\n '\\u0214': 'U',\n '\\u0216': 'U',\n '\\u01AF': 'U',\n '\\u1EEA': 'U',\n '\\u1EE8': 'U',\n '\\u1EEE': 'U',\n '\\u1EEC': 'U',\n '\\u1EF0': 'U',\n '\\u1EE4': 'U',\n '\\u1E72': 'U',\n '\\u0172': 'U',\n '\\u1E76': 'U',\n '\\u1E74': 'U',\n '\\u0244': 'U',\n '\\u24CB': 'V',\n '\\uFF36': 'V',\n '\\u1E7C': 'V',\n '\\u1E7E': 'V',\n '\\u01B2': 'V',\n '\\uA75E': 'V',\n '\\u0245': 'V',\n '\\uA760': 'VY',\n '\\u24CC': 'W',\n '\\uFF37': 'W',\n '\\u1E80': 'W',\n '\\u1E82': 'W',\n '\\u0174': 'W',\n '\\u1E86': 'W',\n '\\u1E84': 'W',\n '\\u1E88': 'W',\n '\\u2C72': 'W',\n '\\u24CD': 'X',\n '\\uFF38': 'X',\n '\\u1E8A': 'X',\n '\\u1E8C': 'X',\n '\\u24CE': 'Y',\n '\\uFF39': 'Y',\n '\\u1EF2': 'Y',\n '\\u00DD': 'Y',\n '\\u0176': 'Y',\n '\\u1EF8': 'Y',\n '\\u0232': 'Y',\n '\\u1E8E': 'Y',\n '\\u0178': 'Y',\n '\\u1EF6': 'Y',\n '\\u1EF4': 'Y',\n '\\u01B3': 'Y',\n '\\u024E': 'Y',\n '\\u1EFE': 'Y',\n '\\u24CF': 'Z',\n '\\uFF3A': 'Z',\n '\\u0179': 'Z',\n '\\u1E90': 'Z',\n '\\u017B': 'Z',\n '\\u017D': 'Z',\n '\\u1E92': 'Z',\n '\\u1E94': 'Z',\n '\\u01B5': 'Z',\n '\\u0224': 'Z',\n '\\u2C7F': 'Z',\n '\\u2C6B': 'Z',\n '\\uA762': 'Z',\n '\\u24D0': 'a',\n '\\uFF41': 'a',\n '\\u1E9A': 'a',\n '\\u00E0': 'a',\n '\\u00E1': 'a',\n '\\u00E2': 'a',\n '\\u1EA7': 'a',\n '\\u1EA5': 'a',\n '\\u1EAB': 'a',\n '\\u1EA9': 'a',\n '\\u00E3': 'a',\n '\\u0101': 'a',\n '\\u0103': 'a',\n '\\u1EB1': 'a',\n '\\u1EAF': 'a',\n '\\u1EB5': 'a',\n '\\u1EB3': 'a',\n '\\u0227': 'a',\n '\\u01E1': 'a',\n '\\u00E4': 'a',\n '\\u01DF': 'a',\n '\\u1EA3': 'a',\n '\\u00E5': 'a',\n '\\u01FB': 'a',\n '\\u01CE': 'a',\n '\\u0201': 'a',\n '\\u0203': 'a',\n '\\u1EA1': 'a',\n '\\u1EAD': 'a',\n '\\u1EB7': 'a',\n '\\u1E01': 'a',\n '\\u0105': 'a',\n '\\u2C65': 'a',\n '\\u0250': 'a',\n '\\uA733': 'aa',\n '\\u00E6': 'ae',\n '\\u01FD': 'ae',\n '\\u01E3': 'ae',\n '\\uA735': 'ao',\n '\\uA737': 'au',\n '\\uA739': 'av',\n '\\uA73B': 'av',\n '\\uA73D': 'ay',\n '\\u24D1': 'b',\n '\\uFF42': 'b',\n '\\u1E03': 'b',\n '\\u1E05': 'b',\n '\\u1E07': 'b',\n '\\u0180': 'b',\n '\\u0183': 'b',\n '\\u0253': 'b',\n '\\u24D2': 'c',\n '\\uFF43': 'c',\n '\\u0107': 'c',\n '\\u0109': 'c',\n '\\u010B': 'c',\n '\\u010D': 'c',\n '\\u00E7': 'c',\n '\\u1E09': 'c',\n '\\u0188': 'c',\n '\\u023C': 'c',\n '\\uA73F': 'c',\n '\\u2184': 'c',\n '\\u24D3': 'd',\n '\\uFF44': 'd',\n '\\u1E0B': 'd',\n '\\u010F': 'd',\n '\\u1E0D': 'd',\n '\\u1E11': 'd',\n '\\u1E13': 'd',\n '\\u1E0F': 'd',\n '\\u0111': 'd',\n '\\u018C': 'd',\n '\\u0256': 'd',\n '\\u0257': 'd',\n '\\uA77A': 'd',\n '\\u01F3': 'dz',\n '\\u01C6': 'dz',\n '\\u24D4': 'e',\n '\\uFF45': 'e',\n '\\u00E8': 'e',\n '\\u00E9': 'e',\n '\\u00EA': 'e',\n '\\u1EC1': 'e',\n '\\u1EBF': 'e',\n '\\u1EC5': 'e',\n '\\u1EC3': 'e',\n '\\u1EBD': 'e',\n '\\u0113': 'e',\n '\\u1E15': 'e',\n '\\u1E17': 'e',\n '\\u0115': 'e',\n '\\u0117': 'e',\n '\\u00EB': 'e',\n '\\u1EBB': 'e',\n '\\u011B': 'e',\n '\\u0205': 'e',\n '\\u0207': 'e',\n '\\u1EB9': 'e',\n '\\u1EC7': 'e',\n '\\u0229': 'e',\n '\\u1E1D': 'e',\n '\\u0119': 'e',\n '\\u1E19': 'e',\n '\\u1E1B': 'e',\n '\\u0247': 'e',\n '\\u025B': 'e',\n '\\u01DD': 'e',\n '\\u24D5': 'f',\n '\\uFF46': 'f',\n '\\u1E1F': 'f',\n '\\u0192': 'f',\n '\\uA77C': 'f',\n '\\u24D6': 'g',\n '\\uFF47': 'g',\n '\\u01F5': 'g',\n '\\u011D': 'g',\n '\\u1E21': 'g',\n '\\u011F': 'g',\n '\\u0121': 'g',\n '\\u01E7': 'g',\n '\\u0123': 'g',\n '\\u01E5': 'g',\n '\\u0260': 'g',\n '\\uA7A1': 'g',\n '\\u1D79': 'g',\n '\\uA77F': 'g',\n '\\u24D7': 'h',\n '\\uFF48': 'h',\n '\\u0125': 'h',\n '\\u1E23': 'h',\n '\\u1E27': 'h',\n '\\u021F': 'h',\n '\\u1E25': 'h',\n '\\u1E29': 'h',\n '\\u1E2B': 'h',\n '\\u1E96': 'h',\n '\\u0127': 'h',\n '\\u2C68': 'h',\n '\\u2C76': 'h',\n '\\u0265': 'h',\n '\\u0195': 'hv',\n '\\u24D8': 'i',\n '\\uFF49': 'i',\n '\\u00EC': 'i',\n '\\u00ED': 'i',\n '\\u00EE': 'i',\n '\\u0129': 'i',\n '\\u012B': 'i',\n '\\u012D': 'i',\n '\\u00EF': 'i',\n '\\u1E2F': 'i',\n '\\u1EC9': 'i',\n '\\u01D0': 'i',\n '\\u0209': 'i',\n '\\u020B': 'i',\n '\\u1ECB': 'i',\n '\\u012F': 'i',\n '\\u1E2D': 'i',\n '\\u0268': 'i',\n '\\u0131': 'i',\n '\\u24D9': 'j',\n '\\uFF4A': 'j',\n '\\u0135': 'j',\n '\\u01F0': 'j',\n '\\u0249': 'j',\n '\\u24DA': 'k',\n '\\uFF4B': 'k',\n '\\u1E31': 'k',\n '\\u01E9': 'k',\n '\\u1E33': 'k',\n '\\u0137': 'k',\n '\\u1E35': 'k',\n '\\u0199': 'k',\n '\\u2C6A': 'k',\n '\\uA741': 'k',\n '\\uA743': 'k',\n '\\uA745': 'k',\n '\\uA7A3': 'k',\n '\\u24DB': 'l',\n '\\uFF4C': 'l',\n '\\u0140': 'l',\n '\\u013A': 'l',\n '\\u013E': 'l',\n '\\u1E37': 'l',\n '\\u1E39': 'l',\n '\\u013C': 'l',\n '\\u1E3D': 'l',\n '\\u1E3B': 'l',\n '\\u017F': 'l',\n '\\u0142': 'l',\n '\\u019A': 'l',\n '\\u026B': 'l',\n '\\u2C61': 'l',\n '\\uA749': 'l',\n '\\uA781': 'l',\n '\\uA747': 'l',\n '\\u01C9': 'lj',\n '\\u24DC': 'm',\n '\\uFF4D': 'm',\n '\\u1E3F': 'm',\n '\\u1E41': 'm',\n '\\u1E43': 'm',\n '\\u0271': 'm',\n '\\u026F': 'm',\n '\\u24DD': 'n',\n '\\uFF4E': 'n',\n '\\u01F9': 'n',\n '\\u0144': 'n',\n '\\u00F1': 'n',\n '\\u1E45': 'n',\n '\\u0148': 'n',\n '\\u1E47': 'n',\n '\\u0146': 'n',\n '\\u1E4B': 'n',\n '\\u1E49': 'n',\n '\\u019E': 'n',\n '\\u0272': 'n',\n '\\u0149': 'n',\n '\\uA791': 'n',\n '\\uA7A5': 'n',\n '\\u01CC': 'nj',\n '\\u24DE': 'o',\n '\\uFF4F': 'o',\n '\\u00F2': 'o',\n '\\u00F3': 'o',\n '\\u00F4': 'o',\n '\\u1ED3': 'o',\n '\\u1ED1': 'o',\n '\\u1ED7': 'o',\n '\\u1ED5': 'o',\n '\\u00F5': 'o',\n '\\u1E4D': 'o',\n '\\u022D': 'o',\n '\\u1E4F': 'o',\n '\\u014D': 'o',\n '\\u1E51': 'o',\n '\\u1E53': 'o',\n '\\u014F': 'o',\n '\\u022F': 'o',\n '\\u0231': 'o',\n '\\u00F6': 'o',\n '\\u022B': 'o',\n '\\u1ECF': 'o',\n '\\u0151': 'o',\n '\\u01D2': 'o',\n '\\u020D': 'o',\n '\\u020F': 'o',\n '\\u01A1': 'o',\n '\\u1EDD': 'o',\n '\\u1EDB': 'o',\n '\\u1EE1': 'o',\n '\\u1EDF': 'o',\n '\\u1EE3': 'o',\n '\\u1ECD': 'o',\n '\\u1ED9': 'o',\n '\\u01EB': 'o',\n '\\u01ED': 'o',\n '\\u00F8': 'o',\n '\\u01FF': 'o',\n '\\u0254': 'o',\n '\\uA74B': 'o',\n '\\uA74D': 'o',\n '\\u0275': 'o',\n '\\u0153': 'oe',\n '\\u01A3': 'oi',\n '\\u0223': 'ou',\n '\\uA74F': 'oo',\n '\\u24DF': 'p',\n '\\uFF50': 'p',\n '\\u1E55': 'p',\n '\\u1E57': 'p',\n '\\u01A5': 'p',\n '\\u1D7D': 'p',\n '\\uA751': 'p',\n '\\uA753': 'p',\n '\\uA755': 'p',\n '\\u24E0': 'q',\n '\\uFF51': 'q',\n '\\u024B': 'q',\n '\\uA757': 'q',\n '\\uA759': 'q',\n '\\u24E1': 'r',\n '\\uFF52': 'r',\n '\\u0155': 'r',\n '\\u1E59': 'r',\n '\\u0159': 'r',\n '\\u0211': 'r',\n '\\u0213': 'r',\n '\\u1E5B': 'r',\n '\\u1E5D': 'r',\n '\\u0157': 'r',\n '\\u1E5F': 'r',\n '\\u024D': 'r',\n '\\u027D': 'r',\n '\\uA75B': 'r',\n '\\uA7A7': 'r',\n '\\uA783': 'r',\n '\\u24E2': 's',\n '\\uFF53': 's',\n '\\u00DF': 's',\n '\\u015B': 's',\n '\\u1E65': 's',\n '\\u015D': 's',\n '\\u1E61': 's',\n '\\u0161': 's',\n '\\u1E67': 's',\n '\\u1E63': 's',\n '\\u1E69': 's',\n '\\u0219': 's',\n '\\u015F': 's',\n '\\u023F': 's',\n '\\uA7A9': 's',\n '\\uA785': 's',\n '\\u1E9B': 's',\n '\\u24E3': 't',\n '\\uFF54': 't',\n '\\u1E6B': 't',\n '\\u1E97': 't',\n '\\u0165': 't',\n '\\u1E6D': 't',\n '\\u021B': 't',\n '\\u0163': 't',\n '\\u1E71': 't',\n '\\u1E6F': 't',\n '\\u0167': 't',\n '\\u01AD': 't',\n '\\u0288': 't',\n '\\u2C66': 't',\n '\\uA787': 't',\n '\\uA729': 'tz',\n '\\u24E4': 'u',\n '\\uFF55': 'u',\n '\\u00F9': 'u',\n '\\u00FA': 'u',\n '\\u00FB': 'u',\n '\\u0169': 'u',\n '\\u1E79': 'u',\n '\\u016B': 'u',\n '\\u1E7B': 'u',\n '\\u016D': 'u',\n '\\u00FC': 'u',\n '\\u01DC': 'u',\n '\\u01D8': 'u',\n '\\u01D6': 'u',\n '\\u01DA': 'u',\n '\\u1EE7': 'u',\n '\\u016F': 'u',\n '\\u0171': 'u',\n '\\u01D4': 'u',\n '\\u0215': 'u',\n '\\u0217': 'u',\n '\\u01B0': 'u',\n '\\u1EEB': 'u',\n '\\u1EE9': 'u',\n '\\u1EEF': 'u',\n '\\u1EED': 'u',\n '\\u1EF1': 'u',\n '\\u1EE5': 'u',\n '\\u1E73': 'u',\n '\\u0173': 'u',\n '\\u1E77': 'u',\n '\\u1E75': 'u',\n '\\u0289': 'u',\n '\\u24E5': 'v',\n '\\uFF56': 'v',\n '\\u1E7D': 'v',\n '\\u1E7F': 'v',\n '\\u028B': 'v',\n '\\uA75F': 'v',\n '\\u028C': 'v',\n '\\uA761': 'vy',\n '\\u24E6': 'w',\n '\\uFF57': 'w',\n '\\u1E81': 'w',\n '\\u1E83': 'w',\n '\\u0175': 'w',\n '\\u1E87': 'w',\n '\\u1E85': 'w',\n '\\u1E98': 'w',\n '\\u1E89': 'w',\n '\\u2C73': 'w',\n '\\u24E7': 'x',\n '\\uFF58': 'x',\n '\\u1E8B': 'x',\n '\\u1E8D': 'x',\n '\\u24E8': 'y',\n '\\uFF59': 'y',\n '\\u1EF3': 'y',\n '\\u00FD': 'y',\n '\\u0177': 'y',\n '\\u1EF9': 'y',\n '\\u0233': 'y',\n '\\u1E8F': 'y',\n '\\u00FF': 'y',\n '\\u1EF7': 'y',\n '\\u1E99': 'y',\n '\\u1EF5': 'y',\n '\\u01B4': 'y',\n '\\u024F': 'y',\n '\\u1EFF': 'y',\n '\\u24E9': 'z',\n '\\uFF5A': 'z',\n '\\u017A': 'z',\n '\\u1E91': 'z',\n '\\u017C': 'z',\n '\\u017E': 'z',\n '\\u1E93': 'z',\n '\\u1E95': 'z',\n '\\u01B6': 'z',\n '\\u0225': 'z',\n '\\u0240': 'z',\n '\\u2C6C': 'z',\n '\\uA763': 'z',\n '\\u0386': '\\u0391',\n '\\u0388': '\\u0395',\n '\\u0389': '\\u0397',\n '\\u038A': '\\u0399',\n '\\u03AA': '\\u0399',\n '\\u038C': '\\u039F',\n '\\u038E': '\\u03A5',\n '\\u03AB': '\\u03A5',\n '\\u038F': '\\u03A9',\n '\\u03AC': '\\u03B1',\n '\\u03AD': '\\u03B5',\n '\\u03AE': '\\u03B7',\n '\\u03AF': '\\u03B9',\n '\\u03CA': '\\u03B9',\n '\\u0390': '\\u03B9',\n '\\u03CC': '\\u03BF',\n '\\u03CD': '\\u03C5',\n '\\u03CB': '\\u03C5',\n '\\u03B0': '\\u03C5',\n '\\u03CE': '\\u03C9',\n '\\u03C2': '\\u03C3',\n '\\u2019': '\\''\n };\n\n return diacritics;\n});\n\nS2.define('select2/data/base',[\n '../utils'\n], function (Utils) {\n function BaseAdapter ($element, options) {\n BaseAdapter.__super__.constructor.call(this);\n }\n\n Utils.Extend(BaseAdapter, Utils.Observable);\n\n BaseAdapter.prototype.current = function (callback) {\n throw new Error('The `current` method must be defined in child classes.');\n };\n\n BaseAdapter.prototype.query = function (params, callback) {\n throw new Error('The `query` method must be defined in child classes.');\n };\n\n BaseAdapter.prototype.bind = function (container, $container) {\n // Can be implemented in subclasses\n };\n\n BaseAdapter.prototype.destroy = function () {\n // Can be implemented in subclasses\n };\n\n BaseAdapter.prototype.generateResultId = function (container, data) {\n var id = container.id + '-result-';\n\n id += Utils.generateChars(4);\n\n if (data.id != null) {\n id += '-' + data.id.toString();\n } else {\n id += '-' + Utils.generateChars(4);\n }\n return id;\n };\n\n return BaseAdapter;\n});\n\nS2.define('select2/data/select',[\n './base',\n '../utils',\n 'jquery'\n], function (BaseAdapter, Utils, $) {\n function SelectAdapter ($element, options) {\n this.$element = $element;\n this.options = options;\n\n SelectAdapter.__super__.constructor.call(this);\n }\n\n Utils.Extend(SelectAdapter, BaseAdapter);\n\n SelectAdapter.prototype.current = function (callback) {\n var self = this;\n\n var data = Array.prototype.map.call(\n this.$element[0].querySelectorAll(':checked'),\n function (selectedElement) {\n return self.item($(selectedElement));\n }\n );\n\n callback(data);\n };\n\n SelectAdapter.prototype.select = function (data) {\n var self = this;\n\n data.selected = true;\n\n // If data.element is a DOM node, use it instead\n if (\n data.element != null && data.element.tagName.toLowerCase() === 'option'\n ) {\n data.element.selected = true;\n\n this.$element.trigger('input').trigger('change');\n\n return;\n }\n\n if (this.$element.prop('multiple')) {\n this.current(function (currentData) {\n var val = [];\n\n data = [data];\n data.push.apply(data, currentData);\n\n for (var d = 0; d < data.length; d++) {\n var id = data[d].id;\n\n if (val.indexOf(id) === -1) {\n val.push(id);\n }\n }\n\n self.$element.val(val);\n self.$element.trigger('input').trigger('change');\n });\n } else {\n var val = data.id;\n\n this.$element.val(val);\n this.$element.trigger('input').trigger('change');\n }\n };\n\n SelectAdapter.prototype.unselect = function (data) {\n var self = this;\n\n if (!this.$element.prop('multiple')) {\n return;\n }\n\n data.selected = false;\n\n if (\n data.element != null &&\n data.element.tagName.toLowerCase() === 'option'\n ) {\n data.element.selected = false;\n\n this.$element.trigger('input').trigger('change');\n\n return;\n }\n\n this.current(function (currentData) {\n var val = [];\n\n for (var d = 0; d < currentData.length; d++) {\n var id = currentData[d].id;\n\n if (id !== data.id && val.indexOf(id) === -1) {\n val.push(id);\n }\n }\n\n self.$element.val(val);\n\n self.$element.trigger('input').trigger('change');\n });\n };\n\n SelectAdapter.prototype.bind = function (container, $container) {\n var self = this;\n\n this.container = container;\n\n container.on('select', function (params) {\n self.select(params.data);\n });\n\n container.on('unselect', function (params) {\n self.unselect(params.data);\n });\n };\n\n SelectAdapter.prototype.destroy = function () {\n // Remove anything added to child elements\n this.$element.find('*').each(function () {\n // Remove any custom data set by Select2\n Utils.RemoveData(this);\n });\n };\n\n SelectAdapter.prototype.query = function (params, callback) {\n var data = [];\n var self = this;\n\n var $options = this.$element.children();\n\n $options.each(function () {\n if (\n this.tagName.toLowerCase() !== 'option' &&\n this.tagName.toLowerCase() !== 'optgroup'\n ) {\n return;\n }\n\n var $option = $(this);\n\n var option = self.item($option);\n\n var matches = self.matches(params, option);\n\n if (matches !== null) {\n data.push(matches);\n }\n });\n\n callback({\n results: data\n });\n };\n\n SelectAdapter.prototype.addOptions = function ($options) {\n this.$element.append($options);\n };\n\n SelectAdapter.prototype.option = function (data) {\n var option;\n\n if (data.children) {\n option = document.createElement('optgroup');\n option.label = data.text;\n } else {\n option = document.createElement('option');\n\n if (option.textContent !== undefined) {\n option.textContent = data.text;\n } else {\n option.innerText = data.text;\n }\n }\n\n if (data.id !== undefined) {\n option.value = data.id;\n }\n\n if (data.disabled) {\n option.disabled = true;\n }\n\n if (data.selected) {\n option.selected = true;\n }\n\n if (data.title) {\n option.title = data.title;\n }\n\n var normalizedData = this._normalizeItem(data);\n normalizedData.element = option;\n\n // Override the option's data with the combined data\n Utils.StoreData(option, 'data', normalizedData);\n\n return $(option);\n };\n\n SelectAdapter.prototype.item = function ($option) {\n var data = {};\n\n data = Utils.GetData($option[0], 'data');\n\n if (data != null) {\n return data;\n }\n\n var option = $option[0];\n\n if (option.tagName.toLowerCase() === 'option') {\n data = {\n id: $option.val(),\n text: $option.text(),\n disabled: $option.prop('disabled'),\n selected: $option.prop('selected'),\n title: $option.prop('title')\n };\n } else if (option.tagName.toLowerCase() === 'optgroup') {\n data = {\n text: $option.prop('label'),\n children: [],\n title: $option.prop('title')\n };\n\n var $children = $option.children('option');\n var children = [];\n\n for (var c = 0; c < $children.length; c++) {\n var $child = $($children[c]);\n\n var child = this.item($child);\n\n children.push(child);\n }\n\n data.children = children;\n }\n\n data = this._normalizeItem(data);\n data.element = $option[0];\n\n Utils.StoreData($option[0], 'data', data);\n\n return data;\n };\n\n SelectAdapter.prototype._normalizeItem = function (item) {\n if (item !== Object(item)) {\n item = {\n id: item,\n text: item\n };\n }\n\n item = $.extend({}, {\n text: ''\n }, item);\n\n var defaults = {\n selected: false,\n disabled: false\n };\n\n if (item.id != null) {\n item.id = item.id.toString();\n }\n\n if (item.text != null) {\n item.text = item.text.toString();\n }\n\n if (item._resultId == null && item.id && this.container != null) {\n item._resultId = this.generateResultId(this.container, item);\n }\n\n return $.extend({}, defaults, item);\n };\n\n SelectAdapter.prototype.matches = function (params, data) {\n var matcher = this.options.get('matcher');\n\n return matcher(params, data);\n };\n\n return SelectAdapter;\n});\n\nS2.define('select2/data/array',[\n './select',\n '../utils',\n 'jquery'\n], function (SelectAdapter, Utils, $) {\n function ArrayAdapter ($element, options) {\n this._dataToConvert = options.get('data') || [];\n\n ArrayAdapter.__super__.constructor.call(this, $element, options);\n }\n\n Utils.Extend(ArrayAdapter, SelectAdapter);\n\n ArrayAdapter.prototype.bind = function (container, $container) {\n ArrayAdapter.__super__.bind.call(this, container, $container);\n\n this.addOptions(this.convertToOptions(this._dataToConvert));\n };\n\n ArrayAdapter.prototype.select = function (data) {\n var $option = this.$element.find('option').filter(function (i, elm) {\n return elm.value == data.id.toString();\n });\n\n if ($option.length === 0) {\n $option = this.option(data);\n\n this.addOptions($option);\n }\n\n ArrayAdapter.__super__.select.call(this, data);\n };\n\n ArrayAdapter.prototype.convertToOptions = function (data) {\n var self = this;\n\n var $existing = this.$element.find('option');\n var existingIds = $existing.map(function () {\n return self.item($(this)).id;\n }).get();\n\n var $options = [];\n\n // Filter out all items except for the one passed in the argument\n function onlyItem (item) {\n return function () {\n return $(this).val() == item.id;\n };\n }\n\n for (var d = 0; d < data.length; d++) {\n var item = this._normalizeItem(data[d]);\n\n // Skip items which were pre-loaded, only merge the data\n if (existingIds.indexOf(item.id) >= 0) {\n var $existingOption = $existing.filter(onlyItem(item));\n\n var existingData = this.item($existingOption);\n var newData = $.extend(true, {}, item, existingData);\n\n var $newOption = this.option(newData);\n\n $existingOption.replaceWith($newOption);\n\n continue;\n }\n\n var $option = this.option(item);\n\n if (item.children) {\n var $children = this.convertToOptions(item.children);\n\n $option.append($children);\n }\n\n $options.push($option);\n }\n\n return $options;\n };\n\n return ArrayAdapter;\n});\n\nS2.define('select2/data/ajax',[\n './array',\n '../utils',\n 'jquery'\n], function (ArrayAdapter, Utils, $) {\n function AjaxAdapter ($element, options) {\n this.ajaxOptions = this._applyDefaults(options.get('ajax'));\n\n if (this.ajaxOptions.processResults != null) {\n this.processResults = this.ajaxOptions.processResults;\n }\n\n AjaxAdapter.__super__.constructor.call(this, $element, options);\n }\n\n Utils.Extend(AjaxAdapter, ArrayAdapter);\n\n AjaxAdapter.prototype._applyDefaults = function (options) {\n var defaults = {\n data: function (params) {\n return $.extend({}, params, {\n q: params.term\n });\n },\n transport: function (params, success, failure) {\n var $request = $.ajax(params);\n\n $request.then(success);\n $request.fail(failure);\n\n return $request;\n }\n };\n\n return $.extend({}, defaults, options, true);\n };\n\n AjaxAdapter.prototype.processResults = function (results) {\n return results;\n };\n\n AjaxAdapter.prototype.query = function (params, callback) {\n var matches = [];\n var self = this;\n\n if (this._request != null) {\n // JSONP requests cannot always be aborted\n if (typeof this._request.abort === 'function') {\n this._request.abort();\n }\n\n this._request = null;\n }\n\n var options = $.extend({\n type: 'GET'\n }, this.ajaxOptions);\n\n if (typeof options.url === 'function') {\n options.url = options.url.call(this.$element, params);\n }\n\n if (typeof options.data === 'function') {\n options.data = options.data.call(this.$element, params);\n }\n\n function request () {\n var $request = options.transport(options, function (data) {\n var results = self.processResults(data, params);\n\n if (self.options.get('debug') && window.console && console.error) {\n // Check to make sure that the response included a `results` key.\n if (!results || !results.results || !Array.isArray(results.results)) {\n console.error(\n 'Select2: The AJAX results did not return an array in the ' +\n '`results` key of the response.'\n );\n }\n }\n\n callback(results);\n }, function () {\n // Attempt to detect if a request was aborted\n // Only works if the transport exposes a status property\n if ('status' in $request &&\n ($request.status === 0 || $request.status === '0')) {\n return;\n }\n\n self.trigger('results:message', {\n message: 'errorLoading'\n });\n });\n\n self._request = $request;\n }\n\n if (this.ajaxOptions.delay && params.term != null) {\n if (this._queryTimeout) {\n window.clearTimeout(this._queryTimeout);\n }\n\n this._queryTimeout = window.setTimeout(request, this.ajaxOptions.delay);\n } else {\n request();\n }\n };\n\n return AjaxAdapter;\n});\n\nS2.define('select2/data/tags',[\n 'jquery'\n], function ($) {\n function Tags (decorated, $element, options) {\n var tags = options.get('tags');\n\n var createTag = options.get('createTag');\n\n if (createTag !== undefined) {\n this.createTag = createTag;\n }\n\n var insertTag = options.get('insertTag');\n\n if (insertTag !== undefined) {\n this.insertTag = insertTag;\n }\n\n decorated.call(this, $element, options);\n\n if (Array.isArray(tags)) {\n for (var t = 0; t < tags.length; t++) {\n var tag = tags[t];\n var item = this._normalizeItem(tag);\n\n var $option = this.option(item);\n\n this.$element.append($option);\n }\n }\n }\n\n Tags.prototype.query = function (decorated, params, callback) {\n var self = this;\n\n this._removeOldTags();\n\n if (params.term == null || params.page != null) {\n decorated.call(this, params, callback);\n return;\n }\n\n function wrapper (obj, child) {\n var data = obj.results;\n\n for (var i = 0; i < data.length; i++) {\n var option = data[i];\n\n var checkChildren = (\n option.children != null &&\n !wrapper({\n results: option.children\n }, true)\n );\n\n var optionText = (option.text || '').toUpperCase();\n var paramsTerm = (params.term || '').toUpperCase();\n\n var checkText = optionText === paramsTerm;\n\n if (checkText || checkChildren) {\n if (child) {\n return false;\n }\n\n obj.data = data;\n callback(obj);\n\n return;\n }\n }\n\n if (child) {\n return true;\n }\n\n var tag = self.createTag(params);\n\n if (tag != null) {\n var $option = self.option(tag);\n $option.attr('data-select2-tag', 'true');\n\n self.addOptions([$option]);\n\n self.insertTag(data, tag);\n }\n\n obj.results = data;\n\n callback(obj);\n }\n\n decorated.call(this, params, wrapper);\n };\n\n Tags.prototype.createTag = function (decorated, params) {\n if (params.term == null) {\n return null;\n }\n\n var term = params.term.trim();\n\n if (term === '') {\n return null;\n }\n\n return {\n id: term,\n text: term\n };\n };\n\n Tags.prototype.insertTag = function (_, data, tag) {\n data.unshift(tag);\n };\n\n Tags.prototype._removeOldTags = function (_) {\n var $options = this.$element.find('option[data-select2-tag]');\n\n $options.each(function () {\n if (this.selected) {\n return;\n }\n\n $(this).remove();\n });\n };\n\n return Tags;\n});\n\nS2.define('select2/data/tokenizer',[\n 'jquery'\n], function ($) {\n function Tokenizer (decorated, $element, options) {\n var tokenizer = options.get('tokenizer');\n\n if (tokenizer !== undefined) {\n this.tokenizer = tokenizer;\n }\n\n decorated.call(this, $element, options);\n }\n\n Tokenizer.prototype.bind = function (decorated, container, $container) {\n decorated.call(this, container, $container);\n\n this.$search = container.dropdown.$search || container.selection.$search ||\n $container.find('.select2-search__field');\n };\n\n Tokenizer.prototype.query = function (decorated, params, callback) {\n var self = this;\n\n function createAndSelect (data) {\n // Normalize the data object so we can use it for checks\n var item = self._normalizeItem(data);\n\n // Check if the data object already exists as a tag\n // Select it if it doesn't\n var $existingOptions = self.$element.find('option').filter(function () {\n return $(this).val() === item.id;\n });\n\n // If an existing option wasn't found for it, create the option\n if (!$existingOptions.length) {\n var $option = self.option(item);\n $option.attr('data-select2-tag', true);\n\n self._removeOldTags();\n self.addOptions([$option]);\n }\n\n // Select the item, now that we know there is an option for it\n select(item);\n }\n\n function select (data) {\n self.trigger('select', {\n data: data\n });\n }\n\n params.term = params.term || '';\n\n var tokenData = this.tokenizer(params, this.options, createAndSelect);\n\n if (tokenData.term !== params.term) {\n // Replace the search term if we have the search box\n if (this.$search.length) {\n this.$search.val(tokenData.term);\n this.$search.trigger('focus');\n }\n\n params.term = tokenData.term;\n }\n\n decorated.call(this, params, callback);\n };\n\n Tokenizer.prototype.tokenizer = function (_, params, options, callback) {\n var separators = options.get('tokenSeparators') || [];\n var term = params.term;\n var i = 0;\n\n var createTag = this.createTag || function (params) {\n return {\n id: params.term,\n text: params.term\n };\n };\n\n while (i < term.length) {\n var termChar = term[i];\n\n if (separators.indexOf(termChar) === -1) {\n i++;\n\n continue;\n }\n\n var part = term.substr(0, i);\n var partParams = $.extend({}, params, {\n term: part\n });\n\n var data = createTag(partParams);\n\n if (data == null) {\n i++;\n continue;\n }\n\n callback(data);\n\n // Reset the term to not include the tokenized portion\n term = term.substr(i + 1) || '';\n i = 0;\n }\n\n return {\n term: term\n };\n };\n\n return Tokenizer;\n});\n\nS2.define('select2/data/minimumInputLength',[\n\n], function () {\n function MinimumInputLength (decorated, $e, options) {\n this.minimumInputLength = options.get('minimumInputLength');\n\n decorated.call(this, $e, options);\n }\n\n MinimumInputLength.prototype.query = function (decorated, params, callback) {\n params.term = params.term || '';\n\n if (params.term.length < this.minimumInputLength) {\n this.trigger('results:message', {\n message: 'inputTooShort',\n args: {\n minimum: this.minimumInputLength,\n input: params.term,\n params: params\n }\n });\n\n return;\n }\n\n decorated.call(this, params, callback);\n };\n\n return MinimumInputLength;\n});\n\nS2.define('select2/data/maximumInputLength',[\n\n], function () {\n function MaximumInputLength (decorated, $e, options) {\n this.maximumInputLength = options.get('maximumInputLength');\n\n decorated.call(this, $e, options);\n }\n\n MaximumInputLength.prototype.query = function (decorated, params, callback) {\n params.term = params.term || '';\n\n if (this.maximumInputLength > 0 &&\n params.term.length > this.maximumInputLength) {\n this.trigger('results:message', {\n message: 'inputTooLong',\n args: {\n maximum: this.maximumInputLength,\n input: params.term,\n params: params\n }\n });\n\n return;\n }\n\n decorated.call(this, params, callback);\n };\n\n return MaximumInputLength;\n});\n\nS2.define('select2/data/maximumSelectionLength',[\n\n], function (){\n function MaximumSelectionLength (decorated, $e, options) {\n this.maximumSelectionLength = options.get('maximumSelectionLength');\n\n decorated.call(this, $e, options);\n }\n\n MaximumSelectionLength.prototype.bind =\n function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\n container.on('select', function () {\n self._checkIfMaximumSelected();\n });\n };\n\n MaximumSelectionLength.prototype.query =\n function (decorated, params, callback) {\n var self = this;\n\n this._checkIfMaximumSelected(function () {\n decorated.call(self, params, callback);\n });\n };\n\n MaximumSelectionLength.prototype._checkIfMaximumSelected =\n function (_, successCallback) {\n var self = this;\n\n this.current(function (currentData) {\n var count = currentData != null ? currentData.length : 0;\n if (self.maximumSelectionLength > 0 &&\n count >= self.maximumSelectionLength) {\n self.trigger('results:message', {\n message: 'maximumSelected',\n args: {\n maximum: self.maximumSelectionLength\n }\n });\n return;\n }\n\n if (successCallback) {\n successCallback();\n }\n });\n };\n\n return MaximumSelectionLength;\n});\n\nS2.define('select2/dropdown',[\n 'jquery',\n './utils'\n], function ($, Utils) {\n function Dropdown ($element, options) {\n this.$element = $element;\n this.options = options;\n\n Dropdown.__super__.constructor.call(this);\n }\n\n Utils.Extend(Dropdown, Utils.Observable);\n\n Dropdown.prototype.render = function () {\n var $dropdown = $(\n '' +\n '' +\n ''\n );\n\n $dropdown.attr('dir', this.options.get('dir'));\n\n this.$dropdown = $dropdown;\n\n return $dropdown;\n };\n\n Dropdown.prototype.bind = function () {\n // Should be implemented in subclasses\n };\n\n Dropdown.prototype.position = function ($dropdown, $container) {\n // Should be implemented in subclasses\n };\n\n Dropdown.prototype.destroy = function () {\n // Remove the dropdown from the DOM\n this.$dropdown.remove();\n };\n\n return Dropdown;\n});\n\nS2.define('select2/dropdown/search',[\n 'jquery'\n], function ($) {\n function Search () { }\n\n Search.prototype.render = function (decorated) {\n var $rendered = decorated.call(this);\n var searchLabel = this.options.get('translations').get('search');\n\n var $search = $(\n '' +\n '' +\n ''\n );\n\n this.$searchContainer = $search;\n this.$search = $search.find('input');\n\n this.$search.prop('autocomplete', this.options.get('autocomplete'));\n this.$search.attr('aria-label', searchLabel());\n\n $rendered.prepend($search);\n\n return $rendered;\n };\n\n Search.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n var resultsId = container.id + '-results';\n\n decorated.call(this, container, $container);\n\n this.$search.on('keydown', function (evt) {\n self.trigger('keypress', evt);\n\n self._keyUpPrevented = evt.isDefaultPrevented();\n });\n\n // Workaround for browsers which do not support the `input` event\n // This will prevent double-triggering of events for browsers which support\n // both the `keyup` and `input` events.\n this.$search.on('input', function (evt) {\n // Unbind the duplicated `keyup` event\n $(this).off('keyup');\n });\n\n this.$search.on('keyup input', function (evt) {\n self.handleSearch(evt);\n });\n\n container.on('open', function () {\n self.$search.attr('tabindex', 0);\n self.$search.attr('aria-controls', resultsId);\n\n self.$search.trigger('focus');\n\n window.setTimeout(function () {\n self.$search.trigger('focus');\n }, 0);\n });\n\n container.on('close', function () {\n self.$search.attr('tabindex', -1);\n self.$search.removeAttr('aria-controls');\n self.$search.removeAttr('aria-activedescendant');\n\n self.$search.val('');\n self.$search.trigger('blur');\n });\n\n container.on('focus', function () {\n if (!container.isOpen()) {\n self.$search.trigger('focus');\n }\n });\n\n container.on('results:all', function (params) {\n if (params.query.term == null || params.query.term === '') {\n var showSearch = self.showSearch(params);\n\n if (showSearch) {\n self.$searchContainer[0].classList.remove('select2-search--hide');\n } else {\n self.$searchContainer[0].classList.add('select2-search--hide');\n }\n }\n });\n\n container.on('results:focus', function (params) {\n if (params.data._resultId) {\n self.$search.attr('aria-activedescendant', params.data._resultId);\n } else {\n self.$search.removeAttr('aria-activedescendant');\n }\n });\n };\n\n Search.prototype.handleSearch = function (evt) {\n if (!this._keyUpPrevented) {\n var input = this.$search.val();\n\n this.trigger('query', {\n term: input\n });\n }\n\n this._keyUpPrevented = false;\n };\n\n Search.prototype.showSearch = function (_, params) {\n return true;\n };\n\n return Search;\n});\n\nS2.define('select2/dropdown/hidePlaceholder',[\n\n], function () {\n function HidePlaceholder (decorated, $element, options, dataAdapter) {\n this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\n\n decorated.call(this, $element, options, dataAdapter);\n }\n\n HidePlaceholder.prototype.append = function (decorated, data) {\n data.results = this.removePlaceholder(data.results);\n\n decorated.call(this, data);\n };\n\n HidePlaceholder.prototype.normalizePlaceholder = function (_, placeholder) {\n if (typeof placeholder === 'string') {\n placeholder = {\n id: '',\n text: placeholder\n };\n }\n\n return placeholder;\n };\n\n HidePlaceholder.prototype.removePlaceholder = function (_, data) {\n var modifiedData = data.slice(0);\n\n for (var d = data.length - 1; d >= 0; d--) {\n var item = data[d];\n\n if (this.placeholder.id === item.id) {\n modifiedData.splice(d, 1);\n }\n }\n\n return modifiedData;\n };\n\n return HidePlaceholder;\n});\n\nS2.define('select2/dropdown/infiniteScroll',[\n 'jquery'\n], function ($) {\n function InfiniteScroll (decorated, $element, options, dataAdapter) {\n this.lastParams = {};\n\n decorated.call(this, $element, options, dataAdapter);\n\n this.$loadingMore = this.createLoadingMore();\n this.loading = false;\n }\n\n InfiniteScroll.prototype.append = function (decorated, data) {\n this.$loadingMore.remove();\n this.loading = false;\n\n decorated.call(this, data);\n\n if (this.showLoadingMore(data)) {\n this.$results.append(this.$loadingMore);\n this.loadMoreIfNeeded();\n }\n };\n\n InfiniteScroll.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\n container.on('query', function (params) {\n self.lastParams = params;\n self.loading = true;\n });\n\n container.on('query:append', function (params) {\n self.lastParams = params;\n self.loading = true;\n });\n\n this.$results.on('scroll', this.loadMoreIfNeeded.bind(this));\n };\n\n InfiniteScroll.prototype.loadMoreIfNeeded = function () {\n var isLoadMoreVisible = $.contains(\n document.documentElement,\n this.$loadingMore[0]\n );\n\n if (this.loading || !isLoadMoreVisible) {\n return;\n }\n\n var currentOffset = this.$results.offset().top +\n this.$results.outerHeight(false);\n var loadingMoreOffset = this.$loadingMore.offset().top +\n this.$loadingMore.outerHeight(false);\n\n if (currentOffset + 50 >= loadingMoreOffset) {\n this.loadMore();\n }\n };\n\n InfiniteScroll.prototype.loadMore = function () {\n this.loading = true;\n\n var params = $.extend({}, {page: 1}, this.lastParams);\n\n params.page++;\n\n this.trigger('query:append', params);\n };\n\n InfiniteScroll.prototype.showLoadingMore = function (_, data) {\n return data.pagination && data.pagination.more;\n };\n\n InfiniteScroll.prototype.createLoadingMore = function () {\n var $option = $(\n '
  • '\n );\n\n var message = this.options.get('translations').get('loadingMore');\n\n $option.html(message(this.lastParams));\n\n return $option;\n };\n\n return InfiniteScroll;\n});\n\nS2.define('select2/dropdown/attachBody',[\n 'jquery',\n '../utils'\n], function ($, Utils) {\n function AttachBody (decorated, $element, options) {\n this.$dropdownParent = $(options.get('dropdownParent') || document.body);\n\n decorated.call(this, $element, options);\n }\n\n AttachBody.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\n container.on('open', function () {\n self._showDropdown();\n self._attachPositioningHandler(container);\n\n // Must bind after the results handlers to ensure correct sizing\n self._bindContainerResultHandlers(container);\n });\n\n container.on('close', function () {\n self._hideDropdown();\n self._detachPositioningHandler(container);\n });\n\n this.$dropdownContainer.on('mousedown', function (evt) {\n evt.stopPropagation();\n });\n };\n\n AttachBody.prototype.destroy = function (decorated) {\n decorated.call(this);\n\n this.$dropdownContainer.remove();\n };\n\n AttachBody.prototype.position = function (decorated, $dropdown, $container) {\n // Clone all of the container classes\n $dropdown.attr('class', $container.attr('class'));\n\n $dropdown[0].classList.remove('select2');\n $dropdown[0].classList.add('select2-container--open');\n\n $dropdown.css({\n position: 'absolute',\n top: -999999\n });\n\n this.$container = $container;\n };\n\n AttachBody.prototype.render = function (decorated) {\n var $container = $('');\n\n var $dropdown = decorated.call(this);\n $container.append($dropdown);\n\n this.$dropdownContainer = $container;\n\n return $container;\n };\n\n AttachBody.prototype._hideDropdown = function (decorated) {\n this.$dropdownContainer.detach();\n };\n\n AttachBody.prototype._bindContainerResultHandlers =\n function (decorated, container) {\n\n // These should only be bound once\n if (this._containerResultsHandlersBound) {\n return;\n }\n\n var self = this;\n\n container.on('results:all', function () {\n self._positionDropdown();\n self._resizeDropdown();\n });\n\n container.on('results:append', function () {\n self._positionDropdown();\n self._resizeDropdown();\n });\n\n container.on('results:message', function () {\n self._positionDropdown();\n self._resizeDropdown();\n });\n\n container.on('select', function () {\n self._positionDropdown();\n self._resizeDropdown();\n });\n\n container.on('unselect', function () {\n self._positionDropdown();\n self._resizeDropdown();\n });\n\n this._containerResultsHandlersBound = true;\n };\n\n AttachBody.prototype._attachPositioningHandler =\n function (decorated, container) {\n var self = this;\n\n var scrollEvent = 'scroll.select2.' + container.id;\n var resizeEvent = 'resize.select2.' + container.id;\n var orientationEvent = 'orientationchange.select2.' + container.id;\n\n var $watchers = this.$container.parents().filter(Utils.hasScroll);\n $watchers.each(function () {\n Utils.StoreData(this, 'select2-scroll-position', {\n x: $(this).scrollLeft(),\n y: $(this).scrollTop()\n });\n });\n\n $watchers.on(scrollEvent, function (ev) {\n var position = Utils.GetData(this, 'select2-scroll-position');\n $(this).scrollTop(position.y);\n });\n\n $(window).on(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent,\n function (e) {\n self._positionDropdown();\n self._resizeDropdown();\n });\n };\n\n AttachBody.prototype._detachPositioningHandler =\n function (decorated, container) {\n var scrollEvent = 'scroll.select2.' + container.id;\n var resizeEvent = 'resize.select2.' + container.id;\n var orientationEvent = 'orientationchange.select2.' + container.id;\n\n var $watchers = this.$container.parents().filter(Utils.hasScroll);\n $watchers.off(scrollEvent);\n\n $(window).off(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent);\n };\n\n AttachBody.prototype._positionDropdown = function () {\n var $window = $(window);\n\n var isCurrentlyAbove = this.$dropdown[0].classList\n .contains('select2-dropdown--above');\n var isCurrentlyBelow = this.$dropdown[0].classList\n .contains('select2-dropdown--below');\n\n var newDirection = null;\n\n var offset = this.$container.offset();\n\n offset.bottom = offset.top + this.$container.outerHeight(false);\n\n var container = {\n height: this.$container.outerHeight(false)\n };\n\n container.top = offset.top;\n container.bottom = offset.top + container.height;\n\n var dropdown = {\n height: this.$dropdown.outerHeight(false)\n };\n\n var viewport = {\n top: $window.scrollTop(),\n bottom: $window.scrollTop() + $window.height()\n };\n\n var enoughRoomAbove = viewport.top < (offset.top - dropdown.height);\n var enoughRoomBelow = viewport.bottom > (offset.bottom + dropdown.height);\n\n var css = {\n left: offset.left,\n top: container.bottom\n };\n\n // Determine what the parent element is to use for calculating the offset\n var $offsetParent = this.$dropdownParent;\n\n // For statically positioned elements, we need to get the element\n // that is determining the offset\n if ($offsetParent.css('position') === 'static') {\n $offsetParent = $offsetParent.offsetParent();\n }\n\n var parentOffset = {\n top: 0,\n left: 0\n };\n\n if (\n $.contains(document.body, $offsetParent[0]) ||\n $offsetParent[0].isConnected\n ) {\n parentOffset = $offsetParent.offset();\n }\n\n css.top -= parentOffset.top;\n css.left -= parentOffset.left;\n\n if (!isCurrentlyAbove && !isCurrentlyBelow) {\n newDirection = 'below';\n }\n\n if (!enoughRoomBelow && enoughRoomAbove && !isCurrentlyAbove) {\n newDirection = 'above';\n } else if (!enoughRoomAbove && enoughRoomBelow && isCurrentlyAbove) {\n newDirection = 'below';\n }\n\n if (newDirection == 'above' ||\n (isCurrentlyAbove && newDirection !== 'below')) {\n css.top = container.top - parentOffset.top - dropdown.height;\n }\n\n if (newDirection != null) {\n this.$dropdown[0].classList.remove('select2-dropdown--below');\n this.$dropdown[0].classList.remove('select2-dropdown--above');\n this.$dropdown[0].classList.add('select2-dropdown--' + newDirection);\n\n this.$container[0].classList.remove('select2-container--below');\n this.$container[0].classList.remove('select2-container--above');\n this.$container[0].classList.add('select2-container--' + newDirection);\n }\n\n this.$dropdownContainer.css(css);\n };\n\n AttachBody.prototype._resizeDropdown = function () {\n var css = {\n width: this.$container.outerWidth(false) + 'px'\n };\n\n if (this.options.get('dropdownAutoWidth')) {\n css.minWidth = css.width;\n css.position = 'relative';\n css.width = 'auto';\n }\n\n this.$dropdown.css(css);\n };\n\n AttachBody.prototype._showDropdown = function (decorated) {\n this.$dropdownContainer.appendTo(this.$dropdownParent);\n\n this._positionDropdown();\n this._resizeDropdown();\n };\n\n return AttachBody;\n});\n\nS2.define('select2/dropdown/minimumResultsForSearch',[\n\n], function () {\n function countResults (data) {\n var count = 0;\n\n for (var d = 0; d < data.length; d++) {\n var item = data[d];\n\n if (item.children) {\n count += countResults(item.children);\n } else {\n count++;\n }\n }\n\n return count;\n }\n\n function MinimumResultsForSearch (decorated, $element, options, dataAdapter) {\n this.minimumResultsForSearch = options.get('minimumResultsForSearch');\n\n if (this.minimumResultsForSearch < 0) {\n this.minimumResultsForSearch = Infinity;\n }\n\n decorated.call(this, $element, options, dataAdapter);\n }\n\n MinimumResultsForSearch.prototype.showSearch = function (decorated, params) {\n if (countResults(params.data.results) < this.minimumResultsForSearch) {\n return false;\n }\n\n return decorated.call(this, params);\n };\n\n return MinimumResultsForSearch;\n});\n\nS2.define('select2/dropdown/selectOnClose',[\n '../utils'\n], function (Utils) {\n function SelectOnClose () { }\n\n SelectOnClose.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\n container.on('close', function (params) {\n self._handleSelectOnClose(params);\n });\n };\n\n SelectOnClose.prototype._handleSelectOnClose = function (_, params) {\n if (params && params.originalSelect2Event != null) {\n var event = params.originalSelect2Event;\n\n // Don't select an item if the close event was triggered from a select or\n // unselect event\n if (event._type === 'select' || event._type === 'unselect') {\n return;\n }\n }\n\n var $highlightedResults = this.getHighlightedResults();\n\n // Only select highlighted results\n if ($highlightedResults.length < 1) {\n return;\n }\n\n var data = Utils.GetData($highlightedResults[0], 'data');\n\n // Don't re-select already selected resulte\n if (\n (data.element != null && data.element.selected) ||\n (data.element == null && data.selected)\n ) {\n return;\n }\n\n this.trigger('select', {\n data: data\n });\n };\n\n return SelectOnClose;\n});\n\nS2.define('select2/dropdown/closeOnSelect',[\n\n], function () {\n function CloseOnSelect () { }\n\n CloseOnSelect.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\n container.on('select', function (evt) {\n self._selectTriggered(evt);\n });\n\n container.on('unselect', function (evt) {\n self._selectTriggered(evt);\n });\n };\n\n CloseOnSelect.prototype._selectTriggered = function (_, evt) {\n var originalEvent = evt.originalEvent;\n\n // Don't close if the control key is being held\n if (originalEvent && (originalEvent.ctrlKey || originalEvent.metaKey)) {\n return;\n }\n\n this.trigger('close', {\n originalEvent: originalEvent,\n originalSelect2Event: evt\n });\n };\n\n return CloseOnSelect;\n});\n\nS2.define('select2/dropdown/dropdownCss',[\n '../utils'\n], function (Utils) {\n function DropdownCSS () { }\n\n DropdownCSS.prototype.render = function (decorated) {\n var $dropdown = decorated.call(this);\n\n var dropdownCssClass = this.options.get('dropdownCssClass') || '';\n\n if (dropdownCssClass.indexOf(':all:') !== -1) {\n dropdownCssClass = dropdownCssClass.replace(':all:', '');\n\n Utils.copyNonInternalCssClasses($dropdown[0], this.$element[0]);\n }\n\n $dropdown.addClass(dropdownCssClass);\n\n return $dropdown;\n };\n\n return DropdownCSS;\n});\n\nS2.define('select2/dropdown/tagsSearchHighlight',[\n '../utils'\n], function (Utils) {\n function TagsSearchHighlight () { }\n\n TagsSearchHighlight.prototype.highlightFirstItem = function (decorated) {\n var $options = this.$results\n .find(\n '.select2-results__option--selectable' +\n ':not(.select2-results__option--selected)'\n );\n\n if ($options.length > 0) {\n var $firstOption = $options.first();\n var data = Utils.GetData($firstOption[0], 'data');\n var firstElement = data.element;\n\n if (firstElement && firstElement.getAttribute) {\n if (firstElement.getAttribute('data-select2-tag') === 'true') {\n $firstOption.trigger('mouseenter');\n\n return;\n }\n }\n }\n\n decorated.call(this);\n };\n\n return TagsSearchHighlight;\n});\n\nS2.define('select2/i18n/en',[],function () {\n // English\n return {\n errorLoading: function () {\n return 'The results could not be loaded.';\n },\n inputTooLong: function (args) {\n var overChars = args.input.length - args.maximum;\n\n var message = 'Please delete ' + overChars + ' character';\n\n if (overChars != 1) {\n message += 's';\n }\n\n return message;\n },\n inputTooShort: function (args) {\n var remainingChars = args.minimum - args.input.length;\n\n var message = 'Please enter ' + remainingChars + ' or more characters';\n\n return message;\n },\n loadingMore: function () {\n return 'Loading more results…';\n },\n maximumSelected: function (args) {\n var message = 'You can only select ' + args.maximum + ' item';\n\n if (args.maximum != 1) {\n message += 's';\n }\n\n return message;\n },\n noResults: function () {\n return 'No results found';\n },\n searching: function () {\n return 'Searching…';\n },\n removeAllItems: function () {\n return 'Remove all items';\n },\n removeItem: function () {\n return 'Remove item';\n },\n search: function() {\n return 'Search';\n }\n };\n});\n\nS2.define('select2/defaults',[\n 'jquery',\n\n './results',\n\n './selection/single',\n './selection/multiple',\n './selection/placeholder',\n './selection/allowClear',\n './selection/search',\n './selection/selectionCss',\n './selection/eventRelay',\n\n './utils',\n './translation',\n './diacritics',\n\n './data/select',\n './data/array',\n './data/ajax',\n './data/tags',\n './data/tokenizer',\n './data/minimumInputLength',\n './data/maximumInputLength',\n './data/maximumSelectionLength',\n\n './dropdown',\n './dropdown/search',\n './dropdown/hidePlaceholder',\n './dropdown/infiniteScroll',\n './dropdown/attachBody',\n './dropdown/minimumResultsForSearch',\n './dropdown/selectOnClose',\n './dropdown/closeOnSelect',\n './dropdown/dropdownCss',\n './dropdown/tagsSearchHighlight',\n\n './i18n/en'\n], function ($,\n\n ResultsList,\n\n SingleSelection, MultipleSelection, Placeholder, AllowClear,\n SelectionSearch, SelectionCSS, EventRelay,\n\n Utils, Translation, DIACRITICS,\n\n SelectData, ArrayData, AjaxData, Tags, Tokenizer,\n MinimumInputLength, MaximumInputLength, MaximumSelectionLength,\n\n Dropdown, DropdownSearch, HidePlaceholder, InfiniteScroll,\n AttachBody, MinimumResultsForSearch, SelectOnClose, CloseOnSelect,\n DropdownCSS, TagsSearchHighlight,\n\n EnglishTranslation) {\n function Defaults () {\n this.reset();\n }\n\n Defaults.prototype.apply = function (options) {\n options = $.extend(true, {}, this.defaults, options);\n\n if (options.dataAdapter == null) {\n if (options.ajax != null) {\n options.dataAdapter = AjaxData;\n } else if (options.data != null) {\n options.dataAdapter = ArrayData;\n } else {\n options.dataAdapter = SelectData;\n }\n\n if (options.minimumInputLength > 0) {\n options.dataAdapter = Utils.Decorate(\n options.dataAdapter,\n MinimumInputLength\n );\n }\n\n if (options.maximumInputLength > 0) {\n options.dataAdapter = Utils.Decorate(\n options.dataAdapter,\n MaximumInputLength\n );\n }\n\n if (options.maximumSelectionLength > 0) {\n options.dataAdapter = Utils.Decorate(\n options.dataAdapter,\n MaximumSelectionLength\n );\n }\n\n if (options.tags) {\n options.dataAdapter = Utils.Decorate(options.dataAdapter, Tags);\n }\n\n if (options.tokenSeparators != null || options.tokenizer != null) {\n options.dataAdapter = Utils.Decorate(\n options.dataAdapter,\n Tokenizer\n );\n }\n }\n\n if (options.resultsAdapter == null) {\n options.resultsAdapter = ResultsList;\n\n if (options.ajax != null) {\n options.resultsAdapter = Utils.Decorate(\n options.resultsAdapter,\n InfiniteScroll\n );\n }\n\n if (options.placeholder != null) {\n options.resultsAdapter = Utils.Decorate(\n options.resultsAdapter,\n HidePlaceholder\n );\n }\n\n if (options.selectOnClose) {\n options.resultsAdapter = Utils.Decorate(\n options.resultsAdapter,\n SelectOnClose\n );\n }\n\n if (options.tags) {\n options.resultsAdapter = Utils.Decorate(\n options.resultsAdapter,\n TagsSearchHighlight\n );\n }\n }\n\n if (options.dropdownAdapter == null) {\n if (options.multiple) {\n options.dropdownAdapter = Dropdown;\n } else {\n var SearchableDropdown = Utils.Decorate(Dropdown, DropdownSearch);\n\n options.dropdownAdapter = SearchableDropdown;\n }\n\n if (options.minimumResultsForSearch !== 0) {\n options.dropdownAdapter = Utils.Decorate(\n options.dropdownAdapter,\n MinimumResultsForSearch\n );\n }\n\n if (options.closeOnSelect) {\n options.dropdownAdapter = Utils.Decorate(\n options.dropdownAdapter,\n CloseOnSelect\n );\n }\n\n if (options.dropdownCssClass != null) {\n options.dropdownAdapter = Utils.Decorate(\n options.dropdownAdapter,\n DropdownCSS\n );\n }\n\n options.dropdownAdapter = Utils.Decorate(\n options.dropdownAdapter,\n AttachBody\n );\n }\n\n if (options.selectionAdapter == null) {\n if (options.multiple) {\n options.selectionAdapter = MultipleSelection;\n } else {\n options.selectionAdapter = SingleSelection;\n }\n\n // Add the placeholder mixin if a placeholder was specified\n if (options.placeholder != null) {\n options.selectionAdapter = Utils.Decorate(\n options.selectionAdapter,\n Placeholder\n );\n }\n\n if (options.allowClear) {\n options.selectionAdapter = Utils.Decorate(\n options.selectionAdapter,\n AllowClear\n );\n }\n\n if (options.multiple) {\n options.selectionAdapter = Utils.Decorate(\n options.selectionAdapter,\n SelectionSearch\n );\n }\n\n if (options.selectionCssClass != null) {\n options.selectionAdapter = Utils.Decorate(\n options.selectionAdapter,\n SelectionCSS\n );\n }\n\n options.selectionAdapter = Utils.Decorate(\n options.selectionAdapter,\n EventRelay\n );\n }\n\n // If the defaults were not previously applied from an element, it is\n // possible for the language option to have not been resolved\n options.language = this._resolveLanguage(options.language);\n\n // Always fall back to English since it will always be complete\n options.language.push('en');\n\n var uniqueLanguages = [];\n\n for (var l = 0; l < options.language.length; l++) {\n var language = options.language[l];\n\n if (uniqueLanguages.indexOf(language) === -1) {\n uniqueLanguages.push(language);\n }\n }\n\n options.language = uniqueLanguages;\n\n options.translations = this._processTranslations(\n options.language,\n options.debug\n );\n\n return options;\n };\n\n Defaults.prototype.reset = function () {\n function stripDiacritics (text) {\n // Used 'uni range + named function' from http://jsperf.com/diacritics/18\n function match(a) {\n return DIACRITICS[a] || a;\n }\n\n return text.replace(/[^\\u0000-\\u007E]/g, match);\n }\n\n function matcher (params, data) {\n // Always return the object if there is nothing to compare\n if (params.term == null || params.term.trim() === '') {\n return data;\n }\n\n // Do a recursive check for options with children\n if (data.children && data.children.length > 0) {\n // Clone the data object if there are children\n // This is required as we modify the object to remove any non-matches\n var match = $.extend(true, {}, data);\n\n // Check each child of the option\n for (var c = data.children.length - 1; c >= 0; c--) {\n var child = data.children[c];\n\n var matches = matcher(params, child);\n\n // If there wasn't a match, remove the object in the array\n if (matches == null) {\n match.children.splice(c, 1);\n }\n }\n\n // If any children matched, return the new object\n if (match.children.length > 0) {\n return match;\n }\n\n // If there were no matching children, check just the plain object\n return matcher(params, match);\n }\n\n var original = stripDiacritics(data.text).toUpperCase();\n var term = stripDiacritics(params.term).toUpperCase();\n\n // Check if the text contains the term\n if (original.indexOf(term) > -1) {\n return data;\n }\n\n // If it doesn't contain the term, don't return anything\n return null;\n }\n\n this.defaults = {\n amdLanguageBase: './i18n/',\n autocomplete: 'off',\n closeOnSelect: true,\n debug: false,\n dropdownAutoWidth: false,\n escapeMarkup: Utils.escapeMarkup,\n language: {},\n matcher: matcher,\n minimumInputLength: 0,\n maximumInputLength: 0,\n maximumSelectionLength: 0,\n minimumResultsForSearch: 0,\n selectOnClose: false,\n scrollAfterSelect: false,\n sorter: function (data) {\n return data;\n },\n templateResult: function (result) {\n return result.text;\n },\n templateSelection: function (selection) {\n return selection.text;\n },\n theme: 'default',\n width: 'resolve'\n };\n };\n\n Defaults.prototype.applyFromElement = function (options, $element) {\n var optionLanguage = options.language;\n var defaultLanguage = this.defaults.language;\n var elementLanguage = $element.prop('lang');\n var parentLanguage = $element.closest('[lang]').prop('lang');\n\n var languages = Array.prototype.concat.call(\n this._resolveLanguage(elementLanguage),\n this._resolveLanguage(optionLanguage),\n this._resolveLanguage(defaultLanguage),\n this._resolveLanguage(parentLanguage)\n );\n\n options.language = languages;\n\n return options;\n };\n\n Defaults.prototype._resolveLanguage = function (language) {\n if (!language) {\n return [];\n }\n\n if ($.isEmptyObject(language)) {\n return [];\n }\n\n if ($.isPlainObject(language)) {\n return [language];\n }\n\n var languages;\n\n if (!Array.isArray(language)) {\n languages = [language];\n } else {\n languages = language;\n }\n\n var resolvedLanguages = [];\n\n for (var l = 0; l < languages.length; l++) {\n resolvedLanguages.push(languages[l]);\n\n if (typeof languages[l] === 'string' && languages[l].indexOf('-') > 0) {\n // Extract the region information if it is included\n var languageParts = languages[l].split('-');\n var baseLanguage = languageParts[0];\n\n resolvedLanguages.push(baseLanguage);\n }\n }\n\n return resolvedLanguages;\n };\n\n Defaults.prototype._processTranslations = function (languages, debug) {\n var translations = new Translation();\n\n for (var l = 0; l < languages.length; l++) {\n var languageData = new Translation();\n\n var language = languages[l];\n\n if (typeof language === 'string') {\n try {\n // Try to load it with the original name\n languageData = Translation.loadPath(language);\n } catch (e) {\n try {\n // If we couldn't load it, check if it wasn't the full path\n language = this.defaults.amdLanguageBase + language;\n languageData = Translation.loadPath(language);\n } catch (ex) {\n // The translation could not be loaded at all. Sometimes this is\n // because of a configuration problem, other times this can be\n // because of how Select2 helps load all possible translation files\n if (debug && window.console && console.warn) {\n console.warn(\n 'Select2: The language file for \"' + language + '\" could ' +\n 'not be automatically loaded. A fallback will be used instead.'\n );\n }\n }\n }\n } else if ($.isPlainObject(language)) {\n languageData = new Translation(language);\n } else {\n languageData = language;\n }\n\n translations.extend(languageData);\n }\n\n return translations;\n };\n\n Defaults.prototype.set = function (key, value) {\n var camelKey = $.camelCase(key);\n\n var data = {};\n data[camelKey] = value;\n\n var convertedData = Utils._convertData(data);\n\n $.extend(true, this.defaults, convertedData);\n };\n\n var defaults = new Defaults();\n\n return defaults;\n});\n\nS2.define('select2/options',[\n 'jquery',\n './defaults',\n './utils'\n], function ($, Defaults, Utils) {\n function Options (options, $element) {\n this.options = options;\n\n if ($element != null) {\n this.fromElement($element);\n }\n\n if ($element != null) {\n this.options = Defaults.applyFromElement(this.options, $element);\n }\n\n this.options = Defaults.apply(this.options);\n }\n\n Options.prototype.fromElement = function ($e) {\n var excludedData = ['select2'];\n\n if (this.options.multiple == null) {\n this.options.multiple = $e.prop('multiple');\n }\n\n if (this.options.disabled == null) {\n this.options.disabled = $e.prop('disabled');\n }\n\n if (this.options.autocomplete == null && $e.prop('autocomplete')) {\n this.options.autocomplete = $e.prop('autocomplete');\n }\n\n if (this.options.dir == null) {\n if ($e.prop('dir')) {\n this.options.dir = $e.prop('dir');\n } else if ($e.closest('[dir]').prop('dir')) {\n this.options.dir = $e.closest('[dir]').prop('dir');\n } else {\n this.options.dir = 'ltr';\n }\n }\n\n $e.prop('disabled', this.options.disabled);\n $e.prop('multiple', this.options.multiple);\n\n if (Utils.GetData($e[0], 'select2Tags')) {\n if (this.options.debug && window.console && console.warn) {\n console.warn(\n 'Select2: The `data-select2-tags` attribute has been changed to ' +\n 'use the `data-data` and `data-tags=\"true\"` attributes and will be ' +\n 'removed in future versions of Select2.'\n );\n }\n\n Utils.StoreData($e[0], 'data', Utils.GetData($e[0], 'select2Tags'));\n Utils.StoreData($e[0], 'tags', true);\n }\n\n if (Utils.GetData($e[0], 'ajaxUrl')) {\n if (this.options.debug && window.console && console.warn) {\n console.warn(\n 'Select2: The `data-ajax-url` attribute has been changed to ' +\n '`data-ajax--url` and support for the old attribute will be removed' +\n ' in future versions of Select2.'\n );\n }\n\n $e.attr('ajax--url', Utils.GetData($e[0], 'ajaxUrl'));\n Utils.StoreData($e[0], 'ajax-Url', Utils.GetData($e[0], 'ajaxUrl'));\n }\n\n var dataset = {};\n\n function upperCaseLetter(_, letter) {\n return letter.toUpperCase();\n }\n\n // Pre-load all of the attributes which are prefixed with `data-`\n for (var attr = 0; attr < $e[0].attributes.length; attr++) {\n var attributeName = $e[0].attributes[attr].name;\n var prefix = 'data-';\n\n if (attributeName.substr(0, prefix.length) == prefix) {\n // Get the contents of the attribute after `data-`\n var dataName = attributeName.substring(prefix.length);\n\n // Get the data contents from the consistent source\n // This is more than likely the jQuery data helper\n var dataValue = Utils.GetData($e[0], dataName);\n\n // camelCase the attribute name to match the spec\n var camelDataName = dataName.replace(/-([a-z])/g, upperCaseLetter);\n\n // Store the data attribute contents into the dataset since\n dataset[camelDataName] = dataValue;\n }\n }\n\n // Prefer the element's `dataset` attribute if it exists\n // jQuery 1.x does not correctly handle data attributes with multiple dashes\n if ($.fn.jquery && $.fn.jquery.substr(0, 2) == '1.' && $e[0].dataset) {\n dataset = $.extend(true, {}, $e[0].dataset, dataset);\n }\n\n // Prefer our internal data cache if it exists\n var data = $.extend(true, {}, Utils.GetData($e[0]), dataset);\n\n data = Utils._convertData(data);\n\n for (var key in data) {\n if (excludedData.indexOf(key) > -1) {\n continue;\n }\n\n if ($.isPlainObject(this.options[key])) {\n $.extend(this.options[key], data[key]);\n } else {\n this.options[key] = data[key];\n }\n }\n\n return this;\n };\n\n Options.prototype.get = function (key) {\n return this.options[key];\n };\n\n Options.prototype.set = function (key, val) {\n this.options[key] = val;\n };\n\n return Options;\n});\n\nS2.define('select2/core',[\n 'jquery',\n './options',\n './utils',\n './keys'\n], function ($, Options, Utils, KEYS) {\n var Select2 = function ($element, options) {\n if (Utils.GetData($element[0], 'select2') != null) {\n Utils.GetData($element[0], 'select2').destroy();\n }\n\n this.$element = $element;\n\n this.id = this._generateId($element);\n\n options = options || {};\n\n this.options = new Options(options, $element);\n\n Select2.__super__.constructor.call(this);\n\n // Set up the tabindex\n\n var tabindex = $element.attr('tabindex') || 0;\n Utils.StoreData($element[0], 'old-tabindex', tabindex);\n $element.attr('tabindex', '-1');\n\n // Set up containers and adapters\n\n var DataAdapter = this.options.get('dataAdapter');\n this.dataAdapter = new DataAdapter($element, this.options);\n\n var $container = this.render();\n\n this._placeContainer($container);\n\n var SelectionAdapter = this.options.get('selectionAdapter');\n this.selection = new SelectionAdapter($element, this.options);\n this.$selection = this.selection.render();\n\n this.selection.position(this.$selection, $container);\n\n var DropdownAdapter = this.options.get('dropdownAdapter');\n this.dropdown = new DropdownAdapter($element, this.options);\n this.$dropdown = this.dropdown.render();\n\n this.dropdown.position(this.$dropdown, $container);\n\n var ResultsAdapter = this.options.get('resultsAdapter');\n this.results = new ResultsAdapter($element, this.options, this.dataAdapter);\n this.$results = this.results.render();\n\n this.results.position(this.$results, this.$dropdown);\n\n // Bind events\n\n var self = this;\n\n // Bind the container to all of the adapters\n this._bindAdapters();\n\n // Register any DOM event handlers\n this._registerDomEvents();\n\n // Register any internal event handlers\n this._registerDataEvents();\n this._registerSelectionEvents();\n this._registerDropdownEvents();\n this._registerResultsEvents();\n this._registerEvents();\n\n // Set the initial state\n this.dataAdapter.current(function (initialData) {\n self.trigger('selection:update', {\n data: initialData\n });\n });\n\n // Hide the original select\n $element[0].classList.add('select2-hidden-accessible');\n $element.attr('aria-hidden', 'true');\n\n // Synchronize any monitored attributes\n this._syncAttributes();\n\n Utils.StoreData($element[0], 'select2', this);\n\n // Ensure backwards compatibility with $element.data('select2').\n $element.data('select2', this);\n };\n\n Utils.Extend(Select2, Utils.Observable);\n\n Select2.prototype._generateId = function ($element) {\n var id = '';\n\n if ($element.attr('id') != null) {\n id = $element.attr('id');\n } else if ($element.attr('name') != null) {\n id = $element.attr('name') + '-' + Utils.generateChars(2);\n } else {\n id = Utils.generateChars(4);\n }\n\n id = id.replace(/(:|\\.|\\[|\\]|,)/g, '');\n id = 'select2-' + id;\n\n return id;\n };\n\n Select2.prototype._placeContainer = function ($container) {\n $container.insertAfter(this.$element);\n\n var width = this._resolveWidth(this.$element, this.options.get('width'));\n\n if (width != null) {\n $container.css('width', width);\n }\n };\n\n Select2.prototype._resolveWidth = function ($element, method) {\n var WIDTH = /^width:(([-+]?([0-9]*\\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;\n\n if (method == 'resolve') {\n var styleWidth = this._resolveWidth($element, 'style');\n\n if (styleWidth != null) {\n return styleWidth;\n }\n\n return this._resolveWidth($element, 'element');\n }\n\n if (method == 'element') {\n var elementWidth = $element.outerWidth(false);\n\n if (elementWidth <= 0) {\n return 'auto';\n }\n\n return elementWidth + 'px';\n }\n\n if (method == 'style') {\n var style = $element.attr('style');\n\n if (typeof(style) !== 'string') {\n return null;\n }\n\n var attrs = style.split(';');\n\n for (var i = 0, l = attrs.length; i < l; i = i + 1) {\n var attr = attrs[i].replace(/\\s/g, '');\n var matches = attr.match(WIDTH);\n\n if (matches !== null && matches.length >= 1) {\n return matches[1];\n }\n }\n\n return null;\n }\n\n if (method == 'computedstyle') {\n var computedStyle = window.getComputedStyle($element[0]);\n\n return computedStyle.width;\n }\n\n return method;\n };\n\n Select2.prototype._bindAdapters = function () {\n this.dataAdapter.bind(this, this.$container);\n this.selection.bind(this, this.$container);\n\n this.dropdown.bind(this, this.$container);\n this.results.bind(this, this.$container);\n };\n\n Select2.prototype._registerDomEvents = function () {\n var self = this;\n\n this.$element.on('change.select2', function () {\n self.dataAdapter.current(function (data) {\n self.trigger('selection:update', {\n data: data\n });\n });\n });\n\n this.$element.on('focus.select2', function (evt) {\n self.trigger('focus', evt);\n });\n\n this._syncA = Utils.bind(this._syncAttributes, this);\n this._syncS = Utils.bind(this._syncSubtree, this);\n\n this._observer = new window.MutationObserver(function (mutations) {\n self._syncA();\n self._syncS(mutations);\n });\n this._observer.observe(this.$element[0], {\n attributes: true,\n childList: true,\n subtree: false\n });\n };\n\n Select2.prototype._registerDataEvents = function () {\n var self = this;\n\n this.dataAdapter.on('*', function (name, params) {\n self.trigger(name, params);\n });\n };\n\n Select2.prototype._registerSelectionEvents = function () {\n var self = this;\n var nonRelayEvents = ['toggle', 'focus'];\n\n this.selection.on('toggle', function () {\n self.toggleDropdown();\n });\n\n this.selection.on('focus', function (params) {\n self.focus(params);\n });\n\n this.selection.on('*', function (name, params) {\n if (nonRelayEvents.indexOf(name) !== -1) {\n return;\n }\n\n self.trigger(name, params);\n });\n };\n\n Select2.prototype._registerDropdownEvents = function () {\n var self = this;\n\n this.dropdown.on('*', function (name, params) {\n self.trigger(name, params);\n });\n };\n\n Select2.prototype._registerResultsEvents = function () {\n var self = this;\n\n this.results.on('*', function (name, params) {\n self.trigger(name, params);\n });\n };\n\n Select2.prototype._registerEvents = function () {\n var self = this;\n\n this.on('open', function () {\n self.$container[0].classList.add('select2-container--open');\n });\n\n this.on('close', function () {\n self.$container[0].classList.remove('select2-container--open');\n });\n\n this.on('enable', function () {\n self.$container[0].classList.remove('select2-container--disabled');\n });\n\n this.on('disable', function () {\n self.$container[0].classList.add('select2-container--disabled');\n });\n\n this.on('blur', function () {\n self.$container[0].classList.remove('select2-container--focus');\n });\n\n this.on('query', function (params) {\n if (!self.isOpen()) {\n self.trigger('open', {});\n }\n\n this.dataAdapter.query(params, function (data) {\n self.trigger('results:all', {\n data: data,\n query: params\n });\n });\n });\n\n this.on('query:append', function (params) {\n this.dataAdapter.query(params, function (data) {\n self.trigger('results:append', {\n data: data,\n query: params\n });\n });\n });\n\n this.on('keypress', function (evt) {\n var key = evt.which;\n\n if (self.isOpen()) {\n if (key === KEYS.ESC || (key === KEYS.UP && evt.altKey)) {\n self.close(evt);\n\n evt.preventDefault();\n } else if (key === KEYS.ENTER || key === KEYS.TAB) {\n self.trigger('results:select', {});\n\n evt.preventDefault();\n } else if ((key === KEYS.SPACE && evt.ctrlKey)) {\n self.trigger('results:toggle', {});\n\n evt.preventDefault();\n } else if (key === KEYS.UP) {\n self.trigger('results:previous', {});\n\n evt.preventDefault();\n } else if (key === KEYS.DOWN) {\n self.trigger('results:next', {});\n\n evt.preventDefault();\n }\n } else {\n if (key === KEYS.ENTER || key === KEYS.SPACE ||\n (key === KEYS.DOWN && evt.altKey)) {\n self.open();\n\n evt.preventDefault();\n }\n }\n });\n };\n\n Select2.prototype._syncAttributes = function () {\n this.options.set('disabled', this.$element.prop('disabled'));\n\n if (this.isDisabled()) {\n if (this.isOpen()) {\n this.close();\n }\n\n this.trigger('disable', {});\n } else {\n this.trigger('enable', {});\n }\n };\n\n Select2.prototype._isChangeMutation = function (mutations) {\n var self = this;\n\n if (mutations.addedNodes && mutations.addedNodes.length > 0) {\n for (var n = 0; n < mutations.addedNodes.length; n++) {\n var node = mutations.addedNodes[n];\n\n if (node.selected) {\n return true;\n }\n }\n } else if (mutations.removedNodes && mutations.removedNodes.length > 0) {\n return true;\n } else if (Array.isArray(mutations)) {\n return mutations.some(function (mutation) {\n return self._isChangeMutation(mutation);\n });\n }\n\n return false;\n };\n\n Select2.prototype._syncSubtree = function (mutations) {\n var changed = this._isChangeMutation(mutations);\n var self = this;\n\n // Only re-pull the data if we think there is a change\n if (changed) {\n this.dataAdapter.current(function (currentData) {\n self.trigger('selection:update', {\n data: currentData\n });\n });\n }\n };\n\n /**\n * Override the trigger method to automatically trigger pre-events when\n * there are events that can be prevented.\n */\n Select2.prototype.trigger = function (name, args) {\n var actualTrigger = Select2.__super__.trigger;\n var preTriggerMap = {\n 'open': 'opening',\n 'close': 'closing',\n 'select': 'selecting',\n 'unselect': 'unselecting',\n 'clear': 'clearing'\n };\n\n if (args === undefined) {\n args = {};\n }\n\n if (name in preTriggerMap) {\n var preTriggerName = preTriggerMap[name];\n var preTriggerArgs = {\n prevented: false,\n name: name,\n args: args\n };\n\n actualTrigger.call(this, preTriggerName, preTriggerArgs);\n\n if (preTriggerArgs.prevented) {\n args.prevented = true;\n\n return;\n }\n }\n\n actualTrigger.call(this, name, args);\n };\n\n Select2.prototype.toggleDropdown = function () {\n if (this.isDisabled()) {\n return;\n }\n\n if (this.isOpen()) {\n this.close();\n } else {\n this.open();\n }\n };\n\n Select2.prototype.open = function () {\n if (this.isOpen()) {\n return;\n }\n\n if (this.isDisabled()) {\n return;\n }\n\n this.trigger('query', {});\n };\n\n Select2.prototype.close = function (evt) {\n if (!this.isOpen()) {\n return;\n }\n\n this.trigger('close', { originalEvent : evt });\n };\n\n /**\n * Helper method to abstract the \"enabled\" (not \"disabled\") state of this\n * object.\n *\n * @return {true} if the instance is not disabled.\n * @return {false} if the instance is disabled.\n */\n Select2.prototype.isEnabled = function () {\n return !this.isDisabled();\n };\n\n /**\n * Helper method to abstract the \"disabled\" state of this object.\n *\n * @return {true} if the disabled option is true.\n * @return {false} if the disabled option is false.\n */\n Select2.prototype.isDisabled = function () {\n return this.options.get('disabled');\n };\n\n Select2.prototype.isOpen = function () {\n return this.$container[0].classList.contains('select2-container--open');\n };\n\n Select2.prototype.hasFocus = function () {\n return this.$container[0].classList.contains('select2-container--focus');\n };\n\n Select2.prototype.focus = function (data) {\n // No need to re-trigger focus events if we are already focused\n if (this.hasFocus()) {\n return;\n }\n\n this.$container[0].classList.add('select2-container--focus');\n this.trigger('focus', {});\n };\n\n Select2.prototype.enable = function (args) {\n if (this.options.get('debug') && window.console && console.warn) {\n console.warn(\n 'Select2: The `select2(\"enable\")` method has been deprecated and will' +\n ' be removed in later Select2 versions. Use $element.prop(\"disabled\")' +\n ' instead.'\n );\n }\n\n if (args == null || args.length === 0) {\n args = [true];\n }\n\n var disabled = !args[0];\n\n this.$element.prop('disabled', disabled);\n };\n\n Select2.prototype.data = function () {\n if (this.options.get('debug') &&\n arguments.length > 0 && window.console && console.warn) {\n console.warn(\n 'Select2: Data can no longer be set using `select2(\"data\")`. You ' +\n 'should consider setting the value instead using `$element.val()`.'\n );\n }\n\n var data = [];\n\n this.dataAdapter.current(function (currentData) {\n data = currentData;\n });\n\n return data;\n };\n\n Select2.prototype.val = function (args) {\n if (this.options.get('debug') && window.console && console.warn) {\n console.warn(\n 'Select2: The `select2(\"val\")` method has been deprecated and will be' +\n ' removed in later Select2 versions. Use $element.val() instead.'\n );\n }\n\n if (args == null || args.length === 0) {\n return this.$element.val();\n }\n\n var newVal = args[0];\n\n if (Array.isArray(newVal)) {\n newVal = newVal.map(function (obj) {\n return obj.toString();\n });\n }\n\n this.$element.val(newVal).trigger('input').trigger('change');\n };\n\n Select2.prototype.destroy = function () {\n Utils.RemoveData(this.$container[0]);\n this.$container.remove();\n\n this._observer.disconnect();\n this._observer = null;\n\n this._syncA = null;\n this._syncS = null;\n\n this.$element.off('.select2');\n this.$element.attr('tabindex',\n Utils.GetData(this.$element[0], 'old-tabindex'));\n\n this.$element[0].classList.remove('select2-hidden-accessible');\n this.$element.attr('aria-hidden', 'false');\n Utils.RemoveData(this.$element[0]);\n this.$element.removeData('select2');\n\n this.dataAdapter.destroy();\n this.selection.destroy();\n this.dropdown.destroy();\n this.results.destroy();\n\n this.dataAdapter = null;\n this.selection = null;\n this.dropdown = null;\n this.results = null;\n };\n\n Select2.prototype.render = function () {\n var $container = $(\n '' +\n '' +\n '' +\n ''\n );\n\n $container.attr('dir', this.options.get('dir'));\n\n this.$container = $container;\n\n this.$container[0].classList\n .add('select2-container--' + this.options.get('theme'));\n\n Utils.StoreData($container[0], 'element', this.$element);\n\n return $container;\n };\n\n return Select2;\n});\n\nS2.define('jquery-mousewheel',[\n 'jquery'\n], function ($) {\n // Used to shim jQuery.mousewheel for non-full builds.\n return $;\n});\n\nS2.define('jquery.select2',[\n 'jquery',\n 'jquery-mousewheel',\n\n './select2/core',\n './select2/defaults',\n './select2/utils'\n], function ($, _, Select2, Defaults, Utils) {\n if ($.fn.select2 == null) {\n // All methods that should return the element\n var thisMethods = ['open', 'close', 'destroy'];\n\n $.fn.select2 = function (options) {\n options = options || {};\n\n if (typeof options === 'object') {\n this.each(function () {\n var instanceOptions = $.extend(true, {}, options);\n\n var instance = new Select2($(this), instanceOptions);\n });\n\n return this;\n } else if (typeof options === 'string') {\n var ret;\n var args = Array.prototype.slice.call(arguments, 1);\n\n this.each(function () {\n var instance = Utils.GetData(this, 'select2');\n\n if (instance == null && window.console && console.error) {\n console.error(\n 'The select2(\\'' + options + '\\') method was called on an ' +\n 'element that is not using Select2.'\n );\n }\n\n ret = instance[options].apply(instance, args);\n });\n\n // Check if we should be returning `this`\n if (thisMethods.indexOf(options) > -1) {\n return this;\n }\n\n return ret;\n } else {\n throw new Error('Invalid arguments for Select2: ' + options);\n }\n };\n }\n\n if ($.fn.select2.defaults == null) {\n $.fn.select2.defaults = Defaults;\n }\n\n return Select2;\n});\n\n // Return the AMD loader configuration so it can be used outside of this file\n return {\n define: S2.define,\n require: S2.require\n };\n}());\n\n // Autoload the jQuery bindings\n // We know that all of the modules exist above this, so we're safe\n var select2 = S2.require('jquery.select2');\n\n // Hold the AMD module references on the jQuery function that was just loaded\n // This allows Select2 to use the internal loader outside of this file, such\n // as in the language files.\n jQuery.fn.select2.amd = S2;\n\n // Return the Select2 instance for anyone who is importing it.\n return select2;\n}));\n"],"names":["__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","RequestMethod","Object","create","BatchRequestContent","validateDependencies","requests","size","error","Error","name","reqs","iterator","entries","cur","curReq","undefined","dependsOn","length","isParallel","firstRequest","prev","id","isSerial","dependencyId","fDependencyId","has","isSame","getRequestData","request","this","requestData","url","hasHttpRegex","RegExp","test","split","method","headers","forEach","key","keys","PATCH","POST","PUT","body","getRequestBody","bodyParsed","cloneReq","clone","json","Blob","blob","reader","FileReader","addEventListener","dataURL","segments","exec","readAsDataURL","Buffer","buffer","toString","constructor","Map","limit","requestLimit","req","addRequest","set","removeRequest","requestId","deleteStatus","delete","dependencies","index","indexOf","splice","getContent","requestBody","requestStep","batchRequestData","push","addDependency","dependentId","dependent","get","dId","removeDependency","BatchResponseContent","response","responses","update","createResponseObject","responseJSON","options","status","statusText","bodyString","JSON","stringify","Response","nextLink","i","l","getResponseById","getResponses","getResponsesIterator","GRAPH_URLS","Set","GraphClientError","setGraphClientError","graphClientError","customError","message","super","setPrototypeOf","prototype","oDataQueryNames","serializeContent","content","className","from","isGraphURL","isValidEndpoint","isCustomHost","customHosts","host","isCustomHostValid","allowedHosts","toLowerCase","startofPortNoPos","replace","endOfHostStrPos","hostName","substring","MiddlewareControl","middlewareOptions","option","fn","getMiddlewareOptions","setMiddlewareOptions","generateUUID","uuid","j","Math","floor","random","getRequestHeader","Request","Headers","Array","setRequestHeader","header","assign","appendRequestHeader","append","AuthenticationHandlerOptions","authenticationProvider","authenticationProviderOptions","FeatureUsageFlag","ChaosStrategy","TelemetryHandlerOptions","featureUsage","NONE","updateFeatureUsageFlag","context","flag","middlewareControl","setFeatureUsage","getFeatureUsage","AuthenticationHandler","execute","bearerKey","getAccessToken","AUTHORIZATION_HEADER","AUTHENTICATION_HANDLER_ENABLED","nextMiddleware","setNext","HTTPMessageHandler","fetch","RetryHandlerOptions","delay","DEFAULT_DELAY","maxRetries","DEFAULT_MAX_RETRIES","shouldRetry","defaultShouldRetry","MAX_DELAY","MAX_MAX_RETRIES","min","getMaxDelay","RetryHandler","isRetry","RETRY_STATUS_CODES","isBuffered","getDelay","retryAttempts","getRandomness","Number","toFixed","retryAfter","RETRY_AFTER_HEADER","newDelay","isNaN","round","Date","getTime","now","getExponentialBackOffTime","attempts","pow","sleep","delaySeconds","delayMilliseconds","setTimeout","getOptions","executeWithRetry","RETRY_ATTEMPT_HEADER","RETRY_HANDLER_ENABLED","RedirectHandlerOptions","maxRedirects","DEFAULT_MAX_REDIRECTS","shouldRedirect","defaultShouldRedirect","MAX_MAX_REDIRECTS","RedirectHandler","isRedirect","REDIRECT_STATUS_CODES","hasLocationHeader","LOCATION_HEADER","getLocationHeader","isRelativeURL","shouldDropAuthorizationHeader","requestUrl","redirectUrl","schemeHostRegex","requestMatches","requestAuthority","redirectAuthority","redirectMatches","updateRequestUrl","newUrl","referrer","referrerPolicy","mode","credentials","cache","redirect","integrity","keepalive","signal","executeWithRedirect","redirectCount","STATUS_CODE_SEE_OTHER","GET","MANUAL_REDIRECT","REDIRECT_HANDLER_ENABLED","TelemetryHandler","clientRequestId","CLIENT_REQUEST_ID_HEADER","sdkVersionValue","PRODUCT_NAME","FEATURE_USAGE_STRING","SDK_VERSION_HEADER","MiddlewareFactory","getDefaultMiddlewareChain","authProvider","middleware","authenticationHandler","retryHandler","telemetryHandler","httpMessageHandler","process","redirectHandler","ChaosHandlerOptions","chaosStrategy","RANDOM","statusMessage","statusCode","chaosPercentage","responseBody","methodStatusCode","DELETE","httpStatusCode","ChaosHandler","manualMap","createResponseHeaders","chaosHandlerOptions","requestID","requestDate","responseHeader","createResponseBody","code","innerError","date","createResponse","requestURL","init","sendRequest","setStatusCode","MANUAL","getRandomStatusCode","requestMethod","statusCodeArray","getRelativeURL","urlMethod","pattern","relativeURL","ResponseType","DocumentType","ContentType","ContentTypeRegexStr","GraphResponseHandler","parseDocumentResponse","rawResponse","type","DOMParser","text","xmlString","xmlDoc","parseFromString","convertResponse","responseType","responseValue","contentType","ARRAYBUFFER","arrayBuffer","BLOB","DOCUMENT","TEXT_XML","STREAM","TEXT","mimeType","IMAGE","TEXT_PLAIN","APPLICATION_JSON","getResponse","callback","RAW","ok","Range","minVal","maxVal","minValue","maxValue","UploadResult","location","_location","_responseBody","CreateUploadResult","responseHeaders","LargeFileUploadTask","createUploadSession","client","payload","session","api","post","uploadUrl","expiry","expirationDateTime","isCancelled","file","uploadSession","DEFAULT_FILE_SIZE","sliceFile","rangeSize","nextRange","parseRange","ranges","rangeStr","firstRange","parseInt","updateTaskStatus","nextExpectedRanges","getNextRange","range","console","warn","ArrayBuffer","Uint8Array","slice","upload","uploadEventHandlers","err","fileSlice","uploadSliceGetRawResponse","reportProgress","res","ExpirationDateTime","NextExpectedRanges","progress","extraCallbackParam","uploadSlice","totalSize","put","cancel","cancelResponse","getStatus","resume","getUploadSession","FileUpload","getValidRangeSize","sixtyMB","OneDriveLargeFileUploadTask","constructCreateSessionUrl","fileName","path","DEFAULT_UPLOAD_PATH","trim","map","p","encodeURIComponent","join","getFileInfo","File","b","byteLength","byteOffset","fileInfo","fileObj","createTaskWithFileObject","fileObject","uploadSessionURL","uploadSessionPayload","fileDescription","conflictBehavior","payloadOptions","_super","item","description","call","commit","StreamUpload","bufs","previousSlice","previousRangeMin","previousRangeMax","readable","readableLength","read","readNBytesFromStream","slicedChunk","concat","chunks","remainder","on","chunk","PageIterator","pageCollection","requestOptions","collection","deltaLink","cursor","complete","iterationHelper","advance","fetchAndUpdateNextPageData","graphRequest","getDeltaLink","iterate","isComplete","CustomAuthenticationProvider","provider","accessToken","GraphError","baseError","stack","GraphErrorHandler","constructError","gError","constructErrorFromResponse","graphError","getError","GraphRequest","httpClient","config","parsePath","urlComponents","endOfVersionStrPos","version","charAt","substr","queryStrPos","queryParams","queryParam","parseQueryParameter","baseUrl","defaultVersion","oDataQueryParams","otherURLQueryParams","otherURLQueryOptions","_headers","_options","_middlewareOptions","addCsvQueryParameter","propertyName","propertyValue","additionalProperties","allValues","buildFullUrl","urlSegments","removePreSlash","s","reduce","pre","urlJoin","createQueryString","debugLogging","log","query","property","hasOwnProperty","str","queryDictionaryOrString","parseQueryParamenterString","setURLComponentsQueryParamater","queryParameter","isValidQueryKeyValuePair","indexOfFirstEquals","paramKey","paramValue","currentValue","isValueAppendable","queryString","indexofFirstEquals","updateRequestOptions","optionsHeaders","fetchOptions","send","_a","_responseType","setHeaderContentType","headerKeys","headerKey","headerValue","select","properties","arguments","expand","orderby","filter","filterStr","$filter","search","searchStr","$search","top","n","$top","skip","$skip","skipToken","token","$skipToken","count","isCount","$count","patch","del","getStream","putStream","stream","HTTPClient","setMiddleware","parseMiddleWareArray","middlewareArray","element","HTTPClientFactory","createWithAuthenticationProvider","createWithMiddleware","Client","clientOptions","initWithMiddleware","validatePolyFilling","ACCEPTED","BAD_GATEWAY","BAD_REQUEST","CONFLICT","CONTINUE","CREATED","EXPECTATION_FAILED","FAILED_DEPENDENCY","FORBIDDEN","GATEWAY_TIMEOUT","GONE","HTTP_VERSION_NOT_SUPPORTED","IM_A_TEAPOT","INSUFFICIENT_SPACE_ON_RESOURCE","INSUFFICIENT_STORAGE","INTERNAL_SERVER_ERROR","LENGTH_REQUIRED","LOCKED","METHOD_FAILURE","METHOD_NOT_ALLOWED","MOVED_PERMANENTLY","MOVED_TEMPORARILY","MULTI_STATUS","MULTIPLE_CHOICES","NETWORK_AUTHENTICATION_REQUIRED","NO_CONTENT","NON_AUTHORITATIVE_INFORMATION","NOT_ACCEPTABLE","NOT_FOUND","NOT_IMPLEMENTED","NOT_MODIFIED","OK","PARTIAL_CONTENT","PAYMENT_REQUIRED","PERMANENT_REDIRECT","PRECONDITION_FAILED","PRECONDITION_REQUIRED","PROCESSING","PROXY_AUTHENTICATION_REQUIRED","REQUEST_HEADER_FIELDS_TOO_LARGE","REQUEST_TIMEOUT","REQUEST_TOO_LONG","REQUEST_URI_TOO_LONG","REQUESTED_RANGE_NOT_SATISFIABLE","RESET_CONTENT","SEE_OTHER","SERVICE_UNAVAILABLE","SWITCHING_PROTOCOLS","TEMPORARY_REDIRECT","TOO_MANY_REQUESTS","UNAUTHORIZED","UNPROCESSABLE_ENTITY","UNSUPPORTED_MEDIA_TYPE","USE_PROXY","statusCodeToReasonPhrase","reasonPhraseToStatusCode","getReasonPhrase","getStatusCode","reasonPhrase","StatusCodes","ReasonPhrases","getStatusText","__assign","t","legacy","jQuery","S2","select2","amd","requirejs","require","define","undef","main","makeMap","handlers","defined","waiting","defining","hasOwn","aps","jsSuffixRegExp","hasProp","obj","prop","normalize","baseName","nameParts","nameSegment","mapValue","foundMap","lastIndex","foundI","foundStarMap","starI","part","baseParts","starMap","nodeIdCompat","makeRequire","relName","forceSync","args","makeLoad","depName","callDep","splitPrefix","prefix","makeRelParts","makeConfig","relParts","plugin","parts","relResourceName","f","pr","exports","module","uri","deps","cjsModule","ret","usingExports","callbackType","load","alt","cfg","_defined","_$","$","Utils","getMethods","theClass","proto","methods","methodName","Extend","ChildClass","SuperClass","__hasProp","BaseConstructor","__super__","Decorate","DecoratorClass","decoratedMethods","superMethods","DecoratedClass","unshift","argCount","calledConstructor","displayName","m","superMethod","calledMethod","originalMethod","decoratedMethod","d","Observable","listeners","event","trigger","params","_type","invoke","len","generateChars","chars","bind","func","_convertData","data","originalKey","dataLevel","k","hasScroll","el","$el","overflowX","style","overflowY","innerHeight","scrollHeight","innerWidth","scrollWidth","escapeMarkup","markup","replaceMap","String","match","__cache","GetUniqueElementId","select2Id","getAttribute","setAttribute","StoreData","GetData","RemoveData","removeAttribute","copyNonInternalCssClasses","dest","src","destinationClasses","clazz","sourceClasses","replacements","Results","$element","dataAdapter","render","$results","attr","clear","empty","displayMessage","hideLoading","$message","hideMessages","find","remove","$options","results","sort","$option","children","position","$dropdown","sorter","highlightFirstItem","$selected","first","ensureHighlightVisible","setClasses","self","current","selected","selectedIds","each","classList","add","showLoading","loading","disabled","loadingMore","$loading","prepend","document","createElement","attrs","matches","window","Element","msMatchesSelector","webkitMatchesSelector","_resultId","title","role","val","label","template","$children","c","child","$child","$childrenContainer","container","$container","isOpen","removeAttr","$highlighted","getHighlightedResults","hasClass","currentIndex","nextIndex","$next","eq","currentOffset","offset","nextTop","nextOffset","scrollTop","outerHeight","nextBottom","mousewheel","bottom","deltaY","isAtTop","isAtBottom","height","preventDefault","stopPropagation","evt","$this","originalEvent","removeClass","destroy","offsetDelta","display","innerHTML","BACKSPACE","TAB","ENTER","SHIFT","CTRL","ALT","ESC","SPACE","PAGE_UP","PAGE_DOWN","END","HOME","LEFT","UP","RIGHT","DOWN","KEYS","BaseSelection","$selection","_tabindex","resultsId","_handleBlur","which","_attachCloseHandler","_detachCloseHandler","activeElement","contains","$select","target","closest","off","isEnabled","isDisabled","SingleSelection","html","$rendered","selectionContainer","selection","formatted","MultipleSelection","parent","$selections","selectionIdPrefix","selectionId","removeItem","$remove","Placeholder","decorated","placeholder","normalizePlaceholder","_","createPlaceholder","$placeholder","placeholderTitle","singlePlaceholder","AllowClear","_handleClear","_handleKeyboardClear","$clear","previousVal","unselectData","prevented","removeAll","Search","searchLabel","$searchContainer","_transferTabIndex","resizeSearch","_keyUpPrevented","isDefaultPrevented","$previousChoice","last","searchRemoveChoice","msie","documentMode","disableInputEvents","handleSearch","searchHadFocus","input","term","css","width","SelectionCSS","selectionCssClass","addClass","EventRelay","relayEvents","preventableEvents","Event","Translation","dict","all","extend","translation","_cache","loadPath","translations","BaseAdapter","generateResultId","SelectAdapter","querySelectorAll","selectedElement","tagName","currentData","unselect","addOptions","textContent","innerText","normalizedData","_normalizeItem","matcher","ArrayAdapter","_dataToConvert","convertToOptions","elm","$existing","existingIds","onlyItem","$existingOption","existingData","newData","$newOption","replaceWith","AjaxAdapter","ajaxOptions","_applyDefaults","processResults","defaults","q","transport","success","failure","$request","ajax","fail","_request","abort","isArray","_queryTimeout","clearTimeout","Tags","tags","createTag","insertTag","tag","_removeOldTags","page","wrapper","checkChildren","toUpperCase","Tokenizer","tokenizer","dropdown","tokenData","separators","termChar","MinimumInputLength","$e","minimumInputLength","minimum","MaximumInputLength","maximumInputLength","maximum","MaximumSelectionLength","maximumSelectionLength","_checkIfMaximumSelected","successCallback","Dropdown","showSearch","HidePlaceholder","removePlaceholder","modifiedData","InfiniteScroll","lastParams","$loadingMore","createLoadingMore","showLoadingMore","loadMoreIfNeeded","isLoadMoreVisible","documentElement","loadMore","pagination","more","AttachBody","$dropdownParent","_showDropdown","_attachPositioningHandler","_bindContainerResultHandlers","_hideDropdown","_detachPositioningHandler","$dropdownContainer","detach","_containerResultsHandlersBound","_positionDropdown","_resizeDropdown","scrollEvent","resizeEvent","orientationEvent","$watchers","parents","x","scrollLeft","y","ev","$window","isCurrentlyAbove","isCurrentlyBelow","newDirection","viewport","enoughRoomAbove","enoughRoomBelow","left","$offsetParent","offsetParent","parentOffset","isConnected","outerWidth","minWidth","appendTo","countResults","MinimumResultsForSearch","minimumResultsForSearch","Infinity","SelectOnClose","_handleSelectOnClose","originalSelect2Event","$highlightedResults","CloseOnSelect","_selectTriggered","ctrlKey","metaKey","DropdownCSS","dropdownCssClass","TagsSearchHighlight","$firstOption","firstElement","errorLoading","inputTooLong","overChars","inputTooShort","maximumSelected","noResults","searching","removeAllItems","ResultsList","SelectionSearch","DIACRITICS","SelectData","ArrayData","AjaxData","DropdownSearch","EnglishTranslation","Defaults","reset","tokenSeparators","resultsAdapter","selectOnClose","dropdownAdapter","multiple","SearchableDropdown","closeOnSelect","selectionAdapter","allowClear","language","_resolveLanguage","uniqueLanguages","_processTranslations","debug","stripDiacritics","a","amdLanguageBase","autocomplete","dropdownAutoWidth","original","scrollAfterSelect","templateResult","templateSelection","theme","applyFromElement","optionLanguage","defaultLanguage","elementLanguage","parentLanguage","languages","isEmptyObject","isPlainObject","resolvedLanguages","baseLanguage","languageData","ex","camelCase","convertedData","Options","fromElement","excludedData","dir","dataset","upperCaseLetter","letter","attributes","attributeName","dataName","dataValue","jquery","Select2","_generateId","tabindex","DataAdapter","_placeContainer","SelectionAdapter","DropdownAdapter","ResultsAdapter","_bindAdapters","_registerDomEvents","_registerDataEvents","_registerSelectionEvents","_registerDropdownEvents","_registerResultsEvents","_registerEvents","initialData","_syncAttributes","insertAfter","_resolveWidth","WIDTH","styleWidth","elementWidth","getComputedStyle","_syncA","_syncS","_syncSubtree","_observer","MutationObserver","mutations","observe","childList","subtree","nonRelayEvents","toggleDropdown","focus","altKey","close","open","_isChangeMutation","addedNodes","removedNodes","some","mutation","changed","actualTrigger","preTriggerMap","preTriggerName","preTriggerArgs","hasFocus","enable","newVal","disconnect","removeData","thisMethods","instanceOptions","instance"],"sourceRoot":""}