{"version":3,"file":"885-a0d6229506.js","mappings":";kGAEIA,EAAyB,EAAQ,OAEjCC,EAAU,EAAQ,OAEtBC,OAAOC,eAAeC,EAAS,aAAc,CAC3CC,OAAO,IAETD,EAAQE,yBAAsB,EAE9B,IAAIC,EAA4BP,EAAuB,EAAQ,MAE3DQ,EAAeR,EAAuB,EAAQ,OAE9CS,EAAyBT,EAAuB,EAAQ,QAExDU,EAAyBV,EAAuB,EAAQ,OAExDW,EAAsBX,EAAuB,EAAQ,QAErDY,EAAqBZ,EAAuB,EAAQ,QAEpDa,EAAmBb,EAAuB,EAAQ,QAElDc,EAAgBd,EAAuB,EAAQ,QAE/Ce,EAAmBf,EAAuB,EAAQ,QAElDgB,EAAmB,EAAQ,OAE3BC,EAAU,EAAQ,OAElBC,EAAc,EAAQ,OAEtBC,EAcJ,SAAiCC,EAAKC,GAAe,IAAKA,GAAeD,GAAOA,EAAIE,WAAc,OAAOF,EAAO,GAAY,OAARA,GAAiC,WAAjBnB,EAAQmB,IAAoC,mBAARA,EAAsB,MAAO,CAAE,QAAWA,GAAS,IAAIG,EAAQC,EAAyBH,GAAc,GAAIE,GAASA,EAAME,IAAIL,GAAQ,OAAOG,EAAMG,IAAIN,GAAQ,IAAIO,EAAS,CAAC,EAAOC,EAAwB1B,OAAOC,gBAAkBD,OAAO2B,yBAA0B,IAAK,IAAIC,KAAOV,EAAO,GAAY,YAARU,GAAqB5B,OAAO6B,UAAUC,eAAeC,KAAKb,EAAKU,GAAM,CAAE,IAAII,EAAON,EAAwB1B,OAAO2B,yBAAyBT,EAAKU,GAAO,KAAUI,IAASA,EAAKR,KAAOQ,EAAKC,KAAQjC,OAAOC,eAAewB,EAAQG,EAAKI,GAAgBP,EAAOG,GAAOV,EAAIU,EAAQ,CAAIH,EAAgB,QAAIP,EAASG,GAASA,EAAMY,IAAIf,EAAKO,GAAW,OAAOA,CAAQ,CAd/xBS,CAAwB,EAAQ,QAEvCC,EAAkBrC,EAAuB,EAAQ,QAEjDsC,EAActC,EAAuB,EAAQ,QAE7CuC,EAAc,EAAQ,OAEtBC,EAAyCxC,EAAuB,EAAQ,OAExEyC,EAAY,CAAC,eAEjB,SAASjB,EAAyBH,GAAe,GAAuB,mBAAZqB,QAAwB,OAAO,KAAM,IAAIC,EAAoB,IAAID,QAAeE,EAAmB,IAAIF,QAAW,OAAQlB,EAA2B,SAAkCH,GAAe,OAAOA,EAAcuB,EAAmBD,CAAmB,GAAGtB,EAAc,CAI9U,IAOIwB,EAA6B,WAC/B,SAASA,EAAcC,EAAGC,EAAIC,IAC5B,EAAInC,EAA0B,SAAGoC,KAAMJ,IACvC,EAAI9B,EAA0B,SAAGkC,KAAM,gBAAiB,IACxDA,KAAKC,WAAaJ,EAClBG,KAAKE,kBAAoBJ,EACzBE,KAAKG,YAAcJ,CACrB,CASS,IACDK,EAgGR,OAxGA,EAAIvC,EAAuB,SAAG+B,EAAe,CAAC,CAC5Cf,IAAK,gBACLzB,MAAO,SAAuByC,GAC5BG,KAAKC,WAAaJ,CACpB,GACC,CACDhB,IAAK,iBACLzB,OACMgD,GAAkB,EAAIzC,EAA4B,SAAiBJ,EAAsB,QAAE8C,MAAK,SAASC,EAAQC,EAASC,GAC5H,IAAIC,EAASC,EAASC,EAAiBC,EAAaC,EAAUC,EAAaC,EAAQC,EAAYC,EAC/F,OAAO1D,EAAsB,QAAE2D,MAAK,SAAkBC,GACpD,OACE,OAAQA,EAASC,KAAOD,EAASE,MAC/B,KAAK,EAIH,OAHAZ,GAAU,EAAI/C,EAA6B,SAAG6C,EAAQE,SACtDC,EAAUD,EAAQa,QAClBH,EAASE,KAAO,EACTX,EAAQa,eAEjB,KAAK,EAIH,GAHAZ,EAAkBQ,EAASK,KAGa,KAFxCZ,EAAca,KAAKC,MAAMf,IAEPgB,WAAWC,OAAe,CAC1CT,EAASE,KAAO,EAChB,KACF,CAIA,OADArB,KAAKC,WAAW4B,MAAM,IAAIC,MAAM,yCACzBX,EAASY,OAAO,SAAU7D,EAAK8D,kBAAkBC,OAAO,MAEjE,KAAK,EAGH,GAFApB,EAAWD,EAAYe,WAAW,KAE5BlB,EAAQmB,OAAS,GAAI,CACzBT,EAASE,KAAO,GAChB,KACF,CAEAP,GAAc,EAAIpD,EAA6B,SAAGmD,EAASC,aAE7D,KAAK,GACH,KAAMC,EAASN,EAAQa,SAAU,CAC/BH,EAASE,KAAO,GAChB,KACF,CAGA,OADAF,EAASE,KAAO,GACTN,EAAOQ,eAEhB,KAAK,GACHP,EAAaG,EAASK,KACtBP,EAAU,0BAA4BD,EACtCF,EAAYoB,KAAK,CACfC,YAAapB,EAAOoB,YACpBC,WAAYnB,IAEdE,EAASE,KAAO,GAChB,MAEF,KAAK,GACHR,EAASC,YAAcA,EAEzB,KAAK,GAOH,OANId,KAAKG,cACPH,KAAKqC,cAAcH,KAAKrB,GAExBb,KAAKC,WAAWoB,KAAKR,GAGhBM,EAASY,OAAO,SAAU7D,EAAK8D,kBAAkBC,OAAO,MAEjE,KAAK,GACL,IAAK,MACH,OAAOd,EAASmB,OAGxB,GAAGhC,EAASN,KACd,KAEA,SAAwBuC,EAAIC,GAC1B,OAAOpC,EAAgBqC,MAAMzC,KAAM0C,UACrC,IAID,CACD7D,IAAK,QACLzB,MAAO,WACL,IAAIuF,EAAQ3C,KAEZA,KAAKE,kBAAkB0C,WAAU,WAAa,IAC9C5C,KAAKqC,cAAcQ,SAAQ,SAAUC,GACnC,OAAOH,EAAM1C,WAAWoB,KAAKyB,EAC/B,IACA9C,KAAKqC,cAAgB,EACvB,GACC,CACDxD,IAAK,MACLzB,MAAO,WACL4C,KAAKC,WAAW8C,UAClB,KAEKnD,CACT,CAlHiC,GAoH7BoD,EAAmC,IAAIvD,QAEvCpC,EAAmC,WACrC,SAASA,EAAoB4F,GAC3B,IAAIC,EAASlD,MAEb,EAAIpC,EAA0B,SAAGoC,KAAM3C,IACvC,EAAIS,EAA0B,SAAGkC,KAAM,oBAAqB,IAAIjC,EAAiBoF,gBAAgB7D,EAAY8D,iBAAiBC,iBAC9H,EAAIvF,EAA0B,SAAGkC,KAAM,YAAa,IAEpDgD,EAAoB9D,IAAIc,KAAM,CAC5BsD,UAAU,EACVlG,WAAO,IAIT,IAAImG,EAAqBN,aAAyC,EAASA,EAAQM,wBAEjD,IAAvBA,GAAqF,mBAAxCA,EAAmBC,kBAAqF,mBAA3CD,EAAmBE,qBAAyE,iBAA5BF,EAAmBG,MACtM,EAAIjG,EAAgC,SAAGuC,KAAMgD,EAAqBO,GAElEI,EAAQC,KAAK,8LAGf5D,KAAK6D,MAAQZ,EAAQY,MACrB7D,KAAK8D,eAAsB,OAAE,WAC3BZ,EAAOhD,kBAAkBmB,KAAK/B,EAAY8D,iBAAiBW,aAC7D,IACA/D,KAAKgE,OAASf,EAAQe,OAElBf,EAAQgB,iBACVjE,KAAKiE,eAAiBhB,EAAQgB,gBAGhCjE,KAAKkE,UAAYlE,KAAKmE,YAAYlB,EAAQmB,UAC1CpE,KAAKqE,iBAAkB,EACvBrE,KAAKsE,UAAYrG,EAAYsG,WAAWtC,OAAqB,WAC3D,IAAIuC,GAAO,EAAI7G,EAA4B,SAAiBJ,EAAsB,QAAE8C,MAAK,SAASoE,EAASxE,GACzG,OAAO1C,EAAsB,QAAE2D,MAAK,SAAmBwD,GACrD,OACE,OAAQA,EAAUtD,KAAOsD,EAAUrD,MACjC,KAAK,EACH6B,EAAOyB,mBAAqB1E,EAC5BiD,EAAO0B,iBAAmB,IAAIhF,EAAcK,EAAYiD,EAAOhD,mBAAmB,WAChF,OAAOgD,EAAOmB,eAChB,IAEAnB,EAAO2B,gBAAgBC,UAEzB,KAAK,EACL,IAAK,MACH,OAAOJ,EAAUpC,OAGzB,GAAGmC,EACL,KAEA,OAAO,SAAUM,GACf,OAAOP,EAAK/B,MAAMzC,KAAM0C,UAC1B,CACF,CAxB6D,IAwBxDsC,QAELhF,KAAKiF,uBACP,CA+hBS,IACDC,EA9IAC,EAlCAC,EAhUAC,EA4lBR,OA1oBA,EAAIxH,EAAuB,SAAGR,EAAqB,CAAC,CAClDwB,IAAK,YACLzB,MAAO,SAAmBkI,GACxB,IAAIrB,EAAiBqB,EAAMrB,eACvBJ,EAAQyB,EAAMzB,MAElB,GAAI7D,KAAKE,kBAAkBqF,aAAejG,EAAY8D,iBAAiBoC,MACrE,MAAM,IAAI1D,MAAM,yBAGlB9B,KAAKiE,eAAiBA,EACtBjE,KAAK6D,MAAQA,EACb7D,KAAK6E,gBAAgBC,SACvB,GACC,CACDjG,IAAK,MACLzB,MAAO,WAEL4C,KAAK2E,mBAAmB5B,WACxB/C,KAAKE,kBAAkBmB,KAAK/B,EAAY8D,iBAAiBoC,OACzDxF,KAAKE,kBAAkB6C,WACvB/C,KAAKyF,iBAAiBC,YACxB,GACC,CACD7G,IAAK,gBACLzB,MAAO,WACL,MAAO,CACLuI,cAAe,UAAUC,OAAO5F,KAAK6D,OACrC,iBAAkB7D,KAAKkE,UAE3B,GACC,CACDrF,IAAK,cACLzB,MAAO,WACL,IAAIyI,EAAcnD,UAAUd,OAAS,QAAsBkE,IAAjBpD,UAAU,GAAmBA,UAAU,GAAK,GAClFqD,EAAc,sBAMlB,OAJIF,IACFE,GAAe,KAAKH,OAAOC,IAGtB,GAAGD,OArOU,iBAqOkB,MAAMA,OAAOG,EAAa,IAClE,GACC,CACDlH,IAAK,eACLzB,OACMiI,GAAgB,EAAI1H,EAA4B,SAAiBJ,EAAsB,QAAE8C,MAAK,SAAS2F,IACzG,IAEIC,EACAC,EACAC,EACAtC,EAGJ,OAAOtG,EAAsB,QAAE2D,MAAK,SAAmBkF,GACrD,OACE,OAAQA,EAAUhF,KAAOgF,EAAU/E,MACjC,KAAK,EAIH,OADA+E,EAAU/E,KAAO,EACVrB,KAAKqG,kBAEd,KAAK,EACHJ,EAAmB,EAErB,KAAK,EACH,KAAMA,EA/PA,GA+PqC,CACzCG,EAAU/E,KAAO,GACjB,KACF,CAIA,OAFA4E,IACAG,EAAU/E,KAAO,EACV,IAAIiF,SAAQ,SAAUC,GAC3B,OAAOC,WAAWD,EAnQTE,IAoQX,IAEF,KAAK,EAGH,OAFAL,EAAUhF,KAAO,EACjBgF,EAAU/E,KAAO,IACV,EAAIhC,EAAqB,SAAG,GAAGuG,OAAO5F,KAAKgE,OAAQ,mBAAoB,CAC5E0C,OAAQ,OACRC,QAAS3G,KAAK4G,kBAGlB,KAAK,GAGH,KAFAV,EAAME,EAAU5E,MAEPqF,GAAI,CACXT,EAAU/E,KAAO,GACjB,KACF,CAIA,OAFA4E,EAAmB,EACnBG,EAAU/E,KAAO,GACV6E,EAAIY,OAEb,KAAK,GACHX,EAAkBC,EAAU5E,KAC5BqC,EAAQsC,EAAgBtC,MACxB7D,KAAK6D,MAAQA,EACbuC,EAAU/E,KAAO,GACjB,MAEF,KAAK,GACgB,MAAf6E,EAAIa,QAAiC,MAAfb,EAAIa,QAC5BpD,EAAQ9B,MAAM,2CAA2C+D,OAAOM,EAAIa,OAAQ,KAAKnB,OAAOM,EAAIc,aAC5FhH,KAAKyF,iBAAiBC,cAEtB/B,EAAQC,KAAK,oBAAoBgC,OAAOK,EAAkB,aAAaL,OAAOM,EAAIa,OAAQ,KAAKnB,OAAOM,EAAIc,aAG9G,KAAK,GACHZ,EAAU/E,KAAO,GACjB,MAEF,KAAK,GACH+E,EAAUhF,KAAO,GACjBgF,EAAUa,GAAKb,EAAiB,MAAE,GAClCzC,EAAQC,KAAK,oBAAoBgC,OAAOK,EAAkB,yBAAyBL,OAAOQ,EAAUa,KAEtG,KAAK,GACHb,EAAU/E,KAAO,EACjB,MAEF,KAAK,GACHsC,EAAQ9B,MAAM,qBACd7B,KAAKyF,iBAAiBC,aAExB,KAAK,GACL,IAAK,MACH,OAAOU,EAAU9D,OAGzB,GAAG0D,EAAUhG,KAAM,CAAC,CAAC,EAAG,KAC1B,KAEA,WACE,OAAOqF,EAAc5C,MAAMzC,KAAM0C,UACnC,IAID,CACD7D,IAAK,eACLzB,MAAO,SAAsByD,GAC3B,IAAIqG,EAASlH,KAEb,GAAIA,KAAKE,kBAAkB9C,QAAUkC,EAAY8D,iBAAiBoC,OAASxF,KAAKE,kBAAkB9C,QAAUkC,EAAY8D,iBAAiB+D,gBACvI,OAAOlJ,EAAYsG,WAAkB,MAAE,IAAIzC,MAAM,yBAGnD,GAAsB,YAAlBjB,EAAS6C,MAAsB7C,EAASC,aAAeD,EAASC,YAAYc,OAAS,EACvF,OAAO5B,KAAKoH,2BAA2BvG,GAGzC,IAAIwG,EAAQpJ,EAAYsG,WAAWtC,OAAqB,WACtD,IAAIqF,GAAQ,EAAI3J,EAA4B,SAAiBJ,EAAsB,QAAE8C,MAAK,SAASkH,EAAStH,GAC1G,IAAIM,EAASiH,EAAMC,EAAiBC,EAAUC,EAAaC,EAE3D,OAAOrK,EAAsB,QAAE2D,MAAK,SAAmB2G,GACrD,OACE,OAAQA,EAAUzG,KAAOyG,EAAUxG,MACjC,KAAK,EAKH,OAJAd,EAAUrC,EAAK4J,iBAAiB7F,OAAO,OAAQ,gCAAkCiF,EAAOjD,eAAiB,gBACjG8D,QAAQtG,KAAKuG,UAAUnH,IAC/BgH,EAAUzG,KAAO,EACjByG,EAAUxG,KAAO,EACV6F,EAAOzB,iBAAiBwC,KAAK1H,GAEtC,KAAK,EAGH,GAA0B,OAF1BiH,EAAOK,EAAUrG,MAEN0G,WAAqB,CAC9BL,EAAUxG,KAAO,EACjB,KACF,CAEA,MAAM,IAAIS,MAAM,yBAA2B0F,EAAKU,YAElD,KAAK,EAGH,GAA0B,KAF1BT,EAAkBD,EAAK/G,QAAQmB,QAED,CAC5BiG,EAAUxG,KAAO,GACjB,KACF,CAEA,MAAM,IAAIS,MAAM,+BAAiC2F,GAEnD,KAAK,GAEH,OADAI,EAAUxG,KAAO,GACVmG,EAAK/G,QAAQ,GAAGc,eAEzB,KAAK,GAIH,OAHAmG,EAAWG,EAAUrG,KACrBmG,EAAclG,KAAKC,MAAMgG,GAAWE,EAAKD,EAAYQ,GACrDlI,EAAWoB,KAAKuG,GACTC,EAAU9F,OAAO,SAAU9B,EAAW8C,YAE/C,KAAK,GAUH,OATA8E,EAAUzG,KAAO,GACjByG,EAAUZ,GAAKY,EAAiB,MAAE,GAIlClE,EAAQC,KAAKiE,EAAUZ,IAEvBC,EAAOzB,iBAAiBC,aAEjBmC,EAAU9F,OAAO,SAAU9B,EAAW4B,MAAMgG,EAAUZ,KAE/D,KAAK,GACL,IAAK,MACH,OAAOY,EAAUvF,OAGzB,GAAGiF,EAAU,KAAM,CAAC,CAAC,EAAG,KAC1B,KAEA,OAAO,SAAUa,GACf,OAAOd,EAAM7E,MAAMzC,KAAM0C,UAC3B,CACF,CAnEwD,IAqExD,OAAO2E,CACT,GACC,CACDxI,IAAK,6BACLzB,MAAO,SAAoCiL,GACzC,IAAIC,EAAStI,KAETc,EAAcuH,EAAQvH,YACtByH,GAA4B,EAAIjL,EAAmC,SAAG+K,EAAS7I,GACnF,OAAOvB,EAAYsG,WAAWtC,QAAO,SAAUhC,GAC7C,IAAIuI,EAAkB,IACtB,EAAI7K,EAA4B,SAAiBJ,EAAsB,QAAE8C,MAAK,SAASoI,IACrF,IAAkBC,EAAKnI,EAASoI,EAAgBnB,EAAMoB,EAAsBhB,EAE5E,OAAOrK,EAAsB,QAAE2D,MAAK,SAAmB2H,GACrD,OACE,OAAQA,EAAUzH,KAAOyH,EAAUxH,MACjC,KAAK,EAGH,OAFAwH,EAAUzH,KAAO,EACjByH,EAAUxH,KAAO,EACViF,QAAQwC,IAAIhI,EAAYiI,IAAkB,WAC/C,IAAIC,GAAQ,EAAIrL,EAA4B,SAAiBJ,EAAsB,QAAE8C,MAAK,SAAS4I,EAASjI,GAC1G,IAAIkI,EAAOhD,EACX,OAAO3I,EAAsB,QAAE2D,MAAK,SAAmBiI,GACrD,OACE,OAAQA,EAAU/H,KAAO+H,EAAU9H,MACjC,KAAK,EAGH,OAFA6H,EAAQlI,EACRmI,EAAU9H,KAAO,GACV,EAAIhC,EAAqB,SAAG6J,EAAM9G,YAE3C,KAAK,EAGH,KAFA8D,EAAMiD,EAAU3H,MAEPqF,GAAI,CACXsC,EAAU9H,KAAO,GACjB,KACF,CAGA,OADA8H,EAAU9H,KAAO,EACV6E,EAAIkD,cAEb,KAAK,EAGH,OAFAD,EAAUlC,GAAKkC,EAAU3H,KACzB2H,EAAUE,GAAKH,EACRC,EAAUpH,OAAO,SAAU,CAChCqH,YAAaD,EAAUlC,GACvBiC,MAAOC,EAAUE,KAGrB,KAAK,GACH,MAAM,IAAIvH,MAAM,OAElB,KAAK,GACL,IAAK,MACH,OAAOqH,EAAU7G,OAGzB,GAAG2G,EACL,KAEA,OAAO,SAAUK,GACf,OAAON,EAAMvG,MAAMzC,KAAM0C,UAC3B,CACF,CA5CiD,KA8CnD,KAAK,EA4BH,OA3BemG,EAAUrH,KACZqB,SAAQ,SAAU0G,GAC7B,IAAIH,EAAcG,EAAMH,YACpBF,EAAQK,EAAML,MAEdM,EAASxL,EAAQyL,OAAOC,KAAKN,GAE7BrI,EAAS,IAAI7C,EAAKyL,mBACtB5I,EAAO6I,MAAMJ,GACb,IAAIK,EAAc,IAAI3L,EAAK4L,YAAY,CACrCpG,KAAMwF,EAAM/G,YACZ4H,cAAeP,EAAO5H,QACrBb,GACHyH,EAAgBtG,KAAK2H,EACvB,IACAnB,EAAM,gCAAgC9C,OAAO0C,EAAOrE,eAAgB,WAAW2B,OAAO2C,EAA0BmB,KAAK9B,GAAI,WACzHrH,EAAUrC,EAAK4J,iBAAiB7F,OAAO,MAAOyG,IAC9CC,EAAiB,IAAIzK,EAAKyL,oBACXC,MAAMnI,KAAKuG,UAAUO,GAA4B,SAChEhI,EAAQyJ,UAAU,IAAI9L,EAAK4L,YAAY,CACrCpG,KAAM,qCACNqG,cAAepB,EAAe/G,QAC7B+G,IACHH,EAAgB3F,SAAQ,SAAUoH,GAChC,OAAO1J,EAAQyJ,UAAUC,EAC3B,IACApB,EAAUxH,KAAO,GACViH,EAAO7C,iBAAiBwC,KAAK1H,GAEtC,KAAK,GAGH,KAFAiH,EAAOqB,EAAUrH,MAENf,SAAmC,IAAxB+G,EAAK/G,QAAQmB,OAAe,CAChDiH,EAAUxH,KAAO,GACjB,KACF,CAEApB,EAAW4B,MAAM,IAAIC,MAAM,wBAAwB8D,OAAO4B,EAAK/G,QAAQmB,UACvEiH,EAAUxH,KAAO,GACjB,MAEF,KAAK,GAEH,OADAwH,EAAUxH,KAAO,GACVmG,EAAK/G,QAAQ,GAAGyJ,aAEzB,KAAK,GACHtB,EAAuBC,EAAUrH,KACjCoG,EAAKgB,EAAqBT,GAC1BlI,EAAWoB,KAAKuG,GAChB3H,EAAW8C,WAEb,KAAK,GACH8F,EAAUxH,KAAO,GACjB,MAEF,KAAK,GACHwH,EAAUzH,KAAO,GACjByH,EAAU5B,GAAK4B,EAAiB,MAAE,GAClC5I,EAAW4B,MAAMgH,EAAU5B,IAE7B,KAAK,GACL,IAAK,MACH,OAAO4B,EAAUvG,OAGzB,GAAGmG,EAAU,KAAM,CAAC,CAAC,EAAG,KAC1B,IA1HA,EA2HF,GACF,GACC,CACD5J,IAAK,kBACLzB,OACMgI,GAAmB,EAAIzH,EAA4B,SAAiBJ,EAAsB,QAAE8C,MAAK,SAAS8J,IAC5G,IAAIC,EAASpK,KAEb,OAAOzC,EAAsB,QAAE2D,MAAK,SAAmBmJ,GACrD,OACE,OAAQA,EAAUjJ,KAAOiJ,EAAUhJ,MACjC,KAAK,EACH,OAAOgJ,EAAUtI,OAAO,SAAU,IAAIuE,SAAQ,SAAUxB,EAASwF,GAC/DF,EAAOlK,kBAAkB0C,WAAU,SAAU2H,GAC3C,GAAIA,IAAOjL,EAAY8D,iBAAiBoH,OACtC,OAAO1F,GAEX,IAAG,SAAUmF,GACX,OAAOK,EAAOL,EAChB,GACF,KAEF,KAAK,EACL,IAAK,MACH,OAAOI,EAAU/H,OAGzB,GAAG6H,EACL,KAEA,WACE,OAAO/E,EAAiB3C,MAAMzC,KAAM0C,UACtC,IAID,CACD7D,IAAK,eACLzB,OACM+H,GAAgB,EAAIxH,EAA4B,SAAiBJ,EAAsB,QAAE8C,MAAK,SAASoK,IACzG,IAEIC,EAAIC,EAAQC,EAAiBC,EAAiBC,EAF9CC,EAAS/K,KAGb,OAAOzC,EAAsB,QAAE2D,MAAK,SAAmB8J,GACrD,OACE,OAAQA,EAAU5J,KAAO4J,EAAU3J,MACjC,KAAK,EAGH,IAFAqJ,EAAK,IAAIO,OAAO,cAETC,KAAKlL,KAAKgE,QAAS,CACxBgH,EAAU3J,KAAO,EACjB,KACF,CAEA,KAAM,uCAER,KAAK,EAaH,OAZAsJ,EAAS,CACP9G,MAAO7D,KAAK6D,OAGV7D,KAAKiE,iBACP0G,EAAuB,eAAI3K,KAAKiE,gBAGlC2G,EAAkB,IAAIO,gBACtBN,EAAkB,IAAIO,gBAAgBT,GAAQU,WAC9CP,EAAQ,GAAGlF,OAAO5F,KAAKgE,OAAOsH,QAAQZ,EAAI,QAAS,2BAA2B9E,OAAOiF,GAE9EG,EAAUjJ,OAAO,SAAU,IAAIuE,QAAsB,WAC1D,IAAIiF,GAAQ,EAAI5N,EAA4B,SAAiBJ,EAAsB,QAAE8C,MAAK,SAASmL,EAAS1G,EAASwF,GACnH,IAAI/J,EAASkL,EAAUC,EAAgBC,EACvC,OAAOpO,EAAsB,QAAE2D,MAAK,SAAmB0K,GACrD,OACE,OAAQA,EAAUxK,KAAOwK,EAAUvK,MACjC,KAAK,EAoBH,OAnBAuK,EAAUxK,KAAO,EACjB2J,EAAOtF,iBAAmB,IAAIlG,EAAgD,QAAE,CAC9EsM,qBAAsB/G,EACtBvB,oBAAoB,EAAI/F,EAAgC,SAAGuN,EAAQ/H,GACnE8I,eAAgB,CACdC,eAAgB,SAAwBC,GAGtC,GAAIpB,EAAgBqB,OAAOC,QACzB,MAAM,IAAIpK,MAAM,mFAGlB,OAAOiJ,EAAOnG,iBAAiBmH,eAAeC,EAChD,GAEFtD,IAAKoC,IAEPC,EAAO1G,iBAAkB,EACzBuH,EAAUvK,KAAO,EACV0J,EAAOtF,iBAAiB0G,UAEjC,KAAK,EAGH,OAFA5L,EAAUrC,EAAK4J,iBAAiB7F,OAAO,OAAQ,gCAC/C2J,EAAUvK,KAAO,EACV0J,EAAOtF,iBAAiBwC,KAAK1H,GAEtC,KAAK,EAGH,GAA8B,OAF9BkL,EAAWG,EAAUpK,MAEN0G,WAAqB,CAClC0D,EAAUvK,KAAO,GACjB,KACF,CAEA,MAAM,IAAIS,MAAM,4BAA8B2J,EAASvD,YAEzD,KAAK,GACH,GAAkC,IAA5BuD,EAAShL,QAAQmB,OAAe,CACpCgK,EAAUvK,KAAO,GACjB,KACF,CAEA,MAAM,IAAIS,MAAM,6BAA+B2J,EAAShL,QAAQmB,QAElE,KAAK,GAEH,OADAgK,EAAUvK,KAAO,GACVoK,EAAShL,QAAQ,GAAGc,eAE7B,KAAK,GAWH,OAVAmK,EAAiBE,EAAUpK,KAC3BmK,EAAelK,KAAKC,MAAMgK,GAC1BX,EAAO9G,eAAiB0H,EAAa1H,eAErC8G,EAAO7K,kBAAkBmB,KAAK/B,EAAY8D,iBAAiBoH,QAK3DoB,EAAUvK,KAAO,GACV0J,EAAO1E,kBAEhB,KAAK,GACH0E,EAAOnG,iBAAiBwH,QAExBrB,EAAO1G,iBAAkB,EACzBuH,EAAUvK,KAAO,GACjB,MAEF,KAAK,GACHuK,EAAUxK,KAAO,GACjBwK,EAAU3E,GAAK2E,EAAiB,MAAE,GAClCtB,EAAOsB,EAAU3E,IAEnB,KAAK,GACL,IAAK,MACH,OAAO2E,EAAUtJ,OAGzB,GAAGkJ,EAAU,KAAM,CAAC,CAAC,EAAG,KAC1B,KAEA,OAAO,SAAUa,EAAKC,GACpB,OAAOf,EAAM9I,MAAMzC,KAAM0C,UAC3B,CACF,CA3F4D,IA2F9C,SAAE,WACd,OAAOkI,EAAgB2B,OACzB,KAEF,KAAK,EACL,IAAK,MACH,OAAOvB,EAAU1I,OAGzB,GAAGmI,EAAUzK,KACf,KAEA,WACE,OAAOmF,EAAc1C,MAAMzC,KAAM0C,UACnC,IAID,CACD7D,IAAK,wBACLzB,OACM8H,GAAyB,EAAIvH,EAA4B,SAAiBJ,EAAsB,QAAE8C,MAAK,SAASmM,IAClH,IAEIC,EAAYC,EAFZC,EAAS3M,KAGb,OAAOzC,EAAsB,QAAE2D,MAAK,SAAoB0L,GACtD,OACE,OAAQA,EAAWxL,KAAOwL,EAAWvL,MACnC,KAAK,EAEH,OADAuL,EAAWvL,KAAO,GACVrB,KAAK6E,iBAAkB,EAAIzF,EAAyB,YAAMyN,QAEpE,KAAK,EACHJ,EAruBM,EAsuBNzM,KAAKE,kBAAkBmB,KAAK/B,EAAY8D,iBAAiB0J,YAE3D,KAAK,EACH,KAAML,EAAa,GAAI,CACrBG,EAAWvL,KAAO,GAClB,KACF,CAMA,OAJAoL,IACAC,EAAQK,KAAKC,MACbJ,EAAWxL,KAAO,EAClBwL,EAAWvL,KAAO,GACXrB,KAAKiN,eAEd,KAAK,GACHL,EAAWvL,KAAO,GAClB,MAEF,KAAK,GACHuL,EAAWxL,KAAO,GAClBwL,EAAW3F,GAAK2F,EAAkB,MAAE,GACpCjJ,EAAQ9B,MAAM+K,EAAW3F,IAE3B,KAAK,GACH,GAAMjH,KAAKE,kBAAkBqF,aAAejG,EAAY8D,iBAAiBoC,MAAQ,CAC/EoH,EAAWvL,KAAO,GAClB,KACF,CAEA,OAAOuL,EAAW7K,OAAO,UAE3B,KAAK,GAUH,GAPI/B,KAAKE,kBAAkBqF,aAAejG,EAAY8D,iBAAiB0J,YACrE9M,KAAKE,kBAAkBmB,KAAK/B,EAAY8D,iBAAiB0J,cAMrD,IAAQC,KAAKC,MAAQN,GAAQ,CACjCE,EAAWvL,KAAO,GAClB,KACF,CAEAoL,EApxBM,EAqxBNG,EAAWvL,KAAO,GAClB,MAEF,KAAK,GACH,KAAMoL,EAAa,GAAI,CACrBG,EAAWvL,KAAO,GAClB,KACF,CAGA,OADAuL,EAAWvL,KAAO,GACX,IAAIiF,SAAQ,SAAUC,GAC3B,OAAOC,WAAWD,EAAGoG,EAAOO,gBAC9B,IAEF,KAAK,GACHN,EAAWvL,KAAO,EAClB,MAEF,KAAK,GAGHrB,KAAKE,kBAAkBmB,KAAK/B,EAAY8D,iBAAiB+D,iBAE3D,KAAK,GACHyF,EAAWvL,KAAO,EAClB,MAEF,KAAK,GACL,IAAK,MACH,OAAOuL,EAAWtK,OAG1B,GAAGkK,EAAWxM,KAAM,CAAC,CAAC,EAAG,KAC3B,KAEA,WACE,OAAOkF,EAAuBzC,MAAMzC,KAAM0C,UAC5C,IAKD,CACD7D,IAAK,gBACLzB,MAAO,WACL,OAAO+P,KAAKC,MAAM,IAAuB,KAAhBD,KAAKE,SAChC,KAEKhQ,CACT,CA1sBuC,GA4sBvCF,EAAQE,oBAAsBA,8CC13B1BN,EAAyB,EAAQ,OAErCE,OAAOC,eAAeC,EAAS,aAAc,CAC3CC,OAAO,IAETD,EAAiB,aAAI,EAErB,IAAIS,EAAmBb,EAAuB,EAAQ,QAElDc,EAAgBd,EAAuB,EAAQ,QAE/CuQ,EAA0BvQ,EAAuB,EAAQ,QAEzDwQ,EAAQxQ,EAAuB,EAAQ,QAEvCyQ,EAAazQ,EAAuB,EAAQ,QAE5C0Q,EAA8B1Q,EAAuB,EAAQ,OAE7D2Q,EAAmB3Q,EAAuB,EAAQ,QAElD4Q,EAAyB5Q,EAAuB,EAAQ,QAExDU,EAAyBV,EAAuB,EAAQ,OAExD6Q,EAAyB,EAAQ,OAErC,SAASC,EAAaC,GAAW,IAAIC,EAErC,WAAuC,GAAuB,oBAAZC,UAA4BA,QAAQC,UAAW,OAAO,EAAO,GAAID,QAAQC,UAAUC,KAAM,OAAO,EAAO,GAAqB,mBAAVC,MAAsB,OAAO,EAAM,IAAsF,OAAhFC,QAAQtP,UAAUuP,QAAQrP,KAAKgP,QAAQC,UAAUG,QAAS,IAAI,WAAa,MAAY,CAAM,CAAE,MAAOnE,GAAK,OAAO,CAAO,CAAE,CAFvQqE,GAA6B,OAAO,WAAkC,IAAuDC,EAAnDC,GAAQ,EAAId,EAA0B,SAAGI,GAAkB,GAAIC,EAA2B,CAAE,IAAIU,GAAY,EAAIf,EAA0B,SAAG1N,MAAM0O,YAAaH,EAASP,QAAQC,UAAUO,EAAO9L,UAAW+L,EAAY,MAASF,EAASC,EAAM/L,MAAMzC,KAAM0C,WAAc,OAAO,EAAI+K,EAAqC,SAAGzN,KAAMuO,EAAS,CAAG,CAI3d,IAAII,EAA8B,IAAIlP,QAElCmP,EAA+C,IAAInP,QAEnDoP,EAA8C,IAAIpP,QAElDuD,EAAmC,IAAIvD,QAEvCqP,EAAqD,SAAUC,IACjE,EAAIvB,EAAoB,SAAGsB,EAAuCC,GAElE,IAAIC,EAASnB,EAAaiB,GAE1B,SAASA,EAAsCtK,GAC7C,IAAI7B,EAEAkJ,EAAuBrH,EAAKqH,qBAC5BtI,EAAqBiB,EAAKjB,mBAC1BuI,EAAiBtH,EAAKsH,eACtBpD,EAAMlE,EAAKkE,IA+Bf,OA9BA,EAAI9K,EAA0B,SAAGoC,KAAM8O,GACvCnM,EAAQqM,EAAOhQ,KAAKgB,KAAM,CACxB6L,qBAAsBA,EACtBC,eAAgBA,EAChBpD,IAAKA,IAGPiG,EAAezP,KAAI,EAAIoO,EAAiC,SAAG3K,GAAQ,CACjEW,UAAU,EACVlG,OAAO,IAGTwR,EAAgC1P,KAAI,EAAIoO,EAAiC,SAAG3K,GAAQ,CAClFW,UAAU,EACVlG,MAAO,WACL,OAAO,EAAIuQ,EAAgC,UAAG,EAAIL,EAAiC,SAAG3K,GAAQkM,MAAoC,EAAIlB,EAAgC,UAAG,EAAIL,EAAiC,SAAG3K,GAAQK,GAAqBU,MAAQf,EAAM+C,YAC9P,IAGFmJ,EAA+B3P,KAAI,EAAIoO,EAAiC,SAAG3K,GAAQ,CACjFW,UAAU,EACVlG,WAAO,IAGT4F,EAAoB9D,KAAI,EAAIoO,EAAiC,SAAG3K,GAAQ,CACtEW,UAAU,EACVlG,WAAO,KAGT,EAAIK,EAAgC,UAAG,EAAI6P,EAAiC,SAAG3K,GAAQK,EAAqBO,GACrGZ,CACT,CAyCA,OAvCA,EAAI9E,EAAuB,SAAGiR,EAAuC,CAAC,CACpEjQ,IAAK,UACLzB,MAIA,WACE,IAAI,EAAIuQ,EAAgC,SAAG3N,KAAM2O,GAE/C,OADAhL,EAAQC,KAAK,iEACN0C,QAAQxB,UAKjB,IAFA,EAAIrH,EAAgC,SAAGuC,KAAM2O,GAAgB,IAEzD,EAAIhB,EAAgC,SAAG3N,KAAMgD,GAAsB,CACrE,IACIiM,GADyB,EAAItB,EAAgC,SAAG3N,KAAMgD,GACjCU,KAIzC,IAFA,EAAIjG,EAAgC,SAAGuC,KAAM6O,EAAgCI,GAEzD,SAAhBA,EAEF,OADAtL,EAAQC,KAAK,+DACN0C,QAAQgE,OAAO,IAAIxI,MAAM,iEAGlC,EAAI6L,EAAgC,SAAG3N,KAAMgD,GAAqBQ,iBAAiB,UAAU,EAAImK,EAAgC,SAAG3N,KAAM4O,GAC5I,CAEA,OAAO,EAAIrB,EAAe,UAAG,EAAIG,EAA0B,SAAGoB,EAAsChQ,WAAY,UAAWkB,MAAMhB,KAAKgB,KACxI,GACC,CACDnB,IAAK,aACLzB,MAAO,WACL,IAAI8R,EAE6F,QAAhGA,GAAyB,EAAIvB,EAAgC,SAAG3N,KAAMgD,UAA6D,IAA3BkM,GAA6CA,EAAuBzL,oBAAoB,UAAU,EAAIkK,EAAgC,SAAG3N,KAAM4O,KACxP,EAAIrB,EAAe,UAAG,EAAIG,EAA0B,SAAGoB,EAAsChQ,WAAY,aAAckB,MAAMhB,KAAKgB,KACpI,KAEK8O,CACT,CArFyD,CAqFvDlB,EAAuBuB,iBAEzBhS,EAAiB,QAAI2R,kCChImDM,EAAOjS,QAA6R,WAAY,SAASoJ,EAAE0D,EAAEoF,EAAEC,GAAG,SAASC,EAAEC,EAAEC,GAAG,IAAIJ,EAAEG,GAAG,CAAC,IAAIvF,EAAEuF,GAAG,CAAmE,GAAGE,EAAE,OAAOA,EAAEF,GAAE,GAAI,IAAI1M,EAAE,IAAIhB,MAAM,uBAAuB0N,EAAE,KAAK,MAAM1M,EAAE6M,KAAK,mBAAmB7M,CAAC,CAAC,IAAI8M,EAAEP,EAAEG,GAAG,CAACrS,QAAQ,CAAC,GAAG8M,EAAEuF,GAAG,GAAGxQ,KAAK4Q,EAAEzS,SAAQ,SAASoJ,GAAoB,OAAOgJ,EAAlBtF,EAAEuF,GAAG,GAAGjJ,IAAeA,EAAE,GAAEqJ,EAAEA,EAAEzS,QAAQoJ,EAAE0D,EAAEoF,EAAEC,EAAE,CAAC,OAAOD,EAAEG,GAAGrS,OAAO,CAAC,IAAI,IAAIuS,OAAE,EAAoCF,EAAE,EAAEA,EAAEF,EAAE1N,OAAO4N,IAAID,EAAED,EAAEE,IAAI,OAAOD,CAAC,CAAC,OAAOhJ,CAAE,CAAxc,GAA4c,CAAC,EAAE,CAAC,SAASsJ,EAAQT,EAAOjS,GACp1B,aAQA,IAAI2S,EAAa9P,MAAQA,KAAK8P,WAAc,SAAUC,EAASC,EAAYC,EAAGC,GAC1E,SAASC,EAAM/S,GAAS,OAAOA,aAAiB6S,EAAI7S,EAAQ,IAAI6S,GAAE,SAAUnL,GAAWA,EAAQ1H,EAAQ,GAAI,CAC3G,OAAO,IAAK6S,IAAMA,EAAI3J,WAAU,SAAUxB,EAASwF,GAC/C,SAAS8F,EAAUhT,GAAS,IAAMiT,EAAKH,EAAU7O,KAAKjE,GAAS,CAAE,MAAO6M,GAAKK,EAAOL,EAAI,CAAE,CAC1F,SAASqG,EAASlT,GAAS,IAAMiT,EAAKH,EAAiB,MAAE9S,GAAS,CAAE,MAAO6M,GAAKK,EAAOL,EAAI,CAAE,CAC7F,SAASoG,EAAK9B,GAAUA,EAAOgC,KAAOzL,EAAQyJ,EAAOnR,OAAS+S,EAAM5B,EAAOnR,OAAOoT,KAAKJ,EAAWE,EAAW,CAC7GD,GAAMH,EAAYA,EAAUzN,MAAMsN,EAASC,GAAc,KAAK3O,OAClE,GACJ,EACIoP,EAAezQ,MAAQA,KAAKyQ,aAAgB,SAAUV,EAASW,GAC/D,IAAsGjB,EAAGkB,EAAGrB,EAAGsB,EAA3GC,EAAI,CAAEC,MAAO,EAAGtP,KAAM,WAAa,GAAW,EAAP8N,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,EAAI,EAAGyB,KAAM,GAAIC,IAAK,IAChG,OAAOJ,EAAI,CAAEvP,KAAM4P,EAAK,GAAI,MAASA,EAAK,GAAI,OAAUA,EAAK,IAAwB,mBAAXC,SAA0BN,EAAEM,OAAOC,UAAY,WAAa,OAAOnR,IAAM,GAAI4Q,EACvJ,SAASK,EAAK5B,GAAK,OAAO,SAAU+B,GAAK,OAAOf,EAAK,CAAChB,EAAG+B,GAAK,CAAG,CACjE,SAASf,EAAKgB,GACV,GAAI5B,EAAG,MAAM,IAAI6B,UAAU,mCAC3B,KAAOV,IAAMA,EAAI,EAAGS,EAAG,KAAOR,EAAI,IAAKA,OACnC,GAAIpB,EAAI,EAAGkB,IAAMrB,EAAY,EAAR+B,EAAG,GAASV,EAAU,OAAIU,EAAG,GAAKV,EAAS,SAAOrB,EAAIqB,EAAU,SAAMrB,EAAEtQ,KAAK2R,GAAI,GAAKA,EAAEtP,SAAWiO,EAAIA,EAAEtQ,KAAK2R,EAAGU,EAAG,KAAKd,KAAM,OAAOjB,EAE3J,OADIqB,EAAI,EAAGrB,IAAG+B,EAAK,CAAS,EAARA,EAAG,GAAQ/B,EAAElS,QACzBiU,EAAG,IACP,KAAK,EAAG,KAAK,EAAG/B,EAAI+B,EAAI,MACxB,KAAK,EAAc,OAAXR,EAAEC,QAAgB,CAAE1T,MAAOiU,EAAG,GAAId,MAAM,GAChD,KAAK,EAAGM,EAAEC,QAASH,EAAIU,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKR,EAAEG,IAAIO,MAAOV,EAAEE,KAAKQ,MAAO,SACxC,QACI,MAAkBjC,GAAZA,EAAIuB,EAAEE,MAAYnP,OAAS,GAAK0N,EAAEA,EAAE1N,OAAS,KAAkB,IAAVyP,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAER,EAAI,EAAG,QAAU,CAC3G,GAAc,IAAVQ,EAAG,MAAc/B,GAAM+B,EAAG,GAAK/B,EAAE,IAAM+B,EAAG,GAAK/B,EAAE,IAAM,CAAEuB,EAAEC,MAAQO,EAAG,GAAI,KAAO,CACrF,GAAc,IAAVA,EAAG,IAAYR,EAAEC,MAAQxB,EAAE,GAAI,CAAEuB,EAAEC,MAAQxB,EAAE,GAAIA,EAAI+B,EAAI,KAAO,CACpE,GAAI/B,GAAKuB,EAAEC,MAAQxB,EAAE,GAAI,CAAEuB,EAAEC,MAAQxB,EAAE,GAAIuB,EAAEG,IAAI9O,KAAKmP,GAAK,KAAO,CAC9D/B,EAAE,IAAIuB,EAAEG,IAAIO,MAChBV,EAAEE,KAAKQ,MAAO,SAEtBF,EAAKX,EAAK1R,KAAK+Q,EAASc,EAC5B,CAAE,MAAO5G,GAAKoH,EAAK,CAAC,EAAGpH,GAAI0G,EAAI,CAAG,CAAE,QAAUlB,EAAIH,EAAI,CAAG,CACzD,GAAY,EAAR+B,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAEjU,MAAOiU,EAAG,GAAKA,EAAG,QAAK,EAAQd,MAAM,EAC9E,CACJ,EACAtT,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQqU,sBAAmB,EAC3B,IAAIC,EAAuB5B,EAAQ,yBAC/B6B,EAAa7B,EAAQ,eACrB8B,EAAkB9B,EAAQ,oBAM1B2B,EAAkC,WAOlC,SAASA,EAAiBI,EAAejH,GAarC,GAZA3K,KAAK4R,cAAgBA,EACrB5R,KAAK6R,eAAiB,MACtB7R,KAAK8R,KAAO,OACRnH,EAAOoH,QACP/R,KAAK4H,GAAK+C,EAAOoH,OAAOnK,GACxB5H,KAAKgS,YAAcrH,EAAOoH,OAAOC,YACjChS,KAAK+J,cAAgBY,EAAOoH,OAAOE,cACnCjS,KAAKkS,IAAMvH,EAAOoH,OAAOG,KAGzBlS,KAAK4H,GAAK+C,EAAO/C,IAEhB5H,KAAK4H,GACN,MAAM9F,MAAM,sDAEhB9B,KAAKmS,aAAexH,EAAOyH,WAC/B,CAwIA,OAlIAZ,EAAiB1S,UAAUuT,iBAAmB,WAI1C,OAHKrS,KAAKe,SACNf,KAAKe,OAASf,KAAKsS,uBAEhBtS,KAAKe,MAChB,EAQAyQ,EAAiB1S,UAAUyT,UAAY,SAAUR,EAAQhR,EAAQyR,GAC7DxS,KAAKkS,IAAMH,EAAOG,IACdH,EAAOC,cAAgBN,EAAWe,aAAahH,UAAYsG,EAAOC,cAAgBN,EAAWe,aAAalS,QAC1GP,KAAK0S,QAAQ3R,GAAQyP,OAAOmC,QAEvBZ,EAAOG,KACZnR,EAAOmR,KAEf,EAIAV,EAAiB1S,UAAU8T,MAAQ,WAC/B5S,KAAK4R,cAAciB,YAAY7S,KAAK4H,GACxC,EAMA4J,EAAiB1S,UAAUwT,oBAAsB,WAC7C,OAAO,IAAIb,EAAqB9H,kBACpC,EACA6H,EAAiB1S,UAAUgU,gBAAkB,SAAUhM,GACnD,OAAOrF,KAAKC,MAAMoF,EAAKiM,WAAW,KAAO/S,KAAK6R,eAAiB/K,EAAKkM,MAAM,GAAKlM,EACnF,EACA0K,EAAiB1S,UAAUmU,SAAW,SAAUC,GAC5C,OAAOA,EAAMH,WAAW,KAAO/S,KAAK6R,eAAiBqB,EAAMF,MAAM,GAAKE,CAC1E,EACA1B,EAAiB1S,UAAU4T,QAAU,SAAU3R,GAC3C,OAAO+O,EAAU9P,UAAM,OAAQ,GAAQ,WACnC,IAAImT,EAAYC,EAChB,OAAO3C,EAAYzQ,MAAM,SAAUqT,GAC/B,OAAQA,EAAGvC,OACP,KAAK,EAED,OADAqC,EAAapS,EAAOuS,KAAKvS,EAAOa,UAIhCwR,EAAqBD,EAAW9H,SAASrL,KAAK8R,MACxC9R,KAAKgS,cAAgBN,EAAWe,aAAalS,QAAiB,CAAC,EAAa,GAC3E,CAAC,EAAaP,KAAK+L,eAAeqH,KAJ9B,CAAC,GAKhB,KAAK,EAED,OADAC,EAAG7R,OACI,CAAC,EAAa,GACzB,KAAK,EACD,OAAMxB,KAAKgS,cAAgBN,EAAWe,aAAahH,SAAkB,CAAC,EAAa,GAC5E,CAAC,EAAazL,KAAKuT,gBAAgBH,IAC9C,KAAK,EACDC,EAAG7R,OACH6R,EAAGvC,MAAQ,EACf,KAAK,EAAG,MAAO,CAAC,GAExB,GACJ,GACJ,EACAU,EAAiB1S,UAAUyU,gBAAkB,SAAUH,GACnD,OAAOtD,EAAU9P,UAAM,OAAQ,GAAQ,WACnC,IAAIwT,EAAiBC,EACrB,OAAOhD,EAAYzQ,MAAM,SAAUqT,GAC/B,OAAQA,EAAGvC,OACP,KAAK,EAGD,OAFA0C,EAAkBxT,KAAK8S,gBAAgB9S,KAAKiT,SAASG,IACrDK,EAAkB,CAAEhT,QAAS,GAAIyH,WAAYsL,EAAgBtL,YACtD,CAAC,EAAalI,KAAK0T,eAAeF,EAAiBC,IAC9D,KAAK,EAED,OADAJ,EAAG7R,OACI,CAAC,GAEpB,GACJ,GACJ,EACAgQ,EAAiB1S,UAAUiN,eAAiB,SAAUqH,GAClD,OAAOtD,EAAU9P,UAAM,OAAQ,GAAQ,WACnC,IAAI2T,EAAgBC,EACpB,OAAOnD,EAAYzQ,MAAM,SAAUqT,GAC/B,OAAQA,EAAGvC,OACP,KAAK,EAGD,OAFA6C,EAAiB3T,KAAK8S,gBAAgBM,GACtCQ,EAAiB,CAAEnT,QAAS,GAAIoT,KAAMF,EAAeE,KAAM5C,KAAM0C,EAAe1C,MACzE,CAAC,EAAajR,KAAK0T,eAAeC,EAAgBC,IAC7D,KAAK,EAED,OADAP,EAAG7R,OACI,CAAC,GAEpB,GACJ,GACJ,EACAgQ,EAAiB1S,UAAU4U,eAAiB,SAAUF,EAAiBC,GACnE,IAAIJ,EACJ,OAAOvD,EAAU9P,UAAM,OAAQ,GAAQ,WACnC,IAAI2C,EAAQ3C,KACZ,OAAOyQ,EAAYzQ,MAAM,SAAU8T,GAC/B,OAAQA,EAAGhD,OACP,KAAK,EAeD,OAdmC,QAAlCuC,EAAKG,EAAgB/S,eAA4B,IAAP4S,GAAyBA,EAAGxQ,SAAQ,SAAUkR,GACrF,IAAIV,EAOAlR,EAA6C,QAA9BkR,EAAKU,EAAerQ,YAAyB,IAAP2P,EAAgBA,EAAKU,EAAe5R,YACzF6R,EAAmBrR,EAAMiP,cAAcqC,oBAAoBF,EAAenM,IAC9EoM,EAAiBhC,YAAc7P,EAC/B6R,EAAiBjK,cAAgBgK,EAAenS,OAChD6R,EAAgBhT,QAAQyB,KAAK,IAAIyP,EAAgBuC,cAAcH,EAAenM,GAAIoM,GACtF,IACO,CAAC,EAAahU,KAAKmS,aAAanS,KAAK4H,GAAI6L,IACpD,KAAK,EAED,OADAK,EAAGtS,OACI,CAAC,GAEpB,GACJ,GACJ,EACOgQ,CACX,CAjKqC,GAkKrCrU,EAAQqU,iBAAmBA,CAE3B,EAAE,CAAC,mBAAmB,EAAE,cAAc,GAAG,wBAAwB,KAAK,EAAE,CAAC,SAAS3B,EAAQT,EAAOjS,GACjG,aAQA,IAAI2S,EAAa9P,MAAQA,KAAK8P,WAAc,SAAUC,EAASC,EAAYC,EAAGC,GAC1E,SAASC,EAAM/S,GAAS,OAAOA,aAAiB6S,EAAI7S,EAAQ,IAAI6S,GAAE,SAAUnL,GAAWA,EAAQ1H,EAAQ,GAAI,CAC3G,OAAO,IAAK6S,IAAMA,EAAI3J,WAAU,SAAUxB,EAASwF,GAC/C,SAAS8F,EAAUhT,GAAS,IAAMiT,EAAKH,EAAU7O,KAAKjE,GAAS,CAAE,MAAO6M,GAAKK,EAAOL,EAAI,CAAE,CAC1F,SAASqG,EAASlT,GAAS,IAAMiT,EAAKH,EAAiB,MAAE9S,GAAS,CAAE,MAAO6M,GAAKK,EAAOL,EAAI,CAAE,CAC7F,SAASoG,EAAK9B,GAAUA,EAAOgC,KAAOzL,EAAQyJ,EAAOnR,OAAS+S,EAAM5B,EAAOnR,OAAOoT,KAAKJ,EAAWE,EAAW,CAC7GD,GAAMH,EAAYA,EAAUzN,MAAMsN,EAASC,GAAc,KAAK3O,OAClE,GACJ,EACIoP,EAAezQ,MAAQA,KAAKyQ,aAAgB,SAAUV,EAASW,GAC/D,IAAsGjB,EAAGkB,EAAGrB,EAAGsB,EAA3GC,EAAI,CAAEC,MAAO,EAAGtP,KAAM,WAAa,GAAW,EAAP8N,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,EAAI,EAAGyB,KAAM,GAAIC,IAAK,IAChG,OAAOJ,EAAI,CAAEvP,KAAM4P,EAAK,GAAI,MAASA,EAAK,GAAI,OAAUA,EAAK,IAAwB,mBAAXC,SAA0BN,EAAEM,OAAOC,UAAY,WAAa,OAAOnR,IAAM,GAAI4Q,EACvJ,SAASK,EAAK5B,GAAK,OAAO,SAAU+B,GAAK,OAAOf,EAAK,CAAChB,EAAG+B,GAAK,CAAG,CACjE,SAASf,EAAKgB,GACV,GAAI5B,EAAG,MAAM,IAAI6B,UAAU,mCAC3B,KAAOV,IAAMA,EAAI,EAAGS,EAAG,KAAOR,EAAI,IAAKA,OACnC,GAAIpB,EAAI,EAAGkB,IAAMrB,EAAY,EAAR+B,EAAG,GAASV,EAAU,OAAIU,EAAG,GAAKV,EAAS,SAAOrB,EAAIqB,EAAU,SAAMrB,EAAEtQ,KAAK2R,GAAI,GAAKA,EAAEtP,SAAWiO,EAAIA,EAAEtQ,KAAK2R,EAAGU,EAAG,KAAKd,KAAM,OAAOjB,EAE3J,OADIqB,EAAI,EAAGrB,IAAG+B,EAAK,CAAS,EAARA,EAAG,GAAQ/B,EAAElS,QACzBiU,EAAG,IACP,KAAK,EAAG,KAAK,EAAG/B,EAAI+B,EAAI,MACxB,KAAK,EAAc,OAAXR,EAAEC,QAAgB,CAAE1T,MAAOiU,EAAG,GAAId,MAAM,GAChD,KAAK,EAAGM,EAAEC,QAASH,EAAIU,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKR,EAAEG,IAAIO,MAAOV,EAAEE,KAAKQ,MAAO,SACxC,QACI,MAAkBjC,GAAZA,EAAIuB,EAAEE,MAAYnP,OAAS,GAAK0N,EAAEA,EAAE1N,OAAS,KAAkB,IAAVyP,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAER,EAAI,EAAG,QAAU,CAC3G,GAAc,IAAVQ,EAAG,MAAc/B,GAAM+B,EAAG,GAAK/B,EAAE,IAAM+B,EAAG,GAAK/B,EAAE,IAAM,CAAEuB,EAAEC,MAAQO,EAAG,GAAI,KAAO,CACrF,GAAc,IAAVA,EAAG,IAAYR,EAAEC,MAAQxB,EAAE,GAAI,CAAEuB,EAAEC,MAAQxB,EAAE,GAAIA,EAAI+B,EAAI,KAAO,CACpE,GAAI/B,GAAKuB,EAAEC,MAAQxB,EAAE,GAAI,CAAEuB,EAAEC,MAAQxB,EAAE,GAAIuB,EAAEG,IAAI9O,KAAKmP,GAAK,KAAO,CAC9D/B,EAAE,IAAIuB,EAAEG,IAAIO,MAChBV,EAAEE,KAAKQ,MAAO,SAEtBF,EAAKX,EAAK1R,KAAK+Q,EAASc,EAC5B,CAAE,MAAO5G,GAAKoH,EAAK,CAAC,EAAGpH,GAAI0G,EAAI,CAAG,CAAE,QAAUlB,EAAIH,EAAI,CAAG,CACzD,GAAY,EAAR+B,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAEjU,MAAOiU,EAAG,GAAKA,EAAG,QAAK,EAAQd,MAAM,EAC9E,CACJ,EACAtT,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ+W,mBAAgB,EAIxB,IAAIA,EAA+B,WAO/B,SAASA,EAActM,EAAIuM,GACvB,IAAKA,EACD,MAAMrS,MAAM,2BAEhB9B,KAAK4H,GAAKA,EACV5H,KAAKmU,UAAYA,CACrB,CAoHA,OAnHAlX,OAAOC,eAAegX,EAAcpV,UAAW,cAAe,CAM1DL,IAAK,WACD,OAAOuB,KAAKmU,UAAUnC,WAC1B,EACAoC,YAAY,EACZC,cAAc,IAElBpX,OAAOC,eAAegX,EAAcpV,UAAW,SAAU,CAMrDL,IAAK,WACD,OAAOuB,KAAKmU,UAAUpK,aAC1B,EACAqK,YAAY,EACZC,cAAc,IAOlBH,EAAcpV,UAAUwV,UAAY,WAIhC,OAHKtU,KAAKe,SACNf,KAAKe,OAASf,KAAKmU,UAAU9B,oBAE1BrS,KAAKe,MAChB,EAIAmT,EAAcpV,UAAUyV,OAAS,WAC7BvU,KAAKmU,UAAUvB,OACnB,EAMAsB,EAAcpV,UAAUyC,aAAe,WACnC,OAAOuO,EAAU9P,UAAM,OAAQ,GAAQ,WAEnC,OAAOyQ,EAAYzQ,MAAM,SAAUqT,GAC/B,OAAQA,EAAGvC,OACP,KAAK,EAAG,MAAO,CAAC,EAAa9Q,KAAKwU,WAClC,KAAK,EAED,MAAO,CAAC,GADOnB,EAAG7R,OAAQiT,aACY,IAAI1L,KAAI,SAAUwF,GAAU,OAAOA,EAAOlD,SAAS,OAAS,IAAGqJ,KAAK,KAEtH,GACJ,GACJ,EAMAR,EAAcpV,UAAUoL,WAAa,WACjC,OAAO4F,EAAU9P,UAAM,OAAQ,GAAQ,WACnC,IAAI2U,EACJ,OAAOlE,EAAYzQ,MAAM,SAAUqT,GAC/B,OAAQA,EAAGvC,OACP,KAAK,EAAG,MAAO,CAAC,EAAa9Q,KAAKuB,gBAClC,KAAK,EAED,OADAoT,EAAgBtB,EAAG7R,OACZ,CAAC,EAAcC,KAAKC,MAAMiT,IAE7C,GACJ,GACJ,EAEAT,EAAcpV,UAAU0V,QAAU,WAC9B,OAAO1E,EAAU9P,UAAM,OAAQ,GAAQ,WACnC,IAAI4U,EAASC,EAAO9T,EAAQ+T,EAAOC,EAC/BpS,EAAQ3C,KACZ,OAAOyQ,EAAYzQ,MAAM,SAAUqT,GAC/B,OAAQA,EAAGvC,OACP,KAAK,EAKD,IAJA8D,EAAU,GACVC,EAAQ,EACR9T,EAASf,KAAKsU,YAEPO,EAAQ9T,EAAOa,QAClBkT,EAAQ/T,EAAOuS,KAAKvS,EAAOa,QAC3BgT,EAAQ1S,KAAK4S,GACbD,GAASC,EAAMlT,OAEnB,OAAMiT,EAAQ7U,KAAK4B,QACnBmT,EAAY,IAAIzO,SAAQ,SAAUxB,GAE9B,IAAIkQ,EAAW,SAAUzK,GAAM,OAAO,SAAUuK,GAC5CF,EAAQ1S,KAAK4S,IACbD,GAASC,EAAMlT,UACD2I,EAAG3I,QACbkD,GAAQ,EAEhB,CAAG,EACH/D,EAAO6B,UAAUoS,EAASrS,GAC9B,IACO,CAAC,EAAaoS,IAZc,CAAC,EAAa,GAarD,KAAK,EACD1B,EAAG7R,OACH6R,EAAGvC,MAAQ,EACf,KAAK,EAAG,MAAO,CAAC,EAAc,CAAE2D,YAAaG,EAASK,KAAMJ,IAEpE,GACJ,GACJ,EACOX,CACX,CAlIkC,GAmIlC/W,EAAQ+W,cAAgBA,CAExB,EAAE,CAAC,GAAG,EAAE,CAAC,SAASrE,EAAQT,EAAOjS,GACjC,aACAF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ+X,wBAAqB,EAI7B,IAAIA,EAAoC,WAQpC,SAASA,EAAmBC,EAAQvN,EAAIoK,GACpChS,KAAKmV,OAASA,EACdnV,KAAK4H,GAAKA,EACV5H,KAAKgS,YAAcA,CACvB,CAaA,OATAkD,EAAmBpW,UAAUsW,YAAc,WACvC,IAAIrD,EAAS,CACTC,YAAahS,KAAKgS,YAClBC,cAAe,EACfrK,GAAI5H,KAAK4H,GACTsK,KAAK,GAETlS,KAAKmV,OAAOE,YAAYtD,EAC5B,EACOmD,CACX,CA1BuC,GA2BvC/X,EAAQ+X,mBAAqBA,CAE7B,EAAE,CAAC,GAAG,EAAE,CAAC,SAASrF,EAAQT,EAAOjS,GACjC,aACA,IACQmY,EADJC,EAAavV,MAAQA,KAAKuV,YACtBD,EAAgB,SAAUE,EAAGC,GAI7B,OAHAH,EAAgBrY,OAAOyY,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUJ,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAI7F,KAAK6F,EAAOxY,OAAO6B,UAAUC,eAAeC,KAAKyW,EAAG7F,KAAI4F,EAAE5F,GAAK6F,EAAE7F,GAAI,EAC7F0F,EAAcE,EAAGC,EAC5B,EACO,SAAUD,EAAGC,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAInE,UAAU,uBAAyBuE,OAAOJ,GAAK,iCAE7D,SAASK,IAAO9V,KAAK0O,YAAc8G,CAAG,CADtCF,EAAcE,EAAGC,GAEjBD,EAAE1W,UAAkB,OAAN2W,EAAaxY,OAAOgF,OAAOwT,IAAMK,EAAGhX,UAAY2W,EAAE3W,UAAW,IAAIgX,EACnF,GAEAhG,EAAa9P,MAAQA,KAAK8P,WAAc,SAAUC,EAASC,EAAYC,EAAGC,GAC1E,SAASC,EAAM/S,GAAS,OAAOA,aAAiB6S,EAAI7S,EAAQ,IAAI6S,GAAE,SAAUnL,GAAWA,EAAQ1H,EAAQ,GAAI,CAC3G,OAAO,IAAK6S,IAAMA,EAAI3J,WAAU,SAAUxB,EAASwF,GAC/C,SAAS8F,EAAUhT,GAAS,IAAMiT,EAAKH,EAAU7O,KAAKjE,GAAS,CAAE,MAAO6M,GAAKK,EAAOL,EAAI,CAAE,CAC1F,SAASqG,EAASlT,GAAS,IAAMiT,EAAKH,EAAiB,MAAE9S,GAAS,CAAE,MAAO6M,GAAKK,EAAOL,EAAI,CAAE,CAC7F,SAASoG,EAAK9B,GAAUA,EAAOgC,KAAOzL,EAAQyJ,EAAOnR,OAAS+S,EAAM5B,EAAOnR,OAAOoT,KAAKJ,EAAWE,EAAW,CAC7GD,GAAMH,EAAYA,EAAUzN,MAAMsN,EAASC,GAAc,KAAK3O,OAClE,GACJ,EACIoP,EAAezQ,MAAQA,KAAKyQ,aAAgB,SAAUV,EAASW,GAC/D,IAAsGjB,EAAGkB,EAAGrB,EAAGsB,EAA3GC,EAAI,CAAEC,MAAO,EAAGtP,KAAM,WAAa,GAAW,EAAP8N,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,EAAI,EAAGyB,KAAM,GAAIC,IAAK,IAChG,OAAOJ,EAAI,CAAEvP,KAAM4P,EAAK,GAAI,MAASA,EAAK,GAAI,OAAUA,EAAK,IAAwB,mBAAXC,SAA0BN,EAAEM,OAAOC,UAAY,WAAa,OAAOnR,IAAM,GAAI4Q,EACvJ,SAASK,EAAK5B,GAAK,OAAO,SAAU+B,GAAK,OAAOf,EAAK,CAAChB,EAAG+B,GAAK,CAAG,CACjE,SAASf,EAAKgB,GACV,GAAI5B,EAAG,MAAM,IAAI6B,UAAU,mCAC3B,KAAOV,IAAMA,EAAI,EAAGS,EAAG,KAAOR,EAAI,IAAKA,OACnC,GAAIpB,EAAI,EAAGkB,IAAMrB,EAAY,EAAR+B,EAAG,GAASV,EAAU,OAAIU,EAAG,GAAKV,EAAS,SAAOrB,EAAIqB,EAAU,SAAMrB,EAAEtQ,KAAK2R,GAAI,GAAKA,EAAEtP,SAAWiO,EAAIA,EAAEtQ,KAAK2R,EAAGU,EAAG,KAAKd,KAAM,OAAOjB,EAE3J,OADIqB,EAAI,EAAGrB,IAAG+B,EAAK,CAAS,EAARA,EAAG,GAAQ/B,EAAElS,QACzBiU,EAAG,IACP,KAAK,EAAG,KAAK,EAAG/B,EAAI+B,EAAI,MACxB,KAAK,EAAc,OAAXR,EAAEC,QAAgB,CAAE1T,MAAOiU,EAAG,GAAId,MAAM,GAChD,KAAK,EAAGM,EAAEC,QAASH,EAAIU,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKR,EAAEG,IAAIO,MAAOV,EAAEE,KAAKQ,MAAO,SACxC,QACI,MAAkBjC,GAAZA,EAAIuB,EAAEE,MAAYnP,OAAS,GAAK0N,EAAEA,EAAE1N,OAAS,KAAkB,IAAVyP,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAER,EAAI,EAAG,QAAU,CAC3G,GAAc,IAAVQ,EAAG,MAAc/B,GAAM+B,EAAG,GAAK/B,EAAE,IAAM+B,EAAG,GAAK/B,EAAE,IAAM,CAAEuB,EAAEC,MAAQO,EAAG,GAAI,KAAO,CACrF,GAAc,IAAVA,EAAG,IAAYR,EAAEC,MAAQxB,EAAE,GAAI,CAAEuB,EAAEC,MAAQxB,EAAE,GAAIA,EAAI+B,EAAI,KAAO,CACpE,GAAI/B,GAAKuB,EAAEC,MAAQxB,EAAE,GAAI,CAAEuB,EAAEC,MAAQxB,EAAE,GAAIuB,EAAEG,IAAI9O,KAAKmP,GAAK,KAAO,CAC9D/B,EAAE,IAAIuB,EAAEG,IAAIO,MAChBV,EAAEE,KAAKQ,MAAO,SAEtBF,EAAKX,EAAK1R,KAAK+Q,EAASc,EAC5B,CAAE,MAAO5G,GAAKoH,EAAK,CAAC,EAAGpH,GAAI0G,EAAI,CAAG,CAAE,QAAUlB,EAAIH,EAAI,CAAG,CACzD,GAAY,EAAR+B,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAEjU,MAAOiU,EAAG,GAAKA,EAAG,QAAK,EAAQd,MAAM,EAC9E,CACJ,EACAtT,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ4Y,mCAAgC,EACxC,IAAIC,EAAwBnG,EAAQ,yBAChC6B,EAAa7B,EAAQ,eAIrBkG,EAA+C,SAAU/G,GAQzD,SAAS+G,EAA8BZ,EAAQc,GAC3C,IAAItT,EAAQqM,EAAOhQ,KAAKgB,KAAMmV,EAAQc,EAAcrO,KAAO5H,KAG3D,OAFA2C,EAAMqP,YAAcN,EAAWe,aAAa1R,OAC5C4B,EAAMsT,cAAgBA,EACftT,CACX,CAeA,OA3BA4S,EAAUQ,EAA+B/G,GAkBzC+G,EAA8BjX,UAAUwV,UAAY,WAChD,OAAOxE,EAAU9P,UAAM,OAAQ,GAAQ,WACnC,IAAIe,EACJ,OAAO0P,EAAYzQ,MAAM,SAAUqT,GAE/B,MAAO,CAAC,EAAc,CAAEtS,OADxBA,EAASf,KAAKiW,cAAcC,QAAQ5B,YACI6B,aAAcpV,EAAOa,QACjE,GACJ,GACJ,EACOmU,CACX,CA7BkD,CA6BhDC,EAAsBI,qBACxBjZ,EAAQ4Y,8BAAgCA,CAExC,EAAE,CAAC,cAAc,GAAG,wBAAwB,IAAI,EAAE,CAAC,SAASlG,EAAQT,EAAOjS,GAC3E,aACA,IAAI2S,EAAa9P,MAAQA,KAAK8P,WAAc,SAAUC,EAASC,EAAYC,EAAGC,GAC1E,SAASC,EAAM/S,GAAS,OAAOA,aAAiB6S,EAAI7S,EAAQ,IAAI6S,GAAE,SAAUnL,GAAWA,EAAQ1H,EAAQ,GAAI,CAC3G,OAAO,IAAK6S,IAAMA,EAAI3J,WAAU,SAAUxB,EAASwF,GAC/C,SAAS8F,EAAUhT,GAAS,IAAMiT,EAAKH,EAAU7O,KAAKjE,GAAS,CAAE,MAAO6M,GAAKK,EAAOL,EAAI,CAAE,CAC1F,SAASqG,EAASlT,GAAS,IAAMiT,EAAKH,EAAiB,MAAE9S,GAAS,CAAE,MAAO6M,GAAKK,EAAOL,EAAI,CAAE,CAC7F,SAASoG,EAAK9B,GAAUA,EAAOgC,KAAOzL,EAAQyJ,EAAOnR,OAAS+S,EAAM5B,EAAOnR,OAAOoT,KAAKJ,EAAWE,EAAW,CAC7GD,GAAMH,EAAYA,EAAUzN,MAAMsN,EAASC,GAAc,KAAK3O,OAClE,GACJ,EACIoP,EAAezQ,MAAQA,KAAKyQ,aAAgB,SAAUV,EAASW,GAC/D,IAAsGjB,EAAGkB,EAAGrB,EAAGsB,EAA3GC,EAAI,CAAEC,MAAO,EAAGtP,KAAM,WAAa,GAAW,EAAP8N,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,EAAI,EAAGyB,KAAM,GAAIC,IAAK,IAChG,OAAOJ,EAAI,CAAEvP,KAAM4P,EAAK,GAAI,MAASA,EAAK,GAAI,OAAUA,EAAK,IAAwB,mBAAXC,SAA0BN,EAAEM,OAAOC,UAAY,WAAa,OAAOnR,IAAM,GAAI4Q,EACvJ,SAASK,EAAK5B,GAAK,OAAO,SAAU+B,GAAK,OAAOf,EAAK,CAAChB,EAAG+B,GAAK,CAAG,CACjE,SAASf,EAAKgB,GACV,GAAI5B,EAAG,MAAM,IAAI6B,UAAU,mCAC3B,KAAOV,IAAMA,EAAI,EAAGS,EAAG,KAAOR,EAAI,IAAKA,OACnC,GAAIpB,EAAI,EAAGkB,IAAMrB,EAAY,EAAR+B,EAAG,GAASV,EAAU,OAAIU,EAAG,GAAKV,EAAS,SAAOrB,EAAIqB,EAAU,SAAMrB,EAAEtQ,KAAK2R,GAAI,GAAKA,EAAEtP,SAAWiO,EAAIA,EAAEtQ,KAAK2R,EAAGU,EAAG,KAAKd,KAAM,OAAOjB,EAE3J,OADIqB,EAAI,EAAGrB,IAAG+B,EAAK,CAAS,EAARA,EAAG,GAAQ/B,EAAElS,QACzBiU,EAAG,IACP,KAAK,EAAG,KAAK,EAAG/B,EAAI+B,EAAI,MACxB,KAAK,EAAc,OAAXR,EAAEC,QAAgB,CAAE1T,MAAOiU,EAAG,GAAId,MAAM,GAChD,KAAK,EAAGM,EAAEC,QAASH,EAAIU,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKR,EAAEG,IAAIO,MAAOV,EAAEE,KAAKQ,MAAO,SACxC,QACI,MAAkBjC,GAAZA,EAAIuB,EAAEE,MAAYnP,OAAS,GAAK0N,EAAEA,EAAE1N,OAAS,KAAkB,IAAVyP,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAER,EAAI,EAAG,QAAU,CAC3G,GAAc,IAAVQ,EAAG,MAAc/B,GAAM+B,EAAG,GAAK/B,EAAE,IAAM+B,EAAG,GAAK/B,EAAE,IAAM,CAAEuB,EAAEC,MAAQO,EAAG,GAAI,KAAO,CACrF,GAAc,IAAVA,EAAG,IAAYR,EAAEC,MAAQxB,EAAE,GAAI,CAAEuB,EAAEC,MAAQxB,EAAE,GAAIA,EAAI+B,EAAI,KAAO,CACpE,GAAI/B,GAAKuB,EAAEC,MAAQxB,EAAE,GAAI,CAAEuB,EAAEC,MAAQxB,EAAE,GAAIuB,EAAEG,IAAI9O,KAAKmP,GAAK,KAAO,CAC9D/B,EAAE,IAAIuB,EAAEG,IAAIO,MAChBV,EAAEE,KAAKQ,MAAO,SAEtBF,EAAKX,EAAK1R,KAAK+Q,EAASc,EAC5B,CAAE,MAAO5G,GAAKoH,EAAK,CAAC,EAAGpH,GAAI0G,EAAI,CAAG,CAAE,QAAUlB,EAAIH,EAAI,CAAG,CACzD,GAAY,EAAR+B,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAEjU,MAAOiU,EAAG,GAAKA,EAAG,QAAK,EAAQd,MAAM,EAC9E,CACJ,EACAtT,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQiZ,yBAAsB,EAC9B,IAAI3E,EAAuB5B,EAAQ,yBAI/BuG,EAAqC,WAOrC,SAASA,EAAoBjB,EAAQvN,GACjC5H,KAAKmV,OAASA,EACdnV,KAAK4H,GAAKA,CACd,CAmDA,OA5CAwO,EAAoBC,UAAY,SAAUC,GACtC,IAAIvV,EAAS,IAAI0Q,EAAqB9H,mBAGtC,OAFA5I,EAAO6I,MAAMnI,KAAKuG,UAAUsO,IAC5BvV,EAAOmR,MACA,CAAEnR,OAAQA,EAAQoV,aAAcpV,EAAOa,OAClD,EAMAwU,EAAoBtX,UAAUsW,YAAc,WACxC,OAAOtF,EAAU9P,UAAM,OAAQ,GAAQ,WACnC,IAAIqT,EAAItS,EAAQoV,EAChB,OAAO1F,EAAYzQ,MAAM,SAAU8T,GAC/B,OAAQA,EAAGhD,OACP,KAAK,EAAG,MAAO,CAAC,EAAa9Q,KAAKsU,aAClC,KAAK,EAID,OAHAjB,EAAKS,EAAGtS,OAAQT,EAASsS,EAAGtS,OAAQoV,EAAe9C,EAAG8C,aACtDnW,KAAKe,OAASA,EACdf,KAAKmW,aAAeA,EACb,CAAC,EAAcnW,KAAKiI,QAEvC,GACJ,GACJ,EAIAmO,EAAoBtX,UAAUmJ,KAAO,WACjC,OAAO6H,EAAU9P,UAAM,OAAQ,GAAQ,WACnC,IAAI+R,EACJ,OAAOtB,EAAYzQ,MAAM,SAAUqT,GAQ/B,OAPAtB,EAAS,CACLC,YAAahS,KAAKgS,YAClBC,cAAejS,KAAKmW,aACpBvO,GAAI5H,KAAK4H,GACTsK,KAAK,GAETlS,KAAKmV,OAAOE,YAAYtD,EAAQ/R,KAAKe,QAC9B,CAAC,EACZ,GACJ,GACJ,EACOqV,CACX,CA9DwC,GA+DxCjZ,EAAQiZ,oBAAsBA,CAE9B,EAAE,CAAC,wBAAwB,KAAK,EAAE,CAAC,SAASvG,EAAQT,EAAOjS,GAC3D,aAQA,IACQmY,EADJC,EAAavV,MAAQA,KAAKuV,YACtBD,EAAgB,SAAUE,EAAGC,GAI7B,OAHAH,EAAgBrY,OAAOyY,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUJ,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAI7F,KAAK6F,EAAOxY,OAAO6B,UAAUC,eAAeC,KAAKyW,EAAG7F,KAAI4F,EAAE5F,GAAK6F,EAAE7F,GAAI,EAC7F0F,EAAcE,EAAGC,EAC5B,EACO,SAAUD,EAAGC,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAInE,UAAU,uBAAyBuE,OAAOJ,GAAK,iCAE7D,SAASK,IAAO9V,KAAK0O,YAAc8G,CAAG,CADtCF,EAAcE,EAAGC,GAEjBD,EAAE1W,UAAkB,OAAN2W,EAAaxY,OAAOgF,OAAOwT,IAAMK,EAAGhX,UAAY2W,EAAE3W,UAAW,IAAIgX,EACnF,GAEAhG,EAAa9P,MAAQA,KAAK8P,WAAc,SAAUC,EAASC,EAAYC,EAAGC,GAC1E,SAASC,EAAM/S,GAAS,OAAOA,aAAiB6S,EAAI7S,EAAQ,IAAI6S,GAAE,SAAUnL,GAAWA,EAAQ1H,EAAQ,GAAI,CAC3G,OAAO,IAAK6S,IAAMA,EAAI3J,WAAU,SAAUxB,EAASwF,GAC/C,SAAS8F,EAAUhT,GAAS,IAAMiT,EAAKH,EAAU7O,KAAKjE,GAAS,CAAE,MAAO6M,GAAKK,EAAOL,EAAI,CAAE,CAC1F,SAASqG,EAASlT,GAAS,IAAMiT,EAAKH,EAAiB,MAAE9S,GAAS,CAAE,MAAO6M,GAAKK,EAAOL,EAAI,CAAE,CAC7F,SAASoG,EAAK9B,GAAUA,EAAOgC,KAAOzL,EAAQyJ,EAAOnR,OAAS+S,EAAM5B,EAAOnR,OAAOoT,KAAKJ,EAAWE,EAAW,CAC7GD,GAAMH,EAAYA,EAAUzN,MAAMsN,EAASC,GAAc,KAAK3O,OAClE,GACJ,EACIoP,EAAezQ,MAAQA,KAAKyQ,aAAgB,SAAUV,EAASW,GAC/D,IAAsGjB,EAAGkB,EAAGrB,EAAGsB,EAA3GC,EAAI,CAAEC,MAAO,EAAGtP,KAAM,WAAa,GAAW,EAAP8N,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,EAAI,EAAGyB,KAAM,GAAIC,IAAK,IAChG,OAAOJ,EAAI,CAAEvP,KAAM4P,EAAK,GAAI,MAASA,EAAK,GAAI,OAAUA,EAAK,IAAwB,mBAAXC,SAA0BN,EAAEM,OAAOC,UAAY,WAAa,OAAOnR,IAAM,GAAI4Q,EACvJ,SAASK,EAAK5B,GAAK,OAAO,SAAU+B,GAAK,OAAOf,EAAK,CAAChB,EAAG+B,GAAK,CAAG,CACjE,SAASf,EAAKgB,GACV,GAAI5B,EAAG,MAAM,IAAI6B,UAAU,mCAC3B,KAAOV,IAAMA,EAAI,EAAGS,EAAG,KAAOR,EAAI,IAAKA,OACnC,GAAIpB,EAAI,EAAGkB,IAAMrB,EAAY,EAAR+B,EAAG,GAASV,EAAU,OAAIU,EAAG,GAAKV,EAAS,SAAOrB,EAAIqB,EAAU,SAAMrB,EAAEtQ,KAAK2R,GAAI,GAAKA,EAAEtP,SAAWiO,EAAIA,EAAEtQ,KAAK2R,EAAGU,EAAG,KAAKd,KAAM,OAAOjB,EAE3J,OADIqB,EAAI,EAAGrB,IAAG+B,EAAK,CAAS,EAARA,EAAG,GAAQ/B,EAAElS,QACzBiU,EAAG,IACP,KAAK,EAAG,KAAK,EAAG/B,EAAI+B,EAAI,MACxB,KAAK,EAAc,OAAXR,EAAEC,QAAgB,CAAE1T,MAAOiU,EAAG,GAAId,MAAM,GAChD,KAAK,EAAGM,EAAEC,QAASH,EAAIU,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKR,EAAEG,IAAIO,MAAOV,EAAEE,KAAKQ,MAAO,SACxC,QACI,MAAkBjC,GAAZA,EAAIuB,EAAEE,MAAYnP,OAAS,GAAK0N,EAAEA,EAAE1N,OAAS,KAAkB,IAAVyP,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAER,EAAI,EAAG,QAAU,CAC3G,GAAc,IAAVQ,EAAG,MAAc/B,GAAM+B,EAAG,GAAK/B,EAAE,IAAM+B,EAAG,GAAK/B,EAAE,IAAM,CAAEuB,EAAEC,MAAQO,EAAG,GAAI,KAAO,CACrF,GAAc,IAAVA,EAAG,IAAYR,EAAEC,MAAQxB,EAAE,GAAI,CAAEuB,EAAEC,MAAQxB,EAAE,GAAIA,EAAI+B,EAAI,KAAO,CACpE,GAAI/B,GAAKuB,EAAEC,MAAQxB,EAAE,GAAI,CAAEuB,EAAEC,MAAQxB,EAAE,GAAIuB,EAAEG,IAAI9O,KAAKmP,GAAK,KAAO,CAC9D/B,EAAE,IAAIuB,EAAEG,IAAIO,MAChBV,EAAEE,KAAKQ,MAAO,SAEtBF,EAAKX,EAAK1R,KAAK+Q,EAASc,EAC5B,CAAE,MAAO5G,GAAKoH,EAAK,CAAC,EAAGpH,GAAI0G,EAAI,CAAG,CAAE,QAAUlB,EAAIH,EAAI,CAAG,CACzD,GAAY,EAAR+B,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAEjU,MAAOiU,EAAG,GAAKA,EAAG,QAAK,EAAQd,MAAM,EAC9E,CACJ,EACAtT,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQoZ,yBAAsB,EAC9B,IAAIC,EAAiB3G,EAAQ,4BACzBmG,EAAwBnG,EAAQ,yBAIhC0G,EAAqC,SAAUvH,GAS/C,SAASuH,EAAoBpB,EAAQvN,EAAIrH,GACrC,IAAIoC,EAAQqM,EAAOhQ,KAAKgB,KAAMmV,EAAQvN,IAAO5H,KAG7C,OAFA2C,EAAMpC,QAAUA,EAChBoC,EAAMqP,YAAcwE,EAAe/D,aAAalS,QACzCoC,CACX,CAmBA,OAhCA4S,EAAUgB,EAAqBvH,GAmB/BuH,EAAoBzX,UAAUwV,UAAY,WACtC,IAAIjB,EAAIS,EAAI2C,EAAIC,EAChB,OAAO5G,EAAU9P,UAAM,OAAQ,GAAQ,WACnC,IAAI2W,EACJ,OAAOlG,EAAYzQ,MAAM,SAAU4W,GAK/B,OAJAD,EAAU,CAAE1F,KAA8B,QAAvBoC,EAAKrT,KAAKO,eAA4B,IAAP8S,OAAgB,EAASA,EAAGpC,KAAM4C,KAA8B,QAAvBC,EAAK9T,KAAKO,eAA4B,IAAPuT,OAAgB,EAASA,EAAGD,KAAMpT,QAAS,IACtF,QAA9EiW,EAA6B,QAAvBD,EAAKzW,KAAKO,eAA4B,IAAPkW,OAAgB,EAASA,EAAGhW,eAA4B,IAAPiW,GAAyBA,EAAG7T,SAAQ,SAAU9B,GACjI4V,EAAQlW,QAAQyB,KAAKnB,EAAO8V,YAChC,IACO,CAAC,EAAcb,EAAsBI,oBAAoBC,UAAUM,GAC9E,GACJ,GACJ,EACOJ,CACX,CAlCwC,CAkCtCP,EAAsBI,qBACxBjZ,EAAQoZ,oBAAsBA,CAE9B,EAAE,CAAC,2BAA2B,GAAG,wBAAwB,IAAI,EAAE,CAAC,SAAS1G,EAAQT,EAAOjS,GACxF,aACA,IACQmY,EADJC,EAAavV,MAAQA,KAAKuV,YACtBD,EAAgB,SAAUE,EAAGC,GAI7B,OAHAH,EAAgBrY,OAAOyY,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUJ,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAI7F,KAAK6F,EAAOxY,OAAO6B,UAAUC,eAAeC,KAAKyW,EAAG7F,KAAI4F,EAAE5F,GAAK6F,EAAE7F,GAAI,EAC7F0F,EAAcE,EAAGC,EAC5B,EACO,SAAUD,EAAGC,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAInE,UAAU,uBAAyBuE,OAAOJ,GAAK,iCAE7D,SAASK,IAAO9V,KAAK0O,YAAc8G,CAAG,CADtCF,EAAcE,EAAGC,GAEjBD,EAAE1W,UAAkB,OAAN2W,EAAaxY,OAAOgF,OAAOwT,IAAMK,EAAGhX,UAAY2W,EAAE3W,UAAW,IAAIgX,EACnF,GAEAhG,EAAa9P,MAAQA,KAAK8P,WAAc,SAAUC,EAASC,EAAYC,EAAGC,GAC1E,SAASC,EAAM/S,GAAS,OAAOA,aAAiB6S,EAAI7S,EAAQ,IAAI6S,GAAE,SAAUnL,GAAWA,EAAQ1H,EAAQ,GAAI,CAC3G,OAAO,IAAK6S,IAAMA,EAAI3J,WAAU,SAAUxB,EAASwF,GAC/C,SAAS8F,EAAUhT,GAAS,IAAMiT,EAAKH,EAAU7O,KAAKjE,GAAS,CAAE,MAAO6M,GAAKK,EAAOL,EAAI,CAAE,CAC1F,SAASqG,EAASlT,GAAS,IAAMiT,EAAKH,EAAiB,MAAE9S,GAAS,CAAE,MAAO6M,GAAKK,EAAOL,EAAI,CAAE,CAC7F,SAASoG,EAAK9B,GAAUA,EAAOgC,KAAOzL,EAAQyJ,EAAOnR,OAAS+S,EAAM5B,EAAOnR,OAAOoT,KAAKJ,EAAWE,EAAW,CAC7GD,GAAMH,EAAYA,EAAUzN,MAAMsN,EAASC,GAAc,KAAK3O,OAClE,GACJ,EACIoP,EAAezQ,MAAQA,KAAKyQ,aAAgB,SAAUV,EAASW,GAC/D,IAAsGjB,EAAGkB,EAAGrB,EAAGsB,EAA3GC,EAAI,CAAEC,MAAO,EAAGtP,KAAM,WAAa,GAAW,EAAP8N,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,EAAI,EAAGyB,KAAM,GAAIC,IAAK,IAChG,OAAOJ,EAAI,CAAEvP,KAAM4P,EAAK,GAAI,MAASA,EAAK,GAAI,OAAUA,EAAK,IAAwB,mBAAXC,SAA0BN,EAAEM,OAAOC,UAAY,WAAa,OAAOnR,IAAM,GAAI4Q,EACvJ,SAASK,EAAK5B,GAAK,OAAO,SAAU+B,GAAK,OAAOf,EAAK,CAAChB,EAAG+B,GAAK,CAAG,CACjE,SAASf,EAAKgB,GACV,GAAI5B,EAAG,MAAM,IAAI6B,UAAU,mCAC3B,KAAOV,IAAMA,EAAI,EAAGS,EAAG,KAAOR,EAAI,IAAKA,OACnC,GAAIpB,EAAI,EAAGkB,IAAMrB,EAAY,EAAR+B,EAAG,GAASV,EAAU,OAAIU,EAAG,GAAKV,EAAS,SAAOrB,EAAIqB,EAAU,SAAMrB,EAAEtQ,KAAK2R,GAAI,GAAKA,EAAEtP,SAAWiO,EAAIA,EAAEtQ,KAAK2R,EAAGU,EAAG,KAAKd,KAAM,OAAOjB,EAE3J,OADIqB,EAAI,EAAGrB,IAAG+B,EAAK,CAAS,EAARA,EAAG,GAAQ/B,EAAElS,QACzBiU,EAAG,IACP,KAAK,EAAG,KAAK,EAAG/B,EAAI+B,EAAI,MACxB,KAAK,EAAc,OAAXR,EAAEC,QAAgB,CAAE1T,MAAOiU,EAAG,GAAId,MAAM,GAChD,KAAK,EAAGM,EAAEC,QAASH,EAAIU,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKR,EAAEG,IAAIO,MAAOV,EAAEE,KAAKQ,MAAO,SACxC,QACI,MAAkBjC,GAAZA,EAAIuB,EAAEE,MAAYnP,OAAS,GAAK0N,EAAEA,EAAE1N,OAAS,KAAkB,IAAVyP,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAER,EAAI,EAAG,QAAU,CAC3G,GAAc,IAAVQ,EAAG,MAAc/B,GAAM+B,EAAG,GAAK/B,EAAE,IAAM+B,EAAG,GAAK/B,EAAE,IAAM,CAAEuB,EAAEC,MAAQO,EAAG,GAAI,KAAO,CACrF,GAAc,IAAVA,EAAG,IAAYR,EAAEC,MAAQxB,EAAE,GAAI,CAAEuB,EAAEC,MAAQxB,EAAE,GAAIA,EAAI+B,EAAI,KAAO,CACpE,GAAI/B,GAAKuB,EAAEC,MAAQxB,EAAE,GAAI,CAAEuB,EAAEC,MAAQxB,EAAE,GAAIuB,EAAEG,IAAI9O,KAAKmP,GAAK,KAAO,CAC9D/B,EAAE,IAAIuB,EAAEG,IAAIO,MAChBV,EAAEE,KAAKQ,MAAO,SAEtBF,EAAKX,EAAK1R,KAAK+Q,EAASc,EAC5B,CAAE,MAAO5G,GAAKoH,EAAK,CAAC,EAAGpH,GAAI0G,EAAI,CAAG,CAAE,QAAUlB,EAAIH,EAAI,CAAG,CACzD,GAAY,EAAR+B,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAEjU,MAAOiU,EAAG,GAAKA,EAAG,QAAK,EAAQd,MAAM,EAC9E,CACJ,EACAtT,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ2Z,0BAAuB,EAQ/B,IAAIN,EAAiB3G,EAAQ,4BACzBmG,EAAwBnG,EAAQ,yBAIhCiH,EAAsC,SAAU9H,GAShD,SAAS8H,EAAqB3B,EAAQvN,EAAI6D,GACtC,IAAI9I,EAAQqM,EAAOhQ,KAAKgB,KAAMmV,EAAQvN,IAAO5H,KAG7C,OAFA2C,EAAMqP,YAAcwE,EAAe/D,aAAahH,SAChD9I,EAAM8I,SAAWA,EACV9I,CACX,CAwBA,OArCA4S,EAAUuB,EAAsB9H,GAmBhC8H,EAAqBhY,UAAUwV,UAAY,WACvC,IAAIjB,EACJ,OAAOvD,EAAU9P,UAAM,OAAQ,GAAQ,WACnC,IAAI2W,EACJ,OAAOlG,EAAYzQ,MAAM,SAAU8T,GAU/B,OATA6C,EAAU,CAAEzO,WAAYlI,KAAKyL,SAASvD,WAAYzH,QAAS,IAC1B,QAAhC4S,EAAKrT,KAAKyL,SAAShL,eAA4B,IAAP4S,GAAyBA,EAAGxQ,SAAQ,SAAUwQ,GACnF,IAAIwD,EAAcxD,EAAGwD,YACrBF,EAAQlW,QAAQyB,KAAK,CACjB0F,GAAIiP,EAAYjP,GAChBzF,YAAa0U,EAAYnT,KACzB9B,OAAQiV,EAAYjV,QAE5B,IACO,CAAC,EAAcoU,EAAsBI,oBAAoBC,UAAUM,GAC9E,GACJ,GACJ,EACOG,CACX,CAvCyC,CAuCvCd,EAAsBI,qBACxBjZ,EAAQ2Z,qBAAuBA,CAE/B,EAAE,CAAC,2BAA2B,GAAG,wBAAwB,IAAI,EAAE,CAAC,SAASjH,EAAQT,EAAOjS,GACxF,aACAF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ2M,YAAc3M,EAAQ4Z,uBAAoB,EAQlD,IAAIC,EAAkBnH,EAAQ,6BAI1BkH,EAAmC,WAMnC,SAASA,EAAkBb,GACvB,IAAI7C,EAAIS,EAAI2C,EAAIC,EAAIE,EAAIK,EACxBjX,KAAKkW,QAAUA,EACflW,KAAK4H,IAAK,EAAIoP,EAAgBE,gBAC9BlX,KAAK6W,YAAc,CACfjP,GAAI5H,KAAK4H,GACTlE,KAAyI,QAAlI+S,EAAoF,QAA9E3C,EAA6B,QAAvBT,EAAKrT,KAAKkW,eAA4B,IAAP7C,OAAgB,EAASA,EAAG1M,eAA4B,IAAPmN,OAAgB,EAASA,EAAGpQ,YAAyB,IAAP+S,EAAgBA,EAAK,UACtK7U,OAAoJ,QAA3IqV,EAAoF,QAA9EL,EAA6B,QAAvBF,EAAK1W,KAAKkW,eAA4B,IAAPQ,OAAgB,EAASA,EAAG/P,eAA4B,IAAPiQ,OAAgB,EAASA,EAAG7M,qBAAkC,IAAPkN,EAAgBA,EAAK,EAEzL,CACA,OAAOF,CACX,CAjBsC,GAkBtC5Z,EAAQ4Z,kBAAoBA,EAI5B,IAAIjN,EAA6B,WAO7B,SAASA,EAAYnD,EAAS5F,GAC1Bf,KAAK2G,QAAUA,EACf3G,KAAKe,OAASA,CAClB,CASA,OAHA+I,EAAYhL,UAAUwV,UAAY,WAC9B,OAAOtU,KAAKe,MAChB,EACO+I,CACX,CApBgC,GAqBhC3M,EAAQ2M,YAAcA,CAEtB,EAAE,CAAC,4BAA4B,KAAK,EAAE,CAAC,SAAS+F,EAAQT,EAAOjS,GAC/D,aAQAF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQgS,gBAAkBhS,EAAQga,iBAAmBha,EAAQwM,mBAAqBxM,EAAQ6E,kBAAoB7E,EAAQ2K,iBAAmB3K,EAAQia,eAAiBja,EAAQ2M,YAAc3M,EAAQ+W,mBAAgB,EAChN,IAAIvC,EAAkB9B,EAAQ,mBAC9B5S,OAAOC,eAAeC,EAAS,gBAAiB,CAAEiX,YAAY,EAAM3V,IAAK,WAAc,OAAOkT,EAAgBuC,aAAe,IAC7H,IAAImD,EAAsBxH,EAAQ,uBAClC5S,OAAOC,eAAeC,EAAS,cAAe,CAAEiX,YAAY,EAAM3V,IAAK,WAAc,OAAO4Y,EAAoBvN,WAAa,IAC7H,IAAIwN,EAAmBzH,EAAQ,oBAC/B5S,OAAOC,eAAeC,EAAS,iBAAkB,CAAEiX,YAAY,EAAM3V,IAAK,WAAc,OAAO6Y,EAAiBF,cAAgB,IAChI,IAAIG,EAAqB1H,EAAQ,sBACjC5S,OAAOC,eAAeC,EAAS,mBAAoB,CAAEiX,YAAY,EAAM3V,IAAK,WAAc,OAAO8Y,EAAmBzP,gBAAkB,IACtI,IAAI0P,EAAsB3H,EAAQ,uBAClC5S,OAAOC,eAAeC,EAAS,oBAAqB,CAAEiX,YAAY,EAAM3V,IAAK,WAAc,OAAO+Y,EAAoBxV,iBAAmB,IACzI,IAAIyP,EAAuB5B,EAAQ,wBACnC5S,OAAOC,eAAeC,EAAS,qBAAsB,CAAEiX,YAAY,EAAM3V,IAAK,WAAc,OAAOgT,EAAqB9H,kBAAoB,IAC5I,IAAI8N,EAAkB5H,EAAQ,6BAC9B5S,OAAOC,eAAeC,EAAS,mBAAoB,CAAEiX,YAAY,EAAM3V,IAAK,WAAc,OAAOgZ,EAAgBN,gBAAkB,IACnIla,OAAOC,eAAeC,EAAS,kBAAmB,CAAEiX,YAAY,EAAM3V,IAAK,WAAc,OAAOgZ,EAAgBtI,eAAiB,GAEjI,EAAE,CAAC,kBAAkB,EAAE,sBAAsB,EAAE,mBAAmB,GAAG,qBAAqB,GAAG,sBAAsB,GAAG,uBAAuB,GAAG,4BAA4B,KAAK,GAAG,CAAC,SAASU,EAAQT,EAAOjS,GAC7M,aAQA,IAAIua,EAAmB1X,MAAQA,KAAK0X,kBAAqBza,OAAOgF,OAAS,SAAUsN,EAAGoI,EAAGC,EAAGC,QAC7E/R,IAAP+R,IAAkBA,EAAKD,GAC3B,IAAI3Y,EAAOhC,OAAO2B,yBAAyB+Y,EAAGC,GACzC3Y,KAAS,QAASA,GAAQ0Y,EAAEtZ,WAAaY,EAAKqE,UAAYrE,EAAKoV,gBAClEpV,EAAO,CAAEmV,YAAY,EAAM3V,IAAK,WAAa,OAAOkZ,EAAEC,EAAI,IAE5D3a,OAAOC,eAAeqS,EAAGsI,EAAI5Y,EAChC,EAAI,SAAUsQ,EAAGoI,EAAGC,EAAGC,QACT/R,IAAP+R,IAAkBA,EAAKD,GAC3BrI,EAAEsI,GAAMF,EAAEC,EACb,GACGE,EAAgB9X,MAAQA,KAAK8X,cAAiB,SAASH,EAAGxa,GAC1D,IAAK,IAAIyS,KAAK+H,EAAa,YAAN/H,GAAoB3S,OAAO6B,UAAUC,eAAeC,KAAK7B,EAASyS,IAAI8H,EAAgBva,EAASwa,EAAG/H,EAC3H,EACA3S,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtD0a,EAAajI,EAAQ,qBAAsB1S,GAC3C2a,EAAajI,EAAQ,mBAAoB1S,GACzC2a,EAAajI,EAAQ,gCAAiC1S,GACtD2a,EAAajI,EAAQ,uCAAwC1S,EAE7D,EAAE,CAAC,oBAAoB,GAAG,kBAAkB,GAAG,+BAA+B,GAAG,sCAAsC,KAAK,GAAG,CAAC,SAAS0S,EAAQT,EAAOjS,GACxJ,aACA,IAAI2S,EAAa9P,MAAQA,KAAK8P,WAAc,SAAUC,EAASC,EAAYC,EAAGC,GAC1E,SAASC,EAAM/S,GAAS,OAAOA,aAAiB6S,EAAI7S,EAAQ,IAAI6S,GAAE,SAAUnL,GAAWA,EAAQ1H,EAAQ,GAAI,CAC3G,OAAO,IAAK6S,IAAMA,EAAI3J,WAAU,SAAUxB,EAASwF,GAC/C,SAAS8F,EAAUhT,GAAS,IAAMiT,EAAKH,EAAU7O,KAAKjE,GAAS,CAAE,MAAO6M,GAAKK,EAAOL,EAAI,CAAE,CAC1F,SAASqG,EAASlT,GAAS,IAAMiT,EAAKH,EAAiB,MAAE9S,GAAS,CAAE,MAAO6M,GAAKK,EAAOL,EAAI,CAAE,CAC7F,SAASoG,EAAK9B,GAAUA,EAAOgC,KAAOzL,EAAQyJ,EAAOnR,OAAS+S,EAAM5B,EAAOnR,OAAOoT,KAAKJ,EAAWE,EAAW,CAC7GD,GAAMH,EAAYA,EAAUzN,MAAMsN,EAASC,GAAc,KAAK3O,OAClE,GACJ,EACIoP,EAAezQ,MAAQA,KAAKyQ,aAAgB,SAAUV,EAASW,GAC/D,IAAsGjB,EAAGkB,EAAGrB,EAAGsB,EAA3GC,EAAI,CAAEC,MAAO,EAAGtP,KAAM,WAAa,GAAW,EAAP8N,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,EAAI,EAAGyB,KAAM,GAAIC,IAAK,IAChG,OAAOJ,EAAI,CAAEvP,KAAM4P,EAAK,GAAI,MAASA,EAAK,GAAI,OAAUA,EAAK,IAAwB,mBAAXC,SAA0BN,EAAEM,OAAOC,UAAY,WAAa,OAAOnR,IAAM,GAAI4Q,EACvJ,SAASK,EAAK5B,GAAK,OAAO,SAAU+B,GAAK,OAAOf,EAAK,CAAChB,EAAG+B,GAAK,CAAG,CACjE,SAASf,EAAKgB,GACV,GAAI5B,EAAG,MAAM,IAAI6B,UAAU,mCAC3B,KAAOV,IAAMA,EAAI,EAAGS,EAAG,KAAOR,EAAI,IAAKA,OACnC,GAAIpB,EAAI,EAAGkB,IAAMrB,EAAY,EAAR+B,EAAG,GAASV,EAAU,OAAIU,EAAG,GAAKV,EAAS,SAAOrB,EAAIqB,EAAU,SAAMrB,EAAEtQ,KAAK2R,GAAI,GAAKA,EAAEtP,SAAWiO,EAAIA,EAAEtQ,KAAK2R,EAAGU,EAAG,KAAKd,KAAM,OAAOjB,EAE3J,OADIqB,EAAI,EAAGrB,IAAG+B,EAAK,CAAS,EAARA,EAAG,GAAQ/B,EAAElS,QACzBiU,EAAG,IACP,KAAK,EAAG,KAAK,EAAG/B,EAAI+B,EAAI,MACxB,KAAK,EAAc,OAAXR,EAAEC,QAAgB,CAAE1T,MAAOiU,EAAG,GAAId,MAAM,GAChD,KAAK,EAAGM,EAAEC,QAASH,EAAIU,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKR,EAAEG,IAAIO,MAAOV,EAAEE,KAAKQ,MAAO,SACxC,QACI,MAAkBjC,GAAZA,EAAIuB,EAAEE,MAAYnP,OAAS,GAAK0N,EAAEA,EAAE1N,OAAS,KAAkB,IAAVyP,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAER,EAAI,EAAG,QAAU,CAC3G,GAAc,IAAVQ,EAAG,MAAc/B,GAAM+B,EAAG,GAAK/B,EAAE,IAAM+B,EAAG,GAAK/B,EAAE,IAAM,CAAEuB,EAAEC,MAAQO,EAAG,GAAI,KAAO,CACrF,GAAc,IAAVA,EAAG,IAAYR,EAAEC,MAAQxB,EAAE,GAAI,CAAEuB,EAAEC,MAAQxB,EAAE,GAAIA,EAAI+B,EAAI,KAAO,CACpE,GAAI/B,GAAKuB,EAAEC,MAAQxB,EAAE,GAAI,CAAEuB,EAAEC,MAAQxB,EAAE,GAAIuB,EAAEG,IAAI9O,KAAKmP,GAAK,KAAO,CAC9D/B,EAAE,IAAIuB,EAAEG,IAAIO,MAChBV,EAAEE,KAAKQ,MAAO,SAEtBF,EAAKX,EAAK1R,KAAK+Q,EAASc,EAC5B,CAAE,MAAO5G,GAAKoH,EAAK,CAAC,EAAGpH,GAAI0G,EAAI,CAAG,CAAE,QAAUlB,EAAIH,EAAI,CAAG,CACzD,GAAY,EAAR+B,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAEjU,MAAOiU,EAAG,GAAKA,EAAG,QAAK,EAAQd,MAAM,EAC9E,CACJ,EACAtT,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ4a,qBAAkB,EAC1B,IAAIvB,EAAiB3G,EAAQ,4BACzBmI,EAAqBnI,EAAQ,gCAC7BoI,EAAqBpI,EAAQ,gCAC7BqI,EAA+BrI,EAAQ,gCAIvCkI,EAAiC,WACjC,SAASA,IACT,CAmHA,OAlHA9a,OAAOC,eAAe6a,EAAgBjZ,UAAW,cAAe,CAM5DL,IAAK,WACD,OAAyB,MAAlBuB,KAAKmY,SAChB,EACA/D,YAAY,EACZC,cAAc,IAQlB0D,EAAgBjZ,UAAUqN,QAAU,SAAUiM,GAE1C,OADApY,KAAKmY,UAAYC,EACVpY,KAAKqY,gBAChB,EAOAN,EAAgBjZ,UAAU8D,UAAY,SAAU0R,EAAWgE,GACvDtY,KAAKuY,WAAajE,EAClBtU,KAAKwY,eAAiBF,CAC1B,EAMAP,EAAgBjZ,UAAU4G,WAAa,SAAU+S,GAC7C,IAAIpF,EAAIS,EAER,QADc,IAAV2E,IAAoBA,EAAQP,EAA6BQ,2BAA2BC,OACnF3Y,KAAK4Y,YAGV,IACI5Y,KAAKmY,UAAUvF,QACc,QAA5BS,EAAKrT,KAAK6Y,oBAAiC,IAAPxF,GAAyBA,EAAGrU,KAAKgB,KAAMA,KAAMyY,EACtF,CACA,MAAOK,GAC0B,QAA5BhF,EAAK9T,KAAK6Y,oBAAiC,IAAP/E,GAAyBA,EAAG9U,KAAKgB,KAAMA,KAAM,IAAIkY,EAA6BQ,2BAA2BI,EAAIzQ,SACtJ,CACA,QACIrI,KAAKmY,UAAY,IACrB,CACJ,EACAJ,EAAgBjZ,UAAUuZ,eAAiB,WACvC,OAAOvI,EAAU9P,UAAM,OAAQ,GAAQ,WACnC,IAAI+Y,EAAW1F,EAAItB,EAAQiH,EAAUC,EAAmBhD,EAAepB,EAAOf,EAAIoF,EAClF,OAAOzI,EAAYzQ,MAAM,SAAUyW,GAC/B,OAAQA,EAAG3F,OACP,KAAK,EACD,IAAK9Q,KAAK4Y,YAAa,MAAO,CAAC,EAAa,IAC5CnC,EAAG3F,MAAQ,EACf,KAAK,EACD2F,EAAG1F,KAAK7O,KAAK,CAAC,EAAG,EAAG,CAAE,KACtB6W,EAAY,EACZtC,EAAG3F,MAAQ,EACf,KAAK,EACD,OAAMiI,EAAYd,EAAmBkB,iBAAiBC,iBACtD/F,EAAKrT,KACE,CAAC,EAAaA,KAAKmY,UAAUkB,QAAQpB,EAAmBkB,iBAAiBC,gBAAkBL,KAFnB,CAAC,EAAa,GAGjG,KAAK,EAKD,OAJA1F,EAAGiG,qBAAuB7C,EAAGjV,OACzBxB,KAAKsZ,uBACLP,GAAa/Y,KAAKsZ,qBAAqB1X,QAEpC,CAAC,EAAa,GACzB,KAAK,EAGD,GAFAmQ,EAASiG,EAAmBuB,iBAAiBC,YAAYxZ,KAAKsZ,sBAC9DN,EAAWjH,EAAOC,cAAgBwE,EAAe/D,aAAa1R,SACxDgR,EAAOE,cAAgB,GAAI,MAAO,CAAC,EAAa,GACtDgH,EAAoB,EACpBhD,EAAgBjW,KAAKuY,WAAWxG,GAChC0E,EAAG3F,MAAQ,EACf,KAAK,EACD,OAAMmI,EAAoBlH,EAAOE,eAC7BgH,EAAoBhB,EAAmBkB,iBAAiBM,kBAC5D5E,EAAQ1H,KAAKuM,IAAI3H,EAAOE,cAAgBgH,EAAmBhB,EAAmBkB,iBAAiBM,kBAC/F3F,EAAK9T,KACE,CAAC,EAAaA,KAAKmY,UAAUkB,QAAQxE,KAH0C,CAAC,EAAa,GAIxG,KAAK,EAQD,OAPAf,EAAG6F,sBAAwBlD,EAAGjV,OAC9ByX,GAAqBjZ,KAAK2Z,sBAAsBC,WAChD3D,EAAcrM,MAAM5J,KAAK2Z,uBAErBX,GACAhZ,KAAKwY,eAAezG,EAAQkE,EAAegD,GAExC,CAAC,EAAa,GACzB,KAAK,EACID,GACDhZ,KAAKwY,eAAezG,EAAQkE,EAAegD,GAE/CxC,EAAG3F,MAAQ,EACf,KAAK,EAAG,MAAO,CAAC,EAAa,IAC7B,KAAK,EAGD,OAFAoI,EAAQzC,EAAGjV,OACXxB,KAAK0F,WAAW,IAAIwS,EAA6BQ,2BAA2BQ,EAAM7Q,UAC3E,CAAC,EAAa,IACzB,KAAK,GAAI,MAAO,CAAC,EAAa,GAC9B,KAAK,GAAI,MAAO,CAAC,GAEzB,GACJ,GACJ,EACO0P,CACX,CAtHoC,GAuHpC5a,EAAQ4a,gBAAkBA,CAE1B,EAAE,CAAC,+BAA+B,GAAG,+BAA+B,GAAG,2BAA2B,GAAG,+BAA+B,KAAK,GAAG,CAAC,SAASlI,EAAQT,EAAOjS,IACrK,SAAWsM,IAAQ,WACnB,aAQAxM,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ0c,mBAAgB,EACxB,IAAI7B,EAAqBnI,EAAQ,gCAC7BoI,EAAqBpI,EAAQ,gCAC7BqI,EAA+BrI,EAAQ,gCAIvCgK,EAA+B,WAC/B,SAASA,IACT,CA+EA,OA9EA5c,OAAOC,eAAe2c,EAAc/a,UAAW,cAAe,CAM1DL,IAAK,WACD,OAAuB,MAAhBuB,KAAK8Z,OAChB,EACA1F,YAAY,EACZC,cAAc,IAOlBwF,EAAc/a,UAAUqN,QAAU,SAAUgJ,GACxCnV,KAAK8Z,QAAU3E,CACnB,EAQA0E,EAAc/a,UAAUuW,YAAc,SAAUtD,EAAQ4E,EAASoD,GAC7D,IAAIC,EAAS,CAAEjI,OAAQA,EAAQ4E,QAASA,EAASoD,aAAcA,GAC/D/Z,KAAKia,YAAYD,EACrB,EAMAH,EAAc/a,UAAU4G,WAAa,SAAU+S,GAC3C,IAAIpF,EAAIS,EAER,QADc,IAAV2E,IAAoBA,EAAQP,EAA6BQ,2BAA2BC,OACnF3Y,KAAK4Y,YAGV,IACI5Y,KAAK8Z,QAAQlH,QACgB,QAA5BS,EAAKrT,KAAK6Y,oBAAiC,IAAPxF,GAAyBA,EAAGrU,KAAKgB,KAAMA,KAAMyY,EACtF,CACA,MAAOK,GAC0B,QAA5BhF,EAAK9T,KAAK6Y,oBAAiC,IAAP/E,GAAyBA,EAAG9U,KAAKgB,KAAMA,KAAM,IAAIkY,EAA6BQ,2BAA2BI,EAAIzQ,SACtJ,CACA,QACIrI,KAAK8Z,QAAU,IACnB,CACJ,EACAD,EAAc/a,UAAUmb,YAAc,SAAUD,GAC5C,IACI,GAAIA,EAAOjI,OAAOE,cAAgB,GAAK+H,EAAOrD,QAAS,CAEnD,IADA,IAAIuD,EAAWF,EAAOjI,OAAOE,cACtBiI,EAAW,GAAG,CACjB,IAAIrF,EAAQqF,GAAYjC,EAAmBkB,iBAAiBM,iBAAmBS,EAAWjC,EAAmBkB,iBAAiBM,iBAC1H3E,EAAQkF,EAAOrD,QAAQrD,KAAKuB,GAC5B9C,EAASiI,EAAOjI,OACpBA,EAAOE,cAAgB4C,EACvB9C,EAAOG,IAAMgI,GAAYjC,EAAmBkB,iBAAiBM,iBAC7D,IAAIU,EAAmB1Q,EAAO2Q,MAAMnC,EAAmBkB,iBAAiBC,iBACxEpB,EAAmBuB,iBAAiBlD,UAAUtE,EAAQoI,GACtDna,KAAK8Z,QAAQ7R,KAAKkS,GAClBna,KAAK8Z,QAAQ7R,KAAK6M,GAClBoF,GAAYpF,EAAMlT,MACtB,CACIoY,EAAOD,cACPC,EAAOD,cAEf,CACJ,CACA,MAAOjB,GACH9Y,KAAK0F,WAAW,IAAIwS,EAA6BQ,2BAA2BI,EAAIzQ,SACpF,CACJ,EACOwR,CACX,CAlFkC,GAmFlC1c,EAAQ0c,cAAgBA,CAEvB,GAAE7a,KAAKgB,KAAM,GAAEhB,KAAKgB,KAAK6P,EAAQ,UAAUpG,OAE5C,EAAE,CAAC,+BAA+B,GAAG,+BAA+B,GAAG,+BAA+B,GAAG,OAAS,KAAK,GAAG,CAAC,SAASoG,EAAQT,EAAOjS,GACnJ,aAQAF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQub,gCAA6B,EAIrC,IAAIA,EAA4C,WAS5C,SAASA,EAA2B2B,GAChCra,KAAKqa,OAASA,CAClB,CAKA,OADA3B,EAA2BC,MAAQ,IAAID,EAChCA,CACX,CAjB+C,GAkB/Cvb,EAAQub,2BAA6BA,CAErC,EAAE,CAAC,GAAG,GAAG,CAAC,SAAS7I,EAAQT,EAAOjS,GAClC,aAQAF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,GAEtD,EAAE,CAAC,GAAG,GAAG,CAAC,SAASyS,EAAQT,EAAOjS,GAClC,aACAF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQoc,sBAAmB,EAC3B,IAAItB,EAAqBpI,EAAQ,sBAI7B0J,EAAkC,WAClC,SAASA,IACT,CA8EA,OAvEAA,EAAiBlD,UAAY,SAAUtE,EAAQvI,GAC3CA,EAAOI,MAAMmI,EAAOC,YAAahS,KAAKsa,WAAY,EAAGta,KAAKua,UAC1D/Q,EAAOI,MAAM5J,KAAKwa,UAAWxa,KAAKya,oBAAqB,EAAGza,KAAKua,UAC/D/Q,EAAOI,MAAM5J,KAAK0a,mBAAmB3I,EAAOE,cAAejS,KAAK2a,aAAc,KAAM3a,KAAK4a,aAAc5a,KAAK2a,aAAc3a,KAAKua,UAC/H/Q,EAAOI,MAAM5J,KAAKwa,UAAWxa,KAAK6a,sBAAuB,EAAG7a,KAAKua,UACjE/Q,EAAOI,MAAMmI,EAAOnK,GAAI5H,KAAK8a,UAC7BtR,EAAOI,MAAM5J,KAAKwa,UAAWxa,KAAK+a,kBAAmB,EAAG/a,KAAKua,UAC7D/Q,EAAOI,MAAMmI,EAAOG,IAAMlS,KAAKgb,IAAMhb,KAAKib,OAAQjb,KAAKkb,WACvD1R,EAAOI,MAAM5J,KAAKmb,WAAYnb,KAAKob,iBACvC,EAOA7B,EAAiBC,YAAc,SAAUhQ,GACrC,IAAI6R,EAAa7R,EAAO6B,SAASrL,KAAKua,UAClCe,EAAcD,EAAWE,MAAMvb,KAAKwa,WACxC,GAA2B,IAAvBc,EAAY1Z,OACZ,MAAME,MAAM,qDAAqD8D,OAAOyV,IAE5E,IAAIrJ,EAAcsJ,EAAY,GAAI1Z,EAAS0Z,EAAY,GAAI1T,EAAK0T,EAAY,GAAIE,EAAYF,EAAY,GAGpGvJ,EAAS,CAAEG,IAFS,QAAdsJ,EAEevJ,cADLwJ,OAAO7Z,GAC4BoQ,YAAaA,EAAapK,GAAIA,GACrF,KAAMmK,EAAOE,eAAiBgG,EAAmBkB,iBAAiBM,kBAC9D1H,EAAOE,eAAiBgG,EAAmBkB,iBAAiBuC,WAC5D,MAAM5Z,MAAM,oBAAoB8D,OAAOmM,EAAOE,cAAe,6BAEjE,GAAIF,EAAOC,YAAYpQ,SAAW5B,KAAKya,oBACnC,MAAM3Y,MAAM,gBAAgB8D,OAAOmM,EAAOC,YAAYpQ,OAAQ,+BAElE,IAAKmQ,EAAOnK,KACPmK,EAAOnK,GAAG+T,MAAM,oEACjB5J,EAAOnK,GAAGhG,SAAW5B,KAAK4b,SAC1B,MAAM9Z,MAAM,cAAc8D,OAAOmM,EAAOnK,GAAI,+BAEhD,GAAoB,QAAd4T,GAAqC,QAAdA,EACzB,MAAM1Z,MAAM,4DAA4D8D,OAAO4V,EAAW,MAE9F,OAAOzJ,CACX,EASAwH,EAAiBmB,mBAAqB,SAAUmB,EAAaC,EAAaC,GACtE,IAAIxN,EAASqH,MAAMkG,EAAc,GAAGpH,KAAKqH,GACrCC,EAAeH,EAAYxQ,WAC/B,OAAQkD,EAASyN,GAAchJ,MAAMgJ,EAAapa,OACtD,EACA2X,EAAiBiB,UAAY,IAC7BjB,EAAiB4B,WAAa,KAC9B5B,EAAiByB,IAAM,IACvBzB,EAAiB0B,OAAS,IAC1B1B,EAAiBe,WAAa,EAC9Bf,EAAiBkB,oBAAsB,EACvClB,EAAiBqB,aAAe,EAChCrB,EAAiBoB,aAAe,EAChCpB,EAAiBsB,sBAAwB,EACzCtB,EAAiBuB,SAAW,EAC5BvB,EAAiBqC,SAAW,GAC5BrC,EAAiBwB,kBAAoB,GACrCxB,EAAiB2B,UAAY,GAC7B3B,EAAiB6B,iBAAmB,GACpC7B,EAAiBgB,SAAW,OACrBhB,CACX,CAjFqC,GAkFrCpc,EAAQoc,iBAAmBA,CAE3B,EAAE,CAAC,qBAAqB,KAAK,GAAG,CAAC,SAAS1J,EAAQT,EAAOjS,GACzD,aAQA,IAAIua,EAAmB1X,MAAQA,KAAK0X,kBAAqBza,OAAOgF,OAAS,SAAUsN,EAAGoI,EAAGC,EAAGC,QAC7E/R,IAAP+R,IAAkBA,EAAKD,GAC3B,IAAI3Y,EAAOhC,OAAO2B,yBAAyB+Y,EAAGC,GACzC3Y,KAAS,QAASA,GAAQ0Y,EAAEtZ,WAAaY,EAAKqE,UAAYrE,EAAKoV,gBAClEpV,EAAO,CAAEmV,YAAY,EAAM3V,IAAK,WAAa,OAAOkZ,EAAEC,EAAI,IAE5D3a,OAAOC,eAAeqS,EAAGsI,EAAI5Y,EAChC,EAAI,SAAUsQ,EAAGoI,EAAGC,EAAGC,QACT/R,IAAP+R,IAAkBA,EAAKD,GAC3BrI,EAAEsI,GAAMF,EAAEC,EACb,GACGE,EAAgB9X,MAAQA,KAAK8X,cAAiB,SAASH,EAAGxa,GAC1D,IAAK,IAAIyS,KAAK+H,EAAa,YAAN/H,GAAoB3S,OAAO6B,UAAUC,eAAeC,KAAK7B,EAASyS,IAAI8H,EAAgBva,EAASwa,EAAG/H,EAC3H,EACA3S,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtD0a,EAAajI,EAAQ,sBAAuB1S,GAC5C2a,EAAajI,EAAQ,mBAAoB1S,GACzC2a,EAAajI,EAAQ,6BAA8B1S,GACnD2a,EAAajI,EAAQ,kBAAmB1S,GACxC2a,EAAajI,EAAQ,oBAAqB1S,GAC1C2a,EAAajI,EAAQ,oBAAqB1S,GAC1C2a,EAAajI,EAAQ,mBAAoB1S,EAEzC,EAAE,CAAC,qBAAqB,GAAG,4BAA4B,GAAG,iBAAiB,GAAG,mBAAmB,GAAG,mBAAmB,GAAG,kBAAkB,KAAK,GAAG,CAAC,SAAS0S,EAAQT,EAAOjS,GAC7K,aACAF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ8e,6BAA0B,EAClC,IAAIC,EAAqBrM,EAAQ,kCAC7B2G,EAAiB3G,EAAQ,kBAIzBoM,EAAyC,WAQzC,SAASA,EAAwBrK,EAAeuK,EAAmBC,GAC/Dpc,KAAK4R,cAAgBA,EACrB5R,KAAKmc,kBAAoBA,EACzBnc,KAAKoc,iBAAmBA,EACxBpc,KAAKqc,iBAAmB,CAAC,CAC7B,CAsDA,OA/CAJ,EAAwBnd,UAAUuT,iBAAmB,SAAUN,GAC3D,GAAIA,EAAOC,cAAgBwE,EAAe/D,aAAa1R,OACnD,OAAOf,KAAK4R,cAAcS,iBAAiBN,GAE1C,IAAK/R,KAAKqc,iBAAiBtK,EAAOnK,IAAK,CACxC,IAAIuM,EAAYnU,KAAKsc,uBAAuBvK,GAC5C,GAAIoC,EAEA,OADAnU,KAAKqc,iBAAiBtK,EAAOnK,IAAMuM,EAC5BA,EAAU9B,kBAEzB,CACJ,EAQA4J,EAAwBnd,UAAUyT,UAAY,SAAUR,EAAQkE,EAAelM,GACvEgI,EAAOC,cAAgBwE,EAAe/D,aAAa1R,OACnDf,KAAK4R,cAAcW,UAAUR,EAAQkE,EAAelM,IAGhD/J,KAAKqc,kBAAoBrc,KAAKqc,iBAAiBtK,EAAOnK,KACtC5H,KAAKqc,iBAAiBtK,EAAOnK,IACnC2K,UAAUR,EAAQkE,EAAelM,GAE3CgI,EAAOG,YACAlS,KAAKqc,iBAAiBtK,EAAOnK,IAGhD,EACAqU,EAAwBnd,UAAUwd,uBAAyB,SAAUvK,GACjE,OAAIA,EAAOC,cAAgBwE,EAAe/D,aAAalS,QAC5C,IAAI2b,EAAmB1K,iBAAiBxR,KAAK4R,cAAe,CAC/DG,OAAQA,EACRK,YAAapS,KAAKoc,mBAGjBrK,EAAOC,cAAgBwE,EAAe/D,aAAahH,SACjD,IAAIyQ,EAAmB1K,iBAAiBxR,KAAK4R,cAAe,CAC/DG,OAAQA,EACRK,YAAapS,KAAKmc,yBAHrB,CAMT,EACOF,CACX,CApE4C,GAqE5C9e,EAAQ8e,wBAA0BA,CAElC,EAAE,CAAC,iCAAiC,EAAE,iBAAiB,KAAK,GAAG,CAAC,SAASpM,EAAQT,EAAOjS,GACxF,aAQAF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQgc,sBAAmB,EAK3B,SAAWA,GACPA,EAAiBA,EAAmC,iBAAI,MAAQ,mBAChEA,EAAiBA,EAAkC,gBAAI,IAAM,kBAC7DA,EAAiBA,EAA4B,UAAI,QAAU,YAC3DA,EAAiBA,EAA4B,UAAI,GAAK,WACzD,CALD,CAKsBhc,EAAQgc,mBAAqBhc,EAAQgc,iBAAmB,CAAC,GAE/E,EAAE,CAAC,GAAG,GAAG,CAAC,SAAStJ,EAAQT,EAAOjS,GAClC,aAQAF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQsV,kBAAe,EAKvB,SAAWA,GACPA,EAAsB,QAAI,IAC1BA,EAAuB,SAAI,IAC3BA,EAAqB,OAAI,IACzBA,EAAwB,UAAI,IAC5BA,EAA2B,aAAI,GAClC,CAND,CAMkBtV,EAAQsV,eAAiBtV,EAAQsV,aAAe,CAAC,GAEnE,EAAE,CAAC,GAAG,GAAG,CAAC,SAAS5C,EAAQT,EAAOjS,GAClC,aACA,IAAI2S,EAAa9P,MAAQA,KAAK8P,WAAc,SAAUC,EAASC,EAAYC,EAAGC,GAC1E,SAASC,EAAM/S,GAAS,OAAOA,aAAiB6S,EAAI7S,EAAQ,IAAI6S,GAAE,SAAUnL,GAAWA,EAAQ1H,EAAQ,GAAI,CAC3G,OAAO,IAAK6S,IAAMA,EAAI3J,WAAU,SAAUxB,EAASwF,GAC/C,SAAS8F,EAAUhT,GAAS,IAAMiT,EAAKH,EAAU7O,KAAKjE,GAAS,CAAE,MAAO6M,GAAKK,EAAOL,EAAI,CAAE,CAC1F,SAASqG,EAASlT,GAAS,IAAMiT,EAAKH,EAAiB,MAAE9S,GAAS,CAAE,MAAO6M,GAAKK,EAAOL,EAAI,CAAE,CAC7F,SAASoG,EAAK9B,GAAUA,EAAOgC,KAAOzL,EAAQyJ,EAAOnR,OAAS+S,EAAM5B,EAAOnR,OAAOoT,KAAKJ,EAAWE,EAAW,CAC7GD,GAAMH,EAAYA,EAAUzN,MAAMsN,EAASC,GAAc,KAAK3O,OAClE,GACJ,EACIoP,EAAezQ,MAAQA,KAAKyQ,aAAgB,SAAUV,EAASW,GAC/D,IAAsGjB,EAAGkB,EAAGrB,EAAGsB,EAA3GC,EAAI,CAAEC,MAAO,EAAGtP,KAAM,WAAa,GAAW,EAAP8N,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,EAAI,EAAGyB,KAAM,GAAIC,IAAK,IAChG,OAAOJ,EAAI,CAAEvP,KAAM4P,EAAK,GAAI,MAASA,EAAK,GAAI,OAAUA,EAAK,IAAwB,mBAAXC,SAA0BN,EAAEM,OAAOC,UAAY,WAAa,OAAOnR,IAAM,GAAI4Q,EACvJ,SAASK,EAAK5B,GAAK,OAAO,SAAU+B,GAAK,OAAOf,EAAK,CAAChB,EAAG+B,GAAK,CAAG,CACjE,SAASf,EAAKgB,GACV,GAAI5B,EAAG,MAAM,IAAI6B,UAAU,mCAC3B,KAAOV,IAAMA,EAAI,EAAGS,EAAG,KAAOR,EAAI,IAAKA,OACnC,GAAIpB,EAAI,EAAGkB,IAAMrB,EAAY,EAAR+B,EAAG,GAASV,EAAU,OAAIU,EAAG,GAAKV,EAAS,SAAOrB,EAAIqB,EAAU,SAAMrB,EAAEtQ,KAAK2R,GAAI,GAAKA,EAAEtP,SAAWiO,EAAIA,EAAEtQ,KAAK2R,EAAGU,EAAG,KAAKd,KAAM,OAAOjB,EAE3J,OADIqB,EAAI,EAAGrB,IAAG+B,EAAK,CAAS,EAARA,EAAG,GAAQ/B,EAAElS,QACzBiU,EAAG,IACP,KAAK,EAAG,KAAK,EAAG/B,EAAI+B,EAAI,MACxB,KAAK,EAAc,OAAXR,EAAEC,QAAgB,CAAE1T,MAAOiU,EAAG,GAAId,MAAM,GAChD,KAAK,EAAGM,EAAEC,QAASH,EAAIU,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKR,EAAEG,IAAIO,MAAOV,EAAEE,KAAKQ,MAAO,SACxC,QACI,MAAkBjC,GAAZA,EAAIuB,EAAEE,MAAYnP,OAAS,GAAK0N,EAAEA,EAAE1N,OAAS,KAAkB,IAAVyP,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAER,EAAI,EAAG,QAAU,CAC3G,GAAc,IAAVQ,EAAG,MAAc/B,GAAM+B,EAAG,GAAK/B,EAAE,IAAM+B,EAAG,GAAK/B,EAAE,IAAM,CAAEuB,EAAEC,MAAQO,EAAG,GAAI,KAAO,CACrF,GAAc,IAAVA,EAAG,IAAYR,EAAEC,MAAQxB,EAAE,GAAI,CAAEuB,EAAEC,MAAQxB,EAAE,GAAIA,EAAI+B,EAAI,KAAO,CACpE,GAAI/B,GAAKuB,EAAEC,MAAQxB,EAAE,GAAI,CAAEuB,EAAEC,MAAQxB,EAAE,GAAIuB,EAAEG,IAAI9O,KAAKmP,GAAK,KAAO,CAC9D/B,EAAE,IAAIuB,EAAEG,IAAIO,MAChBV,EAAEE,KAAKQ,MAAO,SAEtBF,EAAKX,EAAK1R,KAAK+Q,EAASc,EAC5B,CAAE,MAAO5G,GAAKoH,EAAK,CAAC,EAAGpH,GAAI0G,EAAI,CAAG,CAAE,QAAUlB,EAAIH,EAAI,CAAG,CACzD,GAAY,EAAR+B,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAEjU,MAAOiU,EAAG,GAAKA,EAAG,QAAK,EAAQd,MAAM,EAC9E,CACJ,EACAtT,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQof,oBAAiB,EAIzB,IAAIC,EAAgC,WAChC,SAASA,IACT,CACA,OAAOA,CACX,CAJmC,GAQ/BD,EAAgC,WAChC,SAASA,IACLvc,KAAKyc,iBAAmB,CAAC,CAC7B,CA+DA,OAzDAF,EAAezd,UAAU4d,oBAAsB,WAC3C,OAAOzf,OAAO0f,KAAK3c,KAAKyc,kBAAkB7a,MAC9C,EAQA2a,EAAezd,UAAU8d,eAAiB,SAAUC,EAAWpR,GAC3D,OAAOqE,EAAU9P,UAAM,OAAQ,GAAQ,WACnC,IAAI8c,EACJ,OAAOrM,EAAYzQ,MAAM,SAAUqT,GAE/B,OADAyJ,EAAiB9c,KAAKyc,iBAAiBI,KAEnCC,EAAehY,QAAQ2G,UAChBzL,KAAKyc,iBAAiBI,GACtB,CAAC,GAAc,IAEnB,CAAC,GAAc,EAC1B,GACJ,GACJ,EAOAN,EAAezd,UAAUie,YAAc,SAAUF,GAC7C,IAAIC,EAAiB9c,KAAKyc,iBAAiBI,GAC3C,GAAIC,EACA,OAAOxW,QAAQgE,OAAO,cAAc1E,OAAOiX,EAAW,wCAE1DC,EAAiB,IAAIN,GACNK,UAAYA,EAC3B,IAAIhQ,EAAU,IAAIvG,SAAQ,SAAUxB,EAASwF,GACzCwS,EAAehY,QAAUA,EACzBgY,EAAexS,OAASA,CAC5B,IAEA,OADAtK,KAAKyc,iBAAiBI,GAAaC,EAC5BjQ,CACX,EAMA0P,EAAezd,UAAUke,mBAAqB,SAAU3C,GACpD,IAAI1X,EAAQ3C,KACZ/C,OAAOggB,QAAQjd,KAAKyc,kBAAkB5Z,SAAQ,SAAUwQ,GACpD,IAAIwJ,EAAYxJ,EAAG,IACnB/I,EADgC+I,EAAG,GAAG/I,QAC/B+P,UACA1X,EAAM8Z,iBAAiBI,EAClC,GACJ,EACON,CACX,CAnEmC,GAoEnCpf,EAAQof,eAAiBA,CAEzB,EAAE,CAAC,GAAG,GAAG,CAAC,SAAS1M,EAAQT,EAAOjS,GAClC,aACA,IAAI2S,EAAa9P,MAAQA,KAAK8P,WAAc,SAAUC,EAASC,EAAYC,EAAGC,GAC1E,SAASC,EAAM/S,GAAS,OAAOA,aAAiB6S,EAAI7S,EAAQ,IAAI6S,GAAE,SAAUnL,GAAWA,EAAQ1H,EAAQ,GAAI,CAC3G,OAAO,IAAK6S,IAAMA,EAAI3J,WAAU,SAAUxB,EAASwF,GAC/C,SAAS8F,EAAUhT,GAAS,IAAMiT,EAAKH,EAAU7O,KAAKjE,GAAS,CAAE,MAAO6M,GAAKK,EAAOL,EAAI,CAAE,CAC1F,SAASqG,EAASlT,GAAS,IAAMiT,EAAKH,EAAiB,MAAE9S,GAAS,CAAE,MAAO6M,GAAKK,EAAOL,EAAI,CAAE,CAC7F,SAASoG,EAAK9B,GAAUA,EAAOgC,KAAOzL,EAAQyJ,EAAOnR,OAAS+S,EAAM5B,EAAOnR,OAAOoT,KAAKJ,EAAWE,EAAW,CAC7GD,GAAMH,EAAYA,EAAUzN,MAAMsN,EAASC,GAAc,KAAK3O,OAClE,GACJ,EACIoP,EAAezQ,MAAQA,KAAKyQ,aAAgB,SAAUV,EAASW,GAC/D,IAAsGjB,EAAGkB,EAAGrB,EAAGsB,EAA3GC,EAAI,CAAEC,MAAO,EAAGtP,KAAM,WAAa,GAAW,EAAP8N,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,EAAI,EAAGyB,KAAM,GAAIC,IAAK,IAChG,OAAOJ,EAAI,CAAEvP,KAAM4P,EAAK,GAAI,MAASA,EAAK,GAAI,OAAUA,EAAK,IAAwB,mBAAXC,SAA0BN,EAAEM,OAAOC,UAAY,WAAa,OAAOnR,IAAM,GAAI4Q,EACvJ,SAASK,EAAK5B,GAAK,OAAO,SAAU+B,GAAK,OAAOf,EAAK,CAAChB,EAAG+B,GAAK,CAAG,CACjE,SAASf,EAAKgB,GACV,GAAI5B,EAAG,MAAM,IAAI6B,UAAU,mCAC3B,KAAOV,IAAMA,EAAI,EAAGS,EAAG,KAAOR,EAAI,IAAKA,OACnC,GAAIpB,EAAI,EAAGkB,IAAMrB,EAAY,EAAR+B,EAAG,GAASV,EAAU,OAAIU,EAAG,GAAKV,EAAS,SAAOrB,EAAIqB,EAAU,SAAMrB,EAAEtQ,KAAK2R,GAAI,GAAKA,EAAEtP,SAAWiO,EAAIA,EAAEtQ,KAAK2R,EAAGU,EAAG,KAAKd,KAAM,OAAOjB,EAE3J,OADIqB,EAAI,EAAGrB,IAAG+B,EAAK,CAAS,EAARA,EAAG,GAAQ/B,EAAElS,QACzBiU,EAAG,IACP,KAAK,EAAG,KAAK,EAAG/B,EAAI+B,EAAI,MACxB,KAAK,EAAc,OAAXR,EAAEC,QAAgB,CAAE1T,MAAOiU,EAAG,GAAId,MAAM,GAChD,KAAK,EAAGM,EAAEC,QAASH,EAAIU,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKR,EAAEG,IAAIO,MAAOV,EAAEE,KAAKQ,MAAO,SACxC,QACI,MAAkBjC,GAAZA,EAAIuB,EAAEE,MAAYnP,OAAS,GAAK0N,EAAEA,EAAE1N,OAAS,KAAkB,IAAVyP,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAER,EAAI,EAAG,QAAU,CAC3G,GAAc,IAAVQ,EAAG,MAAc/B,GAAM+B,EAAG,GAAK/B,EAAE,IAAM+B,EAAG,GAAK/B,EAAE,IAAM,CAAEuB,EAAEC,MAAQO,EAAG,GAAI,KAAO,CACrF,GAAc,IAAVA,EAAG,IAAYR,EAAEC,MAAQxB,EAAE,GAAI,CAAEuB,EAAEC,MAAQxB,EAAE,GAAIA,EAAI+B,EAAI,KAAO,CACpE,GAAI/B,GAAKuB,EAAEC,MAAQxB,EAAE,GAAI,CAAEuB,EAAEC,MAAQxB,EAAE,GAAIuB,EAAEG,IAAI9O,KAAKmP,GAAK,KAAO,CAC9D/B,EAAE,IAAIuB,EAAEG,IAAIO,MAChBV,EAAEE,KAAKQ,MAAO,SAEtBF,EAAKX,EAAK1R,KAAK+Q,EAASc,EAC5B,CAAE,MAAO5G,GAAKoH,EAAK,CAAC,EAAGpH,GAAI0G,EAAI,CAAG,CAAE,QAAUlB,EAAIH,EAAI,CAAG,CACzD,GAAY,EAAR+B,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAEjU,MAAOiU,EAAG,GAAKA,EAAG,QAAK,EAAQd,MAAM,EAC9E,CACJ,EACAtT,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ+f,oBAAiB,EACzB,IAAIC,EAAuBtN,EAAQ,uCAC/BuN,EAAkCvN,EAAQ,kDAC1CwN,EAAwBxN,EAAQ,wCAChCyN,EAAyBzN,EAAQ,yCACjC2G,EAAiB3G,EAAQ,kBAIzBqN,EAAgC,WAMhC,SAASA,EAAeK,GACpBvd,KAAKud,cAAgBA,CACzB,CAoFA,OA7EAL,EAAepe,UAAU0e,YAAc,SAAU5V,EAAIrH,GACjD,OAAOuP,EAAU9P,UAAM,OAAQ,GAAQ,WACnC,IACI2C,EAAQ3C,KACZ,OAAOyQ,EAAYzQ,MAAM,SAAUqT,GAC/B,OAAQA,EAAGvC,OACP,KAAK,EAED,MAAO,CAAC,EADO,IAAIuM,EAAsB9G,oBAAoBvW,KAAKud,cAAe3V,EAAIrH,GACnD6U,eACtC,KAAK,EAcD,OAbA/B,EAAG7R,OACCjB,EAAQE,SACRF,EAAQE,QAAQoC,SAAQ,SAAUoT,GAAiB,OAAOnG,EAAUnN,OAAO,OAAQ,GAAQ,WACvF,OAAO8N,EAAYzQ,MAAM,SAAUqT,GAC/B,OAAQA,EAAGvC,OACP,KAAK,EAAG,MAAO,CAAC,EAAa,IAAIsM,EAAgCrH,8BAA8B/V,KAAKud,cAAetH,GAAeb,eAClI,KAAK,EAED,OADA/B,EAAG7R,OACI,CAAC,GAEpB,GACJ,GAAI,IAED,CAAC,GAEpB,GACJ,GACJ,EAOA0b,EAAepe,UAAU2e,aAAe,SAAU7V,EAAI6D,GAClD,OAAOqE,EAAU9P,UAAM,OAAQ,GAAQ,WACnC,IACI2C,EAAQ3C,KACZ,OAAOyQ,EAAYzQ,MAAM,SAAUqT,GAC/B,OAAQA,EAAGvC,OACP,KAAK,EAED,MAAO,CAAC,EADO,IAAIwM,EAAuBxG,qBAAqB9W,KAAKud,cAAe3V,EAAI6D,GACrD2J,eACtC,KAAK,EAcD,OAbA/B,EAAG7R,OACCiK,EAAShL,SACTgL,EAAShL,QAAQoC,SAAQ,SAAUoT,GAAiB,OAAOnG,EAAUnN,OAAO,OAAQ,GAAQ,WACxF,OAAO8N,EAAYzQ,MAAM,SAAUqT,GAC/B,OAAQA,EAAGvC,OACP,KAAK,EAAG,MAAO,CAAC,EAAa,IAAIsM,EAAgCrH,8BAA8B/V,KAAKud,cAAetH,GAAeb,eAClI,KAAK,EAED,OADA/B,EAAG7R,OACI,CAAC,GAEpB,GACJ,GAAI,IAED,CAAC,GAEpB,GACJ,GACJ,EAMA0b,EAAepe,UAAU4e,iBAAmB,SAAU9V,GAClD,OAAOkI,EAAU9P,UAAM,OAAQ,GAAQ,WAEnC,OAAOyQ,EAAYzQ,MAAM,SAAUqT,GAG/B,OAFe,IAAI8J,EAAqBjI,mBAAmBlV,KAAKud,cAAe3V,EAAI4O,EAAe/D,aAAakL,cAClGvI,cACN,CAAC,EACZ,GACJ,GACJ,EACO8H,CACX,CA7FmC,GA8FnC/f,EAAQ+f,eAAiBA,CAEzB,EAAE,CAAC,sCAAsC,EAAE,iDAAiD,EAAE,uCAAuC,EAAE,wCAAwC,EAAE,iBAAiB,KAAK,GAAG,CAAC,SAASrN,EAAQT,EAAOjS,GACnO,aACAF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQygB,mBAAgB,EACxB,IAAI1B,EAAqBrM,EAAQ,kCAI7B+N,EAA+B,WAM/B,SAASA,EAAcC,GACnB7d,KAAK6d,eAAiBA,EACtB7d,KAAKqc,iBAAmB,EAC5B,CA2DA,OApDAuB,EAAc9e,UAAUmV,oBAAsB,SAAUrM,GACpD,GAAK5H,KAAKqc,iBAAiBzU,GAOvB,OAAO5H,KAAKqc,iBAAiBzU,GAL7B,IAAIuM,EAAY,IAAI+H,EAAmB1K,iBAAiBxR,KAAM,CAAE4H,GAAIA,IAEpE,OADA5H,KAAKqc,iBAAiBzU,GAAMuM,EACrBA,CAKf,EAOAyJ,EAAc9e,UAAUuT,iBAAmB,SAAUN,GAEjD,OADgB/R,KAAKiU,oBAAoBlC,EAAOnK,IAC/ByK,kBACrB,EAQAuL,EAAc9e,UAAUyT,UAAY,SAAUR,EAAQkE,EAAelM,GAC5D/J,KAAKqc,iBAAiBtK,EAAOnK,KAGlC5H,KAAKqc,iBAAiBtK,EAAOnK,IAAI2K,UAAUR,EAAQkE,EAAelM,EACtE,EAMA6T,EAAc9e,UAAU+T,YAAc,SAAUjL,GAC5C,GAAK5H,KAAKqc,iBAAiBzU,GAA3B,CAII,IAAIuM,EAAYnU,KAAKqc,iBAAiBzU,GACtC5H,KAAKqc,iBAAiByB,OAAO9d,KAAKqc,iBAAiB0B,QAAQnW,GAAK,GAChE,IAAIoW,EAAe7J,EAAU9B,oBACxB8B,EAAUpK,eAAiBiU,EAAapc,OAASuS,EAAUpK,gBAAmBoK,EAAUjC,MACzFlS,KAAK6d,eAAe1J,EAE5B,CACJ,EACOyJ,CACX,CArEkC,GAsElCzgB,EAAQygB,cAAgBA,CAExB,EAAE,CAAC,iCAAiC,IAAI,GAAG,CAAC,SAAS/N,EAAQT,EAAOjS,GACpE,aACA,IAAI2S,EAAa9P,MAAQA,KAAK8P,WAAc,SAAUC,EAASC,EAAYC,EAAGC,GAC1E,SAASC,EAAM/S,GAAS,OAAOA,aAAiB6S,EAAI7S,EAAQ,IAAI6S,GAAE,SAAUnL,GAAWA,EAAQ1H,EAAQ,GAAI,CAC3G,OAAO,IAAK6S,IAAMA,EAAI3J,WAAU,SAAUxB,EAASwF,GAC/C,SAAS8F,EAAUhT,GAAS,IAAMiT,EAAKH,EAAU7O,KAAKjE,GAAS,CAAE,MAAO6M,GAAKK,EAAOL,EAAI,CAAE,CAC1F,SAASqG,EAASlT,GAAS,IAAMiT,EAAKH,EAAiB,MAAE9S,GAAS,CAAE,MAAO6M,GAAKK,EAAOL,EAAI,CAAE,CAC7F,SAASoG,EAAK9B,GAAUA,EAAOgC,KAAOzL,EAAQyJ,EAAOnR,OAAS+S,EAAM5B,EAAOnR,OAAOoT,KAAKJ,EAAWE,EAAW,CAC7GD,GAAMH,EAAYA,EAAUzN,MAAMsN,EAASC,GAAc,KAAK3O,OAClE,GACJ,EACIoP,EAAezQ,MAAQA,KAAKyQ,aAAgB,SAAUV,EAASW,GAC/D,IAAsGjB,EAAGkB,EAAGrB,EAAGsB,EAA3GC,EAAI,CAAEC,MAAO,EAAGtP,KAAM,WAAa,GAAW,EAAP8N,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,EAAI,EAAGyB,KAAM,GAAIC,IAAK,IAChG,OAAOJ,EAAI,CAAEvP,KAAM4P,EAAK,GAAI,MAASA,EAAK,GAAI,OAAUA,EAAK,IAAwB,mBAAXC,SAA0BN,EAAEM,OAAOC,UAAY,WAAa,OAAOnR,IAAM,GAAI4Q,EACvJ,SAASK,EAAK5B,GAAK,OAAO,SAAU+B,GAAK,OAAOf,EAAK,CAAChB,EAAG+B,GAAK,CAAG,CACjE,SAASf,EAAKgB,GACV,GAAI5B,EAAG,MAAM,IAAI6B,UAAU,mCAC3B,KAAOV,IAAMA,EAAI,EAAGS,EAAG,KAAOR,EAAI,IAAKA,OACnC,GAAIpB,EAAI,EAAGkB,IAAMrB,EAAY,EAAR+B,EAAG,GAASV,EAAU,OAAIU,EAAG,GAAKV,EAAS,SAAOrB,EAAIqB,EAAU,SAAMrB,EAAEtQ,KAAK2R,GAAI,GAAKA,EAAEtP,SAAWiO,EAAIA,EAAEtQ,KAAK2R,EAAGU,EAAG,KAAKd,KAAM,OAAOjB,EAE3J,OADIqB,EAAI,EAAGrB,IAAG+B,EAAK,CAAS,EAARA,EAAG,GAAQ/B,EAAElS,QACzBiU,EAAG,IACP,KAAK,EAAG,KAAK,EAAG/B,EAAI+B,EAAI,MACxB,KAAK,EAAc,OAAXR,EAAEC,QAAgB,CAAE1T,MAAOiU,EAAG,GAAId,MAAM,GAChD,KAAK,EAAGM,EAAEC,QAASH,EAAIU,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKR,EAAEG,IAAIO,MAAOV,EAAEE,KAAKQ,MAAO,SACxC,QACI,MAAkBjC,GAAZA,EAAIuB,EAAEE,MAAYnP,OAAS,GAAK0N,EAAEA,EAAE1N,OAAS,KAAkB,IAAVyP,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAER,EAAI,EAAG,QAAU,CAC3G,GAAc,IAAVQ,EAAG,MAAc/B,GAAM+B,EAAG,GAAK/B,EAAE,IAAM+B,EAAG,GAAK/B,EAAE,IAAM,CAAEuB,EAAEC,MAAQO,EAAG,GAAI,KAAO,CACrF,GAAc,IAAVA,EAAG,IAAYR,EAAEC,MAAQxB,EAAE,GAAI,CAAEuB,EAAEC,MAAQxB,EAAE,GAAIA,EAAI+B,EAAI,KAAO,CACpE,GAAI/B,GAAKuB,EAAEC,MAAQxB,EAAE,GAAI,CAAEuB,EAAEC,MAAQxB,EAAE,GAAIuB,EAAEG,IAAI9O,KAAKmP,GAAK,KAAO,CAC9D/B,EAAE,IAAIuB,EAAEG,IAAIO,MAChBV,EAAEE,KAAKQ,MAAO,SAEtBF,EAAKX,EAAK1R,KAAK+Q,EAASc,EAC5B,CAAE,MAAO5G,GAAKoH,EAAK,CAAC,EAAGpH,GAAI0G,EAAI,CAAG,CAAE,QAAUlB,EAAIH,EAAI,CAAG,CACzD,GAAY,EAAR+B,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAEjU,MAAOiU,EAAG,GAAKA,EAAG,QAAK,EAAQd,MAAM,EAC9E,CACJ,EACAtT,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ8gB,qBAAkB,EAC1B,IAAIC,EAA4BrO,EAAQ,sCACpCsO,EAAmBtO,EAAQ,6BAC3BuO,EAAkBvO,EAAQ,4BAC1BmH,EAAkBnH,EAAQ,6BAI1BoO,EAAiC,WASjC,SAASA,EAAgBnS,EAAgBuS,EAAgBlJ,EAAQiD,GAC7D,IAAIzV,EAAQ3C,KACZA,KAAK8L,eAAiBA,EACtB9L,KAAKqe,eAAiBA,EACtBre,KAAKud,cAAgBpI,EACrBnV,KAAKse,gBAAkBlG,EACvBpY,KAAKue,eAAiB,IAAIJ,EAAiBjB,eAAeld,KAAKud,eAC/Dvd,KAAK4R,cAAgB,IAAIwM,EAAgBR,cAAc5d,KAAK6d,gBAC5D7d,KAAKwe,iBAAmB,IAAIN,EAA0BjC,wBAAwBjc,KAAK4R,eAAe,SAAUhK,EAAI6D,GAAY,OAAO9I,EAAMwZ,kBAAkBvU,EAAI6D,EAAW,IAAG,SAAU7D,EAAIrH,GAAW,OAAOoC,EAAMyZ,iBAAiBxU,EAAIrH,EAAU,IAClPP,KAAKse,gBAAgB1b,WAAU,SAAUmP,GAAU,OAAOpP,EAAM6b,iBAAiBnM,iBAAiBN,EAAS,IAAG,SAAUA,EAAQkE,EAAelM,GAC3I,OAAOpH,EAAM6b,iBAAiBjM,UAAUR,EAAQkE,EAAelM,EACnE,GACJ,CA2EA,OApEAkU,EAAgBnf,UAAU0e,YAAc,SAAUjd,GAC9C,OAAOuP,EAAU9P,UAAM,OAAQ,GAAQ,WACnC,IAAI6c,EAAW4B,EACf,OAAOhO,EAAYzQ,MAAM,SAAUqT,GAC/B,OAAQA,EAAGvC,OACP,KAAK,EAGD,OAFA+L,GAAY,EAAI7F,EAAgBE,gBAChCuH,EAAqBze,KAAKqe,eAAetB,YAAYF,GAC9C,CAAC,EAAa7c,KAAKue,eAAef,YAAYX,EAAWtc,IACpE,KAAK,EAED,OADA8S,EAAG7R,OACI,CAAC,EAAcid,GAElC,GACJ,GACJ,EAOAR,EAAgBnf,UAAUsd,iBAAmB,SAAUxU,EAAIrH,GACvD,OAAOuP,EAAU9P,UAAM,OAAQ,GAAQ,WACnC,IAAIyL,EACJ,OAAOgF,EAAYzQ,MAAM,SAAUqT,GAC/B,OAAQA,EAAGvC,OACP,KAAK,EACD,OAAK9Q,KAAK8L,eACH,CAAC,EAAa9L,KAAK8L,eAAeC,eAAexL,IADvB,CAAC,EAAa,GAEnD,KAAK,EAED,OADAkL,EAAW4H,EAAG7R,QAEP,CAAC,EAAaxB,KAAKue,eAAed,aAAa7V,EAAI6D,IADpC,CAAC,EAAa,GAExC,KAAK,EACD4H,EAAG7R,OACH6R,EAAGvC,MAAQ,EACf,KAAK,EAAG,MAAO,CAAC,GAExB,GACJ,GACJ,EAOAmN,EAAgBnf,UAAUqd,kBAAoB,SAAUvU,EAAI6D,GACxD,OAAOqE,EAAU9P,UAAM,OAAQ,GAAQ,WACnC,OAAOyQ,EAAYzQ,MAAM,SAAUqT,GAC/B,OAAQA,EAAGvC,OACP,KAAK,EAAG,MAAO,CAAC,EAAa9Q,KAAKqe,eAAezB,eAAehV,EAAI6D,IACpE,KAAK,EAED,OADA4H,EAAG7R,OACI,CAAC,GAEpB,GACJ,GACJ,EAMAyc,EAAgBnf,UAAU+e,eAAiB,SAAUa,GACjD1e,KAAKue,eAAeb,iBAAiBgB,EAAuB9W,IAAI+K,OACpE,EACOsL,CACX,CAjGoC,GAkGpC9gB,EAAQ8gB,gBAAkBA,CAE1B,EAAE,CAAC,qCAAqC,GAAG,4BAA4B,GAAG,2BAA2B,GAAG,4BAA4B,KAAK,GAAG,CAAC,SAASpO,EAAQT,EAAOjS,GACrK,aACAF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQia,oBAAiB,EAIzB,IAAIA,EAAgC,WAChC,SAASA,IACT,CACA,OAAOA,CACX,CAJmC,GAKnCja,EAAQia,eAAiBA,CAEzB,EAAE,CAAC,GAAG,GAAG,CAAC,SAASvH,EAAQT,EAAOjS,GAClC,aACAF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ2K,sBAAmB,EAQ3B,IAAIuP,EAAsBxH,EAAQ,uBAC9B4B,EAAuB5B,EAAQ,wBAI/B/H,EAAkC,WAClC,SAASA,IAIL9H,KAAKS,QAAU,EACnB,CAgDA,OAvCAqH,EAAiB7F,OAAS,SAAUyE,EAAQmN,EAAMnD,GAC9C,IAAInQ,EAAU,IAAIuH,EAMlB,OALAvH,EAAQ0Q,KAAOvK,EACfnG,EAAQsT,KAAOA,EACXnD,GACAnQ,EAAQwH,QAAQ2I,GAEbnQ,CACX,EAMAuH,EAAiBhJ,UAAUkL,UAAY,SAAUkM,GAC7C,IAAKA,EACD,MAAM,IAAIpU,MAAM,oDAEpB9B,KAAKS,QAAQyB,KAAK,IAAImV,EAAoBN,kBAAkBb,GAChE,EAOApO,EAAiBhJ,UAAUiJ,QAAU,SAAU2I,GAC3C,GAAoB,iBAATA,EAAmB,CAC1B,IAAI3P,EAAS,IAAI0Q,EAAqB9H,mBACtC5I,EAAO6I,MAAM8G,EAAM,QACnB1Q,KAAKgK,UAAU,IAAIqN,EAAoBvN,YAAY,CAC/CpG,KAAM,kCACNqG,cAAehJ,EAAOa,QACvBb,GACP,KACyB,iBAAT2P,GACZ1Q,KAAKgK,UAAU0G,EAEvB,EACO5I,CACX,CAvDqC,GAwDrC3K,EAAQ2K,iBAAmBA,CAE3B,EAAE,CAAC,sBAAsB,EAAE,uBAAuB,KAAK,GAAG,CAAC,SAAS+H,EAAQT,EAAOjS,GACnF,aACAF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ6E,uBAAoB,EAQ5B,IAAIqV,EAAsBxH,EAAQ,uBAC9B4B,EAAuB5B,EAAQ,wBAI/B7N,EAAmC,WACnC,SAASA,IACLhC,KAAKS,QAAU,EACnB,CAsCA,OA9BAuB,EAAkBC,OAAS,SAAUiG,EAAYwI,GAC7C,IAAIjF,EAAW,IAAIzJ,EAKnB,OAJAyJ,EAASvD,WAAaA,EAClBwI,GACAjF,EAASzB,UAAU0G,GAEhBjF,CACX,EAMAzJ,EAAkBlD,UAAUkL,UAAY,SAAUkM,GAC9ClW,KAAKS,QAAQyB,KAAK,IAAImV,EAAoBN,kBAAkBb,GAChE,EAOAlU,EAAkBlD,UAAUiJ,QAAU,SAAU2I,GAC5C,IAAI3P,EAAS,IAAI0Q,EAAqB9H,mBACtC5I,EAAO6I,MAAMnI,KAAKuG,UAAU0I,GAAO,QACnC1Q,KAAKgK,UAAU,IAAIqN,EAAoBvN,YAAY,CAC/CpG,KAAM,kCACNqG,cAAehJ,EAAOa,QACvBb,GACP,EACOiB,CACX,CA1CsC,GA2CtC7E,EAAQ6E,kBAAoBA,CAE5B,EAAE,CAAC,sBAAsB,EAAE,uBAAuB,KAAK,GAAG,CAAC,SAAS6N,EAAQT,EAAOjS,IACnF,SAAWsM,IAAQ,WACnB,aACA,IACQ6L,EADJC,EAAavV,MAAQA,KAAKuV,YACtBD,EAAgB,SAAUE,EAAGC,GAI7B,OAHAH,EAAgBrY,OAAOyY,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUJ,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAI7F,KAAK6F,EAAOxY,OAAO6B,UAAUC,eAAeC,KAAKyW,EAAG7F,KAAI4F,EAAE5F,GAAK6F,EAAE7F,GAAI,EAC7F0F,EAAcE,EAAGC,EAC5B,EACO,SAAUD,EAAGC,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAInE,UAAU,uBAAyBuE,OAAOJ,GAAK,iCAE7D,SAASK,IAAO9V,KAAK0O,YAAc8G,CAAG,CADtCF,EAAcE,EAAGC,GAEjBD,EAAE1W,UAAkB,OAAN2W,EAAaxY,OAAOgF,OAAOwT,IAAMK,EAAGhX,UAAY2W,EAAE3W,UAAW,IAAIgX,EACnF,GAEJ7Y,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQwM,wBAAqB,EAQ7B,IAIIA,EAAoC,SAAUqF,GAO9C,SAASrF,EAAmB1G,GACxB,IAAIN,EAAQqM,EAAOhQ,KAAKgB,KAAMiD,IAAYjD,KAG1C,OAFA2C,EAAMf,OAAS,EACfe,EAAMgc,WAAa,GACZhc,CACX,CAkDA,OA7DA4S,EAAU5L,EAAoBqF,GAqB9BrF,EAAmB7K,UAAU8f,OAAS,SAAU9J,EAAO+J,EAAW7J,GAC9D,IAAIxL,EAASC,EAAOC,KAAKoL,GACzB9U,KAAK2e,WAAWzc,KAAKsH,GACrBxJ,KAAK4B,QAAUkT,EAAMlT,OACjB5B,KAAK8e,SACL9e,KAAK8e,QAAQtV,GAEjBwL,GACJ,EAQArL,EAAmB7K,UAAUigB,MAAQ,SAAU9J,GAC3C,GAA+B,IAA3BjV,KAAK2e,WAAW/c,OAEhB5B,KAAKkC,KAAK,WAIV,IADA,IAAI8c,EAAQ,EACLA,EAAQ/J,GAAQjV,KAAK2e,WAAW/c,OAAS,GAAG,CAC/C,IAAI4H,EAASxJ,KAAK2e,WAAW,GAC7B3e,KAAKkC,KAAKsH,GACVxJ,KAAK2e,WAAWb,OAAO,EAAG,GAC1BkB,GAASxV,EAAO5H,MACpB,CAER,EAOA+H,EAAmB7K,UAAU8D,UAAY,SAAUqc,GAC/Cjf,KAAK8e,QAAUG,CACnB,EACOtV,CACX,CA/DuC,CAJxBkG,EAAQ,UAmEZqP,QACX/hB,EAAQwM,mBAAqBA,CAE5B,GAAE3K,KAAKgB,KAAM,GAAEhB,KAAKgB,KAAK6P,EAAQ,UAAUpG,OAE5C,EAAE,CAAC,OAAS,GAAG,OAAS,KAAK,GAAG,CAAC,SAASoG,EAAQT,EAAOjS,GACzD,aACAF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ+Z,kBAAe,EAQvB,IAAIiI,EAAStP,EAAQ,QAMrB,SAASqH,IACL,OAAO,EAAIiI,EAAOC,KACtB,CACAjiB,EAAQ+Z,aAAeA,CAEvB,EAAE,CAAC,KAAO,KAAK,GAAG,CAAC,SAASrH,EAAQT,EAAOjS,GAC3C,aACA,IAAI2S,EAAa9P,MAAQA,KAAK8P,WAAc,SAAUC,EAASC,EAAYC,EAAGC,GAC1E,SAASC,EAAM/S,GAAS,OAAOA,aAAiB6S,EAAI7S,EAAQ,IAAI6S,GAAE,SAAUnL,GAAWA,EAAQ1H,EAAQ,GAAI,CAC3G,OAAO,IAAK6S,IAAMA,EAAI3J,WAAU,SAAUxB,EAASwF,GAC/C,SAAS8F,EAAUhT,GAAS,IAAMiT,EAAKH,EAAU7O,KAAKjE,GAAS,CAAE,MAAO6M,GAAKK,EAAOL,EAAI,CAAE,CAC1F,SAASqG,EAASlT,GAAS,IAAMiT,EAAKH,EAAiB,MAAE9S,GAAS,CAAE,MAAO6M,GAAKK,EAAOL,EAAI,CAAE,CAC7F,SAASoG,EAAK9B,GAAUA,EAAOgC,KAAOzL,EAAQyJ,EAAOnR,OAAS+S,EAAM5B,EAAOnR,OAAOoT,KAAKJ,EAAWE,EAAW,CAC7GD,GAAMH,EAAYA,EAAUzN,MAAMsN,EAASC,GAAc,KAAK3O,OAClE,GACJ,EACIoP,EAAezQ,MAAQA,KAAKyQ,aAAgB,SAAUV,EAASW,GAC/D,IAAsGjB,EAAGkB,EAAGrB,EAAGsB,EAA3GC,EAAI,CAAEC,MAAO,EAAGtP,KAAM,WAAa,GAAW,EAAP8N,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,EAAI,EAAGyB,KAAM,GAAIC,IAAK,IAChG,OAAOJ,EAAI,CAAEvP,KAAM4P,EAAK,GAAI,MAASA,EAAK,GAAI,OAAUA,EAAK,IAAwB,mBAAXC,SAA0BN,EAAEM,OAAOC,UAAY,WAAa,OAAOnR,IAAM,GAAI4Q,EACvJ,SAASK,EAAK5B,GAAK,OAAO,SAAU+B,GAAK,OAAOf,EAAK,CAAChB,EAAG+B,GAAK,CAAG,CACjE,SAASf,EAAKgB,GACV,GAAI5B,EAAG,MAAM,IAAI6B,UAAU,mCAC3B,KAAOV,IAAMA,EAAI,EAAGS,EAAG,KAAOR,EAAI,IAAKA,OACnC,GAAIpB,EAAI,EAAGkB,IAAMrB,EAAY,EAAR+B,EAAG,GAASV,EAAU,OAAIU,EAAG,GAAKV,EAAS,SAAOrB,EAAIqB,EAAU,SAAMrB,EAAEtQ,KAAK2R,GAAI,GAAKA,EAAEtP,SAAWiO,EAAIA,EAAEtQ,KAAK2R,EAAGU,EAAG,KAAKd,KAAM,OAAOjB,EAE3J,OADIqB,EAAI,EAAGrB,IAAG+B,EAAK,CAAS,EAARA,EAAG,GAAQ/B,EAAElS,QACzBiU,EAAG,IACP,KAAK,EAAG,KAAK,EAAG/B,EAAI+B,EAAI,MACxB,KAAK,EAAc,OAAXR,EAAEC,QAAgB,CAAE1T,MAAOiU,EAAG,GAAId,MAAM,GAChD,KAAK,EAAGM,EAAEC,QAASH,EAAIU,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKR,EAAEG,IAAIO,MAAOV,EAAEE,KAAKQ,MAAO,SACxC,QACI,MAAkBjC,GAAZA,EAAIuB,EAAEE,MAAYnP,OAAS,GAAK0N,EAAEA,EAAE1N,OAAS,KAAkB,IAAVyP,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAER,EAAI,EAAG,QAAU,CAC3G,GAAc,IAAVQ,EAAG,MAAc/B,GAAM+B,EAAG,GAAK/B,EAAE,IAAM+B,EAAG,GAAK/B,EAAE,IAAM,CAAEuB,EAAEC,MAAQO,EAAG,GAAI,KAAO,CACrF,GAAc,IAAVA,EAAG,IAAYR,EAAEC,MAAQxB,EAAE,GAAI,CAAEuB,EAAEC,MAAQxB,EAAE,GAAIA,EAAI+B,EAAI,KAAO,CACpE,GAAI/B,GAAKuB,EAAEC,MAAQxB,EAAE,GAAI,CAAEuB,EAAEC,MAAQxB,EAAE,GAAIuB,EAAEG,IAAI9O,KAAKmP,GAAK,KAAO,CAC9D/B,EAAE,IAAIuB,EAAEG,IAAIO,MAChBV,EAAEE,KAAKQ,MAAO,SAEtBF,EAAKX,EAAK1R,KAAK+Q,EAASc,EAC5B,CAAE,MAAO5G,GAAKoH,EAAK,CAAC,EAAGpH,GAAI0G,EAAI,CAAG,CAAE,QAAUlB,EAAIH,EAAI,CAAG,CACzD,GAAY,EAAR+B,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAEjU,MAAOiU,EAAG,GAAKA,EAAG,QAAK,EAAQd,MAAM,EAC9E,CACJ,EACAtT,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQga,sBAAmB,EAI3B,IAAIA,EAAkC,WAMlC,SAASA,EAAiBkI,GAClBA,IACArf,KAAKsf,UAAYD,EAEzB,CAqGA,OA9FAlI,EAAiBrY,UAAUqN,QAAU,SAAUoT,GAC3C,OAAOzP,EAAU9P,UAAM,OAAQ,GAAQ,WACnC,IAAIwf,EAAUC,EACd,OAAOhP,EAAYzQ,MAAM,SAAUqT,GAU/B,OATKrT,KAAKsf,YACNtf,KAAKsf,UAAY,IAAII,UAAUH,IAEnCvf,KAAKsf,UAAUK,QAAU,SAAU1V,GAC/BwV,EAASxV,EACb,EACAjK,KAAKsf,UAAUM,OAAS,SAAU3V,GAC9BuV,EAASvV,EACb,EACO,CAAC,EAAc,IAAI3D,SAAQ,SAAUxB,EAASwF,GAC7CkV,EAAW1a,EACX2a,EAAWnV,CACf,IACR,GACJ,GACJ,EACArN,OAAOC,eAAeia,EAAiBrY,UAAW,cAAe,CAM7DL,IAAK,WACD,OAAqC,IAA9BuB,KAAKsf,UAAUO,UAC1B,EACAzL,YAAY,EACZC,cAAc,IAOlB8C,EAAiBrY,UAAU8K,MAAQ,SAAUJ,GACzCxJ,KAAKsf,UAAUrX,KAAKuB,EACxB,EAIA2N,EAAiBrY,UAAU8T,MAAQ,WAC/B5S,KAAKsf,UAAU1M,OACnB,EAOAuE,EAAiBrY,UAAUghB,oBAAsB,SAAUC,GACvD,IAAIC,EAAY,SACZC,EAAU,GACdjgB,KAAKsf,UAAUY,UAAY,SAAUC,GACjC,IAAIC,EAAa,IAAIC,WACjBC,EAAa,CAAE9W,OAAQ,MAC3ByW,EAAQ/d,KAAKoe,GACbF,EAAWG,OAAS,SAAUtW,GAC1B,IAAIqF,EAAIrF,EAAEuW,OAEV,GADAF,EAAWN,GAAa1Q,EAAEf,OACtB0R,EAAQ,KAAOK,EACf,KAAO,EAAIL,EAAQre,QAAUqe,EAAQ,GAAGD,IACpCD,EAAQE,EAAQ,GAAGD,IACnBC,EAAQnC,OAAO,EAAG,EAG9B,EACAsC,EAAWK,kBAAkBN,EAAIO,KACrC,CACJ,EAOAvJ,EAAiBrY,UAAU6hB,kBAAoB,SAAUZ,GACrD/f,KAAKsf,UAAUK,QAAU,SAAU9d,GAC3BA,GACAke,EAAQle,EAEhB,CACJ,EAOAsV,EAAiBrY,UAAU8hB,kBAAoB,SAAUb,GACrD/f,KAAKsf,UAAUuB,QAAUd,CAC7B,EACO5I,CACX,CAhHqC,GAiHrCha,EAAQga,iBAAmBA,CAE3B,EAAE,CAAC,GAAG,GAAG,CAAC,SAAStH,EAAQT,EAAOjS,GAClC,aAQA,IAAI2S,EAAa9P,MAAQA,KAAK8P,WAAc,SAAUC,EAASC,EAAYC,EAAGC,GAC1E,SAASC,EAAM/S,GAAS,OAAOA,aAAiB6S,EAAI7S,EAAQ,IAAI6S,GAAE,SAAUnL,GAAWA,EAAQ1H,EAAQ,GAAI,CAC3G,OAAO,IAAK6S,IAAMA,EAAI3J,WAAU,SAAUxB,EAASwF,GAC/C,SAAS8F,EAAUhT,GAAS,IAAMiT,EAAKH,EAAU7O,KAAKjE,GAAS,CAAE,MAAO6M,GAAKK,EAAOL,EAAI,CAAE,CAC1F,SAASqG,EAASlT,GAAS,IAAMiT,EAAKH,EAAiB,MAAE9S,GAAS,CAAE,MAAO6M,GAAKK,EAAOL,EAAI,CAAE,CAC7F,SAASoG,EAAK9B,GAAUA,EAAOgC,KAAOzL,EAAQyJ,EAAOnR,OAAS+S,EAAM5B,EAAOnR,OAAOoT,KAAKJ,EAAWE,EAAW,CAC7GD,GAAMH,EAAYA,EAAUzN,MAAMsN,EAASC,GAAc,KAAK3O,OAClE,GACJ,EACIoP,EAAezQ,MAAQA,KAAKyQ,aAAgB,SAAUV,EAASW,GAC/D,IAAsGjB,EAAGkB,EAAGrB,EAAGsB,EAA3GC,EAAI,CAAEC,MAAO,EAAGtP,KAAM,WAAa,GAAW,EAAP8N,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,EAAI,EAAGyB,KAAM,GAAIC,IAAK,IAChG,OAAOJ,EAAI,CAAEvP,KAAM4P,EAAK,GAAI,MAASA,EAAK,GAAI,OAAUA,EAAK,IAAwB,mBAAXC,SAA0BN,EAAEM,OAAOC,UAAY,WAAa,OAAOnR,IAAM,GAAI4Q,EACvJ,SAASK,EAAK5B,GAAK,OAAO,SAAU+B,GAAK,OAAOf,EAAK,CAAChB,EAAG+B,GAAK,CAAG,CACjE,SAASf,EAAKgB,GACV,GAAI5B,EAAG,MAAM,IAAI6B,UAAU,mCAC3B,KAAOV,IAAMA,EAAI,EAAGS,EAAG,KAAOR,EAAI,IAAKA,OACnC,GAAIpB,EAAI,EAAGkB,IAAMrB,EAAY,EAAR+B,EAAG,GAASV,EAAU,OAAIU,EAAG,GAAKV,EAAS,SAAOrB,EAAIqB,EAAU,SAAMrB,EAAEtQ,KAAK2R,GAAI,GAAKA,EAAEtP,SAAWiO,EAAIA,EAAEtQ,KAAK2R,EAAGU,EAAG,KAAKd,KAAM,OAAOjB,EAE3J,OADIqB,EAAI,EAAGrB,IAAG+B,EAAK,CAAS,EAARA,EAAG,GAAQ/B,EAAElS,QACzBiU,EAAG,IACP,KAAK,EAAG,KAAK,EAAG/B,EAAI+B,EAAI,MACxB,KAAK,EAAc,OAAXR,EAAEC,QAAgB,CAAE1T,MAAOiU,EAAG,GAAId,MAAM,GAChD,KAAK,EAAGM,EAAEC,QAASH,EAAIU,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKR,EAAEG,IAAIO,MAAOV,EAAEE,KAAKQ,MAAO,SACxC,QACI,MAAkBjC,GAAZA,EAAIuB,EAAEE,MAAYnP,OAAS,GAAK0N,EAAEA,EAAE1N,OAAS,KAAkB,IAAVyP,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAER,EAAI,EAAG,QAAU,CAC3G,GAAc,IAAVQ,EAAG,MAAc/B,GAAM+B,EAAG,GAAK/B,EAAE,IAAM+B,EAAG,GAAK/B,EAAE,IAAM,CAAEuB,EAAEC,MAAQO,EAAG,GAAI,KAAO,CACrF,GAAc,IAAVA,EAAG,IAAYR,EAAEC,MAAQxB,EAAE,GAAI,CAAEuB,EAAEC,MAAQxB,EAAE,GAAIA,EAAI+B,EAAI,KAAO,CACpE,GAAI/B,GAAKuB,EAAEC,MAAQxB,EAAE,GAAI,CAAEuB,EAAEC,MAAQxB,EAAE,GAAIuB,EAAEG,IAAI9O,KAAKmP,GAAK,KAAO,CAC9D/B,EAAE,IAAIuB,EAAEG,IAAIO,MAChBV,EAAEE,KAAKQ,MAAO,SAEtBF,EAAKX,EAAK1R,KAAK+Q,EAASc,EAC5B,CAAE,MAAO5G,GAAKoH,EAAK,CAAC,EAAGpH,GAAI0G,EAAI,CAAG,CAAE,QAAUlB,EAAIH,EAAI,CAAG,CACzD,GAAY,EAAR+B,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAEjU,MAAOiU,EAAG,GAAKA,EAAG,QAAK,EAAQd,MAAM,EAC9E,CACJ,EACAtT,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQgS,qBAAkB,EAC1B,IAAI2R,EAAqBjR,EAAQ,sBAC7BkR,EAAqBlR,EAAQ,uBAC7BmR,EAAoBnR,EAAQ,sBAC5B6B,EAAa7B,EAAQ,eACrBoR,EAAuBpR,EAAQ,wBAI/BV,EAAiC,WASjC,SAASA,EAAgBkE,GACrB,IAAI3K,EAAM2K,EAAG3K,IAAKoD,EAAiBuH,EAAGvH,eAAgBgI,EAAKT,EAAGxH,qBAAsBA,OAA8B,IAAPiI,EAAgB,KAAOA,EAClI9T,KAAKkhB,KAAOxY,EACZ1I,KAAKmhB,gBAAkBrV,EACvB9L,KAAKohB,sBAAwBvV,EAC7B7L,KAAKqhB,gBAAkB,IAAI3P,EAAW6K,eACtCvc,KAAK8Z,QAAU,IAAIiH,EAAmBlH,cACtC7Z,KAAK8Z,QAAQjB,aAAe7Y,KAAKshB,yBAAyBC,KAAKvhB,MAC/DA,KAAKmY,UAAY,IAAI4I,EAAmBhJ,gBACxC/X,KAAKmY,UAAUU,aAAe7Y,KAAKshB,yBAAyBC,KAAKvhB,MACjEA,KAAKwhB,iBAAmB,IAAIR,EAAkB/C,gBAAgBje,KAAKmhB,gBAAiBnhB,KAAKqhB,gBAAiBrhB,KAAK8Z,QAAS9Z,KAAKmY,UACjI,CAsDA,OAhDAhJ,EAAgBrQ,UAAUqN,QAAU,WAChC,OAAO2D,EAAU9P,UAAM,OAAQ,GAAQ,WACnC,IAAIyhB,EAAIC,EACR,OAAOjR,EAAYzQ,MAAM,SAAUqT,GAC/B,OAAQA,EAAGvC,OACP,KAAK,EAED,MAAO,CAAC,GADR2Q,EAAK,IAAIX,EAAmB3J,kBACJhL,QAAQnM,KAAKkhB,OACzC,KAAK,EAKD,OAJA7N,EAAG7R,OACHkgB,EAAY,IAAIT,EAAqBU,mBAAmBF,GACxDzhB,KAAK8Z,QAAQ3N,QAAQuV,GACrB1hB,KAAKmY,UAAUhM,QAAQuV,GAChB,CAAC,GAEpB,GACJ,GACJ,EAIAvS,EAAgBrQ,UAAU4G,WAAa,WACnC1F,KAAK8Z,QAAQpU,WAAW,IAAIqb,EAAmBrI,2BAA2B,2BAC1E1Y,KAAKmY,UAAUzS,WAAW,IAAIqb,EAAmBrI,2BAA2B,0BAChF,EAOAvJ,EAAgBrQ,UAAUmJ,KAAO,SAAU1H,GACvC,OAAOuP,EAAU9P,UAAM,OAAQ,GAAQ,WACnC,OAAOyQ,EAAYzQ,MAAM,SAAUqT,GAC/B,MAAO,CAAC,EAAcrT,KAAKwhB,iBAAiBhE,YAAYjd,GAC5D,GACJ,GACJ,EAEA4O,EAAgBrQ,UAAUwiB,yBAA2B,SAAUnM,EAAQyM,GAGnE,GADA5hB,KAAKqhB,gBAAgBrE,mBAAmB,IAAIlb,MAAM,2BAChB,MAA9B9B,KAAKohB,sBAIT,MAAM,IAAItf,MAAM,oDAAoD8D,OAAO5F,KAAKkhB,KAAM,eAAetb,OAAOnE,KAAKuG,UAAUmN,GAAS,cAAcvP,OAAOnE,KAAKuG,UAAU4Z,KAHpK5hB,KAAKohB,sBAAsB,eAInC,EACOjS,CACX,CA3EoC,GA4EpChS,EAAQgS,gBAAkBA,CAE1B,EAAE,CAAC,sBAAsB,GAAG,cAAc,GAAG,qBAAqB,GAAG,qBAAqB,GAAG,uBAAuB,KAAK,GAAG,CAAC,SAASU,EAAQT,EAAOjS,GACrJ,aAQAF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQwkB,mBAAqBxkB,EAAQgS,gBAAkBhS,EAAQga,sBAAmB,EAClF,IAAI2J,EAAqBjR,EAAQ,sBACjC5S,OAAOC,eAAeC,EAAS,mBAAoB,CAAEiX,YAAY,EAAM3V,IAAK,WAAc,OAAOqiB,EAAmB3J,gBAAkB,IACtI,IAAI0K,EAA2BhS,EAAQ,4BACvC5S,OAAOC,eAAeC,EAAS,kBAAmB,CAAEiX,YAAY,EAAM3V,IAAK,WAAc,OAAOojB,EAAyB1S,eAAiB,IAE1I,IAAI8R,EAAuBpR,EAAQ,wBACnC5S,OAAOC,eAAeC,EAAS,qBAAsB,CAAEiX,YAAY,EAAM3V,IAAK,WAAc,OAAOwiB,EAAqBU,kBAAoB,GAE5I,EAAE,CAAC,qBAAqB,GAAG,2BAA2B,GAAG,uBAAuB,KAAK,GAAG,CAAC,SAAS9R,EAAQT,EAAOjS,IACjH,SAAWsM,IAAQ,WACnB,aAQA,IAAIqG,EAAa9P,MAAQA,KAAK8P,WAAc,SAAUC,EAASC,EAAYC,EAAGC,GAC1E,SAASC,EAAM/S,GAAS,OAAOA,aAAiB6S,EAAI7S,EAAQ,IAAI6S,GAAE,SAAUnL,GAAWA,EAAQ1H,EAAQ,GAAI,CAC3G,OAAO,IAAK6S,IAAMA,EAAI3J,WAAU,SAAUxB,EAASwF,GAC/C,SAAS8F,EAAUhT,GAAS,IAAMiT,EAAKH,EAAU7O,KAAKjE,GAAS,CAAE,MAAO6M,GAAKK,EAAOL,EAAI,CAAE,CAC1F,SAASqG,EAASlT,GAAS,IAAMiT,EAAKH,EAAiB,MAAE9S,GAAS,CAAE,MAAO6M,GAAKK,EAAOL,EAAI,CAAE,CAC7F,SAASoG,EAAK9B,GAAUA,EAAOgC,KAAOzL,EAAQyJ,EAAOnR,OAAS+S,EAAM5B,EAAOnR,OAAOoT,KAAKJ,EAAWE,EAAW,CAC7GD,GAAMH,EAAYA,EAAUzN,MAAMsN,EAASC,GAAc,KAAK3O,OAClE,GACJ,EACIoP,EAAezQ,MAAQA,KAAKyQ,aAAgB,SAAUV,EAASW,GAC/D,IAAsGjB,EAAGkB,EAAGrB,EAAGsB,EAA3GC,EAAI,CAAEC,MAAO,EAAGtP,KAAM,WAAa,GAAW,EAAP8N,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,EAAI,EAAGyB,KAAM,GAAIC,IAAK,IAChG,OAAOJ,EAAI,CAAEvP,KAAM4P,EAAK,GAAI,MAASA,EAAK,GAAI,OAAUA,EAAK,IAAwB,mBAAXC,SAA0BN,EAAEM,OAAOC,UAAY,WAAa,OAAOnR,IAAM,GAAI4Q,EACvJ,SAASK,EAAK5B,GAAK,OAAO,SAAU+B,GAAK,OAAOf,EAAK,CAAChB,EAAG+B,GAAK,CAAG,CACjE,SAASf,EAAKgB,GACV,GAAI5B,EAAG,MAAM,IAAI6B,UAAU,mCAC3B,KAAOV,IAAMA,EAAI,EAAGS,EAAG,KAAOR,EAAI,IAAKA,OACnC,GAAIpB,EAAI,EAAGkB,IAAMrB,EAAY,EAAR+B,EAAG,GAASV,EAAU,OAAIU,EAAG,GAAKV,EAAS,SAAOrB,EAAIqB,EAAU,SAAMrB,EAAEtQ,KAAK2R,GAAI,GAAKA,EAAEtP,SAAWiO,EAAIA,EAAEtQ,KAAK2R,EAAGU,EAAG,KAAKd,KAAM,OAAOjB,EAE3J,OADIqB,EAAI,EAAGrB,IAAG+B,EAAK,CAAS,EAARA,EAAG,GAAQ/B,EAAElS,QACzBiU,EAAG,IACP,KAAK,EAAG,KAAK,EAAG/B,EAAI+B,EAAI,MACxB,KAAK,EAAc,OAAXR,EAAEC,QAAgB,CAAE1T,MAAOiU,EAAG,GAAId,MAAM,GAChD,KAAK,EAAGM,EAAEC,QAASH,EAAIU,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKR,EAAEG,IAAIO,MAAOV,EAAEE,KAAKQ,MAAO,SACxC,QACI,MAAkBjC,GAAZA,EAAIuB,EAAEE,MAAYnP,OAAS,GAAK0N,EAAEA,EAAE1N,OAAS,KAAkB,IAAVyP,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAER,EAAI,EAAG,QAAU,CAC3G,GAAc,IAAVQ,EAAG,MAAc/B,GAAM+B,EAAG,GAAK/B,EAAE,IAAM+B,EAAG,GAAK/B,EAAE,IAAM,CAAEuB,EAAEC,MAAQO,EAAG,GAAI,KAAO,CACrF,GAAc,IAAVA,EAAG,IAAYR,EAAEC,MAAQxB,EAAE,GAAI,CAAEuB,EAAEC,MAAQxB,EAAE,GAAIA,EAAI+B,EAAI,KAAO,CACpE,GAAI/B,GAAKuB,EAAEC,MAAQxB,EAAE,GAAI,CAAEuB,EAAEC,MAAQxB,EAAE,GAAIuB,EAAEG,IAAI9O,KAAKmP,GAAK,KAAO,CAC9D/B,EAAE,IAAIuB,EAAEG,IAAIO,MAChBV,EAAEE,KAAKQ,MAAO,SAEtBF,EAAKX,EAAK1R,KAAK+Q,EAASc,EAC5B,CAAE,MAAO5G,GAAKoH,EAAK,CAAC,EAAGpH,GAAI0G,EAAI,CAAG,CAAE,QAAUlB,EAAIH,EAAI,CAAG,CACzD,GAAY,EAAR+B,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAEjU,MAAOiU,EAAG,GAAKA,EAAG,QAAK,EAAQd,MAAM,EAC9E,CACJ,EACAtT,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQwkB,wBAAqB,EAI7B,IAAIA,EAAoC,WAMpC,SAASA,EAAmBF,GACxB,IAAI9e,EAAQ3C,KACZA,KAAKyhB,GAAKA,EACVzhB,KAAK8hB,OAAS,GACd9hB,KAAK+hB,cAAgB,EACrB/hB,KAAKgiB,oBAAsB,EAC3BhiB,KAAKyhB,GAAG3B,qBAAoB,SAAUY,GAClC/d,EAAM4P,UAAUmO,EACpB,IACA1gB,KAAKyhB,GAAGd,mBAAkB,SAAU7H,GAChCnW,EAAMsf,QAAQnJ,EAClB,IACA9Y,KAAKyhB,GAAGb,mBAAkB,WACtBje,EAAMuf,SACV,GACJ,CAyHA,OAlHAP,EAAmB7iB,UAAUmJ,KAAO,SAAUuB,GAC1C,IAAI6J,EACJ,OAAuB,QAAlBA,EAAKrT,KAAKyhB,UAAuB,IAAPpO,OAAgB,EAASA,EAAGuF,cACvD5Y,KAAKyhB,GAAG7X,MAAMJ,GACPA,EAAO5H,QAEX,CACX,EACA3E,OAAOC,eAAeykB,EAAmB7iB,UAAW,cAAe,CAM/DL,IAAK,WACD,IAAI4U,EACJ,SAA6B,QAAlBA,EAAKrT,KAAKyhB,UAAuB,IAAPpO,OAAgB,EAASA,EAAGuF,YACrE,EACAxE,YAAY,EACZC,cAAc,IAKlBsN,EAAmB7iB,UAAU8T,MAAQ,WACjC,IAAIS,GACmB,QAAlBA,EAAKrT,KAAKyhB,UAAuB,IAAPpO,OAAgB,EAASA,EAAGuF,cACvD5Y,KAAKyhB,GAAG7O,OAEhB,EAOA+O,EAAmB7iB,UAAUua,QAAU,SAAUxE,GAC7C,OAAO/E,EAAU9P,UAAM,OAAQ,GAAQ,WACnC,IAAI6M,EACAlK,EAAQ3C,KACZ,OAAOyQ,EAAYzQ,MAAM,SAAUqT,GAC/B,GAAIrT,KAAKmiB,sBACL,MAAM,IAAIrgB,MAAM,8DAQpB,OANA9B,KAAKgiB,oBAAsBnN,EAC3BhI,EAAU,IAAIvG,SAAQ,SAAUxB,EAASwF,GACrC3H,EAAMwf,sBAAwBrd,EAC9BnC,EAAMyf,qBAAuB9X,CACjC,IACAtK,KAAKqiB,gBACE,CAAC,EAAcxV,EAC1B,GACJ,GACJ,EAMA8U,EAAmB7iB,UAAUyT,UAAY,SAAUmO,GAC3C1gB,KAAK8hB,QAAUpB,GAAQA,EAAK9G,WAAa,IACzC5Z,KAAK8hB,OAAO5f,KAAKuH,EAAOC,KAAKgX,IAC7B1gB,KAAKqiB,gBAEb,EACAV,EAAmB7iB,UAAUojB,QAAU,WAC/BliB,KAAKoiB,sBACLpiB,KAAKoiB,qBAAqB,IAAItgB,MAAM,uBAExC9B,KAAKsiB,QAAU,KACftiB,KAAK+hB,cAAgB,EACrB/hB,KAAKmiB,sBAAwB,KAC7BniB,KAAKoiB,qBAAuB,KAC5BpiB,KAAKgiB,oBAAsB,EAC3BhiB,KAAKyhB,GAAK,IACd,EACAE,EAAmB7iB,UAAUmjB,QAAU,SAAUnJ,GACzC9Y,KAAKoiB,sBACLpiB,KAAKoiB,qBAAqBtJ,GAE9B9Y,KAAKkiB,SACT,EACAP,EAAmB7iB,UAAUujB,cAAgB,WACzC,GAAIriB,KAAKmiB,yBACAniB,KAAKsiB,SAAWtiB,KAAK8hB,OAAOlgB,OAAS,IACtC5B,KAAKsiB,QAAUtiB,KAAK8hB,OAAOxgB,QAC3BtB,KAAK+hB,cAAgB,GAErB/hB,KAAKsiB,SAAS,CACd,GAA2B,IAAvBtiB,KAAK+hB,eAAuB/hB,KAAKsiB,QAAQ1gB,SAAW5B,KAAKgiB,oBAAqB,CAE9E,IAAIxY,EAASxJ,KAAKsiB,QAClBtiB,KAAKsiB,QAAU,KACftiB,KAAKmiB,sBAAsB3Y,EAC/B,KACK,CAED,IAAI+Y,EAAYpV,KAAKuM,IAAI1Z,KAAKgiB,oBAAqBhiB,KAAKsiB,QAAQ1gB,OAAS5B,KAAK+hB,eAC1EvY,EAASC,EAAO2Q,MAAMmI,GAC1BviB,KAAKsiB,QAAQE,KAAKhZ,EAAQ,EAAGxJ,KAAK+hB,cAAe/hB,KAAK+hB,cAAgBQ,GACtEviB,KAAK+hB,eAAiBQ,EAElBviB,KAAK+hB,eAAiB/hB,KAAKsiB,QAAQ1gB,SACnC5B,KAAKsiB,QAAU,KACftiB,KAAK+hB,cAAgB,GAEzB/hB,KAAKmiB,sBAAsB3Y,EAC/B,CACAxJ,KAAKgiB,oBAAsB,EAC3BhiB,KAAKoiB,qBAAuB,KAC5BpiB,KAAKmiB,sBAAwB,IACjC,CAER,EACOR,CACX,CA/IuC,GAgJvCxkB,EAAQwkB,mBAAqBA,CAE5B,GAAE3iB,KAAKgB,KAAM,GAAEhB,KAAKgB,KAAK6P,EAAQ,UAAUpG,OAE5C,EAAE,CAAC,OAAS,KAAK,GAAG,CAAC,SAASoG,EAAQT,EAAOjS,GAC7C,aAEAA,EAAQyc,WAAaA,EACrBzc,EAAQslB,YAAcA,EACtBtlB,EAAQulB,cAAgBA,EAOxB,IALA,IAAIC,EAAS,GACTC,EAAY,GACZC,EAA4B,oBAAfC,WAA6BA,WAAalN,MAEvDjG,EAAO,mEACFH,EAAI,EAAGuT,EAAMpT,EAAK/N,OAAQ4N,EAAIuT,IAAOvT,EAC5CmT,EAAOnT,GAAKG,EAAKH,GACjBoT,EAAUjT,EAAKoD,WAAWvD,IAAMA,EAQlC,SAASwT,EAASC,GAChB,IAAIF,EAAME,EAAIrhB,OAEd,GAAImhB,EAAM,EAAI,EACZ,MAAM,IAAIjhB,MAAM,kDAKlB,IAAIohB,EAAWD,EAAIlF,QAAQ,KAO3B,OANkB,IAAdmF,IAAiBA,EAAWH,GAMzB,CAACG,EAJcA,IAAaH,EAC/B,EACA,EAAKG,EAAW,EAGtB,CAGA,SAAStJ,EAAYqJ,GACnB,IAAIE,EAAOH,EAAQC,GACfC,EAAWC,EAAK,GAChBC,EAAkBD,EAAK,GAC3B,OAAuC,GAA9BD,EAAWE,GAAuB,EAAKA,CAClD,CAEA,SAASC,EAAaJ,EAAKC,EAAUE,GACnC,OAAuC,GAA9BF,EAAWE,GAAuB,EAAKA,CAClD,CAEA,SAASX,EAAaQ,GACpB,IAAIK,EAcA9T,EAbA2T,EAAOH,EAAQC,GACfC,EAAWC,EAAK,GAChBC,EAAkBD,EAAK,GAEvBI,EAAM,IAAIV,EAAIQ,EAAYJ,EAAKC,EAAUE,IAEzCI,EAAU,EAGVT,EAAMK,EAAkB,EACxBF,EAAW,EACXA,EAGJ,IAAK1T,EAAI,EAAGA,EAAIuT,EAAKvT,GAAK,EACxB8T,EACGV,EAAUK,EAAIlQ,WAAWvD,KAAO,GAChCoT,EAAUK,EAAIlQ,WAAWvD,EAAI,KAAO,GACpCoT,EAAUK,EAAIlQ,WAAWvD,EAAI,KAAO,EACrCoT,EAAUK,EAAIlQ,WAAWvD,EAAI,IAC/B+T,EAAIC,KAAcF,GAAO,GAAM,IAC/BC,EAAIC,KAAcF,GAAO,EAAK,IAC9BC,EAAIC,KAAmB,IAANF,EAmBnB,OAhBwB,IAApBF,IACFE,EACGV,EAAUK,EAAIlQ,WAAWvD,KAAO,EAChCoT,EAAUK,EAAIlQ,WAAWvD,EAAI,KAAO,EACvC+T,EAAIC,KAAmB,IAANF,GAGK,IAApBF,IACFE,EACGV,EAAUK,EAAIlQ,WAAWvD,KAAO,GAChCoT,EAAUK,EAAIlQ,WAAWvD,EAAI,KAAO,EACpCoT,EAAUK,EAAIlQ,WAAWvD,EAAI,KAAO,EACvC+T,EAAIC,KAAcF,GAAO,EAAK,IAC9BC,EAAIC,KAAmB,IAANF,GAGZC,CACT,CAEA,SAASE,EAAiBC,GACxB,OAAOf,EAAOe,GAAO,GAAK,IACxBf,EAAOe,GAAO,GAAK,IACnBf,EAAOe,GAAO,EAAI,IAClBf,EAAa,GAANe,EACX,CAEA,SAASC,EAAaC,EAAOlX,EAAOwF,GAGlC,IAFA,IAAIoR,EACAO,EAAS,GACJrU,EAAI9C,EAAO8C,EAAI0C,EAAK1C,GAAK,EAChC8T,GACIM,EAAMpU,IAAM,GAAM,WAClBoU,EAAMpU,EAAI,IAAM,EAAK,QACP,IAAfoU,EAAMpU,EAAI,IACbqU,EAAO3hB,KAAKuhB,EAAgBH,IAE9B,OAAOO,EAAOnP,KAAK,GACrB,CAEA,SAASgO,EAAekB,GAQtB,IAPA,IAAIN,EACAP,EAAMa,EAAMhiB,OACZkiB,EAAaf,EAAM,EACnBgB,EAAQ,GACRC,EAAiB,MAGZxU,EAAI,EAAGyU,EAAOlB,EAAMe,EAAYtU,EAAIyU,EAAMzU,GAAKwU,EACtDD,EAAM7hB,KAAKyhB,EACTC,EAAOpU,EAAIA,EAAIwU,EAAkBC,EAAOA,EAAQzU,EAAIwU,IAsBxD,OAjBmB,IAAfF,GACFR,EAAMM,EAAMb,EAAM,GAClBgB,EAAM7hB,KACJygB,EAAOW,GAAO,GACdX,EAAQW,GAAO,EAAK,IACpB,OAEsB,IAAfQ,IACTR,GAAOM,EAAMb,EAAM,IAAM,GAAKa,EAAMb,EAAM,GAC1CgB,EAAM7hB,KACJygB,EAAOW,GAAO,IACdX,EAAQW,GAAO,EAAK,IACpBX,EAAQW,GAAO,EAAK,IACpB,MAIGS,EAAMrP,KAAK,GACpB,CArIAkO,EAAU,IAAI7P,WAAW,IAAM,GAC/B6P,EAAU,IAAI7P,WAAW,IAAM,EAsI/B,EAAE,CAAC,GAAG,GAAG,CAAC,SAASlD,EAAQT,EAAOjS,GAElC,EAAE,CAAC,GAAG,GAAG,CAAC,SAAS0S,EAAQT,EAAOjS,IAClC,SAAWsM,IAAQ,WASnB,aAEA,IAAIya,EAASrU,EAAQ,aACjBsU,EAAUtU,EAAQ,WAEtB1S,EAAQsM,OAASA,EACjBtM,EAAQinB,WAAaA,EACrBjnB,EAAQknB,kBAAoB,GAE5B,IAAIC,EAAe,WA2BnB,SAASC,IAEP,IACE,IAAIhB,EAAM,IAAIT,WAAW,GAEzB,OADAS,EAAI5N,UAAY,CAAEA,UAAWmN,WAAWhkB,UAAW0lB,IAAK,WAAc,OAAO,EAAG,GAC3D,KAAdjB,EAAIiB,KACb,CAAE,MAAOva,GACP,OAAO,CACT,CACF,CAkBA,SAASwa,EAAc7iB,GACrB,GAAIA,EAAS0iB,EACX,MAAM,IAAII,WAAW,cAAgB9iB,EAAS,kCAGhD,IAAI+iB,EAAM,IAAI7B,WAAWlhB,GAEzB,OADA+iB,EAAIhP,UAAYlM,EAAO3K,UAChB6lB,CACT,CAYA,SAASlb,EAAQmb,EAAKC,EAAkBjjB,GAEtC,GAAmB,iBAARgjB,EAAkB,CAC3B,GAAgC,iBAArBC,EACT,MAAM,IAAIvT,UACR,sEAGJ,OAAOwT,EAAYF,EACrB,CACA,OAAOlb,EAAKkb,EAAKC,EAAkBjjB,EACrC,CAeA,SAAS8H,EAAMtM,EAAOynB,EAAkBjjB,GACtC,GAAqB,iBAAVxE,EACT,OAAO2nB,EAAW3nB,EAAOynB,GAG3B,GAAIG,YAAYC,OAAO7nB,GACrB,OAAO8nB,EAAc9nB,GAGvB,GAAa,MAATA,EACF,MAAMkU,UACJ,yHACiDlU,GAIrD,GAAI+nB,EAAW/nB,EAAO4nB,cACjB5nB,GAAS+nB,EAAW/nB,EAAMoM,OAAQwb,aACrC,OAAOI,EAAgBhoB,EAAOynB,EAAkBjjB,GAGlD,GAAqB,iBAAVxE,EACT,MAAM,IAAIkU,UACR,yEAIJ,IAAIjD,EAAUjR,EAAMiR,SAAWjR,EAAMiR,UACrC,GAAe,MAAXA,GAAmBA,IAAYjR,EACjC,OAAOqM,EAAOC,KAAK2E,EAASwW,EAAkBjjB,GAGhD,IAAI6T,EAAI4P,EAAWjoB,GACnB,GAAIqY,EAAG,OAAOA,EAEd,GAAsB,oBAAXvE,QAAgD,MAAtBA,OAAOoU,aACH,mBAA9BloB,EAAM8T,OAAOoU,aACtB,OAAO7b,EAAOC,KACZtM,EAAM8T,OAAOoU,aAAa,UAAWT,EAAkBjjB,GAI3D,MAAM,IAAI0P,UACR,yHACiDlU,EAErD,CAmBA,SAASmoB,EAAYtQ,GACnB,GAAoB,iBAATA,EACT,MAAM,IAAI3D,UAAU,0CACf,GAAI2D,EAAO,EAChB,MAAM,IAAIyP,WAAW,cAAgBzP,EAAO,iCAEhD,CAEA,SAASmF,EAAOnF,EAAMuQ,EAAMC,GAE1B,OADAF,EAAWtQ,GACPA,GAAQ,EACHwP,EAAaxP,QAETnP,IAAT0f,EAIyB,iBAAbC,EACVhB,EAAaxP,GAAMuQ,KAAKA,EAAMC,GAC9BhB,EAAaxP,GAAMuQ,KAAKA,GAEvBf,EAAaxP,EACtB,CAUA,SAAS6P,EAAa7P,GAEpB,OADAsQ,EAAWtQ,GACJwP,EAAaxP,EAAO,EAAI,EAAoB,EAAhByQ,EAAQzQ,GAC7C,CAeA,SAAS8P,EAAYY,EAAQF,GAK3B,GAJwB,iBAAbA,GAAsC,KAAbA,IAClCA,EAAW,SAGRhc,EAAOmc,WAAWH,GACrB,MAAM,IAAInU,UAAU,qBAAuBmU,GAG7C,IAAI7jB,EAAwC,EAA/BgY,EAAW+L,EAAQF,GAC5Bd,EAAMF,EAAa7iB,GAEnBikB,EAASlB,EAAI/a,MAAM+b,EAAQF,GAS/B,OAPII,IAAWjkB,IAIb+iB,EAAMA,EAAI3R,MAAM,EAAG6S,IAGdlB,CACT,CAEA,SAASO,EAAeY,GAGtB,IAFA,IAAIlkB,EAASkkB,EAAMlkB,OAAS,EAAI,EAA4B,EAAxB8jB,EAAQI,EAAMlkB,QAC9C+iB,EAAMF,EAAa7iB,GACd4N,EAAI,EAAGA,EAAI5N,EAAQ4N,GAAK,EAC/BmV,EAAInV,GAAgB,IAAXsW,EAAMtW,GAEjB,OAAOmV,CACT,CAEA,SAASS,EAAiBU,EAAOC,EAAYnkB,GAC3C,GAAImkB,EAAa,GAAKD,EAAMlM,WAAamM,EACvC,MAAM,IAAIrB,WAAW,wCAGvB,GAAIoB,EAAMlM,WAAamM,GAAcnkB,GAAU,GAC7C,MAAM,IAAI8iB,WAAW,wCAGvB,IAAIC,EAWJ,OATEA,OADiB7e,IAAfigB,QAAuCjgB,IAAXlE,EACxB,IAAIkhB,WAAWgD,QACDhgB,IAAXlE,EACH,IAAIkhB,WAAWgD,EAAOC,GAEtB,IAAIjD,WAAWgD,EAAOC,EAAYnkB,IAItC+T,UAAYlM,EAAO3K,UAChB6lB,CACT,CAEA,SAASU,EAAYlnB,GACnB,GAAIsL,EAAOuc,SAAS7nB,GAAM,CACxB,IAAI4kB,EAA4B,EAAtB2C,EAAQvnB,EAAIyD,QAClB+iB,EAAMF,EAAa1B,GAEvB,OAAmB,IAAf4B,EAAI/iB,QAIRzD,EAAIqkB,KAAKmC,EAAK,EAAG,EAAG5B,GAHX4B,CAKX,CAEA,YAAmB7e,IAAf3H,EAAIyD,OACoB,iBAAfzD,EAAIyD,QAAuBqkB,EAAY9nB,EAAIyD,QAC7C6iB,EAAa,GAEfS,EAAc/mB,GAGN,WAAbA,EAAIuF,MAAqBkS,MAAMsQ,QAAQ/nB,EAAIuiB,MACtCwE,EAAc/mB,EAAIuiB,WAD3B,CAGF,CAEA,SAASgF,EAAS9jB,GAGhB,GAAIA,GAAU0iB,EACZ,MAAM,IAAII,WAAW,0DACaJ,EAAajZ,SAAS,IAAM,UAEhE,OAAgB,EAATzJ,CACT,CAEA,SAASwiB,EAAYxiB,GAInB,OAHKA,GAAUA,IACbA,EAAS,GAEJ6H,EAAO2Q,OAAOxY,EACvB,CAsFA,SAASgY,EAAY+L,EAAQF,GAC3B,GAAIhc,EAAOuc,SAASL,GAClB,OAAOA,EAAO/jB,OAEhB,GAAIojB,YAAYC,OAAOU,IAAWR,EAAWQ,EAAQX,aACnD,OAAOW,EAAO/L,WAEhB,GAAsB,iBAAX+L,EACT,MAAM,IAAIrU,UACR,kGAC0BqU,GAI9B,IAAI5C,EAAM4C,EAAO/jB,OACbukB,EAAazjB,UAAUd,OAAS,IAAsB,IAAjBc,UAAU,GACnD,IAAKyjB,GAAqB,IAARpD,EAAW,OAAO,EAIpC,IADA,IAAIqD,GAAc,IAEhB,OAAQX,GACN,IAAK,QACL,IAAK,SACL,IAAK,SACH,OAAO1C,EACT,IAAK,OACL,IAAK,QACH,OAAOsD,EAAYV,GAAQ/jB,OAC7B,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAa,EAANmhB,EACT,IAAK,MACH,OAAOA,IAAQ,EACjB,IAAK,SACH,OAAOuD,EAAcX,GAAQ/jB,OAC/B,QACE,GAAIwkB,EACF,OAAOD,GAAa,EAAIE,EAAYV,GAAQ/jB,OAE9C6jB,GAAY,GAAKA,GAAUc,cAC3BH,GAAc,EAGtB,CAGA,SAASI,EAAcf,EAAU/Y,EAAOwF,GACtC,IAAIkU,GAAc,EAclB,SALctgB,IAAV4G,GAAuBA,EAAQ,KACjCA,EAAQ,GAINA,EAAQ1M,KAAK4B,OACf,MAAO,GAOT,SAJYkE,IAARoM,GAAqBA,EAAMlS,KAAK4B,UAClCsQ,EAAMlS,KAAK4B,QAGTsQ,GAAO,EACT,MAAO,GAOT,IAHAA,KAAS,KACTxF,KAAW,GAGT,MAAO,GAKT,IAFK+Y,IAAUA,EAAW,UAGxB,OAAQA,GACN,IAAK,MACH,OAAOgB,EAASzmB,KAAM0M,EAAOwF,GAE/B,IAAK,OACL,IAAK,QACH,OAAOwU,EAAU1mB,KAAM0M,EAAOwF,GAEhC,IAAK,QACH,OAAOyU,EAAW3mB,KAAM0M,EAAOwF,GAEjC,IAAK,SACL,IAAK,SACH,OAAO0U,EAAY5mB,KAAM0M,EAAOwF,GAElC,IAAK,SACH,OAAO2U,EAAY7mB,KAAM0M,EAAOwF,GAElC,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAO4U,EAAa9mB,KAAM0M,EAAOwF,GAEnC,QACE,GAAIkU,EAAa,MAAM,IAAI9U,UAAU,qBAAuBmU,GAC5DA,GAAYA,EAAW,IAAIc,cAC3BH,GAAc,EAGtB,CAUA,SAASW,EAAMtR,EAAGpG,EAAGsI,GACnB,IAAInI,EAAIiG,EAAEpG,GACVoG,EAAEpG,GAAKoG,EAAEkC,GACTlC,EAAEkC,GAAKnI,CACT,CAwIA,SAASwX,EAAsBxd,EAAQyd,EAAKlB,EAAYN,EAAUyB,GAEhE,GAAsB,IAAlB1d,EAAO5H,OAAc,OAAQ,EAmBjC,GAhB0B,iBAAfmkB,GACTN,EAAWM,EACXA,EAAa,GACJA,EAAa,WACtBA,EAAa,WACJA,GAAc,aACvBA,GAAc,YAGZE,EADJF,GAAcA,KAGZA,EAAamB,EAAM,EAAK1d,EAAO5H,OAAS,GAItCmkB,EAAa,IAAGA,EAAavc,EAAO5H,OAASmkB,GAC7CA,GAAcvc,EAAO5H,OAAQ,CAC/B,GAAIslB,EAAK,OAAQ,EACZnB,EAAavc,EAAO5H,OAAS,CACpC,MAAO,GAAImkB,EAAa,EAAG,CACzB,IAAImB,EACC,OAAQ,EADJnB,EAAa,CAExB,CAQA,GALmB,iBAARkB,IACTA,EAAMxd,EAAOC,KAAKud,EAAKxB,IAIrBhc,EAAOuc,SAASiB,GAElB,OAAmB,IAAfA,EAAIrlB,QACE,EAEHulB,EAAa3d,EAAQyd,EAAKlB,EAAYN,EAAUyB,GAClD,GAAmB,iBAARD,EAEhB,OADAA,GAAY,IACgC,mBAAjCnE,WAAWhkB,UAAUif,QAC1BmJ,EACKpE,WAAWhkB,UAAUif,QAAQ/e,KAAKwK,EAAQyd,EAAKlB,GAE/CjD,WAAWhkB,UAAUsoB,YAAYpoB,KAAKwK,EAAQyd,EAAKlB,GAGvDoB,EAAa3d,EAAQ,CAAEyd,GAAOlB,EAAYN,EAAUyB,GAG7D,MAAM,IAAI5V,UAAU,uCACtB,CAEA,SAAS6V,EAAc5D,EAAK0D,EAAKlB,EAAYN,EAAUyB,GACrD,IA0BI1X,EA1BA6X,EAAY,EACZC,EAAY/D,EAAI3hB,OAChB2lB,EAAYN,EAAIrlB,OAEpB,QAAiBkE,IAAb2f,IAEe,UADjBA,EAAW5P,OAAO4P,GAAUc,gBACY,UAAbd,GACV,YAAbA,GAAuC,aAAbA,GAAyB,CACrD,GAAIlC,EAAI3hB,OAAS,GAAKqlB,EAAIrlB,OAAS,EACjC,OAAQ,EAEVylB,EAAY,EACZC,GAAa,EACbC,GAAa,EACbxB,GAAc,CAChB,CAGF,SAASzS,EAAMqR,EAAKnV,GAClB,OAAkB,IAAd6X,EACK1C,EAAInV,GAEJmV,EAAI6C,aAAahY,EAAI6X,EAEhC,CAGA,GAAIH,EAAK,CACP,IAAIO,GAAc,EAClB,IAAKjY,EAAIuW,EAAYvW,EAAI8X,EAAW9X,IAClC,GAAI8D,EAAKiQ,EAAK/T,KAAO8D,EAAK2T,GAAqB,IAAhBQ,EAAoB,EAAIjY,EAAIiY,IAEzD,IADoB,IAAhBA,IAAmBA,EAAajY,GAChCA,EAAIiY,EAAa,IAAMF,EAAW,OAAOE,EAAaJ,OAEtC,IAAhBI,IAAmBjY,GAAKA,EAAIiY,GAChCA,GAAc,CAGpB,MAEE,IADI1B,EAAawB,EAAYD,IAAWvB,EAAauB,EAAYC,GAC5D/X,EAAIuW,EAAYvW,GAAK,EAAGA,IAAK,CAEhC,IADA,IAAIkY,GAAQ,EACHC,EAAI,EAAGA,EAAIJ,EAAWI,IAC7B,GAAIrU,EAAKiQ,EAAK/T,EAAImY,KAAOrU,EAAK2T,EAAKU,GAAI,CACrCD,GAAQ,EACR,KACF,CAEF,GAAIA,EAAO,OAAOlY,CACpB,CAGF,OAAQ,CACV,CAcA,SAASoY,EAAUjD,EAAKgB,EAAQkC,EAAQjmB,GACtCimB,EAASpM,OAAOoM,IAAW,EAC3B,IAAIC,EAAYnD,EAAI/iB,OAASimB,EACxBjmB,GAGHA,EAAS6Z,OAAO7Z,IACHkmB,IACXlmB,EAASkmB,GAJXlmB,EAASkmB,EAQX,IAAIC,EAASpC,EAAO/jB,OAEhBA,EAASmmB,EAAS,IACpBnmB,EAASmmB,EAAS,GAEpB,IAAK,IAAIvY,EAAI,EAAGA,EAAI5N,IAAU4N,EAAG,CAC/B,IAAIwY,EAASC,SAAStC,EAAOuC,OAAW,EAAJ1Y,EAAO,GAAI,IAC/C,GAAIyW,EAAY+B,GAAS,OAAOxY,EAChCmV,EAAIkD,EAASrY,GAAKwY,CACpB,CACA,OAAOxY,CACT,CAEA,SAAS2Y,EAAWxD,EAAKgB,EAAQkC,EAAQjmB,GACvC,OAAOwmB,EAAW/B,EAAYV,EAAQhB,EAAI/iB,OAASimB,GAASlD,EAAKkD,EAAQjmB,EAC3E,CAEA,SAASymB,EAAY1D,EAAKgB,EAAQkC,EAAQjmB,GACxC,OAAOwmB,EAAWE,EAAa3C,GAAShB,EAAKkD,EAAQjmB,EACvD,CAEA,SAAS2mB,EAAa5D,EAAKgB,EAAQkC,EAAQjmB,GACzC,OAAOymB,EAAW1D,EAAKgB,EAAQkC,EAAQjmB,EACzC,CAEA,SAAS4mB,EAAa7D,EAAKgB,EAAQkC,EAAQjmB,GACzC,OAAOwmB,EAAW9B,EAAcX,GAAShB,EAAKkD,EAAQjmB,EACxD,CAEA,SAAS6mB,EAAW9D,EAAKgB,EAAQkC,EAAQjmB,GACvC,OAAOwmB,EAAWM,EAAe/C,EAAQhB,EAAI/iB,OAASimB,GAASlD,EAAKkD,EAAQjmB,EAC9E,CAgFA,SAASilB,EAAalC,EAAKjY,EAAOwF,GAChC,OAAc,IAAVxF,GAAewF,IAAQyS,EAAI/iB,OACtBsiB,EAAOxB,cAAciC,GAErBT,EAAOxB,cAAciC,EAAI3R,MAAMtG,EAAOwF,GAEjD,CAEA,SAASwU,EAAW/B,EAAKjY,EAAOwF,GAC9BA,EAAM/E,KAAKuM,IAAIiL,EAAI/iB,OAAQsQ,GAI3B,IAHA,IAAIhM,EAAM,GAENsJ,EAAI9C,EACD8C,EAAI0C,GAAK,CACd,IAQMyW,EAAYC,EAAWC,EAAYC,EARrCC,EAAYpE,EAAInV,GAChBwZ,EAAY,KACZC,EAAoBF,EAAY,IAAQ,EACvCA,EAAY,IAAQ,EAClBA,EAAY,IAAQ,EACnB,EAER,GAAIvZ,EAAIyZ,GAAoB/W,EAG1B,OAAQ+W,GACN,KAAK,EACCF,EAAY,MACdC,EAAYD,GAEd,MACF,KAAK,EAEyB,MAAV,KADlBJ,EAAahE,EAAInV,EAAI,OAEnBsZ,GAA6B,GAAZC,IAAqB,EAAoB,GAAbJ,GACzB,MAClBK,EAAYF,GAGhB,MACF,KAAK,EACHH,EAAahE,EAAInV,EAAI,GACrBoZ,EAAYjE,EAAInV,EAAI,GACQ,MAAV,IAAbmZ,IAAsD,MAAV,IAAZC,KACnCE,GAA6B,GAAZC,IAAoB,IAAoB,GAAbJ,IAAsB,EAAmB,GAAZC,GACrD,OAAUE,EAAgB,OAAUA,EAAgB,SACtEE,EAAYF,GAGhB,MACF,KAAK,EACHH,EAAahE,EAAInV,EAAI,GACrBoZ,EAAYjE,EAAInV,EAAI,GACpBqZ,EAAalE,EAAInV,EAAI,GACO,MAAV,IAAbmZ,IAAsD,MAAV,IAAZC,IAAsD,MAAV,IAAbC,KAClEC,GAA6B,GAAZC,IAAoB,IAAqB,GAAbJ,IAAsB,IAAmB,GAAZC,IAAqB,EAAoB,GAAbC,GAClF,OAAUC,EAAgB,UAC5CE,EAAYF,GAMJ,OAAdE,GAGFA,EAAY,MACZC,EAAmB,GACVD,EAAY,QAErBA,GAAa,MACb9iB,EAAIhE,KAAK8mB,IAAc,GAAK,KAAQ,OACpCA,EAAY,MAAqB,KAAZA,GAGvB9iB,EAAIhE,KAAK8mB,GACTxZ,GAAKyZ,CACP,CAEA,OAAOC,EAAsBhjB,EAC/B,CA79BA/I,EAAQgsB,WAAa7E,EAgBrB7a,EAAO2f,oBAAsB7E,IAExB9a,EAAO2f,0BAA0C,IAAZzlB,GACb,mBAAlBA,EAAQ9B,OACjB8B,EAAQ9B,MACN,iJAgBJ5E,OAAOC,eAAeuM,EAAO3K,UAAW,SAAU,CAChDsV,YAAY,EACZ3V,IAAK,WACH,GAAKgL,EAAOuc,SAAShmB,MACrB,OAAOA,KAAKwJ,MACd,IAGFvM,OAAOC,eAAeuM,EAAO3K,UAAW,SAAU,CAChDsV,YAAY,EACZ3V,IAAK,WACH,GAAKgL,EAAOuc,SAAShmB,MACrB,OAAOA,KAAK+lB,UACd,IAqCoB,oBAAX7U,QAA4C,MAAlBA,OAAOmY,SACxC5f,EAAOyH,OAAOmY,WAAa5f,GAC7BxM,OAAOC,eAAeuM,EAAQyH,OAAOmY,QAAS,CAC5CjsB,MAAO,KACPiX,cAAc,EACdD,YAAY,EACZ9Q,UAAU,IAIdmG,EAAO6f,SAAW,KA0DlB7f,EAAOC,KAAO,SAAUtM,EAAOynB,EAAkBjjB,GAC/C,OAAO8H,EAAKtM,EAAOynB,EAAkBjjB,EACvC,EAIA6H,EAAO3K,UAAU6W,UAAYmN,WAAWhkB,UACxC2K,EAAOkM,UAAYmN,WA8BnBrZ,EAAO2Q,MAAQ,SAAUnF,EAAMuQ,EAAMC,GACnC,OAAOrL,EAAMnF,EAAMuQ,EAAMC,EAC3B,EAUAhc,EAAOqb,YAAc,SAAU7P,GAC7B,OAAO6P,EAAY7P,EACrB,EAIAxL,EAAO8f,gBAAkB,SAAUtU,GACjC,OAAO6P,EAAY7P,EACrB,EAoGAxL,EAAOuc,SAAW,SAAmBvQ,GACnC,OAAY,MAALA,IAA6B,IAAhBA,EAAE+T,WACpB/T,IAAMhM,EAAO3K,SACjB,EAEA2K,EAAOggB,QAAU,SAAkB3mB,EAAG2S,GAGpC,GAFI0P,EAAWriB,EAAGggB,cAAahgB,EAAI2G,EAAOC,KAAK5G,EAAGA,EAAE+kB,OAAQ/kB,EAAE8W,aAC1DuL,EAAW1P,EAAGqN,cAAarN,EAAIhM,EAAOC,KAAK+L,EAAGA,EAAEoS,OAAQpS,EAAEmE,cACzDnQ,EAAOuc,SAASljB,KAAO2G,EAAOuc,SAASvQ,GAC1C,MAAM,IAAInE,UACR,yEAIJ,GAAIxO,IAAM2S,EAAG,OAAO,EAKpB,IAHA,IAAIiU,EAAI5mB,EAAElB,OACN+O,EAAI8E,EAAE7T,OAED4N,EAAI,EAAGuT,EAAM5V,KAAKuM,IAAIgQ,EAAG/Y,GAAInB,EAAIuT,IAAOvT,EAC/C,GAAI1M,EAAE0M,KAAOiG,EAAEjG,GAAI,CACjBka,EAAI5mB,EAAE0M,GACNmB,EAAI8E,EAAEjG,GACN,KACF,CAGF,OAAIka,EAAI/Y,GAAW,EACfA,EAAI+Y,EAAU,EACX,CACT,EAEAjgB,EAAOmc,WAAa,SAAqBH,GACvC,OAAQ5P,OAAO4P,GAAUc,eACvB,IAAK,MACL,IAAK,OACL,IAAK,QACL,IAAK,QACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAO,EACT,QACE,OAAO,EAEb,EAEA9c,EAAO7D,OAAS,SAAiB+jB,EAAM/nB,GACrC,IAAKgU,MAAMsQ,QAAQyD,GACjB,MAAM,IAAIrY,UAAU,+CAGtB,GAAoB,IAAhBqY,EAAK/nB,OACP,OAAO6H,EAAO2Q,MAAM,GAGtB,IAAI5K,EACJ,QAAe1J,IAAXlE,EAEF,IADAA,EAAS,EACJ4N,EAAI,EAAGA,EAAIma,EAAK/nB,SAAU4N,EAC7B5N,GAAU+nB,EAAKna,GAAG5N,OAItB,IAAI4H,EAASC,EAAOqb,YAAYljB,GAC5BgoB,EAAM,EACV,IAAKpa,EAAI,EAAGA,EAAIma,EAAK/nB,SAAU4N,EAAG,CAChC,IAAImV,EAAMgF,EAAKna,GAIf,GAHI2V,EAAWR,EAAK7B,cAClB6B,EAAMlb,EAAOC,KAAKib,KAEflb,EAAOuc,SAASrB,GACnB,MAAM,IAAIrT,UAAU,+CAEtBqT,EAAInC,KAAKhZ,EAAQogB,GACjBA,GAAOjF,EAAI/iB,MACb,CACA,OAAO4H,CACT,EAiDAC,EAAOmQ,WAAaA,EA8EpBnQ,EAAO3K,UAAU0qB,WAAY,EAQ7B/f,EAAO3K,UAAU+qB,OAAS,WACxB,IAAI9G,EAAM/iB,KAAK4B,OACf,GAAImhB,EAAM,GAAM,EACd,MAAM,IAAI2B,WAAW,6CAEvB,IAAK,IAAIlV,EAAI,EAAGA,EAAIuT,EAAKvT,GAAK,EAC5BuX,EAAK/mB,KAAMwP,EAAGA,EAAI,GAEpB,OAAOxP,IACT,EAEAyJ,EAAO3K,UAAUgrB,OAAS,WACxB,IAAI/G,EAAM/iB,KAAK4B,OACf,GAAImhB,EAAM,GAAM,EACd,MAAM,IAAI2B,WAAW,6CAEvB,IAAK,IAAIlV,EAAI,EAAGA,EAAIuT,EAAKvT,GAAK,EAC5BuX,EAAK/mB,KAAMwP,EAAGA,EAAI,GAClBuX,EAAK/mB,KAAMwP,EAAI,EAAGA,EAAI,GAExB,OAAOxP,IACT,EAEAyJ,EAAO3K,UAAUirB,OAAS,WACxB,IAAIhH,EAAM/iB,KAAK4B,OACf,GAAImhB,EAAM,GAAM,EACd,MAAM,IAAI2B,WAAW,6CAEvB,IAAK,IAAIlV,EAAI,EAAGA,EAAIuT,EAAKvT,GAAK,EAC5BuX,EAAK/mB,KAAMwP,EAAGA,EAAI,GAClBuX,EAAK/mB,KAAMwP,EAAI,EAAGA,EAAI,GACtBuX,EAAK/mB,KAAMwP,EAAI,EAAGA,EAAI,GACtBuX,EAAK/mB,KAAMwP,EAAI,EAAGA,EAAI,GAExB,OAAOxP,IACT,EAEAyJ,EAAO3K,UAAUuM,SAAW,WAC1B,IAAIzJ,EAAS5B,KAAK4B,OAClB,OAAe,IAAXA,EAAqB,GACA,IAArBc,UAAUd,OAAqB8kB,EAAU1mB,KAAM,EAAG4B,GAC/C4kB,EAAa/jB,MAAMzC,KAAM0C,UAClC,EAEA+G,EAAO3K,UAAUkrB,eAAiBvgB,EAAO3K,UAAUuM,SAEnD5B,EAAO3K,UAAUmrB,OAAS,SAAiBxU,GACzC,IAAKhM,EAAOuc,SAASvQ,GAAI,MAAM,IAAInE,UAAU,6BAC7C,OAAItR,OAASyV,GACsB,IAA5BhM,EAAOggB,QAAQzpB,KAAMyV,EAC9B,EAEAhM,EAAO3K,UAAUorB,QAAU,WACzB,IAAIC,EAAM,GACNC,EAAMjtB,EAAQknB,kBAGlB,OAFA8F,EAAMnqB,KAAKqL,SAAS,MAAO,EAAG+e,GAAK9e,QAAQ,UAAW,OAAO+e,OACzDrqB,KAAK4B,OAASwoB,IAAKD,GAAO,SACvB,WAAaA,EAAM,GAC5B,EAEA1gB,EAAO3K,UAAU2qB,QAAU,SAAkBjJ,EAAQ9T,EAAOwF,EAAKoY,EAAWC,GAI1E,GAHIpF,EAAW3E,EAAQsC,cACrBtC,EAAS/W,EAAOC,KAAK8W,EAAQA,EAAOqH,OAAQrH,EAAO5G,cAEhDnQ,EAAOuc,SAASxF,GACnB,MAAM,IAAIlP,UACR,wFAC2BkP,GAiB/B,QAbc1a,IAAV4G,IACFA,EAAQ,QAEE5G,IAARoM,IACFA,EAAMsO,EAASA,EAAO5e,OAAS,QAEfkE,IAAdwkB,IACFA,EAAY,QAEExkB,IAAZykB,IACFA,EAAUvqB,KAAK4B,QAGb8K,EAAQ,GAAKwF,EAAMsO,EAAO5e,QAAU0oB,EAAY,GAAKC,EAAUvqB,KAAK4B,OACtE,MAAM,IAAI8iB,WAAW,sBAGvB,GAAI4F,GAAaC,GAAW7d,GAASwF,EACnC,OAAO,EAET,GAAIoY,GAAaC,EACf,OAAQ,EAEV,GAAI7d,GAASwF,EACX,OAAO,EAQT,GAAIlS,OAASwgB,EAAQ,OAAO,EAS5B,IAPA,IAAIkJ,GAJJa,KAAa,IADbD,KAAe,GAMX3Z,GAPJuB,KAAS,IADTxF,KAAW,GASPqW,EAAM5V,KAAKuM,IAAIgQ,EAAG/Y,GAElB6Z,EAAWxqB,KAAKgT,MAAMsX,EAAWC,GACjCE,EAAajK,EAAOxN,MAAMtG,EAAOwF,GAE5B1C,EAAI,EAAGA,EAAIuT,IAAOvT,EACzB,GAAIgb,EAAShb,KAAOib,EAAWjb,GAAI,CACjCka,EAAIc,EAAShb,GACbmB,EAAI8Z,EAAWjb,GACf,KACF,CAGF,OAAIka,EAAI/Y,GAAW,EACfA,EAAI+Y,EAAU,EACX,CACT,EA2HAjgB,EAAO3K,UAAU4rB,SAAW,SAAmBzD,EAAKlB,EAAYN,GAC9D,OAAoD,IAA7CzlB,KAAK+d,QAAQkJ,EAAKlB,EAAYN,EACvC,EAEAhc,EAAO3K,UAAUif,QAAU,SAAkBkJ,EAAKlB,EAAYN,GAC5D,OAAOuB,EAAqBhnB,KAAMinB,EAAKlB,EAAYN,GAAU,EAC/D,EAEAhc,EAAO3K,UAAUsoB,YAAc,SAAsBH,EAAKlB,EAAYN,GACpE,OAAOuB,EAAqBhnB,KAAMinB,EAAKlB,EAAYN,GAAU,EAC/D,EA+CAhc,EAAO3K,UAAU8K,MAAQ,SAAgB+b,EAAQkC,EAAQjmB,EAAQ6jB,GAE/D,QAAe3f,IAAX+hB,EACFpC,EAAW,OACX7jB,EAAS5B,KAAK4B,OACdimB,EAAS,OAEJ,QAAe/hB,IAAXlE,GAA0C,iBAAXimB,EACxCpC,EAAWoC,EACXjmB,EAAS5B,KAAK4B,OACdimB,EAAS,MAEJ,KAAI8C,SAAS9C,GAUlB,MAAM,IAAI/lB,MACR,2EAVF+lB,KAAoB,EAChB8C,SAAS/oB,IACXA,KAAoB,OACHkE,IAAb2f,IAAwBA,EAAW,UAEvCA,EAAW7jB,EACXA,OAASkE,EAMb,CAEA,IAAIgiB,EAAY9nB,KAAK4B,OAASimB,EAG9B,SAFe/hB,IAAXlE,GAAwBA,EAASkmB,KAAWlmB,EAASkmB,GAEpDnC,EAAO/jB,OAAS,IAAMA,EAAS,GAAKimB,EAAS,IAAOA,EAAS7nB,KAAK4B,OACrE,MAAM,IAAI8iB,WAAW,0CAGlBe,IAAUA,EAAW,QAG1B,IADA,IAAIW,GAAc,IAEhB,OAAQX,GACN,IAAK,MACH,OAAOmC,EAAS5nB,KAAM2lB,EAAQkC,EAAQjmB,GAExC,IAAK,OACL,IAAK,QACH,OAAOumB,EAAUnoB,KAAM2lB,EAAQkC,EAAQjmB,GAEzC,IAAK,QACH,OAAOymB,EAAWroB,KAAM2lB,EAAQkC,EAAQjmB,GAE1C,IAAK,SACL,IAAK,SACH,OAAO2mB,EAAYvoB,KAAM2lB,EAAQkC,EAAQjmB,GAE3C,IAAK,SAEH,OAAO4mB,EAAYxoB,KAAM2lB,EAAQkC,EAAQjmB,GAE3C,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAO6mB,EAAUzoB,KAAM2lB,EAAQkC,EAAQjmB,GAEzC,QACE,GAAIwkB,EAAa,MAAM,IAAI9U,UAAU,qBAAuBmU,GAC5DA,GAAY,GAAKA,GAAUc,cAC3BH,GAAc,EAGtB,EAEA3c,EAAO3K,UAAU8rB,OAAS,WACxB,MAAO,CACLlnB,KAAM,SACNgd,KAAM9K,MAAM9W,UAAUkU,MAAMhU,KAAKgB,KAAK6qB,MAAQ7qB,KAAM,GAExD,EAsFA,IAAI8qB,EAAuB,KAE3B,SAAS5B,EAAuB6B,GAC9B,IAAIhI,EAAMgI,EAAWnpB,OACrB,GAAImhB,GAAO+H,EACT,OAAOjV,OAAOmV,aAAavoB,MAAMoT,OAAQkV,GAM3C,IAFA,IAAI7kB,EAAM,GACNsJ,EAAI,EACDA,EAAIuT,GACT7c,GAAO2P,OAAOmV,aAAavoB,MACzBoT,OACAkV,EAAW/X,MAAMxD,EAAGA,GAAKsb,IAG7B,OAAO5kB,CACT,CAEA,SAASygB,EAAYhC,EAAKjY,EAAOwF,GAC/B,IAAI+Y,EAAM,GACV/Y,EAAM/E,KAAKuM,IAAIiL,EAAI/iB,OAAQsQ,GAE3B,IAAK,IAAI1C,EAAI9C,EAAO8C,EAAI0C,IAAO1C,EAC7Byb,GAAOpV,OAAOmV,aAAsB,IAATrG,EAAInV,IAEjC,OAAOyb,CACT,CAEA,SAASrE,EAAajC,EAAKjY,EAAOwF,GAChC,IAAI+Y,EAAM,GACV/Y,EAAM/E,KAAKuM,IAAIiL,EAAI/iB,OAAQsQ,GAE3B,IAAK,IAAI1C,EAAI9C,EAAO8C,EAAI0C,IAAO1C,EAC7Byb,GAAOpV,OAAOmV,aAAarG,EAAInV,IAEjC,OAAOyb,CACT,CAEA,SAASxE,EAAU9B,EAAKjY,EAAOwF,GAC7B,IAAI6Q,EAAM4B,EAAI/iB,SAET8K,GAASA,EAAQ,KAAGA,EAAQ,KAC5BwF,GAAOA,EAAM,GAAKA,EAAM6Q,KAAK7Q,EAAM6Q,GAGxC,IADA,IAAImI,EAAM,GACD1b,EAAI9C,EAAO8C,EAAI0C,IAAO1C,EAC7B0b,GAAOC,EAAMxG,EAAInV,IAEnB,OAAO0b,CACT,CAEA,SAASpE,EAAcnC,EAAKjY,EAAOwF,GAGjC,IAFA,IAAIkZ,EAAQzG,EAAI3R,MAAMtG,EAAOwF,GACzBhM,EAAM,GACDsJ,EAAI,EAAGA,EAAI4b,EAAMxpB,OAAQ4N,GAAK,EACrCtJ,GAAO2P,OAAOmV,aAAaI,EAAM5b,GAAqB,IAAf4b,EAAM5b,EAAI,IAEnD,OAAOtJ,CACT,CAgCA,SAASmlB,EAAaxD,EAAQyD,EAAK1pB,GACjC,GAAKimB,EAAS,GAAO,GAAKA,EAAS,EAAG,MAAM,IAAInD,WAAW,sBAC3D,GAAImD,EAASyD,EAAM1pB,EAAQ,MAAM,IAAI8iB,WAAW,wCAClD,CA4KA,SAAS6G,EAAU5G,EAAKvnB,EAAOyqB,EAAQyD,EAAKlB,EAAK1Q,GAC/C,IAAKjQ,EAAOuc,SAASrB,GAAM,MAAM,IAAIrT,UAAU,+CAC/C,GAAIlU,EAAQgtB,GAAOhtB,EAAQsc,EAAK,MAAM,IAAIgL,WAAW,qCACrD,GAAImD,EAASyD,EAAM3G,EAAI/iB,OAAQ,MAAM,IAAI8iB,WAAW,qBACtD,CAwLA,SAAS8G,EAAc7G,EAAKvnB,EAAOyqB,EAAQyD,EAAKlB,EAAK1Q,GACnD,GAAImO,EAASyD,EAAM3G,EAAI/iB,OAAQ,MAAM,IAAI8iB,WAAW,sBACpD,GAAImD,EAAS,EAAG,MAAM,IAAInD,WAAW,qBACvC,CAEA,SAAS+G,EAAY9G,EAAKvnB,EAAOyqB,EAAQ6D,EAAcC,GAOrD,OANAvuB,GAASA,EACTyqB,KAAoB,EACf8D,GACHH,EAAa7G,EAAKvnB,EAAOyqB,EAAQ,EAAG,sBAAyB,sBAE/D1D,EAAQva,MAAM+a,EAAKvnB,EAAOyqB,EAAQ6D,EAAc,GAAI,GAC7C7D,EAAS,CAClB,CAUA,SAAS+D,EAAajH,EAAKvnB,EAAOyqB,EAAQ6D,EAAcC,GAOtD,OANAvuB,GAASA,EACTyqB,KAAoB,EACf8D,GACHH,EAAa7G,EAAKvnB,EAAOyqB,EAAQ,EAAG,uBAA0B,uBAEhE1D,EAAQva,MAAM+a,EAAKvnB,EAAOyqB,EAAQ6D,EAAc,GAAI,GAC7C7D,EAAS,CAClB,CAxaApe,EAAO3K,UAAUkU,MAAQ,SAAgBtG,EAAOwF,GAC9C,IAAI6Q,EAAM/iB,KAAK4B,QACf8K,IAAUA,GAGE,GACVA,GAASqW,GACG,IAAGrW,EAAQ,GACdA,EAAQqW,IACjBrW,EAAQqW,IANV7Q,OAAcpM,IAARoM,EAAoB6Q,IAAQ7Q,GASxB,GACRA,GAAO6Q,GACG,IAAG7Q,EAAM,GACVA,EAAM6Q,IACf7Q,EAAM6Q,GAGJ7Q,EAAMxF,IAAOwF,EAAMxF,GAEvB,IAAImf,EAAS7rB,KAAK8rB,SAASpf,EAAOwF,GAGlC,OADA2Z,EAAOlW,UAAYlM,EAAO3K,UACnB+sB,CACT,EAUApiB,EAAO3K,UAAUitB,WAAa,SAAqBlE,EAAQjO,EAAY+R,GACrE9D,KAAoB,EACpBjO,KAA4B,EACvB+R,GAAUN,EAAYxD,EAAQjO,EAAY5Z,KAAK4B,QAKpD,IAHA,IAAIqlB,EAAMjnB,KAAK6nB,GACXmE,EAAM,EACNxc,EAAI,IACCA,EAAIoK,IAAeoS,GAAO,MACjC/E,GAAOjnB,KAAK6nB,EAASrY,GAAKwc,EAG5B,OAAO/E,CACT,EAEAxd,EAAO3K,UAAUmtB,WAAa,SAAqBpE,EAAQjO,EAAY+R,GACrE9D,KAAoB,EACpBjO,KAA4B,EACvB+R,GACHN,EAAYxD,EAAQjO,EAAY5Z,KAAK4B,QAKvC,IAFA,IAAIqlB,EAAMjnB,KAAK6nB,IAAWjO,GACtBoS,EAAM,EACHpS,EAAa,IAAMoS,GAAO,MAC/B/E,GAAOjnB,KAAK6nB,IAAWjO,GAAcoS,EAGvC,OAAO/E,CACT,EAEAxd,EAAO3K,UAAUotB,UAAY,SAAoBrE,EAAQ8D,GAGvD,OAFA9D,KAAoB,EACf8D,GAAUN,EAAYxD,EAAQ,EAAG7nB,KAAK4B,QACpC5B,KAAK6nB,EACd,EAEApe,EAAO3K,UAAUqtB,aAAe,SAAuBtE,EAAQ8D,GAG7D,OAFA9D,KAAoB,EACf8D,GAAUN,EAAYxD,EAAQ,EAAG7nB,KAAK4B,QACpC5B,KAAK6nB,GAAW7nB,KAAK6nB,EAAS,IAAM,CAC7C,EAEApe,EAAO3K,UAAU0oB,aAAe,SAAuBK,EAAQ8D,GAG7D,OAFA9D,KAAoB,EACf8D,GAAUN,EAAYxD,EAAQ,EAAG7nB,KAAK4B,QACnC5B,KAAK6nB,IAAW,EAAK7nB,KAAK6nB,EAAS,EAC7C,EAEApe,EAAO3K,UAAUstB,aAAe,SAAuBvE,EAAQ8D,GAI7D,OAHA9D,KAAoB,EACf8D,GAAUN,EAAYxD,EAAQ,EAAG7nB,KAAK4B,SAElC5B,KAAK6nB,GACT7nB,KAAK6nB,EAAS,IAAM,EACpB7nB,KAAK6nB,EAAS,IAAM,IACD,SAAnB7nB,KAAK6nB,EAAS,EACrB,EAEApe,EAAO3K,UAAUutB,aAAe,SAAuBxE,EAAQ8D,GAI7D,OAHA9D,KAAoB,EACf8D,GAAUN,EAAYxD,EAAQ,EAAG7nB,KAAK4B,QAEpB,SAAf5B,KAAK6nB,IACT7nB,KAAK6nB,EAAS,IAAM,GACrB7nB,KAAK6nB,EAAS,IAAM,EACrB7nB,KAAK6nB,EAAS,GAClB,EAEApe,EAAO3K,UAAUwtB,UAAY,SAAoBzE,EAAQjO,EAAY+R,GACnE9D,KAAoB,EACpBjO,KAA4B,EACvB+R,GAAUN,EAAYxD,EAAQjO,EAAY5Z,KAAK4B,QAKpD,IAHA,IAAIqlB,EAAMjnB,KAAK6nB,GACXmE,EAAM,EACNxc,EAAI,IACCA,EAAIoK,IAAeoS,GAAO,MACjC/E,GAAOjnB,KAAK6nB,EAASrY,GAAKwc,EAM5B,OAFI/E,IAFJ+E,GAAO,OAES/E,GAAO9Z,KAAKof,IAAI,EAAG,EAAI3S,IAEhCqN,CACT,EAEAxd,EAAO3K,UAAU0tB,UAAY,SAAoB3E,EAAQjO,EAAY+R,GACnE9D,KAAoB,EACpBjO,KAA4B,EACvB+R,GAAUN,EAAYxD,EAAQjO,EAAY5Z,KAAK4B,QAKpD,IAHA,IAAI4N,EAAIoK,EACJoS,EAAM,EACN/E,EAAMjnB,KAAK6nB,IAAWrY,GACnBA,EAAI,IAAMwc,GAAO,MACtB/E,GAAOjnB,KAAK6nB,IAAWrY,GAAKwc,EAM9B,OAFI/E,IAFJ+E,GAAO,OAES/E,GAAO9Z,KAAKof,IAAI,EAAG,EAAI3S,IAEhCqN,CACT,EAEAxd,EAAO3K,UAAU2tB,SAAW,SAAmB5E,EAAQ8D,GAGrD,OAFA9D,KAAoB,EACf8D,GAAUN,EAAYxD,EAAQ,EAAG7nB,KAAK4B,QACtB,IAAf5B,KAAK6nB,IAC0B,GAA5B,IAAO7nB,KAAK6nB,GAAU,GADK7nB,KAAK6nB,EAE3C,EAEApe,EAAO3K,UAAU4tB,YAAc,SAAsB7E,EAAQ8D,GAC3D9D,KAAoB,EACf8D,GAAUN,EAAYxD,EAAQ,EAAG7nB,KAAK4B,QAC3C,IAAIqlB,EAAMjnB,KAAK6nB,GAAW7nB,KAAK6nB,EAAS,IAAM,EAC9C,OAAc,MAANZ,EAAsB,WAANA,EAAmBA,CAC7C,EAEAxd,EAAO3K,UAAU6tB,YAAc,SAAsB9E,EAAQ8D,GAC3D9D,KAAoB,EACf8D,GAAUN,EAAYxD,EAAQ,EAAG7nB,KAAK4B,QAC3C,IAAIqlB,EAAMjnB,KAAK6nB,EAAS,GAAM7nB,KAAK6nB,IAAW,EAC9C,OAAc,MAANZ,EAAsB,WAANA,EAAmBA,CAC7C,EAEAxd,EAAO3K,UAAU8tB,YAAc,SAAsB/E,EAAQ8D,GAI3D,OAHA9D,KAAoB,EACf8D,GAAUN,EAAYxD,EAAQ,EAAG7nB,KAAK4B,QAEnC5B,KAAK6nB,GACV7nB,KAAK6nB,EAAS,IAAM,EACpB7nB,KAAK6nB,EAAS,IAAM,GACpB7nB,KAAK6nB,EAAS,IAAM,EACzB,EAEApe,EAAO3K,UAAU+tB,YAAc,SAAsBhF,EAAQ8D,GAI3D,OAHA9D,KAAoB,EACf8D,GAAUN,EAAYxD,EAAQ,EAAG7nB,KAAK4B,QAEnC5B,KAAK6nB,IAAW,GACrB7nB,KAAK6nB,EAAS,IAAM,GACpB7nB,KAAK6nB,EAAS,IAAM,EACpB7nB,KAAK6nB,EAAS,EACnB,EAEApe,EAAO3K,UAAUguB,YAAc,SAAsBjF,EAAQ8D,GAG3D,OAFA9D,KAAoB,EACf8D,GAAUN,EAAYxD,EAAQ,EAAG7nB,KAAK4B,QACpCuiB,EAAQ7Q,KAAKtT,KAAM6nB,GAAQ,EAAM,GAAI,EAC9C,EAEApe,EAAO3K,UAAUiuB,YAAc,SAAsBlF,EAAQ8D,GAG3D,OAFA9D,KAAoB,EACf8D,GAAUN,EAAYxD,EAAQ,EAAG7nB,KAAK4B,QACpCuiB,EAAQ7Q,KAAKtT,KAAM6nB,GAAQ,EAAO,GAAI,EAC/C,EAEApe,EAAO3K,UAAUkuB,aAAe,SAAuBnF,EAAQ8D,GAG7D,OAFA9D,KAAoB,EACf8D,GAAUN,EAAYxD,EAAQ,EAAG7nB,KAAK4B,QACpCuiB,EAAQ7Q,KAAKtT,KAAM6nB,GAAQ,EAAM,GAAI,EAC9C,EAEApe,EAAO3K,UAAUmuB,aAAe,SAAuBpF,EAAQ8D,GAG7D,OAFA9D,KAAoB,EACf8D,GAAUN,EAAYxD,EAAQ,EAAG7nB,KAAK4B,QACpCuiB,EAAQ7Q,KAAKtT,KAAM6nB,GAAQ,EAAO,GAAI,EAC/C,EAQApe,EAAO3K,UAAUouB,YAAc,SAAsB9vB,EAAOyqB,EAAQjO,EAAY+R,GAC9EvuB,GAASA,EACTyqB,KAAoB,EACpBjO,KAA4B,EACvB+R,GAEHJ,EAASvrB,KAAM5C,EAAOyqB,EAAQjO,EADfzM,KAAKof,IAAI,EAAG,EAAI3S,GAAc,EACO,GAGtD,IAAIoS,EAAM,EACNxc,EAAI,EAER,IADAxP,KAAK6nB,GAAkB,IAARzqB,IACNoS,EAAIoK,IAAeoS,GAAO,MACjChsB,KAAK6nB,EAASrY,GAAMpS,EAAQ4uB,EAAO,IAGrC,OAAOnE,EAASjO,CAClB,EAEAnQ,EAAO3K,UAAUquB,YAAc,SAAsB/vB,EAAOyqB,EAAQjO,EAAY+R,GAC9EvuB,GAASA,EACTyqB,KAAoB,EACpBjO,KAA4B,EACvB+R,GAEHJ,EAASvrB,KAAM5C,EAAOyqB,EAAQjO,EADfzM,KAAKof,IAAI,EAAG,EAAI3S,GAAc,EACO,GAGtD,IAAIpK,EAAIoK,EAAa,EACjBoS,EAAM,EAEV,IADAhsB,KAAK6nB,EAASrY,GAAa,IAARpS,IACVoS,GAAK,IAAMwc,GAAO,MACzBhsB,KAAK6nB,EAASrY,GAAMpS,EAAQ4uB,EAAO,IAGrC,OAAOnE,EAASjO,CAClB,EAEAnQ,EAAO3K,UAAUsuB,WAAa,SAAqBhwB,EAAOyqB,EAAQ8D,GAKhE,OAJAvuB,GAASA,EACTyqB,KAAoB,EACf8D,GAAUJ,EAASvrB,KAAM5C,EAAOyqB,EAAQ,EAAG,IAAM,GACtD7nB,KAAK6nB,GAAmB,IAARzqB,EACTyqB,EAAS,CAClB,EAEApe,EAAO3K,UAAUuuB,cAAgB,SAAwBjwB,EAAOyqB,EAAQ8D,GAMtE,OALAvuB,GAASA,EACTyqB,KAAoB,EACf8D,GAAUJ,EAASvrB,KAAM5C,EAAOyqB,EAAQ,EAAG,MAAQ,GACxD7nB,KAAK6nB,GAAmB,IAARzqB,EAChB4C,KAAK6nB,EAAS,GAAMzqB,IAAU,EACvByqB,EAAS,CAClB,EAEApe,EAAO3K,UAAUwuB,cAAgB,SAAwBlwB,EAAOyqB,EAAQ8D,GAMtE,OALAvuB,GAASA,EACTyqB,KAAoB,EACf8D,GAAUJ,EAASvrB,KAAM5C,EAAOyqB,EAAQ,EAAG,MAAQ,GACxD7nB,KAAK6nB,GAAWzqB,IAAU,EAC1B4C,KAAK6nB,EAAS,GAAc,IAARzqB,EACbyqB,EAAS,CAClB,EAEApe,EAAO3K,UAAUyuB,cAAgB,SAAwBnwB,EAAOyqB,EAAQ8D,GAQtE,OAPAvuB,GAASA,EACTyqB,KAAoB,EACf8D,GAAUJ,EAASvrB,KAAM5C,EAAOyqB,EAAQ,EAAG,WAAY,GAC5D7nB,KAAK6nB,EAAS,GAAMzqB,IAAU,GAC9B4C,KAAK6nB,EAAS,GAAMzqB,IAAU,GAC9B4C,KAAK6nB,EAAS,GAAMzqB,IAAU,EAC9B4C,KAAK6nB,GAAmB,IAARzqB,EACTyqB,EAAS,CAClB,EAEApe,EAAO3K,UAAU0uB,cAAgB,SAAwBpwB,EAAOyqB,EAAQ8D,GAQtE,OAPAvuB,GAASA,EACTyqB,KAAoB,EACf8D,GAAUJ,EAASvrB,KAAM5C,EAAOyqB,EAAQ,EAAG,WAAY,GAC5D7nB,KAAK6nB,GAAWzqB,IAAU,GAC1B4C,KAAK6nB,EAAS,GAAMzqB,IAAU,GAC9B4C,KAAK6nB,EAAS,GAAMzqB,IAAU,EAC9B4C,KAAK6nB,EAAS,GAAc,IAARzqB,EACbyqB,EAAS,CAClB,EAEApe,EAAO3K,UAAU2uB,WAAa,SAAqBrwB,EAAOyqB,EAAQjO,EAAY+R,GAG5E,GAFAvuB,GAASA,EACTyqB,KAAoB,GACf8D,EAAU,CACb,IAAI+B,EAAQvgB,KAAKof,IAAI,EAAI,EAAI3S,EAAc,GAE3C2R,EAASvrB,KAAM5C,EAAOyqB,EAAQjO,EAAY8T,EAAQ,GAAIA,EACxD,CAEA,IAAIle,EAAI,EACJwc,EAAM,EACN2B,EAAM,EAEV,IADA3tB,KAAK6nB,GAAkB,IAARzqB,IACNoS,EAAIoK,IAAeoS,GAAO,MAC7B5uB,EAAQ,GAAa,IAARuwB,GAAsC,IAAzB3tB,KAAK6nB,EAASrY,EAAI,KAC9Cme,EAAM,GAER3tB,KAAK6nB,EAASrY,IAAOpS,EAAQ4uB,EAAQ,GAAK2B,EAAM,IAGlD,OAAO9F,EAASjO,CAClB,EAEAnQ,EAAO3K,UAAU8uB,WAAa,SAAqBxwB,EAAOyqB,EAAQjO,EAAY+R,GAG5E,GAFAvuB,GAASA,EACTyqB,KAAoB,GACf8D,EAAU,CACb,IAAI+B,EAAQvgB,KAAKof,IAAI,EAAI,EAAI3S,EAAc,GAE3C2R,EAASvrB,KAAM5C,EAAOyqB,EAAQjO,EAAY8T,EAAQ,GAAIA,EACxD,CAEA,IAAIle,EAAIoK,EAAa,EACjBoS,EAAM,EACN2B,EAAM,EAEV,IADA3tB,KAAK6nB,EAASrY,GAAa,IAARpS,IACVoS,GAAK,IAAMwc,GAAO,MACrB5uB,EAAQ,GAAa,IAARuwB,GAAsC,IAAzB3tB,KAAK6nB,EAASrY,EAAI,KAC9Cme,EAAM,GAER3tB,KAAK6nB,EAASrY,IAAOpS,EAAQ4uB,EAAQ,GAAK2B,EAAM,IAGlD,OAAO9F,EAASjO,CAClB,EAEAnQ,EAAO3K,UAAU+uB,UAAY,SAAoBzwB,EAAOyqB,EAAQ8D,GAM9D,OALAvuB,GAASA,EACTyqB,KAAoB,EACf8D,GAAUJ,EAASvrB,KAAM5C,EAAOyqB,EAAQ,EAAG,KAAO,KACnDzqB,EAAQ,IAAGA,EAAQ,IAAOA,EAAQ,GACtC4C,KAAK6nB,GAAmB,IAARzqB,EACTyqB,EAAS,CAClB,EAEApe,EAAO3K,UAAUgvB,aAAe,SAAuB1wB,EAAOyqB,EAAQ8D,GAMpE,OALAvuB,GAASA,EACTyqB,KAAoB,EACf8D,GAAUJ,EAASvrB,KAAM5C,EAAOyqB,EAAQ,EAAG,OAAS,OACzD7nB,KAAK6nB,GAAmB,IAARzqB,EAChB4C,KAAK6nB,EAAS,GAAMzqB,IAAU,EACvByqB,EAAS,CAClB,EAEApe,EAAO3K,UAAUivB,aAAe,SAAuB3wB,EAAOyqB,EAAQ8D,GAMpE,OALAvuB,GAASA,EACTyqB,KAAoB,EACf8D,GAAUJ,EAASvrB,KAAM5C,EAAOyqB,EAAQ,EAAG,OAAS,OACzD7nB,KAAK6nB,GAAWzqB,IAAU,EAC1B4C,KAAK6nB,EAAS,GAAc,IAARzqB,EACbyqB,EAAS,CAClB,EAEApe,EAAO3K,UAAUkvB,aAAe,SAAuB5wB,EAAOyqB,EAAQ8D,GAQpE,OAPAvuB,GAASA,EACTyqB,KAAoB,EACf8D,GAAUJ,EAASvrB,KAAM5C,EAAOyqB,EAAQ,EAAG,YAAa,YAC7D7nB,KAAK6nB,GAAmB,IAARzqB,EAChB4C,KAAK6nB,EAAS,GAAMzqB,IAAU,EAC9B4C,KAAK6nB,EAAS,GAAMzqB,IAAU,GAC9B4C,KAAK6nB,EAAS,GAAMzqB,IAAU,GACvByqB,EAAS,CAClB,EAEApe,EAAO3K,UAAUmvB,aAAe,SAAuB7wB,EAAOyqB,EAAQ8D,GASpE,OARAvuB,GAASA,EACTyqB,KAAoB,EACf8D,GAAUJ,EAASvrB,KAAM5C,EAAOyqB,EAAQ,EAAG,YAAa,YACzDzqB,EAAQ,IAAGA,EAAQ,WAAaA,EAAQ,GAC5C4C,KAAK6nB,GAAWzqB,IAAU,GAC1B4C,KAAK6nB,EAAS,GAAMzqB,IAAU,GAC9B4C,KAAK6nB,EAAS,GAAMzqB,IAAU,EAC9B4C,KAAK6nB,EAAS,GAAc,IAARzqB,EACbyqB,EAAS,CAClB,EAiBApe,EAAO3K,UAAUovB,aAAe,SAAuB9wB,EAAOyqB,EAAQ8D,GACpE,OAAOF,EAAWzrB,KAAM5C,EAAOyqB,GAAQ,EAAM8D,EAC/C,EAEAliB,EAAO3K,UAAUqvB,aAAe,SAAuB/wB,EAAOyqB,EAAQ8D,GACpE,OAAOF,EAAWzrB,KAAM5C,EAAOyqB,GAAQ,EAAO8D,EAChD,EAYAliB,EAAO3K,UAAUsvB,cAAgB,SAAwBhxB,EAAOyqB,EAAQ8D,GACtE,OAAOC,EAAY5rB,KAAM5C,EAAOyqB,GAAQ,EAAM8D,EAChD,EAEAliB,EAAO3K,UAAUuvB,cAAgB,SAAwBjxB,EAAOyqB,EAAQ8D,GACtE,OAAOC,EAAY5rB,KAAM5C,EAAOyqB,GAAQ,EAAO8D,EACjD,EAGAliB,EAAO3K,UAAU0jB,KAAO,SAAehC,EAAQ8N,EAAa5hB,EAAOwF,GACjE,IAAKzI,EAAOuc,SAASxF,GAAS,MAAM,IAAIlP,UAAU,+BAQlD,GAPK5E,IAAOA,EAAQ,GACfwF,GAAe,IAARA,IAAWA,EAAMlS,KAAK4B,QAC9B0sB,GAAe9N,EAAO5e,SAAQ0sB,EAAc9N,EAAO5e,QAClD0sB,IAAaA,EAAc,GAC5Bpc,EAAM,GAAKA,EAAMxF,IAAOwF,EAAMxF,GAG9BwF,IAAQxF,EAAO,OAAO,EAC1B,GAAsB,IAAlB8T,EAAO5e,QAAgC,IAAhB5B,KAAK4B,OAAc,OAAO,EAGrD,GAAI0sB,EAAc,EAChB,MAAM,IAAI5J,WAAW,6BAEvB,GAAIhY,EAAQ,GAAKA,GAAS1M,KAAK4B,OAAQ,MAAM,IAAI8iB,WAAW,sBAC5D,GAAIxS,EAAM,EAAG,MAAM,IAAIwS,WAAW,2BAG9BxS,EAAMlS,KAAK4B,SAAQsQ,EAAMlS,KAAK4B,QAC9B4e,EAAO5e,OAAS0sB,EAAcpc,EAAMxF,IACtCwF,EAAMsO,EAAO5e,OAAS0sB,EAAc5hB,GAGtC,IAAIqW,EAAM7Q,EAAMxF,EAEhB,GAAI1M,OAASwgB,GAAqD,mBAApCsC,WAAWhkB,UAAUyvB,WAEjDvuB,KAAKuuB,WAAWD,EAAa5hB,EAAOwF,QAC/B,GAAIlS,OAASwgB,GAAU9T,EAAQ4hB,GAAeA,EAAcpc,EAEjE,IAAK,IAAI1C,EAAIuT,EAAM,EAAGvT,GAAK,IAAKA,EAC9BgR,EAAOhR,EAAI8e,GAAetuB,KAAKwP,EAAI9C,QAGrCoW,WAAWhkB,UAAUI,IAAIF,KACvBwhB,EACAxgB,KAAK8rB,SAASpf,EAAOwF,GACrBoc,GAIJ,OAAOvL,CACT,EAMAtZ,EAAO3K,UAAU0mB,KAAO,SAAeyB,EAAKva,EAAOwF,EAAKuT,GAEtD,GAAmB,iBAARwB,EAAkB,CAS3B,GARqB,iBAAVva,GACT+Y,EAAW/Y,EACXA,EAAQ,EACRwF,EAAMlS,KAAK4B,QACa,iBAARsQ,IAChBuT,EAAWvT,EACXA,EAAMlS,KAAK4B,aAEIkE,IAAb2f,GAA8C,iBAAbA,EACnC,MAAM,IAAInU,UAAU,6BAEtB,GAAwB,iBAAbmU,IAA0Bhc,EAAOmc,WAAWH,GACrD,MAAM,IAAInU,UAAU,qBAAuBmU,GAE7C,GAAmB,IAAfwB,EAAIrlB,OAAc,CACpB,IAAI+N,EAAOsX,EAAIlU,WAAW,IACR,SAAb0S,GAAuB9V,EAAO,KAClB,WAAb8V,KAEFwB,EAAMtX,EAEV,CACF,KAA0B,iBAARsX,IAChBA,GAAY,KAId,GAAIva,EAAQ,GAAK1M,KAAK4B,OAAS8K,GAAS1M,KAAK4B,OAASsQ,EACpD,MAAM,IAAIwS,WAAW,sBAGvB,GAAIxS,GAAOxF,EACT,OAAO1M,KAQT,IAAIwP,EACJ,GANA9C,KAAkB,EAClBwF,OAAcpM,IAARoM,EAAoBlS,KAAK4B,OAASsQ,IAAQ,EAE3C+U,IAAKA,EAAM,GAGG,iBAARA,EACT,IAAKzX,EAAI9C,EAAO8C,EAAI0C,IAAO1C,EACzBxP,KAAKwP,GAAKyX,MAEP,CACL,IAAImE,EAAQ3hB,EAAOuc,SAASiB,GACxBA,EACAxd,EAAOC,KAAKud,EAAKxB,GACjB1C,EAAMqI,EAAMxpB,OAChB,GAAY,IAARmhB,EACF,MAAM,IAAIzR,UAAU,cAAgB2V,EAClC,qCAEJ,IAAKzX,EAAI,EAAGA,EAAI0C,EAAMxF,IAAS8C,EAC7BxP,KAAKwP,EAAI9C,GAAS0e,EAAM5b,EAAIuT,EAEhC,CAEA,OAAO/iB,IACT,EAKA,IAAIwuB,EAAoB,oBAExB,SAASC,EAAatE,GAMpB,IAFAA,GAFAA,EAAMA,EAAI5O,MAAM,KAAK,IAEX8O,OAAO/e,QAAQkjB,EAAmB,KAEpC5sB,OAAS,EAAG,MAAO,GAE3B,KAAOuoB,EAAIvoB,OAAS,GAAM,GACxBuoB,GAAY,IAEd,OAAOA,CACT,CAEA,SAASgB,EAAO9b,GACd,OAAIA,EAAI,GAAW,IAAMA,EAAEhE,SAAS,IAC7BgE,EAAEhE,SAAS,GACpB,CAEA,SAASgb,EAAaV,EAAQ+I,GAE5B,IAAI1F,EADJ0F,EAAQA,GAASC,IAMjB,IAJA,IAAI/sB,EAAS+jB,EAAO/jB,OAChBgtB,EAAgB,KAChBxD,EAAQ,GAEH5b,EAAI,EAAGA,EAAI5N,IAAU4N,EAAG,CAI/B,IAHAwZ,EAAYrD,EAAO5S,WAAWvD,IAGd,OAAUwZ,EAAY,MAAQ,CAE5C,IAAK4F,EAAe,CAElB,GAAI5F,EAAY,MAAQ,EAEjB0F,GAAS,IAAM,GAAGtD,EAAMlpB,KAAK,IAAM,IAAM,KAC9C,QACF,CAAO,GAAIsN,EAAI,IAAM5N,EAAQ,EAEtB8sB,GAAS,IAAM,GAAGtD,EAAMlpB,KAAK,IAAM,IAAM,KAC9C,QACF,CAGA0sB,EAAgB5F,EAEhB,QACF,CAGA,GAAIA,EAAY,MAAQ,EACjB0F,GAAS,IAAM,GAAGtD,EAAMlpB,KAAK,IAAM,IAAM,KAC9C0sB,EAAgB5F,EAChB,QACF,CAGAA,EAAkE,OAArD4F,EAAgB,OAAU,GAAK5F,EAAY,MAC1D,MAAW4F,IAEJF,GAAS,IAAM,GAAGtD,EAAMlpB,KAAK,IAAM,IAAM,KAMhD,GAHA0sB,EAAgB,KAGZ5F,EAAY,IAAM,CACpB,IAAK0F,GAAS,GAAK,EAAG,MACtBtD,EAAMlpB,KAAK8mB,EACb,MAAO,GAAIA,EAAY,KAAO,CAC5B,IAAK0F,GAAS,GAAK,EAAG,MACtBtD,EAAMlpB,KACJ8mB,GAAa,EAAM,IACP,GAAZA,EAAmB,IAEvB,MAAO,GAAIA,EAAY,MAAS,CAC9B,IAAK0F,GAAS,GAAK,EAAG,MACtBtD,EAAMlpB,KACJ8mB,GAAa,GAAM,IACnBA,GAAa,EAAM,GAAO,IACd,GAAZA,EAAmB,IAEvB,KAAO,MAAIA,EAAY,SASrB,MAAM,IAAIlnB,MAAM,sBARhB,IAAK4sB,GAAS,GAAK,EAAG,MACtBtD,EAAMlpB,KACJ8mB,GAAa,GAAO,IACpBA,GAAa,GAAM,GAAO,IAC1BA,GAAa,EAAM,GAAO,IACd,GAAZA,EAAmB,IAIvB,CACF,CAEA,OAAOoC,CACT,CAEA,SAAS9C,EAAc6B,GAErB,IADA,IAAI0E,EAAY,GACPrf,EAAI,EAAGA,EAAI2a,EAAIvoB,SAAU4N,EAEhCqf,EAAU3sB,KAAyB,IAApBioB,EAAIpX,WAAWvD,IAEhC,OAAOqf,CACT,CAEA,SAASnG,EAAgByB,EAAKuE,GAG5B,IAFA,IAAII,EAAGC,EAAIC,EACPH,EAAY,GACPrf,EAAI,EAAGA,EAAI2a,EAAIvoB,WACjB8sB,GAAS,GAAK,KADalf,EAIhCuf,GADAD,EAAI3E,EAAIpX,WAAWvD,KACT,EACVwf,EAAKF,EAAI,IACTD,EAAU3sB,KAAK8sB,GACfH,EAAU3sB,KAAK6sB,GAGjB,OAAOF,CACT,CAEA,SAASvI,EAAe6D,GACtB,OAAOjG,EAAOzB,YAAYgM,EAAYtE,GACxC,CAEA,SAAS/B,EAAY6G,EAAKC,EAAKrH,EAAQjmB,GACrC,IAAK,IAAI4N,EAAI,EAAGA,EAAI5N,KACb4N,EAAIqY,GAAUqH,EAAIttB,QAAY4N,GAAKyf,EAAIrtB,UADhB4N,EAE5B0f,EAAI1f,EAAIqY,GAAUoH,EAAIzf,GAExB,OAAOA,CACT,CAKA,SAAS2V,EAAYhnB,EAAKuF,GACxB,OAAOvF,aAAeuF,GACZ,MAAPvF,GAAkC,MAAnBA,EAAIuQ,aAA+C,MAAxBvQ,EAAIuQ,YAAYygB,MACzDhxB,EAAIuQ,YAAYygB,OAASzrB,EAAKyrB,IACpC,CACA,SAASlJ,EAAa9nB,GAEpB,OAAOA,GAAQA,CACjB,CAEC,GAAEa,KAAKgB,KAAM,GAAEhB,KAAKgB,KAAK6P,EAAQ,UAAUpG,OAE5C,EAAE,CAAC,YAAY,GAAG,OAAS,GAAG,QAAU,KAAK,GAAG,CAAC,SAASoG,EAAQT,EAAOjS,GAsBzE,aAEA,IAOIiyB,EAPAC,EAAuB,iBAAZrhB,QAAuBA,QAAU,KAC5CshB,EAAeD,GAAwB,mBAAZA,EAAE5sB,MAC7B4sB,EAAE5sB,MACF,SAAsB+d,EAAQpI,EAAUwJ,GACxC,OAAO2N,SAASzwB,UAAU2D,MAAMzD,KAAKwhB,EAAQpI,EAAUwJ,EACzD,EAgBF,SAAS4N,EAAmBC,GACtB9rB,GAAWA,EAAQC,MAAMD,EAAQC,KAAK6rB,EAC5C,CAdEL,EADEC,GAA0B,mBAAdA,EAAEK,QACCL,EAAEK,QACVzyB,OAAO0yB,sBACC,SAAwBnP,GACvC,OAAOvjB,OAAO2yB,oBAAoBpP,GAC/B5a,OAAO3I,OAAO0yB,sBAAsBnP,GACzC,EAEiB,SAAwBA,GACvC,OAAOvjB,OAAO2yB,oBAAoBpP,EACpC,EAOF,IAAIqP,EAAcpU,OAAOqU,OAAS,SAAqB1yB,GACrD,OAAOA,GAAUA,CACnB,EAEA,SAAS2yB,IACPA,EAAaC,KAAKhxB,KAAKgB,KACzB,CACAoP,EAAOjS,QAAU4yB,EACjB3gB,EAAOjS,QAAQ8yB,KAAOA,EAGtBF,EAAaA,aAAeA,EAE5BA,EAAajxB,UAAUoxB,aAAUpqB,EACjCiqB,EAAajxB,UAAUqxB,aAAe,EACtCJ,EAAajxB,UAAUsxB,mBAAgBtqB,EAIvC,IAAIuqB,EAAsB,GAE1B,SAASC,EAAcC,GACrB,GAAwB,mBAAbA,EACT,MAAM,IAAIjf,UAAU,0EAA4Eif,EAEpG,CAoCA,SAASC,EAAiBC,GACxB,YAA2B3qB,IAAvB2qB,EAAKL,cACAL,EAAaM,oBACfI,EAAKL,aACd,CAkDA,SAASM,EAAalQ,EAAQ9c,EAAM6sB,EAAUI,GAC5C,IAAIhZ,EACAiZ,EACAC,EAsBJ,GApBAP,EAAcC,QAGCzqB,KADf8qB,EAASpQ,EAAO0P,UAEdU,EAASpQ,EAAO0P,QAAUjzB,OAAOgF,OAAO,MACxCue,EAAO2P,aAAe,SAIKrqB,IAAvB8qB,EAAOE,cACTtQ,EAAOuQ,KAAK,cAAertB,EACf6sB,EAASA,SAAWA,EAASA,SAAWA,GAIpDK,EAASpQ,EAAO0P,SAElBW,EAAWD,EAAOltB,SAGHoC,IAAb+qB,EAEFA,EAAWD,EAAOltB,GAAQ6sB,IACxB/P,EAAO2P,kBAeT,GAbwB,mBAAbU,EAETA,EAAWD,EAAOltB,GAChBitB,EAAU,CAACJ,EAAUM,GAAY,CAACA,EAAUN,GAErCI,EACTE,EAASG,QAAQT,GAEjBM,EAAS3uB,KAAKquB,IAIhB5Y,EAAI6Y,EAAiBhQ,IACb,GAAKqQ,EAASjvB,OAAS+V,IAAMkZ,EAASI,OAAQ,CACpDJ,EAASI,QAAS,EAGlB,IAAIC,EAAI,IAAIpvB,MAAM,+CACE+uB,EAASjvB,OAAS,IAAMiU,OAAOnS,GADjC,qEAIlBwtB,EAAE/B,KAAO,8BACT+B,EAAEC,QAAU3Q,EACZ0Q,EAAExtB,KAAOA,EACTwtB,EAAErc,MAAQgc,EAASjvB,OACnB4tB,EAAmB0B,EACrB,CAGF,OAAO1Q,CACT,CAaA,SAAS4Q,IACP,IAAKpxB,KAAKqxB,MAGR,OAFArxB,KAAKwgB,OAAO8Q,eAAetxB,KAAK0D,KAAM1D,KAAKuxB,QAC3CvxB,KAAKqxB,OAAQ,EACY,IAArB3uB,UAAUd,OACL5B,KAAKuwB,SAASvxB,KAAKgB,KAAKwgB,QAC1BxgB,KAAKuwB,SAAS9tB,MAAMzC,KAAKwgB,OAAQ9d,UAE5C,CAEA,SAAS8uB,EAAUhR,EAAQ9c,EAAM6sB,GAC/B,IAAIkB,EAAQ,CAAEJ,OAAO,EAAOE,YAAQzrB,EAAW0a,OAAQA,EAAQ9c,KAAMA,EAAM6sB,SAAUA,GACjFmB,EAAUN,EAAY7P,KAAKkQ,GAG/B,OAFAC,EAAQnB,SAAWA,EACnBkB,EAAMF,OAASG,EACRA,CACT,CAyHA,SAASC,EAAWnR,EAAQ9c,EAAMkuB,GAChC,IAAIhB,EAASpQ,EAAO0P,QAEpB,QAAepqB,IAAX8qB,EACF,MAAO,GAET,IAAIiB,EAAajB,EAAOltB,GACxB,YAAmBoC,IAAf+rB,EACK,GAEiB,mBAAfA,EACFD,EAAS,CAACC,EAAWtB,UAAYsB,GAAc,CAACA,GAElDD,EACLE,EAAgBD,GAAcE,EAAWF,EAAYA,EAAWjwB,OACpE,CAmBA,SAASowB,EAActuB,GACrB,IAAIktB,EAAS5wB,KAAKkwB,QAElB,QAAepqB,IAAX8qB,EAAsB,CACxB,IAAIiB,EAAajB,EAAOltB,GAExB,GAA0B,mBAAfmuB,EACT,OAAO,EACF,QAAmB/rB,IAAf+rB,EACT,OAAOA,EAAWjwB,MAEtB,CAEA,OAAO,CACT,CAMA,SAASmwB,EAAWxO,EAAKlU,GAEvB,IADA,IAAImT,EAAO,IAAI5M,MAAMvG,GACZG,EAAI,EAAGA,EAAIH,IAAKG,EACvBgT,EAAKhT,GAAK+T,EAAI/T,GAChB,OAAOgT,CACT,CAEA,SAASyP,EAAUtI,EAAMuI,GACvB,KAAOA,EAAQ,EAAIvI,EAAK/nB,OAAQswB,IAC9BvI,EAAKuI,GAASvI,EAAKuI,EAAQ,GAC7BvI,EAAKpY,KACP,CAEA,SAASugB,EAAgBvO,GAEvB,IADA,IAAI0H,EAAM,IAAIrV,MAAM2N,EAAI3hB,QACf4N,EAAI,EAAGA,EAAIyb,EAAIrpB,SAAU4N,EAChCyb,EAAIzb,GAAK+T,EAAI/T,GAAG+gB,UAAYhN,EAAI/T,GAElC,OAAOyb,CACT,CAEA,SAASgF,EAAKkB,EAAShC,GACrB,OAAO,IAAI7oB,SAAQ,SAAUxB,EAASwF,GACpC,SAAS6nB,SACersB,IAAlBssB,GACFjB,EAAQG,eAAe,QAASc,GAElCttB,EAAQ,GAAGkO,MAAMhU,KAAK0D,WACxB,CACA,IAAI0vB,EAQS,UAATjD,IACFiD,EAAgB,SAAuBtZ,GACrCqY,EAAQG,eAAenC,EAAMgD,GAC7B7nB,EAAOwO,EACT,EAEAqY,EAAQlB,KAAK,QAASmC,IAGxBjB,EAAQlB,KAAKd,EAAMgD,EACrB,GACF,CAhZAl1B,OAAOC,eAAe6yB,EAAc,sBAAuB,CACzD3b,YAAY,EACZ3V,IAAK,WACH,OAAO4xB,CACT,EACAnxB,IAAK,SAAS0lB,GACZ,GAAmB,iBAARA,GAAoBA,EAAM,GAAKiL,EAAYjL,GACpD,MAAM,IAAIF,WAAW,kGAAoGE,EAAM,KAEjIyL,EAAsBzL,CACxB,IAGFmL,EAAaC,KAAO,gBAEGlqB,IAAjB9F,KAAKkwB,SACLlwB,KAAKkwB,UAAYjzB,OAAOo1B,eAAeryB,MAAMkwB,UAC/ClwB,KAAKkwB,QAAUjzB,OAAOgF,OAAO,MAC7BjC,KAAKmwB,aAAe,GAGtBnwB,KAAKowB,cAAgBpwB,KAAKowB,oBAAiBtqB,CAC7C,EAIAiqB,EAAajxB,UAAUwzB,gBAAkB,SAAyBjjB,GAChE,GAAiB,iBAANA,GAAkBA,EAAI,GAAKwgB,EAAYxgB,GAChD,MAAM,IAAIqV,WAAW,gFAAkFrV,EAAI,KAG7G,OADArP,KAAKowB,cAAgB/gB,EACdrP,IACT,EAQA+vB,EAAajxB,UAAUyzB,gBAAkB,WACvC,OAAO/B,EAAiBxwB,KAC1B,EAEA+vB,EAAajxB,UAAUiyB,KAAO,SAAcrtB,GAE1C,IADA,IAAIke,EAAO,GACFpS,EAAI,EAAGA,EAAI9M,UAAUd,OAAQ4N,IAAKoS,EAAK1f,KAAKQ,UAAU8M,IAC/D,IAAIgjB,EAAoB,UAAT9uB,EAEXktB,EAAS5wB,KAAKkwB,QAClB,QAAepqB,IAAX8qB,EACF4B,EAAWA,QAA4B1sB,IAAjB8qB,EAAO/uB,WAC1B,IAAK2wB,EACR,OAAO,EAGT,GAAIA,EAAS,CACX,IAAIC,EAGJ,GAFI7Q,EAAKhgB,OAAS,IAChB6wB,EAAK7Q,EAAK,IACR6Q,aAAc3wB,MAGhB,MAAM2wB,EAGR,IAAI3Z,EAAM,IAAIhX,MAAM,oBAAsB2wB,EAAK,KAAOA,EAAGpqB,QAAU,IAAM,KAEzE,MADAyQ,EAAI4Z,QAAUD,EACR3Z,CACR,CAEA,IAAIiH,EAAU6Q,EAAOltB,GAErB,QAAgBoC,IAAZia,EACF,OAAO,EAET,GAAuB,mBAAZA,EACTuP,EAAavP,EAAS/f,KAAM4hB,OAE5B,KAAImB,EAAMhD,EAAQne,OACd+wB,EAAYZ,EAAWhS,EAASgD,GACpC,IAASvT,EAAI,EAAGA,EAAIuT,IAAOvT,EACzB8f,EAAaqD,EAAUnjB,GAAIxP,KAAM4hB,EAHX,CAM1B,OAAO,CACT,EAgEAmO,EAAajxB,UAAU8zB,YAAc,SAAqBlvB,EAAM6sB,GAC9D,OAAOG,EAAa1wB,KAAM0D,EAAM6sB,GAAU,EAC5C,EAEAR,EAAajxB,UAAU+zB,GAAK9C,EAAajxB,UAAU8zB,YAEnD7C,EAAajxB,UAAUg0B,gBACnB,SAAyBpvB,EAAM6sB,GAC7B,OAAOG,EAAa1wB,KAAM0D,EAAM6sB,GAAU,EAC5C,EAoBJR,EAAajxB,UAAUmxB,KAAO,SAAcvsB,EAAM6sB,GAGhD,OAFAD,EAAcC,GACdvwB,KAAK6yB,GAAGnvB,EAAM8tB,EAAUxxB,KAAM0D,EAAM6sB,IAC7BvwB,IACT,EAEA+vB,EAAajxB,UAAUi0B,oBACnB,SAA6BrvB,EAAM6sB,GAGjC,OAFAD,EAAcC,GACdvwB,KAAK8yB,gBAAgBpvB,EAAM8tB,EAAUxxB,KAAM0D,EAAM6sB,IAC1CvwB,IACT,EAGJ+vB,EAAajxB,UAAUwyB,eACnB,SAAwB5tB,EAAM6sB,GAC5B,IAAI5G,EAAMiH,EAAQoC,EAAUxjB,EAAGyjB,EAK/B,GAHA3C,EAAcC,QAGCzqB,KADf8qB,EAAS5wB,KAAKkwB,SAEZ,OAAOlwB,KAGT,QAAa8F,KADb6jB,EAAOiH,EAAOltB,IAEZ,OAAO1D,KAET,GAAI2pB,IAAS4G,GAAY5G,EAAK4G,WAAaA,EACb,KAAtBvwB,KAAKmwB,aACTnwB,KAAKkwB,QAAUjzB,OAAOgF,OAAO,cAEtB2uB,EAAOltB,GACVktB,EAAOU,gBACTtxB,KAAK+wB,KAAK,iBAAkBrtB,EAAMimB,EAAK4G,UAAYA,SAElD,GAAoB,mBAAT5G,EAAqB,CAGrC,IAFAqJ,GAAY,EAEPxjB,EAAIma,EAAK/nB,OAAS,EAAG4N,GAAK,EAAGA,IAChC,GAAIma,EAAKna,KAAO+gB,GAAY5G,EAAKna,GAAG+gB,WAAaA,EAAU,CACzD0C,EAAmBtJ,EAAKna,GAAG+gB,SAC3ByC,EAAWxjB,EACX,KACF,CAGF,GAAIwjB,EAAW,EACb,OAAOhzB,KAEQ,IAAbgzB,EACFrJ,EAAKroB,QAEL2wB,EAAUtI,EAAMqJ,GAGE,IAAhBrJ,EAAK/nB,SACPgvB,EAAOltB,GAAQimB,EAAK,SAEQ7jB,IAA1B8qB,EAAOU,gBACTtxB,KAAK+wB,KAAK,iBAAkBrtB,EAAMuvB,GAAoB1C,EAC1D,CAEA,OAAOvwB,IACT,EAEJ+vB,EAAajxB,UAAUo0B,IAAMnD,EAAajxB,UAAUwyB,eAEpDvB,EAAajxB,UAAUq0B,mBACnB,SAA4BzvB,GAC1B,IAAIivB,EAAW/B,EAAQphB,EAGvB,QAAe1J,KADf8qB,EAAS5wB,KAAKkwB,SAEZ,OAAOlwB,KAGT,QAA8B8F,IAA1B8qB,EAAOU,eAUT,OATyB,IAArB5uB,UAAUd,QACZ5B,KAAKkwB,QAAUjzB,OAAOgF,OAAO,MAC7BjC,KAAKmwB,aAAe,QACMrqB,IAAjB8qB,EAAOltB,KACY,KAAtB1D,KAAKmwB,aACTnwB,KAAKkwB,QAAUjzB,OAAOgF,OAAO,aAEtB2uB,EAAOltB,IAEX1D,KAIT,GAAyB,IAArB0C,UAAUd,OAAc,CAC1B,IACI/C,EADA8d,EAAO1f,OAAO0f,KAAKiU,GAEvB,IAAKphB,EAAI,EAAGA,EAAImN,EAAK/a,SAAU4N,EAEjB,oBADZ3Q,EAAM8d,EAAKnN,KAEXxP,KAAKmzB,mBAAmBt0B,GAK1B,OAHAmB,KAAKmzB,mBAAmB,kBACxBnzB,KAAKkwB,QAAUjzB,OAAOgF,OAAO,MAC7BjC,KAAKmwB,aAAe,EACbnwB,IACT,CAIA,GAAyB,mBAFzB2yB,EAAY/B,EAAOltB,IAGjB1D,KAAKsxB,eAAe5tB,EAAMivB,QACrB,QAAkB7sB,IAAd6sB,EAET,IAAKnjB,EAAImjB,EAAU/wB,OAAS,EAAG4N,GAAK,EAAGA,IACrCxP,KAAKsxB,eAAe5tB,EAAMivB,EAAUnjB,IAIxC,OAAOxP,IACT,EAmBJ+vB,EAAajxB,UAAU6zB,UAAY,SAAmBjvB,GACpD,OAAOiuB,EAAW3xB,KAAM0D,GAAM,EAChC,EAEAqsB,EAAajxB,UAAUs0B,aAAe,SAAsB1vB,GAC1D,OAAOiuB,EAAW3xB,KAAM0D,GAAM,EAChC,EAEAqsB,EAAaiC,cAAgB,SAASb,EAASztB,GAC7C,MAAqC,mBAA1BytB,EAAQa,cACVb,EAAQa,cAActuB,GAEtBsuB,EAAchzB,KAAKmyB,EAASztB,EAEvC,EAEAqsB,EAAajxB,UAAUkzB,cAAgBA,EAiBvCjC,EAAajxB,UAAUu0B,WAAa,WAClC,OAAOrzB,KAAKmwB,aAAe,EAAIf,EAAepvB,KAAKkwB,SAAW,EAChE,CAoDA,EAAE,CAAC,GAAG,GAAG,CAAC,SAASrgB,EAAQT,EAAOjS,GAElCA,EAAQmW,KAAO,SAAU9J,EAAQqe,EAAQyL,EAAMC,EAAMC,GACnD,IAAIvpB,EAAG0N,EACH8b,EAAiB,EAATD,EAAcD,EAAO,EAC7BG,GAAQ,GAAKD,GAAQ,EACrBE,EAAQD,GAAQ,EAChBE,GAAS,EACTpkB,EAAI8jB,EAAQE,EAAS,EAAK,EAC1Bhe,EAAI8d,GAAQ,EAAI,EAChBzzB,EAAI2J,EAAOqe,EAASrY,GAOxB,IALAA,GAAKgG,EAELvL,EAAIpK,GAAM,IAAO+zB,GAAU,EAC3B/zB,KAAQ+zB,EACRA,GAASH,EACFG,EAAQ,EAAG3pB,EAAS,IAAJA,EAAWT,EAAOqe,EAASrY,GAAIA,GAAKgG,EAAGoe,GAAS,GAKvE,IAHAjc,EAAI1N,GAAM,IAAO2pB,GAAU,EAC3B3pB,KAAQ2pB,EACRA,GAASL,EACFK,EAAQ,EAAGjc,EAAS,IAAJA,EAAWnO,EAAOqe,EAASrY,GAAIA,GAAKgG,EAAGoe,GAAS,GAEvE,GAAU,IAAN3pB,EACFA,EAAI,EAAI0pB,MACH,IAAI1pB,IAAMypB,EACf,OAAO/b,EAAIkc,IAAsBlF,KAAd9uB,GAAK,EAAI,GAE5B8X,GAAQxK,KAAKof,IAAI,EAAGgH,GACpBtpB,GAAQ0pB,CACV,CACA,OAAQ9zB,GAAK,EAAI,GAAK8X,EAAIxK,KAAKof,IAAI,EAAGtiB,EAAIspB,EAC5C,EAEAp2B,EAAQyM,MAAQ,SAAUJ,EAAQpM,EAAOyqB,EAAQyL,EAAMC,EAAMC,GAC3D,IAAIvpB,EAAG0N,EAAGmX,EACN2E,EAAiB,EAATD,EAAcD,EAAO,EAC7BG,GAAQ,GAAKD,GAAQ,EACrBE,EAAQD,GAAQ,EAChBI,EAAe,KAATP,EAAcpmB,KAAKof,IAAI,GAAI,IAAMpf,KAAKof,IAAI,GAAI,IAAM,EAC1D/c,EAAI8jB,EAAO,EAAKE,EAAS,EACzBhe,EAAI8d,EAAO,GAAK,EAChBzzB,EAAIzC,EAAQ,GAAgB,IAAVA,GAAe,EAAIA,EAAQ,EAAK,EAAI,EAmC1D,IAjCAA,EAAQ+P,KAAK4mB,IAAI32B,GAEb0yB,MAAM1yB,IAAUA,IAAUuxB,KAC5BhX,EAAImY,MAAM1yB,GAAS,EAAI,EACvB6M,EAAIypB,IAEJzpB,EAAIkD,KAAKC,MAAMD,KAAK6mB,IAAI52B,GAAS+P,KAAK8mB,KAClC72B,GAAS0xB,EAAI3hB,KAAKof,IAAI,GAAItiB,IAAM,IAClCA,IACA6kB,GAAK,IAGL1xB,GADE6M,EAAI0pB,GAAS,EACNG,EAAKhF,EAELgF,EAAK3mB,KAAKof,IAAI,EAAG,EAAIoH,IAEpB7E,GAAK,IACf7kB,IACA6kB,GAAK,GAGH7kB,EAAI0pB,GAASD,GACf/b,EAAI,EACJ1N,EAAIypB,GACKzpB,EAAI0pB,GAAS,GACtBhc,GAAMva,EAAQ0xB,EAAK,GAAK3hB,KAAKof,IAAI,EAAGgH,GACpCtpB,GAAQ0pB,IAERhc,EAAIva,EAAQ+P,KAAKof,IAAI,EAAGoH,EAAQ,GAAKxmB,KAAKof,IAAI,EAAGgH,GACjDtpB,EAAI,IAIDspB,GAAQ,EAAG/pB,EAAOqe,EAASrY,GAAS,IAAJmI,EAAUnI,GAAKgG,EAAGmC,GAAK,IAAK4b,GAAQ,GAI3E,IAFAtpB,EAAKA,GAAKspB,EAAQ5b,EAClB8b,GAAQF,EACDE,EAAO,EAAGjqB,EAAOqe,EAASrY,GAAS,IAAJvF,EAAUuF,GAAKgG,EAAGvL,GAAK,IAAKwpB,GAAQ,GAE1EjqB,EAAOqe,EAASrY,EAAIgG,IAAU,IAAJ3V,CAC5B,CAEA,EAAE,CAAC,GAAG,GAAG,CAAC,SAASgQ,EAAQT,EAAOjS,GACL,mBAAlBF,OAAOgF,OAEhBmN,EAAOjS,QAAU,SAAkB+2B,EAAMC,GACnCA,IACFD,EAAKE,OAASD,EACdD,EAAKp1B,UAAY7B,OAAOgF,OAAOkyB,EAAUr1B,UAAW,CAClD4P,YAAa,CACXtR,MAAO82B,EACP9f,YAAY,EACZ9Q,UAAU,EACV+Q,cAAc,KAItB,EAGAjF,EAAOjS,QAAU,SAAkB+2B,EAAMC,GACvC,GAAIA,EAAW,CACbD,EAAKE,OAASD,EACd,IAAIE,EAAW,WAAa,EAC5BA,EAASv1B,UAAYq1B,EAAUr1B,UAC/Bo1B,EAAKp1B,UAAY,IAAIu1B,EACrBH,EAAKp1B,UAAU4P,YAAcwlB,CAC/B,CACF,CAGF,EAAE,CAAC,GAAG,GAAG,CAAC,SAASrkB,EAAQT,EAAOjS,GAElC,IAOIm3B,EACAC,EARA7hB,EAAUtD,EAAOjS,QAAU,CAAC,EAUhC,SAASq3B,IACL,MAAM,IAAI1yB,MAAM,kCACpB,CACA,SAAS2yB,IACL,MAAM,IAAI3yB,MAAM,oCACpB,CAqBA,SAAS4yB,EAAWC,GAChB,GAAIL,IAAqB9tB,WAErB,OAAOA,WAAWmuB,EAAK,GAG3B,IAAKL,IAAqBE,IAAqBF,IAAqB9tB,WAEhE,OADA8tB,EAAmB9tB,WACZA,WAAWmuB,EAAK,GAE3B,IAEI,OAAOL,EAAiBK,EAAK,EACjC,CAAE,MAAM1qB,GACJ,IAEI,OAAOqqB,EAAiBt1B,KAAK,KAAM21B,EAAK,EAC5C,CAAE,MAAM1qB,GAEJ,OAAOqqB,EAAiBt1B,KAAKgB,KAAM20B,EAAK,EAC5C,CACJ,CAGJ,CACA,SAASC,EAAgBC,GACrB,GAAIN,IAAuBO,aAEvB,OAAOA,aAAaD,GAGxB,IAAKN,IAAuBE,IAAwBF,IAAuBO,aAEvE,OADAP,EAAqBO,aACdA,aAAaD,GAExB,IAEI,OAAON,EAAmBM,EAC9B,CAAE,MAAO5qB,GACL,IAEI,OAAOsqB,EAAmBv1B,KAAK,KAAM61B,EACzC,CAAE,MAAO5qB,GAGL,OAAOsqB,EAAmBv1B,KAAKgB,KAAM60B,EACzC,CACJ,CAIJ,EAvEC,WACG,IAEQP,EADsB,mBAAf9tB,WACYA,WAEAguB,CAE3B,CAAE,MAAOvqB,GACLqqB,EAAmBE,CACvB,CACA,IAEQD,EADwB,mBAAjBO,aACcA,aAEAL,CAE7B,CAAE,MAAOxqB,GACLsqB,EAAqBE,CACzB,CACJ,CAnBA,GAwEA,IAEIM,EAFAC,EAAQ,GACRC,GAAW,EAEXC,GAAc,EAElB,SAASC,IACAF,GAAaF,IAGlBE,GAAW,EACPF,EAAanzB,OACbozB,EAAQD,EAAanvB,OAAOovB,GAE5BE,GAAc,EAEdF,EAAMpzB,QACNwzB,IAER,CAEA,SAASA,IACL,IAAIH,EAAJ,CAGA,IAAII,EAAUX,EAAWS,GACzBF,GAAW,EAGX,IADA,IAAIlS,EAAMiS,EAAMpzB,OACVmhB,GAAK,CAGP,IAFAgS,EAAeC,EACfA,EAAQ,KACCE,EAAanS,GACdgS,GACAA,EAAaG,GAAYI,MAGjCJ,GAAc,EACdnS,EAAMiS,EAAMpzB,MAChB,CACAmzB,EAAe,KACfE,GAAW,EACXL,EAAgBS,EAlBhB,CAmBJ,CAgBA,SAASE,EAAKZ,EAAK7O,GACf9lB,KAAK20B,IAAMA,EACX30B,KAAK8lB,MAAQA,CACjB,CAWA,SAAS0P,IAAQ,CA5BjB9iB,EAAQ+iB,SAAW,SAAUd,GACzB,IAAI/S,EAAO,IAAIhM,MAAMlT,UAAUd,OAAS,GACxC,GAAIc,UAAUd,OAAS,EACnB,IAAK,IAAI4N,EAAI,EAAGA,EAAI9M,UAAUd,OAAQ4N,IAClCoS,EAAKpS,EAAI,GAAK9M,UAAU8M,GAGhCwlB,EAAM9yB,KAAK,IAAIqzB,EAAKZ,EAAK/S,IACJ,IAAjBoT,EAAMpzB,QAAiBqzB,GACvBP,EAAWU,EAEnB,EAOAG,EAAKz2B,UAAUw2B,IAAM,WACjBt1B,KAAK20B,IAAIlyB,MAAM,KAAMzC,KAAK8lB,MAC9B,EACApT,EAAQgjB,MAAQ,UAChBhjB,EAAQijB,SAAU,EAClBjjB,EAAQkjB,IAAM,CAAC,EACfljB,EAAQmjB,KAAO,GACfnjB,EAAQojB,QAAU,GAClBpjB,EAAQqjB,SAAW,CAAC,EAIpBrjB,EAAQmgB,GAAK2C,EACb9iB,EAAQkgB,YAAc4C,EACtB9iB,EAAQud,KAAOuF,EACf9iB,EAAQwgB,IAAMsC,EACd9iB,EAAQ4e,eAAiBkE,EACzB9iB,EAAQygB,mBAAqBqC,EAC7B9iB,EAAQqe,KAAOyE,EACf9iB,EAAQogB,gBAAkB0C,EAC1B9iB,EAAQqgB,oBAAsByC,EAE9B9iB,EAAQigB,UAAY,SAAUxD,GAAQ,MAAO,EAAG,EAEhDzc,EAAQsjB,QAAU,SAAU7G,GACxB,MAAM,IAAIrtB,MAAM,mCACpB,EAEA4Q,EAAQujB,IAAM,WAAc,MAAO,GAAI,EACvCvjB,EAAQwjB,MAAQ,SAAUhP,GACtB,MAAM,IAAIplB,MAAM,iCACpB,EACA4Q,EAAQyjB,MAAQ,WAAa,OAAO,CAAG,CAEvC,EAAE,CAAC,GAAG,GAAG,CAAC,SAAStmB,EAAQT,EAAOjS,GAGlC,IAAIqM,EAASqG,EAAQ,UACjBpG,EAASD,EAAOC,OAGpB,SAAS2sB,EAAWnH,EAAKC,GACvB,IAAK,IAAIrwB,KAAOowB,EACdC,EAAIrwB,GAAOowB,EAAIpwB,EAEnB,CASA,SAASw3B,EAAYzR,EAAKC,EAAkBjjB,GAC1C,OAAO6H,EAAOmb,EAAKC,EAAkBjjB,EACvC,CAVI6H,EAAOC,MAAQD,EAAO2Q,OAAS3Q,EAAOqb,aAAerb,EAAO8f,gBAC9Dna,EAAOjS,QAAUqM,GAGjB4sB,EAAU5sB,EAAQrM,GAClBA,EAAQsM,OAAS4sB,GAOnBA,EAAWv3B,UAAY7B,OAAOgF,OAAOwH,EAAO3K,WAG5Cs3B,EAAU3sB,EAAQ4sB,GAElBA,EAAW3sB,KAAO,SAAUkb,EAAKC,EAAkBjjB,GACjD,GAAmB,iBAARgjB,EACT,MAAM,IAAItT,UAAU,iCAEtB,OAAO7H,EAAOmb,EAAKC,EAAkBjjB,EACvC,EAEAy0B,EAAWjc,MAAQ,SAAUnF,EAAMuQ,EAAMC,GACvC,GAAoB,iBAATxQ,EACT,MAAM,IAAI3D,UAAU,6BAEtB,IAAIqT,EAAMlb,EAAOwL,GAUjB,YATanP,IAAT0f,EACsB,iBAAbC,EACTd,EAAIa,KAAKA,EAAMC,GAEfd,EAAIa,KAAKA,GAGXb,EAAIa,KAAK,GAEJb,CACT,EAEA0R,EAAWvR,YAAc,SAAU7P,GACjC,GAAoB,iBAATA,EACT,MAAM,IAAI3D,UAAU,6BAEtB,OAAO7H,EAAOwL,EAChB,EAEAohB,EAAW9M,gBAAkB,SAAUtU,GACrC,GAAoB,iBAATA,EACT,MAAM,IAAI3D,UAAU,6BAEtB,OAAO9H,EAAO4a,WAAWnP,EAC3B,CAEA,EAAE,CAAC,OAAS,KAAK,GAAG,CAAC,SAASpF,EAAQT,EAAOjS,GAsB7CiS,EAAOjS,QAAUm5B,EAEjB,IAAIC,EAAK1mB,EAAQ,UAAUkgB,aAoB3B,SAASuG,IACPC,EAAGv3B,KAAKgB,KACV,CArBe6P,EAAQ,WAEvB2mB,CAASF,EAAQC,GACjBD,EAAOG,SAAW5mB,EAAQ,2CAC1BymB,EAAOI,SAAW7mB,EAAQ,2CAC1BymB,EAAOpX,OAASrP,EAAQ,yCACxBymB,EAAOK,UAAY9mB,EAAQ,4CAC3BymB,EAAOM,YAAc/mB,EAAQ,8CAC7BymB,EAAOO,SAAWhnB,EAAQ,yDAC1BymB,EAAOQ,SAAWjnB,EAAQ,oDAG1BymB,EAAOA,OAASA,EAWhBA,EAAOx3B,UAAUi4B,KAAO,SAASC,EAAM/zB,GACrC,IAAIg0B,EAASj3B,KAEb,SAASk3B,EAAOpiB,GACVkiB,EAAK1zB,WACH,IAAU0zB,EAAKptB,MAAMkL,IAAUmiB,EAAOE,OACxCF,EAAOE,OAGb,CAIA,SAASC,IACHH,EAAOI,UAAYJ,EAAOK,QAC5BL,EAAOK,QAEX,CANAL,EAAOpE,GAAG,OAAQqE,GAQlBF,EAAKnE,GAAG,QAASuE,GAIZJ,EAAKO,UAAct0B,IAA2B,IAAhBA,EAAQiP,MACzC+kB,EAAOpE,GAAG,MAAO2E,GACjBP,EAAOpE,GAAG,QAAShS,IAGrB,IAAI4W,GAAW,EACf,SAASD,IACHC,IACJA,GAAW,EAEXT,EAAK9kB,MACP,CAGA,SAAS2O,IACH4W,IACJA,GAAW,EAEiB,mBAAjBT,EAAKU,SAAwBV,EAAKU,UAC/C,CAGA,SAAS/X,EAAQ8S,GAEf,GADAkF,IACwC,IAApCpB,EAAGvE,cAAchyB,KAAM,SACzB,MAAMyyB,CAEV,CAMA,SAASkF,IACPV,EAAO3F,eAAe,OAAQ4F,GAC9BF,EAAK1F,eAAe,QAAS8F,GAE7BH,EAAO3F,eAAe,MAAOkG,GAC7BP,EAAO3F,eAAe,QAASzQ,GAE/BoW,EAAO3F,eAAe,QAAS3R,GAC/BqX,EAAK1F,eAAe,QAAS3R,GAE7BsX,EAAO3F,eAAe,MAAOqG,GAC7BV,EAAO3F,eAAe,QAASqG,GAE/BX,EAAK1F,eAAe,QAASqG,EAC/B,CAUA,OA5BAV,EAAOpE,GAAG,QAASlT,GACnBqX,EAAKnE,GAAG,QAASlT,GAmBjBsX,EAAOpE,GAAG,MAAO8E,GACjBV,EAAOpE,GAAG,QAAS8E,GAEnBX,EAAKnE,GAAG,QAAS8E,GAEjBX,EAAKjG,KAAK,OAAQkG,GAGXD,CACT,CAEA,EAAE,CAAC,OAAS,GAAG,SAAW,GAAG,wCAAwC,GAAG,6CAA6C,GAAG,0CAA0C,GAAG,2CAA2C,GAAG,0CAA0C,GAAG,wDAAwD,GAAG,mDAAmD,KAAK,GAAG,CAAC,SAASnnB,EAAQT,EAAOjS,GAC/Y,aAEA,SAASy6B,EAAeC,EAAUC,GAAcD,EAAS/4B,UAAY7B,OAAOgF,OAAO61B,EAAWh5B,WAAY+4B,EAAS/4B,UAAU4P,YAAcmpB,EAAUA,EAASliB,UAAYmiB,CAAY,CAEtL,IAAIC,EAAQ,CAAC,EAEb,SAASC,EAAgBroB,EAAMtH,EAAS4vB,GAKtC,SAASC,EAAWC,EAAMC,EAAMC,GAC9B,MAAuB,iBAAZhwB,EACFA,EAEAA,EAAQ8vB,EAAMC,EAAMC,EAE/B,CAVKJ,IACHA,EAAOn2B,OAWT,IAAIw2B,EAEJ,SAAUC,GAGR,SAASD,EAAUH,EAAMC,EAAMC,GAC7B,OAAOE,EAAMv5B,KAAKgB,KAAMk4B,EAAWC,EAAMC,EAAMC,KAAUr4B,IAC3D,CAEA,OANA43B,EAAeU,EAAWC,GAMnBD,CACT,CARA,CAQEL,GAEFK,EAAUx5B,UAAUqwB,KAAO8I,EAAK9I,KAChCmJ,EAAUx5B,UAAU6Q,KAAOA,EAC3BooB,EAAMpoB,GAAQ2oB,CAChB,CAGA,SAASE,EAAMC,EAAUC,GACvB,GAAI9iB,MAAMsQ,QAAQuS,GAAW,CAC3B,IAAI1V,EAAM0V,EAAS72B,OAKnB,OAJA62B,EAAWA,EAAS1vB,KAAI,SAAUyG,GAChC,OAAOqG,OAAOrG,EAChB,IAEIuT,EAAM,EACD,UAAUnd,OAAO8yB,EAAO,KAAK9yB,OAAO6yB,EAASzlB,MAAM,EAAG+P,EAAM,GAAGrO,KAAK,MAAO,SAAW+jB,EAAS1V,EAAM,GAC3F,IAARA,EACF,UAAUnd,OAAO8yB,EAAO,KAAK9yB,OAAO6yB,EAAS,GAAI,QAAQ7yB,OAAO6yB,EAAS,IAEzE,MAAM7yB,OAAO8yB,EAAO,KAAK9yB,OAAO6yB,EAAS,GAEpD,CACE,MAAO,MAAM7yB,OAAO8yB,EAAO,KAAK9yB,OAAOiQ,OAAO4iB,GAElD,CAGA,SAASE,EAAWxO,EAAKyO,EAAQhP,GAC/B,OAAOO,EAAIjC,QAAQ0B,GAAOA,EAAM,EAAI,GAAKA,EAAKgP,EAAOh3B,UAAYg3B,CACnE,CAGA,SAASC,EAAS1O,EAAKyO,EAAQE,GAK7B,YAJiBhzB,IAAbgzB,GAA0BA,EAAW3O,EAAIvoB,UAC3Ck3B,EAAW3O,EAAIvoB,QAGVuoB,EAAI4O,UAAUD,EAAWF,EAAOh3B,OAAQk3B,KAAcF,CAC/D,CAGA,SAASlO,EAASP,EAAKyO,EAAQlsB,GAK7B,MAJqB,iBAAVA,IACTA,EAAQ,KAGNA,EAAQksB,EAAOh3B,OAASuoB,EAAIvoB,UAGS,IAAhCuoB,EAAIpM,QAAQ6a,EAAQlsB,EAE/B,CAEAsrB,EAAgB,yBAAyB,SAAU7I,EAAM/xB,GACvD,MAAO,cAAgBA,EAAQ,4BAA8B+xB,EAAO,GACtE,GAAG7d,WACH0mB,EAAgB,wBAAwB,SAAU7I,EAAMsJ,EAAU5S,GAEhE,IAAImT,EASAC,EAEJ,GATwB,iBAAbR,GAAyBE,EAAWF,EAAU,SACvDO,EAAa,cACbP,EAAWA,EAASntB,QAAQ,QAAS,KAErC0tB,EAAa,UAKXH,EAAS1J,EAAM,aAEjB8J,EAAM,OAAOrzB,OAAOupB,EAAM,KAAKvpB,OAAOozB,EAAY,KAAKpzB,OAAO4yB,EAAMC,EAAU,aACzE,CACL,IAAI/0B,EAAOgnB,EAASyE,EAAM,KAAO,WAAa,WAC9C8J,EAAM,QAASrzB,OAAOupB,EAAM,MAAOvpB,OAAOlC,EAAM,KAAKkC,OAAOozB,EAAY,KAAKpzB,OAAO4yB,EAAMC,EAAU,QACtG,CAGA,OADAQ,GAAO,mBAAmBrzB,cAAcigB,EAE1C,GAAGvU,WACH0mB,EAAgB,4BAA6B,2BAC7CA,EAAgB,8BAA8B,SAAU7I,GACtD,MAAO,OAASA,EAAO,4BACzB,IACA6I,EAAgB,6BAA8B,mBAC9CA,EAAgB,wBAAwB,SAAU7I,GAChD,MAAO,eAAiBA,EAAO,+BACjC,IACA6I,EAAgB,wBAAyB,kCACzCA,EAAgB,yBAA0B,6BAC1CA,EAAgB,6BAA8B,mBAC9CA,EAAgB,yBAA0B,sCAAuC1mB,WACjF0mB,EAAgB,wBAAwB,SAAUpT,GAChD,MAAO,qBAAuBA,CAChC,GAAGtT,WACH0mB,EAAgB,qCAAsC,oCACtD5oB,EAAOjS,QAAQ46B,MAAQA,CAEvB,EAAE,CAAC,GAAG,GAAG,CAAC,SAASloB,EAAQT,EAAOjS,IAClC,SAAWuV,IAAS,WAyBpB,aAGA,IAAIwmB,EAAaj8B,OAAO0f,MAAQ,SAAUxe,GACxC,IAAIwe,EAAO,GAEX,IAAK,IAAI9d,KAAOV,EACdwe,EAAKza,KAAKrD,GAGZ,OAAO8d,CACT,EAIAvN,EAAOjS,QAAU+hB,EAEjB,IAAIuX,EAAW5mB,EAAQ,sBAEnB6mB,EAAW7mB,EAAQ,sBAEvBA,EAAQ,WAARA,CAAoBqP,EAAQuX,GAM1B,IAFA,IAAI9Z,EAAOuc,EAAWxC,EAAS53B,WAEtBsS,EAAI,EAAGA,EAAIuL,EAAK/a,OAAQwP,IAAK,CACpC,IAAI1K,EAASiW,EAAKvL,GACb8N,EAAOpgB,UAAU4H,KAASwY,EAAOpgB,UAAU4H,GAAUgwB,EAAS53B,UAAU4H,GAC/E,CAGF,SAASwY,EAAOjc,GACd,KAAMjD,gBAAgBkf,GAAS,OAAO,IAAIA,EAAOjc,GACjDwzB,EAASz3B,KAAKgB,KAAMiD,GACpByzB,EAAS13B,KAAKgB,KAAMiD,GACpBjD,KAAKm5B,eAAgB,EAEjBl2B,KACuB,IAArBA,EAAQo0B,WAAoBr3B,KAAKq3B,UAAW,IACvB,IAArBp0B,EAAQK,WAAoBtD,KAAKsD,UAAW,IAElB,IAA1BL,EAAQk2B,gBACVn5B,KAAKm5B,eAAgB,EACrBn5B,KAAKiwB,KAAK,MAAOuH,IAGvB,CA8BA,SAASA,IAEHx3B,KAAKo5B,eAAeC,OAGxB3mB,EAAQ+iB,SAAS6D,EAASt5B,KAC5B,CAEA,SAASs5B,EAAQC,GACfA,EAAKrnB,KACP,CAtCAjV,OAAOC,eAAegiB,EAAOpgB,UAAW,wBAAyB,CAI/DsV,YAAY,EACZ3V,IAAK,WACH,OAAOuB,KAAKo5B,eAAeI,aAC7B,IAEFv8B,OAAOC,eAAegiB,EAAOpgB,UAAW,iBAAkB,CAIxDsV,YAAY,EACZ3V,IAAK,WACH,OAAOuB,KAAKo5B,gBAAkBp5B,KAAKo5B,eAAeK,WACpD,IAEFx8B,OAAOC,eAAegiB,EAAOpgB,UAAW,iBAAkB,CAIxDsV,YAAY,EACZ3V,IAAK,WACH,OAAOuB,KAAKo5B,eAAex3B,MAC7B,IAeF3E,OAAOC,eAAegiB,EAAOpgB,UAAW,YAAa,CAInDsV,YAAY,EACZ3V,IAAK,WACH,YAA4BqH,IAAxB9F,KAAK05B,qBAAwD5zB,IAAxB9F,KAAKo5B,gBAIvCp5B,KAAK05B,eAAeC,WAAa35B,KAAKo5B,eAAeO,SAC9D,EACAz6B,IAAK,SAAa9B,QAGY0I,IAAxB9F,KAAK05B,qBAAwD5zB,IAAxB9F,KAAKo5B,iBAM9Cp5B,KAAK05B,eAAeC,UAAYv8B,EAChC4C,KAAKo5B,eAAeO,UAAYv8B,EAClC,GAED,GAAE4B,KAAKgB,KAAM,GAAEhB,KAAKgB,KAAK6P,EAAQ,YAElC,EAAE,CAAC,qBAAqB,GAAG,qBAAqB,GAAG,SAAW,GAAG,SAAW,KAAK,GAAG,CAAC,SAASA,EAAQT,EAAOjS,GAwB7G,aAEAiS,EAAOjS,QAAUy5B,EAEjB,IAAID,EAAY9mB,EAAQ,uBAIxB,SAAS+mB,EAAY3zB,GACnB,KAAMjD,gBAAgB42B,GAAc,OAAO,IAAIA,EAAY3zB,GAC3D0zB,EAAU33B,KAAKgB,KAAMiD,EACvB,CALA4M,EAAQ,WAARA,CAAoB+mB,EAAaD,GAOjCC,EAAY93B,UAAU86B,WAAa,SAAU9kB,EAAO2Q,EAAUoU,GAC5DA,EAAG,KAAM/kB,EACX,CACA,EAAE,CAAC,sBAAsB,GAAG,SAAW,KAAK,GAAG,CAAC,SAASjF,EAAQT,EAAOjS,IACxE,SAAWuV,EAAQonB,IAAQ,WAqB3B,aAKA,IAAI5a,EAHJ9P,EAAOjS,QAAUs5B,EAMjBA,EAASsD,cAAgBA,EAGhBlqB,EAAQ,UAAUkgB,aAA3B,IAEIiK,EAAkB,SAAyB7I,EAASztB,GACtD,OAAOytB,EAAQwB,UAAUjvB,GAAM9B,MACjC,EAMI00B,EAASzmB,EAAQ,6BAIjBpG,EAASoG,EAAQ,UAAUpG,OAE3BwwB,EAAgBH,EAAOhX,YAAc,WAAa,EAEtD,SAASoX,EAAoBplB,GAC3B,OAAOrL,EAAOC,KAAKoL,EACrB,CAEA,SAASqlB,EAAch8B,GACrB,OAAOsL,EAAOuc,SAAS7nB,IAAQA,aAAe87B,CAChD,CAIA,IAEIG,EAFAC,EAAYxqB,EAAQ,QAKtBuqB,EADEC,GAAaA,EAAUC,SACjBD,EAAUC,SAAS,UAEnB,WAAkB,EAK5B,IAcIC,EACAC,EACA9wB,EAhBA+wB,EAAa5qB,EAAQ,kCAErB6qB,EAAc7qB,EAAQ,8BAGtB8qB,EADW9qB,EAAQ,4BACS8qB,iBAE5BC,EAAiB/qB,EAAQ,aAAakoB,MACtC8C,EAAuBD,EAAeC,qBACtCC,EAA4BF,EAAeE,0BAC3CC,EAA6BH,EAAeG,2BAC5CC,EAAqCJ,EAAeI,mCAOxDnrB,EAAQ,WAARA,CAAoB4mB,EAAUH,GAE9B,IAAI2E,EAAiBP,EAAYO,eAC7BC,EAAe,CAAC,QAAS,QAAS,UAAW,QAAS,UAE1D,SAASpI,EAAgB3B,EAAS1Y,EAAO0iB,GAGvC,GAAuC,mBAA5BhK,EAAQ2B,gBAAgC,OAAO3B,EAAQ2B,gBAAgBra,EAAO0iB,GAKpFhK,EAAQjB,SAAYiB,EAAQjB,QAAQzX,GAAuC7C,MAAMsQ,QAAQiL,EAAQjB,QAAQzX,IAAS0Y,EAAQjB,QAAQzX,GAAOuY,QAAQmK,GAAShK,EAAQjB,QAAQzX,GAAS,CAAC0iB,EAAIhK,EAAQjB,QAAQzX,IAA5J0Y,EAAQ0B,GAAGpa,EAAO0iB,EACrE,CAEA,SAASpB,EAAc92B,EAASlC,EAAQq6B,GACtClc,EAASA,GAAUrP,EAAQ,oBAC3B5M,EAAUA,GAAW,CAAC,EAME,kBAAbm4B,IAAwBA,EAAWr6B,aAAkBme,GAGhElf,KAAKq7B,aAAep4B,EAAQo4B,WACxBD,IAAUp7B,KAAKq7B,WAAar7B,KAAKq7B,cAAgBp4B,EAAQq4B,oBAG7Dt7B,KAAKw5B,cAAgBmB,EAAiB36B,KAAMiD,EAAS,wBAAyBm4B,GAI9Ep7B,KAAKwJ,OAAS,IAAIixB,EAClBz6B,KAAK4B,OAAS,EACd5B,KAAKu7B,MAAQ,KACbv7B,KAAKw7B,WAAa,EAClBx7B,KAAKy7B,QAAU,KACfz7B,KAAKq5B,OAAQ,EACbr5B,KAAK07B,YAAa,EAClB17B,KAAK27B,SAAU,EAKf37B,KAAK47B,MAAO,EAGZ57B,KAAK67B,cAAe,EACpB77B,KAAK87B,iBAAkB,EACvB97B,KAAK+7B,mBAAoB,EACzB/7B,KAAKg8B,iBAAkB,EACvBh8B,KAAKi8B,QAAS,EAEdj8B,KAAKk8B,WAAkC,IAAtBj5B,EAAQi5B,UAEzBl8B,KAAKm8B,cAAgBl5B,EAAQk5B,YAE7Bn8B,KAAK25B,WAAY,EAIjB35B,KAAKo8B,gBAAkBn5B,EAAQm5B,iBAAmB,OAElDp8B,KAAKq8B,WAAa,EAElBr8B,KAAKs8B,aAAc,EACnBt8B,KAAKu8B,QAAU,KACfv8B,KAAKylB,SAAW,KAEZxiB,EAAQwiB,WACL8U,IAAeA,EAAgB1qB,EAAQ,mBAAmB0qB,eAC/Dv6B,KAAKu8B,QAAU,IAAIhC,EAAct3B,EAAQwiB,UACzCzlB,KAAKylB,SAAWxiB,EAAQwiB,SAE5B,CAEA,SAASgR,EAASxzB,GAEhB,GADAic,EAASA,GAAUrP,EAAQ,sBACrB7P,gBAAgBy2B,GAAW,OAAO,IAAIA,EAASxzB,GAGrD,IAAIm4B,EAAWp7B,gBAAgBkf,EAC/Blf,KAAK05B,eAAiB,IAAIK,EAAc92B,EAASjD,KAAMo7B,GAEvDp7B,KAAKq3B,UAAW,EAEZp0B,IAC0B,mBAAjBA,EAAQqQ,OAAqBtT,KAAK+e,MAAQ9b,EAAQqQ,MAC9B,mBAApBrQ,EAAQy0B,UAAwB13B,KAAKw8B,SAAWv5B,EAAQy0B,UAGrEpB,EAAOt3B,KAAKgB,KACd,CAgEA,SAASy8B,EAAiB17B,EAAQ+T,EAAO2Q,EAAUiX,EAAYC,GAC7DvC,EAAM,mBAAoBtlB,GAC1B,IAMM2d,EANFhB,EAAQ1wB,EAAO24B,eAEnB,GAAc,OAAV5kB,EACF2c,EAAMkK,SAAU,EAChBiB,EAAW77B,EAAQ0wB,QAKnB,GAFKkL,IAAgBlK,EAAKoK,EAAapL,EAAO3c,IAE1C2d,EACFwI,EAAel6B,EAAQ0xB,QAClB,GAAIhB,EAAM4J,YAAcvmB,GAASA,EAAMlT,OAAS,EAKrD,GAJqB,iBAAVkT,GAAuB2c,EAAM4J,YAAcp+B,OAAOo1B,eAAevd,KAAWrL,EAAO3K,YAC5FgW,EAAQolB,EAAoBplB,IAG1B4nB,EACEjL,EAAMiK,WAAYT,EAAel6B,EAAQ,IAAIi6B,GAA2C8B,EAAS/7B,EAAQ0wB,EAAO3c,GAAO,QACtH,GAAI2c,EAAM4H,MACf4B,EAAel6B,EAAQ,IAAI+5B,OACtB,IAAIrJ,EAAMkI,UACf,OAAO,EAEPlI,EAAMkK,SAAU,EAEZlK,EAAM8K,UAAY9W,GACpB3Q,EAAQ2c,EAAM8K,QAAQ3yB,MAAMkL,GACxB2c,EAAM4J,YAA+B,IAAjBvmB,EAAMlT,OAAck7B,EAAS/7B,EAAQ0wB,EAAO3c,GAAO,GAAYioB,EAAch8B,EAAQ0wB,IAE7GqL,EAAS/7B,EAAQ0wB,EAAO3c,GAAO,EAEnC,MACU4nB,IACVjL,EAAMkK,SAAU,EAChBoB,EAAch8B,EAAQ0wB,IAO1B,OAAQA,EAAM4H,QAAU5H,EAAM7vB,OAAS6vB,EAAM+H,eAAkC,IAAjB/H,EAAM7vB,OACtE,CAEA,SAASk7B,EAAS/7B,EAAQ0wB,EAAO3c,EAAO4nB,GAClCjL,EAAMgK,SAA4B,IAAjBhK,EAAM7vB,SAAiB6vB,EAAMmK,MAChDnK,EAAM4K,WAAa,EACnBt7B,EAAOgwB,KAAK,OAAQjc,KAGpB2c,EAAM7vB,QAAU6vB,EAAM4J,WAAa,EAAIvmB,EAAMlT,OACzC86B,EAAYjL,EAAMjoB,OAAOwnB,QAAQlc,GAAY2c,EAAMjoB,OAAOtH,KAAK4S,GAC/D2c,EAAMoK,cAAcmB,EAAaj8B,IAGvCg8B,EAAch8B,EAAQ0wB,EACxB,CAEA,SAASoL,EAAapL,EAAO3c,GAC3B,IAAI2d,EAMJ,OAJK0H,EAAcrlB,IAA2B,iBAAVA,QAAgChP,IAAVgP,GAAwB2c,EAAM4J,aACtF5I,EAAK,IAAIoI,EAAqB,QAAS,CAAC,SAAU,SAAU,cAAe/lB,IAGtE2d,CACT,CAlIAx1B,OAAOC,eAAeu5B,EAAS33B,UAAW,YAAa,CAIrDsV,YAAY,EACZ3V,IAAK,WACH,YAA4BqH,IAAxB9F,KAAK05B,gBAIF15B,KAAK05B,eAAeC,SAC7B,EACAz6B,IAAK,SAAa9B,GAGX4C,KAAK05B,iBAMV15B,KAAK05B,eAAeC,UAAYv8B,EAClC,IAEFq5B,EAAS33B,UAAU44B,QAAUgD,EAAYhD,QACzCjB,EAAS33B,UAAUm+B,WAAavC,EAAYwC,UAE5CzG,EAAS33B,UAAU09B,SAAW,SAAU1jB,EAAK+gB,GAC3CA,EAAG/gB,EACL,EAMA2d,EAAS33B,UAAUoD,KAAO,SAAU4S,EAAO2Q,GACzC,IACIkX,EADAlL,EAAQzxB,KAAK05B,eAkBjB,OAfKjI,EAAM4J,WAYTsB,GAAiB,EAXI,iBAAV7nB,KACT2Q,EAAWA,GAAYgM,EAAM2K,mBAEZ3K,EAAMhM,WACrB3Q,EAAQrL,EAAOC,KAAKoL,EAAO2Q,GAC3BA,EAAW,IAGbkX,GAAiB,GAMdF,EAAiBz8B,KAAM8U,EAAO2Q,GAAU,EAAOkX,EACxD,EAGAlG,EAAS33B,UAAUkyB,QAAU,SAAUlc,GACrC,OAAO2nB,EAAiBz8B,KAAM8U,EAAO,MAAM,GAAM,EACnD,EAwEA2hB,EAAS33B,UAAUq+B,SAAW,WAC5B,OAAuC,IAAhCn9B,KAAK05B,eAAe+B,OAC7B,EAGAhF,EAAS33B,UAAUs+B,YAAc,SAAUC,GACpC9C,IAAeA,EAAgB1qB,EAAQ,mBAAmB0qB,eAC/D,IAAIgC,EAAU,IAAIhC,EAAc8C,GAChCr9B,KAAK05B,eAAe6C,QAAUA,EAE9Bv8B,KAAK05B,eAAejU,SAAWzlB,KAAK05B,eAAe6C,QAAQ9W,SAK3D,IAHA,IAAI7V,EAAI5P,KAAK05B,eAAelwB,OAAO8zB,KAC/BpnB,EAAU,GAED,OAANtG,GACLsG,GAAWqmB,EAAQ3yB,MAAMgG,EAAE8Q,MAC3B9Q,EAAIA,EAAEvO,KAOR,OAJArB,KAAK05B,eAAelwB,OAAO+zB,QAEX,KAAZrnB,GAAgBlW,KAAK05B,eAAelwB,OAAOtH,KAAKgU,GACpDlW,KAAK05B,eAAe93B,OAASsU,EAAQtU,OAC9B5B,IACT,EAGA,IAAIw9B,EAAU,WAEd,SAASC,EAAwBpuB,GAgB/B,OAfIA,GAAKmuB,EAEPnuB,EAAImuB,GAIJnuB,IACAA,GAAKA,IAAM,EACXA,GAAKA,IAAM,EACXA,GAAKA,IAAM,EACXA,GAAKA,IAAM,EACXA,GAAKA,IAAM,GACXA,KAGKA,CACT,CAIA,SAASquB,EAAcruB,EAAGoiB,GACxB,OAAIpiB,GAAK,GAAsB,IAAjBoiB,EAAM7vB,QAAgB6vB,EAAM4H,MAAc,EACpD5H,EAAM4J,WAAmB,EAEzBhsB,GAAMA,EAEJoiB,EAAMgK,SAAWhK,EAAM7vB,OAAe6vB,EAAMjoB,OAAO8zB,KAAK5c,KAAK9e,OAAmB6vB,EAAM7vB,QAIxFyN,EAAIoiB,EAAM+H,gBAAe/H,EAAM+H,cAAgBiE,EAAwBpuB,IACvEA,GAAKoiB,EAAM7vB,OAAeyN,EAEzBoiB,EAAM4H,MAKJ5H,EAAM7vB,QAJX6vB,EAAMoK,cAAe,EACd,GAIX,CAkGA,SAASe,EAAW77B,EAAQ0wB,GAE1B,GADA2I,EAAM,eACF3I,EAAM4H,MAAV,CAEA,GAAI5H,EAAM8K,QAAS,CACjB,IAAIznB,EAAQ2c,EAAM8K,QAAQrqB,MAEtB4C,GAASA,EAAMlT,SACjB6vB,EAAMjoB,OAAOtH,KAAK4S,GAClB2c,EAAM7vB,QAAU6vB,EAAM4J,WAAa,EAAIvmB,EAAMlT,OAEjD,CAEA6vB,EAAM4H,OAAQ,EAEV5H,EAAMmK,KAIRoB,EAAaj8B,IAGb0wB,EAAMoK,cAAe,EAEhBpK,EAAMqK,kBACTrK,EAAMqK,iBAAkB,EACxB6B,EAAc58B,IAxBK,CA2BzB,CAKA,SAASi8B,EAAaj8B,GACpB,IAAI0wB,EAAQ1wB,EAAO24B,eACnBU,EAAM,eAAgB3I,EAAMoK,aAAcpK,EAAMqK,iBAChDrK,EAAMoK,cAAe,EAEhBpK,EAAMqK,kBACT1B,EAAM,eAAgB3I,EAAMgK,SAC5BhK,EAAMqK,iBAAkB,EACxBppB,EAAQ+iB,SAASkI,EAAe58B,GAEpC,CAEA,SAAS48B,EAAc58B,GACrB,IAAI0wB,EAAQ1wB,EAAO24B,eACnBU,EAAM,gBAAiB3I,EAAMkI,UAAWlI,EAAM7vB,OAAQ6vB,EAAM4H,OAEvD5H,EAAMkI,YAAclI,EAAM7vB,SAAU6vB,EAAM4H,QAC7Ct4B,EAAOgwB,KAAK,YACZU,EAAMqK,iBAAkB,GAS1BrK,EAAMoK,cAAgBpK,EAAMgK,UAAYhK,EAAM4H,OAAS5H,EAAM7vB,QAAU6vB,EAAM+H,cAC7EoE,EAAK78B,EACP,CAQA,SAASg8B,EAAch8B,EAAQ0wB,GACxBA,EAAM6K,cACT7K,EAAM6K,aAAc,EACpB5pB,EAAQ+iB,SAASoI,EAAgB98B,EAAQ0wB,GAE7C,CAEA,SAASoM,EAAe98B,EAAQ0wB,GAwB9B,MAAQA,EAAMkK,UAAYlK,EAAM4H,QAAU5H,EAAM7vB,OAAS6vB,EAAM+H,eAAiB/H,EAAMgK,SAA4B,IAAjBhK,EAAM7vB,SAAe,CACpH,IAAImhB,EAAM0O,EAAM7vB,OAGhB,GAFAw4B,EAAM,wBACNr5B,EAAOuS,KAAK,GACRyP,IAAQ0O,EAAM7vB,OAChB,KACJ,CAEA6vB,EAAM6K,aAAc,CACtB,CA+IA,SAASwB,EAAY7O,GACnB,OAAO,WACL,IAAIwC,EAAQxC,EAAIyK,eAChBU,EAAM,cAAe3I,EAAM4K,YACvB5K,EAAM4K,YAAY5K,EAAM4K,aAEH,IAArB5K,EAAM4K,YAAoBrC,EAAgB/K,EAAK,UACjDwC,EAAMgK,SAAU,EAChBmC,EAAK3O,GAET,CACF,CAkHA,SAAS8O,EAAwBxE,GAC/B,IAAI9H,EAAQ8H,EAAKG,eACjBjI,EAAMsK,kBAAoBxC,EAAKvH,cAAc,YAAc,EAEvDP,EAAMuK,kBAAoBvK,EAAMwK,OAGlCxK,EAAMgK,SAAU,EACPlC,EAAKvH,cAAc,QAAU,GACtCuH,EAAKjC,QAET,CAEA,SAAS0G,EAAiBzE,GACxBa,EAAM,4BACNb,EAAKjmB,KAAK,EACZ,CAoBA,SAASgkB,EAAOv2B,EAAQ0wB,GACjBA,EAAMuK,kBACTvK,EAAMuK,iBAAkB,EACxBtpB,EAAQ+iB,SAASwI,EAASl9B,EAAQ0wB,GAEtC,CAEA,SAASwM,EAAQl9B,EAAQ0wB,GACvB2I,EAAM,SAAU3I,EAAMkK,SAEjBlK,EAAMkK,SACT56B,EAAOuS,KAAK,GAGdme,EAAMuK,iBAAkB,EACxBj7B,EAAOgwB,KAAK,UACZ6M,EAAK78B,GACD0wB,EAAMgK,UAAYhK,EAAMkK,SAAS56B,EAAOuS,KAAK,EACnD,CAeA,SAASsqB,EAAK78B,GACZ,IAAI0wB,EAAQ1wB,EAAO24B,eAGnB,IAFAU,EAAM,OAAQ3I,EAAMgK,SAEbhK,EAAMgK,SAA6B,OAAlB16B,EAAOuS,SAGjC,CAyHA,SAAS4qB,EAAS7uB,EAAGoiB,GAEnB,OAAqB,IAAjBA,EAAM7vB,OAAqB,MAE3B6vB,EAAM4J,WAAYpQ,EAAMwG,EAAMjoB,OAAOlI,SAAkB+N,GAAKA,GAAKoiB,EAAM7vB,QAEtDqpB,EAAfwG,EAAM8K,QAAe9K,EAAMjoB,OAAOkL,KAAK,IAAqC,IAAxB+c,EAAMjoB,OAAO5H,OAAoB6vB,EAAMjoB,OAAO20B,QAAmB1M,EAAMjoB,OAAO5D,OAAO6rB,EAAM7vB,QACnJ6vB,EAAMjoB,OAAO+zB,SAGbtS,EAAMwG,EAAMjoB,OAAO40B,QAAQ/uB,EAAGoiB,EAAM8K,SAE/BtR,GATP,IAAIA,CAUN,CAEA,SAASoT,EAAYt9B,GACnB,IAAI0wB,EAAQ1wB,EAAO24B,eACnBU,EAAM,cAAe3I,EAAMiK,YAEtBjK,EAAMiK,aACTjK,EAAM4H,OAAQ,EACd3mB,EAAQ+iB,SAAS6I,EAAe7M,EAAO1wB,GAE3C,CAEA,SAASu9B,EAAc7M,EAAO1wB,GAG5B,GAFAq5B,EAAM,gBAAiB3I,EAAMiK,WAAYjK,EAAM7vB,SAE1C6vB,EAAMiK,YAA+B,IAAjBjK,EAAM7vB,SAC7B6vB,EAAMiK,YAAa,EACnB36B,EAAOs2B,UAAW,EAClBt2B,EAAOgwB,KAAK,OAERU,EAAM0K,aAAa,CAGrB,IAAIoC,EAASx9B,EAAOq4B,iBAEfmF,GAAUA,EAAOpC,aAAeoC,EAAO1H,WAC1C91B,EAAO22B,SAEX,CAEJ,CAYA,SAAS3Z,EAAQygB,EAAI9U,GACnB,IAAK,IAAIla,EAAI,EAAGivB,EAAID,EAAG58B,OAAQ4N,EAAIivB,EAAGjvB,IACpC,GAAIgvB,EAAGhvB,KAAOka,EAAG,OAAOla,EAG1B,OAAQ,CACV,CA5tBAinB,EAAS33B,UAAUwU,KAAO,SAAUjE,GAClC+qB,EAAM,OAAQ/qB,GACdA,EAAI4Y,SAAS5Y,EAAG,IAChB,IAAIoiB,EAAQzxB,KAAK05B,eACbgF,EAAQrvB,EAKZ,GAJU,IAANA,IAASoiB,EAAMqK,iBAAkB,GAI3B,IAANzsB,GAAWoiB,EAAMoK,gBAA0C,IAAxBpK,EAAM+H,cAAsB/H,EAAM7vB,QAAU6vB,EAAM+H,cAAgB/H,EAAM7vB,OAAS,IAAM6vB,EAAM4H,OAGlI,OAFAe,EAAM,qBAAsB3I,EAAM7vB,OAAQ6vB,EAAM4H,OAC3B,IAAjB5H,EAAM7vB,QAAgB6vB,EAAM4H,MAAOgF,EAAYr+B,MAAWg9B,EAAah9B,MACpE,KAKT,GAAU,KAFVqP,EAAIquB,EAAcruB,EAAGoiB,KAENA,EAAM4H,MAEnB,OADqB,IAAjB5H,EAAM7vB,QAAcy8B,EAAYr+B,MAC7B,KAyBT,IA4BIirB,EA5BA0T,EAASlN,EAAMoK,aAgDnB,OA/CAzB,EAAM,gBAAiBuE,IAEF,IAAjBlN,EAAM7vB,QAAgB6vB,EAAM7vB,OAASyN,EAAIoiB,EAAM+H,gBAEjDY,EAAM,6BADNuE,GAAS,GAMPlN,EAAM4H,OAAS5H,EAAMkK,QAEvBvB,EAAM,mBADNuE,GAAS,GAEAA,IACTvE,EAAM,WACN3I,EAAMkK,SAAU,EAChBlK,EAAMmK,MAAO,EAEQ,IAAjBnK,EAAM7vB,SAAc6vB,EAAMoK,cAAe,GAE7C77B,KAAK+e,MAAM0S,EAAM+H,eAEjB/H,EAAMmK,MAAO,EAGRnK,EAAMkK,UAAStsB,EAAIquB,EAAcgB,EAAOjN,KAMnC,QAFDxG,EAAP5b,EAAI,EAAS6uB,EAAS7uB,EAAGoiB,GAAkB,OAG7CA,EAAMoK,aAAepK,EAAM7vB,QAAU6vB,EAAM+H,cAC3CnqB,EAAI,IAEJoiB,EAAM7vB,QAAUyN,EAChBoiB,EAAM4K,WAAa,GAGA,IAAjB5K,EAAM7vB,SAGH6vB,EAAM4H,QAAO5H,EAAMoK,cAAe,GAEnC6C,IAAUrvB,GAAKoiB,EAAM4H,OAAOgF,EAAYr+B,OAGlC,OAARirB,GAAcjrB,KAAK+wB,KAAK,OAAQ9F,GAC7BA,CACT,EAuHAwL,EAAS33B,UAAUigB,MAAQ,SAAU1P,GACnC4rB,EAAej7B,KAAM,IAAI+6B,EAA2B,WACtD,EAEAtE,EAAS33B,UAAUi4B,KAAO,SAAUC,EAAM4H,GACxC,IAAI3P,EAAMjvB,KACNyxB,EAAQzxB,KAAK05B,eAEjB,OAAQjI,EAAM+J,YACZ,KAAK,EACH/J,EAAM8J,MAAQvE,EACd,MAEF,KAAK,EACHvF,EAAM8J,MAAQ,CAAC9J,EAAM8J,MAAOvE,GAC5B,MAEF,QACEvF,EAAM8J,MAAMr5B,KAAK80B,GAIrBvF,EAAM+J,YAAc,EACpBpB,EAAM,wBAAyB3I,EAAM+J,WAAYoD,GACjD,IACIC,EADUD,IAA6B,IAAjBA,EAAS1sB,KAAkB8kB,IAAStkB,EAAQosB,QAAU9H,IAAStkB,EAAQqsB,OACrEC,EAARxH,EAIpB,SAASyH,EAAS5H,EAAU6H,GAC1B9E,EAAM,YAEF/C,IAAapI,GACXiQ,IAAwC,IAA1BA,EAAWC,aAC3BD,EAAWC,YAAa,EACxBxH,IAGN,CAEA,SAASH,IACP4C,EAAM,SACNpD,EAAK9kB,KACP,CAjBIuf,EAAMiK,WAAYhpB,EAAQ+iB,SAASoJ,GAAY5P,EAAIgB,KAAK,MAAO4O,GACnE7H,EAAKnE,GAAG,SAAUoM,GAsBlB,IAAI7H,EAAU0G,EAAY7O,GAC1B+H,EAAKnE,GAAG,QAASuE,GACjB,IAAIgI,GAAY,EAEhB,SAASzH,IACPyC,EAAM,WAENpD,EAAK1F,eAAe,QAASzQ,GAC7BmW,EAAK1F,eAAe,SAAU+N,GAC9BrI,EAAK1F,eAAe,QAAS8F,GAC7BJ,EAAK1F,eAAe,QAAS3R,GAC7BqX,EAAK1F,eAAe,SAAU2N,GAC9BhQ,EAAIqC,eAAe,MAAOkG,GAC1BvI,EAAIqC,eAAe,MAAO0N,GAC1B/P,EAAIqC,eAAe,OAAQ4F,GAC3BkI,GAAY,GAMR3N,EAAM4K,YAAgBrF,EAAKoC,iBAAkBpC,EAAKoC,eAAekG,WAAYlI,GACnF,CAIA,SAASF,EAAOpiB,GACdslB,EAAM,UACN,IAAInP,EAAM+L,EAAKptB,MAAMkL,GACrBslB,EAAM,aAAcnP,IAER,IAARA,KAKwB,IAArBwG,EAAM+J,YAAoB/J,EAAM8J,QAAUvE,GAAQvF,EAAM+J,WAAa,IAAqC,IAAhCzd,EAAQ0T,EAAM8J,MAAOvE,MAAkBoI,IACpHhF,EAAM,8BAA+B3I,EAAM4K,YAC3C5K,EAAM4K,cAGRpN,EAAIkI,QAER,CAIA,SAASxX,EAAQ8S,GACf2H,EAAM,UAAW3H,GACjBuM,IACAhI,EAAK1F,eAAe,QAAS3R,GACU,IAAnCqa,EAAgBhD,EAAM,UAAgBiE,EAAejE,EAAMvE,EACjE,CAKA,SAAS5R,IACPmW,EAAK1F,eAAe,SAAU+N,GAC9BL,GACF,CAIA,SAASK,IACPjF,EAAM,YACNpD,EAAK1F,eAAe,QAASzQ,GAC7Bme,GACF,CAIA,SAASA,IACP5E,EAAM,UACNnL,EAAI+P,OAAOhI,EACb,CAUA,OA7DA/H,EAAI4D,GAAG,OAAQqE,GA+BfpE,EAAgBkE,EAAM,QAASrX,GAO/BqX,EAAK/G,KAAK,QAASpP,GAQnBmW,EAAK/G,KAAK,SAAUoP,GAQpBrI,EAAKjG,KAAK,OAAQ9B,GAEbwC,EAAMgK,UACTrB,EAAM,eACNnL,EAAIqI,UAGCN,CACT,EAeAP,EAAS33B,UAAUkgC,OAAS,SAAUhI,GACpC,IAAIvF,EAAQzxB,KAAK05B,eACbwF,EAAa,CACfC,YAAY,GAGd,GAAyB,IAArB1N,EAAM+J,WAAkB,OAAOx7B,KAEnC,GAAyB,IAArByxB,EAAM+J,WAER,OAAIxE,GAAQA,IAASvF,EAAM8J,QACtBvE,IAAMA,EAAOvF,EAAM8J,OAExB9J,EAAM8J,MAAQ,KACd9J,EAAM+J,WAAa,EACnB/J,EAAMgK,SAAU,EACZzE,GAAMA,EAAKjG,KAAK,SAAU/wB,KAAMk/B,IANKl/B,KAW3C,IAAKg3B,EAAM,CAET,IAAIuI,EAAQ9N,EAAM8J,MACdxY,EAAM0O,EAAM+J,WAChB/J,EAAM8J,MAAQ,KACd9J,EAAM+J,WAAa,EACnB/J,EAAMgK,SAAU,EAEhB,IAAK,IAAIjsB,EAAI,EAAGA,EAAIuT,EAAKvT,IACvB+vB,EAAM/vB,GAAGuhB,KAAK,SAAU/wB,KAAM,CAC5Bm/B,YAAY,IAIhB,OAAOn/B,IACT,CAGA,IAAIkyB,EAAQnU,EAAQ0T,EAAM8J,MAAOvE,GACjC,OAAe,IAAX9E,IACJT,EAAM8J,MAAMzd,OAAOoU,EAAO,GAC1BT,EAAM+J,YAAc,EACK,IAArB/J,EAAM+J,aAAkB/J,EAAM8J,MAAQ9J,EAAM8J,MAAM,IACtDvE,EAAKjG,KAAK,SAAU/wB,KAAMk/B,IAJDl/B,IAM3B,EAIAy2B,EAAS33B,UAAU+zB,GAAK,SAAU2M,EAAIrE,GACpC,IAAIj1B,EAAMowB,EAAOx3B,UAAU+zB,GAAG7zB,KAAKgB,KAAMw/B,EAAIrE,GACzC1J,EAAQzxB,KAAK05B,eAuBjB,MArBW,SAAP8F,GAGF/N,EAAMsK,kBAAoB/7B,KAAKgyB,cAAc,YAAc,GAErC,IAAlBP,EAAMgK,SAAmBz7B,KAAKs3B,UAClB,aAAPkI,IACJ/N,EAAMiK,YAAejK,EAAMsK,oBAC9BtK,EAAMsK,kBAAoBtK,EAAMoK,cAAe,EAC/CpK,EAAMgK,SAAU,EAChBhK,EAAMqK,iBAAkB,EACxB1B,EAAM,cAAe3I,EAAM7vB,OAAQ6vB,EAAMkK,SAErClK,EAAM7vB,OACRo7B,EAAah9B,MACHyxB,EAAMkK,SAChBjpB,EAAQ+iB,SAASuI,EAAkBh+B,QAKlCkG,CACT,EAEAuwB,EAAS33B,UAAU8zB,YAAc6D,EAAS33B,UAAU+zB,GAEpD4D,EAAS33B,UAAUwyB,eAAiB,SAAUkO,EAAIrE,GAChD,IAAIj1B,EAAMowB,EAAOx3B,UAAUwyB,eAAetyB,KAAKgB,KAAMw/B,EAAIrE,GAYzD,MAVW,aAAPqE,GAOF9sB,EAAQ+iB,SAASsI,EAAyB/9B,MAGrCkG,CACT,EAEAuwB,EAAS33B,UAAUq0B,mBAAqB,SAAUqM,GAChD,IAAIt5B,EAAMowB,EAAOx3B,UAAUq0B,mBAAmB1wB,MAAMzC,KAAM0C,WAY1D,MAVW,aAAP88B,QAA4B15B,IAAP05B,GAOvB9sB,EAAQ+iB,SAASsI,EAAyB/9B,MAGrCkG,CACT,EAsBAuwB,EAAS33B,UAAUw4B,OAAS,WAC1B,IAAI7F,EAAQzxB,KAAK05B,eAYjB,OAVKjI,EAAMgK,UACTrB,EAAM,UAIN3I,EAAMgK,SAAWhK,EAAMsK,kBACvBzE,EAAOt3B,KAAMyxB,IAGfA,EAAMwK,QAAS,EACRj8B,IACT,EAsBAy2B,EAAS33B,UAAUq4B,MAAQ,WAUzB,OATAiD,EAAM,wBAAyBp6B,KAAK05B,eAAe+B,UAEf,IAAhCz7B,KAAK05B,eAAe+B,UACtBrB,EAAM,SACNp6B,KAAK05B,eAAe+B,SAAU,EAC9Bz7B,KAAK+wB,KAAK,UAGZ/wB,KAAK05B,eAAeuC,QAAS,EACtBj8B,IACT,EAcAy2B,EAAS33B,UAAUoC,KAAO,SAAUH,GAClC,IAAI4B,EAAQ3C,KAERyxB,EAAQzxB,KAAK05B,eACbuC,GAAS,EA0Bb,IAAK,IAAIzsB,KAzBTzO,EAAO8xB,GAAG,OAAO,WAGf,GAFAuH,EAAM,eAEF3I,EAAM8K,UAAY9K,EAAM4H,MAAO,CACjC,IAAIvkB,EAAQ2c,EAAM8K,QAAQrqB,MACtB4C,GAASA,EAAMlT,QAAQe,EAAMT,KAAK4S,EACxC,CAEAnS,EAAMT,KAAK,KACb,IACAnB,EAAO8xB,GAAG,QAAQ,SAAU/d,GAC1BslB,EAAM,gBACF3I,EAAM8K,UAASznB,EAAQ2c,EAAM8K,QAAQ3yB,MAAMkL,IAE3C2c,EAAM4J,YAAc,MAACvmB,IAAyD2c,EAAM4J,YAAgBvmB,GAAUA,EAAMlT,UAE9Ge,EAAMT,KAAK4S,KAGnBmnB,GAAS,EACTl7B,EAAOo2B,SAEX,IAGcp2B,OACI+E,IAAZ9F,KAAKwP,IAAyC,mBAAdzO,EAAOyO,KACzCxP,KAAKwP,GAAK,SAAoB9I,GAC5B,OAAO,WACL,OAAO3F,EAAO2F,GAAQjE,MAAM1B,EAAQ2B,UACtC,CACF,CAJU,CAIR8M,IAKN,IAAK,IAAIH,EAAI,EAAGA,EAAI6rB,EAAat5B,OAAQyN,IACvCtO,EAAO8xB,GAAGqI,EAAa7rB,GAAIrP,KAAK+wB,KAAKxP,KAAKvhB,KAAMk7B,EAAa7rB,KAc/D,OATArP,KAAK+e,MAAQ,SAAU1P,GACrB+qB,EAAM,gBAAiB/qB,GAEnB4sB,IACFA,GAAS,EACTl7B,EAAOu2B,SAEX,EAEOt3B,IACT,EAEsB,mBAAXkR,SACTulB,EAAS33B,UAAUoS,OAAOuuB,eAAiB,WAKzC,YAJ0C35B,IAAtC00B,IACFA,EAAoC3qB,EAAQ,sCAGvC2qB,EAAkCx6B,KAC3C,GAGF/C,OAAOC,eAAeu5B,EAAS33B,UAAW,wBAAyB,CAIjEsV,YAAY,EACZ3V,IAAK,WACH,OAAOuB,KAAK05B,eAAeF,aAC7B,IAEFv8B,OAAOC,eAAeu5B,EAAS33B,UAAW,iBAAkB,CAI1DsV,YAAY,EACZ3V,IAAK,WACH,OAAOuB,KAAK05B,gBAAkB15B,KAAK05B,eAAelwB,MACpD,IAEFvM,OAAOC,eAAeu5B,EAAS33B,UAAW,kBAAmB,CAI3DsV,YAAY,EACZ3V,IAAK,WACH,OAAOuB,KAAK05B,eAAe+B,OAC7B,EACAv8B,IAAK,SAAauyB,GACZzxB,KAAK05B,iBACP15B,KAAK05B,eAAe+B,QAAUhK,EAElC,IAGFgF,EAASiJ,UAAYxB,EACrBjhC,OAAOC,eAAeu5B,EAAS33B,UAAW,iBAAkB,CAI1DsV,YAAY,EACZ3V,IAAK,WACH,OAAOuB,KAAK05B,eAAe93B,MAC7B,IAmDoB,mBAAXsP,SACTulB,EAAS/sB,KAAO,SAAUi2B,EAAUC,GAKlC,YAJa95B,IAAT4D,IACFA,EAAOmG,EAAQ,4BAGVnG,EAAK+sB,EAAUkJ,EAAUC,EAClC,EAUD,GAAE5gC,KAAKgB,KAAM,GAAEhB,KAAKgB,KAAK6P,EAAQ,iBAA8B,IAAX,EAAAe,EAAyB,EAAAA,EAAyB,oBAAT2oB,KAAuBA,KAAyB,oBAAXsG,OAAyBA,OAAS,CAAC,EAEtK,EAAE,CAAC,YAAY,GAAG,mBAAmB,GAAG,oCAAoC,GAAG,iCAAiC,GAAG,6BAA6B,GAAG,0BAA0B,GAAG,2BAA2B,GAAG,4BAA4B,GAAG,SAAW,GAAG,OAAS,GAAG,OAAS,GAAG,SAAW,GAAG,kBAAkB,GAAG,KAAO,KAAK,GAAG,CAAC,SAAShwB,EAAQT,EAAOjS,GA8D9V,aAEAiS,EAAOjS,QAAUw5B,EAEjB,IAAIiE,EAAiB/qB,EAAQ,aAAakoB,MACtCgD,EAA6BH,EAAeG,2BAC5C+E,EAAwBlF,EAAekF,sBACvCC,EAAqCnF,EAAemF,mCACpDC,EAA8BpF,EAAeoF,4BAE7C9gB,EAASrP,EAAQ,oBAIrB,SAASowB,EAAexN,EAAI/R,GAC1B,IAAIwf,EAAKlgC,KAAKmgC,gBACdD,EAAGE,cAAe,EAClB,IAAIvG,EAAKqG,EAAGG,QAEZ,GAAW,OAAPxG,EACF,OAAO75B,KAAK+wB,KAAK,QAAS,IAAI+O,GAGhCI,EAAGI,WAAa,KAChBJ,EAAGG,QAAU,KACD,MAAR3f,GACF1gB,KAAKkC,KAAKwe,GACZmZ,EAAGpH,GACH,IAAI8N,EAAKvgC,KAAK05B,eACd6G,EAAG5E,SAAU,GAET4E,EAAG1E,cAAgB0E,EAAG3+B,OAAS2+B,EAAG/G,gBACpCx5B,KAAK+e,MAAMwhB,EAAG/G,cAElB,CAEA,SAAS7C,EAAU1zB,GACjB,KAAMjD,gBAAgB22B,GAAY,OAAO,IAAIA,EAAU1zB,GACvDic,EAAOlgB,KAAKgB,KAAMiD,GAClBjD,KAAKmgC,gBAAkB,CACrBF,eAAgBA,EAAe1e,KAAKvhB,MACpCwgC,eAAe,EACfJ,cAAc,EACdC,QAAS,KACTC,WAAY,KACZG,cAAe,MAGjBzgC,KAAK05B,eAAemC,cAAe,EAInC77B,KAAK05B,eAAekC,MAAO,EAEvB34B,IAC+B,mBAAtBA,EAAQy9B,YAA0B1gC,KAAK45B,WAAa32B,EAAQy9B,WAC1C,mBAAlBz9B,EAAQmJ,QAAsBpM,KAAK2gC,OAAS19B,EAAQmJ,QAIjEpM,KAAK6yB,GAAG,YAAa+N,EACvB,CAEA,SAASA,IACP,IAAIj+B,EAAQ3C,KAEe,mBAAhBA,KAAK2gC,QAA0B3gC,KAAK05B,eAAeC,UAK5DppB,EAAKvQ,KAAM,KAAM,MAJjBA,KAAK2gC,QAAO,SAAUlO,EAAI/R,GACxBnQ,EAAK5N,EAAO8vB,EAAI/R,EAClB,GAIJ,CAwDA,SAASnQ,EAAKxP,EAAQ0xB,EAAI/R,GACxB,GAAI+R,EAAI,OAAO1xB,EAAOgwB,KAAK,QAAS0B,GAMpC,GALY,MAAR/R,GACF3f,EAAOmB,KAAKwe,GAIV3f,EAAOq4B,eAAex3B,OAAQ,MAAM,IAAIo+B,EAC5C,GAAIj/B,EAAOo/B,gBAAgBC,aAAc,MAAM,IAAIL,EACnD,OAAOh/B,EAAOmB,KAAK,KACrB,CA/HA2N,EAAQ,WAARA,CAAoB8mB,EAAWzX,GA+D/ByX,EAAU73B,UAAUoD,KAAO,SAAU4S,EAAO2Q,GAE1C,OADAzlB,KAAKmgC,gBAAgBK,eAAgB,EAC9BthB,EAAOpgB,UAAUoD,KAAKlD,KAAKgB,KAAM8U,EAAO2Q,EACjD,EAYAkR,EAAU73B,UAAU86B,WAAa,SAAU9kB,EAAO2Q,EAAUoU,GAC1DA,EAAG,IAAIkB,EAA2B,gBACpC,EAEApE,EAAU73B,UAAU8f,OAAS,SAAU9J,EAAO2Q,EAAUoU,GACtD,IAAIqG,EAAKlgC,KAAKmgC,gBAKd,GAJAD,EAAGG,QAAUxG,EACbqG,EAAGI,WAAaxrB,EAChBorB,EAAGO,cAAgBhb,GAEdya,EAAGE,aAAc,CACpB,IAAIG,EAAKvgC,KAAK05B,gBACVwG,EAAGM,eAAiBD,EAAG1E,cAAgB0E,EAAG3+B,OAAS2+B,EAAG/G,gBAAex5B,KAAK+e,MAAMwhB,EAAG/G,cACzF,CACF,EAKA7C,EAAU73B,UAAUigB,MAAQ,SAAU1P,GACpC,IAAI6wB,EAAKlgC,KAAKmgC,gBAEQ,OAAlBD,EAAGI,YAAwBJ,EAAGE,aAOhCF,EAAGM,eAAgB,GANnBN,EAAGE,cAAe,EAElBpgC,KAAK45B,WAAWsG,EAAGI,WAAYJ,EAAGO,cAAeP,EAAGD,gBAMxD,EAEAtJ,EAAU73B,UAAU09B,SAAW,SAAU1jB,EAAK+gB,GAC5C3a,EAAOpgB,UAAU09B,SAASx9B,KAAKgB,KAAM8Y,GAAK,SAAU+nB,GAClDhH,EAAGgH,EACL,GACF,CAaA,EAAE,CAAC,YAAY,GAAG,mBAAmB,GAAG,SAAW,KAAK,GAAG,CAAC,SAAShxB,EAAQT,EAAOjS,IACpF,SAAWuV,EAAQonB,IAAQ,WAwB3B,aAcA,SAASgH,EAAcrP,GACrB,IAAI9uB,EAAQ3C,KAEZA,KAAKqB,KAAO,KACZrB,KAAK+gC,MAAQ,KAEb/gC,KAAKghC,OAAS,WACZC,EAAet+B,EAAO8uB,EACxB,CACF,CAMA,IAAIvS,EA3BJ9P,EAAOjS,QAAUu5B,EA8BjBA,EAASwK,cAAgBA,EAGzB,IAAIC,EAAe,CACjBC,UAAWvxB,EAAQ,mBAMjBymB,EAASzmB,EAAQ,6BAIjBpG,EAASoG,EAAQ,UAAUpG,OAE3BwwB,EAAgBH,EAAOhX,YAAc,WAAa,EAEtD,SAASoX,EAAoBplB,GAC3B,OAAOrL,EAAOC,KAAKoL,EACrB,CAEA,SAASqlB,EAAch8B,GACrB,OAAOsL,EAAOuc,SAAS7nB,IAAQA,aAAe87B,CAChD,CAEA,IAkIIoH,EAlIA3G,EAAc7qB,EAAQ,8BAGtB8qB,EADW9qB,EAAQ,4BACS8qB,iBAE5BC,EAAiB/qB,EAAQ,aAAakoB,MACtC8C,EAAuBD,EAAeC,qBACtCE,EAA6BH,EAAeG,2BAC5C+E,EAAwBlF,EAAekF,sBACvCwB,EAAyB1G,EAAe0G,uBACxCC,EAAuB3G,EAAe2G,qBACtCC,EAAyB5G,EAAe4G,uBACxCC,EAA6B7G,EAAe6G,2BAC5CC,EAAuB9G,EAAe8G,qBAEtCzG,EAAiBP,EAAYO,eAIjC,SAAS0G,IAAO,CAEhB,SAAST,EAAcj+B,EAASlC,EAAQq6B,GACtClc,EAASA,GAAUrP,EAAQ,oBAC3B5M,EAAUA,GAAW,CAAC,EAME,kBAAbm4B,IAAwBA,EAAWr6B,aAAkBme,GAGhElf,KAAKq7B,aAAep4B,EAAQo4B,WACxBD,IAAUp7B,KAAKq7B,WAAar7B,KAAKq7B,cAAgBp4B,EAAQ2+B,oBAI7D5hC,KAAKw5B,cAAgBmB,EAAiB36B,KAAMiD,EAAS,wBAAyBm4B,GAE9Ep7B,KAAK6hC,aAAc,EAEnB7hC,KAAKs/B,WAAY,EAEjBt/B,KAAK8hC,QAAS,EAEd9hC,KAAKq5B,OAAQ,EAEbr5B,KAAK62B,UAAW,EAEhB72B,KAAK25B,WAAY,EAIjB,IAAIoI,GAAqC,IAA1B9+B,EAAQ++B,cACvBhiC,KAAKgiC,eAAiBD,EAItB/hC,KAAKo8B,gBAAkBn5B,EAAQm5B,iBAAmB,OAIlDp8B,KAAK4B,OAAS,EAEd5B,KAAKiiC,SAAU,EAEfjiC,KAAKkiC,OAAS,EAKdliC,KAAK47B,MAAO,EAIZ57B,KAAKmiC,kBAAmB,EAExBniC,KAAKoiC,QAAU,SAAU3P,GACvB2P,EAAQrhC,EAAQ0xB,EAClB,EAGAzyB,KAAKqgC,QAAU,KAEfrgC,KAAKqiC,SAAW,EAChBriC,KAAKsiC,gBAAkB,KACvBtiC,KAAKuiC,oBAAsB,KAG3BviC,KAAKwiC,UAAY,EAGjBxiC,KAAKyiC,aAAc,EAEnBziC,KAAK0iC,cAAe,EAEpB1iC,KAAKk8B,WAAkC,IAAtBj5B,EAAQi5B,UAEzBl8B,KAAKm8B,cAAgBl5B,EAAQk5B,YAE7Bn8B,KAAK2iC,qBAAuB,EAG5B3iC,KAAK4iC,mBAAqB,IAAI9B,EAAc9gC,KAC9C,CA2CA,SAAS02B,EAASzzB,GAUhB,IAAIm4B,EAAWp7B,gBATfkf,EAASA,GAAUrP,EAAQ,qBAU3B,IAAKurB,IAAaiG,EAAgBriC,KAAK03B,EAAU12B,MAAO,OAAO,IAAI02B,EAASzzB,GAC5EjD,KAAKo5B,eAAiB,IAAI8H,EAAcj+B,EAASjD,KAAMo7B,GAEvDp7B,KAAKsD,UAAW,EAEZL,IAC2B,mBAAlBA,EAAQ2G,QAAsB5J,KAAK4e,OAAS3b,EAAQ2G,OACjC,mBAAnB3G,EAAQ4/B,SAAuB7iC,KAAK8iC,QAAU7/B,EAAQ4/B,QAClC,mBAApB5/B,EAAQy0B,UAAwB13B,KAAKw8B,SAAWv5B,EAAQy0B,SACtC,mBAAlBz0B,EAAQ8/B,QAAsB/iC,KAAKgjC,OAAS//B,EAAQ8/B,QAGjEzM,EAAOt3B,KAAKgB,KACd,CAOA,SAASijC,EAAcliC,EAAQ84B,GAC7B,IAAIpH,EAAK,IAAIgP,EAEbxG,EAAel6B,EAAQ0xB,GACvB/f,EAAQ+iB,SAASoE,EAAIpH,EACvB,CAKA,SAASyQ,EAAWniC,EAAQ0wB,EAAO3c,EAAO+kB,GACxC,IAAIpH,EAQJ,OANc,OAAV3d,EACF2d,EAAK,IAAI+O,EACiB,iBAAV1sB,GAAuB2c,EAAM4J,aAC7C5I,EAAK,IAAIoI,EAAqB,QAAS,CAAC,SAAU,UAAW/lB,KAG3D2d,IACFwI,EAAel6B,EAAQ0xB,GACvB/f,EAAQ+iB,SAASoE,EAAIpH,IACd,EAIX,CAyDA,SAAS0Q,EAAY1R,EAAO3c,EAAO2Q,GAKjC,OAJKgM,EAAM4J,aAAsC,IAAxB5J,EAAMuQ,eAA4C,iBAAVltB,IAC/DA,EAAQrL,EAAOC,KAAKoL,EAAO2Q,IAGtB3Q,CACT,CAcA,SAASsuB,EAAcriC,EAAQ0wB,EAAO4R,EAAOvuB,EAAO2Q,EAAUoU,GAC5D,IAAKwJ,EAAO,CACV,IAAIC,EAAWH,EAAY1R,EAAO3c,EAAO2Q,GAErC3Q,IAAUwuB,IACZD,GAAQ,EACR5d,EAAW,SACX3Q,EAAQwuB,EAEZ,CAEA,IAAIvgB,EAAM0O,EAAM4J,WAAa,EAAIvmB,EAAMlT,OACvC6vB,EAAM7vB,QAAUmhB,EAChB,IAAIkI,EAAMwG,EAAM7vB,OAAS6vB,EAAM+H,cAI/B,GAFKvO,IAAKwG,EAAM6N,WAAY,GAExB7N,EAAMwQ,SAAWxQ,EAAMyQ,OAAQ,CACjC,IAAIqB,EAAO9R,EAAM8Q,oBACjB9Q,EAAM8Q,oBAAsB,CAC1BztB,MAAOA,EACP2Q,SAAUA,EACV4d,MAAOA,EACPruB,SAAU6kB,EACVx4B,KAAM,MAGJkiC,EACFA,EAAKliC,KAAOowB,EAAM8Q,oBAElB9Q,EAAM6Q,gBAAkB7Q,EAAM8Q,oBAGhC9Q,EAAMkR,sBAAwB,CAChC,MACEa,EAAQziC,EAAQ0wB,GAAO,EAAO1O,EAAKjO,EAAO2Q,EAAUoU,GAGtD,OAAO5O,CACT,CAEA,SAASuY,EAAQziC,EAAQ0wB,EAAOoR,EAAQ9f,EAAKjO,EAAO2Q,EAAUoU,GAC5DpI,EAAM4Q,SAAWtf,EACjB0O,EAAM4O,QAAUxG,EAChBpI,EAAMwQ,SAAU,EAChBxQ,EAAMmK,MAAO,EACTnK,EAAMkI,UAAWlI,EAAM2Q,QAAQ,IAAIb,EAAqB,UAAmBsB,EAAQ9hC,EAAO+hC,QAAQhuB,EAAO2c,EAAM2Q,SAAcrhC,EAAO6d,OAAO9J,EAAO2Q,EAAUgM,EAAM2Q,SACtK3Q,EAAMmK,MAAO,CACf,CAEA,SAAS6H,EAAa1iC,EAAQ0wB,EAAOmK,EAAMnJ,EAAIoH,KAC3CpI,EAAM+Q,UAEJ5G,GAGFlpB,EAAQ+iB,SAASoE,EAAIpH,GAGrB/f,EAAQ+iB,SAASiO,EAAa3iC,EAAQ0wB,GACtC1wB,EAAOq4B,eAAesJ,cAAe,EACrCzH,EAAel6B,EAAQ0xB,KAIvBoH,EAAGpH,GACH1xB,EAAOq4B,eAAesJ,cAAe,EACrCzH,EAAel6B,EAAQ0xB,GAGvBiR,EAAY3iC,EAAQ0wB,GAExB,CAEA,SAASkS,EAAmBlS,GAC1BA,EAAMwQ,SAAU,EAChBxQ,EAAM4O,QAAU,KAChB5O,EAAM7vB,QAAU6vB,EAAM4Q,SACtB5Q,EAAM4Q,SAAW,CACnB,CAEA,SAASD,EAAQrhC,EAAQ0xB,GACvB,IAAIhB,EAAQ1wB,EAAOq4B,eACfwC,EAAOnK,EAAMmK,KACb/B,EAAKpI,EAAM4O,QACf,GAAkB,mBAAPxG,EAAmB,MAAM,IAAIiG,EAExC,GADA6D,EAAmBlS,GACfgB,EAAIgR,EAAa1iC,EAAQ0wB,EAAOmK,EAAMnJ,EAAIoH,OAAS,CAErD,IAAIhD,EAAW+M,EAAWnS,IAAU1wB,EAAO44B,UAEtC9C,GAAapF,EAAMyQ,QAAWzQ,EAAM0Q,mBAAoB1Q,EAAM6Q,iBACjEuB,EAAY9iC,EAAQ0wB,GAGlBmK,EACFlpB,EAAQ+iB,SAASqO,EAAY/iC,EAAQ0wB,EAAOoF,EAAUgD,GAEtDiK,EAAW/iC,EAAQ0wB,EAAOoF,EAAUgD,EAExC,CACF,CAEA,SAASiK,EAAW/iC,EAAQ0wB,EAAOoF,EAAUgD,GACtChD,GAAUkN,EAAahjC,EAAQ0wB,GACpCA,EAAM+Q,YACN3I,IACA6J,EAAY3iC,EAAQ0wB,EACtB,CAKA,SAASsS,EAAahjC,EAAQ0wB,GACP,IAAjBA,EAAM7vB,QAAgB6vB,EAAM6N,YAC9B7N,EAAM6N,WAAY,EAClBv+B,EAAOgwB,KAAK,SAEhB,CAGA,SAAS8S,EAAY9iC,EAAQ0wB,GAC3BA,EAAM0Q,kBAAmB,EACzB,IAAIpB,EAAQtP,EAAM6Q,gBAElB,GAAIvhC,EAAO+hC,SAAW/B,GAASA,EAAM1/B,KAAM,CAEzC,IAAIo9B,EAAIhN,EAAMkR,qBACVn5B,EAAS,IAAIoM,MAAM6oB,GACnBuF,EAASvS,EAAMmR,mBACnBoB,EAAOjD,MAAQA,EAIf,IAHA,IAAIlsB,EAAQ,EACRovB,GAAa,EAEVlD,GACLv3B,EAAOqL,GAASksB,EACXA,EAAMsC,QAAOY,GAAa,GAC/BlD,EAAQA,EAAM1/B,KACdwT,GAAS,EAGXrL,EAAOy6B,WAAaA,EACpBT,EAAQziC,EAAQ0wB,GAAO,EAAMA,EAAM7vB,OAAQ4H,EAAQ,GAAIw6B,EAAOhD,QAG9DvP,EAAM+Q,YACN/Q,EAAM8Q,oBAAsB,KAExByB,EAAO3iC,MACTowB,EAAMmR,mBAAqBoB,EAAO3iC,KAClC2iC,EAAO3iC,KAAO,MAEdowB,EAAMmR,mBAAqB,IAAI9B,EAAcrP,GAG/CA,EAAMkR,qBAAuB,CAC/B,KAAO,CAEL,KAAO5B,GAAO,CACZ,IAAIjsB,EAAQisB,EAAMjsB,MACd2Q,EAAWsb,EAAMtb,SACjBoU,EAAKkH,EAAM/rB,SASf,GAPAwuB,EAAQziC,EAAQ0wB,GAAO,EADbA,EAAM4J,WAAa,EAAIvmB,EAAMlT,OACJkT,EAAO2Q,EAAUoU,GACpDkH,EAAQA,EAAM1/B,KACdowB,EAAMkR,uBAKFlR,EAAMwQ,QACR,KAEJ,CAEc,OAAVlB,IAAgBtP,EAAM8Q,oBAAsB,KAClD,CAEA9Q,EAAM6Q,gBAAkBvB,EACxBtP,EAAM0Q,kBAAmB,CAC3B,CA0CA,SAASyB,EAAWnS,GAClB,OAAOA,EAAMqQ,QAA2B,IAAjBrQ,EAAM7vB,QAA0C,OAA1B6vB,EAAM6Q,kBAA6B7Q,EAAMoF,WAAapF,EAAMwQ,OAC3G,CAEA,SAASiC,EAAUnjC,EAAQ0wB,GACzB1wB,EAAOiiC,QAAO,SAAUlqB,GACtB2Y,EAAM+Q,YAEF1pB,GACFmiB,EAAel6B,EAAQ+X,GAGzB2Y,EAAMgR,aAAc,EACpB1hC,EAAOgwB,KAAK,aACZ2S,EAAY3iC,EAAQ0wB,EACtB,GACF,CAEA,SAASmP,EAAU7/B,EAAQ0wB,GACpBA,EAAMgR,aAAgBhR,EAAMoQ,cACF,mBAAlB9gC,EAAOiiC,QAA0BvR,EAAMkI,WAKhDlI,EAAMgR,aAAc,EACpB1hC,EAAOgwB,KAAK,eALZU,EAAM+Q,YACN/Q,EAAMoQ,aAAc,EACpBnvB,EAAQ+iB,SAASyO,EAAWnjC,EAAQ0wB,IAM1C,CAEA,SAASiS,EAAY3iC,EAAQ0wB,GAC3B,IAAI0S,EAAOP,EAAWnS,GAEtB,GAAI0S,IACFvD,EAAU7/B,EAAQ0wB,GAEM,IAApBA,EAAM+Q,YACR/Q,EAAMoF,UAAW,EACjB91B,EAAOgwB,KAAK,UAERU,EAAM0K,cAAa,CAGrB,IAAIiI,EAASrjC,EAAO24B,iBAEf0K,GAAUA,EAAOjI,aAAeiI,EAAO1I,aAC1C36B,EAAO22B,SAEX,CAIJ,OAAOyM,CACT,CAEA,SAASE,EAAYtjC,EAAQ0wB,EAAOoI,GAClCpI,EAAMqQ,QAAS,EACf4B,EAAY3iC,EAAQ0wB,GAEhBoI,IACEpI,EAAMoF,SAAUnkB,EAAQ+iB,SAASoE,GAAS94B,EAAOkvB,KAAK,SAAU4J,IAGtEpI,EAAM4H,OAAQ,EACdt4B,EAAOuC,UAAW,CACpB,CAEA,SAAS29B,EAAeqD,EAAS7S,EAAO3Y,GACtC,IAAIioB,EAAQuD,EAAQvD,MAGpB,IAFAuD,EAAQvD,MAAQ,KAETA,GAAO,CACZ,IAAIlH,EAAKkH,EAAM/rB,SACfyc,EAAM+Q,YACN3I,EAAG/gB,GACHioB,EAAQA,EAAM1/B,IAChB,CAGAowB,EAAMmR,mBAAmBvhC,KAAOijC,CAClC,CAvjBAz0B,EAAQ,WAARA,CAAoB6mB,EAAUJ,GAyF9B4K,EAAcpiC,UAAU26B,UAAY,WAIlC,IAHA,IAAI8K,EAAUvkC,KAAKsiC,gBACfpX,EAAM,GAEHqZ,GACLrZ,EAAIhpB,KAAKqiC,GACTA,EAAUA,EAAQljC,KAGpB,OAAO6pB,CACT,EAEA,WACE,IACEjuB,OAAOC,eAAegkC,EAAcpiC,UAAW,SAAU,CACvDL,IAAK0iC,EAAaC,WAAU,WAC1B,OAAOphC,KAAKy5B,WACd,GAAG,6EAAmF,YAE1F,CAAE,MAAO5oB,GAAI,CACd,CARD,GAcsB,mBAAXK,QAAyBA,OAAOszB,aAAiE,mBAA3CjV,SAASzwB,UAAUoS,OAAOszB,cACzFnD,EAAkB9R,SAASzwB,UAAUoS,OAAOszB,aAC5CvnC,OAAOC,eAAew5B,EAAUxlB,OAAOszB,YAAa,CAClDpnC,MAAO,SAAeqnC,GACpB,QAAIpD,EAAgBriC,KAAKgB,KAAMykC,IAC3BzkC,OAAS02B,GACN+N,GAAUA,EAAOrL,0BAA0B8H,CACpD,KAGFG,EAAkB,SAAyBoD,GACzC,OAAOA,aAAkBzkC,IAC3B,EA8BF02B,EAAS53B,UAAUi4B,KAAO,WACxBkE,EAAej7B,KAAM,IAAIshC,EAC3B,EA8BA5K,EAAS53B,UAAU8K,MAAQ,SAAUkL,EAAO2Q,EAAUoU,GACpD,IAAIpI,EAAQzxB,KAAKo5B,eACbnO,GAAM,EAENoY,GAAS5R,EAAM4J,YAAclB,EAAcrlB,GAiB/C,OAfIuuB,IAAU55B,EAAOuc,SAASlR,KAC5BA,EAAQolB,EAAoBplB,IAGN,mBAAb2Q,IACToU,EAAKpU,EACLA,EAAW,MAGT4d,EAAO5d,EAAW,SAAmBA,IAAUA,EAAWgM,EAAM2K,iBAClD,mBAAPvC,IAAmBA,EAAK8H,GAC/BlQ,EAAMqQ,OAAQmB,EAAcjjC,KAAM65B,IAAawJ,GAASH,EAAWljC,KAAMyxB,EAAO3c,EAAO+kB,MACzFpI,EAAM+Q,YACNvX,EAAMmY,EAAcpjC,KAAMyxB,EAAO4R,EAAOvuB,EAAO2Q,EAAUoU,IAEpD5O,CACT,EAEAyL,EAAS53B,UAAU4lC,KAAO,WACxB1kC,KAAKo5B,eAAe8I,QACtB,EAEAxL,EAAS53B,UAAU6lC,OAAS,WAC1B,IAAIlT,EAAQzxB,KAAKo5B,eAEb3H,EAAMyQ,SACRzQ,EAAMyQ,SACDzQ,EAAMwQ,SAAYxQ,EAAMyQ,QAAWzQ,EAAM0Q,mBAAoB1Q,EAAM6Q,iBAAiBuB,EAAY7jC,KAAMyxB,GAE/G,EAEAiF,EAAS53B,UAAU8lC,mBAAqB,SAA4Bnf,GAGlE,GADwB,iBAAbA,IAAuBA,EAAWA,EAASc,iBAChD,CAAC,MAAO,OAAQ,QAAS,QAAS,SAAU,SAAU,OAAQ,QAAS,UAAW,WAAY,OAAOxI,SAAS0H,EAAW,IAAIc,gBAAkB,GAAI,MAAM,IAAImb,EAAqBjc,GAExL,OADAzlB,KAAKo5B,eAAegD,gBAAkB3W,EAC/BzlB,IACT,EAEA/C,OAAOC,eAAew5B,EAAS53B,UAAW,iBAAkB,CAI1DsV,YAAY,EACZ3V,IAAK,WACH,OAAOuB,KAAKo5B,gBAAkBp5B,KAAKo5B,eAAeK,WACpD,IAWFx8B,OAAOC,eAAew5B,EAAS53B,UAAW,wBAAyB,CAIjEsV,YAAY,EACZ3V,IAAK,WACH,OAAOuB,KAAKo5B,eAAeI,aAC7B,IA2LF9C,EAAS53B,UAAU8f,OAAS,SAAU9J,EAAO2Q,EAAUoU,GACrDA,EAAG,IAAIkB,EAA2B,YACpC,EAEArE,EAAS53B,UAAUgkC,QAAU,KAE7BpM,EAAS53B,UAAUoT,IAAM,SAAU4C,EAAO2Q,EAAUoU,GAClD,IAAIpI,EAAQzxB,KAAKo5B,eAoBjB,MAlBqB,mBAAVtkB,GACT+kB,EAAK/kB,EACLA,EAAQ,KACR2Q,EAAW,MACkB,mBAAbA,IAChBoU,EAAKpU,EACLA,EAAW,MAGT3Q,SAAuC9U,KAAK4J,MAAMkL,EAAO2Q,GAEzDgM,EAAMyQ,SACRzQ,EAAMyQ,OAAS,EACfliC,KAAK2kC,UAIFlT,EAAMqQ,QAAQuC,EAAYrkC,KAAMyxB,EAAOoI,GACrC75B,IACT,EAEA/C,OAAOC,eAAew5B,EAAS53B,UAAW,iBAAkB,CAI1DsV,YAAY,EACZ3V,IAAK,WACH,OAAOuB,KAAKo5B,eAAex3B,MAC7B,IAsFF3E,OAAOC,eAAew5B,EAAS53B,UAAW,YAAa,CAIrDsV,YAAY,EACZ3V,IAAK,WACH,YAA4BqH,IAAxB9F,KAAKo5B,gBAIFp5B,KAAKo5B,eAAeO,SAC7B,EACAz6B,IAAK,SAAa9B,GAGX4C,KAAKo5B,iBAMVp5B,KAAKo5B,eAAeO,UAAYv8B,EAClC,IAEFs5B,EAAS53B,UAAU44B,QAAUgD,EAAYhD,QACzChB,EAAS53B,UAAUm+B,WAAavC,EAAYwC,UAE5CxG,EAAS53B,UAAU09B,SAAW,SAAU1jB,EAAK+gB,GAC3CA,EAAG/gB,EACL,CACC,GAAE9Z,KAAKgB,KAAM,GAAEhB,KAAKgB,KAAK6P,EAAQ,iBAA8B,IAAX,EAAAe,EAAyB,EAAAA,EAAyB,oBAAT2oB,KAAuBA,KAAyB,oBAAXsG,OAAyBA,OAAS,CAAC,EAEtK,EAAE,CAAC,YAAY,GAAG,mBAAmB,GAAG,6BAA6B,GAAG,2BAA2B,GAAG,4BAA4B,GAAG,SAAW,GAAG,OAAS,GAAG,SAAW,GAAG,iBAAiB,KAAK,GAAG,CAAC,SAAShwB,EAAQT,EAAOjS,IAC/N,SAAWuV,IAAS,WACpB,aAEA,IAAImyB,EAEJ,SAASC,EAAgB3mC,EAAKU,EAAKzB,GAAiK,OAApJyB,KAAOV,EAAOlB,OAAOC,eAAeiB,EAAKU,EAAK,CAAEzB,MAAOA,EAAOgX,YAAY,EAAMC,cAAc,EAAM/Q,UAAU,IAAkBnF,EAAIU,GAAOzB,EAAgBe,CAAK,CAEhN,IAAI04B,EAAWhnB,EAAQ,mBAEnBk1B,EAAe7zB,OAAO,eACtB8zB,EAAc9zB,OAAO,cACrB+zB,EAAS/zB,OAAO,SAChBg0B,EAASh0B,OAAO,SAChBi0B,EAAej0B,OAAO,eACtBk0B,EAAiBl0B,OAAO,iBACxBm0B,EAAUn0B,OAAO,UAErB,SAASo0B,EAAiBloC,EAAOmT,GAC/B,MAAO,CACLnT,MAAOA,EACPmT,KAAMA,EAEV,CAEA,SAASg1B,EAAeC,GACtB,IAAI1gC,EAAU0gC,EAAKT,GAEnB,GAAgB,OAAZjgC,EAAkB,CACpB,IAAI4b,EAAO8kB,EAAKH,GAAS/xB,OAIZ,OAAToN,IACF8kB,EAAKL,GAAgB,KACrBK,EAAKT,GAAgB,KACrBS,EAAKR,GAAe,KACpBlgC,EAAQwgC,EAAiB5kB,GAAM,IAEnC,CACF,CAEA,SAAS+kB,EAAWD,GAGlB9yB,EAAQ+iB,SAAS8P,EAAgBC,EACnC,CAEA,SAASE,EAAYC,EAAaH,GAChC,OAAO,SAAU1gC,EAASwF,GACxBq7B,EAAYn1B,MAAK,WACXg1B,EAAKN,GACPpgC,EAAQwgC,OAAiBx/B,GAAW,IAItC0/B,EAAKJ,GAAgBtgC,EAASwF,EAChC,GAAGA,EACL,CACF,CAEA,IAAIs7B,EAAyB3oC,OAAOo1B,gBAAe,WAAa,IAC5DwT,EAAuC5oC,OAAOyY,gBA4D/CovB,EA5D+DD,EAAwB,CACxF,UAAI9jC,GACF,OAAOf,KAAKqlC,EACd,EAEAhkC,KAAM,WACJ,IAAIsB,EAAQ3C,KAIR6B,EAAQ7B,KAAKilC,GAEjB,GAAc,OAAVpjC,EACF,OAAOyE,QAAQgE,OAAOzI,GAGxB,GAAI7B,KAAKklC,GACP,OAAO5+B,QAAQxB,QAAQwgC,OAAiBx/B,GAAW,IAGrD,GAAI9F,KAAKqlC,GAAS1L,UAKhB,OAAO,IAAIrzB,SAAQ,SAAUxB,EAASwF,GACpCoI,EAAQ+iB,UAAS,WACX9yB,EAAMsiC,GACR36B,EAAO3H,EAAMsiC,IAEbngC,EAAQwgC,OAAiBx/B,GAAW,GAExC,GACF,IAOF,IACI+G,EADA84B,EAAc3lC,KAAKmlC,GAGvB,GAAIQ,EACF94B,EAAU,IAAIvG,QAAQo/B,EAAYC,EAAa3lC,WAC1C,CAGL,IAAI0gB,EAAO1gB,KAAKqlC,GAAS/xB,OAEzB,GAAa,OAAToN,EACF,OAAOpa,QAAQxB,QAAQwgC,EAAiB5kB,GAAM,IAGhD7T,EAAU,IAAIvG,QAAQtG,KAAKolC,GAC7B,CAGA,OADAplC,KAAKmlC,GAAgBt4B,EACdA,CACT,GACwCqE,OAAOuuB,eAAe,WAC9D,OAAOz/B,IACT,IAAI8kC,EAAgBD,EAAuB,UAAU,WACnD,IAAI3hC,EAASlD,KAKb,OAAO,IAAIsG,SAAQ,SAAUxB,EAASwF,GACpCpH,EAAOmiC,GAAS3N,QAAQ,MAAM,SAAU5e,GAClCA,EACFxO,EAAOwO,GAIThU,EAAQwgC,OAAiBx/B,GAAW,GACtC,GACF,GACF,IAAI++B,GAAwBe,GAExBpL,EAAoC,SAA2Cz5B,GACjF,IAAI+kC,EAEA30B,EAAWlU,OAAOgF,OAAO4jC,GAA4Df,EAArBgB,EAAiB,CAAC,EAAmCT,EAAS,CAChIjoC,MAAO2D,EACPuC,UAAU,IACRwhC,EAAgBgB,EAAgBf,EAAc,CAChD3nC,MAAO,KACPkG,UAAU,IACRwhC,EAAgBgB,EAAgBd,EAAa,CAC/C5nC,MAAO,KACPkG,UAAU,IACRwhC,EAAgBgB,EAAgBb,EAAQ,CAC1C7nC,MAAO,KACPkG,UAAU,IACRwhC,EAAgBgB,EAAgBZ,EAAQ,CAC1C9nC,MAAO2D,EAAO24B,eAAegC,WAC7Bp4B,UAAU,IACRwhC,EAAgBgB,EAAgBV,EAAgB,CAClDhoC,MAAO,SAAe0H,EAASwF,GAC7B,IAAIoW,EAAOvP,EAASk0B,GAAS/xB,OAEzBoN,GACFvP,EAASg0B,GAAgB,KACzBh0B,EAAS4zB,GAAgB,KACzB5zB,EAAS6zB,GAAe,KACxBlgC,EAAQwgC,EAAiB5kB,GAAM,MAE/BvP,EAAS4zB,GAAgBjgC,EACzBqM,EAAS6zB,GAAe16B,EAE5B,EACAhH,UAAU,IACRwiC,IA8BJ,OA7BA30B,EAASg0B,GAAgB,KACzBtO,EAAS91B,GAAQ,SAAU+X,GACzB,GAAIA,GAAoB,+BAAbA,EAAInJ,KAAuC,CACpD,IAAIrF,EAAS6G,EAAS6zB,GAWtB,OARe,OAAX16B,IACF6G,EAASg0B,GAAgB,KACzBh0B,EAAS4zB,GAAgB,KACzB5zB,EAAS6zB,GAAe,KACxB16B,EAAOwO,SAGT3H,EAAS8zB,GAAUnsB,EAErB,CAEA,IAAIhU,EAAUqM,EAAS4zB,GAEP,OAAZjgC,IACFqM,EAASg0B,GAAgB,KACzBh0B,EAAS4zB,GAAgB,KACzB5zB,EAAS6zB,GAAe,KACxBlgC,EAAQwgC,OAAiBx/B,GAAW,KAGtCqL,EAAS+zB,IAAU,CACrB,IACAnkC,EAAO8xB,GAAG,WAAY4S,EAAWlkB,KAAK,KAAMpQ,IACrCA,CACT,EAEA/B,EAAOjS,QAAUq9B,CAChB,GAAEx7B,KAAKgB,KAAM,GAAEhB,KAAKgB,KAAK6P,EAAQ,YAElC,EAAE,CAAC,kBAAkB,GAAG,SAAW,KAAK,GAAG,CAAC,SAASA,EAAQT,EAAOjS,GACpE,aAEA,SAASuyB,EAAQ+U,EAAQsB,GAAkB,IAAIppB,EAAO1f,OAAO0f,KAAK8nB,GAAS,GAAIxnC,OAAO0yB,sBAAuB,CAAE,IAAIqW,EAAU/oC,OAAO0yB,sBAAsB8U,GAAasB,IAAgBC,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOjpC,OAAO2B,yBAAyB6lC,EAAQyB,GAAK9xB,UAAY,KAAIuI,EAAKza,KAAKO,MAAMka,EAAMqpB,EAAU,CAAE,OAAOrpB,CAAM,CAEpV,SAASwpB,EAAc3lB,GAAU,IAAK,IAAIhR,EAAI,EAAGA,EAAI9M,UAAUd,OAAQ4N,IAAK,CAAE,IAAIynB,EAAyB,MAAhBv0B,UAAU8M,GAAa9M,UAAU8M,GAAK,CAAC,EAAOA,EAAI,EAAKkgB,EAAQzyB,OAAOg6B,IAAS,GAAMp0B,SAAQ,SAAUhE,GAAOimC,EAAgBtkB,EAAQ3hB,EAAKo4B,EAAOp4B,GAAO,IAAe5B,OAAOmpC,0BAA6BnpC,OAAOopC,iBAAiB7lB,EAAQvjB,OAAOmpC,0BAA0BnP,IAAmBvH,EAAQzyB,OAAOg6B,IAASp0B,SAAQ,SAAUhE,GAAO5B,OAAOC,eAAesjB,EAAQ3hB,EAAK5B,OAAO2B,yBAAyBq4B,EAAQp4B,GAAO,GAAM,CAAE,OAAO2hB,CAAQ,CAErhB,SAASskB,EAAgB3mC,EAAKU,EAAKzB,GAAiK,OAApJyB,KAAOV,EAAOlB,OAAOC,eAAeiB,EAAKU,EAAK,CAAEzB,MAAOA,EAAOgX,YAAY,EAAMC,cAAc,EAAM/Q,UAAU,IAAkBnF,EAAIU,GAAOzB,EAAgBe,CAAK,CAEhN,SAASmoC,EAAgBC,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAIl1B,UAAU,oCAAwC,CAExJ,SAASm1B,EAAkBjmB,EAAQkmB,GAAS,IAAK,IAAIl3B,EAAI,EAAGA,EAAIk3B,EAAM9kC,OAAQ4N,IAAK,CAAE,IAAIm3B,EAAaD,EAAMl3B,GAAIm3B,EAAWvyB,WAAauyB,EAAWvyB,aAAc,EAAOuyB,EAAWtyB,cAAe,EAAU,UAAWsyB,IAAYA,EAAWrjC,UAAW,GAAMrG,OAAOC,eAAesjB,EAAQmmB,EAAW9nC,IAAK8nC,EAAa,CAAE,CAE5T,SAASC,EAAaJ,EAAaK,EAAYC,GAAmJ,OAAhID,GAAYJ,EAAkBD,EAAY1nC,UAAW+nC,GAAiBC,GAAaL,EAAkBD,EAAaM,GAAqBN,CAAa,CAEtN,IACI/8B,EADWoG,EAAQ,UACDpG,OAGlBygB,EADYra,EAAQ,QACAqa,QAEpB6c,EAAS7c,GAAWA,EAAQ6c,QAAU,UAE1C,SAASC,EAAW/X,EAAKzO,EAAQqH,GAC/Bpe,EAAO3K,UAAU0jB,KAAKxjB,KAAKiwB,EAAKzO,EAAQqH,EAC1C,CAEAzY,EAAOjS,QAEP,WACE,SAASs9B,IACP6L,EAAgBtmC,KAAMy6B,GAEtBz6B,KAAKs9B,KAAO,KACZt9B,KAAKinC,KAAO,KACZjnC,KAAK4B,OAAS,CAChB,CA6KA,OA3KAglC,EAAanM,EAAY,CAAC,CACxB57B,IAAK,OACLzB,MAAO,SAAcgU,GACnB,IAAI2vB,EAAQ,CACVrgB,KAAMtP,EACN/P,KAAM,MAEJrB,KAAK4B,OAAS,EAAG5B,KAAKinC,KAAK5lC,KAAO0/B,EAAW/gC,KAAKs9B,KAAOyD,EAC7D/gC,KAAKinC,KAAOlG,IACV/gC,KAAK4B,MACT,GACC,CACD/C,IAAK,UACLzB,MAAO,SAAiBgU,GACtB,IAAI2vB,EAAQ,CACVrgB,KAAMtP,EACN/P,KAAMrB,KAAKs9B,MAEO,IAAhBt9B,KAAK4B,SAAc5B,KAAKinC,KAAOlG,GACnC/gC,KAAKs9B,KAAOyD,IACV/gC,KAAK4B,MACT,GACC,CACD/C,IAAK,QACLzB,MAAO,WACL,GAAoB,IAAhB4C,KAAK4B,OAAT,CACA,IAAIqpB,EAAMjrB,KAAKs9B,KAAK5c,KAGpB,OAFoB,IAAhB1gB,KAAK4B,OAAc5B,KAAKs9B,KAAOt9B,KAAKinC,KAAO,KAAUjnC,KAAKs9B,KAAOt9B,KAAKs9B,KAAKj8B,OAC7ErB,KAAK4B,OACAqpB,CAJsB,CAK/B,GACC,CACDpsB,IAAK,QACLzB,MAAO,WACL4C,KAAKs9B,KAAOt9B,KAAKinC,KAAO,KACxBjnC,KAAK4B,OAAS,CAChB,GACC,CACD/C,IAAK,OACLzB,MAAO,SAAcyC,GACnB,GAAoB,IAAhBG,KAAK4B,OAAc,MAAO,GAI9B,IAHA,IAAIgO,EAAI5P,KAAKs9B,KACTrS,EAAM,GAAKrb,EAAE8Q,KAEV9Q,EAAIA,EAAEvO,MACX4pB,GAAOprB,EAAI+P,EAAE8Q,KAGf,OAAOuK,CACT,GACC,CACDpsB,IAAK,SACLzB,MAAO,SAAgBiS,GACrB,GAAoB,IAAhBrP,KAAK4B,OAAc,OAAO6H,EAAO2Q,MAAM,GAK3C,IAJA,IAAI6Q,EAAMxhB,EAAOqb,YAAYzV,IAAM,GAC/BO,EAAI5P,KAAKs9B,KACT9tB,EAAI,EAEDI,GACLo3B,EAAWp3B,EAAE8Q,KAAMuK,EAAKzb,GACxBA,GAAKI,EAAE8Q,KAAK9e,OACZgO,EAAIA,EAAEvO,KAGR,OAAO4pB,CACT,GAEC,CACDpsB,IAAK,UACLzB,MAAO,SAAiBiS,EAAG63B,GACzB,IAAIjc,EAcJ,OAZI5b,EAAIrP,KAAKs9B,KAAK5c,KAAK9e,QAErBqpB,EAAMjrB,KAAKs9B,KAAK5c,KAAK1N,MAAM,EAAG3D,GAC9BrP,KAAKs9B,KAAK5c,KAAO1gB,KAAKs9B,KAAK5c,KAAK1N,MAAM3D,IAGtC4b,EAFS5b,IAAMrP,KAAKs9B,KAAK5c,KAAK9e,OAExB5B,KAAKsB,QAGL4lC,EAAalnC,KAAKmnC,WAAW93B,GAAKrP,KAAKonC,WAAW/3B,GAGnD4b,CACT,GACC,CACDpsB,IAAK,QACLzB,MAAO,WACL,OAAO4C,KAAKs9B,KAAK5c,IACnB,GAEC,CACD7hB,IAAK,aACLzB,MAAO,SAAoBiS,GACzB,IAAIO,EAAI5P,KAAKs9B,KACTxO,EAAI,EACJ7D,EAAMrb,EAAE8Q,KAGZ,IAFArR,GAAK4b,EAAIrpB,OAEFgO,EAAIA,EAAEvO,MAAM,CACjB,IAAI8oB,EAAMva,EAAE8Q,KACR2mB,EAAKh4B,EAAI8a,EAAIvoB,OAASuoB,EAAIvoB,OAASyN,EAIvC,GAHIg4B,IAAOld,EAAIvoB,OAAQqpB,GAAOd,EAASc,GAAOd,EAAInX,MAAM,EAAG3D,GAGjD,IAFVA,GAAKg4B,GAEQ,CACPA,IAAOld,EAAIvoB,UACXktB,EACElf,EAAEvO,KAAMrB,KAAKs9B,KAAO1tB,EAAEvO,KAAUrB,KAAKs9B,KAAOt9B,KAAKinC,KAAO,OAE5DjnC,KAAKs9B,KAAO1tB,EACZA,EAAE8Q,KAAOyJ,EAAInX,MAAMq0B,IAGrB,KACF,GAEEvY,CACJ,CAGA,OADA9uB,KAAK4B,QAAUktB,EACR7D,CACT,GAEC,CACDpsB,IAAK,aACLzB,MAAO,SAAoBiS,GACzB,IAAI4b,EAAMxhB,EAAOqb,YAAYzV,GACzBO,EAAI5P,KAAKs9B,KACTxO,EAAI,EAIR,IAHAlf,EAAE8Q,KAAK8B,KAAKyI,GACZ5b,GAAKO,EAAE8Q,KAAK9e,OAELgO,EAAIA,EAAEvO,MAAM,CACjB,IAAIsjB,EAAM/U,EAAE8Q,KACR2mB,EAAKh4B,EAAIsV,EAAI/iB,OAAS+iB,EAAI/iB,OAASyN,EAIvC,GAHAsV,EAAInC,KAAKyI,EAAKA,EAAIrpB,OAASyN,EAAG,EAAGg4B,GAGvB,IAFVh4B,GAAKg4B,GAEQ,CACPA,IAAO1iB,EAAI/iB,UACXktB,EACElf,EAAEvO,KAAMrB,KAAKs9B,KAAO1tB,EAAEvO,KAAUrB,KAAKs9B,KAAOt9B,KAAKinC,KAAO,OAE5DjnC,KAAKs9B,KAAO1tB,EACZA,EAAE8Q,KAAOiE,EAAI3R,MAAMq0B,IAGrB,KACF,GAEEvY,CACJ,CAGA,OADA9uB,KAAK4B,QAAUktB,EACR7D,CACT,GAEC,CACDpsB,IAAKkoC,EACL3pC,MAAO,SAAeyT,EAAG5N,GACvB,OAAOinB,EAAQlqB,KAAMmmC,EAAc,CAAC,EAAGljC,EAAS,CAE9CqkC,MAAO,EAEPC,eAAe,IAEnB,KAGK9M,CACT,CArLA,EAsLA,EAAE,CAAC,OAAS,GAAG,KAAO,KAAK,GAAG,CAAC,SAAS5qB,EAAQT,EAAOjS,IACvD,SAAWuV,IAAS,WACpB,aAEA,SAASglB,EAAQ5e,EAAK+gB,GACpB,IAAIl3B,EAAQ3C,KAERwnC,EAAoBxnC,KAAK05B,gBAAkB15B,KAAK05B,eAAeC,UAC/D8N,EAAoBznC,KAAKo5B,gBAAkBp5B,KAAKo5B,eAAeO,UAEnE,OAAI6N,GAAqBC,GACnB5N,EACFA,EAAG/gB,GACMA,IACJ9Y,KAAKo5B,eAEEp5B,KAAKo5B,eAAesJ,eAC9B1iC,KAAKo5B,eAAesJ,cAAe,EACnChwB,EAAQ+iB,SAASiS,EAAa1nC,KAAM8Y,IAHpCpG,EAAQ+iB,SAASiS,EAAa1nC,KAAM8Y,IAOjC9Y,OAKLA,KAAK05B,iBACP15B,KAAK05B,eAAeC,WAAY,GAI9B35B,KAAKo5B,iBACPp5B,KAAKo5B,eAAeO,WAAY,GAGlC35B,KAAKw8B,SAAS1jB,GAAO,MAAM,SAAUA,IAC9B+gB,GAAM/gB,EACJnW,EAAMy2B,eAECz2B,EAAMy2B,eAAesJ,aAI/BhwB,EAAQ+iB,SAASkS,EAAahlC,IAH9BA,EAAMy2B,eAAesJ,cAAe,EACpChwB,EAAQ+iB,SAASmS,EAAqBjlC,EAAOmW,IAH7CpG,EAAQ+iB,SAASmS,EAAqBjlC,EAAOmW,GAOtC+gB,GACTnnB,EAAQ+iB,SAASkS,EAAahlC,GAC9Bk3B,EAAG/gB,IAEHpG,EAAQ+iB,SAASkS,EAAahlC,EAElC,IAEO3C,KACT,CAEA,SAAS4nC,EAAoBrO,EAAMzgB,GACjC4uB,EAAYnO,EAAMzgB,GAClB6uB,EAAYpO,EACd,CAEA,SAASoO,EAAYpO,GACfA,EAAKH,iBAAmBG,EAAKH,eAAe8C,WAC5C3C,EAAKG,iBAAmBH,EAAKG,eAAewC,WAChD3C,EAAKxI,KAAK,QACZ,CAEA,SAASmM,IACHl9B,KAAK05B,iBACP15B,KAAK05B,eAAeC,WAAY,EAChC35B,KAAK05B,eAAeiC,SAAU,EAC9B37B,KAAK05B,eAAeL,OAAQ,EAC5Br5B,KAAK05B,eAAegC,YAAa,GAG/B17B,KAAKo5B,iBACPp5B,KAAKo5B,eAAeO,WAAY,EAChC35B,KAAKo5B,eAAeC,OAAQ,EAC5Br5B,KAAKo5B,eAAe0I,QAAS,EAC7B9hC,KAAKo5B,eAAeyI,aAAc,EAClC7hC,KAAKo5B,eAAeqJ,aAAc,EAClCziC,KAAKo5B,eAAevC,UAAW,EAC/B72B,KAAKo5B,eAAesJ,cAAe,EAEvC,CAEA,SAASgF,EAAYnO,EAAMzgB,GACzBygB,EAAKxI,KAAK,QAASjY,EACrB,CAEA,SAASmiB,EAAel6B,EAAQ+X,GAM9B,IAAIsrB,EAASrjC,EAAO24B,eAChB6E,EAASx9B,EAAOq4B,eAChBgL,GAAUA,EAAOjI,aAAeoC,GAAUA,EAAOpC,YAAap7B,EAAO22B,QAAQ5e,GAAU/X,EAAOgwB,KAAK,QAASjY,EAClH,CAEA1J,EAAOjS,QAAU,CACfu6B,QAASA,EACTwF,UAAWA,EACXjC,eAAgBA,EAEjB,GAAEj8B,KAAKgB,KAAM,GAAEhB,KAAKgB,KAAK6P,EAAQ,YAElC,EAAE,CAAC,SAAW,KAAK,GAAG,CAAC,SAASA,EAAQT,EAAOjS,GAG/C,aAEA,IAAI0qC,EAA6Bh4B,EAAQ,mBAAmBkoB,MAAM8P,2BAElE,SAAS5X,EAAKjb,GACZ,IAAI8yB,GAAS,EACb,OAAO,WACL,IAAIA,EAAJ,CACAA,GAAS,EAET,IAAK,IAAIC,EAAOrlC,UAAUd,OAAQggB,EAAO,IAAIhM,MAAMmyB,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/EpmB,EAAKomB,GAAQtlC,UAAUslC,GAGzBhzB,EAASvS,MAAMzC,KAAM4hB,EAPH,CAQpB,CACF,CAEA,SAAS4T,IAAQ,CAEjB,SAASyS,EAAUlnC,GACjB,OAAOA,EAAOmnC,WAAqC,mBAAjBnnC,EAAOwL,KAC3C,CAEA,SAAS47B,EAAIpnC,EAAQ6+B,EAAM5qB,GACzB,GAAoB,mBAAT4qB,EAAqB,OAAOuI,EAAIpnC,EAAQ,KAAM6+B,GACpDA,IAAMA,EAAO,CAAC,GACnB5qB,EAAWib,EAAKjb,GAAYwgB,GAC5B,IAAI6B,EAAWuI,EAAKvI,WAA8B,IAAlBuI,EAAKvI,UAAsBt2B,EAAOs2B,SAC9D/zB,EAAWs8B,EAAKt8B,WAA8B,IAAlBs8B,EAAKt8B,UAAsBvC,EAAOuC,SAE9D8kC,EAAiB,WACdrnC,EAAOuC,UAAU+7B,GACxB,EAEIgJ,EAAgBtnC,EAAOq4B,gBAAkBr4B,EAAOq4B,eAAevC,SAE/DwI,EAAW,WACb/7B,GAAW,EACX+kC,GAAgB,EACXhR,GAAUriB,EAAShW,KAAK+B,EAC/B,EAEIunC,EAAgBvnC,EAAO24B,gBAAkB34B,EAAO24B,eAAegC,WAE/DlE,EAAQ,WACVH,GAAW,EACXiR,GAAgB,EACXhlC,GAAU0R,EAAShW,KAAK+B,EAC/B,EAEI4e,EAAU,SAAiB7G,GAC7B9D,EAAShW,KAAK+B,EAAQ+X,EACxB,EAEI+H,EAAU,WACZ,IAAI/H,EAEJ,OAAIue,IAAaiR,GACVvnC,EAAO24B,gBAAmB34B,EAAO24B,eAAeL,QAAOvgB,EAAM,IAAI+uB,GAC/D7yB,EAAShW,KAAK+B,EAAQ+X,IAG3BxV,IAAa+kC,GACVtnC,EAAOq4B,gBAAmBr4B,EAAOq4B,eAAeC,QAAOvgB,EAAM,IAAI+uB,GAC/D7yB,EAAShW,KAAK+B,EAAQ+X,SAF/B,CAIF,EAEIyvB,EAAY,WACdxnC,EAAOynC,IAAI3V,GAAG,SAAUwM,EAC1B,EAgBA,OAdI4I,EAAUlnC,IACZA,EAAO8xB,GAAG,WAAYwM,GACtBt+B,EAAO8xB,GAAG,QAAShS,GACf9f,EAAOynC,IAAKD,IAAiBxnC,EAAO8xB,GAAG,UAAW0V,IAC7CjlC,IAAavC,EAAOq4B,iBAE7Br4B,EAAO8xB,GAAG,MAAOuV,GACjBrnC,EAAO8xB,GAAG,QAASuV,IAGrBrnC,EAAO8xB,GAAG,MAAO2E,GACjBz2B,EAAO8xB,GAAG,SAAUwM,IACD,IAAfO,EAAK/9B,OAAiBd,EAAO8xB,GAAG,QAASlT,GAC7C5e,EAAO8xB,GAAG,QAAShS,GACZ,WACL9f,EAAOuwB,eAAe,WAAY+N,GAClCt+B,EAAOuwB,eAAe,QAASzQ,GAC/B9f,EAAOuwB,eAAe,UAAWiX,GAC7BxnC,EAAOynC,KAAKznC,EAAOynC,IAAIlX,eAAe,SAAU+N,GACpDt+B,EAAOuwB,eAAe,MAAO8W,GAC7BrnC,EAAOuwB,eAAe,QAAS8W,GAC/BrnC,EAAOuwB,eAAe,SAAU+N,GAChCt+B,EAAOuwB,eAAe,MAAOkG,GAC7Bz2B,EAAOuwB,eAAe,QAAS3R,GAC/B5e,EAAOuwB,eAAe,QAASzQ,EACjC,CACF,CAEAzR,EAAOjS,QAAUgrC,CACjB,EAAE,CAAC,kBAAkB,KAAK,GAAG,CAAC,SAASt4B,EAAQT,EAAOjS,GACtDiS,EAAOjS,QAAU,WACf,MAAM,IAAI2E,MAAM,gDAClB,CAEA,EAAE,CAAC,GAAG,GAAG,CAAC,SAAS+N,EAAQT,EAAOjS,GAGlC,aAEA,IAAIgrC,EAEJ,SAASlY,EAAKjb,GACZ,IAAI8yB,GAAS,EACb,OAAO,WACDA,IACJA,GAAS,EACT9yB,EAASvS,WAAM,EAAQC,WACzB,CACF,CAEA,IAAIk4B,EAAiB/qB,EAAQ,mBAAmBkoB,MAC5C0Q,EAAmB7N,EAAe6N,iBAClClH,EAAuB3G,EAAe2G,qBAE1C,SAAS/L,EAAK1c,GAEZ,GAAIA,EAAK,MAAMA,CACjB,CAEA,SAASmvB,EAAUlnC,GACjB,OAAOA,EAAOmnC,WAAqC,mBAAjBnnC,EAAOwL,KAC3C,CAEA,SAASm8B,EAAU3nC,EAAQ46B,EAASsG,EAASjtB,GAC3CA,EAAWib,EAAKjb,GAChB,IAAI2zB,GAAS,EACb5nC,EAAO8xB,GAAG,SAAS,WACjB8V,GAAS,CACX,SACY7iC,IAARqiC,IAAmBA,EAAMt4B,EAAQ,oBACrCs4B,EAAIpnC,EAAQ,CACVs2B,SAAUsE,EACVr4B,SAAU2+B,IACT,SAAUnpB,GACX,GAAIA,EAAK,OAAO9D,EAAS8D,GACzB6vB,GAAS,EACT3zB,GACF,IACA,IAAI2kB,GAAY,EAChB,OAAO,SAAU7gB,GACf,IAAI6vB,IACAhP,EAGJ,OAFAA,GAAY,EAERsO,EAAUlnC,GAAgBA,EAAOwL,QACP,mBAAnBxL,EAAO22B,QAA+B32B,EAAO22B,eACxD1iB,EAAS8D,GAAO,IAAIyoB,EAAqB,QAC3C,CACF,CAEA,SAASviC,EAAKm8B,GACZA,GACF,CAEA,SAASpE,EAAKrtB,EAAMk/B,GAClB,OAAOl/B,EAAKqtB,KAAK6R,EACnB,CAEA,SAASC,EAAYpoC,GACnB,OAAKA,EAAQmB,OAC8B,mBAAhCnB,EAAQA,EAAQmB,OAAS,GAA0B4zB,EACvD/0B,EAAQ8Q,MAFaikB,CAG9B,CAEA,SAASsB,IACP,IAAK,IAAIiR,EAAOrlC,UAAUd,OAAQnB,EAAU,IAAImV,MAAMmyB,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAClFvnC,EAAQunC,GAAQtlC,UAAUslC,GAG5B,IAOInmC,EAPAmT,EAAW6zB,EAAYpoC,GAG3B,GAFImV,MAAMsQ,QAAQzlB,EAAQ,MAAKA,EAAUA,EAAQ,IAE7CA,EAAQmB,OAAS,EACnB,MAAM,IAAI6mC,EAAiB,WAI7B,IAAIK,EAAWroC,EAAQsI,KAAI,SAAUhI,EAAQyO,GAC3C,IAAImsB,EAAUnsB,EAAI/O,EAAQmB,OAAS,EAEnC,OAAO8mC,EAAU3nC,EAAQ46B,EADXnsB,EAAI,GACyB,SAAUsJ,GAC9CjX,IAAOA,EAAQiX,GAChBA,GAAKgwB,EAASjmC,QAAQ7D,GACtB28B,IACJmN,EAASjmC,QAAQ7D,GACjBgW,EAASnT,GACX,GACF,IACA,OAAOpB,EAAQsoC,OAAOhS,EACxB,CAEA3nB,EAAOjS,QAAU25B,CACjB,EAAE,CAAC,kBAAkB,GAAG,kBAAkB,KAAK,GAAG,CAAC,SAASjnB,EAAQT,EAAOjS,GAC3E,aAEA,IAAI6rC,EAAwBn5B,EAAQ,mBAAmBkoB,MAAMiR,sBAE7D,SAASC,EAAkBhmC,EAASm4B,EAAU8N,GAC5C,OAAgC,MAAzBjmC,EAAQu2B,cAAwBv2B,EAAQu2B,cAAgB4B,EAAWn4B,EAAQimC,GAAa,IACjG,CAEA,SAASvO,EAAiBlJ,EAAOxuB,EAASimC,EAAW9N,GACnD,IAAI+N,EAAMF,EAAkBhmC,EAASm4B,EAAU8N,GAE/C,GAAW,MAAPC,EAAa,CACf,IAAMxe,SAASwe,IAAQh8B,KAAKC,MAAM+7B,KAASA,GAAQA,EAAM,EAEvD,MAAM,IAAIH,EADC5N,EAAW8N,EAAY,gBACIC,GAGxC,OAAOh8B,KAAKC,MAAM+7B,EACpB,CAGA,OAAO1X,EAAM4J,WAAa,GAAK,KACjC,CAEAjsB,EAAOjS,QAAU,CACfw9B,iBAAkBA,EAEpB,EAAE,CAAC,kBAAkB,KAAK,GAAG,CAAC,SAAS9qB,EAAQT,EAAOjS,GACtDiS,EAAOjS,QAAU0S,EAAQ,UAAUkgB,YAEnC,EAAE,CAAC,OAAS,KAAK,GAAG,CAAC,SAASlgB,EAAQT,EAAOjS,GAsB7C,aAIA,IAAIsM,EAASoG,EAAQ,eAAepG,OAGhCmc,EAAanc,EAAOmc,YAAc,SAAUH,GAE9C,QADAA,EAAW,GAAKA,IACIA,EAASc,eAC3B,IAAK,MAAM,IAAK,OAAO,IAAK,QAAQ,IAAK,QAAQ,IAAK,SAAS,IAAK,SAAS,IAAK,OAAO,IAAK,QAAQ,IAAK,UAAU,IAAK,WAAW,IAAK,MACxI,OAAO,EACT,QACE,OAAO,EAEb,EAEA,SAAS6iB,EAAmB/L,GAC1B,IAAKA,EAAK,MAAO,OAEjB,IADA,IAAIgM,IAEF,OAAQhM,GACN,IAAK,OACL,IAAK,QACH,MAAO,OACT,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,MAAO,UACT,IAAK,SACL,IAAK,SACH,MAAO,SACT,IAAK,SACL,IAAK,QACL,IAAK,MACH,OAAOA,EACT,QACE,GAAIgM,EAAS,OACbhM,GAAO,GAAKA,GAAK9W,cACjB8iB,GAAU,EAGlB,CAIA,SAASC,EAAkBjM,GACzB,IAAIkM,EAAOH,EAAmB/L,GAC9B,GAAoB,iBAATkM,IAAsB9/B,EAAOmc,aAAeA,IAAeA,EAAWyX,IAAO,MAAM,IAAIv7B,MAAM,qBAAuBu7B,GAC/H,OAAOkM,GAAQlM,CACjB,CAMA,SAAS9C,EAAc9U,GAErB,IAAI4hB,EACJ,OAFArnC,KAAKylB,SAAW6jB,EAAkB7jB,GAE1BzlB,KAAKylB,UACX,IAAK,UACHzlB,KAAKwpC,KAAOC,EACZzpC,KAAKkS,IAAMw3B,EACXrC,EAAK,EACL,MACF,IAAK,OACHrnC,KAAK2pC,SAAWC,EAChBvC,EAAK,EACL,MACF,IAAK,SACHrnC,KAAKwpC,KAAOK,EACZ7pC,KAAKkS,IAAM43B,EACXzC,EAAK,EACL,MACF,QAGE,OAFArnC,KAAK4J,MAAQmgC,OACb/pC,KAAKkS,IAAM83B,GAGfhqC,KAAKiqC,SAAW,EAChBjqC,KAAKkqC,UAAY,EACjBlqC,KAAKmqC,SAAW1gC,EAAOqb,YAAYuiB,EACrC,CAmCA,SAAS+C,EAAcC,GACrB,OAAIA,GAAQ,IAAa,EAAWA,GAAQ,GAAM,EAAa,EAAWA,GAAQ,GAAM,GAAa,EAAWA,GAAQ,GAAM,GAAa,EACpIA,GAAQ,GAAM,GAAQ,GAAK,CACpC,CAKA,SAASC,EAAoB/Q,EAAM5U,EAAKnV,GACtC,IAAImY,EAAIhD,EAAI/iB,OAAS,EACrB,GAAI+lB,EAAInY,EAAG,OAAO,EAClB,IAAI63B,EAAK+C,EAAczlB,EAAIgD,IAC3B,OAAI0f,GAAM,GACJA,EAAK,IAAG9N,EAAK0Q,SAAW5C,EAAK,GAC1BA,KAEH1f,EAAInY,IAAa,IAAR63B,EAAkB,GACjCA,EAAK+C,EAAczlB,EAAIgD,MACb,GACJ0f,EAAK,IAAG9N,EAAK0Q,SAAW5C,EAAK,GAC1BA,KAEH1f,EAAInY,IAAa,IAAR63B,EAAkB,GACjCA,EAAK+C,EAAczlB,EAAIgD,MACb,GACJ0f,EAAK,IACI,IAAPA,EAAUA,EAAK,EAAO9N,EAAK0Q,SAAW5C,EAAK,GAE1CA,GAEF,CACT,CAUA,SAASkD,EAAoBhR,EAAM5U,EAAK/U,GACtC,GAAwB,MAAV,IAAT+U,EAAI,IAEP,OADA4U,EAAK0Q,SAAW,EACT,IAET,GAAI1Q,EAAK0Q,SAAW,GAAKtlB,EAAI/iB,OAAS,EAAG,CACvC,GAAwB,MAAV,IAAT+iB,EAAI,IAEP,OADA4U,EAAK0Q,SAAW,EACT,IAET,GAAI1Q,EAAK0Q,SAAW,GAAKtlB,EAAI/iB,OAAS,GACZ,MAAV,IAAT+iB,EAAI,IAEP,OADA4U,EAAK0Q,SAAW,EACT,GAGb,CACF,CAGA,SAASL,EAAajlB,GACpB,IAAI/U,EAAI5P,KAAKkqC,UAAYlqC,KAAKiqC,SAC1B1jC,EAAIgkC,EAAoBvqC,KAAM2kB,EAAK/U,GACvC,YAAU9J,IAANS,EAAwBA,EACxBvG,KAAKiqC,UAAYtlB,EAAI/iB,QACvB+iB,EAAInC,KAAKxiB,KAAKmqC,SAAUv6B,EAAG,EAAG5P,KAAKiqC,UAC5BjqC,KAAKmqC,SAAS9+B,SAASrL,KAAKylB,SAAU,EAAGzlB,KAAKkqC,aAEvDvlB,EAAInC,KAAKxiB,KAAKmqC,SAAUv6B,EAAG,EAAG+U,EAAI/iB,aAClC5B,KAAKiqC,UAAYtlB,EAAI/iB,QACvB,CAKA,SAAS4oC,EAAS7lB,EAAKnV,GACrB,IAAIwP,EAAQsrB,EAAoBtqC,KAAM2kB,EAAKnV,GAC3C,IAAKxP,KAAKiqC,SAAU,OAAOtlB,EAAItZ,SAAS,OAAQmE,GAChDxP,KAAKkqC,UAAYlrB,EACjB,IAAI9M,EAAMyS,EAAI/iB,QAAUod,EAAQhf,KAAKiqC,UAErC,OADAtlB,EAAInC,KAAKxiB,KAAKmqC,SAAU,EAAGj4B,GACpByS,EAAItZ,SAAS,OAAQmE,EAAG0C,EACjC,CAIA,SAASu4B,EAAQ9lB,GACf,IAAIpe,EAAIoe,GAAOA,EAAI/iB,OAAS5B,KAAK4J,MAAM+a,GAAO,GAC9C,OAAI3kB,KAAKiqC,SAAiB1jC,EAAI,IACvBA,CACT,CAMA,SAASkjC,EAAU9kB,EAAKnV,GACtB,IAAKmV,EAAI/iB,OAAS4N,GAAK,GAAM,EAAG,CAC9B,IAAIjJ,EAAIoe,EAAItZ,SAAS,UAAWmE,GAChC,GAAIjJ,EAAG,CACL,IAAIuoB,EAAIvoB,EAAEwM,WAAWxM,EAAE3E,OAAS,GAChC,GAAIktB,GAAK,OAAUA,GAAK,MAKtB,OAJA9uB,KAAKiqC,SAAW,EAChBjqC,KAAKkqC,UAAY,EACjBlqC,KAAKmqC,SAAS,GAAKxlB,EAAIA,EAAI/iB,OAAS,GACpC5B,KAAKmqC,SAAS,GAAKxlB,EAAIA,EAAI/iB,OAAS,GAC7B2E,EAAEyM,MAAM,GAAI,EAEvB,CACA,OAAOzM,CACT,CAIA,OAHAvG,KAAKiqC,SAAW,EAChBjqC,KAAKkqC,UAAY,EACjBlqC,KAAKmqC,SAAS,GAAKxlB,EAAIA,EAAI/iB,OAAS,GAC7B+iB,EAAItZ,SAAS,UAAWmE,EAAGmV,EAAI/iB,OAAS,EACjD,CAIA,SAAS8nC,EAAS/kB,GAChB,IAAIpe,EAAIoe,GAAOA,EAAI/iB,OAAS5B,KAAK4J,MAAM+a,GAAO,GAC9C,GAAI3kB,KAAKiqC,SAAU,CACjB,IAAI/3B,EAAMlS,KAAKkqC,UAAYlqC,KAAKiqC,SAChC,OAAO1jC,EAAIvG,KAAKmqC,SAAS9+B,SAAS,UAAW,EAAG6G,EAClD,CACA,OAAO3L,CACT,CAEA,SAASsjC,EAAWllB,EAAKnV,GACvB,IAAIH,GAAKsV,EAAI/iB,OAAS4N,GAAK,EAC3B,OAAU,IAANH,EAAgBsV,EAAItZ,SAAS,SAAUmE,IAC3CxP,KAAKiqC,SAAW,EAAI56B,EACpBrP,KAAKkqC,UAAY,EACP,IAAN76B,EACFrP,KAAKmqC,SAAS,GAAKxlB,EAAIA,EAAI/iB,OAAS,IAEpC5B,KAAKmqC,SAAS,GAAKxlB,EAAIA,EAAI/iB,OAAS,GACpC5B,KAAKmqC,SAAS,GAAKxlB,EAAIA,EAAI/iB,OAAS,IAE/B+iB,EAAItZ,SAAS,SAAUmE,EAAGmV,EAAI/iB,OAASyN,GAChD,CAEA,SAASy6B,EAAUnlB,GACjB,IAAIpe,EAAIoe,GAAOA,EAAI/iB,OAAS5B,KAAK4J,MAAM+a,GAAO,GAC9C,OAAI3kB,KAAKiqC,SAAiB1jC,EAAIvG,KAAKmqC,SAAS9+B,SAAS,SAAU,EAAG,EAAIrL,KAAKiqC,UACpE1jC,CACT,CAGA,SAASwjC,EAAYplB,GACnB,OAAOA,EAAItZ,SAASrL,KAAKylB,SAC3B,CAEA,SAASukB,EAAUrlB,GACjB,OAAOA,GAAOA,EAAI/iB,OAAS5B,KAAK4J,MAAM+a,GAAO,EAC/C,CA1NAxnB,EAAQo9B,cAAgBA,EA6BxBA,EAAcz7B,UAAU8K,MAAQ,SAAU+a,GACxC,GAAmB,IAAfA,EAAI/iB,OAAc,MAAO,GAC7B,IAAI2E,EACAiJ,EACJ,GAAIxP,KAAKiqC,SAAU,CAEjB,QAAUnkC,KADVS,EAAIvG,KAAK2pC,SAAShlB,IACG,MAAO,GAC5BnV,EAAIxP,KAAKiqC,SACTjqC,KAAKiqC,SAAW,CAClB,MACEz6B,EAAI,EAEN,OAAIA,EAAImV,EAAI/iB,OAAe2E,EAAIA,EAAIvG,KAAKwpC,KAAK7kB,EAAKnV,GAAKxP,KAAKwpC,KAAK7kB,EAAKnV,GAC/DjJ,GAAK,EACd,EAEAg0B,EAAcz7B,UAAUoT,IAAMu4B,EAG9BlQ,EAAcz7B,UAAU0qC,KAAOgB,EAG/BjQ,EAAcz7B,UAAU6qC,SAAW,SAAUhlB,GAC3C,GAAI3kB,KAAKiqC,UAAYtlB,EAAI/iB,OAEvB,OADA+iB,EAAInC,KAAKxiB,KAAKmqC,SAAUnqC,KAAKkqC,UAAYlqC,KAAKiqC,SAAU,EAAGjqC,KAAKiqC,UACzDjqC,KAAKmqC,SAAS9+B,SAASrL,KAAKylB,SAAU,EAAGzlB,KAAKkqC,WAEvDvlB,EAAInC,KAAKxiB,KAAKmqC,SAAUnqC,KAAKkqC,UAAYlqC,KAAKiqC,SAAU,EAAGtlB,EAAI/iB,QAC/D5B,KAAKiqC,UAAYtlB,EAAI/iB,MACvB,CAiKA,EAAE,CAAC,cAAc,KAAK,GAAG,CAAC,SAASiO,EAAQT,EAAOjS,IAClD,SAAW28B,IAAQ,WA0BnB,SAASsH,EAAWjG,EAAIlC,GACtB,GAAIyR,EAAO,iBACT,OAAOvP,EAGT,IAAIlK,GAAS,EACb,SAAS0Z,IACP,IAAK1Z,EAAQ,CACX,GAAIyZ,EAAO,oBACT,MAAM,IAAI5oC,MAAMm3B,GACPyR,EAAO,oBAChB/mC,EAAQinC,MAAM3R,GAEdt1B,EAAQC,KAAKq1B,GAEfhI,GAAS,CACX,CACA,OAAOkK,EAAG14B,MAAMzC,KAAM0C,UACxB,CAEA,OAAOioC,CACT,CAUA,SAASD,EAAQvb,GAEf,IACE,IAAK2K,EAAO+Q,aAAc,OAAO,CACnC,CAAE,MAAOh6B,GACP,OAAO,CACT,CACA,IAAIoW,EAAM6S,EAAO+Q,aAAa1b,GAC9B,OAAI,MAAQlI,GACyB,SAA9BpR,OAAOoR,GAAKV,aACrB,CA7DAnX,EAAOjS,QAAUikC,CA+DhB,GAAEpiC,KAAKgB,KAAM,GAAEhB,KAAKgB,UAAuB,IAAX,EAAA4Q,EAAyB,EAAAA,EAAyB,oBAAT2oB,KAAuBA,KAAyB,oBAAXsG,OAAyBA,OAAS,CAAC,EAElJ,EAAE,CAAC,GAAG,GAAG,CAAC,SAAShwB,EAAQT,EAAOjS,GAClC,aAEAF,OAAOC,eAAeC,EAAS,aAAc,CAC3CC,OAAO,IAETH,OAAOC,eAAeC,EAAS,KAAM,CACnCiX,YAAY,EACZ3V,IAAK,WACH,OAAOqsC,EAAGC,OACZ,IAEF9tC,OAAOC,eAAeC,EAAS,KAAM,CACnCiX,YAAY,EACZ3V,IAAK,WACH,OAAOusC,EAAID,OACb,IAEF9tC,OAAOC,eAAeC,EAAS,KAAM,CACnCiX,YAAY,EACZ3V,IAAK,WACH,OAAOwsC,EAAIF,OACb,IAEF9tC,OAAOC,eAAeC,EAAS,KAAM,CACnCiX,YAAY,EACZ3V,IAAK,WACH,OAAOysC,EAAIH,OACb,IAEF9tC,OAAOC,eAAeC,EAAS,MAAO,CACpCiX,YAAY,EACZ3V,IAAK,WACH,OAAO0sC,EAAKJ,OACd,IAEF9tC,OAAOC,eAAeC,EAAS,UAAW,CACxCiX,YAAY,EACZ3V,IAAK,WACH,OAAO2sC,EAASL,OAClB,IAEF9tC,OAAOC,eAAeC,EAAS,WAAY,CACzCiX,YAAY,EACZ3V,IAAK,WACH,OAAO4sC,EAAUN,OACnB,IAEF9tC,OAAOC,eAAeC,EAAS,YAAa,CAC1CiX,YAAY,EACZ3V,IAAK,WACH,OAAO6sC,EAAWP,OACpB,IAEF9tC,OAAOC,eAAeC,EAAS,QAAS,CACtCiX,YAAY,EACZ3V,IAAK,WACH,OAAO8sC,EAAOR,OAChB,IAGF,IAAID,EAAK/tC,EAAuB8S,EAAQ,YAEpCm7B,EAAMjuC,EAAuB8S,EAAQ,YAErCo7B,EAAMluC,EAAuB8S,EAAQ,YAErCq7B,EAAMnuC,EAAuB8S,EAAQ,YAErCs7B,EAAOpuC,EAAuB8S,EAAQ,aAEtCu7B,EAAWruC,EAAuB8S,EAAQ,iBAE1Cw7B,EAAYtuC,EAAuB8S,EAAQ,kBAE3Cy7B,EAAavuC,EAAuB8S,EAAQ,mBAE5C07B,EAASxuC,EAAuB8S,EAAQ,eAE5C,SAAS9S,EAAuBoB,GAAO,OAAOA,GAAOA,EAAIE,WAAaF,EAAM,CAAE4sC,QAAS5sC,EAAO,CAC9F,EAAE,CAAC,WAAW,GAAG,aAAa,GAAG,iBAAiB,GAAG,UAAU,GAAG,UAAU,GAAG,UAAU,GAAG,UAAU,GAAG,gBAAgB,GAAG,eAAe,KAAK,GAAG,CAAC,SAAS0R,EAAQT,EAAOjS,GAC5K,aA2BA,SAASquC,EAAIpgB,GACX,GAAqB,iBAAVA,EAAoB,CAC7B,MAAM6N,EAAMwS,SAASC,mBAAmBtgB,IAExCA,EAAQ,IAAItI,WAAWmW,EAAIr3B,QAE3B,IAAK,IAAI4N,EAAI,EAAGA,EAAIypB,EAAIr3B,SAAU4N,EAChC4b,EAAM5b,GAAKypB,EAAIlmB,WAAWvD,EAE9B,CAEA,OAAOm8B,EAAqBC,EAAWC,EAAazgB,GAAuB,EAAfA,EAAMxpB,QACpE,CAMA,SAAS+pC,EAAqBz4B,GAC5B,MAAM2Q,EAAS,GACTioB,EAA0B,GAAf54B,EAAMtR,OACjBmqC,EAAS,mBAEf,IAAK,IAAIv8B,EAAI,EAAGA,EAAIs8B,EAAUt8B,GAAK,EAAG,CACpC,MAAMka,EAAIxW,EAAM1D,GAAK,KAAOA,EAAI,GAAK,IAC/Bw8B,EAAM/jB,SAAS8jB,EAAOE,OAAOviB,IAAM,EAAI,IAAQqiB,EAAOE,OAAW,GAAJviB,GAAW,IAC9E7F,EAAO3hB,KAAK8pC,EACd,CAEA,OAAOnoB,CACT,CAMA,SAASqoB,EAAgBC,GACvB,OAAwC,IAAhCA,EAAe,KAAO,GAAK,GAAU,CAC/C,CAMA,SAASP,EAAWliB,EAAG3G,GAErB2G,EAAE3G,GAAO,IAAM,KAAQA,EAAM,GAC7B2G,EAAEwiB,EAAgBnpB,GAAO,GAAKA,EAC9B,IAAIjgB,EAAI,WACJ2S,GAAK,UACLqZ,GAAK,WACLtZ,EAAI,UAER,IAAK,IAAIhG,EAAI,EAAGA,EAAIka,EAAE9nB,OAAQ4N,GAAK,GAAI,CACrC,MAAM48B,EAAOtpC,EACPupC,EAAO52B,EACP62B,EAAOxd,EACPyd,EAAO/2B,EACb1S,EAAI0pC,EAAM1pC,EAAG2S,EAAGqZ,EAAGtZ,EAAGkU,EAAEla,GAAI,GAAI,WAChCgG,EAAIg3B,EAAMh3B,EAAG1S,EAAG2S,EAAGqZ,EAAGpF,EAAEla,EAAI,GAAI,IAAK,WACrCsf,EAAI0d,EAAM1d,EAAGtZ,EAAG1S,EAAG2S,EAAGiU,EAAEla,EAAI,GAAI,GAAI,WACpCiG,EAAI+2B,EAAM/2B,EAAGqZ,EAAGtZ,EAAG1S,EAAG4mB,EAAEla,EAAI,GAAI,IAAK,YACrC1M,EAAI0pC,EAAM1pC,EAAG2S,EAAGqZ,EAAGtZ,EAAGkU,EAAEla,EAAI,GAAI,GAAI,WACpCgG,EAAIg3B,EAAMh3B,EAAG1S,EAAG2S,EAAGqZ,EAAGpF,EAAEla,EAAI,GAAI,GAAI,YACpCsf,EAAI0d,EAAM1d,EAAGtZ,EAAG1S,EAAG2S,EAAGiU,EAAEla,EAAI,GAAI,IAAK,YACrCiG,EAAI+2B,EAAM/2B,EAAGqZ,EAAGtZ,EAAG1S,EAAG4mB,EAAEla,EAAI,GAAI,IAAK,UACrC1M,EAAI0pC,EAAM1pC,EAAG2S,EAAGqZ,EAAGtZ,EAAGkU,EAAEla,EAAI,GAAI,EAAG,YACnCgG,EAAIg3B,EAAMh3B,EAAG1S,EAAG2S,EAAGqZ,EAAGpF,EAAEla,EAAI,GAAI,IAAK,YACrCsf,EAAI0d,EAAM1d,EAAGtZ,EAAG1S,EAAG2S,EAAGiU,EAAEla,EAAI,IAAK,IAAK,OACtCiG,EAAI+2B,EAAM/2B,EAAGqZ,EAAGtZ,EAAG1S,EAAG4mB,EAAEla,EAAI,IAAK,IAAK,YACtC1M,EAAI0pC,EAAM1pC,EAAG2S,EAAGqZ,EAAGtZ,EAAGkU,EAAEla,EAAI,IAAK,EAAG,YACpCgG,EAAIg3B,EAAMh3B,EAAG1S,EAAG2S,EAAGqZ,EAAGpF,EAAEla,EAAI,IAAK,IAAK,UACtCsf,EAAI0d,EAAM1d,EAAGtZ,EAAG1S,EAAG2S,EAAGiU,EAAEla,EAAI,IAAK,IAAK,YACtCiG,EAAI+2B,EAAM/2B,EAAGqZ,EAAGtZ,EAAG1S,EAAG4mB,EAAEla,EAAI,IAAK,GAAI,YACrC1M,EAAI2pC,EAAM3pC,EAAG2S,EAAGqZ,EAAGtZ,EAAGkU,EAAEla,EAAI,GAAI,GAAI,WACpCgG,EAAIi3B,EAAMj3B,EAAG1S,EAAG2S,EAAGqZ,EAAGpF,EAAEla,EAAI,GAAI,GAAI,YACpCsf,EAAI2d,EAAM3d,EAAGtZ,EAAG1S,EAAG2S,EAAGiU,EAAEla,EAAI,IAAK,GAAI,WACrCiG,EAAIg3B,EAAMh3B,EAAGqZ,EAAGtZ,EAAG1S,EAAG4mB,EAAEla,GAAI,IAAK,WACjC1M,EAAI2pC,EAAM3pC,EAAG2S,EAAGqZ,EAAGtZ,EAAGkU,EAAEla,EAAI,GAAI,GAAI,WACpCgG,EAAIi3B,EAAMj3B,EAAG1S,EAAG2S,EAAGqZ,EAAGpF,EAAEla,EAAI,IAAK,EAAG,UACpCsf,EAAI2d,EAAM3d,EAAGtZ,EAAG1S,EAAG2S,EAAGiU,EAAEla,EAAI,IAAK,IAAK,WACtCiG,EAAIg3B,EAAMh3B,EAAGqZ,EAAGtZ,EAAG1S,EAAG4mB,EAAEla,EAAI,GAAI,IAAK,WACrC1M,EAAI2pC,EAAM3pC,EAAG2S,EAAGqZ,EAAGtZ,EAAGkU,EAAEla,EAAI,GAAI,EAAG,WACnCgG,EAAIi3B,EAAMj3B,EAAG1S,EAAG2S,EAAGqZ,EAAGpF,EAAEla,EAAI,IAAK,GAAI,YACrCsf,EAAI2d,EAAM3d,EAAGtZ,EAAG1S,EAAG2S,EAAGiU,EAAEla,EAAI,GAAI,IAAK,WACrCiG,EAAIg3B,EAAMh3B,EAAGqZ,EAAGtZ,EAAG1S,EAAG4mB,EAAEla,EAAI,GAAI,GAAI,YACpC1M,EAAI2pC,EAAM3pC,EAAG2S,EAAGqZ,EAAGtZ,EAAGkU,EAAEla,EAAI,IAAK,GAAI,YACrCgG,EAAIi3B,EAAMj3B,EAAG1S,EAAG2S,EAAGqZ,EAAGpF,EAAEla,EAAI,GAAI,GAAI,UACpCsf,EAAI2d,EAAM3d,EAAGtZ,EAAG1S,EAAG2S,EAAGiU,EAAEla,EAAI,GAAI,GAAI,YACpCiG,EAAIg3B,EAAMh3B,EAAGqZ,EAAGtZ,EAAG1S,EAAG4mB,EAAEla,EAAI,IAAK,IAAK,YACtC1M,EAAI4pC,EAAM5pC,EAAG2S,EAAGqZ,EAAGtZ,EAAGkU,EAAEla,EAAI,GAAI,GAAI,QACpCgG,EAAIk3B,EAAMl3B,EAAG1S,EAAG2S,EAAGqZ,EAAGpF,EAAEla,EAAI,GAAI,IAAK,YACrCsf,EAAI4d,EAAM5d,EAAGtZ,EAAG1S,EAAG2S,EAAGiU,EAAEla,EAAI,IAAK,GAAI,YACrCiG,EAAIi3B,EAAMj3B,EAAGqZ,EAAGtZ,EAAG1S,EAAG4mB,EAAEla,EAAI,IAAK,IAAK,UACtC1M,EAAI4pC,EAAM5pC,EAAG2S,EAAGqZ,EAAGtZ,EAAGkU,EAAEla,EAAI,GAAI,GAAI,YACpCgG,EAAIk3B,EAAMl3B,EAAG1S,EAAG2S,EAAGqZ,EAAGpF,EAAEla,EAAI,GAAI,GAAI,YACpCsf,EAAI4d,EAAM5d,EAAGtZ,EAAG1S,EAAG2S,EAAGiU,EAAEla,EAAI,GAAI,IAAK,WACrCiG,EAAIi3B,EAAMj3B,EAAGqZ,EAAGtZ,EAAG1S,EAAG4mB,EAAEla,EAAI,IAAK,IAAK,YACtC1M,EAAI4pC,EAAM5pC,EAAG2S,EAAGqZ,EAAGtZ,EAAGkU,EAAEla,EAAI,IAAK,EAAG,WACpCgG,EAAIk3B,EAAMl3B,EAAG1S,EAAG2S,EAAGqZ,EAAGpF,EAAEla,GAAI,IAAK,WACjCsf,EAAI4d,EAAM5d,EAAGtZ,EAAG1S,EAAG2S,EAAGiU,EAAEla,EAAI,GAAI,IAAK,WACrCiG,EAAIi3B,EAAMj3B,EAAGqZ,EAAGtZ,EAAG1S,EAAG4mB,EAAEla,EAAI,GAAI,GAAI,UACpC1M,EAAI4pC,EAAM5pC,EAAG2S,EAAGqZ,EAAGtZ,EAAGkU,EAAEla,EAAI,GAAI,GAAI,WACpCgG,EAAIk3B,EAAMl3B,EAAG1S,EAAG2S,EAAGqZ,EAAGpF,EAAEla,EAAI,IAAK,IAAK,WACtCsf,EAAI4d,EAAM5d,EAAGtZ,EAAG1S,EAAG2S,EAAGiU,EAAEla,EAAI,IAAK,GAAI,WACrCiG,EAAIi3B,EAAMj3B,EAAGqZ,EAAGtZ,EAAG1S,EAAG4mB,EAAEla,EAAI,GAAI,IAAK,WACrC1M,EAAI6pC,EAAM7pC,EAAG2S,EAAGqZ,EAAGtZ,EAAGkU,EAAEla,GAAI,GAAI,WAChCgG,EAAIm3B,EAAMn3B,EAAG1S,EAAG2S,EAAGqZ,EAAGpF,EAAEla,EAAI,GAAI,GAAI,YACpCsf,EAAI6d,EAAM7d,EAAGtZ,EAAG1S,EAAG2S,EAAGiU,EAAEla,EAAI,IAAK,IAAK,YACtCiG,EAAIk3B,EAAMl3B,EAAGqZ,EAAGtZ,EAAG1S,EAAG4mB,EAAEla,EAAI,GAAI,IAAK,UACrC1M,EAAI6pC,EAAM7pC,EAAG2S,EAAGqZ,EAAGtZ,EAAGkU,EAAEla,EAAI,IAAK,EAAG,YACpCgG,EAAIm3B,EAAMn3B,EAAG1S,EAAG2S,EAAGqZ,EAAGpF,EAAEla,EAAI,GAAI,IAAK,YACrCsf,EAAI6d,EAAM7d,EAAGtZ,EAAG1S,EAAG2S,EAAGiU,EAAEla,EAAI,IAAK,IAAK,SACtCiG,EAAIk3B,EAAMl3B,EAAGqZ,EAAGtZ,EAAG1S,EAAG4mB,EAAEla,EAAI,GAAI,IAAK,YACrC1M,EAAI6pC,EAAM7pC,EAAG2S,EAAGqZ,EAAGtZ,EAAGkU,EAAEla,EAAI,GAAI,EAAG,YACnCgG,EAAIm3B,EAAMn3B,EAAG1S,EAAG2S,EAAGqZ,EAAGpF,EAAEla,EAAI,IAAK,IAAK,UACtCsf,EAAI6d,EAAM7d,EAAGtZ,EAAG1S,EAAG2S,EAAGiU,EAAEla,EAAI,GAAI,IAAK,YACrCiG,EAAIk3B,EAAMl3B,EAAGqZ,EAAGtZ,EAAG1S,EAAG4mB,EAAEla,EAAI,IAAK,GAAI,YACrC1M,EAAI6pC,EAAM7pC,EAAG2S,EAAGqZ,EAAGtZ,EAAGkU,EAAEla,EAAI,GAAI,GAAI,WACpCgG,EAAIm3B,EAAMn3B,EAAG1S,EAAG2S,EAAGqZ,EAAGpF,EAAEla,EAAI,IAAK,IAAK,YACtCsf,EAAI6d,EAAM7d,EAAGtZ,EAAG1S,EAAG2S,EAAGiU,EAAEla,EAAI,GAAI,GAAI,WACpCiG,EAAIk3B,EAAMl3B,EAAGqZ,EAAGtZ,EAAG1S,EAAG4mB,EAAEla,EAAI,GAAI,IAAK,WACrC1M,EAAI8pC,EAAQ9pC,EAAGspC,GACf32B,EAAIm3B,EAAQn3B,EAAG42B,GACfvd,EAAI8d,EAAQ9d,EAAGwd,GACf92B,EAAIo3B,EAAQp3B,EAAG+2B,EACjB,CAEA,MAAO,CAACzpC,EAAG2S,EAAGqZ,EAAGtZ,EACnB,CAOA,SAASq2B,EAAa34B,GACpB,GAAqB,IAAjBA,EAAMtR,OACR,MAAO,GAGT,MAAMirC,EAAyB,EAAf35B,EAAMtR,OAChBiiB,EAAS,IAAIipB,YAAYZ,EAAgBW,IAE/C,IAAK,IAAIr9B,EAAI,EAAGA,EAAIq9B,EAASr9B,GAAK,EAChCqU,EAAOrU,GAAK,KAAsB,IAAf0D,EAAM1D,EAAI,KAAcA,EAAI,GAGjD,OAAOqU,CACT,CAOA,SAAS+oB,EAAQljB,EAAG/Y,GAClB,MAAMo8B,GAAW,MAAJrjB,IAAmB,MAAJ/Y,GAE5B,OADa+Y,GAAK,KAAO/Y,GAAK,KAAOo8B,GAAO,KAC9B,GAAW,MAANA,CACrB,CAMA,SAASC,EAActpB,EAAKupB,GAC1B,OAAOvpB,GAAOupB,EAAMvpB,IAAQ,GAAKupB,CACnC,CAMA,SAASC,EAAOC,EAAGrqC,EAAG2S,EAAGiU,EAAG7pB,EAAGyP,GAC7B,OAAOs9B,EAAQI,EAAcJ,EAAQA,EAAQ9pC,EAAGqqC,GAAIP,EAAQljB,EAAGpa,IAAKzP,GAAI4V,EAC1E,CAEA,SAAS+2B,EAAM1pC,EAAG2S,EAAGqZ,EAAGtZ,EAAGkU,EAAG7pB,EAAGyP,GAC/B,OAAO49B,EAAOz3B,EAAIqZ,GAAKrZ,EAAID,EAAG1S,EAAG2S,EAAGiU,EAAG7pB,EAAGyP,EAC5C,CAEA,SAASm9B,EAAM3pC,EAAG2S,EAAGqZ,EAAGtZ,EAAGkU,EAAG7pB,EAAGyP,GAC/B,OAAO49B,EAAOz3B,EAAID,EAAIsZ,GAAKtZ,EAAG1S,EAAG2S,EAAGiU,EAAG7pB,EAAGyP,EAC5C,CAEA,SAASo9B,EAAM5pC,EAAG2S,EAAGqZ,EAAGtZ,EAAGkU,EAAG7pB,EAAGyP,GAC/B,OAAO49B,EAAOz3B,EAAIqZ,EAAItZ,EAAG1S,EAAG2S,EAAGiU,EAAG7pB,EAAGyP,EACvC,CAEA,SAASq9B,EAAM7pC,EAAG2S,EAAGqZ,EAAGtZ,EAAGkU,EAAG7pB,EAAGyP,GAC/B,OAAO49B,EAAOpe,GAAKrZ,GAAKD,GAAI1S,EAAG2S,EAAGiU,EAAG7pB,EAAGyP,EAC1C,CAzNArS,OAAOC,eAAeC,EAAS,aAAc,CAC3CC,OAAO,IAETD,EAAQ4tC,aAAU,EAwNlB,IAAIqC,EAAW5B,EACfruC,EAAQ4tC,QAAUqC,CAClB,EAAE,CAAC,GAAG,GAAG,CAAC,SAASv9B,EAAQT,EAAOjS,GAClC,aAEAF,OAAOC,eAAeC,EAAS,aAAc,CAC3CC,OAAO,IAETD,EAAQ4tC,aAAU,EAClB,IAAIqC,EAAW,uCACfjwC,EAAQ4tC,QAAUqC,CAClB,EAAE,CAAC,GAAG,GAAG,CAAC,SAASv9B,EAAQT,EAAOjS,GAClC,aAEAF,OAAOC,eAAeC,EAAS,aAAc,CAC3CC,OAAO,IAETD,EAAQ4tC,aAAU,EAElB,IAAIM,EAAYtuC,EAAuB8S,EAAQ,kBAE/C,SAAS9S,EAAuBoB,GAAO,OAAOA,GAAOA,EAAIE,WAAaF,EAAM,CAAE4sC,QAAS5sC,EAAO,CAE9F,SAASuD,EAAM2rC,GACb,KAAK,EAAIhC,EAAUN,SAASsC,GAC1B,MAAM/7B,UAAU,gBAGlB,IAAIF,EACJ,MAAMmS,EAAM,IAAIT,WAAW,IAuB3B,OArBAS,EAAI,IAAMnS,EAAI6W,SAASolB,EAAKr6B,MAAM,EAAG,GAAI,OAAS,GAClDuQ,EAAI,GAAKnS,IAAM,GAAK,IACpBmS,EAAI,GAAKnS,IAAM,EAAI,IACnBmS,EAAI,GAAS,IAAJnS,EAETmS,EAAI,IAAMnS,EAAI6W,SAASolB,EAAKr6B,MAAM,EAAG,IAAK,OAAS,EACnDuQ,EAAI,GAAS,IAAJnS,EAETmS,EAAI,IAAMnS,EAAI6W,SAASolB,EAAKr6B,MAAM,GAAI,IAAK,OAAS,EACpDuQ,EAAI,GAAS,IAAJnS,EAETmS,EAAI,IAAMnS,EAAI6W,SAASolB,EAAKr6B,MAAM,GAAI,IAAK,OAAS,EACpDuQ,EAAI,GAAS,IAAJnS,EAGTmS,EAAI,KAAOnS,EAAI6W,SAASolB,EAAKr6B,MAAM,GAAI,IAAK,KAAO,cAAgB,IACnEuQ,EAAI,IAAMnS,EAAI,WAAc,IAC5BmS,EAAI,IAAMnS,IAAM,GAAK,IACrBmS,EAAI,IAAMnS,IAAM,GAAK,IACrBmS,EAAI,IAAMnS,IAAM,EAAI,IACpBmS,EAAI,IAAU,IAAJnS,EACHmS,CACT,CAEA,IAAI6pB,EAAW1rC,EACfvE,EAAQ4tC,QAAUqC,CAClB,EAAE,CAAC,gBAAgB,KAAK,GAAG,CAAC,SAASv9B,EAAQT,EAAOjS,GACpD,aAEAF,OAAOC,eAAeC,EAAS,aAAc,CAC3CC,OAAO,IAETD,EAAQ4tC,aAAU,EAClB,IAAIqC,EAAW,sHACfjwC,EAAQ4tC,QAAUqC,CAClB,EAAE,CAAC,GAAG,GAAG,CAAC,SAASv9B,EAAQT,EAAOjS,GAClC,aASA,IAAImwC,EAPJrwC,OAAOC,eAAeC,EAAS,aAAc,CAC3CC,OAAO,IAETD,EAAQ4tC,QAAUwC,EAKlB,MAAMC,EAAQ,IAAI1qB,WAAW,IAE7B,SAASyqB,IAEP,IAAKD,IAGHA,EAAoC,oBAAXG,QAA0BA,OAAOH,iBAAmBG,OAAOH,gBAAgB/rB,KAAKksB,SAA+B,oBAAbC,UAAgE,mBAA7BA,SAASJ,iBAAkCI,SAASJ,gBAAgB/rB,KAAKmsB,WAElOJ,GACH,MAAM,IAAIxrC,MAAM,4GAIpB,OAAOwrC,EAAgBE,EACzB,CACA,EAAE,CAAC,GAAG,GAAG,CAAC,SAAS39B,EAAQT,EAAOjS,GAClC,aASA,SAASsS,EAAE5P,EAAG6pB,EAAG/Y,EAAGg9B,GAClB,OAAQ9tC,GACN,KAAK,EACH,OAAO6pB,EAAI/Y,GAAK+Y,EAAIikB,EAEtB,KAAK,EAML,KAAK,EACH,OAAOjkB,EAAI/Y,EAAIg9B,EAJjB,KAAK,EACH,OAAOjkB,EAAI/Y,EAAI+Y,EAAIikB,EAAIh9B,EAAIg9B,EAKjC,CAEA,SAASC,EAAKlkB,EAAGra,GACf,OAAOqa,GAAKra,EAAIqa,IAAM,GAAKra,CAC7B,CAEA,SAASw+B,EAAKziB,GACZ,MAAM0iB,EAAI,CAAC,WAAY,WAAY,WAAY,YACzCC,EAAI,CAAC,WAAY,WAAY,WAAY,UAAY,YAE3D,GAAqB,iBAAV3iB,EAAoB,CAC7B,MAAM6N,EAAMwS,SAASC,mBAAmBtgB,IAExCA,EAAQ,GAER,IAAK,IAAI5b,EAAI,EAAGA,EAAIypB,EAAIr3B,SAAU4N,EAChC4b,EAAMlpB,KAAK+2B,EAAIlmB,WAAWvD,GAE9B,MAAYoG,MAAMsQ,QAAQkF,KAExBA,EAAQxV,MAAM9W,UAAUkU,MAAMhU,KAAKosB,IAGrCA,EAAMlpB,KAAK,KACX,MAAMu8B,EAAIrT,EAAMxpB,OAAS,EAAI,EACvBosC,EAAI7gC,KAAK8gC,KAAKxP,EAAI,IAClByP,EAAI,IAAIt4B,MAAMo4B,GAEpB,IAAK,IAAIx+B,EAAI,EAAGA,EAAIw+B,IAAKx+B,EAAG,CAC1B,MAAM+T,EAAM,IAAIupB,YAAY,IAE5B,IAAK,IAAInlB,EAAI,EAAGA,EAAI,KAAMA,EACxBpE,EAAIoE,GAAKyD,EAAU,GAAJ5b,EAAa,EAAJmY,IAAU,GAAKyD,EAAU,GAAJ5b,EAAa,EAAJmY,EAAQ,IAAM,GAAKyD,EAAU,GAAJ5b,EAAa,EAAJmY,EAAQ,IAAM,EAAIyD,EAAU,GAAJ5b,EAAa,EAAJmY,EAAQ,GAGnIumB,EAAE1+B,GAAK+T,CACT,CAEA2qB,EAAEF,EAAI,GAAG,IAA2B,GAApB5iB,EAAMxpB,OAAS,GAASuL,KAAKof,IAAI,EAAG,IACpD2hB,EAAEF,EAAI,GAAG,IAAM7gC,KAAKC,MAAM8gC,EAAEF,EAAI,GAAG,KACnCE,EAAEF,EAAI,GAAG,IAA2B,GAApB5iB,EAAMxpB,OAAS,GAAS,WAExC,IAAK,IAAI4N,EAAI,EAAGA,EAAIw+B,IAAKx+B,EAAG,CAC1B,MAAM2+B,EAAI,IAAIrB,YAAY,IAE1B,IAAK,IAAIx9B,EAAI,EAAGA,EAAI,KAAMA,EACxB6+B,EAAE7+B,GAAK4+B,EAAE1+B,GAAGF,GAGd,IAAK,IAAIA,EAAI,GAAIA,EAAI,KAAMA,EACzB6+B,EAAE7+B,GAAKs+B,EAAKO,EAAE7+B,EAAI,GAAK6+B,EAAE7+B,EAAI,GAAK6+B,EAAE7+B,EAAI,IAAM6+B,EAAE7+B,EAAI,IAAK,GAG3D,IAAIxM,EAAIirC,EAAE,GACNt4B,EAAIs4B,EAAE,GACNjf,EAAIif,EAAE,GACNv4B,EAAIu4B,EAAE,GACN9jC,EAAI8jC,EAAE,GAEV,IAAK,IAAIz+B,EAAI,EAAGA,EAAI,KAAMA,EAAG,CAC3B,MAAMzP,EAAIsN,KAAKC,MAAMkC,EAAI,IACnB8+B,EAAIR,EAAK9qC,EAAG,GAAK2M,EAAE5P,EAAG4V,EAAGqZ,EAAGtZ,GAAKvL,EAAI6jC,EAAEjuC,GAAKsuC,EAAE7+B,KAAO,EAC3DrF,EAAIuL,EACJA,EAAIsZ,EACJA,EAAI8e,EAAKn4B,EAAG,MAAQ,EACpBA,EAAI3S,EACJA,EAAIsrC,CACN,CAEAL,EAAE,GAAKA,EAAE,GAAKjrC,IAAM,EACpBirC,EAAE,GAAKA,EAAE,GAAKt4B,IAAM,EACpBs4B,EAAE,GAAKA,EAAE,GAAKjf,IAAM,EACpBif,EAAE,GAAKA,EAAE,GAAKv4B,IAAM,EACpBu4B,EAAE,GAAKA,EAAE,GAAK9jC,IAAM,CACtB,CAEA,MAAO,CAAC8jC,EAAE,IAAM,GAAK,IAAMA,EAAE,IAAM,GAAK,IAAMA,EAAE,IAAM,EAAI,IAAa,IAAPA,EAAE,GAAWA,EAAE,IAAM,GAAK,IAAMA,EAAE,IAAM,GAAK,IAAMA,EAAE,IAAM,EAAI,IAAa,IAAPA,EAAE,GAAWA,EAAE,IAAM,GAAK,IAAMA,EAAE,IAAM,GAAK,IAAMA,EAAE,IAAM,EAAI,IAAa,IAAPA,EAAE,GAAWA,EAAE,IAAM,GAAK,IAAMA,EAAE,IAAM,GAAK,IAAMA,EAAE,IAAM,EAAI,IAAa,IAAPA,EAAE,GAAWA,EAAE,IAAM,GAAK,IAAMA,EAAE,IAAM,GAAK,IAAMA,EAAE,IAAM,EAAI,IAAa,IAAPA,EAAE,GACxV,CAlGA9wC,OAAOC,eAAeC,EAAS,aAAc,CAC3CC,OAAO,IAETD,EAAQ4tC,aAAU,EAiGlB,IAAIqC,EAAWS,EACf1wC,EAAQ4tC,QAAUqC,CAClB,EAAE,CAAC,GAAG,GAAG,CAAC,SAASv9B,EAAQT,EAAOjS,GAClC,aAEAF,OAAOC,eAAeC,EAAS,aAAc,CAC3CC,OAAO,IAETD,EAAQ4tC,aAAU,EAElB,IAAIM,EAAYtuC,EAAuB8S,EAAQ,kBAE/C,SAAS9S,EAAuBoB,GAAO,OAAOA,GAAOA,EAAIE,WAAaF,EAAM,CAAE4sC,QAAS5sC,EAAO,CAM9F,MAAMkwC,EAAY,GAElB,IAAK,IAAI7+B,EAAI,EAAGA,EAAI,MAAOA,EACzB6+B,EAAUnsC,MAAMsN,EAAI,KAAOnE,SAAS,IAAI6c,OAAO,IAGjD,SAASlgB,EAAUub,EAAKsE,EAAS,GAG/B,MAAMwlB,GAAQgB,EAAU9qB,EAAIsE,EAAS,IAAMwmB,EAAU9qB,EAAIsE,EAAS,IAAMwmB,EAAU9qB,EAAIsE,EAAS,IAAMwmB,EAAU9qB,EAAIsE,EAAS,IAAM,IAAMwmB,EAAU9qB,EAAIsE,EAAS,IAAMwmB,EAAU9qB,EAAIsE,EAAS,IAAM,IAAMwmB,EAAU9qB,EAAIsE,EAAS,IAAMwmB,EAAU9qB,EAAIsE,EAAS,IAAM,IAAMwmB,EAAU9qB,EAAIsE,EAAS,IAAMwmB,EAAU9qB,EAAIsE,EAAS,IAAM,IAAMwmB,EAAU9qB,EAAIsE,EAAS,KAAOwmB,EAAU9qB,EAAIsE,EAAS,KAAOwmB,EAAU9qB,EAAIsE,EAAS,KAAOwmB,EAAU9qB,EAAIsE,EAAS,KAAOwmB,EAAU9qB,EAAIsE,EAAS,KAAOwmB,EAAU9qB,EAAIsE,EAAS,MAAMtB,cAM3f,KAAK,EAAI8kB,EAAUN,SAASsC,GAC1B,MAAM/7B,UAAU,+BAGlB,OAAO+7B,CACT,CAEA,IAAID,EAAWplC,EACf7K,EAAQ4tC,QAAUqC,CAClB,EAAE,CAAC,gBAAgB,KAAK,GAAG,CAAC,SAASv9B,EAAQT,EAAOjS,GACpD,aAEAF,OAAOC,eAAeC,EAAS,aAAc,CAC3CC,OAAO,IAETD,EAAQ4tC,aAAU,EAElB,IAAIuD,EAAOvxC,EAAuB8S,EAAQ,aAEtCy7B,EAAavuC,EAAuB8S,EAAQ,mBAEhD,SAAS9S,EAAuBoB,GAAO,OAAOA,GAAOA,EAAIE,WAAaF,EAAM,CAAE4sC,QAAS5sC,EAAO,CAM9F,IAAIowC,EAEAC,EAGAC,EAAa,EACbC,EAAa,EAEjB,SAASC,EAAG1rC,EAAS0hB,EAAKkD,GACxB,IAAIrY,EAAImV,GAAOkD,GAAU,EACzB,MAAMpS,EAAIkP,GAAO,IAAI/O,MAAM,IAE3B,IAAIg5B,GADJ3rC,EAAUA,GAAW,CAAC,GACH2rC,MAAQL,EACvBM,OAAgC/oC,IAArB7C,EAAQ4rC,SAAyB5rC,EAAQ4rC,SAAWL,EAInE,GAAY,MAARI,GAA4B,MAAZC,EAAkB,CACpC,MAAMC,EAAY7rC,EAAQoK,SAAWpK,EAAQsqC,KAAOe,EAAKvD,WAE7C,MAAR6D,IAEFA,EAAOL,EAAU,CAAgB,EAAfO,EAAU,GAAWA,EAAU,GAAIA,EAAU,GAAIA,EAAU,GAAIA,EAAU,GAAIA,EAAU,KAG3F,MAAZD,IAEFA,EAAWL,EAAiD,OAApCM,EAAU,IAAM,EAAIA,EAAU,IAE1D,CAMA,IAAIC,OAA0BjpC,IAAlB7C,EAAQ8rC,MAAsB9rC,EAAQ8rC,MAAQhiC,KAAKC,MAG3DgiC,OAA0BlpC,IAAlB7C,EAAQ+rC,MAAsB/rC,EAAQ+rC,MAAQN,EAAa,EAEvE,MAAMO,EAAKF,EAAQN,GAAcO,EAAQN,GAAc,IAavD,GAXIO,EAAK,QAA0BnpC,IAArB7C,EAAQ4rC,WACpBA,EAAWA,EAAW,EAAI,QAKvBI,EAAK,GAAKF,EAAQN,SAAiC3oC,IAAlB7C,EAAQ+rC,QAC5CA,EAAQ,GAINA,GAAS,IACX,MAAM,IAAIltC,MAAM,mDAGlB2sC,EAAaM,EACbL,EAAaM,EACbR,EAAYK,EAEZE,GAAS,YAET,MAAMG,GAA4B,KAAb,UAARH,GAA6BC,GAAS,WACnDv5B,EAAEjG,KAAO0/B,IAAO,GAAK,IACrBz5B,EAAEjG,KAAO0/B,IAAO,GAAK,IACrBz5B,EAAEjG,KAAO0/B,IAAO,EAAI,IACpBz5B,EAAEjG,KAAY,IAAL0/B,EAET,MAAMC,EAAMJ,EAAQ,WAAc,IAAQ,UAC1Ct5B,EAAEjG,KAAO2/B,IAAQ,EAAI,IACrB15B,EAAEjG,KAAa,IAAN2/B,EAET15B,EAAEjG,KAAO2/B,IAAQ,GAAK,GAAM,GAE5B15B,EAAEjG,KAAO2/B,IAAQ,GAAK,IAEtB15B,EAAEjG,KAAOq/B,IAAa,EAAI,IAE1Bp5B,EAAEjG,KAAkB,IAAXq/B,EAET,IAAK,IAAIx/B,EAAI,EAAGA,EAAI,IAAKA,EACvBoG,EAAEjG,EAAIH,GAAKu/B,EAAKv/B,GAGlB,OAAOsV,IAAO,EAAI2mB,EAAWP,SAASt1B,EACxC,CAEA,IAAI23B,EAAWuB,EACfxxC,EAAQ4tC,QAAUqC,CAClB,EAAE,CAAC,WAAW,GAAG,iBAAiB,KAAK,GAAG,CAAC,SAASv9B,EAAQT,EAAOjS,GACnE,aAEAF,OAAOC,eAAeC,EAAS,aAAc,CAC3CC,OAAO,IAETD,EAAQ4tC,aAAU,EAElB,IAAID,EAAK/tC,EAAuB8S,EAAQ,aAEpCu/B,EAAMryC,EAAuB8S,EAAQ,aAEzC,SAAS9S,EAAuBoB,GAAO,OAAOA,GAAOA,EAAIE,WAAaF,EAAM,CAAE4sC,QAAS5sC,EAAO,CAG9F,IAAIivC,GADO,EAAItC,EAAGC,SAAS,KAAM,GAAMqE,EAAIrE,SAE3C5tC,EAAQ4tC,QAAUqC,CAClB,EAAE,CAAC,WAAW,GAAG,WAAW,KAAK,GAAG,CAAC,SAASv9B,EAAQT,EAAOjS,GAC7D,aAEAF,OAAOC,eAAeC,EAAS,aAAc,CAC3CC,OAAO,IAETD,EAAQ4tC,QAAUqC,EAClBjwC,EAAQkyC,IAAMlyC,EAAQmyC,SAAM,EAE5B,IAAIhE,EAAavuC,EAAuB8S,EAAQ,mBAE5C07B,EAASxuC,EAAuB8S,EAAQ,eAE5C,SAAS9S,EAAuBoB,GAAO,OAAOA,GAAOA,EAAIE,WAAaF,EAAM,CAAE4sC,QAAS5sC,EAAO,CAE9F,SAASoxC,EAAcplB,GACrBA,EAAMshB,SAASC,mBAAmBvhB,IAElC,MAAMiB,EAAQ,GAEd,IAAK,IAAI5b,EAAI,EAAGA,EAAI2a,EAAIvoB,SAAU4N,EAChC4b,EAAMlpB,KAAKioB,EAAIpX,WAAWvD,IAG5B,OAAO4b,CACT,CAEA,MAAMkkB,EAAM,uCACZnyC,EAAQmyC,IAAMA,EACd,MAAMD,EAAM,uCAGZ,SAASjC,EAASje,EAAM2G,EAAS0Z,GAC/B,SAASC,EAAaryC,EAAOsyC,EAAW/qB,EAAKkD,GAS3C,GARqB,iBAAVzqB,IACTA,EAAQmyC,EAAcnyC,IAGC,iBAAdsyC,IACTA,GAAY,EAAInE,EAAOR,SAAS2E,IAGT,KAArBA,EAAU9tC,OACZ,MAAM0P,UAAU,oEAMlB,IAAI8Z,EAAQ,IAAItI,WAAW,GAAK1lB,EAAMwE,QAOtC,GANAwpB,EAAMlsB,IAAIwwC,GACVtkB,EAAMlsB,IAAI9B,EAAOsyC,EAAU9tC,QAC3BwpB,EAAQokB,EAASpkB,GACjBA,EAAM,GAAgB,GAAXA,EAAM,GAAY0K,EAC7B1K,EAAM,GAAgB,GAAXA,EAAM,GAAY,IAEzBzG,EAAK,CACPkD,EAASA,GAAU,EAEnB,IAAK,IAAIrY,EAAI,EAAGA,EAAI,KAAMA,EACxBmV,EAAIkD,EAASrY,GAAK4b,EAAM5b,GAG1B,OAAOmV,CACT,CAEA,OAAO,EAAI2mB,EAAWP,SAAS3f,EACjC,CAGA,IACEqkB,EAAatgB,KAAOA,CACtB,CAAE,MAAOrW,GAAM,CAKf,OAFA22B,EAAaH,IAAMA,EACnBG,EAAaJ,IAAMA,EACZI,CACT,CAhDAtyC,EAAQkyC,IAAMA,CAiDd,EAAE,CAAC,aAAa,GAAG,iBAAiB,KAAK,GAAG,CAAC,SAASx/B,EAAQT,EAAOjS,GACrE,aAEAF,OAAOC,eAAeC,EAAS,aAAc,CAC3CC,OAAO,IAETD,EAAQ4tC,aAAU,EAElB,IAAIuD,EAAOvxC,EAAuB8S,EAAQ,aAEtCy7B,EAAavuC,EAAuB8S,EAAQ,mBAEhD,SAAS9S,EAAuBoB,GAAO,OAAOA,GAAOA,EAAIE,WAAaF,EAAM,CAAE4sC,QAAS5sC,EAAO,CAE9F,SAASihB,EAAGnc,EAAS0hB,EAAKkD,GAGxB,MAAM8nB,GAFN1sC,EAAUA,GAAW,CAAC,GAEDoK,SAAWpK,EAAQsqC,KAAOe,EAAKvD,WAMpD,GAHA4E,EAAK,GAAe,GAAVA,EAAK,GAAY,GAC3BA,EAAK,GAAe,GAAVA,EAAK,GAAY,IAEvBhrB,EAAK,CACPkD,EAASA,GAAU,EAEnB,IAAK,IAAIrY,EAAI,EAAGA,EAAI,KAAMA,EACxBmV,EAAIkD,EAASrY,GAAKmgC,EAAKngC,GAGzB,OAAOmV,CACT,CAEA,OAAO,EAAI2mB,EAAWP,SAAS4E,EACjC,CAEA,IAAIvC,EAAWhuB,EACfjiB,EAAQ4tC,QAAUqC,CAClB,EAAE,CAAC,WAAW,GAAG,iBAAiB,KAAK,GAAG,CAAC,SAASv9B,EAAQT,EAAOjS,GACnE,aAEAF,OAAOC,eAAeC,EAAS,aAAc,CAC3CC,OAAO,IAETD,EAAQ4tC,aAAU,EAElB,IAAID,EAAK/tC,EAAuB8S,EAAQ,aAEpC+/B,EAAO7yC,EAAuB8S,EAAQ,cAE1C,SAAS9S,EAAuBoB,GAAO,OAAOA,GAAOA,EAAIE,WAAaF,EAAM,CAAE4sC,QAAS5sC,EAAO,CAG9F,IAAIivC,GADO,EAAItC,EAAGC,SAAS,KAAM,GAAM6E,EAAK7E,SAE5C5tC,EAAQ4tC,QAAUqC,CAClB,EAAE,CAAC,YAAY,GAAG,WAAW,KAAK,GAAG,CAAC,SAASv9B,EAAQT,EAAOjS,GAC9D,aAEAF,OAAOC,eAAeC,EAAS,aAAc,CAC3CC,OAAO,IAETD,EAAQ4tC,aAAU,EAElB,IAAI8E,EAAS9yC,EAAuB8S,EAAQ,eAE5C,SAAS9S,EAAuBoB,GAAO,OAAOA,GAAOA,EAAIE,WAAaF,EAAM,CAAE4sC,QAAS5sC,EAAO,CAE9F,SAAS2xC,EAASzC,GAChB,MAAuB,iBAATA,GAAqBwC,EAAO9E,QAAQ7/B,KAAKmiC,EACzD,CAEA,IAAID,EAAW0C,EACf3yC,EAAQ4tC,QAAUqC,CAClB,EAAE,CAAC,aAAa,KAAK,GAAG,CAAC,SAASv9B,EAAQT,EAAOjS,GACjD,aAEAF,OAAOC,eAAeC,EAAS,aAAc,CAC3CC,OAAO,IAETD,EAAQ4tC,aAAU,EAElB,IAAIM,EAAYtuC,EAAuB8S,EAAQ,kBAE/C,SAAS9S,EAAuBoB,GAAO,OAAOA,GAAOA,EAAIE,WAAaF,EAAM,CAAE4sC,QAAS5sC,EAAO,CAE9F,SAAS23B,EAAQuX,GACf,KAAK,EAAIhC,EAAUN,SAASsC,GAC1B,MAAM/7B,UAAU,gBAGlB,OAAO2W,SAASolB,EAAKnlB,OAAO,GAAI,GAAI,GACtC,CAEA,IAAIklB,EAAWtX,EACf34B,EAAQ4tC,QAAUqC,CAClB,EAAE,CAAC,gBAAgB,MAAM,CAAC,EAAE,CAAC,GA3zT+U,CA2zT3U,iCCzzTjC,IAAIrwC,EAAyB,EAAQ,OAErCE,OAAOC,eAAeC,EAAS,aAAc,CAC3CC,OAAO,IAETD,EAAiB,QAIjB,SAAuB4yC,GACrB,GAAKA,EAKE,KAAKA,EAAShyB,QAAQ,KAAM,CACjC,IAAIiyB,EAAwBD,EAASx0B,MAAM,KAAK00B,UAC5CC,GAAyB,EAAIC,EAAmB,SAAGH,GAIvD,MAAO,CACLI,QAAS,IAJeF,EAAuB,GAK/C/gB,KAJiB+gB,EAAuBl9B,MAAM,GAI3Bi9B,UAAUv7B,KAAK,KAEtC,CACE,MAAO,CACL07B,QAAS,GACTjhB,KAAM4gB,EAEV,CAnBE,MAAO,CACLK,QAAS,GACTjhB,KAAM,GAkBZ,EAxBA,IAAIghB,EAAYpzC,EAAuB,EAAQ,oCCP/CE,OAAOC,eAAeC,EAAS,aAAc,CAC3CC,OAAO,IAETD,EAAiB,aAAI,EAWrB,IAAIiwC,EATJ,WACE,IAAIiD,EAAW,CAAC,EAKhB,OAJAA,EAASxjC,QAAU,IAAIvG,SAAQ,SAAUxB,EAASwF,GAChD+lC,EAAS/lC,OAASA,EAClB+lC,EAASvrC,QAAUA,CACrB,IACOurC,CACT,EAGAlzC,EAAiB,QAAIiwC,+CCfjBrwC,EAAyB,EAAQ,OAEjCC,EAAU,EAAQ,OAEtBC,OAAOC,eAAeC,EAAS,aAAc,CAC3CC,OAAO,IAETH,OAAOC,eAAeC,EAAS,sBAAuB,CACpDiX,YAAY,EACZ3V,IAAK,WACH,OAAO6xC,EAAqBjzC,mBAC9B,IAEFF,EAAQozC,WAAapzC,EAAQiG,sBAAmB,EAEhD,IAAI9F,EAA4BP,EAAuB,EAAQ,MAE3Da,EAAmBb,EAAuB,EAAQ,QAElDc,EAAgBd,EAAuB,EAAQ,QAE/Ce,EAAmBf,EAAuB,EAAQ,QAEtD,EAAQ,OAER,EAAQ,OAER,IAAIgB,EAAmB,EAAQ,OAE3BE,EAAc,EAAQ,OAEtBuyC,EAAS,EAAQ,OAEjBC,EA8CJ,SAAiCtyC,EAAKC,GAAe,IAAKA,GAAeD,GAAOA,EAAIE,WAAc,OAAOF,EAAO,GAAY,OAARA,GAAiC,WAAjBnB,EAAQmB,IAAoC,mBAARA,EAAsB,MAAO,CAAE,QAAWA,GAAS,IAAIG,EAAQC,EAAyBH,GAAc,GAAIE,GAASA,EAAME,IAAIL,GAAQ,OAAOG,EAAMG,IAAIN,GAAQ,IAAIO,EAAS,CAAC,EAAOC,EAAwB1B,OAAOC,gBAAkBD,OAAO2B,yBAA0B,IAAK,IAAIC,KAAOV,EAAO,GAAY,YAARU,GAAqB5B,OAAO6B,UAAUC,eAAeC,KAAKb,EAAKU,GAAM,CAAE,IAAII,EAAON,EAAwB1B,OAAO2B,yBAAyBT,EAAKU,GAAO,KAAUI,IAASA,EAAKR,KAAOQ,EAAKC,KAAQjC,OAAOC,eAAewB,EAAQG,EAAKI,GAAgBP,EAAOG,GAAOV,EAAIU,EAAQ,CAAIH,EAAgB,QAAIP,EAASG,GAASA,EAAMY,IAAIf,EAAKO,GAAW,OAAOA,CAAQ,CA9CzxBS,CAAwB,EAAQ,QAEjD,EAAQ,OAER,EAAQ,OAER,EAAQ,OAER,EAAQ,OAER,EAAQ,OAER,EAAQ,OAER,EAAQ,OAER,EAAQ,OAER,EAAQ,OAER,EAAQ,OAER,EAAQ,OAER,EAAQ,OAER,EAAQ,OAER,EAAQ,OAER,EAAQ,OAER,EAAQ,OAER,EAAQ,OAER,EAAQ,MAER,IAAIuxC,EAAmB3zC,EAAuB,EAAQ,QAElDuzC,EAAuB,EAAQ,MAE/B9wC,EAAY,CAAC,cAEjB,SAASjB,EAAyBH,GAAe,GAAuB,mBAAZqB,QAAwB,OAAO,KAAM,IAAIC,EAAoB,IAAID,QAAeE,EAAmB,IAAIF,QAAW,OAAQlB,EAA2B,SAAkCH,GAAe,OAAOA,EAAcuB,EAAmBD,CAAmB,GAAGtB,EAAc,CAI9U,SAASsxB,EAAQ+U,EAAQsB,GAAkB,IAAIppB,EAAO1f,OAAO0f,KAAK8nB,GAAS,GAAIxnC,OAAO0yB,sBAAuB,CAAE,IAAIqW,EAAU/oC,OAAO0yB,sBAAsB8U,GAAasB,IAAkBC,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOjpC,OAAO2B,yBAAyB6lC,EAAQyB,GAAK9xB,UAAY,KAAMuI,EAAKza,KAAKO,MAAMka,EAAMqpB,EAAU,CAAE,OAAOrpB,CAAM,CAExV,SAASwpB,EAAc3lB,GAAU,IAAK,IAAIhR,EAAI,EAAGA,EAAI9M,UAAUd,OAAQ4N,IAAK,CAAE,IAAIynB,EAAyB,MAAhBv0B,UAAU8M,GAAa9M,UAAU8M,GAAK,CAAC,EAAOA,EAAI,EAAKkgB,EAAQzyB,OAAOg6B,IAAS,GAAMp0B,SAAQ,SAAUhE,IAAO,EAAIf,EAA0B,SAAG0iB,EAAQ3hB,EAAKo4B,EAAOp4B,GAAO,IAAe5B,OAAOmpC,0BAA6BnpC,OAAOopC,iBAAiB7lB,EAAQvjB,OAAOmpC,0BAA0BnP,IAAmBvH,EAAQzyB,OAAOg6B,IAASp0B,SAAQ,SAAUhE,GAAO5B,OAAOC,eAAesjB,EAAQ3hB,EAAK5B,OAAO2B,yBAAyBq4B,EAAQp4B,GAAO,GAAM,CAAE,OAAO2hB,CAAQ,CAEtiB,IAEIpd,EACJjG,EAAQiG,iBAAmBA,EAE3B,SAAWA,GACTA,EAAiBA,EAAgC,cAAI,GAAK,gBAC1DA,EAAiBA,EAA6B,WAAI,GAAK,aACvDA,EAAiBA,EAAyB,OAAI,GAAK,SACnDA,EAAiBA,EAA+B,aAAI,GAAK,eACzDA,EAAiBA,EAAkC,gBAAI,GAAK,kBAC5DA,EAAiBA,EAAwB,MAAI,GAAK,OACnD,CAPD,CAOGA,IAAqBjG,EAAQiG,iBAAmBA,EAAmB,CAAC,IAEvE,IAAIutC,EAAoB,SAA2B1Z,EAAQ2Z,GACzD,IAAIC,EAAiB,WACnB,MAAM,IAAI/uC,MAAM,kBAClB,EAuBA,OAAO7E,OAAO6zC,QAJF,SAAeC,GACzB,OAAa9Z,EAAO8Z,GAjBI,OAAE,SAAUj4B,GAClC,GAAmB,MAAfA,EAAI/R,OAAgB,CACtB,IAAIiqC,EAAkBl4B,EAAIm4B,IAAIC,kBAAkB,eAC5CC,EAAa11B,OAAOu1B,GAExB,IAAKlhB,MAAMqhB,GACT,OAAOlzC,EAAYsG,WAAW6sC,MAAMD,EAAYP,GAAWS,SAAQ,SAAUxgC,GAC3E,OAAO5S,EAAYsG,WAAkB,MAAEuU,EAAK83B,EAC9C,GAEJ,CAEA,OAAO3yC,EAAYsG,WAAkB,MAAEuU,EAAK83B,EAC9C,GAKF,GAE4B,CAC1BnyC,IAAK,SAAaiK,EAAK/B,GACrB,OAAOkqC,GACT,EACAS,KAAM,SAAc5oC,EAAKgI,EAAM/J,GAC7B,OAAOkqC,GACT,EACAU,IAAK,SAAa7oC,EAAKgI,EAAM/J,GAC3B,OAAOkqC,GACT,EACAW,MAAO,SAAe9oC,EAAKgI,EAAM/J,GAC/B,OAAOkqC,GACT,EACA,OAAU,SAAiBnoC,EAAK/B,GAC9B,OAAOkqC,GACT,EACAY,QAAS,SAAiB/oC,EAAK/B,GAC7B,OAAOkqC,GACT,GAEJ,EAaIa,EAAuBC,IAGvBC,EAAoB,IAAI9vC,MAAM,iBAC9B+vC,EAAyB,IAAI/vC,MAAM,sBACnCgwC,EAAuB,IAAIhwC,MAAM,qBACjCiwC,EACG,SAAa1pC,GAGhB,IAFA,IAAI2pC,EAEKjK,EAAOrlC,UAAUd,OAAQqwC,EAAiB,IAAIr8B,MAAMmyB,EAAO,EAAIA,EAAO,EAAI,GAAIC,EAAO,EAAGA,EAAOD,EAAMC,IAC5GiK,EAAejK,EAAO,GAAKtlC,UAAUslC,GAGjB,oBAAXnI,QAA0BA,OAAqB,cAAKx3B,IAAU2pC,EAAWruC,GAASqwB,IAAIvxB,MAAMuvC,EAAU,CAAC3pC,GAASzC,OAAOqsC,GACpI,EAGE1B,EAA0B,WAC5B,SAASA,EAAWttC,GA9BH,IAAsBivC,EACnCtB,GA8BF,EAAIhzC,EAA0B,SAAGoC,KAAMuwC,IACvC,EAAIzyC,EAA0B,SAAGkC,KAAM,oBAAqB,IAAIjC,EAAiBoF,gBAAgBC,EAAiBC,iBAClH,EAAIvF,EAA0B,SAAGkC,KAAM,SAAU,sDACjD,EAAIlC,EAA0B,SAAGkC,KAAM,YAAa,KACpD,EAAIlC,EAA0B,SAAGkC,KAAM,YAAa,KACpD,EAAIlC,EAA0B,SAAGkC,KAAM,UAAW,MAClD,EAAIlC,EAA0B,SAAGkC,KAAM,kBAAmB,KAC1DA,KAAKmyC,OAASlvC,EAAQkvC,OACtBnyC,KAAK6D,MAAQZ,EAAQkvC,QAAUlvC,EAAQY,MACvC7D,KAAKsf,gBAAmCxZ,IAAtB7C,EAAQqc,WAAiCrc,EAAQqc,YAAmC,oBAAdI,gBAA2C5Z,IAAd4Z,UAEjHzc,EAAQmvC,6BAA+BnvC,EAAQmvC,4BAA4BC,SACM,oBAA/Ep1C,OAAO6B,UAAUuM,SAASrM,KAAKiE,EAAQmvC,4BAA4BC,QACrEryC,KAAKsyC,0BAA4BrvC,EAAQmvC,4BAA4BC,OAErE1uC,EAAQC,KAAK,+GAIbX,EAAQe,SACVhE,KAAKgE,OAASf,EAAQe,QAGpBf,EAAQgB,iBACVjE,KAAKiE,eAAiBhB,EAAQgB,gBAG5BhB,EAAQsvC,YACVvyC,KAAKuyC,UAAYtvC,EAAQsvC,WAGvBtvC,EAAQuvC,YACNvvC,EAAQY,OAASZ,EAAQgB,eAC3BjE,KAAKwyC,UAAYvvC,EAAQuvC,UAEzB7uC,EAAQC,KAAK,+FAIOkC,IAApB7C,EAAQoyB,UACVr1B,KAAKq1B,QAAUpyB,EAAQoyB,SAGzBr1B,KAAKyyC,QAAU,IAAgDzyC,KAAKq1B,QACpEr1B,KAAKkE,UAAYlE,KAAKmE,YAAYlB,EAAQmB,UAC1CpE,KAAKkyC,SA1EA,CACLtB,UAFEA,GADmCsB,EA4ERjvC,GA3EN2tC,WAAaJ,EAAOkC,MAG3CC,KAAMhC,EAAkBuB,EAASS,MAAQ10C,EAAYsG,WAAWouC,KAAM/B,GACtElxB,UAAWwyB,EAASxyB,WAAaA,UACjCrS,OAAQ6kC,EAAS7kC,QAAUF,KAAKE,QAuEhC,IAAIulC,IAA0B3vC,EAAQ4vC,gBAElCD,EAnE2B,SAoEU,IAA5B3vC,EAAQ4vC,iBACjBlvC,EAAQC,KAAK,2CAA2CgC,OAAO3C,EAAQ4vC,gBAAiB,4DAG1F7yC,KAAK6yC,gBAAkBD,EAGzB5yC,KAAK8yC,uBAAyB9yC,KAAK+yC,4BAA4B3vC,EAAiBW,aAAcX,EAAiB+D,gBAAiB,GAChInH,KAAKsE,WAAatE,KAAKsf,UAAYtf,KAAKgzC,qBAAuBhzC,KAAKizC,uBAAuBjuC,OAC7F,CA6iBA,OAziBA,EAAInH,EAAuB,SAAG0yC,EAAY,CAAC,CACzC1xC,IAAK,kBACLzB,MAAO,WACL,IAAIuF,EAAQ3C,KAERiwB,EAAOvtB,UAAUd,OAAS,QAAsBkE,IAAjBpD,UAAU,IAAmBA,UAAU,GACtEwwC,EAAMlzC,KAAKE,kBAAkBmxC,SAAQ,SAAU8B,GACjD,OAAIA,IAAqB/vC,EAAiBC,eACxCV,EAAMzC,kBAAkBmB,KAAK+B,EAAiB0J,YAG1CnK,EAAMkB,OAASlB,EAAM6vC,WACvB7vC,EAAMzC,kBAAkBmB,KAAK+B,EAAiBoH,QAEvCvM,EAAYsG,WAAW6uC,GAAGD,EAAkBxwC,EAAMuvC,SAAStB,YAE3DjuC,EAAM0wC,oBAAwB,IAAE,SAAU1nC,GAC/ChJ,EAAMsB,eAAiB0H,EAAa1H,eACpCtB,EAAMkB,MAAQlB,EAAMwvC,QAAUxmC,EAAa9H,MAC3ClB,EAAM6vC,UAAY7mC,EAAa6mC,UAC/B7vC,EAAM2wC,mBAAqB3nC,EAAa2nC,mBACnC3wC,EAAMwvC,QAAQxvC,EAAM4wC,mBAEzB5wC,EAAMzC,kBAAkBmB,KAAK+B,EAAiBoH,OAChD,IAAG,SAAU3I,GACXc,EAAMzC,kBAAkBmB,KAAK+B,EAAiB+D,gBAChD,IAAG4B,KAAI,SAAU8H,GACf,OAAOsiC,CACT,KAGKl1C,EAAYsG,WAAW6uC,GAAGD,EAAkBxwC,EAAMuvC,SAAStB,UAEtE,IAAG3K,QAAO,SAAUkN,GAClB,OAAOA,GAAoB/vC,EAAiBC,eAAiB8vC,GAAoB/vC,EAAiB0J,UACpG,IAAGukC,SAAQ,SAAU8B,GACnB,OAAQA,GACN,KAAK/vC,EAAiBoC,MACpB,OAAOvH,EAAYsG,WAAkB,MAAEstC,EAAwBlvC,EAAMuvC,SAAStB,WAEhF,KAAKxtC,EAAiB+D,gBACpB,OAAOlJ,EAAYsG,WAAkB,MAAEutC,EAAsBnvC,EAAMuvC,SAAStB,WAE9E,KAAKxtC,EAAiBW,aAGtB,QACE,OAAO9F,EAAYsG,WAAW6uC,GAAGD,EAAkBxwC,EAAMuvC,SAAStB,WAExE,IACA,OAAO3gB,EAAOijB,EAAIM,KAAK,GAAKN,CAC9B,GACC,CACDr0C,IAAK,8BACLzB,MAAO,SAAqCq2C,EAAsBC,GAChE,IAAIC,EAAcjxC,UAAUd,OAAS,QAAsBkE,IAAjBpD,UAAU,GAAmBA,UAAU,GAAK,EACtFixC,IACA,IAAIC,EAAW,EACXC,EAAa,KACjB,OAAO,SAAU9sC,GACf,OAAIA,IAAW0sC,GAAwBI,IAAe9sC,GAAU6sC,GAAYD,GAC1EC,EAAW,EACJF,IAGTE,IACAC,EAAa9sC,EACNA,EACT,CACF,GACC,CACDlI,IAAK,eACLzB,MAAO,WACL,IAAI+1C,EAAmBnzC,KAAKE,kBAAkBqF,WAC1C4tC,GAAoB/vC,EAAiBoC,OAAS2tC,GAAoB/vC,EAAiB+D,iBAAiBnH,KAAKE,kBAAkBmB,KAAK+B,EAAiBW,cACrJ,IAAI+vC,EAA4B9zC,KAAK8yC,uBAAuB9yC,KAAKE,kBAAkBqF,YACnFvF,KAAKE,kBAAkBmB,KAAKyyC,EAC9B,GACC,CACDj1C,IAAK,oBACLzB,MAAO,WACL,IAAI8F,EAASlD,KAGT0I,EAAM1I,KAAKiE,eAAiB,GAAG2B,OAAO5F,KAAKgE,OAAQ,mBAAmB4B,OAAO5F,KAAKiE,eAAgB,eAAe2B,OAAO5F,KAAKuyC,WAAa,GAAG3sC,OAAO5F,KAAKgE,OAAQ,kBACjK0C,EAAS1G,KAAKiE,eAAiB,MAAQ,OACvCyM,EAAO1Q,KAAKiE,oBAAiB6B,EAAY,CAC3CiuC,KAAM,CACJnsC,GAAI5H,KAAKg0C,2BAEX3B,OAAQryC,KAAKsyC,2BAEf,OAAOtyC,KAAKkyC,SAASS,KAAK,CACxBjsC,OAAQA,EACRgC,IAAKA,EACLgI,KAAMA,EACN2kB,QAASr1B,KAAKq1B,QACd1uB,QAASw/B,EAAc,CACrB,OAAU,mBACV,eAAgB,oBACfnmC,KAAK4G,mBAETmC,KAAI,SAAUkrC,GACb,OAAOA,EAAaxoC,QACtB,IAAGyoC,WAAU,SAAUC,GACrB,OAEEA,EAAOC,UAAS,SAAUvyC,GACxB,OAAOA,EAAMkF,QAAU,KAAOlF,EAAMkF,OAAS,IAAM9I,EAAYsG,WAAkB,MAAE1C,EAAOqB,EAAOgvC,SAAStB,WAAa3yC,EAAYsG,WAAW6uC,GAAGvxC,EAAOqB,EAAOgvC,SAAStB,UAC1K,IAAGyD,MAAMnxC,EAAOmyB,QAASnyB,EAAOgvC,SAAStB,WAAW4C,KAAKtwC,EAAOuvC,QAEpE,GACF,GACC,CACD5zC,IAAK,mBACLzB,MAAO,WACL,IAAI8J,EAASlH,KAEbA,KAAKs0C,yBAA2Br2C,EAAYsG,WAAWgwC,SAAS7C,EAAsB1xC,KAAKkyC,SAAStB,WAAWS,SAAQ,SAAUxgC,GAC/H,OAAO3J,EAAOpD,cAChB,IAAGlB,WAAU,SAAUiB,GACrBkuC,EAAY,mBAAoBluC,EAAO,KAAM,IAAIkJ,MACjD7F,EAAOrD,MAAQA,CACjB,GACF,GACC,CACDhF,IAAK,eACLzB,MAAO,WACL,IAAIkL,EAAStI,KAEb,OAAOA,KAAKw0C,iBAAgB,GAAMnD,SAAQ,SAAUxgC,GAClD,OAAOvI,EAAO4pC,SAASS,KAAK,CAC1BjsC,OAAQ,OACRgC,IAAK,GAAG9C,OAAO0C,EAAOtE,OAAQ,mBAC9BqxB,QAAS/sB,EAAO+sB,QAChB1uB,QAASw/B,EAAc,CAAC,EAAG79B,EAAO1B,mBACjCmC,KAAI,SAAUkrC,GACf,OAAOA,EAAaxoC,SAAS5H,KAC/B,IAAGqwC,WAAU,SAAUC,GACrB,OAAOA,EAAOC,UAAS,SAAUvyC,GAC/B,OAAqB,MAAjBA,EAAMkF,QAERuB,EAAOmsC,eAEAx2C,EAAYsG,WAAkB,MAAE1C,EAAOyG,EAAO4pC,SAAStB,YACpC,MAAjB/uC,EAAMkF,OAER9I,EAAYsG,WAAkB,MAAE1C,EAAOyG,EAAO4pC,SAAStB,WAGzD3yC,EAAYsG,WAAW6uC,GAAGvxC,EAAOyG,EAAO4pC,SAAStB,UAC1D,IAAGyD,MAAM/rC,EAAO+sB,QAAS/sB,EAAO4pC,SAAStB,WAAW4C,KAAKlrC,EAAOmqC,QAClE,GACF,GACF,GACC,CACD5zC,IAAK,YACLzB,MAAO,SAAmBuO,GACxB3L,KAAK6D,MAAQ8H,EAAa9H,MAC1B7D,KAAKwyC,UAAY7mC,EAAa6mC,UAC1BxyC,KAAKE,kBAAkBqF,aAAenC,EAAiBW,cAAc/D,KAAKE,kBAAkBmB,KAAK+B,EAAiBoH,OACxH,GACC,CACD3L,IAAK,MACLzB,MAAO,WACD4C,KAAKs0C,0BAA0Bt0C,KAAKs0C,yBAAyBI,cAEjE,IACE10C,KAAKE,kBAAkBmB,KAAK+B,EAAiBoC,MAC/C,CAAE,MAAOyE,GACP,GAAIA,IAAM4nC,EAAwB,OAClC,MAAM5nC,CACR,CACF,GACC,CACDpL,IAAK,eACLzB,MAAO,WACL,IAAIgN,EAASpK,KAKb,OADA+xC,EAAY,gBACL/xC,KAAKw0C,iBAAgB,GAAMnD,SAAQ,SAAUxgC,GAClD,OAAOzG,EAAO8nC,SAASS,KAAK,CAC1BjsC,OAAQ,MACRgC,IAAK,GAAG9C,OAAOwE,EAAOpG,OAAQ,yBAC9B2wC,iBAAiB,EACjBtf,QAASjrB,EAAOirB,QAChB1uB,QAASw/B,EAAc,CACrB,eAAgB,oBACf/7B,EAAOxD,mBACTmC,KAAI,SAAUkrC,GACf,OAAIA,GAAgBA,EAAaxoC,UAAYwoC,EAAaxoC,SAASmpC,WACjE7C,EAAY,0BAA4BkC,EAAaxoC,SAASmpC,WACvDX,EAAaxoC,SAASmpC,WAGxB,EACT,IAAU,OAAE,SAAU/yC,GAEpB,OADAkwC,EAAY,uBAAyBlwC,EAAMkF,QACpC9I,EAAYsG,WAAW6uC,GAAG,GAAIhpC,EAAO8nC,SAAStB,UACvD,GACF,IAAU,OAAE,SAAU/uC,GACpB,OAAOuI,EAAOyqC,kBAAkBhzC,EAClC,GACF,GACC,CACDhD,IAAK,eACLzB,MAAO,SAAsByD,GAC3B,IAAIkK,EAAS/K,KAWb,OARIA,KAAKg0C,2BAA6BnzC,EAAS6I,MAAQ7I,EAAS6I,KAAK9B,KAAO5H,KAAKg0C,4BAC/ErwC,EAAQC,KAAK,yFACb/C,EAAS6I,KAAK9B,GAAK5H,KAAKg0C,2BAMJ,YAAlBnzC,EAAS6C,MAAsB7C,EAASC,aAAeD,EAASC,YAAYc,OAAS,EAAU5B,KAAKoH,2BAA2BvG,IAGnIkxC,EAAY,eAAgBlxC,GACrBb,KAAKw0C,iBAAgB,GAAMnD,SAAQ,SAAUxgC,GAClD,OAAO9F,EAAOmnC,SAASS,KAAK,CAC1BjsC,OAAQ,OACRgC,IAAK,GAAG9C,OAAOmF,EAAO/G,OAAQ,mBAAmB4B,OAAOmF,EAAO9G,eAAgB,eAC/EyM,KAAM7P,EACNw0B,QAAStqB,EAAOsqB,QAChB1uB,QAASw/B,EAAc,CACrB,eAAgB,oBACfp7B,EAAOnE,mBACTmC,KAAI,SAAUkrC,GACf,OAAOA,EAAaxoC,SAAS7D,EAC/B,IAAU,OAAE,SAAU/F,GACpB,OAAOkJ,EAAO+pC,eAAejzC,EAC/B,GACF,IAAU,OAAE,SAAUA,GACpB,OAAOkJ,EAAO8pC,kBAAkBhzC,EAClC,IACF,GACC,CACDhD,IAAK,6BACLzB,MAAO,SAAoCiL,GACzC,IAaI0sC,EAbApoC,EAAS3M,KAETc,EAAcuH,EAAQvH,YAGtBk0C,GAAkB,EAAItE,EAA0B,SAAG5vC,EAAYiI,KAAI,SAAUG,GAC/E,OAAOA,EAAMimB,MAAQ,MACvB,KACI8lB,EAAsBn0C,EAAYiI,KAAI,SAAU/H,EAAYkxB,GAC9D,OAAOiU,EAAcA,EAAc,CAAC,EAAGnlC,GAAa,CAAC,EAAG,CACtDmuB,KAAM6lB,EAAgB9iB,IAE1B,IAIA,OAAOlyB,KAAKw0C,iBAAgB,GAAMnD,SAAQ,SAAUxgC,GAclD,OAXAkkC,EAAW,IAAIG,UACNC,OAAO,WAAY,IAAIC,KAAK,CAAC3zC,KAAKuG,UAAUm+B,EAAcA,EAAc,CAAC,EAAG99B,GAAU,CAAC,EAAG,CAEjGvH,YAAam0C,EAAoBlsC,KAAI,SAAUvE,GAChCA,EAAKpC,WAElB,OAAO+jC,EAAc,CAAC,GADT,EAAI7oC,EAAmC,SAAGkH,EAAMhF,GAE/D,QACI,CACJkE,KAAM,wCAEDzF,EAAYsG,WAAWmF,KAAKurC,EAAqBtoC,EAAOulC,SAAStB,WAAWS,SAAQ,SAAUnoC,GACnG,OAAOyD,EAAOulC,SAASS,KAAK,CAC1BjsC,OAAQ,MACRgC,IAAKQ,EAAM9G,WACXizC,aAAc,gBACT,IAAE,SAAUpB,GACjB,OAAOc,EAASI,OAAO,OAAQ,IAAIC,KAAK,CAACnB,EAAaxoC,UAAW,CAC/D/H,KAAMwF,EAAM/G,cACV+G,EAAMimB,KACZ,GACF,IAAGta,OACL,IAAGw8B,SAAQ,SAAUxgC,GACnB,OAAOlE,EAAOulC,SAASS,KAAK,CAC1BjsC,OAAQ,OACRgC,IAAK,GAAG9C,OAAO+G,EAAO3I,OAAQ,mBAAmB4B,OAAO+G,EAAO1I,eAAgB,mBAAmB2B,OAAOyC,EAAQqB,KAAK9B,IACtH8I,KAAMqkC,EACN1f,QAAS1oB,EAAO0oB,QAChB1uB,QAASw/B,EAAc,CAAC,EAAGx5B,EAAO/F,mBACjCmC,KAAI,SAAUkrC,GACf,OAAOA,EAAaxoC,SAAS7D,EAC/B,IAAU,OAAE,SAAU/F,GACpB,OAAO8K,EAAOmoC,eAAejzC,EAC/B,GACF,IAAU,OAAE,SAAUA,GACpB,OAAO8K,EAAOmoC,eAAejzC,EAC/B,GACF,GACC,CACDhD,IAAK,iBACLzB,MAAO,SAAwByE,GAC7B,GAAqB,MAAjBA,EAAMkF,OACR/G,KAAKy0C,oBAAoB,GAAI5yC,EAAMkF,QAAU,KAAOlF,EAAMkF,OAAS,IACnE,OAAO9I,EAAYsG,WAAkB,MAAE1C,EAAO7B,KAAKkyC,SAAStB,WAC9D,OAAO3yC,EAAYsG,WAAW6uC,GAAG,QAASpzC,KAAKkyC,SAAStB,UAC1D,GACC,CACD/xC,IAAK,oBACLzB,MAAO,SAA2ByE,GAChC,OAAOA,IAAU+vC,EAAoB3zC,EAAYsG,WAAW6uC,GAAG,QAASpzC,KAAKkyC,SAAStB,WAAa3yC,EAAYsG,WAAkB,MAAE1C,EAAO7B,KAAKkyC,SAAStB,UAC1J,GACC,CACD/xC,IAAK,sBACLzB,MAAO,WACL,IAAIk4C,EAASt1C,KAETu1C,EAAUt3C,EAAYsG,WAAWtC,QAAO,SAAUhC,GAGpD,IAAIu1C,EAAW,IAAIz3C,EAAiBoF,gBAAgB,CAAC,GAErDqyC,EAAS5yC,WAAU,WACjB,GAAI0yC,EAAOp1C,kBAAkBqF,aAAenC,EAAiBoH,OAAQ,CACnE,IAAIirC,EAAiB1oC,KAAKC,MAE1BsoC,EAAOpD,SAASS,KAAK,CACnBhsC,QAASw/B,EAAc,CACrBuP,OAAQ,oBACPJ,EAAO1uC,iBACVF,OAAQ,MACRgC,IAAK,GAAG9C,OAAO0vC,EAAOtxC,OAAQ,mBAAmB4B,OAAO0vC,EAAOrxC,eAAgB,0BAA0B2B,OAAO0vC,EAAO/C,WACvHld,QAASigB,EAAOjgB,UACfzyB,WAAU,SAAU2L,GACrBtO,EAAWoB,KAAKkN,GAChB/H,YAAW,WACT,OAAOgvC,EAASn0C,KAAK,KACvB,GAAG8L,KAAKid,IAAI,EAAGkrB,EAAOzC,gBAAkB9lC,KAAKC,MAAQyoC,GACvD,IAAG,SAAU5zC,GACX,OAAQA,EAAMkF,QACZ,KAAK,IACHuuC,EAAOp1C,kBAAkBmB,KAAK+B,EAAiBW,cAE/CyC,YAAW,WACT,OAAOgvC,EAASn0C,KAAK,KACvB,GAAGi0C,EAAOzC,iBACV,MAEF,KAAK,IACHyC,EAAOp1C,kBAAkBmB,KAAK+B,EAAiBoC,OAE/C,MAEF,QAEEvF,EAAW4B,MAAMA,GAGvB,GACF,CACF,GACF,IAEA,OAAO7B,KAAKw0C,kBAAkBnD,SAAQ,SAAUxgC,GAC9C,OAAO0kC,EAAe,OAAE,WACtB,OAAOt3C,EAAYsG,WAAWoxC,OAChC,IAAG5sC,KAAI,SAAUkrC,GACf,OAAOA,EAAaxoC,QACtB,IAAG4lC,SAAQ,SAAUuE,GACnB,OAAON,EAAOO,4BAA4BD,EAC5C,GACF,GACF,GACC,CACD/2C,IAAK,8BACLzB,MAAO,SAAqCw4C,GAE1C,OADIA,EAAcrD,YAAWvyC,KAAKuyC,UAAYqD,EAAcrD,WACrDt0C,EAAYsG,WAAWmF,KAAKksC,EAAcj0C,WAAY3B,KAAKkyC,SAAStB,UAC7E,GACC,CACD/xC,IAAK,qBACLzB,MAAO,WACL,IAAI04C,EAAS91C,KAEb,OAAOA,KAAKw0C,kBAAkBnD,SAAQ,SAAUxgC,GAC9C,OAAOilC,EAAOC,sBAGb7B,WAAU,SAAUC,GACnB,OAAOA,EAAOE,MAAMyB,EAAO5oC,gBAAiB4oC,EAAO5D,SAAStB,WAAWwD,UAAS,SAAUvyC,GACxF,OAAOi0C,EAAOE,yBAChB,GACF,GACF,IAAG3E,SAAQ,SAAUuE,GACnB,OAAOE,EAAOD,4BAA4BD,EAC5C,GACF,GAEC,CACD/2C,IAAK,gBACLzB,MAAO,WACL,OAAO+P,KAAKC,MAAM,IAAgC,KAAzBpN,KAAKkyC,SAAS7kC,SACzC,GAIC,CACDxO,IAAK,sBACLzB,MAAO,WACL,IAAI64C,EAAUj2C,KAEd,OAAO/B,EAAYsG,WAAWtC,QAAO,SAAUhC,GAC7C8xC,EAAY,qBAAsBkE,EAAQzD,WAC1C,IACI7kB,EACAgb,EAFAlnB,EAAK,IAAIw0B,EAAQ/D,SAASxyB,UAAUu2B,EAAQzD,WA6ChD,OAzCA/wB,EAAG7B,OAAS,SAAUs2B,GACpBnE,EAAY,iBAAkBmE,GAK9BvoB,EAAM1vB,EAAYsG,WAAWgwC,SAAS0B,EAAQ5gB,QAAS4gB,EAAQ/D,SAAStB,WAAWhuC,WAAU,SAAUiO,GACrG,IACE4Q,EAAGxZ,KAAK,GACV,CAAE,MAAOgC,GACP8nC,EAAY,aAAc9nC,EAC5B,CACF,GACF,EAEAwX,EAAGZ,QAAU,SAAUjO,GACrBm/B,EAAY,kBAAmBn/B,GAC3B+a,GAAKA,EAAI+mB,cAGb/L,GAAU1oC,EAAW4B,MAAM+Q,GAC3B+1B,GAAS,CACX,EAEAlnB,EAAG9B,QAAU,SAAU9d,GACrBkwC,EAAY,kBAAmBlwC,GAC3B8rB,GAAKA,EAAI+mB,cAGb/L,GAAU1oC,EAAW4B,MAAMA,GAC3B8mC,GAAS,CACX,EAEAlnB,EAAGvB,UAAY,SAAU7X,GACvB,OAAOA,EAAQqY,MAAQzgB,EAAWoB,KAAKI,KAAKC,MAAM2G,EAAQqY,MAC5D,EAMO,WACiB,IAAlBe,EAAG5B,YAAsC,IAAlB4B,EAAG5B,YAAkB4B,EAAG7O,OACrD,CACF,GACF,GACC,CACD/T,IAAK,0BACLzB,MAAO,WACL,IAAI+4C,EAAUn2C,KAEd,OAAOA,KAAKw0C,iBAAgB,GAAMnD,SAAQ,SAAUxgC,GAClD,OAAOslC,EAAQjE,SAASS,KAAK,CAC3BjsC,OAAQ,MACRgC,IAAK,GAAG9C,OAAOuwC,EAAQnyC,OAAQ,mBAAmB4B,OAAOuwC,EAAQlyC,eAAgB,eAAe2B,OAAOuwC,EAAQ5D,WAC/Gld,QAAS8gB,EAAQ9gB,QACjB1uB,QAASw/B,EAAc,CACrB,OAAU,oBACTgQ,EAAQvvC,mBACN,IAAE,SAAU2H,GACZ4nC,EAAQhE,SAAQgE,EAAQtyC,MAAQ0K,EAAO9C,SAAS5H,OACrDsyC,EAAQ3D,UAAYjkC,EAAO9C,SAAS+mC,SACtC,IAAGzpC,KAAI,SAAU8H,GACf,OAAO,IACT,IAAGqjC,WAAU,SAAUC,GACrB,OAAOA,EAAOC,UAAS,SAAUvyC,GAC/B,GAAqB,MAAjBA,EAAMkF,OAGRovC,EAAQ1B,oBACH,GAAqB,MAAjB5yC,EAAMkF,OACf,OAAO9I,EAAYsG,WAAkB,MAAEstC,EAAwBsE,EAAQjE,SAAStB,WAGlF,OAAO3yC,EAAYsG,WAAW6uC,GAAGvxC,EAAOs0C,EAAQjE,SAAStB,UAC3D,IAAGyD,MAAM8B,EAAQ9gB,QAAS8gB,EAAQjE,SAAStB,WAAW4C,KAAK2C,EAAQ1D,QACrE,GACF,GACF,GACC,CACD5zC,IAAK,gBACLzB,MAAO,WACL,MAAO,CACL,cAAiB,UAAUwI,OAAO5F,KAAK6D,OACvC,iBAAkB7D,KAAKkE,UAE3B,GACC,CACDrF,IAAK,cACLzB,MAAO,WACL,IAAIyI,EAAcnD,UAAUd,OAAS,QAAsBkE,IAAjBpD,UAAU,GAAmBA,UAAU,GAAK,GAClFqD,EAAc,eAMlB,OAJIF,IACFE,GAAe,KAAKH,OAAOC,IAGtB,GAAGD,OAhqBU,iBAgqBkB,MAAMA,OAAOG,EAAa,KAAKH,OAAO,SAAU,IACxF,GACC,CACD/G,IAAK,YACLzB,MAAO,SAAmBg5C,GACxB,GAAIp2C,KAAKE,kBAAkBqF,aAAenC,EAAiBoH,OACzD,MAAM,IAAI1I,MAAM,yDAKlB,OAFsB9B,KAAKq2C,WAAWr2C,KAAK6D,OAGlCF,EAAQC,KAAK,4EAGlB,OAAOsH,KAAKkrC,GACPzyC,EAAQC,KAAK,kIAGtB5D,KAAKg0C,0BAA4BoC,EACnC,GACC,CACDv3C,IAAK,aACLzB,MAAO,SAAoByG,GACzB,IAIE,OAHY,EAAI4sC,EAAoB,SAAG5sC,GACtBkwC,IAGnB,CAAE,MAAO9pC,GACP,GAAIA,aAAawmC,EAAW6F,kBAC1B,MAEJ,CACF,KAEK/F,CACT,CA1mB8B,GA4mB9BpzC,EAAQozC,WAAaA,gCC5xBrB,IAAIxzC,EAAyB,EAAQ,OAErCE,OAAOC,eAAeC,EAAS,aAAc,CAC3CC,OAAO,IAETD,EAAiB,QAIjB,SAAyB2oB,GACvB,IAAIywB,EAAY,GAiBhB,OAhBAzwB,EAAMjjB,SAAQ,SAAUzF,GAQtB,IAPA,IAAIo5C,GAAiB,EAAIC,EAAyB,SAAGr5C,GACjDgzC,EAAUoG,EAAepG,QACzBjhB,EAAOqnB,EAAernB,KAEtBta,EAAQ,EACR6hC,EAAYt5C,EAETm5C,EAAU7rB,SAASgsB,IACxBA,EAAY,CAACvnB,EAAM,IAAIvpB,SAASiP,EAAO,MAAMoxB,QAAO,SAAU0Q,GAC5D,OAAOA,CACT,IAAGjiC,KAAK,KAAO07B,EAGjBmG,EAAUr0C,KAAKw0C,EACjB,IACOH,CACT,EArBA,IAAIE,EAAkB15C,EAAuB,EAAQ","sources":["webpack://source-maps/ClientApp/node_modules/.pnpm/botframework-directlinejs@0.15.5/node_modules/botframework-directlinejs/lib/directLineStreaming.js","webpack://source-maps/ClientApp/node_modules/.pnpm/botframework-directlinejs@0.15.5/node_modules/botframework-directlinejs/lib/streaming/WebSocketClientWithNetworkInformation.js","webpack://source-maps/ClientApp/node_modules/.pnpm/botframework-streaming@4.20.0/node_modules/botframework-streaming/lib/index-browser.js","webpack://source-maps/ClientApp/node_modules/.pnpm/botframework-directlinejs@0.15.5/node_modules/botframework-directlinejs/lib/parseFilename.js","webpack://source-maps/ClientApp/node_modules/.pnpm/botframework-directlinejs@0.15.5/node_modules/botframework-directlinejs/lib/createDeferred.js","webpack://source-maps/ClientApp/node_modules/.pnpm/botframework-directlinejs@0.15.5/node_modules/botframework-directlinejs/lib/directLine.js","webpack://source-maps/ClientApp/node_modules/.pnpm/botframework-directlinejs@0.15.5/node_modules/botframework-directlinejs/lib/dedupeFilenames.js"],"sourcesContent":["\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _typeof = require(\"@babel/runtime/helpers/typeof\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.DirectLineStreaming = void 0;\n\nvar _objectWithoutProperties2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutProperties\"));\n\nvar _regenerator = _interopRequireDefault(require(\"@babel/runtime/regenerator\"));\n\nvar _classPrivateFieldGet2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classPrivateFieldGet\"));\n\nvar _classPrivateFieldSet2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classPrivateFieldSet\"));\n\nvar _toConsumableArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/toConsumableArray\"));\n\nvar _asyncToGenerator2 = _interopRequireDefault(require(\"@babel/runtime/helpers/asyncToGenerator\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _BehaviorSubject = require(\"rxjs/BehaviorSubject\");\n\nvar _buffer = require(\"buffer\");\n\nvar _Observable = require(\"rxjs/Observable\");\n\nvar BFSE = _interopRequireWildcard(require(\"botframework-streaming\"));\n\nvar _createDeferred = _interopRequireDefault(require(\"./createDeferred\"));\n\nvar _crossFetch = _interopRequireDefault(require(\"cross-fetch\"));\n\nvar _directLine = require(\"./directLine\");\n\nvar _WebSocketClientWithNetworkInformation = _interopRequireDefault(require(\"./streaming/WebSocketClientWithNetworkInformation\"));\n\nvar _excluded = [\"attachments\"];\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nvar DIRECT_LINE_VERSION = 'DirectLine/3.0';\nvar MAX_RETRY_COUNT = 3;\nvar refreshTokenLifetime = 30 * 60 * 1000; //const refreshTokenLifetime = 5000;\n// const timeout = 20 * 1000;\n\nvar refreshTokenInterval = refreshTokenLifetime / 2;\n\nvar StreamHandler = /*#__PURE__*/function () {\n  function StreamHandler(s, c$, sq) {\n    (0, _classCallCheck2[\"default\"])(this, StreamHandler);\n    (0, _defineProperty2[\"default\"])(this, \"activityQueue\", []);\n    this.subscriber = s;\n    this.connectionStatus$ = c$;\n    this.shouldQueue = sq;\n  }\n\n  (0, _createClass2[\"default\"])(StreamHandler, [{\n    key: \"setSubscriber\",\n    value: function setSubscriber(s) {\n      this.subscriber = s;\n    }\n  }, {\n    key: \"processRequest\",\n    value: function () {\n      var _processRequest = (0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee(request, logger) {\n        var streams, stream0, activitySetJson, activitySet, activity, attachments, stream, attachment, dataUri;\n        return _regenerator[\"default\"].wrap(function _callee$(_context) {\n          while (1) {\n            switch (_context.prev = _context.next) {\n              case 0:\n                streams = (0, _toConsumableArray2[\"default\"])(request.streams);\n                stream0 = streams.shift();\n                _context.next = 4;\n                return stream0.readAsString();\n\n              case 4:\n                activitySetJson = _context.sent;\n                activitySet = JSON.parse(activitySetJson);\n\n                if (!(activitySet.activities.length !== 1)) {\n                  _context.next = 9;\n                  break;\n                }\n\n                // Only one activity is expected in a set in streaming\n                this.subscriber.error(new Error('there should be exactly one activity'));\n                return _context.abrupt(\"return\", BFSE.StreamingResponse.create(500));\n\n              case 9:\n                activity = activitySet.activities[0];\n\n                if (!(streams.length > 0)) {\n                  _context.next = 21;\n                  break;\n                }\n\n                attachments = (0, _toConsumableArray2[\"default\"])(activity.attachments);\n\n              case 12:\n                if (!(stream = streams.shift())) {\n                  _context.next = 20;\n                  break;\n                }\n\n                _context.next = 15;\n                return stream.readAsString();\n\n              case 15:\n                attachment = _context.sent;\n                dataUri = 'data:text/plain;base64,' + attachment;\n                attachments.push({\n                  contentType: stream.contentType,\n                  contentUrl: dataUri\n                });\n                _context.next = 12;\n                break;\n\n              case 20:\n                activity.attachments = attachments;\n\n              case 21:\n                if (this.shouldQueue()) {\n                  this.activityQueue.push(activity);\n                } else {\n                  this.subscriber.next(activity);\n                }\n\n                return _context.abrupt(\"return\", BFSE.StreamingResponse.create(200));\n\n              case 23:\n              case \"end\":\n                return _context.stop();\n            }\n          }\n        }, _callee, this);\n      }));\n\n      function processRequest(_x, _x2) {\n        return _processRequest.apply(this, arguments);\n      }\n\n      return processRequest;\n    }()\n  }, {\n    key: \"flush\",\n    value: function flush() {\n      var _this = this;\n\n      this.connectionStatus$.subscribe(function () {});\n      this.activityQueue.forEach(function (a) {\n        return _this.subscriber.next(a);\n      });\n      this.activityQueue = [];\n    }\n  }, {\n    key: \"end\",\n    value: function end() {\n      this.subscriber.complete();\n    }\n  }]);\n  return StreamHandler;\n}();\n\nvar _networkInformation = /*#__PURE__*/new WeakMap();\n\nvar DirectLineStreaming = /*#__PURE__*/function () {\n  function DirectLineStreaming(options) {\n    var _this2 = this;\n\n    (0, _classCallCheck2[\"default\"])(this, DirectLineStreaming);\n    (0, _defineProperty2[\"default\"])(this, \"connectionStatus$\", new _BehaviorSubject.BehaviorSubject(_directLine.ConnectionStatus.Uninitialized));\n    (0, _defineProperty2[\"default\"])(this, \"_botAgent\", '');\n\n    _networkInformation.set(this, {\n      writable: true,\n      value: void 0\n    });\n\n    // Rectifies `options.networkInformation`.\n    var networkInformation = options === null || options === void 0 ? void 0 : options.networkInformation;\n\n    if (typeof networkInformation === 'undefined' || typeof networkInformation.addEventListener === 'function' && typeof networkInformation.removeEventListener === 'function' && typeof networkInformation.type === 'string') {\n      (0, _classPrivateFieldSet2[\"default\"])(this, _networkInformation, networkInformation);\n    } else {\n      console.warn('botframework-directlinejs: \"networkInformation\" option specified must be a `NetworkInformation`-like instance extending `EventTarget` interface with a `type` property returning a string.');\n    }\n\n    this.token = options.token;\n    this.refreshToken()[\"catch\"](function () {\n      _this2.connectionStatus$.next(_directLine.ConnectionStatus.ExpiredToken);\n    });\n    this.domain = options.domain;\n\n    if (options.conversationId) {\n      this.conversationId = options.conversationId;\n    }\n\n    this._botAgent = this.getBotAgent(options.botAgent);\n    this.queueActivities = true;\n    this.activity$ = _Observable.Observable.create( /*#__PURE__*/function () {\n      var _ref = (0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee2(subscriber) {\n        return _regenerator[\"default\"].wrap(function _callee2$(_context2) {\n          while (1) {\n            switch (_context2.prev = _context2.next) {\n              case 0:\n                _this2.activitySubscriber = subscriber;\n                _this2.theStreamHandler = new StreamHandler(subscriber, _this2.connectionStatus$, function () {\n                  return _this2.queueActivities;\n                }); // Resolving connectDeferred will kick-off the connection.\n\n                _this2.connectDeferred.resolve();\n\n              case 3:\n              case \"end\":\n                return _context2.stop();\n            }\n          }\n        }, _callee2);\n      }));\n\n      return function (_x3) {\n        return _ref.apply(this, arguments);\n      };\n    }()).share(); // connectWithRetryAsync() will create the connectDeferred object required in activity$.\n\n    this.connectWithRetryAsync();\n  }\n\n  (0, _createClass2[\"default\"])(DirectLineStreaming, [{\n    key: \"reconnect\",\n    value: function reconnect(_ref2) {\n      var conversationId = _ref2.conversationId,\n          token = _ref2.token;\n\n      if (this.connectionStatus$.getValue() === _directLine.ConnectionStatus.Ended) {\n        throw new Error('Connection has ended.');\n      }\n\n      this.conversationId = conversationId;\n      this.token = token;\n      this.connectDeferred.resolve();\n    }\n  }, {\n    key: \"end\",\n    value: function end() {\n      // Once end() is called, no reconnection can be made.\n      this.activitySubscriber.complete();\n      this.connectionStatus$.next(_directLine.ConnectionStatus.Ended);\n      this.connectionStatus$.complete();\n      this.streamConnection.disconnect();\n    }\n  }, {\n    key: \"commonHeaders\",\n    value: function commonHeaders() {\n      return {\n        Authorization: \"Bearer \".concat(this.token),\n        'x-ms-bot-agent': this._botAgent\n      };\n    }\n  }, {\n    key: \"getBotAgent\",\n    value: function getBotAgent() {\n      var customAgent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n      var clientAgent = 'directlineStreaming';\n\n      if (customAgent) {\n        clientAgent += \"; \".concat(customAgent);\n      }\n\n      return \"\".concat(DIRECT_LINE_VERSION, \" (\").concat(clientAgent, \")\");\n    }\n  }, {\n    key: \"refreshToken\",\n    value: function () {\n      var _refreshToken = (0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee3() {\n        var firstCall,\n            retryCount,\n            numberOfAttempts,\n            res,\n            _yield$res$json,\n            token,\n            _args3 = arguments;\n\n        return _regenerator[\"default\"].wrap(function _callee3$(_context3) {\n          while (1) {\n            switch (_context3.prev = _context3.next) {\n              case 0:\n                firstCall = _args3.length > 0 && _args3[0] !== undefined ? _args3[0] : true;\n                retryCount = _args3.length > 1 && _args3[1] !== undefined ? _args3[1] : 0;\n                _context3.next = 4;\n                return this.waitUntilOnline();\n\n              case 4:\n                numberOfAttempts = 0;\n\n              case 5:\n                if (!(numberOfAttempts < MAX_RETRY_COUNT)) {\n                  _context3.next = 30;\n                  break;\n                }\n\n                numberOfAttempts++;\n                _context3.next = 9;\n                return new Promise(function (r) {\n                  return setTimeout(r, refreshTokenInterval);\n                });\n\n              case 9:\n                _context3.prev = 9;\n                _context3.next = 12;\n                return (0, _crossFetch[\"default\"])(\"\".concat(this.domain, \"/tokens/refresh\"), {\n                  method: 'POST',\n                  headers: this.commonHeaders()\n                });\n\n              case 12:\n                res = _context3.sent;\n\n                if (!res.ok) {\n                  _context3.next = 22;\n                  break;\n                }\n\n                numberOfAttempts = 0;\n                _context3.next = 17;\n                return res.json();\n\n              case 17:\n                _yield$res$json = _context3.sent;\n                token = _yield$res$json.token;\n                this.token = token;\n                _context3.next = 23;\n                break;\n\n              case 22:\n                if (res.status === 403 || res.status === 403) {\n                  console.error(\"Fatal error while refreshing the token: \".concat(res.status, \" \").concat(res.statusText));\n                  this.streamConnection.disconnect();\n                } else {\n                  console.warn(\"Refresh attempt #\".concat(numberOfAttempts, \" failed: \").concat(res.status, \" \").concat(res.statusText));\n                }\n\n              case 23:\n                _context3.next = 28;\n                break;\n\n              case 25:\n                _context3.prev = 25;\n                _context3.t0 = _context3[\"catch\"](9);\n                console.warn(\"Refresh attempt #\".concat(numberOfAttempts, \" threw an exception: \").concat(_context3.t0));\n\n              case 28:\n                _context3.next = 5;\n                break;\n\n              case 30:\n                console.error('Retries exhausted');\n                this.streamConnection.disconnect();\n\n              case 32:\n              case \"end\":\n                return _context3.stop();\n            }\n          }\n        }, _callee3, this, [[9, 25]]);\n      }));\n\n      function refreshToken() {\n        return _refreshToken.apply(this, arguments);\n      }\n\n      return refreshToken;\n    }()\n  }, {\n    key: \"postActivity\",\n    value: function postActivity(activity) {\n      var _this3 = this;\n\n      if (this.connectionStatus$.value === _directLine.ConnectionStatus.Ended || this.connectionStatus$.value === _directLine.ConnectionStatus.FailedToConnect) {\n        return _Observable.Observable[\"throw\"](new Error('Connection is closed'));\n      }\n\n      if (activity.type === 'message' && activity.attachments && activity.attachments.length > 0) {\n        return this.postMessageWithAttachments(activity);\n      }\n\n      var resp$ = _Observable.Observable.create( /*#__PURE__*/function () {\n        var _ref3 = (0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee4(subscriber) {\n          var request, resp, numberOfStreams, idString, _JSON$parse, id;\n\n          return _regenerator[\"default\"].wrap(function _callee4$(_context4) {\n            while (1) {\n              switch (_context4.prev = _context4.next) {\n                case 0:\n                  request = BFSE.StreamingRequest.create('POST', '/v3/directline/conversations/' + _this3.conversationId + '/activities');\n                  request.setBody(JSON.stringify(activity));\n                  _context4.prev = 2;\n                  _context4.next = 5;\n                  return _this3.streamConnection.send(request);\n\n                case 5:\n                  resp = _context4.sent;\n\n                  if (!(resp.statusCode !== 200)) {\n                    _context4.next = 8;\n                    break;\n                  }\n\n                  throw new Error('PostActivity returned ' + resp.statusCode);\n\n                case 8:\n                  numberOfStreams = resp.streams.length;\n\n                  if (!(numberOfStreams !== 1)) {\n                    _context4.next = 11;\n                    break;\n                  }\n\n                  throw new Error('Expected one stream but got ' + numberOfStreams);\n\n                case 11:\n                  _context4.next = 13;\n                  return resp.streams[0].readAsString();\n\n                case 13:\n                  idString = _context4.sent;\n                  _JSON$parse = JSON.parse(idString), id = _JSON$parse.Id;\n                  subscriber.next(id);\n                  return _context4.abrupt(\"return\", subscriber.complete());\n\n                case 19:\n                  _context4.prev = 19;\n                  _context4.t0 = _context4[\"catch\"](2);\n                  // If there is a network issue then its handled by\n                  // the disconnectionHandler. Everything else can\n                  // be retried\n                  console.warn(_context4.t0);\n\n                  _this3.streamConnection.disconnect();\n\n                  return _context4.abrupt(\"return\", subscriber.error(_context4.t0));\n\n                case 24:\n                case \"end\":\n                  return _context4.stop();\n              }\n            }\n          }, _callee4, null, [[2, 19]]);\n        }));\n\n        return function (_x4) {\n          return _ref3.apply(this, arguments);\n        };\n      }());\n\n      return resp$;\n    }\n  }, {\n    key: \"postMessageWithAttachments\",\n    value: function postMessageWithAttachments(message) {\n      var _this4 = this;\n\n      var attachments = message.attachments,\n          messageWithoutAttachments = (0, _objectWithoutProperties2[\"default\"])(message, _excluded);\n      return _Observable.Observable.create(function (subscriber) {\n        var httpContentList = [];\n        (0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee6() {\n          var arrayBuffers, url, request, activityStream, resp, _yield$resp$streams$, id;\n\n          return _regenerator[\"default\"].wrap(function _callee6$(_context6) {\n            while (1) {\n              switch (_context6.prev = _context6.next) {\n                case 0:\n                  _context6.prev = 0;\n                  _context6.next = 3;\n                  return Promise.all(attachments.map( /*#__PURE__*/function () {\n                    var _ref5 = (0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee5(attachment) {\n                      var media, res;\n                      return _regenerator[\"default\"].wrap(function _callee5$(_context5) {\n                        while (1) {\n                          switch (_context5.prev = _context5.next) {\n                            case 0:\n                              media = attachment;\n                              _context5.next = 3;\n                              return (0, _crossFetch[\"default\"])(media.contentUrl);\n\n                            case 3:\n                              res = _context5.sent;\n\n                              if (!res.ok) {\n                                _context5.next = 12;\n                                break;\n                              }\n\n                              _context5.next = 7;\n                              return res.arrayBuffer();\n\n                            case 7:\n                              _context5.t0 = _context5.sent;\n                              _context5.t1 = media;\n                              return _context5.abrupt(\"return\", {\n                                arrayBuffer: _context5.t0,\n                                media: _context5.t1\n                              });\n\n                            case 12:\n                              throw new Error('...');\n\n                            case 13:\n                            case \"end\":\n                              return _context5.stop();\n                          }\n                        }\n                      }, _callee5);\n                    }));\n\n                    return function (_x5) {\n                      return _ref5.apply(this, arguments);\n                    };\n                  }()));\n\n                case 3:\n                  arrayBuffers = _context6.sent;\n                  arrayBuffers.forEach(function (_ref6) {\n                    var arrayBuffer = _ref6.arrayBuffer,\n                        media = _ref6.media;\n\n                    var buffer = _buffer.Buffer.from(arrayBuffer);\n\n                    var stream = new BFSE.SubscribableStream();\n                    stream.write(buffer);\n                    var httpContent = new BFSE.HttpContent({\n                      type: media.contentType,\n                      contentLength: buffer.length\n                    }, stream);\n                    httpContentList.push(httpContent);\n                  });\n                  url = \"/v3/directline/conversations/\".concat(_this4.conversationId, \"/users/\").concat(messageWithoutAttachments.from.id, \"/upload\");\n                  request = BFSE.StreamingRequest.create('PUT', url);\n                  activityStream = new BFSE.SubscribableStream();\n                  activityStream.write(JSON.stringify(messageWithoutAttachments), 'utf-8');\n                  request.addStream(new BFSE.HttpContent({\n                    type: 'application/vnd.microsoft.activity',\n                    contentLength: activityStream.length\n                  }, activityStream));\n                  httpContentList.forEach(function (e) {\n                    return request.addStream(e);\n                  });\n                  _context6.next = 13;\n                  return _this4.streamConnection.send(request);\n\n                case 13:\n                  resp = _context6.sent;\n\n                  if (!(resp.streams && resp.streams.length !== 1)) {\n                    _context6.next = 18;\n                    break;\n                  }\n\n                  subscriber.error(new Error(\"Invalid stream count \".concat(resp.streams.length)));\n                  _context6.next = 24;\n                  break;\n\n                case 18:\n                  _context6.next = 20;\n                  return resp.streams[0].readAsJson();\n\n                case 20:\n                  _yield$resp$streams$ = _context6.sent;\n                  id = _yield$resp$streams$.Id;\n                  subscriber.next(id);\n                  subscriber.complete();\n\n                case 24:\n                  _context6.next = 29;\n                  break;\n\n                case 26:\n                  _context6.prev = 26;\n                  _context6.t0 = _context6[\"catch\"](0);\n                  subscriber.error(_context6.t0);\n\n                case 29:\n                case \"end\":\n                  return _context6.stop();\n              }\n            }\n          }, _callee6, null, [[0, 26]]);\n        }))();\n      });\n    }\n  }, {\n    key: \"waitUntilOnline\",\n    value: function () {\n      var _waitUntilOnline = (0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee7() {\n        var _this5 = this;\n\n        return _regenerator[\"default\"].wrap(function _callee7$(_context7) {\n          while (1) {\n            switch (_context7.prev = _context7.next) {\n              case 0:\n                return _context7.abrupt(\"return\", new Promise(function (resolve, reject) {\n                  _this5.connectionStatus$.subscribe(function (cs) {\n                    if (cs === _directLine.ConnectionStatus.Online) {\n                      return resolve();\n                    }\n                  }, function (e) {\n                    return reject(e);\n                  });\n                }));\n\n              case 1:\n              case \"end\":\n                return _context7.stop();\n            }\n          }\n        }, _callee7);\n      }));\n\n      function waitUntilOnline() {\n        return _waitUntilOnline.apply(this, arguments);\n      }\n\n      return waitUntilOnline;\n    }()\n  }, {\n    key: \"connectAsync\",\n    value: function () {\n      var _connectAsync = (0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee9() {\n        var _this6 = this;\n\n        var re, params, abortController, urlSearchParams, wsUrl;\n        return _regenerator[\"default\"].wrap(function _callee9$(_context9) {\n          while (1) {\n            switch (_context9.prev = _context9.next) {\n              case 0:\n                re = new RegExp('^http(s?)');\n\n                if (re.test(this.domain)) {\n                  _context9.next = 3;\n                  break;\n                }\n\n                throw 'Domain must begin with http or https';\n\n              case 3:\n                params = {\n                  token: this.token\n                };\n\n                if (this.conversationId) {\n                  params['conversationId'] = this.conversationId;\n                }\n\n                abortController = new AbortController();\n                urlSearchParams = new URLSearchParams(params).toString();\n                wsUrl = \"\".concat(this.domain.replace(re, 'ws$1'), \"/conversations/connect?\").concat(urlSearchParams); // This promise will resolve when it is disconnected.\n\n                return _context9.abrupt(\"return\", new Promise( /*#__PURE__*/function () {\n                  var _ref7 = (0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee8(resolve, reject) {\n                    var request, response, responseString, conversation;\n                    return _regenerator[\"default\"].wrap(function _callee8$(_context8) {\n                      while (1) {\n                        switch (_context8.prev = _context8.next) {\n                          case 0:\n                            _context8.prev = 0;\n                            _this6.streamConnection = new _WebSocketClientWithNetworkInformation[\"default\"]({\n                              disconnectionHandler: resolve,\n                              networkInformation: (0, _classPrivateFieldGet2[\"default\"])(_this6, _networkInformation),\n                              requestHandler: {\n                                processRequest: function processRequest(streamingRequest) {\n                                  // If `streamConnection` is still current, allow call to `processRequest()`, otherwise, ignore calls to `processRequest()`.\n                                  // This prevents zombie connections from sending us requests.\n                                  if (abortController.signal.aborted) {\n                                    throw new Error('Cannot process streaming request, `streamingConnection` should be disconnected.');\n                                  }\n\n                                  return _this6.theStreamHandler.processRequest(streamingRequest);\n                                }\n                              },\n                              url: wsUrl\n                            });\n                            _this6.queueActivities = true;\n                            _context8.next = 5;\n                            return _this6.streamConnection.connect();\n\n                          case 5:\n                            request = BFSE.StreamingRequest.create('POST', '/v3/directline/conversations');\n                            _context8.next = 8;\n                            return _this6.streamConnection.send(request);\n\n                          case 8:\n                            response = _context8.sent;\n\n                            if (!(response.statusCode !== 200)) {\n                              _context8.next = 11;\n                              break;\n                            }\n\n                            throw new Error('Connection response code ' + response.statusCode);\n\n                          case 11:\n                            if (!(response.streams.length !== 1)) {\n                              _context8.next = 13;\n                              break;\n                            }\n\n                            throw new Error('Expected 1 stream but got ' + response.streams.length);\n\n                          case 13:\n                            _context8.next = 15;\n                            return response.streams[0].readAsString();\n\n                          case 15:\n                            responseString = _context8.sent;\n                            conversation = JSON.parse(responseString);\n                            _this6.conversationId = conversation.conversationId;\n\n                            _this6.connectionStatus$.next(_directLine.ConnectionStatus.Online); // Wait until DL consumers have had a chance to be notified\n                            // of the connection status change.\n                            // This is specific to RxJS implementation of observable, which calling subscribe() after next() will still get the value.\n\n\n                            _context8.next = 21;\n                            return _this6.waitUntilOnline();\n\n                          case 21:\n                            _this6.theStreamHandler.flush();\n\n                            _this6.queueActivities = false;\n                            _context8.next = 28;\n                            break;\n\n                          case 25:\n                            _context8.prev = 25;\n                            _context8.t0 = _context8[\"catch\"](0);\n                            reject(_context8.t0);\n\n                          case 28:\n                          case \"end\":\n                            return _context8.stop();\n                        }\n                      }\n                    }, _callee8, null, [[0, 25]]);\n                  }));\n\n                  return function (_x6, _x7) {\n                    return _ref7.apply(this, arguments);\n                  };\n                }())[\"finally\"](function () {\n                  return abortController.abort();\n                }));\n\n              case 9:\n              case \"end\":\n                return _context9.stop();\n            }\n          }\n        }, _callee9, this);\n      }));\n\n      function connectAsync() {\n        return _connectAsync.apply(this, arguments);\n      }\n\n      return connectAsync;\n    }()\n  }, {\n    key: \"connectWithRetryAsync\",\n    value: function () {\n      var _connectWithRetryAsync = (0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee10() {\n        var _this7 = this;\n\n        var numRetries, start;\n        return _regenerator[\"default\"].wrap(function _callee10$(_context10) {\n          while (1) {\n            switch (_context10.prev = _context10.next) {\n              case 0:\n                _context10.next = 2;\n                return (this.connectDeferred = (0, _createDeferred[\"default\"])()).promise;\n\n              case 2:\n                numRetries = MAX_RETRY_COUNT;\n                this.connectionStatus$.next(_directLine.ConnectionStatus.Connecting);\n\n              case 4:\n                if (!(numRetries > 0)) {\n                  _context10.next = 27;\n                  break;\n                }\n\n                numRetries--;\n                start = Date.now();\n                _context10.prev = 7;\n                _context10.next = 10;\n                return this.connectAsync();\n\n              case 10:\n                _context10.next = 15;\n                break;\n\n              case 12:\n                _context10.prev = 12;\n                _context10.t0 = _context10[\"catch\"](7);\n                console.error(_context10.t0);\n\n              case 15:\n                if (!(this.connectionStatus$.getValue() === _directLine.ConnectionStatus.Ended)) {\n                  _context10.next = 17;\n                  break;\n                }\n\n                return _context10.abrupt(\"return\");\n\n              case 17:\n                // Make sure we don't signal ConnectionStatus.Connecting twice or more without an actual connection.\n                // Subsequent retries should be transparent.\n                if (this.connectionStatus$.getValue() !== _directLine.ConnectionStatus.Connecting) {\n                  this.connectionStatus$.next(_directLine.ConnectionStatus.Connecting);\n                } // If the current connection lasted for more than a minute, the previous connection is good, which means:\n                // - we should reset the retry counter, and;\n                // - we should reconnect immediately.\n\n\n                if (!(60000 < Date.now() - start)) {\n                  _context10.next = 22;\n                  break;\n                }\n\n                numRetries = MAX_RETRY_COUNT;\n                _context10.next = 25;\n                break;\n\n              case 22:\n                if (!(numRetries > 0)) {\n                  _context10.next = 25;\n                  break;\n                }\n\n                _context10.next = 25;\n                return new Promise(function (r) {\n                  return setTimeout(r, _this7.getRetryDelay());\n                });\n\n              case 25:\n                _context10.next = 4;\n                break;\n\n              case 27:\n                // TODO: [TEST] Make sure FailedToConnect is reported immediately after last disconnection, should be no getRetryDelay().\n                // Failed to reconnect after multiple retries.\n                this.connectionStatus$.next(_directLine.ConnectionStatus.FailedToConnect);\n\n              case 28:\n                _context10.next = 0;\n                break;\n\n              case 30:\n              case \"end\":\n                return _context10.stop();\n            }\n          }\n        }, _callee10, this, [[7, 12]]);\n      }));\n\n      function connectWithRetryAsync() {\n        return _connectWithRetryAsync.apply(this, arguments);\n      }\n\n      return connectWithRetryAsync;\n    }() // Returns the delay duration in milliseconds\n\n  }, {\n    key: \"getRetryDelay\",\n    value: function getRetryDelay() {\n      return Math.floor(3000 + Math.random() * 12000);\n    }\n  }]);\n  return DirectLineStreaming;\n}();\n\nexports.DirectLineStreaming = DirectLineStreaming;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9kaXJlY3RMaW5lU3RyZWFtaW5nLnRzIl0sIm5hbWVzIjpbIkRJUkVDVF9MSU5FX1ZFUlNJT04iLCJNQVhfUkVUUllfQ09VTlQiLCJyZWZyZXNoVG9rZW5MaWZldGltZSIsInJlZnJlc2hUb2tlbkludGVydmFsIiwiU3RyZWFtSGFuZGxlciIsInMiLCJjJCIsInNxIiwic3Vic2NyaWJlciIsImNvbm5lY3Rpb25TdGF0dXMkIiwic2hvdWxkUXVldWUiLCJyZXF1ZXN0IiwibG9nZ2VyIiwic3RyZWFtcyIsInN0cmVhbTAiLCJzaGlmdCIsInJlYWRBc1N0cmluZyIsImFjdGl2aXR5U2V0SnNvbiIsImFjdGl2aXR5U2V0IiwiSlNPTiIsInBhcnNlIiwiYWN0aXZpdGllcyIsImxlbmd0aCIsImVycm9yIiwiRXJyb3IiLCJCRlNFIiwiU3RyZWFtaW5nUmVzcG9uc2UiLCJjcmVhdGUiLCJhY3Rpdml0eSIsImF0dGFjaG1lbnRzIiwic3RyZWFtIiwiYXR0YWNobWVudCIsImRhdGFVcmkiLCJwdXNoIiwiY29udGVudFR5cGUiLCJjb250ZW50VXJsIiwiYWN0aXZpdHlRdWV1ZSIsIm5leHQiLCJzdWJzY3JpYmUiLCJmb3JFYWNoIiwiYSIsImNvbXBsZXRlIiwiRGlyZWN0TGluZVN0cmVhbWluZyIsIm9wdGlvbnMiLCJCZWhhdmlvclN1YmplY3QiLCJDb25uZWN0aW9uU3RhdHVzIiwiVW5pbml0aWFsaXplZCIsIm5ldHdvcmtJbmZvcm1hdGlvbiIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwidHlwZSIsImNvbnNvbGUiLCJ3YXJuIiwidG9rZW4iLCJyZWZyZXNoVG9rZW4iLCJFeHBpcmVkVG9rZW4iLCJkb21haW4iLCJjb252ZXJzYXRpb25JZCIsIl9ib3RBZ2VudCIsImdldEJvdEFnZW50IiwiYm90QWdlbnQiLCJxdWV1ZUFjdGl2aXRpZXMiLCJhY3Rpdml0eSQiLCJPYnNlcnZhYmxlIiwiYWN0aXZpdHlTdWJzY3JpYmVyIiwidGhlU3RyZWFtSGFuZGxlciIsImNvbm5lY3REZWZlcnJlZCIsInJlc29sdmUiLCJzaGFyZSIsImNvbm5lY3RXaXRoUmV0cnlBc3luYyIsImdldFZhbHVlIiwiRW5kZWQiLCJzdHJlYW1Db25uZWN0aW9uIiwiZGlzY29ubmVjdCIsIkF1dGhvcml6YXRpb24iLCJjdXN0b21BZ2VudCIsImNsaWVudEFnZW50IiwiZmlyc3RDYWxsIiwicmV0cnlDb3VudCIsIndhaXRVbnRpbE9ubGluZSIsIm51bWJlck9mQXR0ZW1wdHMiLCJQcm9taXNlIiwiciIsInNldFRpbWVvdXQiLCJtZXRob2QiLCJoZWFkZXJzIiwiY29tbW9uSGVhZGVycyIsInJlcyIsIm9rIiwianNvbiIsInN0YXR1cyIsInN0YXR1c1RleHQiLCJ2YWx1ZSIsIkZhaWxlZFRvQ29ubmVjdCIsInBvc3RNZXNzYWdlV2l0aEF0dGFjaG1lbnRzIiwicmVzcCQiLCJTdHJlYW1pbmdSZXF1ZXN0Iiwic2V0Qm9keSIsInN0cmluZ2lmeSIsInNlbmQiLCJyZXNwIiwic3RhdHVzQ29kZSIsIm51bWJlck9mU3RyZWFtcyIsImlkU3RyaW5nIiwiaWQiLCJJZCIsIm1lc3NhZ2UiLCJtZXNzYWdlV2l0aG91dEF0dGFjaG1lbnRzIiwiaHR0cENvbnRlbnRMaXN0IiwiYWxsIiwibWFwIiwibWVkaWEiLCJhcnJheUJ1ZmZlciIsImFycmF5QnVmZmVycyIsImJ1ZmZlciIsIkJ1ZmZlciIsImZyb20iLCJTdWJzY3JpYmFibGVTdHJlYW0iLCJ3cml0ZSIsImh0dHBDb250ZW50IiwiSHR0cENvbnRlbnQiLCJjb250ZW50TGVuZ3RoIiwidXJsIiwiYWN0aXZpdHlTdHJlYW0iLCJhZGRTdHJlYW0iLCJlIiwicmVhZEFzSnNvbiIsInJlamVjdCIsImNzIiwiT25saW5lIiwicmUiLCJSZWdFeHAiLCJ0ZXN0IiwicGFyYW1zIiwiYWJvcnRDb250cm9sbGVyIiwiQWJvcnRDb250cm9sbGVyIiwidXJsU2VhcmNoUGFyYW1zIiwiVVJMU2VhcmNoUGFyYW1zIiwidG9TdHJpbmciLCJ3c1VybCIsInJlcGxhY2UiLCJXZWJTb2NrZXRDbGllbnRXaXRoTmV0d29ya0luZm9ybWF0aW9uIiwiZGlzY29ubmVjdGlvbkhhbmRsZXIiLCJyZXF1ZXN0SGFuZGxlciIsInByb2Nlc3NSZXF1ZXN0Iiwic3RyZWFtaW5nUmVxdWVzdCIsInNpZ25hbCIsImFib3J0ZWQiLCJjb25uZWN0IiwicmVzcG9uc2UiLCJyZXNwb25zZVN0cmluZyIsImNvbnZlcnNhdGlvbiIsImZsdXNoIiwiYWJvcnQiLCJwcm9taXNlIiwibnVtUmV0cmllcyIsIkNvbm5lY3RpbmciLCJzdGFydCIsIkRhdGUiLCJub3ciLCJjb25uZWN0QXN5bmMiLCJnZXRSZXRyeURlbGF5IiwiTWF0aCIsImZsb29yIiwicmFuZG9tIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBOztBQUNBOztBQUNBOztBQUVBOztBQUNBOztBQUNBOztBQUVBOztBQUNBOzs7Ozs7OztBQUdBLElBQU1BLG1CQUFtQixHQUFHLGdCQUE1QjtBQUNBLElBQU1DLGVBQWUsR0FBRyxDQUF4QjtBQUNBLElBQU1DLG9CQUFvQixHQUFHLEtBQUssRUFBTCxHQUFVLElBQXZDLEMsQ0FDQTtBQUNBOztBQUNBLElBQU1DLG9CQUFvQixHQUFHRCxvQkFBb0IsR0FBRyxDQUFwRDs7SUFnQk1FLGE7QUFNSix5QkFBWUMsQ0FBWixFQUFxQ0MsRUFBckMsRUFBdUVDLEVBQXZFLEVBQTBGO0FBQUE7QUFBQSw0REFGakQsRUFFaUQ7QUFDeEYsU0FBS0MsVUFBTCxHQUFrQkgsQ0FBbEI7QUFDQSxTQUFLSSxpQkFBTCxHQUF5QkgsRUFBekI7QUFDQSxTQUFLSSxXQUFMLEdBQW1CSCxFQUFuQjtBQUNEOzs7O1dBRUQsdUJBQXFCRixDQUFyQixFQUE4QztBQUM1QyxXQUFLRyxVQUFMLEdBQWtCSCxDQUFsQjtBQUNEOzs7OzBHQUVELGlCQUFxQk0sT0FBckIsRUFBb0RDLE1BQXBEO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNRQyxnQkFBQUEsT0FE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LGdCQUFBQSxPQUFPLENBQUM1QixLQUFSOztBQXJCUjtBQUFBLHNCQXlCVSxLQUFLZCxpQkFBTCxDQUF1QjZELFFBQXZCLE9BQXNDekIsNkJBQWlCMEIsS0F6QmpFO0FBQUE7QUFBQTtBQUFBOztBQUFBOztBQUFBO0FBOEJNO0FBQ0E7QUFDQSxvQkFBSSxLQUFLOUQsaUJBQUwsQ0FBdUI2RCxRQUF2QixPQUFzQ3pCLDZCQUFpQitHLFVBQTNELEVBQXVFO0FBQ3JFLHVCQUFLbkosaUJBQUwsQ0FBdUI0QixJQUF2QixDQUE0QlEsNkJBQWlCK0csVUFBN0M7QUFDRCxpQkFsQ1AsQ0FvQ007QUFDQTtBQUNBOzs7QUF0Q04sc0JBdUNVLFFBQVFFLElBQUksQ0FBQ0MsR0FBTCxLQUFhRixLQXZDL0I7QUFBQTtBQUFBO0FBQUE7O0FBd0NRRixnQkFBQUEsVUFBVSxHQUFHMUosZUFBYjtBQXhDUjtBQUFBOztBQUFBO0FBQUEsc0JBeUNpQjBKLFVBQVUsR0FBRyxDQXpDOUI7QUFBQTtBQUFBO0FBQUE7O0FBQUE7QUFBQSx1QkEyQ2MsSUFBSTFFLE9BQUosQ0FBWSxVQUFBQyxDQUFDO0FBQUEseUJBQUlDLFVBQVUsQ0FBQ0QsQ0FBRCxFQUFJLE1BQUksQ0FBQytFLGFBQUwsRUFBSixDQUFkO0FBQUEsaUJBQWIsQ0EzQ2Q7O0FBQUE7QUFBQTtBQUFBOztBQUFBO0FBK0NJO0FBQ0E7QUFDQSxxQkFBS3hKLGlCQUFMLENBQXVCNEIsSUFBdkIsQ0FBNEJRLDZCQUFpQmdELGVBQTdDOztBQWpESjtBQUFBO0FBQUE7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsTzs7Ozs7OztRQXVEQTs7OztXQUNBLHlCQUF3QjtBQUN0QixhQUFPcUUsSUFBSSxDQUFDQyxLQUFMLENBQVcsT0FBT0QsSUFBSSxDQUFDRSxNQUFMLEtBQWdCLEtBQWxDLENBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbIi8vIEluIG9yZGVyIHRvIGtlZXAgZmlsZSBzaXplIGRvd24sIG9ubHkgaW1wb3J0IHRoZSBwYXJ0cyBvZiByeGpzIHRoYXQgd2UgdXNlXG5cbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMvQmVoYXZpb3JTdWJqZWN0JztcbmltcG9ydCB7IEJ1ZmZlciB9IGZyb20gJ2J1ZmZlcic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcy9PYnNlcnZhYmxlJztcbmltcG9ydCB7IFN1YnNjcmliZXIgfSBmcm9tICdyeGpzL1N1YnNjcmliZXInO1xuaW1wb3J0ICogYXMgQkZTRSBmcm9tICdib3RmcmFtZXdvcmstc3RyZWFtaW5nJztcbmltcG9ydCBjcmVhdGVEZWZlcnJlZCBmcm9tICcuL2NyZWF0ZURlZmVycmVkJztcbmltcG9ydCBmZXRjaCBmcm9tICdjcm9zcy1mZXRjaCc7XG5cbmltcG9ydCB7IEFjdGl2aXR5LCBDb25uZWN0aW9uU3RhdHVzLCBDb252ZXJzYXRpb24sIERpcmVjdExpbmUsIElCb3RDb25uZWN0aW9uLCBNZWRpYSwgTWVzc2FnZSB9IGZyb20gJy4vZGlyZWN0TGluZSc7XG5pbXBvcnQgV2ViU29ja2V0Q2xpZW50V2l0aE5ldHdvcmtJbmZvcm1hdGlvbiBmcm9tICcuL3N0cmVhbWluZy9XZWJTb2NrZXRDbGllbnRXaXRoTmV0d29ya0luZm9ybWF0aW9uJztcbmltcG9ydCB0eXBlIHsgRGVmZXJyZWQgfSBmcm9tICcuL2NyZWF0ZURlZmVycmVkJztcblxuY29uc3QgRElSRUNUX0xJTkVfVkVSU0lPTiA9ICdEaXJlY3RMaW5lLzMuMCc7XG5jb25zdCBNQVhfUkVUUllfQ09VTlQgPSAzO1xuY29uc3QgcmVmcmVzaFRva2VuTGlmZXRpbWUgPSAzMCAqIDYwICogMTAwMDtcbi8vY29uc3QgcmVmcmVzaFRva2VuTGlmZXRpbWUgPSA1MDAwO1xuLy8gY29uc3QgdGltZW91dCA9IDIwICogMTAwMDtcbmNvbnN0IHJlZnJlc2hUb2tlbkludGVydmFsID0gcmVmcmVzaFRva2VuTGlmZXRpbWUgLyAyO1xuXG5pbnRlcmZhY2UgRGlyZWN0TGluZVN0cmVhbWluZ09wdGlvbnMge1xuICB0b2tlbjogc3RyaW5nO1xuICBjb252ZXJzYXRpb25JZD86IHN0cmluZztcbiAgZG9tYWluOiBzdHJpbmc7XG4gIC8vIEF0dGFjaGVkIHRvIGFsbCByZXF1ZXN0cyB0byBpZGVudGlmeSByZXF1ZXN0aW5nIGFnZW50LlxuICBib3RBZ2VudD86IHN0cmluZztcblxuICAvKipcbiAgICogU2V0cyB0aGUgW2BOZXR3b3JrSW5mb3JtYXRpb25gIEFQSV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL05ldHdvcmtfSW5mb3JtYXRpb25fQVBJKS5cbiAgICogV2hlbiB0aGUgYE5ldHdvcmtJbmZvcm1hdGlvbmAgZGV0ZWN0IG5ldHdvcmsgY2hhbmdlcyBvciBvZmZsaW5lLCBpdCB3aWxsIGRpc2Nvbm5lY3QgdGhlIFdlYiBTb2NrZXQgYW5kIHJlY29ubmVjdCBpdC5cbiAgICovXG4gIG5ldHdvcmtJbmZvcm1hdGlvbj86IE5ldHdvcmtJbmZvcm1hdGlvbjtcbn1cblxuY2xhc3MgU3RyZWFtSGFuZGxlciBpbXBsZW1lbnRzIEJGU0UuUmVxdWVzdEhhbmRsZXIge1xuICBwcml2YXRlIGNvbm5lY3Rpb25TdGF0dXMkO1xuICBwcml2YXRlIHN1YnNjcmliZXI6IFN1YnNjcmliZXI8QWN0aXZpdHk+O1xuICBwcml2YXRlIHNob3VsZFF1ZXVlOiAoKSA9PiBib29sZWFuO1xuICBwcml2YXRlIGFjdGl2aXR5UXVldWU6IEFycmF5PEFjdGl2aXR5PiA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHM6IFN1YnNjcmliZXI8QWN0aXZpdHk+LCBjJDogT2JzZXJ2YWJsZTxDb25uZWN0aW9uU3RhdHVzPiwgc3E6ICgpID0+IGJvb2xlYW4pIHtcbiAgICB0aGlzLnN1YnNjcmliZXIgPSBzO1xuICAgIHRoaXMuY29ubmVjdGlvblN0YXR1cyQgPSBjJDtcbiAgICB0aGlzLnNob3VsZFF1ZXVlID0gc3E7XG4gIH1cblxuICBwdWJsaWMgc2V0U3Vic2NyaWJlcihzOiBTdWJzY3JpYmVyPEFjdGl2aXR5Pikge1xuICAgIHRoaXMuc3Vic2NyaWJlciA9IHM7XG4gIH1cblxuICBhc3luYyBwcm9jZXNzUmVxdWVzdChyZXF1ZXN0OiBCRlNFLklSZWNlaXZlUmVxdWVzdCwgbG9nZ2VyPzogYW55KTogUHJvbWlzZTxCRlNFLlN0cmVhbWluZ1Jlc3BvbnNlPiB7XG4gICAgY29uc3Qgc3RyZWFtcyA9IFsuLi5yZXF1ZXN0LnN0cmVhbXNdO1xuICAgIGNvbnN0IHN0cmVhbTAgPSBzdHJlYW1zLnNoaWZ0KCk7XG4gICAgY29uc3QgYWN0aXZpdHlTZXRKc29uID0gYXdhaXQgc3RyZWFtMC5yZWFkQXNTdHJpbmcoKTtcbiAgICBjb25zdCBhY3Rpdml0eVNldCA9IEpTT04ucGFyc2UoYWN0aXZpdHlTZXRKc29uKTtcblxuICAgIGlmIChhY3Rpdml0eVNldC5hY3Rpdml0aWVzLmxlbmd0aCAhPT0gMSkge1xuICAgICAgLy8gT25seSBvbmUgYWN0aXZpdHkgaXMgZXhwZWN0ZWQgaW4gYSBzZXQgaW4gc3RyZWFtaW5nXG4gICAgICB0aGlzLnN1YnNjcmliZXIuZXJyb3IobmV3IEVycm9yKCd0aGVyZSBzaG91bGQgYmUgZXhhY3RseSBvbmUgYWN0aXZpdHknKSk7XG4gICAgICByZXR1cm4gQkZTRS5TdHJlYW1pbmdSZXNwb25zZS5jcmVhdGUoNTAwKTtcbiAgICB9XG5cbiAgICBjb25zdCBhY3Rpdml0eSA9IGFjdGl2aXR5U2V0LmFjdGl2aXRpZXNbMF07XG5cbiAgICBpZiAoc3RyZWFtcy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBhdHRhY2htZW50cyA9IFsuLi5hY3Rpdml0eS5hdHRhY2htZW50c107XG5cbiAgICAgIGxldCBzdHJlYW06IEJGU0UuQ29udGVudFN0cmVhbTtcbiAgICAgIHdoaWxlICgoc3RyZWFtID0gc3RyZWFtcy5zaGlmdCgpKSkge1xuICAgICAgICBjb25zdCBhdHRhY2htZW50ID0gYXdhaXQgc3RyZWFtLnJlYWRBc1N0cmluZygpO1xuICAgICAgICBjb25zdCBkYXRhVXJpID0gJ2RhdGE6dGV4dC9wbGFpbjtiYXNlNjQsJyArIGF0dGFjaG1lbnQ7XG4gICAgICAgIGF0dGFjaG1lbnRzLnB1c2goeyBjb250ZW50VHlwZTogc3RyZWFtLmNvbnRlbnRUeXBlLCBjb250ZW50VXJsOiBkYXRhVXJpIH0pO1xuICAgICAgfVxuXG4gICAgICBhY3Rpdml0eS5hdHRhY2htZW50cyA9IGF0dGFjaG1lbnRzO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnNob3VsZFF1ZXVlKCkpIHtcbiAgICAgIHRoaXMuYWN0aXZpdHlRdWV1ZS5wdXNoKGFjdGl2aXR5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zdWJzY3JpYmVyLm5leHQoYWN0aXZpdHkpO1xuICAgIH1cblxuICAgIHJldHVybiBCRlNFLlN0cmVhbWluZ1Jlc3BvbnNlLmNyZWF0ZSgyMDApO1xuICB9XG5cbiAgcHVibGljIGZsdXNoKCkge1xuICAgIHRoaXMuY29ubmVjdGlvblN0YXR1cyQuc3Vic2NyaWJlKCgpID0+IHt9KTtcbiAgICB0aGlzLmFjdGl2aXR5UXVldWUuZm9yRWFjaChhID0+IHRoaXMuc3Vic2NyaWJlci5uZXh0KGEpKTtcbiAgICB0aGlzLmFjdGl2aXR5UXVldWUgPSBbXTtcbiAgfVxuXG4gIHB1YmxpYyBlbmQoKSB7XG4gICAgdGhpcy5zdWJzY3JpYmVyLmNvbXBsZXRlKCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIERpcmVjdExpbmVTdHJlYW1pbmcgaW1wbGVtZW50cyBJQm90Q29ubmVjdGlvbiB7XG4gIHB1YmxpYyBjb25uZWN0aW9uU3RhdHVzJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoQ29ubmVjdGlvblN0YXR1cy5VbmluaXRpYWxpemVkKTtcbiAgcHVibGljIGFjdGl2aXR5JDogT2JzZXJ2YWJsZTxBY3Rpdml0eT47XG5cbiAgcHJpdmF0ZSBhY3Rpdml0eVN1YnNjcmliZXI6IFN1YnNjcmliZXI8QWN0aXZpdHk+O1xuICBwcml2YXRlIGNvbm5lY3REZWZlcnJlZDogRGVmZXJyZWQ8dm9pZD47XG4gIHByaXZhdGUgdGhlU3RyZWFtSGFuZGxlcjogU3RyZWFtSGFuZGxlcjtcblxuICBwcml2YXRlIGRvbWFpbjogc3RyaW5nO1xuXG4gIHByaXZhdGUgY29udmVyc2F0aW9uSWQ6IHN0cmluZztcbiAgcHJpdmF0ZSB0b2tlbjogc3RyaW5nO1xuICBwcml2YXRlIHN0cmVhbUNvbm5lY3Rpb246IEJGU0UuV2ViU29ja2V0Q2xpZW50O1xuICBwcml2YXRlIHF1ZXVlQWN0aXZpdGllczogYm9vbGVhbjtcblxuICBwcml2YXRlIF9ib3RBZ2VudCA9ICcnO1xuXG4gICNuZXR3b3JrSW5mb3JtYXRpb246IE5ldHdvcmtJbmZvcm1hdGlvbiB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBEaXJlY3RMaW5lU3RyZWFtaW5nT3B0aW9ucykge1xuICAgIC8vIFJlY3RpZmllcyBgb3B0aW9ucy5uZXR3b3JrSW5mb3JtYXRpb25gLlxuICAgIGNvbnN0IG5ldHdvcmtJbmZvcm1hdGlvbiA9IG9wdGlvbnM/Lm5ldHdvcmtJbmZvcm1hdGlvbjtcblxuICAgIGlmIChcbiAgICAgIHR5cGVvZiBuZXR3b3JrSW5mb3JtYXRpb24gPT09ICd1bmRlZmluZWQnIHx8XG4gICAgICAodHlwZW9mIG5ldHdvcmtJbmZvcm1hdGlvbi5hZGRFdmVudExpc3RlbmVyID09PSAnZnVuY3Rpb24nICYmXG4gICAgICAgIHR5cGVvZiBuZXR3b3JrSW5mb3JtYXRpb24ucmVtb3ZlRXZlbnRMaXN0ZW5lciA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgICAgICB0eXBlb2YgbmV0d29ya0luZm9ybWF0aW9uLnR5cGUgPT09ICdzdHJpbmcnKVxuICAgICkge1xuICAgICAgdGhpcy4jbmV0d29ya0luZm9ybWF0aW9uID0gbmV0d29ya0luZm9ybWF0aW9uO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICdib3RmcmFtZXdvcmstZGlyZWN0bGluZWpzOiBcIm5ldHdvcmtJbmZvcm1hdGlvblwiIG9wdGlvbiBzcGVjaWZpZWQgbXVzdCBiZSBhIGBOZXR3b3JrSW5mb3JtYXRpb25gLWxpa2UgaW5zdGFuY2UgZXh0ZW5kaW5nIGBFdmVudFRhcmdldGAgaW50ZXJmYWNlIHdpdGggYSBgdHlwZWAgcHJvcGVydHkgcmV0dXJuaW5nIGEgc3RyaW5nLidcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy50b2tlbiA9IG9wdGlvbnMudG9rZW47XG5cbiAgICB0aGlzLnJlZnJlc2hUb2tlbigpLmNhdGNoKCgpID0+IHtcbiAgICAgIHRoaXMuY29ubmVjdGlvblN0YXR1cyQubmV4dChDb25uZWN0aW9uU3RhdHVzLkV4cGlyZWRUb2tlbik7XG4gICAgfSk7XG5cbiAgICB0aGlzLmRvbWFpbiA9IG9wdGlvbnMuZG9tYWluO1xuXG4gICAgaWYgKG9wdGlvbnMuY29udmVyc2F0aW9uSWQpIHtcbiAgICAgIHRoaXMuY29udmVyc2F0aW9uSWQgPSBvcHRpb25zLmNvbnZlcnNhdGlvbklkO1xuICAgIH1cblxuICAgIHRoaXMuX2JvdEFnZW50ID0gdGhpcy5nZXRCb3RBZ2VudChvcHRpb25zLmJvdEFnZW50KTtcblxuICAgIHRoaXMucXVldWVBY3Rpdml0aWVzID0gdHJ1ZTtcbiAgICB0aGlzLmFjdGl2aXR5JCA9IE9ic2VydmFibGUuY3JlYXRlKGFzeW5jIChzdWJzY3JpYmVyOiBTdWJzY3JpYmVyPEFjdGl2aXR5PikgPT4ge1xuICAgICAgdGhpcy5hY3Rpdml0eVN1YnNjcmliZXIgPSBzdWJzY3JpYmVyO1xuICAgICAgdGhpcy50aGVTdHJlYW1IYW5kbGVyID0gbmV3IFN0cmVhbUhhbmRsZXIoc3Vic2NyaWJlciwgdGhpcy5jb25uZWN0aW9uU3RhdHVzJCwgKCkgPT4gdGhpcy5xdWV1ZUFjdGl2aXRpZXMpO1xuXG4gICAgICAvLyBSZXNvbHZpbmcgY29ubmVjdERlZmVycmVkIHdpbGwga2ljay1vZmYgdGhlIGNvbm5lY3Rpb24uXG4gICAgICB0aGlzLmNvbm5lY3REZWZlcnJlZC5yZXNvbHZlKCk7XG4gICAgfSkuc2hhcmUoKTtcblxuICAgIC8vIGNvbm5lY3RXaXRoUmV0cnlBc3luYygpIHdpbGwgY3JlYXRlIHRoZSBjb25uZWN0RGVmZXJyZWQgb2JqZWN0IHJlcXVpcmVkIGluIGFjdGl2aXR5JC5cbiAgICB0aGlzLmNvbm5lY3RXaXRoUmV0cnlBc3luYygpO1xuICB9XG5cbiAgcHVibGljIHJlY29ubmVjdCh7IGNvbnZlcnNhdGlvbklkLCB0b2tlbiB9OiBDb252ZXJzYXRpb24pIHtcbiAgICBpZiAodGhpcy5jb25uZWN0aW9uU3RhdHVzJC5nZXRWYWx1ZSgpID09PSBDb25uZWN0aW9uU3RhdHVzLkVuZGVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nvbm5lY3Rpb24gaGFzIGVuZGVkLicpO1xuICAgIH1cblxuICAgIHRoaXMuY29udmVyc2F0aW9uSWQgPSBjb252ZXJzYXRpb25JZDtcbiAgICB0aGlzLnRva2VuID0gdG9rZW47XG5cbiAgICB0aGlzLmNvbm5lY3REZWZlcnJlZC5yZXNvbHZlKCk7XG4gIH1cblxuICBlbmQoKSB7XG4gICAgLy8gT25jZSBlbmQoKSBpcyBjYWxsZWQsIG5vIHJlY29ubmVjdGlvbiBjYW4gYmUgbWFkZS5cbiAgICB0aGlzLmFjdGl2aXR5U3Vic2NyaWJlci5jb21wbGV0ZSgpO1xuXG4gICAgdGhpcy5jb25uZWN0aW9uU3RhdHVzJC5uZXh0KENvbm5lY3Rpb25TdGF0dXMuRW5kZWQpO1xuICAgIHRoaXMuY29ubmVjdGlvblN0YXR1cyQuY29tcGxldGUoKTtcblxuICAgIHRoaXMuc3RyZWFtQ29ubmVjdGlvbi5kaXNjb25uZWN0KCk7XG4gIH1cblxuICBwcml2YXRlIGNvbW1vbkhlYWRlcnMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHt0aGlzLnRva2VufWAsXG4gICAgICAneC1tcy1ib3QtYWdlbnQnOiB0aGlzLl9ib3RBZ2VudFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGdldEJvdEFnZW50KGN1c3RvbUFnZW50OiBzdHJpbmcgPSAnJyk6IHN0cmluZyB7XG4gICAgbGV0IGNsaWVudEFnZW50ID0gJ2RpcmVjdGxpbmVTdHJlYW1pbmcnO1xuXG4gICAgaWYgKGN1c3RvbUFnZW50KSB7XG4gICAgICBjbGllbnRBZ2VudCArPSBgOyAke2N1c3RvbUFnZW50fWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGAke0RJUkVDVF9MSU5FX1ZFUlNJT059ICgke2NsaWVudEFnZW50fSlgO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZWZyZXNoVG9rZW4oZmlyc3RDYWxsID0gdHJ1ZSwgcmV0cnlDb3VudCA9IDApIHtcbiAgICBhd2FpdCB0aGlzLndhaXRVbnRpbE9ubGluZSgpO1xuXG4gICAgbGV0IG51bWJlck9mQXR0ZW1wdHMgPSAwO1xuICAgIHdoaWxlIChudW1iZXJPZkF0dGVtcHRzIDwgTUFYX1JFVFJZX0NPVU5UKSB7XG4gICAgICBudW1iZXJPZkF0dGVtcHRzKys7XG4gICAgICBhd2FpdCBuZXcgUHJvbWlzZShyID0+IHNldFRpbWVvdXQociwgcmVmcmVzaFRva2VuSW50ZXJ2YWwpKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKGAke3RoaXMuZG9tYWlufS90b2tlbnMvcmVmcmVzaGAsIHsgbWV0aG9kOiAnUE9TVCcsIGhlYWRlcnM6IHRoaXMuY29tbW9uSGVhZGVycygpIH0pO1xuICAgICAgICBpZiAocmVzLm9rKSB7XG4gICAgICAgICAgbnVtYmVyT2ZBdHRlbXB0cyA9IDA7XG4gICAgICAgICAgY29uc3QgeyB0b2tlbiB9ID0gYXdhaXQgcmVzLmpzb24oKTtcbiAgICAgICAgICB0aGlzLnRva2VuID0gdG9rZW47XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHJlcy5zdGF0dXMgPT09IDQwMyB8fCByZXMuc3RhdHVzID09PSA0MDMpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYEZhdGFsIGVycm9yIHdoaWxlIHJlZnJlc2hpbmcgdGhlIHRva2VuOiAke3Jlcy5zdGF0dXN9ICR7cmVzLnN0YXR1c1RleHR9YCk7XG4gICAgICAgICAgICB0aGlzLnN0cmVhbUNvbm5lY3Rpb24uZGlzY29ubmVjdCgpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYFJlZnJlc2ggYXR0ZW1wdCAjJHtudW1iZXJPZkF0dGVtcHRzfSBmYWlsZWQ6ICR7cmVzLnN0YXR1c30gJHtyZXMuc3RhdHVzVGV4dH1gKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uc29sZS53YXJuKGBSZWZyZXNoIGF0dGVtcHQgIyR7bnVtYmVyT2ZBdHRlbXB0c30gdGhyZXcgYW4gZXhjZXB0aW9uOiAke2V9YCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc29sZS5lcnJvcignUmV0cmllcyBleGhhdXN0ZWQnKTtcbiAgICB0aGlzLnN0cmVhbUNvbm5lY3Rpb24uZGlzY29ubmVjdCgpO1xuICB9XG5cbiAgcG9zdEFjdGl2aXR5KGFjdGl2aXR5OiBBY3Rpdml0eSkge1xuICAgIGlmIChcbiAgICAgIHRoaXMuY29ubmVjdGlvblN0YXR1cyQudmFsdWUgPT09IENvbm5lY3Rpb25TdGF0dXMuRW5kZWQgfHxcbiAgICAgIHRoaXMuY29ubmVjdGlvblN0YXR1cyQudmFsdWUgPT09IENvbm5lY3Rpb25TdGF0dXMuRmFpbGVkVG9Db25uZWN0XG4gICAgKSB7XG4gICAgICByZXR1cm4gT2JzZXJ2YWJsZS50aHJvdyhuZXcgRXJyb3IoJ0Nvbm5lY3Rpb24gaXMgY2xvc2VkJykpO1xuICAgIH1cblxuICAgIGlmIChhY3Rpdml0eS50eXBlID09PSAnbWVzc2FnZScgJiYgYWN0aXZpdHkuYXR0YWNobWVudHMgJiYgYWN0aXZpdHkuYXR0YWNobWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHRoaXMucG9zdE1lc3NhZ2VXaXRoQXR0YWNobWVudHMoYWN0aXZpdHkpO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3AkID0gT2JzZXJ2YWJsZS5jcmVhdGUoYXN5bmMgc3Vic2NyaWJlciA9PiB7XG4gICAgICBjb25zdCByZXF1ZXN0ID0gQkZTRS5TdHJlYW1pbmdSZXF1ZXN0LmNyZWF0ZShcbiAgICAgICAgJ1BPU1QnLFxuICAgICAgICAnL3YzL2RpcmVjdGxpbmUvY29udmVyc2F0aW9ucy8nICsgdGhpcy5jb252ZXJzYXRpb25JZCArICcvYWN0aXZpdGllcydcbiAgICAgICk7XG4gICAgICByZXF1ZXN0LnNldEJvZHkoSlNPTi5zdHJpbmdpZnkoYWN0aXZpdHkpKTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVzcCA9IGF3YWl0IHRoaXMuc3RyZWFtQ29ubmVjdGlvbi5zZW5kKHJlcXVlc3QpO1xuICAgICAgICBpZiAocmVzcC5zdGF0dXNDb2RlICE9PSAyMDApIHRocm93IG5ldyBFcnJvcignUG9zdEFjdGl2aXR5IHJldHVybmVkICcgKyByZXNwLnN0YXR1c0NvZGUpO1xuICAgICAgICBjb25zdCBudW1iZXJPZlN0cmVhbXMgPSByZXNwLnN0cmVhbXMubGVuZ3RoO1xuICAgICAgICBpZiAobnVtYmVyT2ZTdHJlYW1zICE9PSAxKSB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIG9uZSBzdHJlYW0gYnV0IGdvdCAnICsgbnVtYmVyT2ZTdHJlYW1zKTtcbiAgICAgICAgY29uc3QgaWRTdHJpbmcgPSBhd2FpdCByZXNwLnN0cmVhbXNbMF0ucmVhZEFzU3RyaW5nKCk7XG4gICAgICAgIGNvbnN0IHsgSWQ6IGlkIH0gPSBKU09OLnBhcnNlKGlkU3RyaW5nKTtcbiAgICAgICAgc3Vic2NyaWJlci5uZXh0KGlkKTtcbiAgICAgICAgcmV0dXJuIHN1YnNjcmliZXIuY29tcGxldGUoKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSBuZXR3b3JrIGlzc3VlIHRoZW4gaXRzIGhhbmRsZWQgYnlcbiAgICAgICAgLy8gdGhlIGRpc2Nvbm5lY3Rpb25IYW5kbGVyLiBFdmVyeXRoaW5nIGVsc2UgY2FuXG4gICAgICAgIC8vIGJlIHJldHJpZWRcbiAgICAgICAgY29uc29sZS53YXJuKGUpO1xuICAgICAgICB0aGlzLnN0cmVhbUNvbm5lY3Rpb24uZGlzY29ubmVjdCgpO1xuICAgICAgICByZXR1cm4gc3Vic2NyaWJlci5lcnJvcihlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVzcCQ7XG4gIH1cblxuICBwcml2YXRlIHBvc3RNZXNzYWdlV2l0aEF0dGFjaG1lbnRzKG1lc3NhZ2U6IE1lc3NhZ2UpIHtcbiAgICBjb25zdCB7IGF0dGFjaG1lbnRzLCAuLi5tZXNzYWdlV2l0aG91dEF0dGFjaG1lbnRzIH0gPSBtZXNzYWdlO1xuXG4gICAgcmV0dXJuIE9ic2VydmFibGUuY3JlYXRlKHN1YnNjcmliZXIgPT4ge1xuICAgICAgY29uc3QgaHR0cENvbnRlbnRMaXN0ID0gW107XG4gICAgICAoYXN5bmMgKCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IGFycmF5QnVmZmVycyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICAgICAgYXR0YWNobWVudHMubWFwKGFzeW5jIGF0dGFjaG1lbnQgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBtZWRpYSA9IGF0dGFjaG1lbnQgYXMgTWVkaWE7XG4gICAgICAgICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKG1lZGlhLmNvbnRlbnRVcmwpO1xuICAgICAgICAgICAgICBpZiAocmVzLm9rKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgYXJyYXlCdWZmZXI6IGF3YWl0IHJlcy5hcnJheUJ1ZmZlcigpLCBtZWRpYSB9O1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignLi4uJyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGFycmF5QnVmZmVycy5mb3JFYWNoKCh7IGFycmF5QnVmZmVyLCBtZWRpYSB9KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBidWZmZXIgPSBCdWZmZXIuZnJvbShhcnJheUJ1ZmZlcik7XG4gICAgICAgICAgICBjb25zdCBzdHJlYW0gPSBuZXcgQkZTRS5TdWJzY3JpYmFibGVTdHJlYW0oKTtcbiAgICAgICAgICAgIHN0cmVhbS53cml0ZShidWZmZXIpO1xuICAgICAgICAgICAgY29uc3QgaHR0cENvbnRlbnQgPSBuZXcgQkZTRS5IdHRwQ29udGVudCh7IHR5cGU6IG1lZGlhLmNvbnRlbnRUeXBlLCBjb250ZW50TGVuZ3RoOiBidWZmZXIubGVuZ3RoIH0sIHN0cmVhbSk7XG4gICAgICAgICAgICBodHRwQ29udGVudExpc3QucHVzaChodHRwQ29udGVudCk7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBjb25zdCB1cmwgPSBgL3YzL2RpcmVjdGxpbmUvY29udmVyc2F0aW9ucy8ke3RoaXMuY29udmVyc2F0aW9uSWR9L3VzZXJzLyR7bWVzc2FnZVdpdGhvdXRBdHRhY2htZW50cy5mcm9tLmlkfS91cGxvYWRgO1xuICAgICAgICAgIGNvbnN0IHJlcXVlc3QgPSBCRlNFLlN0cmVhbWluZ1JlcXVlc3QuY3JlYXRlKCdQVVQnLCB1cmwpO1xuICAgICAgICAgIGNvbnN0IGFjdGl2aXR5U3RyZWFtID0gbmV3IEJGU0UuU3Vic2NyaWJhYmxlU3RyZWFtKCk7XG4gICAgICAgICAgYWN0aXZpdHlTdHJlYW0ud3JpdGUoSlNPTi5zdHJpbmdpZnkobWVzc2FnZVdpdGhvdXRBdHRhY2htZW50cyksICd1dGYtOCcpO1xuICAgICAgICAgIHJlcXVlc3QuYWRkU3RyZWFtKFxuICAgICAgICAgICAgbmV3IEJGU0UuSHR0cENvbnRlbnQoXG4gICAgICAgICAgICAgIHsgdHlwZTogJ2FwcGxpY2F0aW9uL3ZuZC5taWNyb3NvZnQuYWN0aXZpdHknLCBjb250ZW50TGVuZ3RoOiBhY3Rpdml0eVN0cmVhbS5sZW5ndGggfSxcbiAgICAgICAgICAgICAgYWN0aXZpdHlTdHJlYW1cbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuICAgICAgICAgIGh0dHBDb250ZW50TGlzdC5mb3JFYWNoKGUgPT4gcmVxdWVzdC5hZGRTdHJlYW0oZSkpO1xuXG4gICAgICAgICAgY29uc3QgcmVzcCA9IGF3YWl0IHRoaXMuc3RyZWFtQ29ubmVjdGlvbi5zZW5kKHJlcXVlc3QpO1xuICAgICAgICAgIGlmIChyZXNwLnN0cmVhbXMgJiYgcmVzcC5zdHJlYW1zLmxlbmd0aCAhPT0gMSkge1xuICAgICAgICAgICAgc3Vic2NyaWJlci5lcnJvcihuZXcgRXJyb3IoYEludmFsaWQgc3RyZWFtIGNvdW50ICR7cmVzcC5zdHJlYW1zLmxlbmd0aH1gKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHsgSWQ6IGlkIH0gPSBhd2FpdCByZXNwLnN0cmVhbXNbMF0ucmVhZEFzSnNvbjx7IElkOiBzdHJpbmcgfT4oKTtcbiAgICAgICAgICAgIHN1YnNjcmliZXIubmV4dChpZCk7XG4gICAgICAgICAgICBzdWJzY3JpYmVyLmNvbXBsZXRlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgc3Vic2NyaWJlci5lcnJvcihlKTtcbiAgICAgICAgfVxuICAgICAgfSkoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgd2FpdFVudGlsT25saW5lKCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLmNvbm5lY3Rpb25TdGF0dXMkLnN1YnNjcmliZShcbiAgICAgICAgY3MgPT4ge1xuICAgICAgICAgIGlmIChjcyA9PT0gQ29ubmVjdGlvblN0YXR1cy5PbmxpbmUpIHtcbiAgICAgICAgICAgIHJldHVybiByZXNvbHZlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBlID0+IHJlamVjdChlKVxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY29ubmVjdEFzeW5jKCkge1xuICAgIGNvbnN0IHJlID0gbmV3IFJlZ0V4cCgnXmh0dHAocz8pJyk7XG5cbiAgICBpZiAoIXJlLnRlc3QodGhpcy5kb21haW4pKSB7XG4gICAgICB0aHJvdyAnRG9tYWluIG11c3QgYmVnaW4gd2l0aCBodHRwIG9yIGh0dHBzJztcbiAgICB9XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7IHRva2VuOiB0aGlzLnRva2VuIH07XG5cbiAgICBpZiAodGhpcy5jb252ZXJzYXRpb25JZCkge1xuICAgICAgcGFyYW1zWydjb252ZXJzYXRpb25JZCddID0gdGhpcy5jb252ZXJzYXRpb25JZDtcbiAgICB9XG5cbiAgICBjb25zdCBhYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgY29uc3QgdXJsU2VhcmNoUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhwYXJhbXMpLnRvU3RyaW5nKCk7XG4gICAgY29uc3Qgd3NVcmwgPSBgJHt0aGlzLmRvbWFpbi5yZXBsYWNlKHJlLCAnd3MkMScpfS9jb252ZXJzYXRpb25zL2Nvbm5lY3Q/JHt1cmxTZWFyY2hQYXJhbXN9YDtcblxuICAgIC8vIFRoaXMgcHJvbWlzZSB3aWxsIHJlc29sdmUgd2hlbiBpdCBpcyBkaXNjb25uZWN0ZWQuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMuc3RyZWFtQ29ubmVjdGlvbiA9IG5ldyBXZWJTb2NrZXRDbGllbnRXaXRoTmV0d29ya0luZm9ybWF0aW9uKHtcbiAgICAgICAgICBkaXNjb25uZWN0aW9uSGFuZGxlcjogcmVzb2x2ZSxcbiAgICAgICAgICBuZXR3b3JrSW5mb3JtYXRpb246IHRoaXMuI25ldHdvcmtJbmZvcm1hdGlvbixcbiAgICAgICAgICByZXF1ZXN0SGFuZGxlcjoge1xuICAgICAgICAgICAgcHJvY2Vzc1JlcXVlc3Q6IHN0cmVhbWluZ1JlcXVlc3QgPT4ge1xuICAgICAgICAgICAgICAvLyBJZiBgc3RyZWFtQ29ubmVjdGlvbmAgaXMgc3RpbGwgY3VycmVudCwgYWxsb3cgY2FsbCB0byBgcHJvY2Vzc1JlcXVlc3QoKWAsIG90aGVyd2lzZSwgaWdub3JlIGNhbGxzIHRvIGBwcm9jZXNzUmVxdWVzdCgpYC5cbiAgICAgICAgICAgICAgLy8gVGhpcyBwcmV2ZW50cyB6b21iaWUgY29ubmVjdGlvbnMgZnJvbSBzZW5kaW5nIHVzIHJlcXVlc3RzLlxuICAgICAgICAgICAgICBpZiAoYWJvcnRDb250cm9sbGVyLnNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgcHJvY2VzcyBzdHJlYW1pbmcgcmVxdWVzdCwgYHN0cmVhbWluZ0Nvbm5lY3Rpb25gIHNob3VsZCBiZSBkaXNjb25uZWN0ZWQuJyk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICByZXR1cm4gdGhpcy50aGVTdHJlYW1IYW5kbGVyLnByb2Nlc3NSZXF1ZXN0KHN0cmVhbWluZ1JlcXVlc3QpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgdXJsOiB3c1VybFxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnF1ZXVlQWN0aXZpdGllcyA9IHRydWU7XG5cbiAgICAgICAgYXdhaXQgdGhpcy5zdHJlYW1Db25uZWN0aW9uLmNvbm5lY3QoKTtcblxuICAgICAgICBjb25zdCByZXF1ZXN0ID0gQkZTRS5TdHJlYW1pbmdSZXF1ZXN0LmNyZWF0ZSgnUE9TVCcsICcvdjMvZGlyZWN0bGluZS9jb252ZXJzYXRpb25zJyk7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5zdHJlYW1Db25uZWN0aW9uLnNlbmQocmVxdWVzdCk7XG5cbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1c0NvZGUgIT09IDIwMCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ29ubmVjdGlvbiByZXNwb25zZSBjb2RlICcgKyByZXNwb25zZS5zdGF0dXNDb2RlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXNwb25zZS5zdHJlYW1zLmxlbmd0aCAhPT0gMSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRXhwZWN0ZWQgMSBzdHJlYW0gYnV0IGdvdCAnICsgcmVzcG9uc2Uuc3RyZWFtcy5sZW5ndGgpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzcG9uc2VTdHJpbmcgPSBhd2FpdCByZXNwb25zZS5zdHJlYW1zWzBdLnJlYWRBc1N0cmluZygpO1xuICAgICAgICBjb25zdCBjb252ZXJzYXRpb24gPSBKU09OLnBhcnNlKHJlc3BvbnNlU3RyaW5nKTtcblxuICAgICAgICB0aGlzLmNvbnZlcnNhdGlvbklkID0gY29udmVyc2F0aW9uLmNvbnZlcnNhdGlvbklkO1xuICAgICAgICB0aGlzLmNvbm5lY3Rpb25TdGF0dXMkLm5leHQoQ29ubmVjdGlvblN0YXR1cy5PbmxpbmUpO1xuXG4gICAgICAgIC8vIFdhaXQgdW50aWwgREwgY29uc3VtZXJzIGhhdmUgaGFkIGEgY2hhbmNlIHRvIGJlIG5vdGlmaWVkXG4gICAgICAgIC8vIG9mIHRoZSBjb25uZWN0aW9uIHN0YXR1cyBjaGFuZ2UuXG4gICAgICAgIC8vIFRoaXMgaXMgc3BlY2lmaWMgdG8gUnhKUyBpbXBsZW1lbnRhdGlvbiBvZiBvYnNlcnZhYmxlLCB3aGljaCBjYWxsaW5nIHN1YnNjcmliZSgpIGFmdGVyIG5leHQoKSB3aWxsIHN0aWxsIGdldCB0aGUgdmFsdWUuXG4gICAgICAgIGF3YWl0IHRoaXMud2FpdFVudGlsT25saW5lKCk7XG5cbiAgICAgICAgdGhpcy50aGVTdHJlYW1IYW5kbGVyLmZsdXNoKCk7XG4gICAgICAgIHRoaXMucXVldWVBY3Rpdml0aWVzID0gZmFsc2U7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJlamVjdChlKTtcbiAgICAgIH1cbiAgICB9KS5maW5hbGx5KCgpID0+IGFib3J0Q29udHJvbGxlci5hYm9ydCgpKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY29ubmVjdFdpdGhSZXRyeUFzeW5jKCkge1xuICAgIC8vIFRoaXMgZm9yLWxvb3Agd2lsbCBicmVhayB3aGVuIHNvbWVvbmUgY2FsbCBlbmQoKSBhbmQgaXQgd2lsbCBzaWduYWwgQ29ubmVjdGlvblN0YXR1cy5FbmRlZC5cbiAgICBmb3IgKDs7KSB7XG4gICAgICAvLyBDcmVhdGUgYSBuZXcgc2lnbmFsIGFuZCB3YWl0IGZvciBzb21lb25lIGtpY2tpbmcgb2ZmIHRoZSBjb25uZWN0aW9uOlxuICAgICAgLy8gLSBzdWJzY3JpYmUgdG8gYWN0aXZpdHkkLCBvcjtcbiAgICAgIC8vIC0gcmV0cmllcyBleGhhdXN0ZWQgKEZhaWxlZFRvQ29ubmVjdCksIHRoZW4sIHNvbWVvbmUgY2FsbCByZWNvbm5lY3QoKVxuICAgICAgYXdhaXQgKHRoaXMuY29ubmVjdERlZmVycmVkID0gY3JlYXRlRGVmZXJyZWQoKSkucHJvbWlzZTtcblxuICAgICAgbGV0IG51bVJldHJpZXMgPSBNQVhfUkVUUllfQ09VTlQ7XG5cbiAgICAgIHRoaXMuY29ubmVjdGlvblN0YXR1cyQubmV4dChDb25uZWN0aW9uU3RhdHVzLkNvbm5lY3RpbmcpO1xuXG4gICAgICB3aGlsZSAobnVtUmV0cmllcyA+IDApIHtcbiAgICAgICAgbnVtUmV0cmllcy0tO1xuXG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgIC8vIFRoaXMgcHJvbWlzZSB3aWxsIHJlamVjdC9yZXNvbHZlIHdoZW4gZGlzY29ubmVjdGVkLlxuICAgICAgICAgIGF3YWl0IHRoaXMuY29ubmVjdEFzeW5jKCk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElmIHNvbWVvbmUgY2FsbCBlbmQoKSB0byBicmVhayB0aGUgY29ubmVjdGlvbiwgd2Ugd2lsbCBuZXZlciBsaXN0ZW4gdG8gYW55IHJlY29ubmVjdCgpLlxuICAgICAgICBpZiAodGhpcy5jb25uZWN0aW9uU3RhdHVzJC5nZXRWYWx1ZSgpID09PSBDb25uZWN0aW9uU3RhdHVzLkVuZGVkKSB7XG4gICAgICAgICAgLy8gVGhpcyBpcyB0aGUgb25seSBwbGFjZSB0aGUgbG9vcCBpbiB0aGlzIGZ1bmN0aW9uIHdpbGwgYmUgYnJva2UuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gTWFrZSBzdXJlIHdlIGRvbid0IHNpZ25hbCBDb25uZWN0aW9uU3RhdHVzLkNvbm5lY3RpbmcgdHdpY2Ugb3IgbW9yZSB3aXRob3V0IGFuIGFjdHVhbCBjb25uZWN0aW9uLlxuICAgICAgICAvLyBTdWJzZXF1ZW50IHJldHJpZXMgc2hvdWxkIGJlIHRyYW5zcGFyZW50LlxuICAgICAgICBpZiAodGhpcy5jb25uZWN0aW9uU3RhdHVzJC5nZXRWYWx1ZSgpICE9PSBDb25uZWN0aW9uU3RhdHVzLkNvbm5lY3RpbmcpIHtcbiAgICAgICAgICB0aGlzLmNvbm5lY3Rpb25TdGF0dXMkLm5leHQoQ29ubmVjdGlvblN0YXR1cy5Db25uZWN0aW5nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElmIHRoZSBjdXJyZW50IGNvbm5lY3Rpb24gbGFzdGVkIGZvciBtb3JlIHRoYW4gYSBtaW51dGUsIHRoZSBwcmV2aW91cyBjb25uZWN0aW9uIGlzIGdvb2QsIHdoaWNoIG1lYW5zOlxuICAgICAgICAvLyAtIHdlIHNob3VsZCByZXNldCB0aGUgcmV0cnkgY291bnRlciwgYW5kO1xuICAgICAgICAvLyAtIHdlIHNob3VsZCByZWNvbm5lY3QgaW1tZWRpYXRlbHkuXG4gICAgICAgIGlmICg2MDAwMCA8IERhdGUubm93KCkgLSBzdGFydCkge1xuICAgICAgICAgIG51bVJldHJpZXMgPSBNQVhfUkVUUllfQ09VTlQ7XG4gICAgICAgIH0gZWxzZSBpZiAobnVtUmV0cmllcyA+IDApIHtcbiAgICAgICAgICAvLyBTbGVlcCBvbmx5IGlmIHdlIGFyZSBkb2luZyByZXRyeS4gT3RoZXJ3aXNlLCB3ZSBhcmUgZ29pbmcgdG8gYnJlYWsgdGhlIGxvb3AgYW5kIHNpZ25hbCBGYWlsZWRUb0Nvbm5lY3QuXG4gICAgICAgICAgYXdhaXQgbmV3IFByb21pc2UociA9PiBzZXRUaW1lb3V0KHIsIHRoaXMuZ2V0UmV0cnlEZWxheSgpKSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gVE9ETzogW1RFU1RdIE1ha2Ugc3VyZSBGYWlsZWRUb0Nvbm5lY3QgaXMgcmVwb3J0ZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgbGFzdCBkaXNjb25uZWN0aW9uLCBzaG91bGQgYmUgbm8gZ2V0UmV0cnlEZWxheSgpLlxuICAgICAgLy8gRmFpbGVkIHRvIHJlY29ubmVjdCBhZnRlciBtdWx0aXBsZSByZXRyaWVzLlxuICAgICAgdGhpcy5jb25uZWN0aW9uU3RhdHVzJC5uZXh0KENvbm5lY3Rpb25TdGF0dXMuRmFpbGVkVG9Db25uZWN0KTtcbiAgICB9XG5cbiAgICAvLyBOb3RlOiBObyBjb2RlIHdpbGwgaGl0IHRoaXMgbGluZS5cbiAgfVxuXG4gIC8vIFJldHVybnMgdGhlIGRlbGF5IGR1cmF0aW9uIGluIG1pbGxpc2Vjb25kc1xuICBwcml2YXRlIGdldFJldHJ5RGVsYXkoKSB7XG4gICAgcmV0dXJuIE1hdGguZmxvb3IoMzAwMCArIE1hdGgucmFuZG9tKCkgKiAxMjAwMCk7XG4gIH1cbn1cbiJdfQ==","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _get2 = _interopRequireDefault(require(\"@babel/runtime/helpers/get\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _classPrivateFieldGet4 = _interopRequireDefault(require(\"@babel/runtime/helpers/classPrivateFieldGet\"));\n\nvar _classPrivateFieldSet2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classPrivateFieldSet\"));\n\nvar _botframeworkStreaming = require(\"botframework-streaming\");\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nvar _connectCalled = /*#__PURE__*/new WeakMap();\n\nvar _handleNetworkInformationChange = /*#__PURE__*/new WeakMap();\n\nvar _initialNetworkInformationType = /*#__PURE__*/new WeakMap();\n\nvar _networkInformation = /*#__PURE__*/new WeakMap();\n\nvar WebSocketClientWithNetworkInformation = /*#__PURE__*/function (_WebSocketClient) {\n  (0, _inherits2[\"default\"])(WebSocketClientWithNetworkInformation, _WebSocketClient);\n\n  var _super = _createSuper(WebSocketClientWithNetworkInformation);\n\n  function WebSocketClientWithNetworkInformation(_ref) {\n    var _this;\n\n    var disconnectionHandler = _ref.disconnectionHandler,\n        networkInformation = _ref.networkInformation,\n        requestHandler = _ref.requestHandler,\n        url = _ref.url;\n    (0, _classCallCheck2[\"default\"])(this, WebSocketClientWithNetworkInformation);\n    _this = _super.call(this, {\n      disconnectionHandler: disconnectionHandler,\n      requestHandler: requestHandler,\n      url: url\n    });\n\n    _connectCalled.set((0, _assertThisInitialized2[\"default\"])(_this), {\n      writable: true,\n      value: false\n    });\n\n    _handleNetworkInformationChange.set((0, _assertThisInitialized2[\"default\"])(_this), {\n      writable: true,\n      value: function value() {\n        return (0, _classPrivateFieldGet4[\"default\"])((0, _assertThisInitialized2[\"default\"])(_this), _initialNetworkInformationType) === (0, _classPrivateFieldGet4[\"default\"])((0, _assertThisInitialized2[\"default\"])(_this), _networkInformation).type || _this.disconnect();\n      }\n    });\n\n    _initialNetworkInformationType.set((0, _assertThisInitialized2[\"default\"])(_this), {\n      writable: true,\n      value: void 0\n    });\n\n    _networkInformation.set((0, _assertThisInitialized2[\"default\"])(_this), {\n      writable: true,\n      value: void 0\n    });\n\n    (0, _classPrivateFieldSet2[\"default\"])((0, _assertThisInitialized2[\"default\"])(_this), _networkInformation, networkInformation);\n    return _this;\n  }\n\n  (0, _createClass2[\"default\"])(WebSocketClientWithNetworkInformation, [{\n    key: \"connect\",\n    value: // TODO: Better, the `NetworkInformation` instance should be passed to `BrowserWebSocketClient` -> `BrowserWebSocket`.\n    //       `BrowserWebSocket` is where it creates `WebSocket` object.\n    //       The `NetworkInformation` instance should accompany `WebSocket` and forcibly close it on abort.\n    //       Maybe `botframework-streaming` should accept ponyfills.\n    function connect() {\n      if ((0, _classPrivateFieldGet4[\"default\"])(this, _connectCalled)) {\n        console.warn('botframework-directlinejs: connect() can only be called once.');\n        return Promise.resolve();\n      }\n\n      (0, _classPrivateFieldSet2[\"default\"])(this, _connectCalled, true);\n\n      if ((0, _classPrivateFieldGet4[\"default\"])(this, _networkInformation)) {\n        var _classPrivateFieldGet2 = (0, _classPrivateFieldGet4[\"default\"])(this, _networkInformation),\n            initialType = _classPrivateFieldGet2.type;\n\n        (0, _classPrivateFieldSet2[\"default\"])(this, _initialNetworkInformationType, initialType);\n\n        if (initialType === 'none') {\n          console.warn('botframework-directlinejs: Failed to connect while offline.');\n          return Promise.reject(new Error('botframework-directlinejs: Failed to connect while offline.'));\n        }\n\n        (0, _classPrivateFieldGet4[\"default\"])(this, _networkInformation).addEventListener('change', (0, _classPrivateFieldGet4[\"default\"])(this, _handleNetworkInformationChange));\n      }\n\n      return (0, _get2[\"default\"])((0, _getPrototypeOf2[\"default\"])(WebSocketClientWithNetworkInformation.prototype), \"connect\", this).call(this);\n    }\n  }, {\n    key: \"disconnect\",\n    value: function disconnect() {\n      var _classPrivateFieldGet3;\n\n      (_classPrivateFieldGet3 = (0, _classPrivateFieldGet4[\"default\"])(this, _networkInformation)) === null || _classPrivateFieldGet3 === void 0 ? void 0 : _classPrivateFieldGet3.removeEventListener('change', (0, _classPrivateFieldGet4[\"default\"])(this, _handleNetworkInformationChange));\n      (0, _get2[\"default\"])((0, _getPrototypeOf2[\"default\"])(WebSocketClientWithNetworkInformation.prototype), \"disconnect\", this).call(this);\n    }\n  }]);\n  return WebSocketClientWithNetworkInformation;\n}(_botframeworkStreaming.WebSocketClient);\n\nexports[\"default\"] = WebSocketClientWithNetworkInformation;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdHJlYW1pbmcvV2ViU29ja2V0Q2xpZW50V2l0aE5ldHdvcmtJbmZvcm1hdGlvbi50cyJdLCJuYW1lcyI6WyJXZWJTb2NrZXRDbGllbnRXaXRoTmV0d29ya0luZm9ybWF0aW9uIiwiZGlzY29ubmVjdGlvbkhhbmRsZXIiLCJuZXR3b3JrSW5mb3JtYXRpb24iLCJyZXF1ZXN0SGFuZGxlciIsInVybCIsInR5cGUiLCJkaXNjb25uZWN0IiwiY29uc29sZSIsIndhcm4iLCJQcm9taXNlIiwicmVzb2x2ZSIsImluaXRpYWxUeXBlIiwicmVqZWN0IiwiRXJyb3IiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIldlYlNvY2tldENsaWVudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7Ozs7Ozs7Ozs7Ozs7O0lBZ0JxQkEscUM7Ozs7O0FBQ25CLHVEQUs4QztBQUFBOztBQUFBLFFBSjVDQyxvQkFJNEMsUUFKNUNBLG9CQUk0QztBQUFBLFFBSDVDQyxrQkFHNEMsUUFINUNBLGtCQUc0QztBQUFBLFFBRjVDQyxjQUU0QyxRQUY1Q0EsY0FFNEM7QUFBQSxRQUQ1Q0MsR0FDNEMsUUFENUNBLEdBQzRDO0FBQUE7QUFDNUMsOEJBQU07QUFDSkgsTUFBQUEsb0JBQW9CLEVBQXBCQSxvQkFESTtBQUVKRSxNQUFBQSxjQUFjLEVBQWRBLGNBRkk7QUFHSkMsTUFBQUEsR0FBRyxFQUFIQTtBQUhJLEtBQU47O0FBRDRDO0FBQUE7QUFBQSxhQVVwQjtBQVZvQjs7QUFBQTtBQUFBO0FBQUEsYUFhWjtBQUFBLGVBQ2hDLDJIQUF3Qyw0R0FBeUJDLElBQWpFLElBQXlFLE1BQUtDLFVBQUwsRUFEekM7QUFBQTtBQWJZOztBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUFBO0FBQUE7QUFBQTtBQUFBOztBQU81QyxnSEFBMkJKLGtCQUEzQjtBQVA0QztBQVE3Qzs7OztXQVVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXlCO0FBQ3ZCLGlEQUFJLElBQUosbUJBQXlCO0FBQ3ZCSyxRQUFBQSxPQUFPLENBQUNDLElBQVIsQ0FBYSwrREFBYjtBQUVBLGVBQU9DLE9BQU8sQ0FBQ0MsT0FBUixFQUFQO0FBQ0Q7O0FBRUQsbUVBQXNCLElBQXRCOztBQUVBLGlEQUFJLElBQUosd0JBQThCO0FBQzVCLDRFQUE4QixJQUE5QjtBQUFBLFlBQWNDLFdBQWQsMEJBQVFOLElBQVI7O0FBRUEscUZBQXNDTSxXQUF0Qzs7QUFFQSxZQUFJQSxXQUFXLEtBQUssTUFBcEIsRUFBNEI7QUFDMUJKLFVBQUFBLE9BQU8sQ0FBQ0MsSUFBUixDQUFhLDZEQUFiO0FBRUEsaUJBQU9DLE9BQU8sQ0FBQ0csTUFBUixDQUFlLElBQUlDLEtBQUosQ0FBVSw2REFBVixDQUFmLENBQVA7QUFDRDs7QUFFRCwwRUFBeUJDLGdCQUF6QixDQUEwQyxRQUExQyx5Q0FBb0QsSUFBcEQ7QUFDRDs7QUFFRDtBQUNEOzs7V0FFRCxzQkFBYTtBQUFBOztBQUNYLG1MQUEwQkMsbUJBQTFCLENBQThDLFFBQTlDLHlDQUF3RCxJQUF4RDtBQUNBO0FBQ0Q7OztFQXpEZ0VDLHNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgV2ViU29ja2V0Q2xpZW50IH0gZnJvbSAnYm90ZnJhbWV3b3JrLXN0cmVhbWluZyc7XG5cbmltcG9ydCB0eXBlIHsgUmVxdWVzdEhhbmRsZXIgfSBmcm9tICdib3RmcmFtZXdvcmstc3RyZWFtaW5nJztcblxudHlwZSBXZWJTb2NrZXRDbGllbnRXaXRoTmV0d29ya0luZm9ybWF0aW9uSW5pdCA9IHtcbiAgLyoqXG4gICAqIEdldHMgb3Igc2V0cyB0aGUgb2JzZXJ2ZXIgZnVuY3Rpb24gZm9yIGRpc2Nvbm5lY3Rpb24gb3IgZXJyb3Igc2VuZGluZy9yZWNlaXZpbmcgdGhyb3VnaCBXZWJTb2NrZXQuXG4gICAqXG4gICAqIE5vdGU6IFRoaXMgZnVuY3Rpb24gY291bGQgYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzLCB0aGUgY2FsbGVlIGlzIGV4cGVjdGVkIHRvIGlnbm9yZSBzdWJzZXF1ZW50IGNhbGxzLlxuICAgKi9cbiAgZGlzY29ubmVjdGlvbkhhbmRsZXI6IChtZXNzYWdlOiBzdHJpbmcpID0+IHZvaWQ7XG4gIG5ldHdvcmtJbmZvcm1hdGlvbj86IE5ldHdvcmtJbmZvcm1hdGlvbiB8IHVuZGVmaW5lZDtcbiAgcmVxdWVzdEhhbmRsZXI6IFJlcXVlc3RIYW5kbGVyO1xuICB1cmw6IHN0cmluZztcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFdlYlNvY2tldENsaWVudFdpdGhOZXR3b3JrSW5mb3JtYXRpb24gZXh0ZW5kcyBXZWJTb2NrZXRDbGllbnQge1xuICBjb25zdHJ1Y3Rvcih7XG4gICAgZGlzY29ubmVjdGlvbkhhbmRsZXIsXG4gICAgbmV0d29ya0luZm9ybWF0aW9uLFxuICAgIHJlcXVlc3RIYW5kbGVyLFxuICAgIHVybFxuICB9OiBXZWJTb2NrZXRDbGllbnRXaXRoTmV0d29ya0luZm9ybWF0aW9uSW5pdCkge1xuICAgIHN1cGVyKHtcbiAgICAgIGRpc2Nvbm5lY3Rpb25IYW5kbGVyLFxuICAgICAgcmVxdWVzdEhhbmRsZXIsXG4gICAgICB1cmxcbiAgICB9KTtcblxuICAgIHRoaXMuI25ldHdvcmtJbmZvcm1hdGlvbiA9IG5ldHdvcmtJbmZvcm1hdGlvbjtcbiAgfVxuXG4gICNjb25uZWN0Q2FsbGVkOiBib29sZWFuID0gZmFsc2U7XG4gIC8vIEFjY29yZGluZyB0byBXM0MgTmV0d29yayBJbmZvcm1hdGlvbiBBUEksIGh0dHBzOi8vd2ljZy5naXRodWIuaW8vbmV0aW5mby8jaGFuZGxpbmctY2hhbmdlcy10by10aGUtdW5kZXJseWluZy1jb25uZWN0aW9uLlxuICAvLyBOZXR3b3JrSW5mb3JtYXRpb24ub25DaGFuZ2UgZXZlbnQgd2lsbCBiZSBmaXJlZCBvbiBhbnkgY2hhbmdlcyB0bzogYGRvd25saW5rTWF4YCwgYHR5cGVgLCBgZG93bmxpbmtgLCBvciBgcnR0YC5cbiAgI2hhbmRsZU5ldHdvcmtJbmZvcm1hdGlvbkNoYW5nZSA9ICgpID0+XG4gICAgdGhpcy4jaW5pdGlhbE5ldHdvcmtJbmZvcm1hdGlvblR5cGUgPT09IHRoaXMuI25ldHdvcmtJbmZvcm1hdGlvbi50eXBlIHx8IHRoaXMuZGlzY29ubmVjdCgpO1xuICAjaW5pdGlhbE5ldHdvcmtJbmZvcm1hdGlvblR5cGU6IE5ldHdvcmtJbmZvcm1hdGlvblsndHlwZSddO1xuICAjbmV0d29ya0luZm9ybWF0aW9uOiBOZXR3b3JrSW5mb3JtYXRpb247XG5cbiAgLy8gVE9ETzogQmV0dGVyLCB0aGUgYE5ldHdvcmtJbmZvcm1hdGlvbmAgaW5zdGFuY2Ugc2hvdWxkIGJlIHBhc3NlZCB0byBgQnJvd3NlcldlYlNvY2tldENsaWVudGAgLT4gYEJyb3dzZXJXZWJTb2NrZXRgLlxuICAvLyAgICAgICBgQnJvd3NlcldlYlNvY2tldGAgaXMgd2hlcmUgaXQgY3JlYXRlcyBgV2ViU29ja2V0YCBvYmplY3QuXG4gIC8vICAgICAgIFRoZSBgTmV0d29ya0luZm9ybWF0aW9uYCBpbnN0YW5jZSBzaG91bGQgYWNjb21wYW55IGBXZWJTb2NrZXRgIGFuZCBmb3JjaWJseSBjbG9zZSBpdCBvbiBhYm9ydC5cbiAgLy8gICAgICAgTWF5YmUgYGJvdGZyYW1ld29yay1zdHJlYW1pbmdgIHNob3VsZCBhY2NlcHQgcG9ueWZpbGxzLlxuICBjb25uZWN0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLiNjb25uZWN0Q2FsbGVkKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ2JvdGZyYW1ld29yay1kaXJlY3RsaW5lanM6IGNvbm5lY3QoKSBjYW4gb25seSBiZSBjYWxsZWQgb25jZS4nKTtcblxuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgIH1cblxuICAgIHRoaXMuI2Nvbm5lY3RDYWxsZWQgPSB0cnVlO1xuXG4gICAgaWYgKHRoaXMuI25ldHdvcmtJbmZvcm1hdGlvbikge1xuICAgICAgY29uc3QgeyB0eXBlOiBpbml0aWFsVHlwZSB9ID0gdGhpcy4jbmV0d29ya0luZm9ybWF0aW9uO1xuXG4gICAgICB0aGlzLiNpbml0aWFsTmV0d29ya0luZm9ybWF0aW9uVHlwZSA9IGluaXRpYWxUeXBlO1xuXG4gICAgICBpZiAoaW5pdGlhbFR5cGUgPT09ICdub25lJykge1xuICAgICAgICBjb25zb2xlLndhcm4oJ2JvdGZyYW1ld29yay1kaXJlY3RsaW5lanM6IEZhaWxlZCB0byBjb25uZWN0IHdoaWxlIG9mZmxpbmUuJyk7XG5cbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcignYm90ZnJhbWV3b3JrLWRpcmVjdGxpbmVqczogRmFpbGVkIHRvIGNvbm5lY3Qgd2hpbGUgb2ZmbGluZS4nKSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuI25ldHdvcmtJbmZvcm1hdGlvbi5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCB0aGlzLiNoYW5kbGVOZXR3b3JrSW5mb3JtYXRpb25DaGFuZ2UpO1xuICAgIH1cblxuICAgIHJldHVybiBzdXBlci5jb25uZWN0KCk7XG4gIH1cblxuICBkaXNjb25uZWN0KCkge1xuICAgIHRoaXMuI25ldHdvcmtJbmZvcm1hdGlvbj8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgdGhpcy4jaGFuZGxlTmV0d29ya0luZm9ybWF0aW9uQ2hhbmdlKTtcbiAgICBzdXBlci5kaXNjb25uZWN0KCk7XG4gIH1cbn1cbiJdfQ==","(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.BFSE = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){\n\"use strict\";\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\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;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PayloadAssembler = void 0;\nvar subscribableStream_1 = require(\"../subscribableStream\");\nvar payloads_1 = require(\"../payloads\");\nvar contentStream_1 = require(\"../contentStream\");\n/**\n * Assembles payloads for streaming library.\n *\n * @internal\n */\nvar PayloadAssembler = /** @class */ (function () {\n    /**\n     * Initializes a new instance of the [PayloadAssembler](xref:botframework-streaming.PayloadAssembler) class.\n     *\n     * @param streamManager The [StreamManager](xref:botframework-streaming.StreamManager) managing the stream being assembled.\n     * @param params Parameters for a streaming assembler.\n     */\n    function PayloadAssembler(streamManager, params) {\n        this.streamManager = streamManager;\n        this._byteOrderMark = 0xfeff;\n        this._utf = 'utf8';\n        if (params.header) {\n            this.id = params.header.id;\n            this.payloadType = params.header.payloadType;\n            this.contentLength = params.header.payloadLength;\n            this.end = params.header.end;\n        }\n        else {\n            this.id = params.id;\n        }\n        if (!this.id) {\n            throw Error('An ID must be supplied when creating an assembler.');\n        }\n        this._onCompleted = params.onCompleted;\n    }\n    /**\n     * Retrieves the assembler's payload as a stream.\n     *\n     * @returns A [SubscribableStream](xref:botframework-streaming.SubscribableStream) of the assembler's payload.\n     */\n    PayloadAssembler.prototype.getPayloadStream = function () {\n        if (!this.stream) {\n            this.stream = this.createPayloadStream();\n        }\n        return this.stream;\n    };\n    /**\n     * The action the assembler executes when new bytes are received on the incoming stream.\n     *\n     * @param header The stream's Header.\n     * @param stream The incoming stream being assembled.\n     * @param _contentLength The length of the stream, if finite.\n     */\n    PayloadAssembler.prototype.onReceive = function (header, stream, _contentLength) {\n        this.end = header.end;\n        if (header.payloadType === payloads_1.PayloadTypes.response || header.payloadType === payloads_1.PayloadTypes.request) {\n            this.process(stream).then().catch();\n        }\n        else if (header.end) {\n            stream.end();\n        }\n    };\n    /**\n     * Closes the assembler.\n     */\n    PayloadAssembler.prototype.close = function () {\n        this.streamManager.closeStream(this.id);\n    };\n    /**\n     * Creates a new [SubscribableStream](xref:botframework-streaming.SubscribableStream) instance.\n     *\n     * @returns The new stream ready for consumption.\n     */\n    PayloadAssembler.prototype.createPayloadStream = function () {\n        return new subscribableStream_1.SubscribableStream();\n    };\n    PayloadAssembler.prototype.payloadFromJson = function (json) {\n        return JSON.parse(json.charCodeAt(0) === this._byteOrderMark ? json.slice(1) : json);\n    };\n    PayloadAssembler.prototype.stripBOM = function (input) {\n        return input.charCodeAt(0) === this._byteOrderMark ? input.slice(1) : input;\n    };\n    PayloadAssembler.prototype.process = function (stream) {\n        return __awaiter(this, void 0, void 0, function () {\n            var streamData, streamDataAsString;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        streamData = stream.read(stream.length);\n                        if (!streamData) {\n                            return [2 /*return*/];\n                        }\n                        streamDataAsString = streamData.toString(this._utf);\n                        if (!(this.payloadType === payloads_1.PayloadTypes.request)) return [3 /*break*/, 2];\n                        return [4 /*yield*/, this.processRequest(streamDataAsString)];\n                    case 1:\n                        _a.sent();\n                        return [3 /*break*/, 4];\n                    case 2:\n                        if (!(this.payloadType === payloads_1.PayloadTypes.response)) return [3 /*break*/, 4];\n                        return [4 /*yield*/, this.processResponse(streamDataAsString)];\n                    case 3:\n                        _a.sent();\n                        _a.label = 4;\n                    case 4: return [2 /*return*/];\n                }\n            });\n        });\n    };\n    PayloadAssembler.prototype.processResponse = function (streamDataAsString) {\n        return __awaiter(this, void 0, void 0, function () {\n            var responsePayload, receiveResponse;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        responsePayload = this.payloadFromJson(this.stripBOM(streamDataAsString));\n                        receiveResponse = { streams: [], statusCode: responsePayload.statusCode };\n                        return [4 /*yield*/, this.processStreams(responsePayload, receiveResponse)];\n                    case 1:\n                        _a.sent();\n                        return [2 /*return*/];\n                }\n            });\n        });\n    };\n    PayloadAssembler.prototype.processRequest = function (streamDataAsString) {\n        return __awaiter(this, void 0, void 0, function () {\n            var requestPayload, receiveRequest;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        requestPayload = this.payloadFromJson(streamDataAsString);\n                        receiveRequest = { streams: [], path: requestPayload.path, verb: requestPayload.verb };\n                        return [4 /*yield*/, this.processStreams(requestPayload, receiveRequest)];\n                    case 1:\n                        _a.sent();\n                        return [2 /*return*/];\n                }\n            });\n        });\n    };\n    PayloadAssembler.prototype.processStreams = function (responsePayload, receiveResponse) {\n        var _a;\n        return __awaiter(this, void 0, void 0, function () {\n            var _this = this;\n            return __generator(this, function (_b) {\n                switch (_b.label) {\n                    case 0:\n                        (_a = responsePayload.streams) === null || _a === void 0 ? void 0 : _a.forEach(function (responseStream) {\n                            var _a;\n                            // There was a bug in how streams were handled. In .NET, the StreamDescription definiton mapped the\n                            // \"type\" JSON property to `contentType`, but in Typescript there was no mapping. This is a workaround\n                            // to resolve this inconsistency.\n                            //\n                            // .NET code:\n                            // https://github.com/microsoft/botbuilder-dotnet/blob/a79036ddf6625ec3fd68a6f7295886eb7831bc1c/libraries/Microsoft.Bot.Streaming/Payloads/Models/StreamDescription.cs#L28-L29\n                            var contentType = (_a = responseStream.type) !== null && _a !== void 0 ? _a : responseStream.contentType;\n                            var contentAssembler = _this.streamManager.getPayloadAssembler(responseStream.id);\n                            contentAssembler.payloadType = contentType;\n                            contentAssembler.contentLength = responseStream.length;\n                            receiveResponse.streams.push(new contentStream_1.ContentStream(responseStream.id, contentAssembler));\n                        });\n                        return [4 /*yield*/, this._onCompleted(this.id, receiveResponse)];\n                    case 1:\n                        _b.sent();\n                        return [2 /*return*/];\n                }\n            });\n        });\n    };\n    return PayloadAssembler;\n}());\nexports.PayloadAssembler = PayloadAssembler;\n\n},{\"../contentStream\":2,\"../payloads\":16,\"../subscribableStream\":27}],2:[function(require,module,exports){\n\"use strict\";\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\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;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ContentStream = void 0;\n/**\n * A stream of fixed or infinite length containing content to be decoded.\n */\nvar ContentStream = /** @class */ (function () {\n    /**\n     * Initializes a new instance of the [ContentStream](xref:botframework-streaming.ContentStream) class.\n     *\n     * @param id The ID assigned to this instance.\n     * @param assembler The [PayloadAssembler](xref:botframework-streaming.PayloadAssembler) assigned to this instance.\n     */\n    function ContentStream(id, assembler) {\n        if (!assembler) {\n            throw Error('Null Argument Exception');\n        }\n        this.id = id;\n        this.assembler = assembler;\n    }\n    Object.defineProperty(ContentStream.prototype, \"contentType\", {\n        /**\n         * Gets the name of the type of the object contained within this [ContentStream](xref:botframework-streaming.ContentStream).\n         *\n         * @returns The [PayloadType](xref:botframework-streaming.PayloadType) of this [ContentStream](xref:botframework-streaming.ContentStream).\n         */\n        get: function () {\n            return this.assembler.payloadType;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(ContentStream.prototype, \"length\", {\n        /**\n         * Gets the length of this [ContentStream](xref:botframework-streaming.ContentStream).\n         *\n         * @returns A number representing the length of this [ContentStream](xref:botframework-streaming.ContentStream).\n         */\n        get: function () {\n            return this.assembler.contentLength;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    /**\n     * Gets the data contained within this [ContentStream](xref:botframework-streaming.ContentStream).\n     *\n     * @returns This [ContentStream's](xref:botframework-streaming.ContentStream) [SubscribableStream](xref:botframework-streaming.SubscribableStream).\n     */\n    ContentStream.prototype.getStream = function () {\n        if (!this.stream) {\n            this.stream = this.assembler.getPayloadStream();\n        }\n        return this.stream;\n    };\n    /**\n     * Closes the assembler.\n     */\n    ContentStream.prototype.cancel = function () {\n        this.assembler.close();\n    };\n    /**\n     * Gets the [SubscribableStream](xref:botframework-streaming.SubscribableStream) content as a string.\n     *\n     * @returns A string Promise with [SubscribableStream](xref:botframework-streaming.SubscribableStream) content.\n     */\n    ContentStream.prototype.readAsString = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            var bufferArray;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0: return [4 /*yield*/, this.readAll()];\n                    case 1:\n                        bufferArray = (_a.sent()).bufferArray;\n                        return [2 /*return*/, (bufferArray || []).map(function (result) { return result.toString('utf8'); }).join('')];\n                }\n            });\n        });\n    };\n    /**\n     * Gets the [SubscribableStream](xref:botframework-streaming.SubscribableStream) content as a typed JSON object.\n     *\n     * @returns A typed object Promise with `SubscribableStream` content.\n     */\n    ContentStream.prototype.readAsJson = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            var stringToParse;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0: return [4 /*yield*/, this.readAsString()];\n                    case 1:\n                        stringToParse = _a.sent();\n                        return [2 /*return*/, JSON.parse(stringToParse)];\n                }\n            });\n        });\n    };\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    ContentStream.prototype.readAll = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            var allData, count, stream, chunk, readToEnd;\n            var _this = this;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        allData = [];\n                        count = 0;\n                        stream = this.getStream();\n                        // populate the array with any existing buffers\n                        while (count < stream.length) {\n                            chunk = stream.read(stream.length);\n                            allData.push(chunk);\n                            count += chunk.length;\n                        }\n                        if (!(count < this.length)) return [3 /*break*/, 2];\n                        readToEnd = new Promise(function (resolve) {\n                            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n                            var callback = function (cs) { return function (chunk) {\n                                allData.push(chunk);\n                                count += chunk.length;\n                                if (count === cs.length) {\n                                    resolve(true);\n                                }\n                            }; };\n                            stream.subscribe(callback(_this));\n                        });\n                        return [4 /*yield*/, readToEnd];\n                    case 1:\n                        _a.sent();\n                        _a.label = 2;\n                    case 2: return [2 /*return*/, { bufferArray: allData, size: count }];\n                }\n            });\n        });\n    };\n    return ContentStream;\n}());\nexports.ContentStream = ContentStream;\n\n},{}],3:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CancelDisassembler = void 0;\n/**\n * Streaming cancel disassembler.\n */\nvar CancelDisassembler = /** @class */ (function () {\n    /**\n     * Initializes a new instance of the [CancelDisassembler](xref:botframework-streaming.CancelDisassembler) class.\n     *\n     * @param sender The [PayloadSender](xref:botframework-streaming.PayloadSender) that this Cancel request will be sent by.\n     * @param id The ID of the Stream to cancel.\n     * @param payloadType The type of the Stream that is being cancelled.\n     */\n    function CancelDisassembler(sender, id, payloadType) {\n        this.sender = sender;\n        this.id = id;\n        this.payloadType = payloadType;\n    }\n    /**\n     * Initiates the process of disassembling the request and signals the [PayloadSender](xref:botframework-streaming.PayloadSender) to begin sending.\n     */\n    CancelDisassembler.prototype.disassemble = function () {\n        var header = {\n            payloadType: this.payloadType,\n            payloadLength: 0,\n            id: this.id,\n            end: true,\n        };\n        this.sender.sendPayload(header);\n    };\n    return CancelDisassembler;\n}());\nexports.CancelDisassembler = CancelDisassembler;\n\n},{}],4:[function(require,module,exports){\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\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;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HttpContentStreamDisassembler = void 0;\nvar payloadDisassembler_1 = require(\"./payloadDisassembler\");\nvar payloads_1 = require(\"../payloads\");\n/**\n * Disassembler for Http content stream\n */\nvar HttpContentStreamDisassembler = /** @class */ (function (_super) {\n    __extends(HttpContentStreamDisassembler, _super);\n    /**\n     * Initializes a new instance of the [HttpContentStreamDisassembler](xref:botframework-streaming.HttpContentStreamDisassembler) class.\n     *\n     * @param sender The [PayloadSender](xref:botframework-streaming.PayloadSender) to send the disassembled data to.\n     * @param contentStream The [HttpContentStream](xref:botframework-streaming.HttpContentStream) to be disassembled.\n     */\n    function HttpContentStreamDisassembler(sender, contentStream) {\n        var _this = _super.call(this, sender, contentStream.id) || this;\n        _this.payloadType = payloads_1.PayloadTypes.stream;\n        _this.contentStream = contentStream;\n        return _this;\n    }\n    /**\n     * Gets the stream this disassembler is operating on.\n     *\n     * @returns An [IStreamWrapper](xref:botframework-streaming.IStreamWrapper) with a Subscribable Strea.\n     */\n    HttpContentStreamDisassembler.prototype.getStream = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            var stream;\n            return __generator(this, function (_a) {\n                stream = this.contentStream.content.getStream();\n                return [2 /*return*/, { stream: stream, streamLength: stream.length }];\n            });\n        });\n    };\n    return HttpContentStreamDisassembler;\n}(payloadDisassembler_1.PayloadDisassembler));\nexports.HttpContentStreamDisassembler = HttpContentStreamDisassembler;\n\n},{\"../payloads\":16,\"./payloadDisassembler\":5}],5:[function(require,module,exports){\n\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\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;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PayloadDisassembler = void 0;\nvar subscribableStream_1 = require(\"../subscribableStream\");\n/**\n * Base class streaming payload disassembling.\n */\nvar PayloadDisassembler = /** @class */ (function () {\n    /**\n     * Initializes a new instance of the [PayloadDisassembler](xref:botframework-streaming.PayloadDisassembler) class.\n     *\n     * @param sender The [PayloadSender](xref:botframework-streaming.PayloadSender) used to send the disassembled payload chunks.\n     * @param id The ID of this disassembler.\n     */\n    function PayloadDisassembler(sender, id) {\n        this.sender = sender;\n        this.id = id;\n    }\n    /**\n     * Serializes the item into the [IStreamWrapper](xref:botframework-streaming.IStreamWrapper) that exposes the stream and length of the result.\n     *\n     * @param item The item to be serialized.\n     * @returns The stream containing the serialized item and the length of the stream.\n     */\n    PayloadDisassembler.serialize = function (item) {\n        var stream = new subscribableStream_1.SubscribableStream();\n        stream.write(JSON.stringify(item));\n        stream.end();\n        return { stream: stream, streamLength: stream.length };\n    };\n    /**\n     * Begins the process of disassembling a payload and sending the resulting chunks to the [PayloadSender](xref:botframework-streaming.PayloadSender) to dispatch over the transport.\n     *\n     * @returns A completed Promise after the disassembled payload has been sent.\n     */\n    PayloadDisassembler.prototype.disassemble = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            var _a, stream, streamLength;\n            return __generator(this, function (_b) {\n                switch (_b.label) {\n                    case 0: return [4 /*yield*/, this.getStream()];\n                    case 1:\n                        _a = _b.sent(), stream = _a.stream, streamLength = _a.streamLength;\n                        this.stream = stream;\n                        this.streamLength = streamLength;\n                        return [2 /*return*/, this.send()];\n                }\n            });\n        });\n    };\n    /**\n     * Begins the process of disassembling a payload and signals the [PayloadSender](xref:botframework-streaming.PayloadSender).\n     */\n    PayloadDisassembler.prototype.send = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            var header;\n            return __generator(this, function (_a) {\n                header = {\n                    payloadType: this.payloadType,\n                    payloadLength: this.streamLength,\n                    id: this.id,\n                    end: true,\n                };\n                this.sender.sendPayload(header, this.stream);\n                return [2 /*return*/];\n            });\n        });\n    };\n    return PayloadDisassembler;\n}());\nexports.PayloadDisassembler = PayloadDisassembler;\n\n},{\"../subscribableStream\":27}],6:[function(require,module,exports){\n\"use strict\";\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\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;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RequestDisassembler = void 0;\nvar payloadTypes_1 = require(\"../payloads/payloadTypes\");\nvar payloadDisassembler_1 = require(\"./payloadDisassembler\");\n/**\n * Streaming request disassembler.\n */\nvar RequestDisassembler = /** @class */ (function (_super) {\n    __extends(RequestDisassembler, _super);\n    /**\n     * Initializes a new instance of the [RequestDisassembler](xref:botframework-streaming.RequestDisassembler) class.\n     *\n     * @param sender The [PayloadSender](xref:botframework-streaming.PayloadSender) to send the disassembled data to.\n     * @param id The ID of this disassembler.\n     * @param request The request to be disassembled.\n     */\n    function RequestDisassembler(sender, id, request) {\n        var _this = _super.call(this, sender, id) || this;\n        _this.request = request;\n        _this.payloadType = payloadTypes_1.PayloadTypes.request;\n        return _this;\n    }\n    /**\n     * Gets the stream this disassembler is operating on.\n     *\n     * @returns An [IStreamWrapper](xref:botframework-streaming.IStreamWrapper) with a Subscribable Stream.\n     */\n    RequestDisassembler.prototype.getStream = function () {\n        var _a, _b, _c, _d;\n        return __awaiter(this, void 0, void 0, function () {\n            var payload;\n            return __generator(this, function (_e) {\n                payload = { verb: (_a = this.request) === null || _a === void 0 ? void 0 : _a.verb, path: (_b = this.request) === null || _b === void 0 ? void 0 : _b.path, streams: [] };\n                (_d = (_c = this.request) === null || _c === void 0 ? void 0 : _c.streams) === null || _d === void 0 ? void 0 : _d.forEach(function (stream) {\n                    payload.streams.push(stream.description);\n                });\n                return [2 /*return*/, payloadDisassembler_1.PayloadDisassembler.serialize(payload)];\n            });\n        });\n    };\n    return RequestDisassembler;\n}(payloadDisassembler_1.PayloadDisassembler));\nexports.RequestDisassembler = RequestDisassembler;\n\n},{\"../payloads/payloadTypes\":19,\"./payloadDisassembler\":5}],7:[function(require,module,exports){\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\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;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ResponseDisassembler = void 0;\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nvar payloadTypes_1 = require(\"../payloads/payloadTypes\");\nvar payloadDisassembler_1 = require(\"./payloadDisassembler\");\n/**\n * Streaming response disassembler.\n */\nvar ResponseDisassembler = /** @class */ (function (_super) {\n    __extends(ResponseDisassembler, _super);\n    /**\n     * Initializes a new instance of the [ResponseDisassembler](xref:botframework-streaming.ResponseDisassembler) class.\n     *\n     * @param sender The [PayloadSender](xref:botframework-streaming.PayloadSender) to send the disassembled data to.\n     * @param id The ID of this disassembler.\n     * @param response The response to be disassembled.\n     */\n    function ResponseDisassembler(sender, id, response) {\n        var _this = _super.call(this, sender, id) || this;\n        _this.payloadType = payloadTypes_1.PayloadTypes.response;\n        _this.response = response;\n        return _this;\n    }\n    /**\n     * Gets the stream this disassembler is operating on.\n     *\n     * @returns An [IStreamWrapper](xref:botframework-streaming.IStreamWrapper) with a Subscribable Stream.\n     */\n    ResponseDisassembler.prototype.getStream = function () {\n        var _a;\n        return __awaiter(this, void 0, void 0, function () {\n            var payload;\n            return __generator(this, function (_b) {\n                payload = { statusCode: this.response.statusCode, streams: [] };\n                (_a = this.response.streams) === null || _a === void 0 ? void 0 : _a.forEach(function (_a) {\n                    var description = _a.description;\n                    payload.streams.push({\n                        id: description.id,\n                        contentType: description.type,\n                        length: description.length,\n                    });\n                });\n                return [2 /*return*/, payloadDisassembler_1.PayloadDisassembler.serialize(payload)];\n            });\n        });\n    };\n    return ResponseDisassembler;\n}(payloadDisassembler_1.PayloadDisassembler));\nexports.ResponseDisassembler = ResponseDisassembler;\n\n},{\"../payloads/payloadTypes\":19,\"./payloadDisassembler\":5}],8:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HttpContent = exports.HttpContentStream = void 0;\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nvar protocol_base_1 = require(\"./utilities/protocol-base\");\n/**\n * An attachment contained within a StreamingRequest's stream collection, which itself contains any form of media item.\n */\nvar HttpContentStream = /** @class */ (function () {\n    /**\n     * Initializes a new instance of the [HttpContentStream](xref:botframework-streaming.HttpContentStream) class.\n     *\n     * @param content The [HttpContent](xref:botframework-streaming.HttpContent) to assign to the [HttpContentStream](xref:botframework-streaming.HttpContentStream).\n     */\n    function HttpContentStream(content) {\n        var _a, _b, _c, _d, _e, _f;\n        this.content = content;\n        this.id = (0, protocol_base_1.generateGuid)();\n        this.description = {\n            id: this.id,\n            type: (_c = (_b = (_a = this.content) === null || _a === void 0 ? void 0 : _a.headers) === null || _b === void 0 ? void 0 : _b.type) !== null && _c !== void 0 ? _c : 'unknown',\n            length: (_f = (_e = (_d = this.content) === null || _d === void 0 ? void 0 : _d.headers) === null || _e === void 0 ? void 0 : _e.contentLength) !== null && _f !== void 0 ? _f : 0,\n        };\n    }\n    return HttpContentStream;\n}());\nexports.HttpContentStream = HttpContentStream;\n/**\n * The HttpContent class that contains a [SubscribableStream](xref:botframework-streaming.SubscribableStream).\n */\nvar HttpContent = /** @class */ (function () {\n    /**\n     * Initializes a new instance of the [HttpContent](xref:botframework-streaming.HttpContent) class.\n     *\n     * @param headers The Streaming Http content header definition.\n     * @param stream The stream of buffered data.\n     */\n    function HttpContent(headers, stream) {\n        this.headers = headers;\n        this.stream = stream;\n    }\n    /**\n     * Gets the data contained within this [HttpContent](xref:botframework-streaming.HttpContent).\n     *\n     * @returns This [HttpContent's](xref:botframework-streaming.HttpContent) [SubscribableStream](xref:botframework-streaming.SubscribableStream) member.\n     */\n    HttpContent.prototype.getStream = function () {\n        return this.stream;\n    };\n    return HttpContent;\n}());\nexports.HttpContent = HttpContent;\n\n},{\"./utilities/protocol-base\":28}],9:[function(require,module,exports){\n\"use strict\";\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WebSocketClient = exports.BrowserWebSocket = exports.SubscribableStream = exports.StreamingResponse = exports.StreamingRequest = exports.RequestHandler = exports.HttpContent = exports.ContentStream = void 0;\nvar contentStream_1 = require(\"./contentStream\");\nObject.defineProperty(exports, \"ContentStream\", { enumerable: true, get: function () { return contentStream_1.ContentStream; } });\nvar httpContentStream_1 = require(\"./httpContentStream\");\nObject.defineProperty(exports, \"HttpContent\", { enumerable: true, get: function () { return httpContentStream_1.HttpContent; } });\nvar requestHandler_1 = require(\"./requestHandler\");\nObject.defineProperty(exports, \"RequestHandler\", { enumerable: true, get: function () { return requestHandler_1.RequestHandler; } });\nvar streamingRequest_1 = require(\"./streamingRequest\");\nObject.defineProperty(exports, \"StreamingRequest\", { enumerable: true, get: function () { return streamingRequest_1.StreamingRequest; } });\nvar streamingResponse_1 = require(\"./streamingResponse\");\nObject.defineProperty(exports, \"StreamingResponse\", { enumerable: true, get: function () { return streamingResponse_1.StreamingResponse; } });\nvar subscribableStream_1 = require(\"./subscribableStream\");\nObject.defineProperty(exports, \"SubscribableStream\", { enumerable: true, get: function () { return subscribableStream_1.SubscribableStream; } });\nvar index_browser_1 = require(\"./webSocket/index-browser\");\nObject.defineProperty(exports, \"BrowserWebSocket\", { enumerable: true, get: function () { return index_browser_1.BrowserWebSocket; } });\nObject.defineProperty(exports, \"WebSocketClient\", { enumerable: true, get: function () { return index_browser_1.WebSocketClient; } });\n\n},{\"./contentStream\":2,\"./httpContentStream\":8,\"./requestHandler\":24,\"./streamingRequest\":25,\"./streamingResponse\":26,\"./subscribableStream\":27,\"./webSocket/index-browser\":31}],10:[function(require,module,exports){\n\"use strict\";\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    var desc = Object.getOwnPropertyDescriptor(m, k);\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n    }\n    Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./payloadReceiver\"), exports);\n__exportStar(require(\"./payloadSender\"), exports);\n__exportStar(require(\"./transportDisconnectedEvent\"), exports);\n__exportStar(require(\"./transportDisconnectedEventHandler\"), exports);\n\n},{\"./payloadReceiver\":11,\"./payloadSender\":12,\"./transportDisconnectedEvent\":13,\"./transportDisconnectedEventHandler\":14}],11:[function(require,module,exports){\n\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\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;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PayloadReceiver = void 0;\nvar payloadTypes_1 = require(\"../payloads/payloadTypes\");\nvar headerSerializer_1 = require(\"../payloads/headerSerializer\");\nvar payloadConstants_1 = require(\"../payloads/payloadConstants\");\nvar transportDisconnectedEvent_1 = require(\"./transportDisconnectedEvent\");\n/**\n * Payload receiver for streaming.\n */\nvar PayloadReceiver = /** @class */ (function () {\n    function PayloadReceiver() {\n    }\n    Object.defineProperty(PayloadReceiver.prototype, \"isConnected\", {\n        /**\n         * Get current connected state\n         *\n         * @returns true if connected to a transport sender.\n         */\n        get: function () {\n            return this._receiver != null;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    /**\n     * Connects to a transport receiver\n     *\n     * @param receiver The [ITransportReceiver](xref:botframework-streaming.ITransportReceiver) object to pull incoming data from.\n     * @returns a promise that resolves when the receiver is complete\n     */\n    PayloadReceiver.prototype.connect = function (receiver) {\n        this._receiver = receiver;\n        return this.receivePackets();\n    };\n    /**\n     * Allows subscribing to this receiver in order to be notified when new data comes in.\n     *\n     * @param getStream Callback when a new stream has been received.\n     * @param receiveAction Callback when a new message has been received.\n     */\n    PayloadReceiver.prototype.subscribe = function (getStream, receiveAction) {\n        this._getStream = getStream;\n        this._receiveAction = receiveAction;\n    };\n    /**\n     * Force this receiver to disconnect.\n     *\n     * @param event Event arguments to include when broadcasting disconnection event.\n     */\n    PayloadReceiver.prototype.disconnect = function (event) {\n        var _a, _b;\n        if (event === void 0) { event = transportDisconnectedEvent_1.TransportDisconnectedEvent.Empty; }\n        if (!this.isConnected) {\n            return;\n        }\n        try {\n            this._receiver.close();\n            (_a = this.disconnected) === null || _a === void 0 ? void 0 : _a.call(this, this, event);\n        }\n        catch (err) {\n            (_b = this.disconnected) === null || _b === void 0 ? void 0 : _b.call(this, this, new transportDisconnectedEvent_1.TransportDisconnectedEvent(err.message));\n        }\n        finally {\n            this._receiver = null;\n        }\n    };\n    PayloadReceiver.prototype.receivePackets = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            var readSoFar, _a, header, isStream, bytesActuallyRead, contentStream, count, _b, err_1;\n            return __generator(this, function (_c) {\n                switch (_c.label) {\n                    case 0:\n                        if (!this.isConnected) return [3 /*break*/, 11];\n                        _c.label = 1;\n                    case 1:\n                        _c.trys.push([1, 9, , 10]);\n                        readSoFar = 0;\n                        _c.label = 2;\n                    case 2:\n                        if (!(readSoFar < payloadConstants_1.PayloadConstants.MaxHeaderLength)) return [3 /*break*/, 4];\n                        _a = this;\n                        return [4 /*yield*/, this._receiver.receive(payloadConstants_1.PayloadConstants.MaxHeaderLength - readSoFar)];\n                    case 3:\n                        _a._receiveHeaderBuffer = _c.sent();\n                        if (this._receiveHeaderBuffer) {\n                            readSoFar += this._receiveHeaderBuffer.length;\n                        }\n                        return [3 /*break*/, 2];\n                    case 4:\n                        header = headerSerializer_1.HeaderSerializer.deserialize(this._receiveHeaderBuffer);\n                        isStream = header.payloadType === payloadTypes_1.PayloadTypes.stream;\n                        if (!(header.payloadLength > 0)) return [3 /*break*/, 8];\n                        bytesActuallyRead = 0;\n                        contentStream = this._getStream(header);\n                        _c.label = 5;\n                    case 5:\n                        if (!(bytesActuallyRead < header.payloadLength &&\n                            bytesActuallyRead < payloadConstants_1.PayloadConstants.MaxPayloadLength)) return [3 /*break*/, 7];\n                        count = Math.min(header.payloadLength - bytesActuallyRead, payloadConstants_1.PayloadConstants.MaxPayloadLength);\n                        _b = this;\n                        return [4 /*yield*/, this._receiver.receive(count)];\n                    case 6:\n                        _b._receivePayloadBuffer = _c.sent();\n                        bytesActuallyRead += this._receivePayloadBuffer.byteLength;\n                        contentStream.write(this._receivePayloadBuffer);\n                        // If this is a stream we want to keep handing it up as it comes in\n                        if (isStream) {\n                            this._receiveAction(header, contentStream, bytesActuallyRead);\n                        }\n                        return [3 /*break*/, 5];\n                    case 7:\n                        if (!isStream) {\n                            this._receiveAction(header, contentStream, bytesActuallyRead);\n                        }\n                        _c.label = 8;\n                    case 8: return [3 /*break*/, 10];\n                    case 9:\n                        err_1 = _c.sent();\n                        this.disconnect(new transportDisconnectedEvent_1.TransportDisconnectedEvent(err_1.message));\n                        return [3 /*break*/, 10];\n                    case 10: return [3 /*break*/, 0];\n                    case 11: return [2 /*return*/];\n                }\n            });\n        });\n    };\n    return PayloadReceiver;\n}());\nexports.PayloadReceiver = PayloadReceiver;\n\n},{\"../payloads/headerSerializer\":15,\"../payloads/payloadConstants\":18,\"../payloads/payloadTypes\":19,\"./transportDisconnectedEvent\":13}],12:[function(require,module,exports){\n(function (Buffer){(function (){\n\"use strict\";\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PayloadSender = void 0;\nvar headerSerializer_1 = require(\"../payloads/headerSerializer\");\nvar payloadConstants_1 = require(\"../payloads/payloadConstants\");\nvar transportDisconnectedEvent_1 = require(\"./transportDisconnectedEvent\");\n/**\n * Streaming payload sender.\n */\nvar PayloadSender = /** @class */ (function () {\n    function PayloadSender() {\n    }\n    Object.defineProperty(PayloadSender.prototype, \"isConnected\", {\n        /**\n         * Get current connected state\n         *\n         * @returns true if connected to a transport sender.\n         */\n        get: function () {\n            return this._sender != null;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    /**\n     * Connects to the given transport sender.\n     *\n     * @param sender The transport sender to connect this payload sender to.\n     */\n    PayloadSender.prototype.connect = function (sender) {\n        this._sender = sender;\n    };\n    /**\n     * Sends a payload out over the connected transport sender.\n     *\n     * @param header The header to attach to the outgoing payload.\n     * @param payload The stream of buffered data to send.\n     * @param sentCallback The function to execute when the send has completed.\n     */\n    PayloadSender.prototype.sendPayload = function (header, payload, sentCallback) {\n        var packet = { header: header, payload: payload, sentCallback: sentCallback };\n        this.writePacket(packet);\n    };\n    /**\n     * Disconnects this payload sender.\n     *\n     * @param event The disconnected event arguments to include in the disconnected event broadcast.\n     */\n    PayloadSender.prototype.disconnect = function (event) {\n        var _a, _b;\n        if (event === void 0) { event = transportDisconnectedEvent_1.TransportDisconnectedEvent.Empty; }\n        if (!this.isConnected) {\n            return;\n        }\n        try {\n            this._sender.close();\n            (_a = this.disconnected) === null || _a === void 0 ? void 0 : _a.call(this, this, event);\n        }\n        catch (err) {\n            (_b = this.disconnected) === null || _b === void 0 ? void 0 : _b.call(this, this, new transportDisconnectedEvent_1.TransportDisconnectedEvent(err.message));\n        }\n        finally {\n            this._sender = null;\n        }\n    };\n    PayloadSender.prototype.writePacket = function (packet) {\n        try {\n            if (packet.header.payloadLength > 0 && packet.payload) {\n                var leftOver = packet.header.payloadLength;\n                while (leftOver > 0) {\n                    var count = leftOver <= payloadConstants_1.PayloadConstants.MaxPayloadLength ? leftOver : payloadConstants_1.PayloadConstants.MaxPayloadLength;\n                    var chunk = packet.payload.read(count);\n                    var header = packet.header;\n                    header.payloadLength = count;\n                    header.end = leftOver <= payloadConstants_1.PayloadConstants.MaxPayloadLength;\n                    var sendHeaderBuffer = Buffer.alloc(payloadConstants_1.PayloadConstants.MaxHeaderLength);\n                    headerSerializer_1.HeaderSerializer.serialize(header, sendHeaderBuffer);\n                    this._sender.send(sendHeaderBuffer);\n                    this._sender.send(chunk);\n                    leftOver -= chunk.length;\n                }\n                if (packet.sentCallback) {\n                    packet.sentCallback();\n                }\n            }\n        }\n        catch (err) {\n            this.disconnect(new transportDisconnectedEvent_1.TransportDisconnectedEvent(err.message));\n        }\n    };\n    return PayloadSender;\n}());\nexports.PayloadSender = PayloadSender;\n\n}).call(this)}).call(this,require(\"buffer\").Buffer)\n\n},{\"../payloads/headerSerializer\":15,\"../payloads/payloadConstants\":18,\"./transportDisconnectedEvent\":13,\"buffer\":35}],13:[function(require,module,exports){\n\"use strict\";\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TransportDisconnectedEvent = void 0;\n/**\n * Event to be included when disconnection events are fired.\n */\nvar TransportDisconnectedEvent = /** @class */ (function () {\n    /**\n     * Indicates a transport disconnected with the reason provided via the constructor.\n     *\n     * @remarks\n     * This class is used for communicating disconnection events between the\n     * PayloadReceiver and PayloadSender.\n     * @param reason The reason the disconnection event fired, in plain text.\n     */\n    function TransportDisconnectedEvent(reason) {\n        this.reason = reason;\n    }\n    /**\n     * A new and empty TransportDisconnectedEvent.\n     */\n    TransportDisconnectedEvent.Empty = new TransportDisconnectedEvent();\n    return TransportDisconnectedEvent;\n}());\nexports.TransportDisconnectedEvent = TransportDisconnectedEvent;\n\n},{}],14:[function(require,module,exports){\n\"use strict\";\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n},{}],15:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HeaderSerializer = void 0;\nvar payloadConstants_1 = require(\"./payloadConstants\");\n/**\n * Streaming header serializer\n */\nvar HeaderSerializer = /** @class */ (function () {\n    function HeaderSerializer() {\n    }\n    /**\n     * Serializes the header into a buffer\n     *\n     * @param header The header to serialize.\n     * @param buffer The buffer into which to serialize the header.\n     */\n    HeaderSerializer.serialize = function (header, buffer) {\n        buffer.write(header.payloadType, this.TypeOffset, 1, this.Encoding);\n        buffer.write(this.Delimiter, this.TypeDelimiterOffset, 1, this.Encoding);\n        buffer.write(this.headerLengthPadder(header.payloadLength, this.LengthLength, '0'), this.LengthOffset, this.LengthLength, this.Encoding);\n        buffer.write(this.Delimiter, this.LengthDelimeterOffset, 1, this.Encoding);\n        buffer.write(header.id, this.IdOffset);\n        buffer.write(this.Delimiter, this.IdDelimeterOffset, 1, this.Encoding);\n        buffer.write(header.end ? this.End : this.NotEnd, this.EndOffset);\n        buffer.write(this.Terminator, this.TerminatorOffset);\n    };\n    /**\n     * Deserializes a buffer containing header information.\n     *\n     * @param buffer The buffer from which to obtain the data to deserialize.\n     * @returns The deserialized header from the buffer.\n     */\n    HeaderSerializer.deserialize = function (buffer) {\n        var jsonBuffer = buffer.toString(this.Encoding);\n        var headerArray = jsonBuffer.split(this.Delimiter);\n        if (headerArray.length !== 4) {\n            throw Error(\"Cannot parse header, header is malformed. Header: \".concat(jsonBuffer));\n        }\n        var payloadType = headerArray[0], length = headerArray[1], id = headerArray[2], headerEnd = headerArray[3];\n        var end = headerEnd === '1\\n';\n        var payloadLength = Number(length);\n        var header = { end: end, payloadLength: payloadLength, payloadType: payloadType, id: id };\n        if (!(header.payloadLength <= payloadConstants_1.PayloadConstants.MaxPayloadLength &&\n            header.payloadLength >= payloadConstants_1.PayloadConstants.MinLength)) {\n            throw Error(\"Header length of \".concat(header.payloadLength, \" is missing or malformed\"));\n        }\n        if (header.payloadType.length !== this.TypeDelimiterOffset) {\n            throw Error(\"Header type '\".concat(header.payloadType.length, \"' is missing or malformed.\"));\n        }\n        if (!header.id ||\n            !header.id.match(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i) ||\n            header.id.length !== this.IdLength) {\n            throw Error(\"Header ID '\".concat(header.id, \"' is missing or malformed.\"));\n        }\n        if (!(headerEnd === '0\\n' || headerEnd === '1\\n')) {\n            throw Error(\"Header End is missing or not a valid value. Header end: '\".concat(headerEnd, \"'\"));\n        }\n        return header;\n    };\n    /**\n     * Creates a padded string based on a length and character to be padded to.\n     *\n     * @param lengthValue The value to be assingned on the result.\n     * @param totalLength The length of the padded string result.\n     * @param padChar The character value to use as filling.\n     * @returns The padded string.\n     */\n    HeaderSerializer.headerLengthPadder = function (lengthValue, totalLength, padChar) {\n        var result = Array(totalLength + 1).join(padChar);\n        var lengthString = lengthValue.toString();\n        return (result + lengthString).slice(lengthString.length);\n    };\n    HeaderSerializer.Delimiter = '.';\n    HeaderSerializer.Terminator = '\\n';\n    HeaderSerializer.End = '1';\n    HeaderSerializer.NotEnd = '0';\n    HeaderSerializer.TypeOffset = 0;\n    HeaderSerializer.TypeDelimiterOffset = 1;\n    HeaderSerializer.LengthOffset = 2;\n    HeaderSerializer.LengthLength = 6;\n    HeaderSerializer.LengthDelimeterOffset = 8;\n    HeaderSerializer.IdOffset = 9;\n    HeaderSerializer.IdLength = 36;\n    HeaderSerializer.IdDelimeterOffset = 45;\n    HeaderSerializer.EndOffset = 46;\n    HeaderSerializer.TerminatorOffset = 47;\n    HeaderSerializer.Encoding = 'utf8';\n    return HeaderSerializer;\n}());\nexports.HeaderSerializer = HeaderSerializer;\n\n},{\"./payloadConstants\":18}],16:[function(require,module,exports){\n\"use strict\";\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    var desc = Object.getOwnPropertyDescriptor(m, k);\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n    }\n    Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./headerSerializer\"), exports);\n__exportStar(require(\"./streamManager\"), exports);\n__exportStar(require(\"./payloadAssemblerManager\"), exports);\n__exportStar(require(\"./payloadTypes\"), exports);\n__exportStar(require(\"./requestManager\"), exports);\n__exportStar(require(\"./sendOperations\"), exports);\n__exportStar(require(\"./streamManager\"), exports);\n\n},{\"./headerSerializer\":15,\"./payloadAssemblerManager\":17,\"./payloadTypes\":19,\"./requestManager\":20,\"./sendOperations\":21,\"./streamManager\":22}],17:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PayloadAssemblerManager = void 0;\nvar payloadAssembler_1 = require(\"../assemblers/payloadAssembler\");\nvar payloadTypes_1 = require(\"./payloadTypes\");\n/**\n * Orchestrates assembly of payloads.\n */\nvar PayloadAssemblerManager = /** @class */ (function () {\n    /**\n     * Initializes a new instance of the [PayloadAssemblerManager](xref:botframework-streaming.PayloadAssemblerManager) class.\n     *\n     * @param streamManager The [StreamManager](xref:botframework-streaming.StreamManager) managing the stream being assembled.\n     * @param onReceiveResponse Function that executes when new bytes are received on a `response` stream.\n     * @param onReceiveRequest Function that executes when new bytes are received on a `request` stream.\n     */\n    function PayloadAssemblerManager(streamManager, onReceiveResponse, onReceiveRequest) {\n        this.streamManager = streamManager;\n        this.onReceiveResponse = onReceiveResponse;\n        this.onReceiveRequest = onReceiveRequest;\n        this.activeAssemblers = {};\n    }\n    /**\n     * Retrieves the assembler's payload as a stream.\n     *\n     * @param header The Header of the Stream to retrieve.\n     * @returns A [SubscribableStream](xref:botframework-streaming.SubscribableStream) of the assembler's payload.\n     */\n    PayloadAssemblerManager.prototype.getPayloadStream = function (header) {\n        if (header.payloadType === payloadTypes_1.PayloadTypes.stream) {\n            return this.streamManager.getPayloadStream(header);\n        }\n        else if (!this.activeAssemblers[header.id]) {\n            var assembler = this.createPayloadAssembler(header);\n            if (assembler) {\n                this.activeAssemblers[header.id] = assembler;\n                return assembler.getPayloadStream();\n            }\n        }\n    };\n    /**\n     * The action the assembler executes when new bytes are received on the incoming stream.\n     *\n     * @param header The stream's Header.\n     * @param contentStream The incoming stream being assembled.\n     * @param contentLength The length of the stream, if finite.\n     */\n    PayloadAssemblerManager.prototype.onReceive = function (header, contentStream, contentLength) {\n        if (header.payloadType === payloadTypes_1.PayloadTypes.stream) {\n            this.streamManager.onReceive(header, contentStream, contentLength);\n        }\n        else {\n            if (this.activeAssemblers && this.activeAssemblers[header.id]) {\n                var assembler = this.activeAssemblers[header.id];\n                assembler.onReceive(header, contentStream, contentLength);\n            }\n            if (header.end) {\n                delete this.activeAssemblers[header.id];\n            }\n        }\n    };\n    PayloadAssemblerManager.prototype.createPayloadAssembler = function (header) {\n        if (header.payloadType === payloadTypes_1.PayloadTypes.request) {\n            return new payloadAssembler_1.PayloadAssembler(this.streamManager, {\n                header: header,\n                onCompleted: this.onReceiveRequest,\n            });\n        }\n        else if (header.payloadType === payloadTypes_1.PayloadTypes.response) {\n            return new payloadAssembler_1.PayloadAssembler(this.streamManager, {\n                header: header,\n                onCompleted: this.onReceiveResponse,\n            });\n        }\n    };\n    return PayloadAssemblerManager;\n}());\nexports.PayloadAssemblerManager = PayloadAssemblerManager;\n\n},{\"../assemblers/payloadAssembler\":1,\"./payloadTypes\":19}],18:[function(require,module,exports){\n\"use strict\";\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PayloadConstants = void 0;\n/**\n * Constants for streaming payloads.\n */\nvar PayloadConstants;\n(function (PayloadConstants) {\n    PayloadConstants[PayloadConstants[\"MaxPayloadLength\"] = 4096] = \"MaxPayloadLength\";\n    PayloadConstants[PayloadConstants[\"MaxHeaderLength\"] = 48] = \"MaxHeaderLength\";\n    PayloadConstants[PayloadConstants[\"MaxLength\"] = 999999] = \"MaxLength\";\n    PayloadConstants[PayloadConstants[\"MinLength\"] = 0] = \"MinLength\";\n})(PayloadConstants = exports.PayloadConstants || (exports.PayloadConstants = {}));\n\n},{}],19:[function(require,module,exports){\n\"use strict\";\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PayloadTypes = void 0;\n/**\n * Typess of payloads supported in the streaming library.\n */\nvar PayloadTypes;\n(function (PayloadTypes) {\n    PayloadTypes[\"request\"] = \"A\";\n    PayloadTypes[\"response\"] = \"B\";\n    PayloadTypes[\"stream\"] = \"S\";\n    PayloadTypes[\"cancelAll\"] = \"X\";\n    PayloadTypes[\"cancelStream\"] = \"C\";\n})(PayloadTypes = exports.PayloadTypes || (exports.PayloadTypes = {}));\n\n},{}],20:[function(require,module,exports){\n\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\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;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RequestManager = void 0;\n/**\n * A streaming pending request.\n */\nvar PendingRequest = /** @class */ (function () {\n    function PendingRequest() {\n    }\n    return PendingRequest;\n}());\n/**\n * Orchestrates and manages pending streaming requests.\n */\nvar RequestManager = /** @class */ (function () {\n    function RequestManager() {\n        this._pendingRequests = {};\n    }\n    /**\n     * Gets the count of the pending requests.\n     *\n     * @returns Number with the pending requests count.\n     */\n    RequestManager.prototype.pendingRequestCount = function () {\n        return Object.keys(this._pendingRequests).length;\n    };\n    /**\n     * Signal fired when all response tasks have completed.\n     *\n     * @param requestId The ID of the StreamingRequest.\n     * @param response The [IReceiveResponse](xref:botframework-streaming.IReceiveResponse) in response to the request.\n     * @returns A Promise that when completed returns `true` if the `requestId`'s pending response task was completed, otherwise `false`.\n     */\n    RequestManager.prototype.signalResponse = function (requestId, response) {\n        return __awaiter(this, void 0, void 0, function () {\n            var pendingRequest;\n            return __generator(this, function (_a) {\n                pendingRequest = this._pendingRequests[requestId];\n                if (pendingRequest) {\n                    pendingRequest.resolve(response);\n                    delete this._pendingRequests[requestId];\n                    return [2 /*return*/, true];\n                }\n                return [2 /*return*/, false];\n            });\n        });\n    };\n    /**\n     * Constructs and returns a response for this request.\n     *\n     * @param requestId The ID of the StreamingRequest being responded to.\n     * @returns The response to the specified request.\n     */\n    RequestManager.prototype.getResponse = function (requestId) {\n        var pendingRequest = this._pendingRequests[requestId];\n        if (pendingRequest) {\n            return Promise.reject(\"requestId '\".concat(requestId, \"' already exists in RequestManager\"));\n        }\n        pendingRequest = new PendingRequest();\n        pendingRequest.requestId = requestId;\n        var promise = new Promise(function (resolve, reject) {\n            pendingRequest.resolve = resolve;\n            pendingRequest.reject = reject;\n        });\n        this._pendingRequests[requestId] = pendingRequest;\n        return promise;\n    };\n    /**\n     * Rejects all requests pending a response.\n     *\n     * @param reason The reason for rejection.\n     */\n    RequestManager.prototype.rejectAllResponses = function (reason) {\n        var _this = this;\n        Object.entries(this._pendingRequests).forEach(function (_a) {\n            var requestId = _a[0], reject = _a[1].reject;\n            reject(reason);\n            delete _this._pendingRequests[requestId];\n        });\n    };\n    return RequestManager;\n}());\nexports.RequestManager = RequestManager;\n\n},{}],21:[function(require,module,exports){\n\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\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;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SendOperations = void 0;\nvar cancelDisassembler_1 = require(\"../disassemblers/cancelDisassembler\");\nvar httpContentStreamDisassembler_1 = require(\"../disassemblers/httpContentStreamDisassembler\");\nvar requestDisassembler_1 = require(\"../disassemblers/requestDisassembler\");\nvar responseDisassembler_1 = require(\"../disassemblers/responseDisassembler\");\nvar payloadTypes_1 = require(\"./payloadTypes\");\n/**\n * Send operations for streaming payloads.\n */\nvar SendOperations = /** @class */ (function () {\n    /**\n     * Initializes a new instance of the [SendOperations](xref:botframework-streaming.SendOperations) class.\n     *\n     * @param payloadSender The [PayloadSender](xref:botframework-streaming.PayloadSender) that will send the disassembled data from all of this instance's send operations.\n     */\n    function SendOperations(payloadSender) {\n        this.payloadSender = payloadSender;\n    }\n    /**\n     * The send operation used to send a [StreamingRequest](xref:botframework-streaming.StreamingRequest).\n     *\n     * @param id The ID to assign to the [RequestDisassembler](xref:botframework-streaming.RequestDisassembler) used by this operation.\n     * @param request The request to send.\n     */\n    SendOperations.prototype.sendRequest = function (id, request) {\n        return __awaiter(this, void 0, void 0, function () {\n            var disassembler;\n            var _this = this;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        disassembler = new requestDisassembler_1.RequestDisassembler(this.payloadSender, id, request);\n                        return [4 /*yield*/, disassembler.disassemble()];\n                    case 1:\n                        _a.sent();\n                        if (request.streams) {\n                            request.streams.forEach(function (contentStream) { return __awaiter(_this, void 0, void 0, function () {\n                                return __generator(this, function (_a) {\n                                    switch (_a.label) {\n                                        case 0: return [4 /*yield*/, new httpContentStreamDisassembler_1.HttpContentStreamDisassembler(this.payloadSender, contentStream).disassemble()];\n                                        case 1:\n                                            _a.sent();\n                                            return [2 /*return*/];\n                                    }\n                                });\n                            }); });\n                        }\n                        return [2 /*return*/];\n                }\n            });\n        });\n    };\n    /**\n     * The send operation used to send a [PayloadTypes.response](xref:botframework-streaming.PayloadTypes.response).\n     *\n     * @param id The ID to assign to the [ResponseDisassembler](xref:botframework-streaming.ResponseDisassembler) used by this operation.\n     * @param response The response to send.\n     */\n    SendOperations.prototype.sendResponse = function (id, response) {\n        return __awaiter(this, void 0, void 0, function () {\n            var disassembler;\n            var _this = this;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        disassembler = new responseDisassembler_1.ResponseDisassembler(this.payloadSender, id, response);\n                        return [4 /*yield*/, disassembler.disassemble()];\n                    case 1:\n                        _a.sent();\n                        if (response.streams) {\n                            response.streams.forEach(function (contentStream) { return __awaiter(_this, void 0, void 0, function () {\n                                return __generator(this, function (_a) {\n                                    switch (_a.label) {\n                                        case 0: return [4 /*yield*/, new httpContentStreamDisassembler_1.HttpContentStreamDisassembler(this.payloadSender, contentStream).disassemble()];\n                                        case 1:\n                                            _a.sent();\n                                            return [2 /*return*/];\n                                    }\n                                });\n                            }); });\n                        }\n                        return [2 /*return*/];\n                }\n            });\n        });\n    };\n    /**\n     * The send operation used to send a [PayloadTypes.cancelStream](xref:botframework-streaming.PayloadTypes.cancelStream).\n     *\n     * @param id The ID to assign to the [CancelDisassembler](xref:botframework-streaming.CancelDisassembler) used by this operation.\n     */\n    SendOperations.prototype.sendCancelStream = function (id) {\n        return __awaiter(this, void 0, void 0, function () {\n            var disassembler;\n            return __generator(this, function (_a) {\n                disassembler = new cancelDisassembler_1.CancelDisassembler(this.payloadSender, id, payloadTypes_1.PayloadTypes.cancelStream);\n                disassembler.disassemble();\n                return [2 /*return*/];\n            });\n        });\n    };\n    return SendOperations;\n}());\nexports.SendOperations = SendOperations;\n\n},{\"../disassemblers/cancelDisassembler\":3,\"../disassemblers/httpContentStreamDisassembler\":4,\"../disassemblers/requestDisassembler\":6,\"../disassemblers/responseDisassembler\":7,\"./payloadTypes\":19}],22:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StreamManager = void 0;\nvar payloadAssembler_1 = require(\"../assemblers/payloadAssembler\");\n/**\n * Orchestrates and manages streams.\n */\nvar StreamManager = /** @class */ (function () {\n    /**\n     * Initializes a new instance of the [StreamManager](xref:botframework-streaming.StreamManager) class.\n     *\n     * @param onCancelStream Function to trigger if the managed stream is cancelled.\n     */\n    function StreamManager(onCancelStream) {\n        this.onCancelStream = onCancelStream;\n        this.activeAssemblers = [];\n    }\n    /**\n     * Retrieves a [PayloadAssembler](xref:botframework-streaming.PayloadAssembler) with the given ID if one exists, otherwise a new instance is created and assigned the given ID.\n     *\n     * @param id The ID of the [PayloadAssembler](xref:botframework-streaming.PayloadAssembler) to retrieve or create.\n     * @returns The [PayloadAssembler](xref:botframework-streaming.PayloadAssembler) with the given ID.\n     */\n    StreamManager.prototype.getPayloadAssembler = function (id) {\n        if (!this.activeAssemblers[id]) {\n            // A new id has come in, kick off the process of tracking it.\n            var assembler = new payloadAssembler_1.PayloadAssembler(this, { id: id });\n            this.activeAssemblers[id] = assembler;\n            return assembler;\n        }\n        else {\n            return this.activeAssemblers[id];\n        }\n    };\n    /**\n     * Retrieves the [SubscribableStream](xref:botframework-streaming.SubscribableStream) from the [PayloadAssembler](xref:botframework-streaming.PayloadAssembler) this manager manages.\n     *\n     * @param header The Header of the [SubscribableStream](xref:botframework-streaming.SubscribableStream) to retrieve.\n     * @returns The [SubscribableStream](xref:botframework-streaming.SubscribableStream) with the given header.\n     */\n    StreamManager.prototype.getPayloadStream = function (header) {\n        var assembler = this.getPayloadAssembler(header.id);\n        return assembler.getPayloadStream();\n    };\n    /**\n     * Used to set the behavior of the managed [PayloadAssembler](xref:botframework-streaming.PayloadAssembler) when data is received.\n     *\n     * @param header The Header of the stream.\n     * @param contentStream The [SubscribableStream](xref:botframework-streaming.SubscribableStream) to write incoming data to.\n     * @param contentLength The amount of data to write to the contentStream.\n     */\n    StreamManager.prototype.onReceive = function (header, contentStream, contentLength) {\n        if (!this.activeAssemblers[header.id]) {\n            return;\n        }\n        this.activeAssemblers[header.id].onReceive(header, contentStream, contentLength);\n    };\n    /**\n     * Closes the [PayloadAssembler](xref:botframework-streaming.PayloadAssembler) assigned to the [SubscribableStream](xref:botframework-streaming.SubscribableStream) with the given ID.\n     *\n     * @param id The ID of the [SubscribableStream](xref:botframework-streaming.SubscribableStream) to close.\n     */\n    StreamManager.prototype.closeStream = function (id) {\n        if (!this.activeAssemblers[id]) {\n            return;\n        }\n        else {\n            var assembler = this.activeAssemblers[id];\n            this.activeAssemblers.splice(this.activeAssemblers.indexOf(id), 1);\n            var targetStream = assembler.getPayloadStream();\n            if ((assembler.contentLength && targetStream.length < assembler.contentLength) || !assembler.end) {\n                this.onCancelStream(assembler);\n            }\n        }\n    };\n    return StreamManager;\n}());\nexports.StreamManager = StreamManager;\n\n},{\"../assemblers/payloadAssembler\":1}],23:[function(require,module,exports){\n\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\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;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ProtocolAdapter = void 0;\nvar payloadAssemblerManager_1 = require(\"./payloads/payloadAssemblerManager\");\nvar sendOperations_1 = require(\"./payloads/sendOperations\");\nvar streamManager_1 = require(\"./payloads/streamManager\");\nvar protocol_base_1 = require(\"./utilities/protocol-base\");\n/**\n * Creates a protocol adapter for Streaming.\n */\nvar ProtocolAdapter = /** @class */ (function () {\n    /**\n     * Creates a new instance of the protocol adapter class.\n     *\n     * @param requestHandler The [RequestHandler](xref:botframework-streaming.RequestHandler) that will process incoming requests.\n     * @param requestManager The [RequestManager](xref:botframework-streaming.RequestManager) that will process outgoing requests.\n     * @param sender The [PayloadSender](xref:botframework-streaming.PayloadSender) for use with outgoing requests.\n     * @param receiver The [PayloadReceiver](xref:botframework-streaming.PayloadReceiver) for use with incoming requests.\n     */\n    function ProtocolAdapter(requestHandler, requestManager, sender, receiver) {\n        var _this = this;\n        this.requestHandler = requestHandler;\n        this.requestManager = requestManager;\n        this.payloadSender = sender;\n        this.payloadReceiver = receiver;\n        this.sendOperations = new sendOperations_1.SendOperations(this.payloadSender);\n        this.streamManager = new streamManager_1.StreamManager(this.onCancelStream);\n        this.assemblerManager = new payloadAssemblerManager_1.PayloadAssemblerManager(this.streamManager, function (id, response) { return _this.onReceiveResponse(id, response); }, function (id, request) { return _this.onReceiveRequest(id, request); });\n        this.payloadReceiver.subscribe(function (header) { return _this.assemblerManager.getPayloadStream(header); }, function (header, contentStream, contentLength) {\n            return _this.assemblerManager.onReceive(header, contentStream, contentLength);\n        });\n    }\n    /**\n     * Sends a request over the attached request manager.\n     *\n     * @param request The outgoing request to send.\n     * @returns The response to the specified request.\n     */\n    ProtocolAdapter.prototype.sendRequest = function (request) {\n        return __awaiter(this, void 0, void 0, function () {\n            var requestId, getResponsePromise;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        requestId = (0, protocol_base_1.generateGuid)();\n                        getResponsePromise = this.requestManager.getResponse(requestId);\n                        return [4 /*yield*/, this.sendOperations.sendRequest(requestId, request)];\n                    case 1:\n                        _a.sent();\n                        return [2 /*return*/, getResponsePromise];\n                }\n            });\n        });\n    };\n    /**\n     * Executes the receive pipeline when a request comes in.\n     *\n     * @param id The id the resources created for the response will be assigned.\n     * @param request The incoming request to process.\n     */\n    ProtocolAdapter.prototype.onReceiveRequest = function (id, request) {\n        return __awaiter(this, void 0, void 0, function () {\n            var response;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        if (!this.requestHandler) return [3 /*break*/, 3];\n                        return [4 /*yield*/, this.requestHandler.processRequest(request)];\n                    case 1:\n                        response = _a.sent();\n                        if (!response) return [3 /*break*/, 3];\n                        return [4 /*yield*/, this.sendOperations.sendResponse(id, response)];\n                    case 2:\n                        _a.sent();\n                        _a.label = 3;\n                    case 3: return [2 /*return*/];\n                }\n            });\n        });\n    };\n    /**\n     * Executes the receive pipeline when a response comes in.\n     *\n     * @param id The id the resources created for the response will be assigned.\n     * @param response The incoming response to process.\n     */\n    ProtocolAdapter.prototype.onReceiveResponse = function (id, response) {\n        return __awaiter(this, void 0, void 0, function () {\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0: return [4 /*yield*/, this.requestManager.signalResponse(id, response)];\n                    case 1:\n                        _a.sent();\n                        return [2 /*return*/];\n                }\n            });\n        });\n    };\n    /**\n     * Executes the receive pipeline when a cancellation comes in.\n     *\n     * @param contentStreamAssembler The payload assembler processing the incoming data that this cancellation request targets.\n     */\n    ProtocolAdapter.prototype.onCancelStream = function (contentStreamAssembler) {\n        this.sendOperations.sendCancelStream(contentStreamAssembler.id).catch();\n    };\n    return ProtocolAdapter;\n}());\nexports.ProtocolAdapter = ProtocolAdapter;\n\n},{\"./payloads/payloadAssemblerManager\":17,\"./payloads/sendOperations\":21,\"./payloads/streamManager\":22,\"./utilities/protocol-base\":28}],24:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RequestHandler = void 0;\n/**\n * Implemented by classes used to process incoming streaming requests sent over an [IStreamingTransport](xref:botframework-streaming.IStreamingTransport).\n */\nvar RequestHandler = /** @class */ (function () {\n    function RequestHandler() {\n    }\n    return RequestHandler;\n}());\nexports.RequestHandler = RequestHandler;\n\n},{}],25:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StreamingRequest = void 0;\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nvar httpContentStream_1 = require(\"./httpContentStream\");\nvar subscribableStream_1 = require(\"./subscribableStream\");\n/**\n * The basic request type sent over Bot Framework Protocol 3 with Streaming Extensions transports, equivalent to HTTP request messages.\n */\nvar StreamingRequest = /** @class */ (function () {\n    function StreamingRequest() {\n        /**\n         * List of associated streams.\n         */\n        this.streams = [];\n    }\n    /**\n     * Creates a streaming request with the passed in method, path, and body.\n     *\n     * @param method The HTTP verb to use for this request.\n     * @param path Optional path where the resource can be found on the remote server.\n     * @param body Optional body to send to the remote server.\n     * @returns On success returns a streaming request with appropriate status code and body.\n     */\n    StreamingRequest.create = function (method, path, body) {\n        var request = new StreamingRequest();\n        request.verb = method;\n        request.path = path;\n        if (body) {\n            request.setBody(body);\n        }\n        return request;\n    };\n    /**\n     * Adds a new stream attachment to this streaming request.\n     *\n     * @param content The Http content to include in the new stream attachment.\n     */\n    StreamingRequest.prototype.addStream = function (content) {\n        if (!content) {\n            throw new Error('Argument Undefined Exception: content undefined.');\n        }\n        this.streams.push(new httpContentStream_1.HttpContentStream(content));\n    };\n    /**\n     * Sets the contents of the body of this streamingRequest.\n     *\n     * @param body The JSON text to write to the body of the streamingRequest.\n     */\n    // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any\n    StreamingRequest.prototype.setBody = function (body) {\n        if (typeof body === 'string') {\n            var stream = new subscribableStream_1.SubscribableStream();\n            stream.write(body, 'utf8');\n            this.addStream(new httpContentStream_1.HttpContent({\n                type: 'application/json; charset=utf-8',\n                contentLength: stream.length,\n            }, stream));\n        }\n        else if (typeof body === 'object') {\n            this.addStream(body);\n        }\n    };\n    return StreamingRequest;\n}());\nexports.StreamingRequest = StreamingRequest;\n\n},{\"./httpContentStream\":8,\"./subscribableStream\":27}],26:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StreamingResponse = void 0;\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nvar httpContentStream_1 = require(\"./httpContentStream\");\nvar subscribableStream_1 = require(\"./subscribableStream\");\n/**\n * The basic response type sent over Bot Framework Protocol 3 with Streaming Extensions transports, equivalent to HTTP response messages.\n */\nvar StreamingResponse = /** @class */ (function () {\n    function StreamingResponse() {\n        this.streams = [];\n    }\n    /**\n     * Creates a streaming response with the passed in method, path, and body.\n     *\n     * @param statusCode The HTTP verb to use for this request.\n     * @param body Optional body containing additional information.\n     * @returns A streaming response with the appropriate statuscode and passed in body.\n     */\n    StreamingResponse.create = function (statusCode, body) {\n        var response = new StreamingResponse();\n        response.statusCode = statusCode;\n        if (body) {\n            response.addStream(body);\n        }\n        return response;\n    };\n    /**\n     * Adds a new stream attachment to this streaming request.\n     *\n     * @param content The Http content to include in the new stream attachment.\n     */\n    StreamingResponse.prototype.addStream = function (content) {\n        this.streams.push(new httpContentStream_1.HttpContentStream(content));\n    };\n    /**\n     * Sets the contents of the body of this streaming response.\n     *\n     * @param body The JSON text to write to the body of the streaming response.\n     */\n    // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any\n    StreamingResponse.prototype.setBody = function (body) {\n        var stream = new subscribableStream_1.SubscribableStream();\n        stream.write(JSON.stringify(body), 'utf8');\n        this.addStream(new httpContentStream_1.HttpContent({\n            type: 'application/json; charset=utf-8',\n            contentLength: stream.length,\n        }, stream));\n    };\n    return StreamingResponse;\n}());\nexports.StreamingResponse = StreamingResponse;\n\n},{\"./httpContentStream\":8,\"./subscribableStream\":27}],27:[function(require,module,exports){\n(function (Buffer){(function (){\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SubscribableStream = void 0;\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nvar stream_1 = require(\"stream\");\n/**\n * An extension of `Duplex` that operates in conjunction with a `PayloadAssembler` to convert raw bytes into a consumable form.\n */\nvar SubscribableStream = /** @class */ (function (_super) {\n    __extends(SubscribableStream, _super);\n    /**\n     * Initializes a new instance of the [SubscribableStream](xref:botframework-streaming.SubscribableStream) class.\n     *\n     * @param options The `DuplexOptions` to use when constructing this stream.\n     */\n    function SubscribableStream(options) {\n        var _this = _super.call(this, options) || this;\n        _this.length = 0;\n        _this.bufferList = [];\n        return _this;\n    }\n    /**\n     * Writes data to the buffered list.\n     * All calls to writable.write() that occur between the time writable._write() is called and the callback is called will cause the written data to be buffered.\n     *\n     * @param chunk The Buffer to be written.\n     * @param _encoding The encoding. Unused in the implementation of Duplex.\n     * @param callback Callback for when this chunk of data is flushed.\n     */\n    // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any\n    SubscribableStream.prototype._write = function (chunk, _encoding, callback) {\n        var buffer = Buffer.from(chunk);\n        this.bufferList.push(buffer);\n        this.length += chunk.length;\n        if (this._onData) {\n            this._onData(buffer);\n        }\n        callback();\n    };\n    /**\n     * Reads the buffered list.\n     * Once the readable._read() method has been called, it will not be called again until more data is pushed through the readable.push() method.\n     * Empty data such as empty buffers and strings will not cause readable._read() to be called.\n     *\n     * @param size Number of bytes to read.\n     */\n    SubscribableStream.prototype._read = function (size) {\n        if (this.bufferList.length === 0) {\n            // null signals end of stream\n            this.push(null);\n        }\n        else {\n            var total = 0;\n            while (total < size && this.bufferList.length > 0) {\n                var buffer = this.bufferList[0];\n                this.push(buffer);\n                this.bufferList.splice(0, 1);\n                total += buffer.length;\n            }\n        }\n    };\n    /**\n     * Subscribes to the stream when receives data.\n     *\n     * @param onData Callback to be called when onData is executed.\n     */\n    // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any\n    SubscribableStream.prototype.subscribe = function (onData) {\n        this._onData = onData;\n    };\n    return SubscribableStream;\n}(stream_1.Duplex));\nexports.SubscribableStream = SubscribableStream;\n\n}).call(this)}).call(this,require(\"buffer\").Buffer)\n\n},{\"buffer\":35,\"stream\":41}],28:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.generateGuid = void 0;\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nvar uuid_1 = require(\"uuid\");\n/**\n * Generates an uuid v4 string.\n *\n * @returns An uuidv4 string.\n */\nfunction generateGuid() {\n    return (0, uuid_1.v4)();\n}\nexports.generateGuid = generateGuid;\n\n},{\"uuid\":58}],29:[function(require,module,exports){\n\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\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;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BrowserWebSocket = void 0;\n/**\n * Represents a WebSocket that implements [ISocket](xref:botframework-streaming.ISocket).\n */\nvar BrowserWebSocket = /** @class */ (function () {\n    /**\n     * Creates a new instance of the [BrowserWebSocket](xref:botframework-streaming.BrowserWebSocket) class.\n     *\n     * @param socket The socket object to build this connection on.\n     */\n    function BrowserWebSocket(socket) {\n        if (socket) {\n            this.webSocket = socket;\n        }\n    }\n    /**\n     * Connects to the supporting socket using WebSocket protocol.\n     *\n     * @param serverAddress The address the server is listening on.\n     * @returns A Promise that resolves the websocket is open and rejects if an error is encountered.\n     */\n    BrowserWebSocket.prototype.connect = function (serverAddress) {\n        return __awaiter(this, void 0, void 0, function () {\n            var resolver, rejector;\n            return __generator(this, function (_a) {\n                if (!this.webSocket) {\n                    this.webSocket = new WebSocket(serverAddress);\n                }\n                this.webSocket.onerror = function (e) {\n                    rejector(e);\n                };\n                this.webSocket.onopen = function (e) {\n                    resolver(e);\n                };\n                return [2 /*return*/, new Promise(function (resolve, reject) {\n                        resolver = resolve;\n                        rejector = reject;\n                    })];\n            });\n        });\n    };\n    Object.defineProperty(BrowserWebSocket.prototype, \"isConnected\", {\n        /**\n         * Indicates if the [BrowserWebSocket's](xref:botframework-streaming.BrowserWebSocket) underlying websocket is currently connected.\n         *\n         * @returns `true` if the underlying websocket is ready and availble to send messages, otherwise `false`.\n         */\n        get: function () {\n            return this.webSocket.readyState === 1;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    /**\n     * Writes a buffer to the socket and sends it.\n     *\n     * @param buffer The buffer of data to send across the connection.\n     */\n    BrowserWebSocket.prototype.write = function (buffer) {\n        this.webSocket.send(buffer);\n    };\n    /**\n     * Close the socket.\n     */\n    BrowserWebSocket.prototype.close = function () {\n        this.webSocket.close();\n    };\n    /**\n     * Set the handler for text and binary messages received on the socket.\n     *\n     * @param handler The callback to handle the \"message\" event.\n     */\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    BrowserWebSocket.prototype.setOnMessageHandler = function (handler) {\n        var bufferKey = 'buffer';\n        var packets = [];\n        this.webSocket.onmessage = function (evt) {\n            var fileReader = new FileReader();\n            var queueEntry = { buffer: null };\n            packets.push(queueEntry);\n            fileReader.onload = function (e) {\n                var t = e.target;\n                queueEntry[bufferKey] = t.result;\n                if (packets[0] === queueEntry) {\n                    while (0 < packets.length && packets[0][bufferKey]) {\n                        handler(packets[0][bufferKey]);\n                        packets.splice(0, 1);\n                    }\n                }\n            };\n            fileReader.readAsArrayBuffer(evt.data);\n        };\n    };\n    /**\n     * Set the callback to call when encountering errors.\n     *\n     * @param handler The callback to handle the \"error\" event.\n     */\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    BrowserWebSocket.prototype.setOnErrorHandler = function (handler) {\n        this.webSocket.onerror = function (error) {\n            if (error) {\n                handler(error);\n            }\n        };\n    };\n    /**\n     * Set the callback to call when encountering socket closures.\n     *\n     * @param handler The callback to handle the \"close\" event.\n     */\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    BrowserWebSocket.prototype.setOnCloseHandler = function (handler) {\n        this.webSocket.onclose = handler;\n    };\n    return BrowserWebSocket;\n}());\nexports.BrowserWebSocket = BrowserWebSocket;\n\n},{}],30:[function(require,module,exports){\n\"use strict\";\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\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;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WebSocketClient = void 0;\nvar browserWebSocket_1 = require(\"./browserWebSocket\");\nvar payloadTransport_1 = require(\"../payloadTransport\");\nvar protocolAdapter_1 = require(\"../protocolAdapter\");\nvar payloads_1 = require(\"../payloads\");\nvar webSocketTransport_1 = require(\"./webSocketTransport\");\n/**\n * Web socket based client to be used as streaming transport.\n */\nvar WebSocketClient = /** @class */ (function () {\n    /**\n     * Creates a new instance of the [WebSocketClient](xref:botframework-streaming.WebSocketClient) class.\n     *\n     * @param config For configuring a [WebSocketClient](xref:botframework-streaming.WebSocketClient) instance to communicate with a WebSocket server.\n     * @param config.url The URL of the remote server to connect to.\n     * @param config.requestHandler The [RequestHandler](xref:botframework-streaming.RequestHandler) used to process incoming messages received by this client.\n     * @param config.disconnectionHandler Optional function to handle the disconnection message.\n     */\n    function WebSocketClient(_a) {\n        var url = _a.url, requestHandler = _a.requestHandler, _b = _a.disconnectionHandler, disconnectionHandler = _b === void 0 ? null : _b;\n        this._url = url;\n        this._requestHandler = requestHandler;\n        this._disconnectionHandler = disconnectionHandler;\n        this._requestManager = new payloads_1.RequestManager();\n        this._sender = new payloadTransport_1.PayloadSender();\n        this._sender.disconnected = this.onConnectionDisconnected.bind(this);\n        this._receiver = new payloadTransport_1.PayloadReceiver();\n        this._receiver.disconnected = this.onConnectionDisconnected.bind(this);\n        this._protocolAdapter = new protocolAdapter_1.ProtocolAdapter(this._requestHandler, this._requestManager, this._sender, this._receiver);\n    }\n    /**\n     * Establish a connection with no custom headers.\n     *\n     * @returns A promise that will not resolve until the client stops listening for incoming messages.\n     */\n    WebSocketClient.prototype.connect = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            var ws, transport;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        ws = new browserWebSocket_1.BrowserWebSocket();\n                        return [4 /*yield*/, ws.connect(this._url)];\n                    case 1:\n                        _a.sent();\n                        transport = new webSocketTransport_1.WebSocketTransport(ws);\n                        this._sender.connect(transport);\n                        this._receiver.connect(transport);\n                        return [2 /*return*/];\n                }\n            });\n        });\n    };\n    /**\n     * Stop this client from listening.\n     */\n    WebSocketClient.prototype.disconnect = function () {\n        this._sender.disconnect(new payloadTransport_1.TransportDisconnectedEvent('Disconnect was called.'));\n        this._receiver.disconnect(new payloadTransport_1.TransportDisconnectedEvent('Disconnect was called.'));\n    };\n    /**\n     * Task used to send data over this client connection.\n     *\n     * @param request The streaming request to send.\n     * @returns A promise that will produce an instance of receive response on completion of the send operation.\n     */\n    WebSocketClient.prototype.send = function (request) {\n        return __awaiter(this, void 0, void 0, function () {\n            return __generator(this, function (_a) {\n                return [2 /*return*/, this._protocolAdapter.sendRequest(request)];\n            });\n        });\n    };\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    WebSocketClient.prototype.onConnectionDisconnected = function (sender, args) {\n        // Rejects all pending requests on disconnect.\n        this._requestManager.rejectAllResponses(new Error('Disconnect was called.'));\n        if (this._disconnectionHandler != null) {\n            this._disconnectionHandler('Disconnected');\n            return;\n        }\n        throw new Error(\"Unable to re-connect client to transport for url \".concat(this._url, \". Sender: '\").concat(JSON.stringify(sender), \"'. Args:' \").concat(JSON.stringify(args)));\n    };\n    return WebSocketClient;\n}());\nexports.WebSocketClient = WebSocketClient;\n\n},{\"../payloadTransport\":10,\"../payloads\":16,\"../protocolAdapter\":23,\"./browserWebSocket\":29,\"./webSocketTransport\":32}],31:[function(require,module,exports){\n\"use strict\";\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WebSocketTransport = exports.WebSocketClient = exports.BrowserWebSocket = void 0;\nvar browserWebSocket_1 = require(\"./browserWebSocket\");\nObject.defineProperty(exports, \"BrowserWebSocket\", { enumerable: true, get: function () { return browserWebSocket_1.BrowserWebSocket; } });\nvar browserWebSocketClient_1 = require(\"./browserWebSocketClient\");\nObject.defineProperty(exports, \"WebSocketClient\", { enumerable: true, get: function () { return browserWebSocketClient_1.WebSocketClient; } });\n/** @internal */\nvar webSocketTransport_1 = require(\"./webSocketTransport\");\nObject.defineProperty(exports, \"WebSocketTransport\", { enumerable: true, get: function () { return webSocketTransport_1.WebSocketTransport; } });\n\n},{\"./browserWebSocket\":29,\"./browserWebSocketClient\":30,\"./webSocketTransport\":32}],32:[function(require,module,exports){\n(function (Buffer){(function (){\n\"use strict\";\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\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;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WebSocketTransport = void 0;\n/**\n * Web socket based transport.\n */\nvar WebSocketTransport = /** @class */ (function () {\n    /**\n     * Creates a new instance of the [WebSocketTransport](xref:botframework-streaming.WebSocketTransport) class.\n     *\n     * @param ws The ISocket to build this transport on top of.\n     */\n    function WebSocketTransport(ws) {\n        var _this = this;\n        this.ws = ws;\n        this._queue = [];\n        this._activeOffset = 0;\n        this._activeReceiveCount = 0;\n        this.ws.setOnMessageHandler(function (data) {\n            _this.onReceive(data);\n        });\n        this.ws.setOnErrorHandler(function (err) {\n            _this.onError(err);\n        });\n        this.ws.setOnCloseHandler(function () {\n            _this.onClose();\n        });\n    }\n    /**\n     * Sends the given buffer out over the socket's connection.\n     *\n     * @param buffer The buffered data to send out over the connection.\n     * @returns A number indicating the length of the sent data if the data was successfully sent, otherwise 0.\n     */\n    WebSocketTransport.prototype.send = function (buffer) {\n        var _a;\n        if ((_a = this.ws) === null || _a === void 0 ? void 0 : _a.isConnected) {\n            this.ws.write(buffer);\n            return buffer.length;\n        }\n        return 0;\n    };\n    Object.defineProperty(WebSocketTransport.prototype, \"isConnected\", {\n        /**\n         * Returns true if the transport is connected to a socket.\n         *\n         * @returns `true` if the the transport is connected and ready to send data, `false` otherwise.\n         */\n        get: function () {\n            var _a;\n            return !!((_a = this.ws) === null || _a === void 0 ? void 0 : _a.isConnected);\n        },\n        enumerable: false,\n        configurable: true\n    });\n    /**\n     * Close the socket this transport is connected to.\n     */\n    WebSocketTransport.prototype.close = function () {\n        var _a;\n        if ((_a = this.ws) === null || _a === void 0 ? void 0 : _a.isConnected) {\n            this.ws.close();\n        }\n    };\n    /**\n     * Attempt to receive incoming data from the connected socket.\n     *\n     * @param count The number of bytes to attempt to receive.\n     * @returns A buffer populated with the received data.\n     */\n    WebSocketTransport.prototype.receive = function (count) {\n        return __awaiter(this, void 0, void 0, function () {\n            var promise;\n            var _this = this;\n            return __generator(this, function (_a) {\n                if (this._activeReceiveResolve) {\n                    throw new Error('Cannot call receive more than once before it has returned.');\n                }\n                this._activeReceiveCount = count;\n                promise = new Promise(function (resolve, reject) {\n                    _this._activeReceiveResolve = resolve;\n                    _this._activeReceiveReject = reject;\n                });\n                this.trySignalData();\n                return [2 /*return*/, promise];\n            });\n        });\n    };\n    /**\n     * Sets the transport to attempt to receive incoming data that has not yet arrived.\n     *\n     * @param data A buffer to store incoming data in.\n     */\n    WebSocketTransport.prototype.onReceive = function (data) {\n        if (this._queue && data && data.byteLength > 0) {\n            this._queue.push(Buffer.from(data));\n            this.trySignalData();\n        }\n    };\n    WebSocketTransport.prototype.onClose = function () {\n        if (this._activeReceiveReject) {\n            this._activeReceiveReject(new Error('Socket was closed.'));\n        }\n        this._active = null;\n        this._activeOffset = 0;\n        this._activeReceiveResolve = null;\n        this._activeReceiveReject = null;\n        this._activeReceiveCount = 0;\n        this.ws = null;\n    };\n    WebSocketTransport.prototype.onError = function (err) {\n        if (this._activeReceiveReject) {\n            this._activeReceiveReject(err);\n        }\n        this.onClose();\n    };\n    WebSocketTransport.prototype.trySignalData = function () {\n        if (this._activeReceiveResolve) {\n            if (!this._active && this._queue.length > 0) {\n                this._active = this._queue.shift();\n                this._activeOffset = 0;\n            }\n            if (this._active) {\n                if (this._activeOffset === 0 && this._active.length === this._activeReceiveCount) {\n                    // can send the entire _active buffer\n                    var buffer = this._active;\n                    this._active = null;\n                    this._activeReceiveResolve(buffer);\n                }\n                else {\n                    // create a Buffer.from and copy some of the contents into it\n                    var available = Math.min(this._activeReceiveCount, this._active.length - this._activeOffset);\n                    var buffer = Buffer.alloc(available);\n                    this._active.copy(buffer, 0, this._activeOffset, this._activeOffset + available);\n                    this._activeOffset += available;\n                    // if we used all of active, set it to undefined\n                    if (this._activeOffset >= this._active.length) {\n                        this._active = null;\n                        this._activeOffset = 0;\n                    }\n                    this._activeReceiveResolve(buffer);\n                }\n                this._activeReceiveCount = 0;\n                this._activeReceiveReject = null;\n                this._activeReceiveResolve = null;\n            }\n        }\n    };\n    return WebSocketTransport;\n}());\nexports.WebSocketTransport = WebSocketTransport;\n\n}).call(this)}).call(this,require(\"buffer\").Buffer)\n\n},{\"buffer\":35}],33:[function(require,module,exports){\n'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n  lookup[i] = code[i]\n  revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n  var len = b64.length\n\n  if (len % 4 > 0) {\n    throw new Error('Invalid string. Length must be a multiple of 4')\n  }\n\n  // Trim off extra bytes after placeholder bytes are found\n  // See: https://github.com/beatgammit/base64-js/issues/42\n  var validLen = b64.indexOf('=')\n  if (validLen === -1) validLen = len\n\n  var placeHoldersLen = validLen === len\n    ? 0\n    : 4 - (validLen % 4)\n\n  return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n  var tmp\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n\n  var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n  var curByte = 0\n\n  // if there are placeholders, only get up to the last complete 4 chars\n  var len = placeHoldersLen > 0\n    ? validLen - 4\n    : validLen\n\n  var i\n  for (i = 0; i < len; i += 4) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 18) |\n      (revLookup[b64.charCodeAt(i + 1)] << 12) |\n      (revLookup[b64.charCodeAt(i + 2)] << 6) |\n      revLookup[b64.charCodeAt(i + 3)]\n    arr[curByte++] = (tmp >> 16) & 0xFF\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 2) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 2) |\n      (revLookup[b64.charCodeAt(i + 1)] >> 4)\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 1) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 10) |\n      (revLookup[b64.charCodeAt(i + 1)] << 4) |\n      (revLookup[b64.charCodeAt(i + 2)] >> 2)\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  return arr\n}\n\nfunction tripletToBase64 (num) {\n  return lookup[num >> 18 & 0x3F] +\n    lookup[num >> 12 & 0x3F] +\n    lookup[num >> 6 & 0x3F] +\n    lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n  var tmp\n  var output = []\n  for (var i = start; i < end; i += 3) {\n    tmp =\n      ((uint8[i] << 16) & 0xFF0000) +\n      ((uint8[i + 1] << 8) & 0xFF00) +\n      (uint8[i + 2] & 0xFF)\n    output.push(tripletToBase64(tmp))\n  }\n  return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n  var tmp\n  var len = uint8.length\n  var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n  var parts = []\n  var maxChunkLength = 16383 // must be multiple of 3\n\n  // go through the array every three bytes, we'll deal with trailing stuff later\n  for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n    parts.push(encodeChunk(\n      uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)\n    ))\n  }\n\n  // pad the end with zeros, but make sure to not forget the extra bytes\n  if (extraBytes === 1) {\n    tmp = uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 2] +\n      lookup[(tmp << 4) & 0x3F] +\n      '=='\n    )\n  } else if (extraBytes === 2) {\n    tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 10] +\n      lookup[(tmp >> 4) & 0x3F] +\n      lookup[(tmp << 2) & 0x3F] +\n      '='\n    )\n  }\n\n  return parts.join('')\n}\n\n},{}],34:[function(require,module,exports){\n\n},{}],35:[function(require,module,exports){\n(function (Buffer){(function (){\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author   Feross Aboukhadijeh <https://feross.org>\n * @license  MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nvar K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n *   === true    Use Uint8Array implementation (fastest)\n *   === false   Print warning and recommend using `buffer` v4.x which has an Object\n *               implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n    typeof console.error === 'function') {\n  console.error(\n    'This browser lacks typed array (Uint8Array) support which is required by ' +\n    '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n  )\n}\n\nfunction typedArraySupport () {\n  // Can typed array instances can be augmented?\n  try {\n    var arr = new Uint8Array(1)\n    arr.__proto__ = { __proto__: Uint8Array.prototype, foo: function () { return 42 } }\n    return arr.foo() === 42\n  } catch (e) {\n    return false\n  }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n  enumerable: true,\n  get: function () {\n    if (!Buffer.isBuffer(this)) return undefined\n    return this.buffer\n  }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n  enumerable: true,\n  get: function () {\n    if (!Buffer.isBuffer(this)) return undefined\n    return this.byteOffset\n  }\n})\n\nfunction createBuffer (length) {\n  if (length > K_MAX_LENGTH) {\n    throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n  }\n  // Return an augmented `Uint8Array` instance\n  var buf = new Uint8Array(length)\n  buf.__proto__ = Buffer.prototype\n  return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n  // Common case.\n  if (typeof arg === 'number') {\n    if (typeof encodingOrOffset === 'string') {\n      throw new TypeError(\n        'The \"string\" argument must be of type string. Received type number'\n      )\n    }\n    return allocUnsafe(arg)\n  }\n  return from(arg, encodingOrOffset, length)\n}\n\n// Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\nif (typeof Symbol !== 'undefined' && Symbol.species != null &&\n    Buffer[Symbol.species] === Buffer) {\n  Object.defineProperty(Buffer, Symbol.species, {\n    value: null,\n    configurable: true,\n    enumerable: false,\n    writable: false\n  })\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n  if (typeof value === 'string') {\n    return fromString(value, encodingOrOffset)\n  }\n\n  if (ArrayBuffer.isView(value)) {\n    return fromArrayLike(value)\n  }\n\n  if (value == null) {\n    throw TypeError(\n      'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n      'or Array-like Object. Received type ' + (typeof value)\n    )\n  }\n\n  if (isInstance(value, ArrayBuffer) ||\n      (value && isInstance(value.buffer, ArrayBuffer))) {\n    return fromArrayBuffer(value, encodingOrOffset, length)\n  }\n\n  if (typeof value === 'number') {\n    throw new TypeError(\n      'The \"value\" argument must not be of type number. Received type number'\n    )\n  }\n\n  var valueOf = value.valueOf && value.valueOf()\n  if (valueOf != null && valueOf !== value) {\n    return Buffer.from(valueOf, encodingOrOffset, length)\n  }\n\n  var b = fromObject(value)\n  if (b) return b\n\n  if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n      typeof value[Symbol.toPrimitive] === 'function') {\n    return Buffer.from(\n      value[Symbol.toPrimitive]('string'), encodingOrOffset, length\n    )\n  }\n\n  throw new TypeError(\n    'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n    'or Array-like Object. Received type ' + (typeof value)\n  )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n  return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nBuffer.prototype.__proto__ = Uint8Array.prototype\nBuffer.__proto__ = Uint8Array\n\nfunction assertSize (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('\"size\" argument must be of type number')\n  } else if (size < 0) {\n    throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n  }\n}\n\nfunction alloc (size, fill, encoding) {\n  assertSize(size)\n  if (size <= 0) {\n    return createBuffer(size)\n  }\n  if (fill !== undefined) {\n    // Only pay attention to encoding if it's a string. This\n    // prevents accidentally sending in a number that would\n    // be interpretted as a start offset.\n    return typeof encoding === 'string'\n      ? createBuffer(size).fill(fill, encoding)\n      : createBuffer(size).fill(fill)\n  }\n  return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n  return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n  assertSize(size)\n  return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n  return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n  return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n  if (typeof encoding !== 'string' || encoding === '') {\n    encoding = 'utf8'\n  }\n\n  if (!Buffer.isEncoding(encoding)) {\n    throw new TypeError('Unknown encoding: ' + encoding)\n  }\n\n  var length = byteLength(string, encoding) | 0\n  var buf = createBuffer(length)\n\n  var actual = buf.write(string, encoding)\n\n  if (actual !== length) {\n    // Writing a hex string, for example, that contains invalid characters will\n    // cause everything after the first invalid character to be ignored. (e.g.\n    // 'abxxcd' will be treated as 'ab')\n    buf = buf.slice(0, actual)\n  }\n\n  return buf\n}\n\nfunction fromArrayLike (array) {\n  var length = array.length < 0 ? 0 : checked(array.length) | 0\n  var buf = createBuffer(length)\n  for (var i = 0; i < length; i += 1) {\n    buf[i] = array[i] & 255\n  }\n  return buf\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n  if (byteOffset < 0 || array.byteLength < byteOffset) {\n    throw new RangeError('\"offset\" is outside of buffer bounds')\n  }\n\n  if (array.byteLength < byteOffset + (length || 0)) {\n    throw new RangeError('\"length\" is outside of buffer bounds')\n  }\n\n  var buf\n  if (byteOffset === undefined && length === undefined) {\n    buf = new Uint8Array(array)\n  } else if (length === undefined) {\n    buf = new Uint8Array(array, byteOffset)\n  } else {\n    buf = new Uint8Array(array, byteOffset, length)\n  }\n\n  // Return an augmented `Uint8Array` instance\n  buf.__proto__ = Buffer.prototype\n  return buf\n}\n\nfunction fromObject (obj) {\n  if (Buffer.isBuffer(obj)) {\n    var len = checked(obj.length) | 0\n    var buf = createBuffer(len)\n\n    if (buf.length === 0) {\n      return buf\n    }\n\n    obj.copy(buf, 0, 0, len)\n    return buf\n  }\n\n  if (obj.length !== undefined) {\n    if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n      return createBuffer(0)\n    }\n    return fromArrayLike(obj)\n  }\n\n  if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n    return fromArrayLike(obj.data)\n  }\n}\n\nfunction checked (length) {\n  // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n  // length is NaN (which is otherwise coerced to zero.)\n  if (length >= K_MAX_LENGTH) {\n    throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n                         'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n  }\n  return length | 0\n}\n\nfunction SlowBuffer (length) {\n  if (+length != length) { // eslint-disable-line eqeqeq\n    length = 0\n  }\n  return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n  return b != null && b._isBuffer === true &&\n    b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n  if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n  if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n  if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n    throw new TypeError(\n      'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n    )\n  }\n\n  if (a === b) return 0\n\n  var x = a.length\n  var y = b.length\n\n  for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n    if (a[i] !== b[i]) {\n      x = a[i]\n      y = b[i]\n      break\n    }\n  }\n\n  if (x < y) return -1\n  if (y < x) return 1\n  return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n  switch (String(encoding).toLowerCase()) {\n    case 'hex':\n    case 'utf8':\n    case 'utf-8':\n    case 'ascii':\n    case 'latin1':\n    case 'binary':\n    case 'base64':\n    case 'ucs2':\n    case 'ucs-2':\n    case 'utf16le':\n    case 'utf-16le':\n      return true\n    default:\n      return false\n  }\n}\n\nBuffer.concat = function concat (list, length) {\n  if (!Array.isArray(list)) {\n    throw new TypeError('\"list\" argument must be an Array of Buffers')\n  }\n\n  if (list.length === 0) {\n    return Buffer.alloc(0)\n  }\n\n  var i\n  if (length === undefined) {\n    length = 0\n    for (i = 0; i < list.length; ++i) {\n      length += list[i].length\n    }\n  }\n\n  var buffer = Buffer.allocUnsafe(length)\n  var pos = 0\n  for (i = 0; i < list.length; ++i) {\n    var buf = list[i]\n    if (isInstance(buf, Uint8Array)) {\n      buf = Buffer.from(buf)\n    }\n    if (!Buffer.isBuffer(buf)) {\n      throw new TypeError('\"list\" argument must be an Array of Buffers')\n    }\n    buf.copy(buffer, pos)\n    pos += buf.length\n  }\n  return buffer\n}\n\nfunction byteLength (string, encoding) {\n  if (Buffer.isBuffer(string)) {\n    return string.length\n  }\n  if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n    return string.byteLength\n  }\n  if (typeof string !== 'string') {\n    throw new TypeError(\n      'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n      'Received type ' + typeof string\n    )\n  }\n\n  var len = string.length\n  var mustMatch = (arguments.length > 2 && arguments[2] === true)\n  if (!mustMatch && len === 0) return 0\n\n  // Use a for loop to avoid recursion\n  var loweredCase = false\n  for (;;) {\n    switch (encoding) {\n      case 'ascii':\n      case 'latin1':\n      case 'binary':\n        return len\n      case 'utf8':\n      case 'utf-8':\n        return utf8ToBytes(string).length\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return len * 2\n      case 'hex':\n        return len >>> 1\n      case 'base64':\n        return base64ToBytes(string).length\n      default:\n        if (loweredCase) {\n          return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n        }\n        encoding = ('' + encoding).toLowerCase()\n        loweredCase = true\n    }\n  }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n  var loweredCase = false\n\n  // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n  // property of a typed array.\n\n  // This behaves neither like String nor Uint8Array in that we set start/end\n  // to their upper/lower bounds if the value passed is out of range.\n  // undefined is handled specially as per ECMA-262 6th Edition,\n  // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n  if (start === undefined || start < 0) {\n    start = 0\n  }\n  // Return early if start > this.length. Done here to prevent potential uint32\n  // coercion fail below.\n  if (start > this.length) {\n    return ''\n  }\n\n  if (end === undefined || end > this.length) {\n    end = this.length\n  }\n\n  if (end <= 0) {\n    return ''\n  }\n\n  // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n  end >>>= 0\n  start >>>= 0\n\n  if (end <= start) {\n    return ''\n  }\n\n  if (!encoding) encoding = 'utf8'\n\n  while (true) {\n    switch (encoding) {\n      case 'hex':\n        return hexSlice(this, start, end)\n\n      case 'utf8':\n      case 'utf-8':\n        return utf8Slice(this, start, end)\n\n      case 'ascii':\n        return asciiSlice(this, start, end)\n\n      case 'latin1':\n      case 'binary':\n        return latin1Slice(this, start, end)\n\n      case 'base64':\n        return base64Slice(this, start, end)\n\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return utf16leSlice(this, start, end)\n\n      default:\n        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n        encoding = (encoding + '').toLowerCase()\n        loweredCase = true\n    }\n  }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n  var i = b[n]\n  b[n] = b[m]\n  b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n  var len = this.length\n  if (len % 2 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 16-bits')\n  }\n  for (var i = 0; i < len; i += 2) {\n    swap(this, i, i + 1)\n  }\n  return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n  var len = this.length\n  if (len % 4 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 32-bits')\n  }\n  for (var i = 0; i < len; i += 4) {\n    swap(this, i, i + 3)\n    swap(this, i + 1, i + 2)\n  }\n  return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n  var len = this.length\n  if (len % 8 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 64-bits')\n  }\n  for (var i = 0; i < len; i += 8) {\n    swap(this, i, i + 7)\n    swap(this, i + 1, i + 6)\n    swap(this, i + 2, i + 5)\n    swap(this, i + 3, i + 4)\n  }\n  return this\n}\n\nBuffer.prototype.toString = function toString () {\n  var length = this.length\n  if (length === 0) return ''\n  if (arguments.length === 0) return utf8Slice(this, 0, length)\n  return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n  if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n  if (this === b) return true\n  return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n  var str = ''\n  var max = exports.INSPECT_MAX_BYTES\n  str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n  if (this.length > max) str += ' ... '\n  return '<Buffer ' + str + '>'\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n  if (isInstance(target, Uint8Array)) {\n    target = Buffer.from(target, target.offset, target.byteLength)\n  }\n  if (!Buffer.isBuffer(target)) {\n    throw new TypeError(\n      'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n      'Received type ' + (typeof target)\n    )\n  }\n\n  if (start === undefined) {\n    start = 0\n  }\n  if (end === undefined) {\n    end = target ? target.length : 0\n  }\n  if (thisStart === undefined) {\n    thisStart = 0\n  }\n  if (thisEnd === undefined) {\n    thisEnd = this.length\n  }\n\n  if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n    throw new RangeError('out of range index')\n  }\n\n  if (thisStart >= thisEnd && start >= end) {\n    return 0\n  }\n  if (thisStart >= thisEnd) {\n    return -1\n  }\n  if (start >= end) {\n    return 1\n  }\n\n  start >>>= 0\n  end >>>= 0\n  thisStart >>>= 0\n  thisEnd >>>= 0\n\n  if (this === target) return 0\n\n  var x = thisEnd - thisStart\n  var y = end - start\n  var len = Math.min(x, y)\n\n  var thisCopy = this.slice(thisStart, thisEnd)\n  var targetCopy = target.slice(start, end)\n\n  for (var i = 0; i < len; ++i) {\n    if (thisCopy[i] !== targetCopy[i]) {\n      x = thisCopy[i]\n      y = targetCopy[i]\n      break\n    }\n  }\n\n  if (x < y) return -1\n  if (y < x) return 1\n  return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n  // Empty buffer means no match\n  if (buffer.length === 0) return -1\n\n  // Normalize byteOffset\n  if (typeof byteOffset === 'string') {\n    encoding = byteOffset\n    byteOffset = 0\n  } else if (byteOffset > 0x7fffffff) {\n    byteOffset = 0x7fffffff\n  } else if (byteOffset < -0x80000000) {\n    byteOffset = -0x80000000\n  }\n  byteOffset = +byteOffset // Coerce to Number.\n  if (numberIsNaN(byteOffset)) {\n    // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n    byteOffset = dir ? 0 : (buffer.length - 1)\n  }\n\n  // Normalize byteOffset: negative offsets start from the end of the buffer\n  if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n  if (byteOffset >= buffer.length) {\n    if (dir) return -1\n    else byteOffset = buffer.length - 1\n  } else if (byteOffset < 0) {\n    if (dir) byteOffset = 0\n    else return -1\n  }\n\n  // Normalize val\n  if (typeof val === 'string') {\n    val = Buffer.from(val, encoding)\n  }\n\n  // Finally, search either indexOf (if dir is true) or lastIndexOf\n  if (Buffer.isBuffer(val)) {\n    // Special case: looking for empty string/buffer always fails\n    if (val.length === 0) {\n      return -1\n    }\n    return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n  } else if (typeof val === 'number') {\n    val = val & 0xFF // Search for a byte value [0-255]\n    if (typeof Uint8Array.prototype.indexOf === 'function') {\n      if (dir) {\n        return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n      } else {\n        return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n      }\n    }\n    return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n  }\n\n  throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n  var indexSize = 1\n  var arrLength = arr.length\n  var valLength = val.length\n\n  if (encoding !== undefined) {\n    encoding = String(encoding).toLowerCase()\n    if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n        encoding === 'utf16le' || encoding === 'utf-16le') {\n      if (arr.length < 2 || val.length < 2) {\n        return -1\n      }\n      indexSize = 2\n      arrLength /= 2\n      valLength /= 2\n      byteOffset /= 2\n    }\n  }\n\n  function read (buf, i) {\n    if (indexSize === 1) {\n      return buf[i]\n    } else {\n      return buf.readUInt16BE(i * indexSize)\n    }\n  }\n\n  var i\n  if (dir) {\n    var foundIndex = -1\n    for (i = byteOffset; i < arrLength; i++) {\n      if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n        if (foundIndex === -1) foundIndex = i\n        if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n      } else {\n        if (foundIndex !== -1) i -= i - foundIndex\n        foundIndex = -1\n      }\n    }\n  } else {\n    if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n    for (i = byteOffset; i >= 0; i--) {\n      var found = true\n      for (var j = 0; j < valLength; j++) {\n        if (read(arr, i + j) !== read(val, j)) {\n          found = false\n          break\n        }\n      }\n      if (found) return i\n    }\n  }\n\n  return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n  return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n  return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n  return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n  offset = Number(offset) || 0\n  var remaining = buf.length - offset\n  if (!length) {\n    length = remaining\n  } else {\n    length = Number(length)\n    if (length > remaining) {\n      length = remaining\n    }\n  }\n\n  var strLen = string.length\n\n  if (length > strLen / 2) {\n    length = strLen / 2\n  }\n  for (var i = 0; i < length; ++i) {\n    var parsed = parseInt(string.substr(i * 2, 2), 16)\n    if (numberIsNaN(parsed)) return i\n    buf[offset + i] = parsed\n  }\n  return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n  return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n  return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n  return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n  return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n  return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n  // Buffer#write(string)\n  if (offset === undefined) {\n    encoding = 'utf8'\n    length = this.length\n    offset = 0\n  // Buffer#write(string, encoding)\n  } else if (length === undefined && typeof offset === 'string') {\n    encoding = offset\n    length = this.length\n    offset = 0\n  // Buffer#write(string, offset[, length][, encoding])\n  } else if (isFinite(offset)) {\n    offset = offset >>> 0\n    if (isFinite(length)) {\n      length = length >>> 0\n      if (encoding === undefined) encoding = 'utf8'\n    } else {\n      encoding = length\n      length = undefined\n    }\n  } else {\n    throw new Error(\n      'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n    )\n  }\n\n  var remaining = this.length - offset\n  if (length === undefined || length > remaining) length = remaining\n\n  if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n    throw new RangeError('Attempt to write outside buffer bounds')\n  }\n\n  if (!encoding) encoding = 'utf8'\n\n  var loweredCase = false\n  for (;;) {\n    switch (encoding) {\n      case 'hex':\n        return hexWrite(this, string, offset, length)\n\n      case 'utf8':\n      case 'utf-8':\n        return utf8Write(this, string, offset, length)\n\n      case 'ascii':\n        return asciiWrite(this, string, offset, length)\n\n      case 'latin1':\n      case 'binary':\n        return latin1Write(this, string, offset, length)\n\n      case 'base64':\n        // Warning: maxLength not taken into account in base64Write\n        return base64Write(this, string, offset, length)\n\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return ucs2Write(this, string, offset, length)\n\n      default:\n        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n        encoding = ('' + encoding).toLowerCase()\n        loweredCase = true\n    }\n  }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n  return {\n    type: 'Buffer',\n    data: Array.prototype.slice.call(this._arr || this, 0)\n  }\n}\n\nfunction base64Slice (buf, start, end) {\n  if (start === 0 && end === buf.length) {\n    return base64.fromByteArray(buf)\n  } else {\n    return base64.fromByteArray(buf.slice(start, end))\n  }\n}\n\nfunction utf8Slice (buf, start, end) {\n  end = Math.min(buf.length, end)\n  var res = []\n\n  var i = start\n  while (i < end) {\n    var firstByte = buf[i]\n    var codePoint = null\n    var bytesPerSequence = (firstByte > 0xEF) ? 4\n      : (firstByte > 0xDF) ? 3\n        : (firstByte > 0xBF) ? 2\n          : 1\n\n    if (i + bytesPerSequence <= end) {\n      var secondByte, thirdByte, fourthByte, tempCodePoint\n\n      switch (bytesPerSequence) {\n        case 1:\n          if (firstByte < 0x80) {\n            codePoint = firstByte\n          }\n          break\n        case 2:\n          secondByte = buf[i + 1]\n          if ((secondByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n            if (tempCodePoint > 0x7F) {\n              codePoint = tempCodePoint\n            }\n          }\n          break\n        case 3:\n          secondByte = buf[i + 1]\n          thirdByte = buf[i + 2]\n          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n            if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n              codePoint = tempCodePoint\n            }\n          }\n          break\n        case 4:\n          secondByte = buf[i + 1]\n          thirdByte = buf[i + 2]\n          fourthByte = buf[i + 3]\n          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n            if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n              codePoint = tempCodePoint\n            }\n          }\n      }\n    }\n\n    if (codePoint === null) {\n      // we did not generate a valid codePoint so insert a\n      // replacement char (U+FFFD) and advance only 1 byte\n      codePoint = 0xFFFD\n      bytesPerSequence = 1\n    } else if (codePoint > 0xFFFF) {\n      // encode to utf16 (surrogate pair dance)\n      codePoint -= 0x10000\n      res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n      codePoint = 0xDC00 | codePoint & 0x3FF\n    }\n\n    res.push(codePoint)\n    i += bytesPerSequence\n  }\n\n  return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n  var len = codePoints.length\n  if (len <= MAX_ARGUMENTS_LENGTH) {\n    return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n  }\n\n  // Decode in chunks to avoid \"call stack size exceeded\".\n  var res = ''\n  var i = 0\n  while (i < len) {\n    res += String.fromCharCode.apply(\n      String,\n      codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n    )\n  }\n  return res\n}\n\nfunction asciiSlice (buf, start, end) {\n  var ret = ''\n  end = Math.min(buf.length, end)\n\n  for (var i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i] & 0x7F)\n  }\n  return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n  var ret = ''\n  end = Math.min(buf.length, end)\n\n  for (var i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i])\n  }\n  return ret\n}\n\nfunction hexSlice (buf, start, end) {\n  var len = buf.length\n\n  if (!start || start < 0) start = 0\n  if (!end || end < 0 || end > len) end = len\n\n  var out = ''\n  for (var i = start; i < end; ++i) {\n    out += toHex(buf[i])\n  }\n  return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n  var bytes = buf.slice(start, end)\n  var res = ''\n  for (var i = 0; i < bytes.length; i += 2) {\n    res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n  }\n  return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n  var len = this.length\n  start = ~~start\n  end = end === undefined ? len : ~~end\n\n  if (start < 0) {\n    start += len\n    if (start < 0) start = 0\n  } else if (start > len) {\n    start = len\n  }\n\n  if (end < 0) {\n    end += len\n    if (end < 0) end = 0\n  } else if (end > len) {\n    end = len\n  }\n\n  if (end < start) end = start\n\n  var newBuf = this.subarray(start, end)\n  // Return an augmented `Uint8Array` instance\n  newBuf.__proto__ = Buffer.prototype\n  return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n  if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n  if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var val = this[offset]\n  var mul = 1\n  var i = 0\n  while (++i < byteLength && (mul *= 0x100)) {\n    val += this[offset + i] * mul\n  }\n\n  return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) {\n    checkOffset(offset, byteLength, this.length)\n  }\n\n  var val = this[offset + --byteLength]\n  var mul = 1\n  while (byteLength > 0 && (mul *= 0x100)) {\n    val += this[offset + --byteLength] * mul\n  }\n\n  return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 1, this.length)\n  return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return ((this[offset]) |\n      (this[offset + 1] << 8) |\n      (this[offset + 2] << 16)) +\n      (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset] * 0x1000000) +\n    ((this[offset + 1] << 16) |\n    (this[offset + 2] << 8) |\n    this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var val = this[offset]\n  var mul = 1\n  var i = 0\n  while (++i < byteLength && (mul *= 0x100)) {\n    val += this[offset + i] * mul\n  }\n  mul *= 0x80\n\n  if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n  return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var i = byteLength\n  var mul = 1\n  var val = this[offset + --i]\n  while (i > 0 && (mul *= 0x100)) {\n    val += this[offset + --i] * mul\n  }\n  mul *= 0x80\n\n  if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n  return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 1, this.length)\n  if (!(this[offset] & 0x80)) return (this[offset])\n  return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  var val = this[offset] | (this[offset + 1] << 8)\n  return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  var val = this[offset + 1] | (this[offset] << 8)\n  return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset]) |\n    (this[offset + 1] << 8) |\n    (this[offset + 2] << 16) |\n    (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset] << 24) |\n    (this[offset + 1] << 16) |\n    (this[offset + 2] << 8) |\n    (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n  return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n  return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 8, this.length)\n  return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 8, this.length)\n  return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n  if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n  if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n  if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) {\n    var maxBytes = Math.pow(2, 8 * byteLength) - 1\n    checkInt(this, value, offset, byteLength, maxBytes, 0)\n  }\n\n  var mul = 1\n  var i = 0\n  this[offset] = value & 0xFF\n  while (++i < byteLength && (mul *= 0x100)) {\n    this[offset + i] = (value / mul) & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) {\n    var maxBytes = Math.pow(2, 8 * byteLength) - 1\n    checkInt(this, value, offset, byteLength, maxBytes, 0)\n  }\n\n  var i = byteLength - 1\n  var mul = 1\n  this[offset + i] = value & 0xFF\n  while (--i >= 0 && (mul *= 0x100)) {\n    this[offset + i] = (value / mul) & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n  this[offset] = (value & 0xff)\n  return offset + 1\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n  this[offset] = (value & 0xff)\n  this[offset + 1] = (value >>> 8)\n  return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n  this[offset] = (value >>> 8)\n  this[offset + 1] = (value & 0xff)\n  return offset + 2\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n  this[offset + 3] = (value >>> 24)\n  this[offset + 2] = (value >>> 16)\n  this[offset + 1] = (value >>> 8)\n  this[offset] = (value & 0xff)\n  return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n  this[offset] = (value >>> 24)\n  this[offset + 1] = (value >>> 16)\n  this[offset + 2] = (value >>> 8)\n  this[offset + 3] = (value & 0xff)\n  return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) {\n    var limit = Math.pow(2, (8 * byteLength) - 1)\n\n    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n  }\n\n  var i = 0\n  var mul = 1\n  var sub = 0\n  this[offset] = value & 0xFF\n  while (++i < byteLength && (mul *= 0x100)) {\n    if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n      sub = 1\n    }\n    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) {\n    var limit = Math.pow(2, (8 * byteLength) - 1)\n\n    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n  }\n\n  var i = byteLength - 1\n  var mul = 1\n  var sub = 0\n  this[offset + i] = value & 0xFF\n  while (--i >= 0 && (mul *= 0x100)) {\n    if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n      sub = 1\n    }\n    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n  if (value < 0) value = 0xff + value + 1\n  this[offset] = (value & 0xff)\n  return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n  this[offset] = (value & 0xff)\n  this[offset + 1] = (value >>> 8)\n  return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n  this[offset] = (value >>> 8)\n  this[offset + 1] = (value & 0xff)\n  return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n  this[offset] = (value & 0xff)\n  this[offset + 1] = (value >>> 8)\n  this[offset + 2] = (value >>> 16)\n  this[offset + 3] = (value >>> 24)\n  return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n  if (value < 0) value = 0xffffffff + value + 1\n  this[offset] = (value >>> 24)\n  this[offset + 1] = (value >>> 16)\n  this[offset + 2] = (value >>> 8)\n  this[offset + 3] = (value & 0xff)\n  return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n  if (offset + ext > buf.length) throw new RangeError('Index out of range')\n  if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) {\n    checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n  }\n  ieee754.write(buf, value, offset, littleEndian, 23, 4)\n  return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n  return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n  return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) {\n    checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n  }\n  ieee754.write(buf, value, offset, littleEndian, 52, 8)\n  return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n  return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n  return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n  if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n  if (!start) start = 0\n  if (!end && end !== 0) end = this.length\n  if (targetStart >= target.length) targetStart = target.length\n  if (!targetStart) targetStart = 0\n  if (end > 0 && end < start) end = start\n\n  // Copy 0 bytes; we're done\n  if (end === start) return 0\n  if (target.length === 0 || this.length === 0) return 0\n\n  // Fatal error conditions\n  if (targetStart < 0) {\n    throw new RangeError('targetStart out of bounds')\n  }\n  if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n  if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n  // Are we oob?\n  if (end > this.length) end = this.length\n  if (target.length - targetStart < end - start) {\n    end = target.length - targetStart + start\n  }\n\n  var len = end - start\n\n  if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n    // Use built-in when available, missing from IE11\n    this.copyWithin(targetStart, start, end)\n  } else if (this === target && start < targetStart && targetStart < end) {\n    // descending copy from end\n    for (var i = len - 1; i >= 0; --i) {\n      target[i + targetStart] = this[i + start]\n    }\n  } else {\n    Uint8Array.prototype.set.call(\n      target,\n      this.subarray(start, end),\n      targetStart\n    )\n  }\n\n  return len\n}\n\n// Usage:\n//    buffer.fill(number[, offset[, end]])\n//    buffer.fill(buffer[, offset[, end]])\n//    buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n  // Handle string cases:\n  if (typeof val === 'string') {\n    if (typeof start === 'string') {\n      encoding = start\n      start = 0\n      end = this.length\n    } else if (typeof end === 'string') {\n      encoding = end\n      end = this.length\n    }\n    if (encoding !== undefined && typeof encoding !== 'string') {\n      throw new TypeError('encoding must be a string')\n    }\n    if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n      throw new TypeError('Unknown encoding: ' + encoding)\n    }\n    if (val.length === 1) {\n      var code = val.charCodeAt(0)\n      if ((encoding === 'utf8' && code < 128) ||\n          encoding === 'latin1') {\n        // Fast path: If `val` fits into a single byte, use that numeric value.\n        val = code\n      }\n    }\n  } else if (typeof val === 'number') {\n    val = val & 255\n  }\n\n  // Invalid ranges are not set to a default, so can range check early.\n  if (start < 0 || this.length < start || this.length < end) {\n    throw new RangeError('Out of range index')\n  }\n\n  if (end <= start) {\n    return this\n  }\n\n  start = start >>> 0\n  end = end === undefined ? this.length : end >>> 0\n\n  if (!val) val = 0\n\n  var i\n  if (typeof val === 'number') {\n    for (i = start; i < end; ++i) {\n      this[i] = val\n    }\n  } else {\n    var bytes = Buffer.isBuffer(val)\n      ? val\n      : Buffer.from(val, encoding)\n    var len = bytes.length\n    if (len === 0) {\n      throw new TypeError('The value \"' + val +\n        '\" is invalid for argument \"value\"')\n    }\n    for (i = 0; i < end - start; ++i) {\n      this[i + start] = bytes[i % len]\n    }\n  }\n\n  return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n  // Node takes equal signs as end of the Base64 encoding\n  str = str.split('=')[0]\n  // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n  str = str.trim().replace(INVALID_BASE64_RE, '')\n  // Node converts strings with length < 2 to ''\n  if (str.length < 2) return ''\n  // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n  while (str.length % 4 !== 0) {\n    str = str + '='\n  }\n  return str\n}\n\nfunction toHex (n) {\n  if (n < 16) return '0' + n.toString(16)\n  return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n  units = units || Infinity\n  var codePoint\n  var length = string.length\n  var leadSurrogate = null\n  var bytes = []\n\n  for (var i = 0; i < length; ++i) {\n    codePoint = string.charCodeAt(i)\n\n    // is surrogate component\n    if (codePoint > 0xD7FF && codePoint < 0xE000) {\n      // last char was a lead\n      if (!leadSurrogate) {\n        // no lead yet\n        if (codePoint > 0xDBFF) {\n          // unexpected trail\n          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n          continue\n        } else if (i + 1 === length) {\n          // unpaired lead\n          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n          continue\n        }\n\n        // valid lead\n        leadSurrogate = codePoint\n\n        continue\n      }\n\n      // 2 leads in a row\n      if (codePoint < 0xDC00) {\n        if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n        leadSurrogate = codePoint\n        continue\n      }\n\n      // valid surrogate pair\n      codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n    } else if (leadSurrogate) {\n      // valid bmp char, but last char was a lead\n      if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n    }\n\n    leadSurrogate = null\n\n    // encode utf8\n    if (codePoint < 0x80) {\n      if ((units -= 1) < 0) break\n      bytes.push(codePoint)\n    } else if (codePoint < 0x800) {\n      if ((units -= 2) < 0) break\n      bytes.push(\n        codePoint >> 0x6 | 0xC0,\n        codePoint & 0x3F | 0x80\n      )\n    } else if (codePoint < 0x10000) {\n      if ((units -= 3) < 0) break\n      bytes.push(\n        codePoint >> 0xC | 0xE0,\n        codePoint >> 0x6 & 0x3F | 0x80,\n        codePoint & 0x3F | 0x80\n      )\n    } else if (codePoint < 0x110000) {\n      if ((units -= 4) < 0) break\n      bytes.push(\n        codePoint >> 0x12 | 0xF0,\n        codePoint >> 0xC & 0x3F | 0x80,\n        codePoint >> 0x6 & 0x3F | 0x80,\n        codePoint & 0x3F | 0x80\n      )\n    } else {\n      throw new Error('Invalid code point')\n    }\n  }\n\n  return bytes\n}\n\nfunction asciiToBytes (str) {\n  var byteArray = []\n  for (var i = 0; i < str.length; ++i) {\n    // Node's code seems to be doing this and not & 0x7F..\n    byteArray.push(str.charCodeAt(i) & 0xFF)\n  }\n  return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n  var c, hi, lo\n  var byteArray = []\n  for (var i = 0; i < str.length; ++i) {\n    if ((units -= 2) < 0) break\n\n    c = str.charCodeAt(i)\n    hi = c >> 8\n    lo = c % 256\n    byteArray.push(lo)\n    byteArray.push(hi)\n  }\n\n  return byteArray\n}\n\nfunction base64ToBytes (str) {\n  return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n  for (var i = 0; i < length; ++i) {\n    if ((i + offset >= dst.length) || (i >= src.length)) break\n    dst[i + offset] = src[i]\n  }\n  return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n  return obj instanceof type ||\n    (obj != null && obj.constructor != null && obj.constructor.name != null &&\n      obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n  // For IE11 support\n  return obj !== obj // eslint-disable-line no-self-compare\n}\n\n}).call(this)}).call(this,require(\"buffer\").Buffer)\n\n},{\"base64-js\":33,\"buffer\":35,\"ieee754\":37}],36:[function(require,module,exports){\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n  ? R.apply\n  : function ReflectApply(target, receiver, args) {\n    return Function.prototype.apply.call(target, receiver, args);\n  }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n  ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n  ReflectOwnKeys = function ReflectOwnKeys(target) {\n    return Object.getOwnPropertyNames(target)\n      .concat(Object.getOwnPropertySymbols(target));\n  };\n} else {\n  ReflectOwnKeys = function ReflectOwnKeys(target) {\n    return Object.getOwnPropertyNames(target);\n  };\n}\n\nfunction ProcessEmitWarning(warning) {\n  if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n  return value !== value;\n}\n\nfunction EventEmitter() {\n  EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n  if (typeof listener !== 'function') {\n    throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n  }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n  enumerable: true,\n  get: function() {\n    return defaultMaxListeners;\n  },\n  set: function(arg) {\n    if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n      throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n    }\n    defaultMaxListeners = arg;\n  }\n});\n\nEventEmitter.init = function() {\n\n  if (this._events === undefined ||\n      this._events === Object.getPrototypeOf(this)._events) {\n    this._events = Object.create(null);\n    this._eventsCount = 0;\n  }\n\n  this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n  if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n    throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n  }\n  this._maxListeners = n;\n  return this;\n};\n\nfunction _getMaxListeners(that) {\n  if (that._maxListeners === undefined)\n    return EventEmitter.defaultMaxListeners;\n  return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n  return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n  var args = [];\n  for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n  var doError = (type === 'error');\n\n  var events = this._events;\n  if (events !== undefined)\n    doError = (doError && events.error === undefined);\n  else if (!doError)\n    return false;\n\n  // If there is no 'error' event listener then throw.\n  if (doError) {\n    var er;\n    if (args.length > 0)\n      er = args[0];\n    if (er instanceof Error) {\n      // Note: The comments on the `throw` lines are intentional, they show\n      // up in Node's output if this results in an unhandled exception.\n      throw er; // Unhandled 'error' event\n    }\n    // At least give some kind of context to the user\n    var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n    err.context = er;\n    throw err; // Unhandled 'error' event\n  }\n\n  var handler = events[type];\n\n  if (handler === undefined)\n    return false;\n\n  if (typeof handler === 'function') {\n    ReflectApply(handler, this, args);\n  } else {\n    var len = handler.length;\n    var listeners = arrayClone(handler, len);\n    for (var i = 0; i < len; ++i)\n      ReflectApply(listeners[i], this, args);\n  }\n\n  return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n  var m;\n  var events;\n  var existing;\n\n  checkListener(listener);\n\n  events = target._events;\n  if (events === undefined) {\n    events = target._events = Object.create(null);\n    target._eventsCount = 0;\n  } else {\n    // To avoid recursion in the case that type === \"newListener\"! Before\n    // adding it to the listeners, first emit \"newListener\".\n    if (events.newListener !== undefined) {\n      target.emit('newListener', type,\n                  listener.listener ? listener.listener : listener);\n\n      // Re-assign `events` because a newListener handler could have caused the\n      // this._events to be assigned to a new object\n      events = target._events;\n    }\n    existing = events[type];\n  }\n\n  if (existing === undefined) {\n    // Optimize the case of one listener. Don't need the extra array object.\n    existing = events[type] = listener;\n    ++target._eventsCount;\n  } else {\n    if (typeof existing === 'function') {\n      // Adding the second element, need to change to array.\n      existing = events[type] =\n        prepend ? [listener, existing] : [existing, listener];\n      // If we've already got an array, just append.\n    } else if (prepend) {\n      existing.unshift(listener);\n    } else {\n      existing.push(listener);\n    }\n\n    // Check for listener leak\n    m = _getMaxListeners(target);\n    if (m > 0 && existing.length > m && !existing.warned) {\n      existing.warned = true;\n      // No error code for this since it is a Warning\n      // eslint-disable-next-line no-restricted-syntax\n      var w = new Error('Possible EventEmitter memory leak detected. ' +\n                          existing.length + ' ' + String(type) + ' listeners ' +\n                          'added. Use emitter.setMaxListeners() to ' +\n                          'increase limit');\n      w.name = 'MaxListenersExceededWarning';\n      w.emitter = target;\n      w.type = type;\n      w.count = existing.length;\n      ProcessEmitWarning(w);\n    }\n  }\n\n  return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n  return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n    function prependListener(type, listener) {\n      return _addListener(this, type, listener, true);\n    };\n\nfunction onceWrapper() {\n  if (!this.fired) {\n    this.target.removeListener(this.type, this.wrapFn);\n    this.fired = true;\n    if (arguments.length === 0)\n      return this.listener.call(this.target);\n    return this.listener.apply(this.target, arguments);\n  }\n}\n\nfunction _onceWrap(target, type, listener) {\n  var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n  var wrapped = onceWrapper.bind(state);\n  wrapped.listener = listener;\n  state.wrapFn = wrapped;\n  return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n  checkListener(listener);\n  this.on(type, _onceWrap(this, type, listener));\n  return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n    function prependOnceListener(type, listener) {\n      checkListener(listener);\n      this.prependListener(type, _onceWrap(this, type, listener));\n      return this;\n    };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n    function removeListener(type, listener) {\n      var list, events, position, i, originalListener;\n\n      checkListener(listener);\n\n      events = this._events;\n      if (events === undefined)\n        return this;\n\n      list = events[type];\n      if (list === undefined)\n        return this;\n\n      if (list === listener || list.listener === listener) {\n        if (--this._eventsCount === 0)\n          this._events = Object.create(null);\n        else {\n          delete events[type];\n          if (events.removeListener)\n            this.emit('removeListener', type, list.listener || listener);\n        }\n      } else if (typeof list !== 'function') {\n        position = -1;\n\n        for (i = list.length - 1; i >= 0; i--) {\n          if (list[i] === listener || list[i].listener === listener) {\n            originalListener = list[i].listener;\n            position = i;\n            break;\n          }\n        }\n\n        if (position < 0)\n          return this;\n\n        if (position === 0)\n          list.shift();\n        else {\n          spliceOne(list, position);\n        }\n\n        if (list.length === 1)\n          events[type] = list[0];\n\n        if (events.removeListener !== undefined)\n          this.emit('removeListener', type, originalListener || listener);\n      }\n\n      return this;\n    };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n    function removeAllListeners(type) {\n      var listeners, events, i;\n\n      events = this._events;\n      if (events === undefined)\n        return this;\n\n      // not listening for removeListener, no need to emit\n      if (events.removeListener === undefined) {\n        if (arguments.length === 0) {\n          this._events = Object.create(null);\n          this._eventsCount = 0;\n        } else if (events[type] !== undefined) {\n          if (--this._eventsCount === 0)\n            this._events = Object.create(null);\n          else\n            delete events[type];\n        }\n        return this;\n      }\n\n      // emit removeListener for all listeners on all events\n      if (arguments.length === 0) {\n        var keys = Object.keys(events);\n        var key;\n        for (i = 0; i < keys.length; ++i) {\n          key = keys[i];\n          if (key === 'removeListener') continue;\n          this.removeAllListeners(key);\n        }\n        this.removeAllListeners('removeListener');\n        this._events = Object.create(null);\n        this._eventsCount = 0;\n        return this;\n      }\n\n      listeners = events[type];\n\n      if (typeof listeners === 'function') {\n        this.removeListener(type, listeners);\n      } else if (listeners !== undefined) {\n        // LIFO order\n        for (i = listeners.length - 1; i >= 0; i--) {\n          this.removeListener(type, listeners[i]);\n        }\n      }\n\n      return this;\n    };\n\nfunction _listeners(target, type, unwrap) {\n  var events = target._events;\n\n  if (events === undefined)\n    return [];\n\n  var evlistener = events[type];\n  if (evlistener === undefined)\n    return [];\n\n  if (typeof evlistener === 'function')\n    return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n  return unwrap ?\n    unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n  return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n  return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n  if (typeof emitter.listenerCount === 'function') {\n    return emitter.listenerCount(type);\n  } else {\n    return listenerCount.call(emitter, type);\n  }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n  var events = this._events;\n\n  if (events !== undefined) {\n    var evlistener = events[type];\n\n    if (typeof evlistener === 'function') {\n      return 1;\n    } else if (evlistener !== undefined) {\n      return evlistener.length;\n    }\n  }\n\n  return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n  return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n  var copy = new Array(n);\n  for (var i = 0; i < n; ++i)\n    copy[i] = arr[i];\n  return copy;\n}\n\nfunction spliceOne(list, index) {\n  for (; index + 1 < list.length; index++)\n    list[index] = list[index + 1];\n  list.pop();\n}\n\nfunction unwrapListeners(arr) {\n  var ret = new Array(arr.length);\n  for (var i = 0; i < ret.length; ++i) {\n    ret[i] = arr[i].listener || arr[i];\n  }\n  return ret;\n}\n\nfunction once(emitter, name) {\n  return new Promise(function (resolve, reject) {\n    function eventListener() {\n      if (errorListener !== undefined) {\n        emitter.removeListener('error', errorListener);\n      }\n      resolve([].slice.call(arguments));\n    };\n    var errorListener;\n\n    // Adding an error listener is not optional because\n    // if an error is thrown on an event emitter we cannot\n    // guarantee that the actual event we are waiting will\n    // be fired. The result could be a silent way to create\n    // memory or file descriptor leaks, which is something\n    // we should avoid.\n    if (name !== 'error') {\n      errorListener = function errorListener(err) {\n        emitter.removeListener(name, eventListener);\n        reject(err);\n      };\n\n      emitter.once('error', errorListener);\n    }\n\n    emitter.once(name, eventListener);\n  });\n}\n\n},{}],37:[function(require,module,exports){\n/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n  var e, m\n  var eLen = (nBytes * 8) - mLen - 1\n  var eMax = (1 << eLen) - 1\n  var eBias = eMax >> 1\n  var nBits = -7\n  var i = isLE ? (nBytes - 1) : 0\n  var d = isLE ? -1 : 1\n  var s = buffer[offset + i]\n\n  i += d\n\n  e = s & ((1 << (-nBits)) - 1)\n  s >>= (-nBits)\n  nBits += eLen\n  for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  m = e & ((1 << (-nBits)) - 1)\n  e >>= (-nBits)\n  nBits += mLen\n  for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  if (e === 0) {\n    e = 1 - eBias\n  } else if (e === eMax) {\n    return m ? NaN : ((s ? -1 : 1) * Infinity)\n  } else {\n    m = m + Math.pow(2, mLen)\n    e = e - eBias\n  }\n  return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n  var e, m, c\n  var eLen = (nBytes * 8) - mLen - 1\n  var eMax = (1 << eLen) - 1\n  var eBias = eMax >> 1\n  var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n  var i = isLE ? 0 : (nBytes - 1)\n  var d = isLE ? 1 : -1\n  var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n  value = Math.abs(value)\n\n  if (isNaN(value) || value === Infinity) {\n    m = isNaN(value) ? 1 : 0\n    e = eMax\n  } else {\n    e = Math.floor(Math.log(value) / Math.LN2)\n    if (value * (c = Math.pow(2, -e)) < 1) {\n      e--\n      c *= 2\n    }\n    if (e + eBias >= 1) {\n      value += rt / c\n    } else {\n      value += rt * Math.pow(2, 1 - eBias)\n    }\n    if (value * c >= 2) {\n      e++\n      c /= 2\n    }\n\n    if (e + eBias >= eMax) {\n      m = 0\n      e = eMax\n    } else if (e + eBias >= 1) {\n      m = ((value * c) - 1) * Math.pow(2, mLen)\n      e = e + eBias\n    } else {\n      m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n      e = 0\n    }\n  }\n\n  for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n  e = (e << mLen) | m\n  eLen += mLen\n  for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n  buffer[offset + i - d] |= s * 128\n}\n\n},{}],38:[function(require,module,exports){\nif (typeof Object.create === 'function') {\n  // implementation from standard node.js 'util' module\n  module.exports = function inherits(ctor, superCtor) {\n    if (superCtor) {\n      ctor.super_ = superCtor\n      ctor.prototype = Object.create(superCtor.prototype, {\n        constructor: {\n          value: ctor,\n          enumerable: false,\n          writable: true,\n          configurable: true\n        }\n      })\n    }\n  };\n} else {\n  // old school shim for old browsers\n  module.exports = function inherits(ctor, superCtor) {\n    if (superCtor) {\n      ctor.super_ = superCtor\n      var TempCtor = function () {}\n      TempCtor.prototype = superCtor.prototype\n      ctor.prototype = new TempCtor()\n      ctor.prototype.constructor = ctor\n    }\n  }\n}\n\n},{}],39:[function(require,module,exports){\n// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things.  But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals.  It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n    throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n    throw new Error('clearTimeout has not been defined');\n}\n(function () {\n    try {\n        if (typeof setTimeout === 'function') {\n            cachedSetTimeout = setTimeout;\n        } else {\n            cachedSetTimeout = defaultSetTimout;\n        }\n    } catch (e) {\n        cachedSetTimeout = defaultSetTimout;\n    }\n    try {\n        if (typeof clearTimeout === 'function') {\n            cachedClearTimeout = clearTimeout;\n        } else {\n            cachedClearTimeout = defaultClearTimeout;\n        }\n    } catch (e) {\n        cachedClearTimeout = defaultClearTimeout;\n    }\n} ())\nfunction runTimeout(fun) {\n    if (cachedSetTimeout === setTimeout) {\n        //normal enviroments in sane situations\n        return setTimeout(fun, 0);\n    }\n    // if setTimeout wasn't available but was latter defined\n    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n        cachedSetTimeout = setTimeout;\n        return setTimeout(fun, 0);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedSetTimeout(fun, 0);\n    } catch(e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n            return cachedSetTimeout.call(null, fun, 0);\n        } catch(e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n            return cachedSetTimeout.call(this, fun, 0);\n        }\n    }\n\n\n}\nfunction runClearTimeout(marker) {\n    if (cachedClearTimeout === clearTimeout) {\n        //normal enviroments in sane situations\n        return clearTimeout(marker);\n    }\n    // if clearTimeout wasn't available but was latter defined\n    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n        cachedClearTimeout = clearTimeout;\n        return clearTimeout(marker);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedClearTimeout(marker);\n    } catch (e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally\n            return cachedClearTimeout.call(null, marker);\n        } catch (e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n            // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n            return cachedClearTimeout.call(this, marker);\n        }\n    }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n    if (!draining || !currentQueue) {\n        return;\n    }\n    draining = false;\n    if (currentQueue.length) {\n        queue = currentQueue.concat(queue);\n    } else {\n        queueIndex = -1;\n    }\n    if (queue.length) {\n        drainQueue();\n    }\n}\n\nfunction drainQueue() {\n    if (draining) {\n        return;\n    }\n    var timeout = runTimeout(cleanUpNextTick);\n    draining = true;\n\n    var len = queue.length;\n    while(len) {\n        currentQueue = queue;\n        queue = [];\n        while (++queueIndex < len) {\n            if (currentQueue) {\n                currentQueue[queueIndex].run();\n            }\n        }\n        queueIndex = -1;\n        len = queue.length;\n    }\n    currentQueue = null;\n    draining = false;\n    runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n    var args = new Array(arguments.length - 1);\n    if (arguments.length > 1) {\n        for (var i = 1; i < arguments.length; i++) {\n            args[i - 1] = arguments[i];\n        }\n    }\n    queue.push(new Item(fun, args));\n    if (queue.length === 1 && !draining) {\n        runTimeout(drainQueue);\n    }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n    this.fun = fun;\n    this.array = array;\n}\nItem.prototype.run = function () {\n    this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n    throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n    throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n},{}],40:[function(require,module,exports){\n/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n  for (var key in src) {\n    dst[key] = src[key]\n  }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n  module.exports = buffer\n} else {\n  // Copy properties from require('buffer')\n  copyProps(buffer, exports)\n  exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n  return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n  if (typeof arg === 'number') {\n    throw new TypeError('Argument must not be a number')\n  }\n  return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  var buf = Buffer(size)\n  if (fill !== undefined) {\n    if (typeof encoding === 'string') {\n      buf.fill(fill, encoding)\n    } else {\n      buf.fill(fill)\n    }\n  } else {\n    buf.fill(0)\n  }\n  return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  return buffer.SlowBuffer(size)\n}\n\n},{\"buffer\":35}],41:[function(require,module,exports){\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nmodule.exports = Stream;\n\nvar EE = require('events').EventEmitter;\nvar inherits = require('inherits');\n\ninherits(Stream, EE);\nStream.Readable = require('readable-stream/lib/_stream_readable.js');\nStream.Writable = require('readable-stream/lib/_stream_writable.js');\nStream.Duplex = require('readable-stream/lib/_stream_duplex.js');\nStream.Transform = require('readable-stream/lib/_stream_transform.js');\nStream.PassThrough = require('readable-stream/lib/_stream_passthrough.js');\nStream.finished = require('readable-stream/lib/internal/streams/end-of-stream.js')\nStream.pipeline = require('readable-stream/lib/internal/streams/pipeline.js')\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream;\n\n\n\n// old-style streams.  Note that the pipe method (the only relevant\n// part of this class) is overridden in the Readable class.\n\nfunction Stream() {\n  EE.call(this);\n}\n\nStream.prototype.pipe = function(dest, options) {\n  var source = this;\n\n  function ondata(chunk) {\n    if (dest.writable) {\n      if (false === dest.write(chunk) && source.pause) {\n        source.pause();\n      }\n    }\n  }\n\n  source.on('data', ondata);\n\n  function ondrain() {\n    if (source.readable && source.resume) {\n      source.resume();\n    }\n  }\n\n  dest.on('drain', ondrain);\n\n  // If the 'end' option is not supplied, dest.end() will be called when\n  // source gets the 'end' or 'close' events.  Only dest.end() once.\n  if (!dest._isStdio && (!options || options.end !== false)) {\n    source.on('end', onend);\n    source.on('close', onclose);\n  }\n\n  var didOnEnd = false;\n  function onend() {\n    if (didOnEnd) return;\n    didOnEnd = true;\n\n    dest.end();\n  }\n\n\n  function onclose() {\n    if (didOnEnd) return;\n    didOnEnd = true;\n\n    if (typeof dest.destroy === 'function') dest.destroy();\n  }\n\n  // don't leave dangling pipes when there are errors.\n  function onerror(er) {\n    cleanup();\n    if (EE.listenerCount(this, 'error') === 0) {\n      throw er; // Unhandled stream error in pipe.\n    }\n  }\n\n  source.on('error', onerror);\n  dest.on('error', onerror);\n\n  // remove all the event listeners that were added.\n  function cleanup() {\n    source.removeListener('data', ondata);\n    dest.removeListener('drain', ondrain);\n\n    source.removeListener('end', onend);\n    source.removeListener('close', onclose);\n\n    source.removeListener('error', onerror);\n    dest.removeListener('error', onerror);\n\n    source.removeListener('end', cleanup);\n    source.removeListener('close', cleanup);\n\n    dest.removeListener('close', cleanup);\n  }\n\n  source.on('end', cleanup);\n  source.on('close', cleanup);\n\n  dest.on('close', cleanup);\n\n  dest.emit('pipe', source);\n\n  // Allow for unix-like usage: A.pipe(B).pipe(C)\n  return dest;\n};\n\n},{\"events\":36,\"inherits\":38,\"readable-stream/lib/_stream_duplex.js\":43,\"readable-stream/lib/_stream_passthrough.js\":44,\"readable-stream/lib/_stream_readable.js\":45,\"readable-stream/lib/_stream_transform.js\":46,\"readable-stream/lib/_stream_writable.js\":47,\"readable-stream/lib/internal/streams/end-of-stream.js\":51,\"readable-stream/lib/internal/streams/pipeline.js\":53}],42:[function(require,module,exports){\n'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n  if (!Base) {\n    Base = Error;\n  }\n\n  function getMessage(arg1, arg2, arg3) {\n    if (typeof message === 'string') {\n      return message;\n    } else {\n      return message(arg1, arg2, arg3);\n    }\n  }\n\n  var NodeError =\n  /*#__PURE__*/\n  function (_Base) {\n    _inheritsLoose(NodeError, _Base);\n\n    function NodeError(arg1, arg2, arg3) {\n      return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n    }\n\n    return NodeError;\n  }(Base);\n\n  NodeError.prototype.name = Base.name;\n  NodeError.prototype.code = code;\n  codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n  if (Array.isArray(expected)) {\n    var len = expected.length;\n    expected = expected.map(function (i) {\n      return String(i);\n    });\n\n    if (len > 2) {\n      return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n    } else if (len === 2) {\n      return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n    } else {\n      return \"of \".concat(thing, \" \").concat(expected[0]);\n    }\n  } else {\n    return \"of \".concat(thing, \" \").concat(String(expected));\n  }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n  return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n  if (this_len === undefined || this_len > str.length) {\n    this_len = str.length;\n  }\n\n  return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n  if (typeof start !== 'number') {\n    start = 0;\n  }\n\n  if (start + search.length > str.length) {\n    return false;\n  } else {\n    return str.indexOf(search, start) !== -1;\n  }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n  return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n  // determiner: 'must be' or 'must not be'\n  var determiner;\n\n  if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n    determiner = 'must not be';\n    expected = expected.replace(/^not /, '');\n  } else {\n    determiner = 'must be';\n  }\n\n  var msg;\n\n  if (endsWith(name, ' argument')) {\n    // For cases like 'first argument'\n    msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n  } else {\n    var type = includes(name, '.') ? 'property' : 'argument';\n    msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n  }\n\n  msg += \". Received type \".concat(typeof actual);\n  return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n  return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n  return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n  return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n\n},{}],43:[function(require,module,exports){\n(function (process){(function (){\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n'use strict';\n/*<replacement>*/\n\nvar objectKeys = Object.keys || function (obj) {\n  var keys = [];\n\n  for (var key in obj) {\n    keys.push(key);\n  }\n\n  return keys;\n};\n/*</replacement>*/\n\n\nmodule.exports = Duplex;\n\nvar Readable = require('./_stream_readable');\n\nvar Writable = require('./_stream_writable');\n\nrequire('inherits')(Duplex, Readable);\n\n{\n  // Allow the keys array to be GC'ed.\n  var keys = objectKeys(Writable.prototype);\n\n  for (var v = 0; v < keys.length; v++) {\n    var method = keys[v];\n    if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n  }\n}\n\nfunction Duplex(options) {\n  if (!(this instanceof Duplex)) return new Duplex(options);\n  Readable.call(this, options);\n  Writable.call(this, options);\n  this.allowHalfOpen = true;\n\n  if (options) {\n    if (options.readable === false) this.readable = false;\n    if (options.writable === false) this.writable = false;\n\n    if (options.allowHalfOpen === false) {\n      this.allowHalfOpen = false;\n      this.once('end', onend);\n    }\n  }\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.highWaterMark;\n  }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState && this._writableState.getBuffer();\n  }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.length;\n  }\n}); // the no-half-open enforcer\n\nfunction onend() {\n  // If the writable side ended, then we're ok.\n  if (this._writableState.ended) return; // no more data can be written.\n  // But allow more writes to happen in this tick.\n\n  process.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n  self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    if (this._readableState === undefined || this._writableState === undefined) {\n      return false;\n    }\n\n    return this._readableState.destroyed && this._writableState.destroyed;\n  },\n  set: function set(value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (this._readableState === undefined || this._writableState === undefined) {\n      return;\n    } // backward compatibility, the user is explicitly\n    // managing destroyed\n\n\n    this._readableState.destroyed = value;\n    this._writableState.destroyed = value;\n  }\n});\n}).call(this)}).call(this,require('_process'))\n\n},{\"./_stream_readable\":45,\"./_stream_writable\":47,\"_process\":39,\"inherits\":38}],44:[function(require,module,exports){\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\nrequire('inherits')(PassThrough, Transform);\n\nfunction PassThrough(options) {\n  if (!(this instanceof PassThrough)) return new PassThrough(options);\n  Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n  cb(null, chunk);\n};\n},{\"./_stream_transform\":46,\"inherits\":38}],45:[function(require,module,exports){\n(function (process,global){(function (){\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict';\n\nmodule.exports = Readable;\n/*<replacement>*/\n\nvar Duplex;\n/*</replacement>*/\n\nReadable.ReadableState = ReadableState;\n/*<replacement>*/\n\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n  return emitter.listeners(type).length;\n};\n/*</replacement>*/\n\n/*<replacement>*/\n\n\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n/*<replacement>*/\n\n\nvar debugUtil = require('util');\n\nvar debug;\n\nif (debugUtil && debugUtil.debuglog) {\n  debug = debugUtil.debuglog('stream');\n} else {\n  debug = function debug() {};\n}\n/*</replacement>*/\n\n\nvar BufferList = require('./internal/streams/buffer_list');\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n    getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n    ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n    ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n    ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n    ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance.\n\n\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\n\nrequire('inherits')(Readable, Stream);\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n  // Sadly this is not cacheable as some libraries bundle their own\n  // event emitter implementation with them.\n  if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any\n  // userland ones.  NEVER DO THIS. This is here only because this code needs\n  // to continue to work with older versions of Node.js that do not include\n  // the prependListener() method. The goal is to eventually remove this hack.\n\n  if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream, isDuplex) {\n  Duplex = Duplex || require('./_stream_duplex');\n  options = options || {}; // Duplex streams are both readable and writable, but share\n  // the same options object.\n  // However, some cases require setting options to different\n  // values for the readable and the writable sides of the duplex stream.\n  // These options can be provided separately as readableXXX and writableXXX.\n\n  if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to\n  // make all the buffer merging and length checks go away\n\n  this.objectMode = !!options.objectMode;\n  if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer\n  // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n\n  this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // A linked list is used to store data chunks instead of an array because the\n  // linked list can remove elements from the beginning faster than\n  // array.shift()\n\n  this.buffer = new BufferList();\n  this.length = 0;\n  this.pipes = null;\n  this.pipesCount = 0;\n  this.flowing = null;\n  this.ended = false;\n  this.endEmitted = false;\n  this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted\n  // immediately, or on a later tick.  We set this to true at first, because\n  // any actions that shouldn't happen until \"later\" should generally also\n  // not happen before the first read call.\n\n  this.sync = true; // whenever we return null, then we set a flag to say\n  // that we're awaiting a 'readable' event emission.\n\n  this.needReadable = false;\n  this.emittedReadable = false;\n  this.readableListening = false;\n  this.resumeScheduled = false;\n  this.paused = true; // Should close be emitted on destroy. Defaults to true.\n\n  this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish')\n\n  this.autoDestroy = !!options.autoDestroy; // has it been destroyed\n\n  this.destroyed = false; // Crypto is kind of old and crusty.  Historically, its default string\n  // encoding is 'binary' so we have to make this configurable.\n  // Everything else in the universe uses 'utf8', though.\n\n  this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s\n\n  this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled\n\n  this.readingMore = false;\n  this.decoder = null;\n  this.encoding = null;\n\n  if (options.encoding) {\n    if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n    this.decoder = new StringDecoder(options.encoding);\n    this.encoding = options.encoding;\n  }\n}\n\nfunction Readable(options) {\n  Duplex = Duplex || require('./_stream_duplex');\n  if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside\n  // the ReadableState constructor, at least with V8 6.5\n\n  var isDuplex = this instanceof Duplex;\n  this._readableState = new ReadableState(options, this, isDuplex); // legacy\n\n  this.readable = true;\n\n  if (options) {\n    if (typeof options.read === 'function') this._read = options.read;\n    if (typeof options.destroy === 'function') this._destroy = options.destroy;\n  }\n\n  Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    if (this._readableState === undefined) {\n      return false;\n    }\n\n    return this._readableState.destroyed;\n  },\n  set: function set(value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (!this._readableState) {\n      return;\n    } // backward compatibility, the user is explicitly\n    // managing destroyed\n\n\n    this._readableState.destroyed = value;\n  }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\n\nReadable.prototype._destroy = function (err, cb) {\n  cb(err);\n}; // Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\n\n\nReadable.prototype.push = function (chunk, encoding) {\n  var state = this._readableState;\n  var skipChunkCheck;\n\n  if (!state.objectMode) {\n    if (typeof chunk === 'string') {\n      encoding = encoding || state.defaultEncoding;\n\n      if (encoding !== state.encoding) {\n        chunk = Buffer.from(chunk, encoding);\n        encoding = '';\n      }\n\n      skipChunkCheck = true;\n    }\n  } else {\n    skipChunkCheck = true;\n  }\n\n  return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n}; // Unshift should *always* be something directly out of read()\n\n\nReadable.prototype.unshift = function (chunk) {\n  return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n  debug('readableAddChunk', chunk);\n  var state = stream._readableState;\n\n  if (chunk === null) {\n    state.reading = false;\n    onEofChunk(stream, state);\n  } else {\n    var er;\n    if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n\n    if (er) {\n      errorOrDestroy(stream, er);\n    } else if (state.objectMode || chunk && chunk.length > 0) {\n      if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n        chunk = _uint8ArrayToBuffer(chunk);\n      }\n\n      if (addToFront) {\n        if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n      } else if (state.ended) {\n        errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n      } else if (state.destroyed) {\n        return false;\n      } else {\n        state.reading = false;\n\n        if (state.decoder && !encoding) {\n          chunk = state.decoder.write(chunk);\n          if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n        } else {\n          addChunk(stream, state, chunk, false);\n        }\n      }\n    } else if (!addToFront) {\n      state.reading = false;\n      maybeReadMore(stream, state);\n    }\n  } // We can push more data if we are below the highWaterMark.\n  // Also, if we have no data yet, we can stand some more bytes.\n  // This is to work around cases where hwm=0, such as the repl.\n\n\n  return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n  if (state.flowing && state.length === 0 && !state.sync) {\n    state.awaitDrain = 0;\n    stream.emit('data', chunk);\n  } else {\n    // update the buffer info.\n    state.length += state.objectMode ? 1 : chunk.length;\n    if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n    if (state.needReadable) emitReadable(stream);\n  }\n\n  maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n  var er;\n\n  if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n    er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n  }\n\n  return er;\n}\n\nReadable.prototype.isPaused = function () {\n  return this._readableState.flowing === false;\n}; // backwards compatibility.\n\n\nReadable.prototype.setEncoding = function (enc) {\n  if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n  var decoder = new StringDecoder(enc);\n  this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8\n\n  this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers:\n\n  var p = this._readableState.buffer.head;\n  var content = '';\n\n  while (p !== null) {\n    content += decoder.write(p.data);\n    p = p.next;\n  }\n\n  this._readableState.buffer.clear();\n\n  if (content !== '') this._readableState.buffer.push(content);\n  this._readableState.length = content.length;\n  return this;\n}; // Don't raise the hwm > 1GB\n\n\nvar MAX_HWM = 0x40000000;\n\nfunction computeNewHighWaterMark(n) {\n  if (n >= MAX_HWM) {\n    // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n    n = MAX_HWM;\n  } else {\n    // Get the next highest power of 2 to prevent increasing hwm excessively in\n    // tiny amounts\n    n--;\n    n |= n >>> 1;\n    n |= n >>> 2;\n    n |= n >>> 4;\n    n |= n >>> 8;\n    n |= n >>> 16;\n    n++;\n  }\n\n  return n;\n} // This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction howMuchToRead(n, state) {\n  if (n <= 0 || state.length === 0 && state.ended) return 0;\n  if (state.objectMode) return 1;\n\n  if (n !== n) {\n    // Only flow one buffer at a time\n    if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n  } // If we're asking for more than the current hwm, then raise the hwm.\n\n\n  if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n  if (n <= state.length) return n; // Don't have enough\n\n  if (!state.ended) {\n    state.needReadable = true;\n    return 0;\n  }\n\n  return state.length;\n} // you can override either this method, or the async _read(n) below.\n\n\nReadable.prototype.read = function (n) {\n  debug('read', n);\n  n = parseInt(n, 10);\n  var state = this._readableState;\n  var nOrig = n;\n  if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we\n  // already have a bunch of data in the buffer, then just trigger\n  // the 'readable' event and move on.\n\n  if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n    debug('read: emitReadable', state.length, state.ended);\n    if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n    return null;\n  }\n\n  n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up.\n\n  if (n === 0 && state.ended) {\n    if (state.length === 0) endReadable(this);\n    return null;\n  } // All the actual chunk generation logic needs to be\n  // *below* the call to _read.  The reason is that in certain\n  // synthetic stream cases, such as passthrough streams, _read\n  // may be a completely synchronous operation which may change\n  // the state of the read buffer, providing enough data when\n  // before there was *not* enough.\n  //\n  // So, the steps are:\n  // 1. Figure out what the state of things will be after we do\n  // a read from the buffer.\n  //\n  // 2. If that resulting state will trigger a _read, then call _read.\n  // Note that this may be asynchronous, or synchronous.  Yes, it is\n  // deeply ugly to write APIs this way, but that still doesn't mean\n  // that the Readable class should behave improperly, as streams are\n  // designed to be sync/async agnostic.\n  // Take note if the _read call is sync or async (ie, if the read call\n  // has returned yet), so that we know whether or not it's safe to emit\n  // 'readable' etc.\n  //\n  // 3. Actually pull the requested chunks out of the buffer and return.\n  // if we need a readable event, then we need to do some reading.\n\n\n  var doRead = state.needReadable;\n  debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some\n\n  if (state.length === 0 || state.length - n < state.highWaterMark) {\n    doRead = true;\n    debug('length less than watermark', doRead);\n  } // however, if we've ended, then there's no point, and if we're already\n  // reading, then it's unnecessary.\n\n\n  if (state.ended || state.reading) {\n    doRead = false;\n    debug('reading or ended', doRead);\n  } else if (doRead) {\n    debug('do read');\n    state.reading = true;\n    state.sync = true; // if the length is currently zero, then we *need* a readable event.\n\n    if (state.length === 0) state.needReadable = true; // call internal read method\n\n    this._read(state.highWaterMark);\n\n    state.sync = false; // If _read pushed data synchronously, then `reading` will be false,\n    // and we need to re-evaluate how much data we can return to the user.\n\n    if (!state.reading) n = howMuchToRead(nOrig, state);\n  }\n\n  var ret;\n  if (n > 0) ret = fromList(n, state);else ret = null;\n\n  if (ret === null) {\n    state.needReadable = state.length <= state.highWaterMark;\n    n = 0;\n  } else {\n    state.length -= n;\n    state.awaitDrain = 0;\n  }\n\n  if (state.length === 0) {\n    // If we have nothing in the buffer, then we want to know\n    // as soon as we *do* get something into the buffer.\n    if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick.\n\n    if (nOrig !== n && state.ended) endReadable(this);\n  }\n\n  if (ret !== null) this.emit('data', ret);\n  return ret;\n};\n\nfunction onEofChunk(stream, state) {\n  debug('onEofChunk');\n  if (state.ended) return;\n\n  if (state.decoder) {\n    var chunk = state.decoder.end();\n\n    if (chunk && chunk.length) {\n      state.buffer.push(chunk);\n      state.length += state.objectMode ? 1 : chunk.length;\n    }\n  }\n\n  state.ended = true;\n\n  if (state.sync) {\n    // if we are sync, wait until next tick to emit the data.\n    // Otherwise we risk emitting data in the flow()\n    // the readable code triggers during a read() call\n    emitReadable(stream);\n  } else {\n    // emit 'readable' now to make sure it gets picked up.\n    state.needReadable = false;\n\n    if (!state.emittedReadable) {\n      state.emittedReadable = true;\n      emitReadable_(stream);\n    }\n  }\n} // Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow.  This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\n\n\nfunction emitReadable(stream) {\n  var state = stream._readableState;\n  debug('emitReadable', state.needReadable, state.emittedReadable);\n  state.needReadable = false;\n\n  if (!state.emittedReadable) {\n    debug('emitReadable', state.flowing);\n    state.emittedReadable = true;\n    process.nextTick(emitReadable_, stream);\n  }\n}\n\nfunction emitReadable_(stream) {\n  var state = stream._readableState;\n  debug('emitReadable_', state.destroyed, state.length, state.ended);\n\n  if (!state.destroyed && (state.length || state.ended)) {\n    stream.emit('readable');\n    state.emittedReadable = false;\n  } // The stream needs another readable event if\n  // 1. It is not flowing, as the flow mechanism will take\n  //    care of it.\n  // 2. It is not ended.\n  // 3. It is below the highWaterMark, so we can schedule\n  //    another readable later.\n\n\n  state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n  flow(stream);\n} // at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data.  that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\n\n\nfunction maybeReadMore(stream, state) {\n  if (!state.readingMore) {\n    state.readingMore = true;\n    process.nextTick(maybeReadMore_, stream, state);\n  }\n}\n\nfunction maybeReadMore_(stream, state) {\n  // Attempt to read more data if we should.\n  //\n  // The conditions for reading more data are (one of):\n  // - Not enough data buffered (state.length < state.highWaterMark). The loop\n  //   is responsible for filling the buffer with enough data if such data\n  //   is available. If highWaterMark is 0 and we are not in the flowing mode\n  //   we should _not_ attempt to buffer any extra data. We'll get more data\n  //   when the stream consumer calls read() instead.\n  // - No data in the buffer, and the stream is in flowing mode. In this mode\n  //   the loop below is responsible for ensuring read() is called. Failing to\n  //   call read here would abort the flow and there's no other mechanism for\n  //   continuing the flow if the stream consumer has just subscribed to the\n  //   'data' event.\n  //\n  // In addition to the above conditions to keep reading data, the following\n  // conditions prevent the data from being read:\n  // - The stream has ended (state.ended).\n  // - There is already a pending 'read' operation (state.reading). This is a\n  //   case where the the stream has called the implementation defined _read()\n  //   method, but they are processing the call asynchronously and have _not_\n  //   called push() with new data. In this case we skip performing more\n  //   read()s. The execution ends in this method again after the _read() ends\n  //   up calling push() with more data.\n  while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n    var len = state.length;\n    debug('maybeReadMore read 0');\n    stream.read(0);\n    if (len === state.length) // didn't get any data, stop spinning.\n      break;\n  }\n\n  state.readingMore = false;\n} // abstract method.  to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\n\n\nReadable.prototype._read = function (n) {\n  errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n  var src = this;\n  var state = this._readableState;\n\n  switch (state.pipesCount) {\n    case 0:\n      state.pipes = dest;\n      break;\n\n    case 1:\n      state.pipes = [state.pipes, dest];\n      break;\n\n    default:\n      state.pipes.push(dest);\n      break;\n  }\n\n  state.pipesCount += 1;\n  debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n  var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n  var endFn = doEnd ? onend : unpipe;\n  if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n  dest.on('unpipe', onunpipe);\n\n  function onunpipe(readable, unpipeInfo) {\n    debug('onunpipe');\n\n    if (readable === src) {\n      if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n        unpipeInfo.hasUnpiped = true;\n        cleanup();\n      }\n    }\n  }\n\n  function onend() {\n    debug('onend');\n    dest.end();\n  } // when the dest drains, it reduces the awaitDrain counter\n  // on the source.  This would be more elegant with a .once()\n  // handler in flow(), but adding and removing repeatedly is\n  // too slow.\n\n\n  var ondrain = pipeOnDrain(src);\n  dest.on('drain', ondrain);\n  var cleanedUp = false;\n\n  function cleanup() {\n    debug('cleanup'); // cleanup event handlers once the pipe is broken\n\n    dest.removeListener('close', onclose);\n    dest.removeListener('finish', onfinish);\n    dest.removeListener('drain', ondrain);\n    dest.removeListener('error', onerror);\n    dest.removeListener('unpipe', onunpipe);\n    src.removeListener('end', onend);\n    src.removeListener('end', unpipe);\n    src.removeListener('data', ondata);\n    cleanedUp = true; // if the reader is waiting for a drain event from this\n    // specific writer, then it would cause it to never start\n    // flowing again.\n    // So, if this is awaiting a drain, then we just call it now.\n    // If we don't know, then assume that we are waiting for one.\n\n    if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n  }\n\n  src.on('data', ondata);\n\n  function ondata(chunk) {\n    debug('ondata');\n    var ret = dest.write(chunk);\n    debug('dest.write', ret);\n\n    if (ret === false) {\n      // If the user unpiped during `dest.write()`, it is possible\n      // to get stuck in a permanently paused state if that write\n      // also returned false.\n      // => Check whether `dest` is still a piping destination.\n      if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n        debug('false write response, pause', state.awaitDrain);\n        state.awaitDrain++;\n      }\n\n      src.pause();\n    }\n  } // if the dest has an error, then stop piping into it.\n  // however, don't suppress the throwing behavior for this.\n\n\n  function onerror(er) {\n    debug('onerror', er);\n    unpipe();\n    dest.removeListener('error', onerror);\n    if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n  } // Make sure our error handler is attached before userland ones.\n\n\n  prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once.\n\n  function onclose() {\n    dest.removeListener('finish', onfinish);\n    unpipe();\n  }\n\n  dest.once('close', onclose);\n\n  function onfinish() {\n    debug('onfinish');\n    dest.removeListener('close', onclose);\n    unpipe();\n  }\n\n  dest.once('finish', onfinish);\n\n  function unpipe() {\n    debug('unpipe');\n    src.unpipe(dest);\n  } // tell the dest that it's being piped to\n\n\n  dest.emit('pipe', src); // start the flow if it hasn't been started already.\n\n  if (!state.flowing) {\n    debug('pipe resume');\n    src.resume();\n  }\n\n  return dest;\n};\n\nfunction pipeOnDrain(src) {\n  return function pipeOnDrainFunctionResult() {\n    var state = src._readableState;\n    debug('pipeOnDrain', state.awaitDrain);\n    if (state.awaitDrain) state.awaitDrain--;\n\n    if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n      state.flowing = true;\n      flow(src);\n    }\n  };\n}\n\nReadable.prototype.unpipe = function (dest) {\n  var state = this._readableState;\n  var unpipeInfo = {\n    hasUnpiped: false\n  }; // if we're not piping anywhere, then do nothing.\n\n  if (state.pipesCount === 0) return this; // just one destination.  most common case.\n\n  if (state.pipesCount === 1) {\n    // passed in one, but it's not the right one.\n    if (dest && dest !== state.pipes) return this;\n    if (!dest) dest = state.pipes; // got a match.\n\n    state.pipes = null;\n    state.pipesCount = 0;\n    state.flowing = false;\n    if (dest) dest.emit('unpipe', this, unpipeInfo);\n    return this;\n  } // slow case. multiple pipe destinations.\n\n\n  if (!dest) {\n    // remove all.\n    var dests = state.pipes;\n    var len = state.pipesCount;\n    state.pipes = null;\n    state.pipesCount = 0;\n    state.flowing = false;\n\n    for (var i = 0; i < len; i++) {\n      dests[i].emit('unpipe', this, {\n        hasUnpiped: false\n      });\n    }\n\n    return this;\n  } // try to find the right one.\n\n\n  var index = indexOf(state.pipes, dest);\n  if (index === -1) return this;\n  state.pipes.splice(index, 1);\n  state.pipesCount -= 1;\n  if (state.pipesCount === 1) state.pipes = state.pipes[0];\n  dest.emit('unpipe', this, unpipeInfo);\n  return this;\n}; // set up data events if they are asked for\n// Ensure readable listeners eventually get something\n\n\nReadable.prototype.on = function (ev, fn) {\n  var res = Stream.prototype.on.call(this, ev, fn);\n  var state = this._readableState;\n\n  if (ev === 'data') {\n    // update readableListening so that resume() may be a no-op\n    // a few lines down. This is needed to support once('readable').\n    state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused\n\n    if (state.flowing !== false) this.resume();\n  } else if (ev === 'readable') {\n    if (!state.endEmitted && !state.readableListening) {\n      state.readableListening = state.needReadable = true;\n      state.flowing = false;\n      state.emittedReadable = false;\n      debug('on readable', state.length, state.reading);\n\n      if (state.length) {\n        emitReadable(this);\n      } else if (!state.reading) {\n        process.nextTick(nReadingNextTick, this);\n      }\n    }\n  }\n\n  return res;\n};\n\nReadable.prototype.addListener = Readable.prototype.on;\n\nReadable.prototype.removeListener = function (ev, fn) {\n  var res = Stream.prototype.removeListener.call(this, ev, fn);\n\n  if (ev === 'readable') {\n    // We need to check if there is someone still listening to\n    // readable and reset the state. However this needs to happen\n    // after readable has been emitted but before I/O (nextTick) to\n    // support once('readable', fn) cycles. This means that calling\n    // resume within the same tick will have no\n    // effect.\n    process.nextTick(updateReadableListening, this);\n  }\n\n  return res;\n};\n\nReadable.prototype.removeAllListeners = function (ev) {\n  var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n\n  if (ev === 'readable' || ev === undefined) {\n    // We need to check if there is someone still listening to\n    // readable and reset the state. However this needs to happen\n    // after readable has been emitted but before I/O (nextTick) to\n    // support once('readable', fn) cycles. This means that calling\n    // resume within the same tick will have no\n    // effect.\n    process.nextTick(updateReadableListening, this);\n  }\n\n  return res;\n};\n\nfunction updateReadableListening(self) {\n  var state = self._readableState;\n  state.readableListening = self.listenerCount('readable') > 0;\n\n  if (state.resumeScheduled && !state.paused) {\n    // flowing needs to be set to true now, otherwise\n    // the upcoming resume will not flow.\n    state.flowing = true; // crude way to check if we should resume\n  } else if (self.listenerCount('data') > 0) {\n    self.resume();\n  }\n}\n\nfunction nReadingNextTick(self) {\n  debug('readable nexttick read 0');\n  self.read(0);\n} // pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\n\n\nReadable.prototype.resume = function () {\n  var state = this._readableState;\n\n  if (!state.flowing) {\n    debug('resume'); // we flow only if there is no one listening\n    // for readable, but we still have to call\n    // resume()\n\n    state.flowing = !state.readableListening;\n    resume(this, state);\n  }\n\n  state.paused = false;\n  return this;\n};\n\nfunction resume(stream, state) {\n  if (!state.resumeScheduled) {\n    state.resumeScheduled = true;\n    process.nextTick(resume_, stream, state);\n  }\n}\n\nfunction resume_(stream, state) {\n  debug('resume', state.reading);\n\n  if (!state.reading) {\n    stream.read(0);\n  }\n\n  state.resumeScheduled = false;\n  stream.emit('resume');\n  flow(stream);\n  if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n  debug('call pause flowing=%j', this._readableState.flowing);\n\n  if (this._readableState.flowing !== false) {\n    debug('pause');\n    this._readableState.flowing = false;\n    this.emit('pause');\n  }\n\n  this._readableState.paused = true;\n  return this;\n};\n\nfunction flow(stream) {\n  var state = stream._readableState;\n  debug('flow', state.flowing);\n\n  while (state.flowing && stream.read() !== null) {\n    ;\n  }\n} // wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\n\n\nReadable.prototype.wrap = function (stream) {\n  var _this = this;\n\n  var state = this._readableState;\n  var paused = false;\n  stream.on('end', function () {\n    debug('wrapped end');\n\n    if (state.decoder && !state.ended) {\n      var chunk = state.decoder.end();\n      if (chunk && chunk.length) _this.push(chunk);\n    }\n\n    _this.push(null);\n  });\n  stream.on('data', function (chunk) {\n    debug('wrapped data');\n    if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode\n\n    if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n    var ret = _this.push(chunk);\n\n    if (!ret) {\n      paused = true;\n      stream.pause();\n    }\n  }); // proxy all the other methods.\n  // important when wrapping filters and duplexes.\n\n  for (var i in stream) {\n    if (this[i] === undefined && typeof stream[i] === 'function') {\n      this[i] = function methodWrap(method) {\n        return function methodWrapReturnFunction() {\n          return stream[method].apply(stream, arguments);\n        };\n      }(i);\n    }\n  } // proxy certain important events.\n\n\n  for (var n = 0; n < kProxyEvents.length; n++) {\n    stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n  } // when we try to consume some more bytes, simply unpause the\n  // underlying stream.\n\n\n  this._read = function (n) {\n    debug('wrapped _read', n);\n\n    if (paused) {\n      paused = false;\n      stream.resume();\n    }\n  };\n\n  return this;\n};\n\nif (typeof Symbol === 'function') {\n  Readable.prototype[Symbol.asyncIterator] = function () {\n    if (createReadableStreamAsyncIterator === undefined) {\n      createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n    }\n\n    return createReadableStreamAsyncIterator(this);\n  };\n}\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState.highWaterMark;\n  }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState && this._readableState.buffer;\n  }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState.flowing;\n  },\n  set: function set(state) {\n    if (this._readableState) {\n      this._readableState.flowing = state;\n    }\n  }\n}); // exposed for testing purposes only.\n\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState.length;\n  }\n}); // Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\nfunction fromList(n, state) {\n  // nothing buffered\n  if (state.length === 0) return null;\n  var ret;\n  if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n    // read it all, truncate the list\n    if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n    state.buffer.clear();\n  } else {\n    // read part of list\n    ret = state.buffer.consume(n, state.decoder);\n  }\n  return ret;\n}\n\nfunction endReadable(stream) {\n  var state = stream._readableState;\n  debug('endReadable', state.endEmitted);\n\n  if (!state.endEmitted) {\n    state.ended = true;\n    process.nextTick(endReadableNT, state, stream);\n  }\n}\n\nfunction endReadableNT(state, stream) {\n  debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift.\n\n  if (!state.endEmitted && state.length === 0) {\n    state.endEmitted = true;\n    stream.readable = false;\n    stream.emit('end');\n\n    if (state.autoDestroy) {\n      // In case of duplex streams we need a way to detect\n      // if the writable side is ready for autoDestroy as well\n      var wState = stream._writableState;\n\n      if (!wState || wState.autoDestroy && wState.finished) {\n        stream.destroy();\n      }\n    }\n  }\n}\n\nif (typeof Symbol === 'function') {\n  Readable.from = function (iterable, opts) {\n    if (from === undefined) {\n      from = require('./internal/streams/from');\n    }\n\n    return from(Readable, iterable, opts);\n  };\n}\n\nfunction indexOf(xs, x) {\n  for (var i = 0, l = xs.length; i < l; i++) {\n    if (xs[i] === x) return i;\n  }\n\n  return -1;\n}\n}).call(this)}).call(this,require('_process'),typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n\n},{\"../errors\":42,\"./_stream_duplex\":43,\"./internal/streams/async_iterator\":48,\"./internal/streams/buffer_list\":49,\"./internal/streams/destroy\":50,\"./internal/streams/from\":52,\"./internal/streams/state\":54,\"./internal/streams/stream\":55,\"_process\":39,\"buffer\":35,\"events\":36,\"inherits\":38,\"string_decoder/\":56,\"util\":34}],46:[function(require,module,exports){\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a transform stream is a readable/writable stream where you do\n// something with the data.  Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored.  (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation.  For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes.  When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up.  When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer.  When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks.  If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk.  However,\n// a pathological inflate type of transform can cause excessive buffering\n// here.  For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output.  Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output.  In this case, you could write a very small\n// amount of input, and end up with a very large amount of output.  In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform.  A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n'use strict';\n\nmodule.exports = Transform;\n\nvar _require$codes = require('../errors').codes,\n    ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n    ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n    ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n    ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\n\nvar Duplex = require('./_stream_duplex');\n\nrequire('inherits')(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n  var ts = this._transformState;\n  ts.transforming = false;\n  var cb = ts.writecb;\n\n  if (cb === null) {\n    return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n  }\n\n  ts.writechunk = null;\n  ts.writecb = null;\n  if (data != null) // single equals check for both `null` and `undefined`\n    this.push(data);\n  cb(er);\n  var rs = this._readableState;\n  rs.reading = false;\n\n  if (rs.needReadable || rs.length < rs.highWaterMark) {\n    this._read(rs.highWaterMark);\n  }\n}\n\nfunction Transform(options) {\n  if (!(this instanceof Transform)) return new Transform(options);\n  Duplex.call(this, options);\n  this._transformState = {\n    afterTransform: afterTransform.bind(this),\n    needTransform: false,\n    transforming: false,\n    writecb: null,\n    writechunk: null,\n    writeencoding: null\n  }; // start out asking for a readable event once data is transformed.\n\n  this._readableState.needReadable = true; // we have implemented the _read method, and done the other things\n  // that Readable wants before the first _read call, so unset the\n  // sync guard flag.\n\n  this._readableState.sync = false;\n\n  if (options) {\n    if (typeof options.transform === 'function') this._transform = options.transform;\n    if (typeof options.flush === 'function') this._flush = options.flush;\n  } // When the writable side finishes, then flush out anything remaining.\n\n\n  this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n  var _this = this;\n\n  if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n    this._flush(function (er, data) {\n      done(_this, er, data);\n    });\n  } else {\n    done(this, null, null);\n  }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n  this._transformState.needTransform = false;\n  return Duplex.prototype.push.call(this, chunk, encoding);\n}; // This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side.  You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk.  If you pass\n// an error, then that'll put the hurt on the whole operation.  If you\n// never call cb(), then you'll never get another chunk.\n\n\nTransform.prototype._transform = function (chunk, encoding, cb) {\n  cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n  var ts = this._transformState;\n  ts.writecb = cb;\n  ts.writechunk = chunk;\n  ts.writeencoding = encoding;\n\n  if (!ts.transforming) {\n    var rs = this._readableState;\n    if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n  }\n}; // Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\n\n\nTransform.prototype._read = function (n) {\n  var ts = this._transformState;\n\n  if (ts.writechunk !== null && !ts.transforming) {\n    ts.transforming = true;\n\n    this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n  } else {\n    // mark that we need a transform, so that any data that comes in\n    // will get processed, now that we've asked for it.\n    ts.needTransform = true;\n  }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n  Duplex.prototype._destroy.call(this, err, function (err2) {\n    cb(err2);\n  });\n};\n\nfunction done(stream, er, data) {\n  if (er) return stream.emit('error', er);\n  if (data != null) // single equals check for both `null` and `undefined`\n    stream.push(data); // TODO(BridgeAR): Write a test for these two error cases\n  // if there's nothing in the write buffer, then that means\n  // that nothing more will ever be provided\n\n  if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n  if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n  return stream.push(null);\n}\n},{\"../errors\":42,\"./_stream_duplex\":43,\"inherits\":38}],47:[function(require,module,exports){\n(function (process,global){(function (){\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n'use strict';\n\nmodule.exports = Writable;\n/* <replacement> */\n\nfunction WriteReq(chunk, encoding, cb) {\n  this.chunk = chunk;\n  this.encoding = encoding;\n  this.callback = cb;\n  this.next = null;\n} // It seems a linked list but it is not\n// there will be only 2 of these for each stream\n\n\nfunction CorkedRequest(state) {\n  var _this = this;\n\n  this.next = null;\n  this.entry = null;\n\n  this.finish = function () {\n    onCorkedFinish(_this, state);\n  };\n}\n/* </replacement> */\n\n/*<replacement>*/\n\n\nvar Duplex;\n/*</replacement>*/\n\nWritable.WritableState = WritableState;\n/*<replacement>*/\n\nvar internalUtil = {\n  deprecate: require('util-deprecate')\n};\n/*</replacement>*/\n\n/*<replacement>*/\n\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n    getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n    ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n    ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n    ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n    ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n    ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n    ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n    ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n    ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\n\nrequire('inherits')(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream, isDuplex) {\n  Duplex = Duplex || require('./_stream_duplex');\n  options = options || {}; // Duplex streams are both readable and writable, but share\n  // the same options object.\n  // However, some cases require setting options to different\n  // values for the readable and the writable sides of the duplex stream,\n  // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n\n  if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream\n  // contains buffers or objects.\n\n  this.objectMode = !!options.objectMode;\n  if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false\n  // Note: 0 is a valid value, means that we always return false if\n  // the entire buffer is not flushed immediately on write()\n\n  this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called\n\n  this.finalCalled = false; // drain event flag.\n\n  this.needDrain = false; // at the start of calling end()\n\n  this.ending = false; // when end() has been called, and returned\n\n  this.ended = false; // when 'finish' is emitted\n\n  this.finished = false; // has it been destroyed\n\n  this.destroyed = false; // should we decode strings into buffers before passing to _write?\n  // this is here so that some node-core streams can optimize string\n  // handling at a lower level.\n\n  var noDecode = options.decodeStrings === false;\n  this.decodeStrings = !noDecode; // Crypto is kind of old and crusty.  Historically, its default string\n  // encoding is 'binary' so we have to make this configurable.\n  // Everything else in the universe uses 'utf8', though.\n\n  this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement\n  // of how much we're waiting to get pushed to some underlying\n  // socket or file.\n\n  this.length = 0; // a flag to see when we're in the middle of a write.\n\n  this.writing = false; // when true all writes will be buffered until .uncork() call\n\n  this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately,\n  // or on a later tick.  We set this to true at first, because any\n  // actions that shouldn't happen until \"later\" should generally also\n  // not happen before the first write call.\n\n  this.sync = true; // a flag to know if we're processing previously buffered items, which\n  // may call the _write() callback in the same tick, so that we don't\n  // end up in an overlapped onwrite situation.\n\n  this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb)\n\n  this.onwrite = function (er) {\n    onwrite(stream, er);\n  }; // the callback that the user supplies to write(chunk,encoding,cb)\n\n\n  this.writecb = null; // the amount that is being written when _write is called.\n\n  this.writelen = 0;\n  this.bufferedRequest = null;\n  this.lastBufferedRequest = null; // number of pending user-supplied write callbacks\n  // this must be 0 before 'finish' can be emitted\n\n  this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs\n  // This is relevant for synchronous Transform streams\n\n  this.prefinished = false; // True if the error was already emitted and should not be thrown again\n\n  this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true.\n\n  this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end')\n\n  this.autoDestroy = !!options.autoDestroy; // count buffered requests\n\n  this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always\n  // one allocated and free to use, and we maintain at most two\n\n  this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n  var current = this.bufferedRequest;\n  var out = [];\n\n  while (current) {\n    out.push(current);\n    current = current.next;\n  }\n\n  return out;\n};\n\n(function () {\n  try {\n    Object.defineProperty(WritableState.prototype, 'buffer', {\n      get: internalUtil.deprecate(function writableStateBufferGetter() {\n        return this.getBuffer();\n      }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n    });\n  } catch (_) {}\n})(); // Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\n\n\nvar realHasInstance;\n\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n  realHasInstance = Function.prototype[Symbol.hasInstance];\n  Object.defineProperty(Writable, Symbol.hasInstance, {\n    value: function value(object) {\n      if (realHasInstance.call(this, object)) return true;\n      if (this !== Writable) return false;\n      return object && object._writableState instanceof WritableState;\n    }\n  });\n} else {\n  realHasInstance = function realHasInstance(object) {\n    return object instanceof this;\n  };\n}\n\nfunction Writable(options) {\n  Duplex = Duplex || require('./_stream_duplex'); // Writable ctor is applied to Duplexes, too.\n  // `realHasInstance` is necessary because using plain `instanceof`\n  // would return false, as no `_writableState` property is attached.\n  // Trying to use the custom `instanceof` for Writable here will also break the\n  // Node.js LazyTransform implementation, which has a non-trivial getter for\n  // `_writableState` that would lead to infinite recursion.\n  // Checking for a Stream.Duplex instance is faster here instead of inside\n  // the WritableState constructor, at least with V8 6.5\n\n  var isDuplex = this instanceof Duplex;\n  if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n  this._writableState = new WritableState(options, this, isDuplex); // legacy.\n\n  this.writable = true;\n\n  if (options) {\n    if (typeof options.write === 'function') this._write = options.write;\n    if (typeof options.writev === 'function') this._writev = options.writev;\n    if (typeof options.destroy === 'function') this._destroy = options.destroy;\n    if (typeof options.final === 'function') this._final = options.final;\n  }\n\n  Stream.call(this);\n} // Otherwise people can pipe Writable streams, which is just wrong.\n\n\nWritable.prototype.pipe = function () {\n  errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\n\nfunction writeAfterEnd(stream, cb) {\n  var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb\n\n  errorOrDestroy(stream, er);\n  process.nextTick(cb, er);\n} // Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\n\n\nfunction validChunk(stream, state, chunk, cb) {\n  var er;\n\n  if (chunk === null) {\n    er = new ERR_STREAM_NULL_VALUES();\n  } else if (typeof chunk !== 'string' && !state.objectMode) {\n    er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n  }\n\n  if (er) {\n    errorOrDestroy(stream, er);\n    process.nextTick(cb, er);\n    return false;\n  }\n\n  return true;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n  var state = this._writableState;\n  var ret = false;\n\n  var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n  if (isBuf && !Buffer.isBuffer(chunk)) {\n    chunk = _uint8ArrayToBuffer(chunk);\n  }\n\n  if (typeof encoding === 'function') {\n    cb = encoding;\n    encoding = null;\n  }\n\n  if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n  if (typeof cb !== 'function') cb = nop;\n  if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n    state.pendingcb++;\n    ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n  }\n  return ret;\n};\n\nWritable.prototype.cork = function () {\n  this._writableState.corked++;\n};\n\nWritable.prototype.uncork = function () {\n  var state = this._writableState;\n\n  if (state.corked) {\n    state.corked--;\n    if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n  }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n  // node::ParseEncoding() requires lower case.\n  if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n  if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n  this._writableState.defaultEncoding = encoding;\n  return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState && this._writableState.getBuffer();\n  }\n});\n\nfunction decodeChunk(state, chunk, encoding) {\n  if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n    chunk = Buffer.from(chunk, encoding);\n  }\n\n  return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.highWaterMark;\n  }\n}); // if we're already writing something, then just put this\n// in the queue, and wait our turn.  Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\n\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n  if (!isBuf) {\n    var newChunk = decodeChunk(state, chunk, encoding);\n\n    if (chunk !== newChunk) {\n      isBuf = true;\n      encoding = 'buffer';\n      chunk = newChunk;\n    }\n  }\n\n  var len = state.objectMode ? 1 : chunk.length;\n  state.length += len;\n  var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false.\n\n  if (!ret) state.needDrain = true;\n\n  if (state.writing || state.corked) {\n    var last = state.lastBufferedRequest;\n    state.lastBufferedRequest = {\n      chunk: chunk,\n      encoding: encoding,\n      isBuf: isBuf,\n      callback: cb,\n      next: null\n    };\n\n    if (last) {\n      last.next = state.lastBufferedRequest;\n    } else {\n      state.bufferedRequest = state.lastBufferedRequest;\n    }\n\n    state.bufferedRequestCount += 1;\n  } else {\n    doWrite(stream, state, false, len, chunk, encoding, cb);\n  }\n\n  return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n  state.writelen = len;\n  state.writecb = cb;\n  state.writing = true;\n  state.sync = true;\n  if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n  state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n  --state.pendingcb;\n\n  if (sync) {\n    // defer the callback if we are being called synchronously\n    // to avoid piling up things on the stack\n    process.nextTick(cb, er); // this can emit finish, and it will always happen\n    // after error\n\n    process.nextTick(finishMaybe, stream, state);\n    stream._writableState.errorEmitted = true;\n    errorOrDestroy(stream, er);\n  } else {\n    // the caller expect this to happen before if\n    // it is async\n    cb(er);\n    stream._writableState.errorEmitted = true;\n    errorOrDestroy(stream, er); // this can emit finish, but finish must\n    // always follow error\n\n    finishMaybe(stream, state);\n  }\n}\n\nfunction onwriteStateUpdate(state) {\n  state.writing = false;\n  state.writecb = null;\n  state.length -= state.writelen;\n  state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n  var state = stream._writableState;\n  var sync = state.sync;\n  var cb = state.writecb;\n  if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n  onwriteStateUpdate(state);\n  if (er) onwriteError(stream, state, sync, er, cb);else {\n    // Check if we're actually ready to finish, but don't emit yet\n    var finished = needFinish(state) || stream.destroyed;\n\n    if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n      clearBuffer(stream, state);\n    }\n\n    if (sync) {\n      process.nextTick(afterWrite, stream, state, finished, cb);\n    } else {\n      afterWrite(stream, state, finished, cb);\n    }\n  }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n  if (!finished) onwriteDrain(stream, state);\n  state.pendingcb--;\n  cb();\n  finishMaybe(stream, state);\n} // Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\n\n\nfunction onwriteDrain(stream, state) {\n  if (state.length === 0 && state.needDrain) {\n    state.needDrain = false;\n    stream.emit('drain');\n  }\n} // if there's something in the buffer waiting, then process it\n\n\nfunction clearBuffer(stream, state) {\n  state.bufferProcessing = true;\n  var entry = state.bufferedRequest;\n\n  if (stream._writev && entry && entry.next) {\n    // Fast case, write everything using _writev()\n    var l = state.bufferedRequestCount;\n    var buffer = new Array(l);\n    var holder = state.corkedRequestsFree;\n    holder.entry = entry;\n    var count = 0;\n    var allBuffers = true;\n\n    while (entry) {\n      buffer[count] = entry;\n      if (!entry.isBuf) allBuffers = false;\n      entry = entry.next;\n      count += 1;\n    }\n\n    buffer.allBuffers = allBuffers;\n    doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time\n    // as the hot path ends with doWrite\n\n    state.pendingcb++;\n    state.lastBufferedRequest = null;\n\n    if (holder.next) {\n      state.corkedRequestsFree = holder.next;\n      holder.next = null;\n    } else {\n      state.corkedRequestsFree = new CorkedRequest(state);\n    }\n\n    state.bufferedRequestCount = 0;\n  } else {\n    // Slow case, write chunks one-by-one\n    while (entry) {\n      var chunk = entry.chunk;\n      var encoding = entry.encoding;\n      var cb = entry.callback;\n      var len = state.objectMode ? 1 : chunk.length;\n      doWrite(stream, state, false, len, chunk, encoding, cb);\n      entry = entry.next;\n      state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then\n      // it means that we need to wait until it does.\n      // also, that means that the chunk and cb are currently\n      // being processed, so move the buffer counter past them.\n\n      if (state.writing) {\n        break;\n      }\n    }\n\n    if (entry === null) state.lastBufferedRequest = null;\n  }\n\n  state.bufferedRequest = entry;\n  state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n  cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n  var state = this._writableState;\n\n  if (typeof chunk === 'function') {\n    cb = chunk;\n    chunk = null;\n    encoding = null;\n  } else if (typeof encoding === 'function') {\n    cb = encoding;\n    encoding = null;\n  }\n\n  if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks\n\n  if (state.corked) {\n    state.corked = 1;\n    this.uncork();\n  } // ignore unnecessary end() calls.\n\n\n  if (!state.ending) endWritable(this, state, cb);\n  return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableLength', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.length;\n  }\n});\n\nfunction needFinish(state) {\n  return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\n\nfunction callFinal(stream, state) {\n  stream._final(function (err) {\n    state.pendingcb--;\n\n    if (err) {\n      errorOrDestroy(stream, err);\n    }\n\n    state.prefinished = true;\n    stream.emit('prefinish');\n    finishMaybe(stream, state);\n  });\n}\n\nfunction prefinish(stream, state) {\n  if (!state.prefinished && !state.finalCalled) {\n    if (typeof stream._final === 'function' && !state.destroyed) {\n      state.pendingcb++;\n      state.finalCalled = true;\n      process.nextTick(callFinal, stream, state);\n    } else {\n      state.prefinished = true;\n      stream.emit('prefinish');\n    }\n  }\n}\n\nfunction finishMaybe(stream, state) {\n  var need = needFinish(state);\n\n  if (need) {\n    prefinish(stream, state);\n\n    if (state.pendingcb === 0) {\n      state.finished = true;\n      stream.emit('finish');\n\n      if (state.autoDestroy) {\n        // In case of duplex streams we need a way to detect\n        // if the readable side is ready for autoDestroy as well\n        var rState = stream._readableState;\n\n        if (!rState || rState.autoDestroy && rState.endEmitted) {\n          stream.destroy();\n        }\n      }\n    }\n  }\n\n  return need;\n}\n\nfunction endWritable(stream, state, cb) {\n  state.ending = true;\n  finishMaybe(stream, state);\n\n  if (cb) {\n    if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n  }\n\n  state.ended = true;\n  stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n  var entry = corkReq.entry;\n  corkReq.entry = null;\n\n  while (entry) {\n    var cb = entry.callback;\n    state.pendingcb--;\n    cb(err);\n    entry = entry.next;\n  } // reuse the free corkReq.\n\n\n  state.corkedRequestsFree.next = corkReq;\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    if (this._writableState === undefined) {\n      return false;\n    }\n\n    return this._writableState.destroyed;\n  },\n  set: function set(value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (!this._writableState) {\n      return;\n    } // backward compatibility, the user is explicitly\n    // managing destroyed\n\n\n    this._writableState.destroyed = value;\n  }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\n\nWritable.prototype._destroy = function (err, cb) {\n  cb(err);\n};\n}).call(this)}).call(this,require('_process'),typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n\n},{\"../errors\":42,\"./_stream_duplex\":43,\"./internal/streams/destroy\":50,\"./internal/streams/state\":54,\"./internal/streams/stream\":55,\"_process\":39,\"buffer\":35,\"inherits\":38,\"util-deprecate\":57}],48:[function(require,module,exports){\n(function (process){(function (){\n'use strict';\n\nvar _Object$setPrototypeO;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar finished = require('./end-of-stream');\n\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\n\nfunction createIterResult(value, done) {\n  return {\n    value: value,\n    done: done\n  };\n}\n\nfunction readAndResolve(iter) {\n  var resolve = iter[kLastResolve];\n\n  if (resolve !== null) {\n    var data = iter[kStream].read(); // we defer if data is null\n    // we can be expecting either 'end' or\n    // 'error'\n\n    if (data !== null) {\n      iter[kLastPromise] = null;\n      iter[kLastResolve] = null;\n      iter[kLastReject] = null;\n      resolve(createIterResult(data, false));\n    }\n  }\n}\n\nfunction onReadable(iter) {\n  // we wait for the next tick, because it might\n  // emit an error with process.nextTick\n  process.nextTick(readAndResolve, iter);\n}\n\nfunction wrapForNext(lastPromise, iter) {\n  return function (resolve, reject) {\n    lastPromise.then(function () {\n      if (iter[kEnded]) {\n        resolve(createIterResult(undefined, true));\n        return;\n      }\n\n      iter[kHandlePromise](resolve, reject);\n    }, reject);\n  };\n}\n\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n  get stream() {\n    return this[kStream];\n  },\n\n  next: function next() {\n    var _this = this;\n\n    // if we have detected an error in the meanwhile\n    // reject straight away\n    var error = this[kError];\n\n    if (error !== null) {\n      return Promise.reject(error);\n    }\n\n    if (this[kEnded]) {\n      return Promise.resolve(createIterResult(undefined, true));\n    }\n\n    if (this[kStream].destroyed) {\n      // We need to defer via nextTick because if .destroy(err) is\n      // called, the error will be emitted via nextTick, and\n      // we cannot guarantee that there is no error lingering around\n      // waiting to be emitted.\n      return new Promise(function (resolve, reject) {\n        process.nextTick(function () {\n          if (_this[kError]) {\n            reject(_this[kError]);\n          } else {\n            resolve(createIterResult(undefined, true));\n          }\n        });\n      });\n    } // if we have multiple next() calls\n    // we will wait for the previous Promise to finish\n    // this logic is optimized to support for await loops,\n    // where next() is only called once at a time\n\n\n    var lastPromise = this[kLastPromise];\n    var promise;\n\n    if (lastPromise) {\n      promise = new Promise(wrapForNext(lastPromise, this));\n    } else {\n      // fast path needed to support multiple this.push()\n      // without triggering the next() queue\n      var data = this[kStream].read();\n\n      if (data !== null) {\n        return Promise.resolve(createIterResult(data, false));\n      }\n\n      promise = new Promise(this[kHandlePromise]);\n    }\n\n    this[kLastPromise] = promise;\n    return promise;\n  }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n  return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n  var _this2 = this;\n\n  // destroy(err, cb) is a private API\n  // we can guarantee we have that here, because we control the\n  // Readable class this is attached to\n  return new Promise(function (resolve, reject) {\n    _this2[kStream].destroy(null, function (err) {\n      if (err) {\n        reject(err);\n        return;\n      }\n\n      resolve(createIterResult(undefined, true));\n    });\n  });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\n\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n  var _Object$create;\n\n  var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n    value: stream,\n    writable: true\n  }), _defineProperty(_Object$create, kLastResolve, {\n    value: null,\n    writable: true\n  }), _defineProperty(_Object$create, kLastReject, {\n    value: null,\n    writable: true\n  }), _defineProperty(_Object$create, kError, {\n    value: null,\n    writable: true\n  }), _defineProperty(_Object$create, kEnded, {\n    value: stream._readableState.endEmitted,\n    writable: true\n  }), _defineProperty(_Object$create, kHandlePromise, {\n    value: function value(resolve, reject) {\n      var data = iterator[kStream].read();\n\n      if (data) {\n        iterator[kLastPromise] = null;\n        iterator[kLastResolve] = null;\n        iterator[kLastReject] = null;\n        resolve(createIterResult(data, false));\n      } else {\n        iterator[kLastResolve] = resolve;\n        iterator[kLastReject] = reject;\n      }\n    },\n    writable: true\n  }), _Object$create));\n  iterator[kLastPromise] = null;\n  finished(stream, function (err) {\n    if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n      var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise\n      // returned by next() and store the error\n\n      if (reject !== null) {\n        iterator[kLastPromise] = null;\n        iterator[kLastResolve] = null;\n        iterator[kLastReject] = null;\n        reject(err);\n      }\n\n      iterator[kError] = err;\n      return;\n    }\n\n    var resolve = iterator[kLastResolve];\n\n    if (resolve !== null) {\n      iterator[kLastPromise] = null;\n      iterator[kLastResolve] = null;\n      iterator[kLastReject] = null;\n      resolve(createIterResult(undefined, true));\n    }\n\n    iterator[kEnded] = true;\n  });\n  stream.on('readable', onReadable.bind(null, iterator));\n  return iterator;\n};\n\nmodule.exports = createReadableStreamAsyncIterator;\n}).call(this)}).call(this,require('_process'))\n\n},{\"./end-of-stream\":51,\"_process\":39}],49:[function(require,module,exports){\n'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar _require = require('buffer'),\n    Buffer = _require.Buffer;\n\nvar _require2 = require('util'),\n    inspect = _require2.inspect;\n\nvar custom = inspect && inspect.custom || 'inspect';\n\nfunction copyBuffer(src, target, offset) {\n  Buffer.prototype.copy.call(src, target, offset);\n}\n\nmodule.exports =\n/*#__PURE__*/\nfunction () {\n  function BufferList() {\n    _classCallCheck(this, BufferList);\n\n    this.head = null;\n    this.tail = null;\n    this.length = 0;\n  }\n\n  _createClass(BufferList, [{\n    key: \"push\",\n    value: function push(v) {\n      var entry = {\n        data: v,\n        next: null\n      };\n      if (this.length > 0) this.tail.next = entry;else this.head = entry;\n      this.tail = entry;\n      ++this.length;\n    }\n  }, {\n    key: \"unshift\",\n    value: function unshift(v) {\n      var entry = {\n        data: v,\n        next: this.head\n      };\n      if (this.length === 0) this.tail = entry;\n      this.head = entry;\n      ++this.length;\n    }\n  }, {\n    key: \"shift\",\n    value: function shift() {\n      if (this.length === 0) return;\n      var ret = this.head.data;\n      if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n      --this.length;\n      return ret;\n    }\n  }, {\n    key: \"clear\",\n    value: function clear() {\n      this.head = this.tail = null;\n      this.length = 0;\n    }\n  }, {\n    key: \"join\",\n    value: function join(s) {\n      if (this.length === 0) return '';\n      var p = this.head;\n      var ret = '' + p.data;\n\n      while (p = p.next) {\n        ret += s + p.data;\n      }\n\n      return ret;\n    }\n  }, {\n    key: \"concat\",\n    value: function concat(n) {\n      if (this.length === 0) return Buffer.alloc(0);\n      var ret = Buffer.allocUnsafe(n >>> 0);\n      var p = this.head;\n      var i = 0;\n\n      while (p) {\n        copyBuffer(p.data, ret, i);\n        i += p.data.length;\n        p = p.next;\n      }\n\n      return ret;\n    } // Consumes a specified amount of bytes or characters from the buffered data.\n\n  }, {\n    key: \"consume\",\n    value: function consume(n, hasStrings) {\n      var ret;\n\n      if (n < this.head.data.length) {\n        // `slice` is the same for buffers and strings.\n        ret = this.head.data.slice(0, n);\n        this.head.data = this.head.data.slice(n);\n      } else if (n === this.head.data.length) {\n        // First chunk is a perfect match.\n        ret = this.shift();\n      } else {\n        // Result spans more than one buffer.\n        ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n      }\n\n      return ret;\n    }\n  }, {\n    key: \"first\",\n    value: function first() {\n      return this.head.data;\n    } // Consumes a specified amount of characters from the buffered data.\n\n  }, {\n    key: \"_getString\",\n    value: function _getString(n) {\n      var p = this.head;\n      var c = 1;\n      var ret = p.data;\n      n -= ret.length;\n\n      while (p = p.next) {\n        var str = p.data;\n        var nb = n > str.length ? str.length : n;\n        if (nb === str.length) ret += str;else ret += str.slice(0, n);\n        n -= nb;\n\n        if (n === 0) {\n          if (nb === str.length) {\n            ++c;\n            if (p.next) this.head = p.next;else this.head = this.tail = null;\n          } else {\n            this.head = p;\n            p.data = str.slice(nb);\n          }\n\n          break;\n        }\n\n        ++c;\n      }\n\n      this.length -= c;\n      return ret;\n    } // Consumes a specified amount of bytes from the buffered data.\n\n  }, {\n    key: \"_getBuffer\",\n    value: function _getBuffer(n) {\n      var ret = Buffer.allocUnsafe(n);\n      var p = this.head;\n      var c = 1;\n      p.data.copy(ret);\n      n -= p.data.length;\n\n      while (p = p.next) {\n        var buf = p.data;\n        var nb = n > buf.length ? buf.length : n;\n        buf.copy(ret, ret.length - n, 0, nb);\n        n -= nb;\n\n        if (n === 0) {\n          if (nb === buf.length) {\n            ++c;\n            if (p.next) this.head = p.next;else this.head = this.tail = null;\n          } else {\n            this.head = p;\n            p.data = buf.slice(nb);\n          }\n\n          break;\n        }\n\n        ++c;\n      }\n\n      this.length -= c;\n      return ret;\n    } // Make sure the linked list only shows the minimal necessary information.\n\n  }, {\n    key: custom,\n    value: function value(_, options) {\n      return inspect(this, _objectSpread({}, options, {\n        // Only inspect one level.\n        depth: 0,\n        // It should not recurse.\n        customInspect: false\n      }));\n    }\n  }]);\n\n  return BufferList;\n}();\n},{\"buffer\":35,\"util\":34}],50:[function(require,module,exports){\n(function (process){(function (){\n'use strict'; // undocumented cb() API, needed for core, not for public API\n\nfunction destroy(err, cb) {\n  var _this = this;\n\n  var readableDestroyed = this._readableState && this._readableState.destroyed;\n  var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n  if (readableDestroyed || writableDestroyed) {\n    if (cb) {\n      cb(err);\n    } else if (err) {\n      if (!this._writableState) {\n        process.nextTick(emitErrorNT, this, err);\n      } else if (!this._writableState.errorEmitted) {\n        this._writableState.errorEmitted = true;\n        process.nextTick(emitErrorNT, this, err);\n      }\n    }\n\n    return this;\n  } // we set destroyed to true before firing error callbacks in order\n  // to make it re-entrance safe in case destroy() is called within callbacks\n\n\n  if (this._readableState) {\n    this._readableState.destroyed = true;\n  } // if this is a duplex stream mark the writable part as destroyed as well\n\n\n  if (this._writableState) {\n    this._writableState.destroyed = true;\n  }\n\n  this._destroy(err || null, function (err) {\n    if (!cb && err) {\n      if (!_this._writableState) {\n        process.nextTick(emitErrorAndCloseNT, _this, err);\n      } else if (!_this._writableState.errorEmitted) {\n        _this._writableState.errorEmitted = true;\n        process.nextTick(emitErrorAndCloseNT, _this, err);\n      } else {\n        process.nextTick(emitCloseNT, _this);\n      }\n    } else if (cb) {\n      process.nextTick(emitCloseNT, _this);\n      cb(err);\n    } else {\n      process.nextTick(emitCloseNT, _this);\n    }\n  });\n\n  return this;\n}\n\nfunction emitErrorAndCloseNT(self, err) {\n  emitErrorNT(self, err);\n  emitCloseNT(self);\n}\n\nfunction emitCloseNT(self) {\n  if (self._writableState && !self._writableState.emitClose) return;\n  if (self._readableState && !self._readableState.emitClose) return;\n  self.emit('close');\n}\n\nfunction undestroy() {\n  if (this._readableState) {\n    this._readableState.destroyed = false;\n    this._readableState.reading = false;\n    this._readableState.ended = false;\n    this._readableState.endEmitted = false;\n  }\n\n  if (this._writableState) {\n    this._writableState.destroyed = false;\n    this._writableState.ended = false;\n    this._writableState.ending = false;\n    this._writableState.finalCalled = false;\n    this._writableState.prefinished = false;\n    this._writableState.finished = false;\n    this._writableState.errorEmitted = false;\n  }\n}\n\nfunction emitErrorNT(self, err) {\n  self.emit('error', err);\n}\n\nfunction errorOrDestroy(stream, err) {\n  // We have tests that rely on errors being emitted\n  // in the same tick, so changing this is semver major.\n  // For now when you opt-in to autoDestroy we allow\n  // the error to be emitted nextTick. In a future\n  // semver major update we should change the default to this.\n  var rState = stream._readableState;\n  var wState = stream._writableState;\n  if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\n\nmodule.exports = {\n  destroy: destroy,\n  undestroy: undestroy,\n  errorOrDestroy: errorOrDestroy\n};\n}).call(this)}).call(this,require('_process'))\n\n},{\"_process\":39}],51:[function(require,module,exports){\n// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\n\nfunction once(callback) {\n  var called = false;\n  return function () {\n    if (called) return;\n    called = true;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    callback.apply(this, args);\n  };\n}\n\nfunction noop() {}\n\nfunction isRequest(stream) {\n  return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction eos(stream, opts, callback) {\n  if (typeof opts === 'function') return eos(stream, null, opts);\n  if (!opts) opts = {};\n  callback = once(callback || noop);\n  var readable = opts.readable || opts.readable !== false && stream.readable;\n  var writable = opts.writable || opts.writable !== false && stream.writable;\n\n  var onlegacyfinish = function onlegacyfinish() {\n    if (!stream.writable) onfinish();\n  };\n\n  var writableEnded = stream._writableState && stream._writableState.finished;\n\n  var onfinish = function onfinish() {\n    writable = false;\n    writableEnded = true;\n    if (!readable) callback.call(stream);\n  };\n\n  var readableEnded = stream._readableState && stream._readableState.endEmitted;\n\n  var onend = function onend() {\n    readable = false;\n    readableEnded = true;\n    if (!writable) callback.call(stream);\n  };\n\n  var onerror = function onerror(err) {\n    callback.call(stream, err);\n  };\n\n  var onclose = function onclose() {\n    var err;\n\n    if (readable && !readableEnded) {\n      if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n      return callback.call(stream, err);\n    }\n\n    if (writable && !writableEnded) {\n      if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n      return callback.call(stream, err);\n    }\n  };\n\n  var onrequest = function onrequest() {\n    stream.req.on('finish', onfinish);\n  };\n\n  if (isRequest(stream)) {\n    stream.on('complete', onfinish);\n    stream.on('abort', onclose);\n    if (stream.req) onrequest();else stream.on('request', onrequest);\n  } else if (writable && !stream._writableState) {\n    // legacy streams\n    stream.on('end', onlegacyfinish);\n    stream.on('close', onlegacyfinish);\n  }\n\n  stream.on('end', onend);\n  stream.on('finish', onfinish);\n  if (opts.error !== false) stream.on('error', onerror);\n  stream.on('close', onclose);\n  return function () {\n    stream.removeListener('complete', onfinish);\n    stream.removeListener('abort', onclose);\n    stream.removeListener('request', onrequest);\n    if (stream.req) stream.req.removeListener('finish', onfinish);\n    stream.removeListener('end', onlegacyfinish);\n    stream.removeListener('close', onlegacyfinish);\n    stream.removeListener('finish', onfinish);\n    stream.removeListener('end', onend);\n    stream.removeListener('error', onerror);\n    stream.removeListener('close', onclose);\n  };\n}\n\nmodule.exports = eos;\n},{\"../../../errors\":42}],52:[function(require,module,exports){\nmodule.exports = function () {\n  throw new Error('Readable.from is not available in the browser')\n};\n\n},{}],53:[function(require,module,exports){\n// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar eos;\n\nfunction once(callback) {\n  var called = false;\n  return function () {\n    if (called) return;\n    called = true;\n    callback.apply(void 0, arguments);\n  };\n}\n\nvar _require$codes = require('../../../errors').codes,\n    ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n    ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\n\nfunction noop(err) {\n  // Rethrow the error if it exists to avoid swallowing it\n  if (err) throw err;\n}\n\nfunction isRequest(stream) {\n  return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction destroyer(stream, reading, writing, callback) {\n  callback = once(callback);\n  var closed = false;\n  stream.on('close', function () {\n    closed = true;\n  });\n  if (eos === undefined) eos = require('./end-of-stream');\n  eos(stream, {\n    readable: reading,\n    writable: writing\n  }, function (err) {\n    if (err) return callback(err);\n    closed = true;\n    callback();\n  });\n  var destroyed = false;\n  return function (err) {\n    if (closed) return;\n    if (destroyed) return;\n    destroyed = true; // request.destroy just do .end - .abort is what we want\n\n    if (isRequest(stream)) return stream.abort();\n    if (typeof stream.destroy === 'function') return stream.destroy();\n    callback(err || new ERR_STREAM_DESTROYED('pipe'));\n  };\n}\n\nfunction call(fn) {\n  fn();\n}\n\nfunction pipe(from, to) {\n  return from.pipe(to);\n}\n\nfunction popCallback(streams) {\n  if (!streams.length) return noop;\n  if (typeof streams[streams.length - 1] !== 'function') return noop;\n  return streams.pop();\n}\n\nfunction pipeline() {\n  for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n    streams[_key] = arguments[_key];\n  }\n\n  var callback = popCallback(streams);\n  if (Array.isArray(streams[0])) streams = streams[0];\n\n  if (streams.length < 2) {\n    throw new ERR_MISSING_ARGS('streams');\n  }\n\n  var error;\n  var destroys = streams.map(function (stream, i) {\n    var reading = i < streams.length - 1;\n    var writing = i > 0;\n    return destroyer(stream, reading, writing, function (err) {\n      if (!error) error = err;\n      if (err) destroys.forEach(call);\n      if (reading) return;\n      destroys.forEach(call);\n      callback(error);\n    });\n  });\n  return streams.reduce(pipe);\n}\n\nmodule.exports = pipeline;\n},{\"../../../errors\":42,\"./end-of-stream\":51}],54:[function(require,module,exports){\n'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\n\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n  return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\n\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n  var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n\n  if (hwm != null) {\n    if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n      var name = isDuplex ? duplexKey : 'highWaterMark';\n      throw new ERR_INVALID_OPT_VALUE(name, hwm);\n    }\n\n    return Math.floor(hwm);\n  } // Default value\n\n\n  return state.objectMode ? 16 : 16 * 1024;\n}\n\nmodule.exports = {\n  getHighWaterMark: getHighWaterMark\n};\n},{\"../../../errors\":42}],55:[function(require,module,exports){\nmodule.exports = require('events').EventEmitter;\n\n},{\"events\":36}],56:[function(require,module,exports){\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\n/*</replacement>*/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n  encoding = '' + encoding;\n  switch (encoding && encoding.toLowerCase()) {\n    case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n      return true;\n    default:\n      return false;\n  }\n};\n\nfunction _normalizeEncoding(enc) {\n  if (!enc) return 'utf8';\n  var retried;\n  while (true) {\n    switch (enc) {\n      case 'utf8':\n      case 'utf-8':\n        return 'utf8';\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return 'utf16le';\n      case 'latin1':\n      case 'binary':\n        return 'latin1';\n      case 'base64':\n      case 'ascii':\n      case 'hex':\n        return enc;\n      default:\n        if (retried) return; // undefined\n        enc = ('' + enc).toLowerCase();\n        retried = true;\n    }\n  }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n  var nenc = _normalizeEncoding(enc);\n  if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n  return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n  this.encoding = normalizeEncoding(encoding);\n  var nb;\n  switch (this.encoding) {\n    case 'utf16le':\n      this.text = utf16Text;\n      this.end = utf16End;\n      nb = 4;\n      break;\n    case 'utf8':\n      this.fillLast = utf8FillLast;\n      nb = 4;\n      break;\n    case 'base64':\n      this.text = base64Text;\n      this.end = base64End;\n      nb = 3;\n      break;\n    default:\n      this.write = simpleWrite;\n      this.end = simpleEnd;\n      return;\n  }\n  this.lastNeed = 0;\n  this.lastTotal = 0;\n  this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n  if (buf.length === 0) return '';\n  var r;\n  var i;\n  if (this.lastNeed) {\n    r = this.fillLast(buf);\n    if (r === undefined) return '';\n    i = this.lastNeed;\n    this.lastNeed = 0;\n  } else {\n    i = 0;\n  }\n  if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n  return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n  if (this.lastNeed <= buf.length) {\n    buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n    return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n  }\n  buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n  this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n  if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n  return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n  var j = buf.length - 1;\n  if (j < i) return 0;\n  var nb = utf8CheckByte(buf[j]);\n  if (nb >= 0) {\n    if (nb > 0) self.lastNeed = nb - 1;\n    return nb;\n  }\n  if (--j < i || nb === -2) return 0;\n  nb = utf8CheckByte(buf[j]);\n  if (nb >= 0) {\n    if (nb > 0) self.lastNeed = nb - 2;\n    return nb;\n  }\n  if (--j < i || nb === -2) return 0;\n  nb = utf8CheckByte(buf[j]);\n  if (nb >= 0) {\n    if (nb > 0) {\n      if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n    }\n    return nb;\n  }\n  return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n  if ((buf[0] & 0xC0) !== 0x80) {\n    self.lastNeed = 0;\n    return '\\ufffd';\n  }\n  if (self.lastNeed > 1 && buf.length > 1) {\n    if ((buf[1] & 0xC0) !== 0x80) {\n      self.lastNeed = 1;\n      return '\\ufffd';\n    }\n    if (self.lastNeed > 2 && buf.length > 2) {\n      if ((buf[2] & 0xC0) !== 0x80) {\n        self.lastNeed = 2;\n        return '\\ufffd';\n      }\n    }\n  }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n  var p = this.lastTotal - this.lastNeed;\n  var r = utf8CheckExtraBytes(this, buf, p);\n  if (r !== undefined) return r;\n  if (this.lastNeed <= buf.length) {\n    buf.copy(this.lastChar, p, 0, this.lastNeed);\n    return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n  }\n  buf.copy(this.lastChar, p, 0, buf.length);\n  this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n  var total = utf8CheckIncomplete(this, buf, i);\n  if (!this.lastNeed) return buf.toString('utf8', i);\n  this.lastTotal = total;\n  var end = buf.length - (total - this.lastNeed);\n  buf.copy(this.lastChar, 0, end);\n  return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n  var r = buf && buf.length ? this.write(buf) : '';\n  if (this.lastNeed) return r + '\\ufffd';\n  return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n  if ((buf.length - i) % 2 === 0) {\n    var r = buf.toString('utf16le', i);\n    if (r) {\n      var c = r.charCodeAt(r.length - 1);\n      if (c >= 0xD800 && c <= 0xDBFF) {\n        this.lastNeed = 2;\n        this.lastTotal = 4;\n        this.lastChar[0] = buf[buf.length - 2];\n        this.lastChar[1] = buf[buf.length - 1];\n        return r.slice(0, -1);\n      }\n    }\n    return r;\n  }\n  this.lastNeed = 1;\n  this.lastTotal = 2;\n  this.lastChar[0] = buf[buf.length - 1];\n  return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n  var r = buf && buf.length ? this.write(buf) : '';\n  if (this.lastNeed) {\n    var end = this.lastTotal - this.lastNeed;\n    return r + this.lastChar.toString('utf16le', 0, end);\n  }\n  return r;\n}\n\nfunction base64Text(buf, i) {\n  var n = (buf.length - i) % 3;\n  if (n === 0) return buf.toString('base64', i);\n  this.lastNeed = 3 - n;\n  this.lastTotal = 3;\n  if (n === 1) {\n    this.lastChar[0] = buf[buf.length - 1];\n  } else {\n    this.lastChar[0] = buf[buf.length - 2];\n    this.lastChar[1] = buf[buf.length - 1];\n  }\n  return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n  var r = buf && buf.length ? this.write(buf) : '';\n  if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n  return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n  return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n  return buf && buf.length ? this.write(buf) : '';\n}\n},{\"safe-buffer\":40}],57:[function(require,module,exports){\n(function (global){(function (){\n\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n  if (config('noDeprecation')) {\n    return fn;\n  }\n\n  var warned = false;\n  function deprecated() {\n    if (!warned) {\n      if (config('throwDeprecation')) {\n        throw new Error(msg);\n      } else if (config('traceDeprecation')) {\n        console.trace(msg);\n      } else {\n        console.warn(msg);\n      }\n      warned = true;\n    }\n    return fn.apply(this, arguments);\n  }\n\n  return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n  // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n  try {\n    if (!global.localStorage) return false;\n  } catch (_) {\n    return false;\n  }\n  var val = global.localStorage[name];\n  if (null == val) return false;\n  return String(val).toLowerCase() === 'true';\n}\n\n}).call(this)}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n\n},{}],58:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nObject.defineProperty(exports, \"v1\", {\n  enumerable: true,\n  get: function () {\n    return _v.default;\n  }\n});\nObject.defineProperty(exports, \"v3\", {\n  enumerable: true,\n  get: function () {\n    return _v2.default;\n  }\n});\nObject.defineProperty(exports, \"v4\", {\n  enumerable: true,\n  get: function () {\n    return _v3.default;\n  }\n});\nObject.defineProperty(exports, \"v5\", {\n  enumerable: true,\n  get: function () {\n    return _v4.default;\n  }\n});\nObject.defineProperty(exports, \"NIL\", {\n  enumerable: true,\n  get: function () {\n    return _nil.default;\n  }\n});\nObject.defineProperty(exports, \"version\", {\n  enumerable: true,\n  get: function () {\n    return _version.default;\n  }\n});\nObject.defineProperty(exports, \"validate\", {\n  enumerable: true,\n  get: function () {\n    return _validate.default;\n  }\n});\nObject.defineProperty(exports, \"stringify\", {\n  enumerable: true,\n  get: function () {\n    return _stringify.default;\n  }\n});\nObject.defineProperty(exports, \"parse\", {\n  enumerable: true,\n  get: function () {\n    return _parse.default;\n  }\n});\n\nvar _v = _interopRequireDefault(require(\"./v1.js\"));\n\nvar _v2 = _interopRequireDefault(require(\"./v3.js\"));\n\nvar _v3 = _interopRequireDefault(require(\"./v4.js\"));\n\nvar _v4 = _interopRequireDefault(require(\"./v5.js\"));\n\nvar _nil = _interopRequireDefault(require(\"./nil.js\"));\n\nvar _version = _interopRequireDefault(require(\"./version.js\"));\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nvar _stringify = _interopRequireDefault(require(\"./stringify.js\"));\n\nvar _parse = _interopRequireDefault(require(\"./parse.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n},{\"./nil.js\":60,\"./parse.js\":61,\"./stringify.js\":65,\"./v1.js\":66,\"./v3.js\":67,\"./v4.js\":69,\"./v5.js\":70,\"./validate.js\":71,\"./version.js\":72}],59:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\n/*\n * Browser-compatible JavaScript MD5\n *\n * Modification of JavaScript MD5\n * https://github.com/blueimp/JavaScript-MD5\n *\n * Copyright 2011, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n *\n * Based on\n * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message\n * Digest Algorithm, as defined in RFC 1321.\n * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for more info.\n */\nfunction md5(bytes) {\n  if (typeof bytes === 'string') {\n    const msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n    bytes = new Uint8Array(msg.length);\n\n    for (let i = 0; i < msg.length; ++i) {\n      bytes[i] = msg.charCodeAt(i);\n    }\n  }\n\n  return md5ToHexEncodedArray(wordsToMd5(bytesToWords(bytes), bytes.length * 8));\n}\n/*\n * Convert an array of little-endian words to an array of bytes\n */\n\n\nfunction md5ToHexEncodedArray(input) {\n  const output = [];\n  const length32 = input.length * 32;\n  const hexTab = '0123456789abcdef';\n\n  for (let i = 0; i < length32; i += 8) {\n    const x = input[i >> 5] >>> i % 32 & 0xff;\n    const hex = parseInt(hexTab.charAt(x >>> 4 & 0x0f) + hexTab.charAt(x & 0x0f), 16);\n    output.push(hex);\n  }\n\n  return output;\n}\n/**\n * Calculate output length with padding and bit length\n */\n\n\nfunction getOutputLength(inputLength8) {\n  return (inputLength8 + 64 >>> 9 << 4) + 14 + 1;\n}\n/*\n * Calculate the MD5 of an array of little-endian words, and a bit length.\n */\n\n\nfunction wordsToMd5(x, len) {\n  /* append padding */\n  x[len >> 5] |= 0x80 << len % 32;\n  x[getOutputLength(len) - 1] = len;\n  let a = 1732584193;\n  let b = -271733879;\n  let c = -1732584194;\n  let d = 271733878;\n\n  for (let i = 0; i < x.length; i += 16) {\n    const olda = a;\n    const oldb = b;\n    const oldc = c;\n    const oldd = d;\n    a = md5ff(a, b, c, d, x[i], 7, -680876936);\n    d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);\n    c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);\n    b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);\n    a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);\n    d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);\n    c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);\n    b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);\n    a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);\n    d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);\n    c = md5ff(c, d, a, b, x[i + 10], 17, -42063);\n    b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);\n    a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);\n    d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);\n    c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);\n    b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);\n    a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);\n    d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);\n    c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);\n    b = md5gg(b, c, d, a, x[i], 20, -373897302);\n    a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);\n    d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);\n    c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);\n    b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);\n    a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);\n    d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);\n    c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);\n    b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);\n    a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);\n    d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);\n    c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);\n    b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);\n    a = md5hh(a, b, c, d, x[i + 5], 4, -378558);\n    d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);\n    c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);\n    b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);\n    a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);\n    d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);\n    c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);\n    b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);\n    a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);\n    d = md5hh(d, a, b, c, x[i], 11, -358537222);\n    c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);\n    b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);\n    a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);\n    d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);\n    c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);\n    b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);\n    a = md5ii(a, b, c, d, x[i], 6, -198630844);\n    d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);\n    c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);\n    b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);\n    a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);\n    d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);\n    c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);\n    b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);\n    a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);\n    d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);\n    c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);\n    b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);\n    a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);\n    d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);\n    c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);\n    b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);\n    a = safeAdd(a, olda);\n    b = safeAdd(b, oldb);\n    c = safeAdd(c, oldc);\n    d = safeAdd(d, oldd);\n  }\n\n  return [a, b, c, d];\n}\n/*\n * Convert an array bytes to an array of little-endian words\n * Characters >255 have their high-byte silently ignored.\n */\n\n\nfunction bytesToWords(input) {\n  if (input.length === 0) {\n    return [];\n  }\n\n  const length8 = input.length * 8;\n  const output = new Uint32Array(getOutputLength(length8));\n\n  for (let i = 0; i < length8; i += 8) {\n    output[i >> 5] |= (input[i / 8] & 0xff) << i % 32;\n  }\n\n  return output;\n}\n/*\n * Add integers, wrapping at 2^32. This uses 16-bit operations internally\n * to work around bugs in some JS interpreters.\n */\n\n\nfunction safeAdd(x, y) {\n  const lsw = (x & 0xffff) + (y & 0xffff);\n  const msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n  return msw << 16 | lsw & 0xffff;\n}\n/*\n * Bitwise rotate a 32-bit number to the left.\n */\n\n\nfunction bitRotateLeft(num, cnt) {\n  return num << cnt | num >>> 32 - cnt;\n}\n/*\n * These functions implement the four basic operations the algorithm uses.\n */\n\n\nfunction md5cmn(q, a, b, x, s, t) {\n  return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);\n}\n\nfunction md5ff(a, b, c, d, x, s, t) {\n  return md5cmn(b & c | ~b & d, a, b, x, s, t);\n}\n\nfunction md5gg(a, b, c, d, x, s, t) {\n  return md5cmn(b & d | c & ~d, a, b, x, s, t);\n}\n\nfunction md5hh(a, b, c, d, x, s, t) {\n  return md5cmn(b ^ c ^ d, a, b, x, s, t);\n}\n\nfunction md5ii(a, b, c, d, x, s, t) {\n  return md5cmn(c ^ (b | ~d), a, b, x, s, t);\n}\n\nvar _default = md5;\nexports.default = _default;\n},{}],60:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _default = '00000000-0000-0000-0000-000000000000';\nexports.default = _default;\n},{}],61:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction parse(uuid) {\n  if (!(0, _validate.default)(uuid)) {\n    throw TypeError('Invalid UUID');\n  }\n\n  let v;\n  const arr = new Uint8Array(16); // Parse ########-....-....-....-............\n\n  arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;\n  arr[1] = v >>> 16 & 0xff;\n  arr[2] = v >>> 8 & 0xff;\n  arr[3] = v & 0xff; // Parse ........-####-....-....-............\n\n  arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;\n  arr[5] = v & 0xff; // Parse ........-....-####-....-............\n\n  arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;\n  arr[7] = v & 0xff; // Parse ........-....-....-####-............\n\n  arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;\n  arr[9] = v & 0xff; // Parse ........-....-....-....-############\n  // (Use \"/\" to avoid 32-bit truncation when bit-shifting high-order bytes)\n\n  arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff;\n  arr[11] = v / 0x100000000 & 0xff;\n  arr[12] = v >>> 24 & 0xff;\n  arr[13] = v >>> 16 & 0xff;\n  arr[14] = v >>> 8 & 0xff;\n  arr[15] = v & 0xff;\n  return arr;\n}\n\nvar _default = parse;\nexports.default = _default;\n},{\"./validate.js\":71}],62:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _default = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;\nexports.default = _default;\n},{}],63:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = rng;\n// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\n\nfunction rng() {\n  // lazy load so that environments that need to polyfill have a chance to do so\n  if (!getRandomValues) {\n    // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n    // find the complete implementation of crypto (msCrypto) on IE11.\n    getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);\n\n    if (!getRandomValues) {\n      throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n    }\n  }\n\n  return getRandomValues(rnds8);\n}\n},{}],64:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\n// Adapted from Chris Veness' SHA1 code at\n// http://www.movable-type.co.uk/scripts/sha1.html\nfunction f(s, x, y, z) {\n  switch (s) {\n    case 0:\n      return x & y ^ ~x & z;\n\n    case 1:\n      return x ^ y ^ z;\n\n    case 2:\n      return x & y ^ x & z ^ y & z;\n\n    case 3:\n      return x ^ y ^ z;\n  }\n}\n\nfunction ROTL(x, n) {\n  return x << n | x >>> 32 - n;\n}\n\nfunction sha1(bytes) {\n  const K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];\n  const H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];\n\n  if (typeof bytes === 'string') {\n    const msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n    bytes = [];\n\n    for (let i = 0; i < msg.length; ++i) {\n      bytes.push(msg.charCodeAt(i));\n    }\n  } else if (!Array.isArray(bytes)) {\n    // Convert Array-like to Array\n    bytes = Array.prototype.slice.call(bytes);\n  }\n\n  bytes.push(0x80);\n  const l = bytes.length / 4 + 2;\n  const N = Math.ceil(l / 16);\n  const M = new Array(N);\n\n  for (let i = 0; i < N; ++i) {\n    const arr = new Uint32Array(16);\n\n    for (let j = 0; j < 16; ++j) {\n      arr[j] = bytes[i * 64 + j * 4] << 24 | bytes[i * 64 + j * 4 + 1] << 16 | bytes[i * 64 + j * 4 + 2] << 8 | bytes[i * 64 + j * 4 + 3];\n    }\n\n    M[i] = arr;\n  }\n\n  M[N - 1][14] = (bytes.length - 1) * 8 / Math.pow(2, 32);\n  M[N - 1][14] = Math.floor(M[N - 1][14]);\n  M[N - 1][15] = (bytes.length - 1) * 8 & 0xffffffff;\n\n  for (let i = 0; i < N; ++i) {\n    const W = new Uint32Array(80);\n\n    for (let t = 0; t < 16; ++t) {\n      W[t] = M[i][t];\n    }\n\n    for (let t = 16; t < 80; ++t) {\n      W[t] = ROTL(W[t - 3] ^ W[t - 8] ^ W[t - 14] ^ W[t - 16], 1);\n    }\n\n    let a = H[0];\n    let b = H[1];\n    let c = H[2];\n    let d = H[3];\n    let e = H[4];\n\n    for (let t = 0; t < 80; ++t) {\n      const s = Math.floor(t / 20);\n      const T = ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[t] >>> 0;\n      e = d;\n      d = c;\n      c = ROTL(b, 30) >>> 0;\n      b = a;\n      a = T;\n    }\n\n    H[0] = H[0] + a >>> 0;\n    H[1] = H[1] + b >>> 0;\n    H[2] = H[2] + c >>> 0;\n    H[3] = H[3] + d >>> 0;\n    H[4] = H[4] + e >>> 0;\n  }\n\n  return [H[0] >> 24 & 0xff, H[0] >> 16 & 0xff, H[0] >> 8 & 0xff, H[0] & 0xff, H[1] >> 24 & 0xff, H[1] >> 16 & 0xff, H[1] >> 8 & 0xff, H[1] & 0xff, H[2] >> 24 & 0xff, H[2] >> 16 & 0xff, H[2] >> 8 & 0xff, H[2] & 0xff, H[3] >> 24 & 0xff, H[3] >> 16 & 0xff, H[3] >> 8 & 0xff, H[3] & 0xff, H[4] >> 24 & 0xff, H[4] >> 16 & 0xff, H[4] >> 8 & 0xff, H[4] & 0xff];\n}\n\nvar _default = sha1;\nexports.default = _default;\n},{}],65:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n  byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr, offset = 0) {\n  // Note: Be careful editing this code!  It's been tuned for performance\n  // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n  const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID.  If this throws, it's likely due to one\n  // of the following:\n  // - One or more input array values don't map to a hex octet (leading to\n  // \"undefined\" in the uuid)\n  // - Invalid input values for the RFC `version` or `variant` fields\n\n  if (!(0, _validate.default)(uuid)) {\n    throw TypeError('Stringified UUID is invalid');\n  }\n\n  return uuid;\n}\n\nvar _default = stringify;\nexports.default = _default;\n},{\"./validate.js\":71}],66:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _rng = _interopRequireDefault(require(\"./rng.js\"));\n\nvar _stringify = _interopRequireDefault(require(\"./stringify.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\nlet _nodeId;\n\nlet _clockseq; // Previous uuid creation time\n\n\nlet _lastMSecs = 0;\nlet _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details\n\nfunction v1(options, buf, offset) {\n  let i = buf && offset || 0;\n  const b = buf || new Array(16);\n  options = options || {};\n  let node = options.node || _nodeId;\n  let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not\n  // specified.  We do this lazily to minimize issues related to insufficient\n  // system entropy.  See #189\n\n  if (node == null || clockseq == null) {\n    const seedBytes = options.random || (options.rng || _rng.default)();\n\n    if (node == null) {\n      // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n      node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];\n    }\n\n    if (clockseq == null) {\n      // Per 4.2.2, randomize (14 bit) clockseq\n      clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n    }\n  } // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n  // (1582-10-15 00:00).  JSNumbers aren't precise enough for this, so\n  // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n  // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n\n\n  let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock\n  // cycle to simulate higher resolution clock\n\n  let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)\n\n  const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression\n\n  if (dt < 0 && options.clockseq === undefined) {\n    clockseq = clockseq + 1 & 0x3fff;\n  } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n  // time interval\n\n\n  if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n    nsecs = 0;\n  } // Per 4.2.1.2 Throw error if too many uuids are requested\n\n\n  if (nsecs >= 10000) {\n    throw new Error(\"uuid.v1(): Can't create more than 10M uuids/sec\");\n  }\n\n  _lastMSecs = msecs;\n  _lastNSecs = nsecs;\n  _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n\n  msecs += 12219292800000; // `time_low`\n\n  const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n  b[i++] = tl >>> 24 & 0xff;\n  b[i++] = tl >>> 16 & 0xff;\n  b[i++] = tl >>> 8 & 0xff;\n  b[i++] = tl & 0xff; // `time_mid`\n\n  const tmh = msecs / 0x100000000 * 10000 & 0xfffffff;\n  b[i++] = tmh >>> 8 & 0xff;\n  b[i++] = tmh & 0xff; // `time_high_and_version`\n\n  b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n\n  b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n\n  b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`\n\n  b[i++] = clockseq & 0xff; // `node`\n\n  for (let n = 0; n < 6; ++n) {\n    b[i + n] = node[n];\n  }\n\n  return buf || (0, _stringify.default)(b);\n}\n\nvar _default = v1;\nexports.default = _default;\n},{\"./rng.js\":63,\"./stringify.js\":65}],67:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _v = _interopRequireDefault(require(\"./v35.js\"));\n\nvar _md = _interopRequireDefault(require(\"./md5.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v3 = (0, _v.default)('v3', 0x30, _md.default);\nvar _default = v3;\nexports.default = _default;\n},{\"./md5.js\":59,\"./v35.js\":68}],68:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = _default;\nexports.URL = exports.DNS = void 0;\n\nvar _stringify = _interopRequireDefault(require(\"./stringify.js\"));\n\nvar _parse = _interopRequireDefault(require(\"./parse.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction stringToBytes(str) {\n  str = unescape(encodeURIComponent(str)); // UTF8 escape\n\n  const bytes = [];\n\n  for (let i = 0; i < str.length; ++i) {\n    bytes.push(str.charCodeAt(i));\n  }\n\n  return bytes;\n}\n\nconst DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexports.DNS = DNS;\nconst URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexports.URL = URL;\n\nfunction _default(name, version, hashfunc) {\n  function generateUUID(value, namespace, buf, offset) {\n    if (typeof value === 'string') {\n      value = stringToBytes(value);\n    }\n\n    if (typeof namespace === 'string') {\n      namespace = (0, _parse.default)(namespace);\n    }\n\n    if (namespace.length !== 16) {\n      throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');\n    } // Compute hash of namespace and value, Per 4.3\n    // Future: Use spread syntax when supported on all platforms, e.g. `bytes =\n    // hashfunc([...namespace, ... value])`\n\n\n    let bytes = new Uint8Array(16 + value.length);\n    bytes.set(namespace);\n    bytes.set(value, namespace.length);\n    bytes = hashfunc(bytes);\n    bytes[6] = bytes[6] & 0x0f | version;\n    bytes[8] = bytes[8] & 0x3f | 0x80;\n\n    if (buf) {\n      offset = offset || 0;\n\n      for (let i = 0; i < 16; ++i) {\n        buf[offset + i] = bytes[i];\n      }\n\n      return buf;\n    }\n\n    return (0, _stringify.default)(bytes);\n  } // Function#name is not settable on some platforms (#270)\n\n\n  try {\n    generateUUID.name = name; // eslint-disable-next-line no-empty\n  } catch (err) {} // For CommonJS default export support\n\n\n  generateUUID.DNS = DNS;\n  generateUUID.URL = URL;\n  return generateUUID;\n}\n},{\"./parse.js\":61,\"./stringify.js\":65}],69:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _rng = _interopRequireDefault(require(\"./rng.js\"));\n\nvar _stringify = _interopRequireDefault(require(\"./stringify.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction v4(options, buf, offset) {\n  options = options || {};\n\n  const rnds = options.random || (options.rng || _rng.default)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n\n  rnds[6] = rnds[6] & 0x0f | 0x40;\n  rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n  if (buf) {\n    offset = offset || 0;\n\n    for (let i = 0; i < 16; ++i) {\n      buf[offset + i] = rnds[i];\n    }\n\n    return buf;\n  }\n\n  return (0, _stringify.default)(rnds);\n}\n\nvar _default = v4;\nexports.default = _default;\n},{\"./rng.js\":63,\"./stringify.js\":65}],70:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _v = _interopRequireDefault(require(\"./v35.js\"));\n\nvar _sha = _interopRequireDefault(require(\"./sha1.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v5 = (0, _v.default)('v5', 0x50, _sha.default);\nvar _default = v5;\nexports.default = _default;\n},{\"./sha1.js\":64,\"./v35.js\":68}],71:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _regex = _interopRequireDefault(require(\"./regex.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction validate(uuid) {\n  return typeof uuid === 'string' && _regex.default.test(uuid);\n}\n\nvar _default = validate;\nexports.default = _default;\n},{\"./regex.js\":62}],72:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction version(uuid) {\n  if (!(0, _validate.default)(uuid)) {\n    throw TypeError('Invalid UUID');\n  }\n\n  return parseInt(uuid.substr(14, 1), 16);\n}\n\nvar _default = version;\nexports.default = _default;\n},{\"./validate.js\":71}]},{},[9])(9)\n});\n//# sourceMappingURL=index-browser.js.map\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = parseFilename;\n\nvar _toArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/toArray\"));\n\nfunction parseFilename(filename) {\n  if (!filename) {\n    return {\n      extname: '',\n      name: ''\n    };\n  } else if (~filename.indexOf('.')) {\n    var _filename$split$rever = filename.split('.').reverse(),\n        _filename$split$rever2 = (0, _toArray2[\"default\"])(_filename$split$rever),\n        extensionWithoutDot = _filename$split$rever2[0],\n        nameSegments = _filename$split$rever2.slice(1);\n\n    return {\n      extname: '.' + extensionWithoutDot,\n      name: nameSegments.reverse().join('.')\n    };\n  } else {\n    return {\n      extname: '',\n      name: filename\n    };\n  }\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9wYXJzZUZpbGVuYW1lLmpzIl0sIm5hbWVzIjpbInBhcnNlRmlsZW5hbWUiLCJmaWxlbmFtZSIsImV4dG5hbWUiLCJuYW1lIiwiaW5kZXhPZiIsInNwbGl0IiwicmV2ZXJzZSIsImV4dGVuc2lvbldpdGhvdXREb3QiLCJuYW1lU2VnbWVudHMiLCJqb2luIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFlLFNBQVNBLGFBQVQsQ0FBdUJDLFFBQXZCLEVBQWlDO0FBQzVDLE1BQUksQ0FBQ0EsUUFBTCxFQUFlO0FBQ1gsV0FBTztBQUNIQyxNQUFBQSxPQUFPLEVBQUUsRUFETjtBQUVIQyxNQUFBQSxJQUFJLEVBQUU7QUFGSCxLQUFQO0FBSUgsR0FMRCxNQUtPLElBQUksQ0FBQ0YsUUFBUSxDQUFDRyxPQUFULENBQWlCLEdBQWpCLENBQUwsRUFBNEI7QUFDL0IsZ0NBQStDSCxRQUFRLENBQUNJLEtBQVQsQ0FBZSxHQUFmLEVBQW9CQyxPQUFwQixFQUEvQztBQUFBO0FBQUEsUUFBT0MsbUJBQVA7QUFBQSxRQUErQkMsWUFBL0I7O0FBRUEsV0FBTztBQUNITixNQUFBQSxPQUFPLEVBQUUsTUFBTUssbUJBRFo7QUFFSEosTUFBQUEsSUFBSSxFQUFFSyxZQUFZLENBQUNGLE9BQWIsR0FBdUJHLElBQXZCLENBQTRCLEdBQTVCO0FBRkgsS0FBUDtBQUlILEdBUE0sTUFPQTtBQUNILFdBQU87QUFDSFAsTUFBQUEsT0FBTyxFQUFFLEVBRE47QUFFSEMsTUFBQUEsSUFBSSxFQUFFRjtBQUZILEtBQVA7QUFJSDtBQUNKIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcGFyc2VGaWxlbmFtZShmaWxlbmFtZSkge1xuICAgIGlmICghZmlsZW5hbWUpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGV4dG5hbWU6ICcnLFxuICAgICAgICAgICAgbmFtZTogJydcbiAgICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKH5maWxlbmFtZS5pbmRleE9mKCcuJykpIHtcbiAgICAgICAgY29uc3QgW2V4dGVuc2lvbldpdGhvdXREb3QsIC4uLm5hbWVTZWdtZW50c10gPSBmaWxlbmFtZS5zcGxpdCgnLicpLnJldmVyc2UoKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZXh0bmFtZTogJy4nICsgZXh0ZW5zaW9uV2l0aG91dERvdCxcbiAgICAgICAgICAgIG5hbWU6IG5hbWVTZWdtZW50cy5yZXZlcnNlKCkuam9pbignLicpXG4gICAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGV4dG5hbWU6ICcnLFxuICAgICAgICAgICAgbmFtZTogZmlsZW5hbWVcbiAgICAgICAgfTtcbiAgICB9XG59XG4iXX0=","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nfunction createDeferred() {\n  var deferred = {};\n  deferred.promise = new Promise(function (resolve, reject) {\n    deferred.reject = reject;\n    deferred.resolve = resolve;\n  });\n  return deferred;\n}\n\nvar _default = createDeferred;\nexports[\"default\"] = _default;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jcmVhdGVEZWZlcnJlZC50cyJdLCJuYW1lcyI6WyJjcmVhdGVEZWZlcnJlZCIsImRlZmVycmVkIiwicHJvbWlzZSIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBTUEsU0FBU0EsY0FBVCxHQUEwQztBQUN4QyxNQUFNQyxRQUE4QixHQUFHLEVBQXZDO0FBRUFBLEVBQUFBLFFBQVEsQ0FBQ0MsT0FBVCxHQUFtQixJQUFJQyxPQUFKLENBQVksVUFBQ0MsT0FBRCxFQUFVQyxNQUFWLEVBQXFCO0FBQ2xESixJQUFBQSxRQUFRLENBQUNJLE1BQVQsR0FBa0JBLE1BQWxCO0FBQ0FKLElBQUFBLFFBQVEsQ0FBQ0csT0FBVCxHQUFtQkEsT0FBbkI7QUFDRCxHQUhrQixDQUFuQjtBQUtBLFNBQU9ILFFBQVA7QUFDRDs7ZUFFY0QsYyIsInNvdXJjZXNDb250ZW50IjpbInR5cGUgRGVmZXJyZWQ8VD4gPSB7XG4gIHByb21pc2U6IFByb21pc2U8VD47XG4gIHJlamVjdDogKHJlYXNvbj86IGFueSkgPT4gdm9pZDtcbiAgcmVzb2x2ZTogKHZhbHVlOiBUIHwgUHJvbWlzZUxpa2U8VD4pID0+IHZvaWQ7XG59O1xuXG5mdW5jdGlvbiBjcmVhdGVEZWZlcnJlZDxUPigpOiBEZWZlcnJlZDxUPiB7XG4gIGNvbnN0IGRlZmVycmVkOiBQYXJ0aWFsPERlZmVycmVkPFQ+PiA9IHt9O1xuXG4gIGRlZmVycmVkLnByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgZGVmZXJyZWQucmVqZWN0ID0gcmVqZWN0O1xuICAgIGRlZmVycmVkLnJlc29sdmUgPSByZXNvbHZlO1xuICB9KTtcblxuICByZXR1cm4gZGVmZXJyZWQgYXMgRGVmZXJyZWQ8VD47XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNyZWF0ZURlZmVycmVkO1xuZXhwb3J0IHR5cGUgeyBEZWZlcnJlZCB9O1xuIl19","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _typeof = require(\"@babel/runtime/helpers/typeof\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nObject.defineProperty(exports, \"DirectLineStreaming\", {\n  enumerable: true,\n  get: function get() {\n    return _directLineStreaming.DirectLineStreaming;\n  }\n});\nexports.DirectLine = exports.ConnectionStatus = void 0;\n\nvar _objectWithoutProperties2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutProperties\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nrequire(\"core-js/features/promise\");\n\nrequire(\"url-search-params-polyfill\");\n\nvar _BehaviorSubject = require(\"rxjs/BehaviorSubject\");\n\nvar _Observable = require(\"rxjs/Observable\");\n\nvar _async = require(\"rxjs/scheduler/async\");\n\nvar _jwtDecode = _interopRequireWildcard(require(\"jwt-decode\"));\n\nrequire(\"rxjs/add/operator/catch\");\n\nrequire(\"rxjs/add/operator/combineLatest\");\n\nrequire(\"rxjs/add/operator/count\");\n\nrequire(\"rxjs/add/operator/delay\");\n\nrequire(\"rxjs/add/operator/do\");\n\nrequire(\"rxjs/add/operator/filter\");\n\nrequire(\"rxjs/add/operator/map\");\n\nrequire(\"rxjs/add/operator/mergeMap\");\n\nrequire(\"rxjs/add/operator/concatMap\");\n\nrequire(\"rxjs/add/operator/retryWhen\");\n\nrequire(\"rxjs/add/operator/share\");\n\nrequire(\"rxjs/add/operator/take\");\n\nrequire(\"rxjs/add/observable/dom/ajax\");\n\nrequire(\"rxjs/add/observable/empty\");\n\nrequire(\"rxjs/add/observable/from\");\n\nrequire(\"rxjs/add/observable/interval\");\n\nrequire(\"rxjs/add/observable/of\");\n\nrequire(\"rxjs/add/observable/throw\");\n\nvar _dedupeFilenames = _interopRequireDefault(require(\"./dedupeFilenames\"));\n\nvar _directLineStreaming = require(\"./directLineStreaming\");\n\nvar _excluded = [\"contentUrl\"];\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2[\"default\"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nvar DIRECT_LINE_VERSION = 'DirectLine/3.0';\n// These types are specific to this client library, not to Direct Line 3.0\nvar ConnectionStatus;\nexports.ConnectionStatus = ConnectionStatus;\n\n(function (ConnectionStatus) {\n  ConnectionStatus[ConnectionStatus[\"Uninitialized\"] = 0] = \"Uninitialized\";\n  ConnectionStatus[ConnectionStatus[\"Connecting\"] = 1] = \"Connecting\";\n  ConnectionStatus[ConnectionStatus[\"Online\"] = 2] = \"Online\";\n  ConnectionStatus[ConnectionStatus[\"ExpiredToken\"] = 3] = \"ExpiredToken\";\n  ConnectionStatus[ConnectionStatus[\"FailedToConnect\"] = 4] = \"FailedToConnect\";\n  ConnectionStatus[ConnectionStatus[\"Ended\"] = 5] = \"Ended\";\n})(ConnectionStatus || (exports.ConnectionStatus = ConnectionStatus = {}));\n\nvar wrapAjaxWithRetry = function wrapAjaxWithRetry(source, scheduler) {\n  var notImplemented = function notImplemented() {\n    throw new Error('not implemented');\n  };\n\n  var inner = function inner(response$) {\n    return response$[\"catch\"](function (err) {\n      if (err.status === 429) {\n        var retryAfterValue = err.xhr.getResponseHeader('Retry-After');\n        var retryAfter = Number(retryAfterValue);\n\n        if (!isNaN(retryAfter)) {\n          return _Observable.Observable.timer(retryAfter, scheduler).flatMap(function (_) {\n            return _Observable.Observable[\"throw\"](err, scheduler);\n          });\n        }\n      }\n\n      return _Observable.Observable[\"throw\"](err, scheduler);\n    });\n  };\n\n  var outer = function outer(urlOrRequest) {\n    return inner(source(urlOrRequest));\n  };\n\n  return Object.assign(outer, {\n    get: function get(url, headers) {\n      return notImplemented();\n    },\n    post: function post(url, body, headers) {\n      return notImplemented();\n    },\n    put: function put(url, body, headers) {\n      return notImplemented();\n    },\n    patch: function patch(url, body, headers) {\n      return notImplemented();\n    },\n    \"delete\": function _delete(url, headers) {\n      return notImplemented();\n    },\n    getJSON: function getJSON(url, headers) {\n      return notImplemented();\n    }\n  });\n};\n\nvar makeServices = function makeServices(services) {\n  var scheduler = services.scheduler || _async.async;\n  return {\n    scheduler: scheduler,\n    ajax: wrapAjaxWithRetry(services.ajax || _Observable.Observable.ajax, scheduler),\n    WebSocket: services.WebSocket || WebSocket,\n    random: services.random || Math.random\n  };\n};\n\nvar lifetimeRefreshToken = 30 * 60 * 1000;\nvar intervalRefreshToken = lifetimeRefreshToken / 2;\nvar POLLING_INTERVAL_LOWER_BOUND = 200; //ms\n\nvar errorExpiredToken = new Error(\"expired token\");\nvar errorConversationEnded = new Error(\"conversation ended\");\nvar errorFailedToConnect = new Error(\"failed to connect\");\nvar konsole = {\n  log: function log(message) {\n    var _console;\n\n    for (var _len = arguments.length, optionalParams = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      optionalParams[_key - 1] = arguments[_key];\n    }\n\n    if (typeof window !== 'undefined' && window[\"botchatDebug\"] && message) (_console = console).log.apply(_console, [message].concat(optionalParams));\n  }\n};\n\nvar DirectLine = /*#__PURE__*/function () {\n  function DirectLine(options) {\n    (0, _classCallCheck2[\"default\"])(this, DirectLine);\n    (0, _defineProperty2[\"default\"])(this, \"connectionStatus$\", new _BehaviorSubject.BehaviorSubject(ConnectionStatus.Uninitialized));\n    (0, _defineProperty2[\"default\"])(this, \"domain\", \"https://directline.botframework.com/v3/directline\");\n    (0, _defineProperty2[\"default\"])(this, \"watermark\", '');\n    (0, _defineProperty2[\"default\"])(this, \"_botAgent\", '');\n    (0, _defineProperty2[\"default\"])(this, \"timeout\", 20 * 1000);\n    (0, _defineProperty2[\"default\"])(this, \"pollingInterval\", 1000);\n    this.secret = options.secret;\n    this.token = options.secret || options.token;\n    this.webSocket = (options.webSocket === undefined ? true : options.webSocket) && typeof WebSocket !== 'undefined' && WebSocket !== undefined;\n\n    if (options.conversationStartProperties && options.conversationStartProperties.locale) {\n      if (Object.prototype.toString.call(options.conversationStartProperties.locale) === '[object String]') {\n        this.localeOnStartConversation = options.conversationStartProperties.locale;\n      } else {\n        console.warn('DirectLineJS: conversationStartProperties.locale was ignored: the locale name may be a BCP 47 language tag');\n      }\n    }\n\n    if (options.domain) {\n      this.domain = options.domain;\n    }\n\n    if (options.conversationId) {\n      this.conversationId = options.conversationId;\n    }\n\n    if (options.watermark) {\n      this.watermark = options.watermark;\n    }\n\n    if (options.streamUrl) {\n      if (options.token && options.conversationId) {\n        this.streamUrl = options.streamUrl;\n      } else {\n        console.warn('DirectLineJS: streamUrl was ignored: you need to provide a token and a conversationid');\n      }\n    }\n\n    if (options.timeout !== undefined) {\n      this.timeout = options.timeout;\n    }\n\n    this.retries = (lifetimeRefreshToken - intervalRefreshToken) / this.timeout;\n    this._botAgent = this.getBotAgent(options.botAgent);\n    this.services = makeServices(options);\n    var parsedPollingInterval = ~~options.pollingInterval;\n\n    if (parsedPollingInterval < POLLING_INTERVAL_LOWER_BOUND) {\n      if (typeof options.pollingInterval !== 'undefined') {\n        console.warn(\"DirectLineJS: provided pollingInterval (\".concat(options.pollingInterval, \") is under lower bound (200ms), using default of 1000ms\"));\n      }\n    } else {\n      this.pollingInterval = parsedPollingInterval;\n    }\n\n    this.expiredTokenExhaustion = this.setConnectionStatusFallback(ConnectionStatus.ExpiredToken, ConnectionStatus.FailedToConnect, 5);\n    this.activity$ = (this.webSocket ? this.webSocketActivity$() : this.pollingGetActivity$()).share();\n  } // Every time we're about to make a Direct Line REST call, we call this first to see check the current connection status.\n  // Either throws an error (indicating an error state) or emits a null, indicating a (presumably) healthy connection\n\n\n  (0, _createClass2[\"default\"])(DirectLine, [{\n    key: \"checkConnection\",\n    value: function checkConnection() {\n      var _this = this;\n\n      var once = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n      var obs = this.connectionStatus$.flatMap(function (connectionStatus) {\n        if (connectionStatus === ConnectionStatus.Uninitialized) {\n          _this.connectionStatus$.next(ConnectionStatus.Connecting); //if token and streamUrl are defined it means reconnect has already been done. Skipping it.\n\n\n          if (_this.token && _this.streamUrl) {\n            _this.connectionStatus$.next(ConnectionStatus.Online);\n\n            return _Observable.Observable.of(connectionStatus, _this.services.scheduler);\n          } else {\n            return _this.startConversation()[\"do\"](function (conversation) {\n              _this.conversationId = conversation.conversationId;\n              _this.token = _this.secret || conversation.token;\n              _this.streamUrl = conversation.streamUrl;\n              _this.referenceGrammarId = conversation.referenceGrammarId;\n              if (!_this.secret) _this.refreshTokenLoop();\n\n              _this.connectionStatus$.next(ConnectionStatus.Online);\n            }, function (error) {\n              _this.connectionStatus$.next(ConnectionStatus.FailedToConnect);\n            }).map(function (_) {\n              return connectionStatus;\n            });\n          }\n        } else {\n          return _Observable.Observable.of(connectionStatus, _this.services.scheduler);\n        }\n      }).filter(function (connectionStatus) {\n        return connectionStatus != ConnectionStatus.Uninitialized && connectionStatus != ConnectionStatus.Connecting;\n      }).flatMap(function (connectionStatus) {\n        switch (connectionStatus) {\n          case ConnectionStatus.Ended:\n            return _Observable.Observable[\"throw\"](errorConversationEnded, _this.services.scheduler);\n\n          case ConnectionStatus.FailedToConnect:\n            return _Observable.Observable[\"throw\"](errorFailedToConnect, _this.services.scheduler);\n\n          case ConnectionStatus.ExpiredToken:\n            return _Observable.Observable.of(connectionStatus, _this.services.scheduler);\n\n          default:\n            return _Observable.Observable.of(connectionStatus, _this.services.scheduler);\n        }\n      });\n      return once ? obs.take(1) : obs;\n    }\n  }, {\n    key: \"setConnectionStatusFallback\",\n    value: function setConnectionStatusFallback(connectionStatusFrom, connectionStatusTo) {\n      var maxAttempts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 5;\n      maxAttempts--;\n      var attempts = 0;\n      var currStatus = null;\n      return function (status) {\n        if (status === connectionStatusFrom && currStatus === status && attempts >= maxAttempts) {\n          attempts = 0;\n          return connectionStatusTo;\n        }\n\n        attempts++;\n        currStatus = status;\n        return status;\n      };\n    }\n  }, {\n    key: \"expiredToken\",\n    value: function expiredToken() {\n      var connectionStatus = this.connectionStatus$.getValue();\n      if (connectionStatus != ConnectionStatus.Ended && connectionStatus != ConnectionStatus.FailedToConnect) this.connectionStatus$.next(ConnectionStatus.ExpiredToken);\n      var protectedConnectionStatus = this.expiredTokenExhaustion(this.connectionStatus$.getValue());\n      this.connectionStatus$.next(protectedConnectionStatus);\n    }\n  }, {\n    key: \"startConversation\",\n    value: function startConversation() {\n      var _this2 = this;\n\n      //if conversationid is set here, it means we need to call the reconnect api, else it is a new conversation\n      var url = this.conversationId ? \"\".concat(this.domain, \"/conversations/\").concat(this.conversationId, \"?watermark=\").concat(this.watermark) : \"\".concat(this.domain, \"/conversations\");\n      var method = this.conversationId ? \"GET\" : \"POST\";\n      var body = this.conversationId ? undefined : {\n        user: {\n          id: this.userIdOnStartConversation\n        },\n        locale: this.localeOnStartConversation\n      };\n      return this.services.ajax({\n        method: method,\n        url: url,\n        body: body,\n        timeout: this.timeout,\n        headers: _objectSpread({\n          \"Accept\": \"application/json\",\n          \"Content-Type\": \"application/json\"\n        }, this.commonHeaders())\n      }) //      .do(ajaxResponse => konsole.log(\"conversation ajaxResponse\", ajaxResponse.response))\n      .map(function (ajaxResponse) {\n        return ajaxResponse.response;\n      }).retryWhen(function (error$) {\n        return (// for now we deem 4xx and 5xx errors as unrecoverable\n          // for everything else (timeouts), retry for a while\n          error$.mergeMap(function (error) {\n            return error.status >= 400 && error.status < 600 ? _Observable.Observable[\"throw\"](error, _this2.services.scheduler) : _Observable.Observable.of(error, _this2.services.scheduler);\n          }).delay(_this2.timeout, _this2.services.scheduler).take(_this2.retries)\n        );\n      });\n    }\n  }, {\n    key: \"refreshTokenLoop\",\n    value: function refreshTokenLoop() {\n      var _this3 = this;\n\n      this.tokenRefreshSubscription = _Observable.Observable.interval(intervalRefreshToken, this.services.scheduler).flatMap(function (_) {\n        return _this3.refreshToken();\n      }).subscribe(function (token) {\n        konsole.log(\"refreshing token\", token, \"at\", new Date());\n        _this3.token = token;\n      });\n    }\n  }, {\n    key: \"refreshToken\",\n    value: function refreshToken() {\n      var _this4 = this;\n\n      return this.checkConnection(true).flatMap(function (_) {\n        return _this4.services.ajax({\n          method: \"POST\",\n          url: \"\".concat(_this4.domain, \"/tokens/refresh\"),\n          timeout: _this4.timeout,\n          headers: _objectSpread({}, _this4.commonHeaders())\n        }).map(function (ajaxResponse) {\n          return ajaxResponse.response.token;\n        }).retryWhen(function (error$) {\n          return error$.mergeMap(function (error) {\n            if (error.status === 403) {\n              // if the token is expired there's no reason to keep trying\n              _this4.expiredToken();\n\n              return _Observable.Observable[\"throw\"](error, _this4.services.scheduler);\n            } else if (error.status === 404) {\n              // If the bot is gone, we should stop retrying\n              return _Observable.Observable[\"throw\"](error, _this4.services.scheduler);\n            }\n\n            return _Observable.Observable.of(error, _this4.services.scheduler);\n          }).delay(_this4.timeout, _this4.services.scheduler).take(_this4.retries);\n        });\n      });\n    }\n  }, {\n    key: \"reconnect\",\n    value: function reconnect(conversation) {\n      this.token = conversation.token;\n      this.streamUrl = conversation.streamUrl;\n      if (this.connectionStatus$.getValue() === ConnectionStatus.ExpiredToken) this.connectionStatus$.next(ConnectionStatus.Online);\n    }\n  }, {\n    key: \"end\",\n    value: function end() {\n      if (this.tokenRefreshSubscription) this.tokenRefreshSubscription.unsubscribe();\n\n      try {\n        this.connectionStatus$.next(ConnectionStatus.Ended);\n      } catch (e) {\n        if (e === errorConversationEnded) return;\n        throw e;\n      }\n    }\n  }, {\n    key: \"getSessionId\",\n    value: function getSessionId() {\n      var _this5 = this;\n\n      // If we're not connected to the bot, get connected\n      // Will throw an error if we are not connected\n      konsole.log(\"getSessionId\");\n      return this.checkConnection(true).flatMap(function (_) {\n        return _this5.services.ajax({\n          method: \"GET\",\n          url: \"\".concat(_this5.domain, \"/session/getsessionid\"),\n          withCredentials: true,\n          timeout: _this5.timeout,\n          headers: _objectSpread({\n            \"Content-Type\": \"application/json\"\n          }, _this5.commonHeaders())\n        }).map(function (ajaxResponse) {\n          if (ajaxResponse && ajaxResponse.response && ajaxResponse.response.sessionId) {\n            konsole.log(\"getSessionId response: \" + ajaxResponse.response.sessionId);\n            return ajaxResponse.response.sessionId;\n          }\n\n          return '';\n        })[\"catch\"](function (error) {\n          konsole.log(\"getSessionId error: \" + error.status);\n          return _Observable.Observable.of('', _this5.services.scheduler);\n        });\n      })[\"catch\"](function (error) {\n        return _this5.catchExpiredToken(error);\n      });\n    }\n  }, {\n    key: \"postActivity\",\n    value: function postActivity(activity) {\n      var _this6 = this;\n\n      // If user id is set, check if it match activity.from.id and always override it in activity\n      if (this.userIdOnStartConversation && activity.from && activity.from.id !== this.userIdOnStartConversation) {\n        console.warn('DirectLineJS: Activity.from.id does not match with user id, ignoring activity.from.id');\n        activity.from.id = this.userIdOnStartConversation;\n      } // Use postMessageWithAttachments for messages with attachments that are local files (e.g. an image to upload)\n      // Technically we could use it for *all* activities, but postActivity is much lighter weight\n      // So, since WebChat is partially a reference implementation of Direct Line, we implement both.\n\n\n      if (activity.type === \"message\" && activity.attachments && activity.attachments.length > 0) return this.postMessageWithAttachments(activity); // If we're not connected to the bot, get connected\n      // Will throw an error if we are not connected\n\n      konsole.log(\"postActivity\", activity);\n      return this.checkConnection(true).flatMap(function (_) {\n        return _this6.services.ajax({\n          method: \"POST\",\n          url: \"\".concat(_this6.domain, \"/conversations/\").concat(_this6.conversationId, \"/activities\"),\n          body: activity,\n          timeout: _this6.timeout,\n          headers: _objectSpread({\n            \"Content-Type\": \"application/json\"\n          }, _this6.commonHeaders())\n        }).map(function (ajaxResponse) {\n          return ajaxResponse.response.id;\n        })[\"catch\"](function (error) {\n          return _this6.catchPostError(error);\n        });\n      })[\"catch\"](function (error) {\n        return _this6.catchExpiredToken(error);\n      });\n    }\n  }, {\n    key: \"postMessageWithAttachments\",\n    value: function postMessageWithAttachments(message) {\n      var _this7 = this;\n\n      var attachments = message.attachments; // We clean the attachments but making sure every attachment has unique name.\n      // If the file do not have a name, Chrome will assign \"blob\" when it is appended to FormData.\n\n      var attachmentNames = (0, _dedupeFilenames[\"default\"])(attachments.map(function (media) {\n        return media.name || 'blob';\n      }));\n      var cleansedAttachments = attachments.map(function (attachment, index) {\n        return _objectSpread(_objectSpread({}, attachment), {}, {\n          name: attachmentNames[index]\n        });\n      });\n      var formData; // If we're not connected to the bot, get connected\n      // Will throw an error if we are not connected\n\n      return this.checkConnection(true).flatMap(function (_) {\n        // To send this message to DirectLine we need to deconstruct it into a \"template\" activity\n        // and one blob for each attachment.\n        formData = new FormData();\n        formData.append('activity', new Blob([JSON.stringify(_objectSpread(_objectSpread({}, message), {}, {\n          // Removing contentUrl from attachment, we will send it via multipart\n          attachments: cleansedAttachments.map(function (_ref) {\n            var string = _ref.contentUrl,\n                others = (0, _objectWithoutProperties2[\"default\"])(_ref, _excluded);\n            return _objectSpread({}, others);\n          })\n        }))], {\n          type: 'application/vnd.microsoft.activity'\n        }));\n        return _Observable.Observable.from(cleansedAttachments, _this7.services.scheduler).flatMap(function (media) {\n          return _this7.services.ajax({\n            method: \"GET\",\n            url: media.contentUrl,\n            responseType: 'arraybuffer'\n          })[\"do\"](function (ajaxResponse) {\n            return formData.append('file', new Blob([ajaxResponse.response], {\n              type: media.contentType\n            }), media.name);\n          });\n        }).count();\n      }).flatMap(function (_) {\n        return _this7.services.ajax({\n          method: \"POST\",\n          url: \"\".concat(_this7.domain, \"/conversations/\").concat(_this7.conversationId, \"/upload?userId=\").concat(message.from.id),\n          body: formData,\n          timeout: _this7.timeout,\n          headers: _objectSpread({}, _this7.commonHeaders())\n        }).map(function (ajaxResponse) {\n          return ajaxResponse.response.id;\n        })[\"catch\"](function (error) {\n          return _this7.catchPostError(error);\n        });\n      })[\"catch\"](function (error) {\n        return _this7.catchPostError(error);\n      });\n    }\n  }, {\n    key: \"catchPostError\",\n    value: function catchPostError(error) {\n      if (error.status === 403) // token has expired (will fall through to return \"retry\")\n        this.expiredToken();else if (error.status >= 400 && error.status < 500) // more unrecoverable errors\n        return _Observable.Observable[\"throw\"](error, this.services.scheduler);\n      return _Observable.Observable.of(\"retry\", this.services.scheduler);\n    }\n  }, {\n    key: \"catchExpiredToken\",\n    value: function catchExpiredToken(error) {\n      return error === errorExpiredToken ? _Observable.Observable.of(\"retry\", this.services.scheduler) : _Observable.Observable[\"throw\"](error, this.services.scheduler);\n    }\n  }, {\n    key: \"pollingGetActivity$\",\n    value: function pollingGetActivity$() {\n      var _this8 = this;\n\n      var poller$ = _Observable.Observable.create(function (subscriber) {\n        // A BehaviorSubject to trigger polling. Since it is a BehaviorSubject\n        // the first event is produced immediately.\n        var trigger$ = new _BehaviorSubject.BehaviorSubject({}); // TODO: remove Date.now, use reactive interval to space out every request\n\n        trigger$.subscribe(function () {\n          if (_this8.connectionStatus$.getValue() === ConnectionStatus.Online) {\n            var startTimestamp = Date.now();\n\n            _this8.services.ajax({\n              headers: _objectSpread({\n                Accept: 'application/json'\n              }, _this8.commonHeaders()),\n              method: 'GET',\n              url: \"\".concat(_this8.domain, \"/conversations/\").concat(_this8.conversationId, \"/activities?watermark=\").concat(_this8.watermark),\n              timeout: _this8.timeout\n            }).subscribe(function (result) {\n              subscriber.next(result);\n              setTimeout(function () {\n                return trigger$.next(null);\n              }, Math.max(0, _this8.pollingInterval - Date.now() + startTimestamp));\n            }, function (error) {\n              switch (error.status) {\n                case 403:\n                  _this8.connectionStatus$.next(ConnectionStatus.ExpiredToken);\n\n                  setTimeout(function () {\n                    return trigger$.next(null);\n                  }, _this8.pollingInterval);\n                  break;\n\n                case 404:\n                  _this8.connectionStatus$.next(ConnectionStatus.Ended);\n\n                  break;\n\n                default:\n                  // propagate the error\n                  subscriber.error(error);\n                  break;\n              }\n            });\n          }\n        });\n      });\n\n      return this.checkConnection().flatMap(function (_) {\n        return poller$[\"catch\"](function () {\n          return _Observable.Observable.empty();\n        }).map(function (ajaxResponse) {\n          return ajaxResponse.response;\n        }).flatMap(function (activityGroup) {\n          return _this8.observableFromActivityGroup(activityGroup);\n        });\n      });\n    }\n  }, {\n    key: \"observableFromActivityGroup\",\n    value: function observableFromActivityGroup(activityGroup) {\n      if (activityGroup.watermark) this.watermark = activityGroup.watermark;\n      return _Observable.Observable.from(activityGroup.activities, this.services.scheduler);\n    }\n  }, {\n    key: \"webSocketActivity$\",\n    value: function webSocketActivity$() {\n      var _this9 = this;\n\n      return this.checkConnection().flatMap(function (_) {\n        return _this9.observableWebSocket() // WebSockets can be closed by the server or the browser. In the former case we need to\n        // retrieve a new streamUrl. In the latter case we could first retry with the current streamUrl,\n        // but it's simpler just to always fetch a new one.\n        .retryWhen(function (error$) {\n          return error$.delay(_this9.getRetryDelay(), _this9.services.scheduler).mergeMap(function (error) {\n            return _this9.reconnectToConversation();\n          });\n        });\n      }).flatMap(function (activityGroup) {\n        return _this9.observableFromActivityGroup(activityGroup);\n      });\n    } // Returns the delay duration in milliseconds\n\n  }, {\n    key: \"getRetryDelay\",\n    value: function getRetryDelay() {\n      return Math.floor(3000 + this.services.random() * 12000);\n    } // Originally we used Observable.webSocket, but it's fairly opinionated and I ended up writing\n    // a lot of code to work around their implementation details. Since WebChat is meant to be a reference\n    // implementation, I decided roll the below, where the logic is more purposeful. - @billba\n\n  }, {\n    key: \"observableWebSocket\",\n    value: function observableWebSocket() {\n      var _this10 = this;\n\n      return _Observable.Observable.create(function (subscriber) {\n        konsole.log(\"creating WebSocket\", _this10.streamUrl);\n        var ws = new _this10.services.WebSocket(_this10.streamUrl);\n        var sub;\n        var closed;\n\n        ws.onopen = function (open) {\n          konsole.log(\"WebSocket open\", open); // Chrome is pretty bad at noticing when a WebSocket connection is broken.\n          // If we periodically ping the server with empty messages, it helps Chrome\n          // realize when connection breaks, and close the socket. We then throw an\n          // error, and that give us the opportunity to attempt to reconnect.\n\n          sub = _Observable.Observable.interval(_this10.timeout, _this10.services.scheduler).subscribe(function (_) {\n            try {\n              ws.send(\"\");\n            } catch (e) {\n              konsole.log(\"Ping error\", e);\n            }\n          });\n        };\n\n        ws.onclose = function (close) {\n          konsole.log(\"WebSocket close\", close);\n          if (sub) sub.unsubscribe(); // RxJS.retryWhen has a bug that would cause \"error\" signal to be sent after the observable is completed/errored.\n          // We need to guard against extraneous \"error\" signal to workaround the bug.\n\n          closed || subscriber.error(close);\n          closed = true;\n        };\n\n        ws.onerror = function (error) {\n          konsole.log(\"WebSocket error\", error);\n          if (sub) sub.unsubscribe(); // RxJS.retryWhen has a bug that would cause \"error\" signal to be sent after the observable is completed/errored.\n          // We need to guard against extraneous \"error\" signal to workaround the bug.\n\n          closed || subscriber.error(error);\n          closed = true;\n        };\n\n        ws.onmessage = function (message) {\n          return message.data && subscriber.next(JSON.parse(message.data));\n        }; // This is the 'unsubscribe' method, which is called when this observable is disposed.\n        // When the WebSocket closes itself, we throw an error, and this function is eventually called.\n        // When the observable is closed first (e.g. when tearing down a WebChat instance) then\n        // we need to manually close the WebSocket.\n\n\n        return function () {\n          if (ws.readyState === 0 || ws.readyState === 1) ws.close();\n        };\n      });\n    }\n  }, {\n    key: \"reconnectToConversation\",\n    value: function reconnectToConversation() {\n      var _this11 = this;\n\n      return this.checkConnection(true).flatMap(function (_) {\n        return _this11.services.ajax({\n          method: \"GET\",\n          url: \"\".concat(_this11.domain, \"/conversations/\").concat(_this11.conversationId, \"?watermark=\").concat(_this11.watermark),\n          timeout: _this11.timeout,\n          headers: _objectSpread({\n            \"Accept\": \"application/json\"\n          }, _this11.commonHeaders())\n        })[\"do\"](function (result) {\n          if (!_this11.secret) _this11.token = result.response.token;\n          _this11.streamUrl = result.response.streamUrl;\n        }).map(function (_) {\n          return null;\n        }).retryWhen(function (error$) {\n          return error$.mergeMap(function (error) {\n            if (error.status === 403) {\n              // token has expired. We can't recover from this here, but the embedding\n              // website might eventually call reconnect() with a new token and streamUrl.\n              _this11.expiredToken();\n            } else if (error.status === 404) {\n              return _Observable.Observable[\"throw\"](errorConversationEnded, _this11.services.scheduler);\n            }\n\n            return _Observable.Observable.of(error, _this11.services.scheduler);\n          }).delay(_this11.timeout, _this11.services.scheduler).take(_this11.retries);\n        });\n      });\n    }\n  }, {\n    key: \"commonHeaders\",\n    value: function commonHeaders() {\n      return {\n        \"Authorization\": \"Bearer \".concat(this.token),\n        \"x-ms-bot-agent\": this._botAgent\n      };\n    }\n  }, {\n    key: \"getBotAgent\",\n    value: function getBotAgent() {\n      var customAgent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n      var clientAgent = 'directlinejs';\n\n      if (customAgent) {\n        clientAgent += \"; \".concat(customAgent);\n      }\n\n      return \"\".concat(DIRECT_LINE_VERSION, \" (\").concat(clientAgent, \" \").concat(\"0.15.5\", \")\");\n    }\n  }, {\n    key: \"setUserId\",\n    value: function setUserId(userId) {\n      if (this.connectionStatus$.getValue() === ConnectionStatus.Online) {\n        throw new Error('DirectLineJS: It is connected, we cannot set user id.');\n      }\n\n      var userIdFromToken = this.parseToken(this.token);\n\n      if (userIdFromToken) {\n        return console.warn('DirectLineJS: user id is already set in token, will ignore this user id.');\n      }\n\n      if (/^dl_/.test(userId)) {\n        return console.warn('DirectLineJS: user id prefixed with \"dl_\" is reserved and must be embedded into the Direct Line token to prevent forgery.');\n      }\n\n      this.userIdOnStartConversation = userId;\n    }\n  }, {\n    key: \"parseToken\",\n    value: function parseToken(token) {\n      try {\n        var _ref2 = (0, _jwtDecode[\"default\"])(token),\n            user = _ref2.user;\n\n        return user;\n      } catch (e) {\n        if (e instanceof _jwtDecode.InvalidTokenError) {\n          return undefined;\n        }\n      }\n    }\n  }]);\n  return DirectLine;\n}();\n\nexports.DirectLine = DirectLine;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9kaXJlY3RMaW5lLnRzIl0sIm5hbWVzIjpbIkRJUkVDVF9MSU5FX1ZFUlNJT04iLCJDb25uZWN0aW9uU3RhdHVzIiwid3JhcEFqYXhXaXRoUmV0cnkiLCJzb3VyY2UiLCJzY2hlZHVsZXIiLCJub3RJbXBsZW1lbnRlZCIsIkVycm9yIiwiaW5uZXIiLCJyZXNwb25zZSQiLCJlcnIiLCJzdGF0dXMiLCJyZXRyeUFmdGVyVmFsdWUiLCJ4aHIiLCJnZXRSZXNwb25zZUhlYWRlciIsInJldHJ5QWZ0ZXIiLCJOdW1iZXIiLCJpc05hTiIsIk9ic2VydmFibGUiLCJ0aW1lciIsImZsYXRNYXAiLCJfIiwib3V0ZXIiLCJ1cmxPclJlcXVlc3QiLCJPYmplY3QiLCJhc3NpZ24iLCJnZXQiLCJ1cmwiLCJoZWFkZXJzIiwicG9zdCIsImJvZHkiLCJwdXQiLCJwYXRjaCIsImdldEpTT04iLCJtYWtlU2VydmljZXMiLCJzZXJ2aWNlcyIsIkFzeW5jU2NoZWR1bGVyIiwiYWpheCIsIldlYlNvY2tldCIsInJhbmRvbSIsIk1hdGgiLCJsaWZldGltZVJlZnJlc2hUb2tlbiIsImludGVydmFsUmVmcmVzaFRva2VuIiwiUE9MTElOR19JTlRFUlZBTF9MT1dFUl9CT1VORCIsImVycm9yRXhwaXJlZFRva2VuIiwiZXJyb3JDb252ZXJzYXRpb25FbmRlZCIsImVycm9yRmFpbGVkVG9Db25uZWN0Iiwia29uc29sZSIsImxvZyIsIm1lc3NhZ2UiLCJvcHRpb25hbFBhcmFtcyIsIndpbmRvdyIsImNvbnNvbGUiLCJEaXJlY3RMaW5lIiwib3B0aW9ucyIsIkJlaGF2aW9yU3ViamVjdCIsIlVuaW5pdGlhbGl6ZWQiLCJzZWNyZXQiLCJ0b2tlbiIsIndlYlNvY2tldCIsInVuZGVmaW5lZCIsImNvbnZlcnNhdGlvblN0YXJ0UHJvcGVydGllcyIsImxvY2FsZSIsInByb3RvdHlwZSIsInRvU3RyaW5nIiwiY2FsbCIsImxvY2FsZU9uU3RhcnRDb252ZXJzYXRpb24iLCJ3YXJuIiwiZG9tYWluIiwiY29udmVyc2F0aW9uSWQiLCJ3YXRlcm1hcmsiLCJzdHJlYW1VcmwiLCJ0aW1lb3V0IiwicmV0cmllcyIsIl9ib3RBZ2VudCIsImdldEJvdEFnZW50IiwiYm90QWdlbnQiLCJwYXJzZWRQb2xsaW5nSW50ZXJ2YWwiLCJwb2xsaW5nSW50ZXJ2YWwiLCJleHBpcmVkVG9rZW5FeGhhdXN0aW9uIiwic2V0Q29ubmVjdGlvblN0YXR1c0ZhbGxiYWNrIiwiRXhwaXJlZFRva2VuIiwiRmFpbGVkVG9Db25uZWN0IiwiYWN0aXZpdHkkIiwid2ViU29ja2V0QWN0aXZpdHkkIiwicG9sbGluZ0dldEFjdGl2aXR5JCIsInNoYXJlIiwib25jZSIsIm9icyIsImNvbm5lY3Rpb25TdGF0dXMkIiwiY29ubmVjdGlvblN0YXR1cyIsIm5leHQiLCJDb25uZWN0aW5nIiwiT25saW5lIiwib2YiLCJzdGFydENvbnZlcnNhdGlvbiIsImNvbnZlcnNhdGlvbiIsInJlZmVyZW5jZUdyYW1tYXJJZCIsInJlZnJlc2hUb2tlbkxvb3AiLCJlcnJvciIsIm1hcCIsImZpbHRlciIsIkVuZGVkIiwidGFrZSIsImNvbm5lY3Rpb25TdGF0dXNGcm9tIiwiY29ubmVjdGlvblN0YXR1c1RvIiwibWF4QXR0ZW1wdHMiLCJhdHRlbXB0cyIsImN1cnJTdGF0dXMiLCJnZXRWYWx1ZSIsInByb3RlY3RlZENvbm5lY3Rpb25TdGF0dXMiLCJtZXRob2QiLCJ1c2VyIiwiaWQiLCJ1c2VySWRPblN0YXJ0Q29udmVyc2F0aW9uIiwiY29tbW9uSGVhZGVycyIsImFqYXhSZXNwb25zZSIsInJlc3BvbnNlIiwicmV0cnlXaGVuIiwiZXJyb3IkIiwibWVyZ2VNYXAiLCJkZWxheSIsInRva2VuUmVmcmVzaFN1YnNjcmlwdGlvbiIsImludGVydmFsIiwicmVmcmVzaFRva2VuIiwic3Vic2NyaWJlIiwiRGF0ZSIsImNoZWNrQ29ubmVjdGlvbiIsImV4cGlyZWRUb2tlbiIsInVuc3Vic2NyaWJlIiwiZSIsIndpdGhDcmVkZW50aWFscyIsInNlc3Npb25JZCIsImNhdGNoRXhwaXJlZFRva2VuIiwiYWN0aXZpdHkiLCJmcm9tIiwidHlwZSIsImF0dGFjaG1lbnRzIiwibGVuZ3RoIiwicG9zdE1lc3NhZ2VXaXRoQXR0YWNobWVudHMiLCJjYXRjaFBvc3RFcnJvciIsImF0dGFjaG1lbnROYW1lcyIsIm1lZGlhIiwibmFtZSIsImNsZWFuc2VkQXR0YWNobWVudHMiLCJhdHRhY2htZW50IiwiaW5kZXgiLCJmb3JtRGF0YSIsIkZvcm1EYXRhIiwiYXBwZW5kIiwiQmxvYiIsIkpTT04iLCJzdHJpbmdpZnkiLCJzdHJpbmciLCJjb250ZW50VXJsIiwib3RoZXJzIiwicmVzcG9uc2VUeXBlIiwiY29udGVudFR5cGUiLCJjb3VudCIsInBvbGxlciQiLCJjcmVhdGUiLCJzdWJzY3JpYmVyIiwidHJpZ2dlciQiLCJzdGFydFRpbWVzdGFtcCIsIm5vdyIsIkFjY2VwdCIsInJlc3VsdCIsInNldFRpbWVvdXQiLCJtYXgiLCJlbXB0eSIsImFjdGl2aXR5R3JvdXAiLCJvYnNlcnZhYmxlRnJvbUFjdGl2aXR5R3JvdXAiLCJhY3Rpdml0aWVzIiwib2JzZXJ2YWJsZVdlYlNvY2tldCIsImdldFJldHJ5RGVsYXkiLCJyZWNvbm5lY3RUb0NvbnZlcnNhdGlvbiIsImZsb29yIiwid3MiLCJzdWIiLCJjbG9zZWQiLCJvbm9wZW4iLCJvcGVuIiwic2VuZCIsIm9uY2xvc2UiLCJjbG9zZSIsIm9uZXJyb3IiLCJvbm1lc3NhZ2UiLCJkYXRhIiwicGFyc2UiLCJyZWFkeVN0YXRlIiwiY3VzdG9tQWdlbnQiLCJjbGllbnRBZ2VudCIsInVzZXJJZCIsInVzZXJJZEZyb21Ub2tlbiIsInBhcnNlVG9rZW4iLCJ0ZXN0IiwiSW52YWxpZFRva2VuRXJyb3IiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFJQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFD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QUNIOzs7V0FFRCxtQkFBVUMsTUFBVixFQUEwQjtBQUN0QixVQUFJLEtBQUt2RyxpQkFBTCxDQUF1Qm9CLFFBQXZCLE9BQXNDM0csZ0JBQWdCLENBQUMyRixNQUEzRCxFQUFtRTtBQUMvRCxjQUFNLElBQUl0RixLQUFKLENBQVUsdURBQVYsQ0FBTjtBQUNIOztBQUVELFVBQU0wTCxlQUFlLEdBQUcsS0FBS0MsVUFBTCxDQUFnQixLQUFLeEksS0FBckIsQ0FBeEI7O0FBQ0EsVUFBSXVJLGVBQUosRUFBcUI7QUFDakIsZUFBTzdJLE9BQU8sQ0FBQ2UsSUFBUixDQUFhLDBFQUFiLENBQVA7QUFDSDs7QUFFRCxVQUFJLE9BQVFnSSxJQUFSLENBQWFILE1BQWIsQ0FBSixFQUEwQjtBQUN0QixlQUFPNUksT0FBTyxDQUFDZSxJQUFSLENBQWEsMkhBQWIsQ0FBUDtBQUNIOztBQUVELFdBQUsrQyx5QkFBTCxHQUFpQzhFLE1BQWpDO0FBQ0g7OztXQUVELG9CQUFtQnRJLEtBQW5CLEVBQWtDO0FBQzlCLFVBQUk7QUFDQSxvQkFBaUIsMkJBQXNCQSxLQUF0QixDQUFqQjtBQUFBLFlBQVFzRCxJQUFSLFNBQVFBLElBQVI7O0FBQ0EsZUFBT0EsSUFBUDtBQUNILE9BSEQsQ0FHRSxPQUFPa0IsQ0FBUCxFQUFVO0FBQ1IsWUFBSUEsQ0FBQyxZQUFZa0UsNEJBQWpCLEVBQW9DO0FBQ2hDLGlCQUFPeEksU0FBUDtBQUNIO0FBQ0o7QUFDSiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEluIG9yZGVyIHRvIGtlZXAgZmlsZSBzaXplIGRvd24sIG9ubHkgaW1wb3J0IHRoZSBwYXJ0cyBvZiByeGpzIHRoYXQgd2UgdXNlXG5cbmltcG9ydCAnY29yZS1qcy9mZWF0dXJlcy9wcm9taXNlJztcbmltcG9ydCAndXJsLXNlYXJjaC1wYXJhbXMtcG9seWZpbGwnO1xuaW1wb3J0IHsgQWpheFJlc3BvbnNlLCBBamF4Q3JlYXRpb25NZXRob2QsIEFqYXhSZXF1ZXN0LCBBamF4RXJyb3IgfSBmcm9tICdyeGpzL29ic2VydmFibGUvZG9tL0FqYXhPYnNlcnZhYmxlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMvQmVoYXZpb3JTdWJqZWN0JztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzL09ic2VydmFibGUnO1xuaW1wb3J0IHsgSVNjaGVkdWxlciB9IGZyb20gJ3J4anMvU2NoZWR1bGVyJztcbmltcG9ydCB7IFN1YnNjcmliZXIgfSBmcm9tICdyeGpzL1N1YnNjcmliZXInO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcy9TdWJzY3JpcHRpb24nO1xuaW1wb3J0IHsgYXN5bmMgYXMgQXN5bmNTY2hlZHVsZXIgfSBmcm9tICdyeGpzL3NjaGVkdWxlci9hc3luYyc7XG5pbXBvcnQgand0RGVjb2RlLCB7IEp3dFBheWxvYWQsIEludmFsaWRUb2tlbkVycm9yIH0gZnJvbSAnand0LWRlY29kZSc7XG5cbmltcG9ydCAncnhqcy9hZGQvb3BlcmF0b3IvY2F0Y2gnO1xuaW1wb3J0ICdyeGpzL2FkZC9vcGVyYXRvci9jb21iaW5lTGF0ZXN0JztcbmltcG9ydCAncnhqcy9hZGQvb3BlcmF0b3IvY291bnQnO1xuaW1wb3J0ICdyeGpzL2FkZC9vcGVyYXRvci9kZWxheSc7XG5pbXBvcnQgJ3J4anMvYWRkL29wZXJhdG9yL2RvJztcbmltcG9ydCAncnhqcy9hZGQvb3BlcmF0b3IvZmlsdGVyJztcbmltcG9ydCAncnhqcy9hZGQvb3BlcmF0b3IvbWFwJztcbmltcG9ydCAncnhqcy9hZGQvb3BlcmF0b3IvbWVyZ2VNYXAnO1xuaW1wb3J0ICdyeGpzL2FkZC9vcGVyYXRvci9jb25jYXRNYXAnO1xuaW1wb3J0ICdyeGpzL2FkZC9vcGVyYXRvci9yZXRyeVdoZW4nO1xuaW1wb3J0ICdyeGpzL2FkZC9vcGVyYXRvci9zaGFyZSc7XG5pbXBvcnQgJ3J4anMvYWRkL29wZXJhdG9yL3Rha2UnO1xuXG5pbXBvcnQgJ3J4anMvYWRkL29ic2VydmFibGUvZG9tL2FqYXgnO1xuaW1wb3J0ICdyeGpzL2FkZC9vYnNlcnZhYmxlL2VtcHR5JztcbmltcG9ydCAncnhqcy9hZGQvb2JzZXJ2YWJsZS9mcm9tJztcbmltcG9ydCAncnhqcy9hZGQvb2JzZXJ2YWJsZS9pbnRlcnZhbCc7XG5pbXBvcnQgJ3J4anMvYWRkL29ic2VydmFibGUvb2YnO1xuaW1wb3J0ICdyeGpzL2FkZC9vYnNlcnZhYmxlL3Rocm93JztcblxuaW1wb3J0IGRlZHVwZUZpbGVuYW1lcyBmcm9tICcuL2RlZHVwZUZpbGVuYW1lcyc7XG5pbXBvcnQgeyBvYmplY3RFeHByZXNzaW9uIH0gZnJvbSAnQGJhYmVsL3R5cGVzJztcblxuaW1wb3J0IHsgRGlyZWN0TGluZVN0cmVhbWluZyB9IGZyb20gJy4vZGlyZWN0TGluZVN0cmVhbWluZyc7XG5leHBvcnQgeyBEaXJlY3RMaW5lU3RyZWFtaW5nIH07XG5cbmNvbnN0IERJUkVDVF9MSU5FX1ZFUlNJT04gPSAnRGlyZWN0TGluZS8zLjAnO1xuXG5kZWNsYXJlIHZhciBwcm9jZXNzOiB7XG4gICAgYXJjaDogc3RyaW5nO1xuICAgIGVudjoge1xuICAgICAgICBWRVJTSU9OOiBzdHJpbmc7XG4gICAgICAgIG5wbV9wYWNrYWdlX3ZlcnNpb246IHN0cmluZztcbiAgICB9O1xuICAgIHBsYXRmb3JtOiBzdHJpbmc7XG4gICAgcmVsZWFzZTogc3RyaW5nO1xuICAgIHZlcnNpb246IHN0cmluZztcbn07XG5cbi8vIERpcmVjdCBMaW5lIDMuMCB0eXBlc1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbnZlcnNhdGlvbiB7XG4gICAgY29udmVyc2F0aW9uSWQ6IHN0cmluZyxcbiAgICB0b2tlbjogc3RyaW5nLFxuICAgIGVUYWc/OiBzdHJpbmcsXG4gICAgc3RyZWFtVXJsPzogc3RyaW5nLFxuICAgIHJlZmVyZW5jZUdyYW1tYXJJZD86IHN0cmluZ1xufVxuXG5leHBvcnQgdHlwZSBNZWRpYVR5cGUgPSBcImltYWdlL3BuZ1wiIHwgXCJpbWFnZS9qcGdcIiB8IFwiaW1hZ2UvanBlZ1wiIHwgXCJpbWFnZS9naWZcIiB8IFwiaW1hZ2Uvc3ZnK3htbFwiIHwgXCJhdWRpby9tcGVnXCIgfCBcImF1ZGlvL21wNFwiIHwgXCJ2aWRlby9tcDRcIjtcblxuZXhwb3J0IGludGVyZmFjZSBNZWRpYSB7XG4gICAgY29udGVudFR5cGU6IE1lZGlhVHlwZSxcbiAgICBjb250ZW50VXJsOiBzdHJpbmcsXG4gICAgbmFtZT86IHN0cmluZyxcbiAgICB0aHVtYm5haWxVcmw/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVbmtub3duTWVkaWF7XG4gICAgY29udGVudFR5cGU6IHN0cmluZyxcbiAgICBjb250ZW50VXJsOiBzdHJpbmcsXG4gICAgbmFtZT86IHN0cmluZyxcbiAgICB0aHVtYm5haWxVcmw/OiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgQ2FyZEFjdGlvblR5cGVzID0gXCJjYWxsXCIgfCBcImRvd25sb2FkRmlsZVwifCBcImltQmFja1wiIHwgXCJtZXNzYWdlQmFja1wiIHwgXCJvcGVuVXJsXCIgfCBcInBsYXlBdWRpb1wiIHwgXCJwbGF5VmlkZW9cIiB8IFwicG9zdEJhY2tcIiB8IFwic2lnbmluXCIgfCBcInNob3dJbWFnZVwiO1xuXG5leHBvcnQgdHlwZSBDYXJkQWN0aW9uID0gQ2FsbENhcmRBY3Rpb24gfCBEb3dubG9hZEZpbGVDYXJkQWN0aW9uIHwgSU1CYWNrQ2FyZEFjdGlvbiB8IE1lc3NhZ2VCYWNrQ2FyZEFjdGlvbiB8IE9wZW5VUkxDYXJkQWN0aW9uIHwgUGxheUF1ZGlvQ2FyZEFjdGlvbiB8IFBsYXlWaWRlb0NhcmRBY3Rpb24gfCBQb3N0QmFja0NhcmRBY3Rpb24gfCBTaWduSW5DYXJkQWN0aW9uIHwgU2hvd0ltYWdlQ2FyZEFjdGlvbjtcblxuZXhwb3J0IGludGVyZmFjZSBDYWxsQ2FyZEFjdGlvbiB7XG4gICAgaW1hZ2U/OiBzdHJpbmcsXG4gICAgdGl0bGU6IHN0cmluZyxcbiAgICB0eXBlOiBcImNhbGxcIixcbiAgICB2YWx1ZTogYW55XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRG93bmxvYWRGaWxlQ2FyZEFjdGlvbiB7XG4gICAgaW1hZ2U/OiBzdHJpbmcsXG4gICAgdGl0bGU6IHN0cmluZyxcbiAgICB0eXBlOiBcImRvd25sb2FkRmlsZVwiLFxuICAgIHZhbHVlOiBhbnlcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTUJhY2tDYXJkQWN0aW9uIHtcbiAgICBpbWFnZT86IHN0cmluZyxcbiAgICB0aXRsZT86IHN0cmluZyxcbiAgICB0eXBlOiBcImltQmFja1wiLFxuICAgIHZhbHVlOiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgTWVzc2FnZUJhY2tDYXJkQWN0aW9uID0gTWVzc2FnZUJhY2tXaXRoSW1hZ2UgfCBNZXNzYWdlQmFja1dpdGhUaXRsZVxuXG5leHBvcnQgaW50ZXJmYWNlIE1lc3NhZ2VCYWNrV2l0aEltYWdlIHtcbiAgICBkaXNwbGF5VGV4dD86IHN0cmluZyxcbiAgICBpbWFnZTogc3RyaW5nLFxuICAgIHRleHQ/OiBzdHJpbmcsXG4gICAgdGl0bGU/OiBzdHJpbmcsXG4gICAgdHlwZTogXCJtZXNzYWdlQmFja1wiLFxuICAgIHZhbHVlPzogYW55XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWVzc2FnZUJhY2tXaXRoVGl0bGUge1xuICAgIGRpc3BsYXlUZXh0Pzogc3RyaW5nLFxuICAgIGltYWdlPzogc3RyaW5nLFxuICAgIHRleHQ/OiBzdHJpbmcsXG4gICAgdGl0bGU6IHN0cmluZyxcbiAgICB0eXBlOiBcIm1lc3NhZ2VCYWNrXCIsXG4gICAgdmFsdWU/OiBhbnlcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPcGVuVVJMQ2FyZEFjdGlvbiB7XG4gICAgaW1hZ2U/OiBzdHJpbmcsXG4gICAgdGl0bGU6IHN0cmluZyxcbiAgICB0eXBlOiBcIm9wZW5VcmxcIixcbiAgICB2YWx1ZTogYW55XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGxheUF1ZGlvQ2FyZEFjdGlvbiB7XG4gICAgaW1hZ2U/OiBzdHJpbmcsXG4gICAgdGl0bGU6IHN0cmluZyxcbiAgICB0eXBlOiBcInBsYXlBdWRpb1wiLFxuICAgIHZhbHVlOiBhbnlcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQbGF5VmlkZW9DYXJkQWN0aW9uIHtcbiAgICBpbWFnZT86IHN0cmluZyxcbiAgICB0aXRsZTogc3RyaW5nLFxuICAgIHR5cGU6IFwicGxheVZpZGVvXCIsXG4gICAgdmFsdWU6IGFueVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBvc3RCYWNrQ2FyZEFjdGlvbiB7XG4gICAgaW1hZ2U/OiBzdHJpbmcsXG4gICAgdGl0bGU/OiBzdHJpbmcsXG4gICAgdHlwZTogXCJwb3N0QmFja1wiLFxuICAgIHZhbHVlOiBhbnlcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaG93SW1hZ2VDYXJkQWN0aW9uIHtcbiAgICBpbWFnZT86IHN0cmluZyxcbiAgICB0aXRsZTogc3RyaW5nLFxuICAgIHR5cGU6IFwic2hvd0ltYWdlXCIsXG4gICAgdmFsdWU6IGFueVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNpZ25JbkNhcmRBY3Rpb24ge1xuICAgIGltYWdlPzogc3RyaW5nLFxuICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgdHlwZTogXCJzaWduaW5cIixcbiAgICB2YWx1ZTogYW55XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2FyZEltYWdlIHtcbiAgICBhbHQ/OiBzdHJpbmcsXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgdGFwPzogQ2FyZEFjdGlvblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEhlcm9DYXJkIHtcbiAgICBjb250ZW50VHlwZTogXCJhcHBsaWNhdGlvbi92bmQubWljcm9zb2Z0LmNhcmQuaGVyb1wiLFxuICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgdGl0bGU/OiBzdHJpbmcsXG4gICAgICAgIHN1YnRpdGxlPzogc3RyaW5nLFxuICAgICAgICB0ZXh0Pzogc3RyaW5nLFxuICAgICAgICBpbWFnZXM/OiBDYXJkSW1hZ2VbXSxcbiAgICAgICAgYnV0dG9ucz86IENhcmRBY3Rpb25bXSxcbiAgICAgICAgdGFwPzogQ2FyZEFjdGlvblxuICAgIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBUaHVtYm5haWwge1xuICAgIGNvbnRlbnRUeXBlOiBcImFwcGxpY2F0aW9uL3ZuZC5taWNyb3NvZnQuY2FyZC50aHVtYm5haWxcIixcbiAgICBjb250ZW50OiB7XG4gICAgICAgIHRpdGxlPzogc3RyaW5nLFxuICAgICAgICBzdWJ0aXRsZT86IHN0cmluZyxcbiAgICAgICAgdGV4dD86IHN0cmluZyxcbiAgICAgICAgaW1hZ2VzPzogQ2FyZEltYWdlW10sXG4gICAgICAgIGJ1dHRvbnM/OiBDYXJkQWN0aW9uW10sXG4gICAgICAgIHRhcD86IENhcmRBY3Rpb25cbiAgICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2lnbmluIHtcbiAgICBjb250ZW50VHlwZTogXCJhcHBsaWNhdGlvbi92bmQubWljcm9zb2Z0LmNhcmQuc2lnbmluXCIsXG4gICAgY29udGVudDoge1xuICAgICAgICB0ZXh0Pzogc3RyaW5nLFxuICAgICAgICBidXR0b25zPzogQ2FyZEFjdGlvbltdXG4gICAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9BdXRoIHtcbiAgICBjb250ZW50VHlwZTogXCJhcHBsaWNhdGlvbi92bmQubWljcm9zb2Z0LmNhcmQub2F1dGhcIixcbiAgICBjb250ZW50OiB7XG4gICAgICAgIHRleHQ/OiBzdHJpbmcsXG4gICAgICAgIGNvbm5lY3Rpb25uYW1lOiBzdHJpbmcsXG4gICAgICAgIGJ1dHRvbnM/OiBDYXJkQWN0aW9uW11cbiAgICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVjZWlwdEl0ZW0ge1xuICAgIHRpdGxlPzogc3RyaW5nLFxuICAgIHN1YnRpdGxlPzogc3RyaW5nLFxuICAgIHRleHQ/OiBzdHJpbmcsXG4gICAgaW1hZ2U/OiBDYXJkSW1hZ2UsXG4gICAgcHJpY2U/OiBzdHJpbmcsXG4gICAgcXVhbnRpdHk/OiBzdHJpbmcsXG4gICAgdGFwPzogQ2FyZEFjdGlvblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlY2VpcHQge1xuICAgIGNvbnRlbnRUeXBlOiBcImFwcGxpY2F0aW9uL3ZuZC5taWNyb3NvZnQuY2FyZC5yZWNlaXB0XCIsXG4gICAgY29udGVudDoge1xuICAgICAgICB0aXRsZT86IHN0cmluZyxcbiAgICAgICAgZmFjdHM/OiB7IGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIH1bXSxcbiAgICAgICAgaXRlbXM/OiBSZWNlaXB0SXRlbVtdLFxuICAgICAgICB0YXA/OiBDYXJkQWN0aW9uLFxuICAgICAgICB0YXg/OiBzdHJpbmcsXG4gICAgICAgIHZhdD86IHN0cmluZyxcbiAgICAgICAgdG90YWw/OiBzdHJpbmcsXG4gICAgICAgIGJ1dHRvbnM/OiBDYXJkQWN0aW9uW11cbiAgICB9XG59XG5cbi8vIERlcHJlY2F0ZWQgZm9ybWF0IGZvciBTa3lwZSBjaGFubmVscy4gRm9yIHRlc3RpbmcgbGVnYWN5IGJvdHMgaW4gRW11bGF0b3Igb25seS5cbmV4cG9ydCBpbnRlcmZhY2UgRmxleENhcmQge1xuICAgIGNvbnRlbnRUeXBlOiBcImFwcGxpY2F0aW9uL3ZuZC5taWNyb3NvZnQuY2FyZC5mbGV4XCIsXG4gICAgY29udGVudDoge1xuICAgICAgICB0aXRsZT86IHN0cmluZyxcbiAgICAgICAgc3VidGl0bGU/OiBzdHJpbmcsXG4gICAgICAgIHRleHQ/OiBzdHJpbmcsXG4gICAgICAgIGltYWdlcz86IENhcmRJbWFnZVtdLFxuICAgICAgICBidXR0b25zPzogQ2FyZEFjdGlvbltdLFxuICAgICAgICBhc3BlY3Q/OiBzdHJpbmdcbiAgICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXVkaW9DYXJkIHtcbiAgICBjb250ZW50VHlwZTogXCJhcHBsaWNhdGlvbi92bmQubWljcm9zb2Z0LmNhcmQuYXVkaW9cIixcbiAgICBjb250ZW50OiB7XG4gICAgICAgIHRpdGxlPzogc3RyaW5nLFxuICAgICAgICBzdWJ0aXRsZT86IHN0cmluZyxcbiAgICAgICAgdGV4dD86IHN0cmluZyxcbiAgICAgICAgbWVkaWE/OiB7IHVybDogc3RyaW5nLCBwcm9maWxlPzogc3RyaW5nIH1bXSxcbiAgICAgICAgYnV0dG9ucz86IENhcmRBY3Rpb25bXSxcbiAgICAgICAgYXV0b2xvb3A/OiBib29sZWFuLFxuICAgICAgICBhdXRvc3RhcnQ/OiBib29sZWFuXG4gICAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZpZGVvQ2FyZCB7XG4gICAgY29udGVudFR5cGU6IFwiYXBwbGljYXRpb24vdm5kLm1pY3Jvc29mdC5jYXJkLnZpZGVvXCIsXG4gICAgY29udGVudDoge1xuICAgICAgICB0aXRsZT86IHN0cmluZyxcbiAgICAgICAgc3VidGl0bGU/OiBzdHJpbmcsXG4gICAgICAgIHRleHQ/OiBzdHJpbmcsXG4gICAgICAgIG1lZGlhPzogeyB1cmw6IHN0cmluZywgcHJvZmlsZT86IHN0cmluZyB9W10sXG4gICAgICAgIGJ1dHRvbnM/OiBDYXJkQWN0aW9uW10sXG4gICAgICAgIGltYWdlPzogeyB1cmw6IHN0cmluZywgYWx0Pzogc3RyaW5nIH0sXG4gICAgICAgIGF1dG9sb29wPzogYm9vbGVhbixcbiAgICAgICAgYXV0b3N0YXJ0PzogYm9vbGVhblxuICAgIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBBZGFwdGl2ZUNhcmQge1xuICAgIGNvbnRlbnRUeXBlOiBcImFwcGxpY2F0aW9uL3ZuZC5taWNyb3NvZnQuY2FyZC5hZGFwdGl2ZVwiLFxuICAgIGNvbnRlbnQ6IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBbmltYXRpb25DYXJkIHtcbiAgICBjb250ZW50VHlwZTogXCJhcHBsaWNhdGlvbi92bmQubWljcm9zb2Z0LmNhcmQuYW5pbWF0aW9uXCIsXG4gICAgY29udGVudDoge1xuICAgICAgICB0aXRsZT86IHN0cmluZyxcbiAgICAgICAgc3VidGl0bGU/OiBzdHJpbmcsXG4gICAgICAgIHRleHQ/OiBzdHJpbmcsXG4gICAgICAgIG1lZGlhPzogeyB1cmw6IHN0cmluZywgcHJvZmlsZT86IHN0cmluZyB9W10sXG4gICAgICAgIGJ1dHRvbnM/OiBDYXJkQWN0aW9uW10sXG4gICAgICAgIGltYWdlPzogeyB1cmw6IHN0cmluZywgYWx0Pzogc3RyaW5nIH0sXG4gICAgICAgIGF1dG9sb29wPzogYm9vbGVhbixcbiAgICAgICAgYXV0b3N0YXJ0PzogYm9vbGVhblxuICAgIH1cbn1cblxuZXhwb3J0IHR5cGUgS25vd25NZWRpYSA9IE1lZGlhIHwgSGVyb0NhcmQgfCBUaHVtYm5haWwgfCBTaWduaW4gfCBPQXV0aCB8IFJlY2VpcHQgfCBBdWRpb0NhcmQgfCBWaWRlb0NhcmQgfCBBbmltYXRpb25DYXJkIHwgRmxleENhcmQgfCBBZGFwdGl2ZUNhcmQ7XG5leHBvcnQgdHlwZSBBdHRhY2htZW50ID0gS25vd25NZWRpYSB8IFVua25vd25NZWRpYTtcblxuZXhwb3J0IHR5cGUgVXNlclJvbGUgPSBcImJvdFwiIHwgXCJjaGFubmVsXCIgfCBcInVzZXJcIjtcblxuZXhwb3J0IGludGVyZmFjZSBVc2VyIHtcbiAgICBpZDogc3RyaW5nLFxuICAgIG5hbWU/OiBzdHJpbmcsXG4gICAgaWNvblVybD86IHN0cmluZyxcbiAgICByb2xlPzogVXNlclJvbGVcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQWN0aXZpdHkge1xuICAgIHR5cGU6IHN0cmluZyxcbiAgICBjaGFubmVsRGF0YT86IGFueSxcbiAgICBjaGFubmVsSWQ/OiBzdHJpbmcsXG4gICAgY29udmVyc2F0aW9uPzogeyBpZDogc3RyaW5nIH0sXG4gICAgZVRhZz86IHN0cmluZyxcbiAgICBmcm9tOiBVc2VyLFxuICAgIGlkPzogc3RyaW5nLFxuICAgIHRpbWVzdGFtcD86IHN0cmluZ1xufVxuXG5leHBvcnQgdHlwZSBBdHRhY2htZW50TGF5b3V0ID0gXCJsaXN0XCIgfCBcImNhcm91c2VsXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWVzc2FnZSBleHRlbmRzIElBY3Rpdml0eSB7XG4gICAgdHlwZTogXCJtZXNzYWdlXCIsXG4gICAgdGV4dD86IHN0cmluZyxcbiAgICBsb2NhbGU/OiBzdHJpbmcsXG4gICAgdGV4dEZvcm1hdD86IFwicGxhaW5cIiB8IFwibWFya2Rvd25cIiB8IFwieG1sXCIsXG4gICAgYXR0YWNobWVudExheW91dD86IEF0dGFjaG1lbnRMYXlvdXQsXG4gICAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50W10sXG4gICAgZW50aXRpZXM/OiBhbnlbXSxcbiAgICBzdWdnZXN0ZWRBY3Rpb25zPzogeyBhY3Rpb25zOiBDYXJkQWN0aW9uW10sIHRvPzogc3RyaW5nW10gfSxcbiAgICBzcGVhaz86IHN0cmluZyxcbiAgICBpbnB1dEhpbnQ/OiBzdHJpbmcsXG4gICAgdmFsdWU/OiBvYmplY3Rcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUeXBpbmcgZXh0ZW5kcyBJQWN0aXZpdHkge1xuICAgIHR5cGU6IFwidHlwaW5nXCJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFdmVudEFjdGl2aXR5IGV4dGVuZHMgSUFjdGl2aXR5IHtcbiAgICB0eXBlOiBcImV2ZW50XCIsXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIHZhbHVlOiBhbnlcbn1cblxuZXhwb3J0IHR5cGUgQWN0aXZpdHkgPSBNZXNzYWdlIHwgVHlwaW5nIHwgRXZlbnRBY3Rpdml0eTtcblxuZXhwb3J0IGludGVyZmFjZSBBY3Rpdml0eUdyb3VwIHtcbiAgICBhY3Rpdml0aWVzOiBBY3Rpdml0eVtdLFxuICAgIHdhdGVybWFyazogc3RyaW5nXG59XG5cbi8vIFRoZXNlIHR5cGVzIGFyZSBzcGVjaWZpYyB0byB0aGlzIGNsaWVudCBsaWJyYXJ5LCBub3QgdG8gRGlyZWN0IExpbmUgMy4wXG5cbmV4cG9ydCBlbnVtIENvbm5lY3Rpb25TdGF0dXMge1xuICAgIFVuaW5pdGlhbGl6ZWQsICAgICAgICAgICAgICAvLyB0aGUgc3RhdHVzIHdoZW4gdGhlIERpcmVjdExpbmUgb2JqZWN0IGlzIGZpcnN0IGNyZWF0ZWQvY29uc3RydWN0ZWRcbiAgICBDb25uZWN0aW5nLCAgICAgICAgICAgICAgICAgLy8gY3VycmVudGx5IHRyeWluZyB0byBjb25uZWN0IHRvIHRoZSBjb252ZXJzYXRpb25cbiAgICBPbmxpbmUsICAgICAgICAgICAgICAgICAgICAgLy8gc3VjY2Vzc2Z1bGx5IGNvbm5lY3RlZCB0byB0aGUgY29udmVyc2F0aW9uLiBDb25uZWN0aW9uIGlzIGhlYWx0aHkgc28gZmFyIGFzIHdlIGtub3cuXG4gICAgRXhwaXJlZFRva2VuLCAgICAgICAgICAgICAgIC8vIGxhc3Qgb3BlcmF0aW9uIGVycm9yZWQgb3V0IHdpdGggYW4gZXhwaXJlZCB0b2tlbi4gUG9zc2libHkgd2FpdGluZyBmb3Igc29tZW9uZSB0byBzdXBwbHkgYSBuZXcgb25lLlxuICAgIEZhaWxlZFRvQ29ubmVjdCwgICAgICAgICAgICAvLyB0aGUgaW5pdGlhbCBhdHRlbXB0IHRvIGNvbm5lY3QgdG8gdGhlIGNvbnZlcnNhdGlvbiBmYWlsZWQuIE5vIHJlY292ZXJ5IHBvc3NpYmxlLlxuICAgIEVuZGVkICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgYm90IGVuZGVkIHRoZSBjb252ZXJzYXRpb25cbn1cblxuZXhwb3J0IGludGVyZmFjZSBEaXJlY3RMaW5lT3B0aW9ucyB7XG4gICAgc2VjcmV0Pzogc3RyaW5nLFxuICAgIHRva2VuPzogc3RyaW5nLFxuICAgIGNvbnZlcnNhdGlvbklkPzogc3RyaW5nLFxuICAgIHdhdGVybWFyaz86IHN0cmluZyxcbiAgICBkb21haW4/OiBzdHJpbmcsXG4gICAgd2ViU29ja2V0PzogYm9vbGVhbixcbiAgICBwb2xsaW5nSW50ZXJ2YWw/OiBudW1iZXIsXG4gICAgc3RyZWFtVXJsPzogc3RyaW5nLFxuICAgIHRpbWVvdXQ/OiBudW1iZXIsXG4gICAgLy8gQXR0YWNoZWQgdG8gYWxsIHJlcXVlc3RzIHRvIGlkZW50aWZ5IHJlcXVlc3RpbmcgYWdlbnQuXG4gICAgYm90QWdlbnQ/OiBzdHJpbmcsXG4gICAgY29udmVyc2F0aW9uU3RhcnRQcm9wZXJ0aWVzPzogYW55XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmljZXMge1xuICAgIHNjaGVkdWxlcjogSVNjaGVkdWxlcjtcbiAgICBXZWJTb2NrZXQ6IHR5cGVvZiBXZWJTb2NrZXQ7XG4gICAgYWpheDogQWpheENyZWF0aW9uTWV0aG9kO1xuICAgIHJhbmRvbTogKCkgPT4gbnVtYmVyO1xufVxuXG5jb25zdCB3cmFwQWpheFdpdGhSZXRyeSA9IChzb3VyY2U6IEFqYXhDcmVhdGlvbk1ldGhvZCwgc2NoZWR1bGVyOiBJU2NoZWR1bGVyKTogQWpheENyZWF0aW9uTWV0aG9kID0+e1xuXG4gICAgY29uc3Qgbm90SW1wbGVtZW50ZWQgPSAoKTogbmV2ZXIgPT4geyB0aHJvdyBuZXcgRXJyb3IoJ25vdCBpbXBsZW1lbnRlZCcpOyB9O1xuXG4gICAgY29uc3QgaW5uZXIgPSAocmVzcG9uc2UkIDogT2JzZXJ2YWJsZTxBamF4UmVzcG9uc2U+KSA9PiB7XG4gICAgICAgIHJldHVybiByZXNwb25zZSRcbiAgICAgICAgLmNhdGNoPEFqYXhSZXNwb25zZSwgQWpheFJlc3BvbnNlPigoZXJyKSA9PiB7XG4gICAgICAgICAgICBpZihlcnIuc3RhdHVzID09PSA0Mjkpe1xuICAgICAgICAgICAgICAgIGNvbnN0IHJldHJ5QWZ0ZXJWYWx1ZSA9IGVyci54aHIuZ2V0UmVzcG9uc2VIZWFkZXIoJ1JldHJ5LUFmdGVyJyk7XG4gICAgICAgICAgICAgICAgY29uc3QgcmV0cnlBZnRlciA9IE51bWJlcihyZXRyeUFmdGVyVmFsdWUpO1xuICAgICAgICAgICAgICAgIGlmKCFpc05hTihyZXRyeUFmdGVyKSl7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBPYnNlcnZhYmxlLnRpbWVyKHJldHJ5QWZ0ZXIsIHNjaGVkdWxlcilcbiAgICAgICAgICAgICAgICAgICAgLmZsYXRNYXAoXyA9PiBPYnNlcnZhYmxlLnRocm93KGVyciwgc2NoZWR1bGVyKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gT2JzZXJ2YWJsZS50aHJvdyhlcnIsIHNjaGVkdWxlcik7XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBjb25zdCBvdXRlciA9ICh1cmxPclJlcXVlc3Q6IHN0cmluZ3wgQWpheFJlcXVlc3QpID0+IHtcbiAgICAgICAgcmV0dXJuIGlubmVyKHNvdXJjZSh1cmxPclJlcXVlc3QpKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24ob3V0ZXIsIHtcbiAgICAgICAgZ2V0OiAodXJsOiBzdHJpbmcsIGhlYWRlcnM/OiBPYmplY3QpOiBPYnNlcnZhYmxlPEFqYXhSZXNwb25zZT4gPT4gbm90SW1wbGVtZW50ZWQoKSxcbiAgICAgICAgcG9zdDogKHVybDogc3RyaW5nLCBib2R5PzogYW55LCBoZWFkZXJzPzogT2JqZWN0KTogT2JzZXJ2YWJsZTxBamF4UmVzcG9uc2U+ID0+IG5vdEltcGxlbWVudGVkKCksXG4gICAgICAgIHB1dDogKHVybDogc3RyaW5nLCBib2R5PzogYW55LCBoZWFkZXJzPzogT2JqZWN0KTogT2JzZXJ2YWJsZTxBamF4UmVzcG9uc2U+ID0+IG5vdEltcGxlbWVudGVkKCksXG4gICAgICAgIHBhdGNoOiAodXJsOiBzdHJpbmcsIGJvZHk/OiBhbnksIGhlYWRlcnM/OiBPYmplY3QpOiBPYnNlcnZhYmxlPEFqYXhSZXNwb25zZT4gPT4gbm90SW1wbGVtZW50ZWQoKSxcbiAgICAgICAgZGVsZXRlOiAodXJsOiBzdHJpbmcsIGhlYWRlcnM/OiBPYmplY3QpOiBPYnNlcnZhYmxlPEFqYXhSZXNwb25zZT4gPT4gbm90SW1wbGVtZW50ZWQoKSxcbiAgICAgICAgZ2V0SlNPTjogPFQ+KHVybDogc3RyaW5nLCBoZWFkZXJzPzogT2JqZWN0KTogT2JzZXJ2YWJsZTxUPiA9PiBub3RJbXBsZW1lbnRlZCgpXG4gICAgfSk7XG59XG5cbmNvbnN0IG1ha2VTZXJ2aWNlcyA9IChzZXJ2aWNlczogUGFydGlhbDxTZXJ2aWNlcz4pOiBTZXJ2aWNlcyA9PiB7XG4gICAgY29uc3Qgc2NoZWR1bGVyID0gc2VydmljZXMuc2NoZWR1bGVyIHx8IEFzeW5jU2NoZWR1bGVyO1xuICAgIHJldHVybiB7XG4gICAgICAgIHNjaGVkdWxlcixcbiAgICAgICAgYWpheDogd3JhcEFqYXhXaXRoUmV0cnkoc2VydmljZXMuYWpheCB8fCBPYnNlcnZhYmxlLmFqYXgsIHNjaGVkdWxlciksXG4gICAgICAgIFdlYlNvY2tldDogc2VydmljZXMuV2ViU29ja2V0IHx8IFdlYlNvY2tldCxcbiAgICAgICAgcmFuZG9tOiBzZXJ2aWNlcy5yYW5kb20gfHwgTWF0aC5yYW5kb20sXG4gICAgfVxufVxuXG5jb25zdCBsaWZldGltZVJlZnJlc2hUb2tlbiA9IDMwICogNjAgKiAxMDAwO1xuY29uc3QgaW50ZXJ2YWxSZWZyZXNoVG9rZW4gPSBsaWZldGltZVJlZnJlc2hUb2tlbiAvIDI7XG5cbmNvbnN0IFBPTExJTkdfSU5URVJWQUxfTE9XRVJfQk9VTkQ6IG51bWJlciA9IDIwMDsgLy9tc1xuXG5jb25zdCBlcnJvckV4cGlyZWRUb2tlbiA9IG5ldyBFcnJvcihcImV4cGlyZWQgdG9rZW5cIik7XG5jb25zdCBlcnJvckNvbnZlcnNhdGlvbkVuZGVkID0gbmV3IEVycm9yKFwiY29udmVyc2F0aW9uIGVuZGVkXCIpO1xuY29uc3QgZXJyb3JGYWlsZWRUb0Nvbm5lY3QgPSBuZXcgRXJyb3IoXCJmYWlsZWQgdG8gY29ubmVjdFwiKTtcblxuY29uc3Qga29uc29sZSA9IHtcbiAgICBsb2c6IChtZXNzYWdlPzogYW55LCAuLi4gb3B0aW9uYWxQYXJhbXM6IGFueVtdKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiAod2luZG93IGFzIGFueSlbXCJib3RjaGF0RGVidWdcIl0gJiYgbWVzc2FnZSlcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKG1lc3NhZ2UsIC4uLiBvcHRpb25hbFBhcmFtcyk7XG4gICAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElCb3RDb25uZWN0aW9uIHtcbiAgICBjb25uZWN0aW9uU3RhdHVzJDogQmVoYXZpb3JTdWJqZWN0PENvbm5lY3Rpb25TdGF0dXM+LFxuICAgIGFjdGl2aXR5JDogT2JzZXJ2YWJsZTxBY3Rpdml0eT4sXG4gICAgZW5kKCk6IHZvaWQsXG4gICAgcmVmZXJlbmNlR3JhbW1hcklkPzogc3RyaW5nLFxuICAgIHBvc3RBY3Rpdml0eShhY3Rpdml0eTogQWN0aXZpdHkpOiBPYnNlcnZhYmxlPHN0cmluZz4sXG4gICAgZ2V0U2Vzc2lvbklkPyA6ICgpID0+IE9ic2VydmFibGU8c3RyaW5nPlxufVxuXG5leHBvcnQgY2xhc3MgRGlyZWN0TGluZSBpbXBsZW1lbnRzIElCb3RDb25uZWN0aW9uIHtcbiAgICBwdWJsaWMgY29ubmVjdGlvblN0YXR1cyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KENvbm5lY3Rpb25TdGF0dXMuVW5pbml0aWFsaXplZCk7XG4gICAgcHVibGljIGFjdGl2aXR5JDogT2JzZXJ2YWJsZTxBY3Rpdml0eT47XG5cbiAgICBwcml2YXRlIGRvbWFpbiA9IFwiaHR0cHM6Ly9kaXJlY3RsaW5lLmJvdGZyYW1ld29yay5jb20vdjMvZGlyZWN0bGluZVwiO1xuICAgIHByaXZhdGUgd2ViU29ja2V0OiBib29sZWFuO1xuXG4gICAgcHJpdmF0ZSBjb252ZXJzYXRpb25JZDogc3RyaW5nO1xuICAgIHByaXZhdGUgZXhwaXJlZFRva2VuRXhoYXVzdGlvbjogRnVuY3Rpb247XG4gICAgcHJpdmF0ZSBzZWNyZXQ6IHN0cmluZztcbiAgICBwcml2YXRlIHRva2VuOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSB3YXRlcm1hcmsgPSAnJztcbiAgICBwcml2YXRlIHN0cmVhbVVybDogc3RyaW5nO1xuICAgIHByaXZhdGUgX2JvdEFnZW50ID0gJyc7XG4gICAgcHJpdmF0ZSBzZXJ2aWNlczogU2VydmljZXM7XG4gICAgcHJpdmF0ZSBfdXNlckFnZW50OiBzdHJpbmc7XG4gICAgcHVibGljIHJlZmVyZW5jZUdyYW1tYXJJZDogc3RyaW5nO1xuICAgIHByaXZhdGUgdGltZW91dCA9IDIwICogMTAwMDtcbiAgICBwcml2YXRlIHJldHJpZXM6IG51bWJlcjtcblxuICAgIHByaXZhdGUgbG9jYWxlT25TdGFydENvbnZlcnNhdGlvbjogc3RyaW5nO1xuICAgIHByaXZhdGUgdXNlcklkT25TdGFydENvbnZlcnNhdGlvbjogc3RyaW5nO1xuXG4gICAgcHJpdmF0ZSBwb2xsaW5nSW50ZXJ2YWw6IG51bWJlciA9IDEwMDA7IC8vbXNcblxuICAgIHByaXZhdGUgdG9rZW5SZWZyZXNoU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zOiBEaXJlY3RMaW5lT3B0aW9ucyAmIFBhcnRpYWw8U2VydmljZXM+KSB7XG4gICAgICAgIHRoaXMuc2VjcmV0ID0gb3B0aW9ucy5zZWNyZXQ7XG4gICAgICAgIHRoaXMudG9rZW4gPSBvcHRpb25zLnNlY3JldCB8fCBvcHRpb25zLnRva2VuO1xuICAgICAgICB0aGlzLndlYlNvY2tldCA9IChvcHRpb25zLndlYlNvY2tldCA9PT0gdW5kZWZpbmVkID8gdHJ1ZSA6IG9wdGlvbnMud2ViU29ja2V0KSAmJiB0eXBlb2YgV2ViU29ja2V0ICE9PSAndW5kZWZpbmVkJyAmJiBXZWJTb2NrZXQgIT09IHVuZGVmaW5lZDtcblxuICAgICAgICBpZiAob3B0aW9ucy5jb252ZXJzYXRpb25TdGFydFByb3BlcnRpZXMgJiYgb3B0aW9ucy5jb252ZXJzYXRpb25TdGFydFByb3BlcnRpZXMubG9jYWxlKSB7XG4gICAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9wdGlvbnMuY29udmVyc2F0aW9uU3RhcnRQcm9wZXJ0aWVzLmxvY2FsZSkgPT09ICdbb2JqZWN0IFN0cmluZ10nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2NhbGVPblN0YXJ0Q29udmVyc2F0aW9uID0gb3B0aW9ucy5jb252ZXJzYXRpb25TdGFydFByb3BlcnRpZXMubG9jYWxlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ0RpcmVjdExpbmVKUzogY29udmVyc2F0aW9uU3RhcnRQcm9wZXJ0aWVzLmxvY2FsZSB3YXMgaWdub3JlZDogdGhlIGxvY2FsZSBuYW1lIG1heSBiZSBhIEJDUCA0NyBsYW5ndWFnZSB0YWcnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zLmRvbWFpbikge1xuICAgICAgICAgICAgdGhpcy5kb21haW4gPSBvcHRpb25zLmRvbWFpbjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zLmNvbnZlcnNhdGlvbklkKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnZlcnNhdGlvbklkID0gb3B0aW9ucy5jb252ZXJzYXRpb25JZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zLndhdGVybWFyaykge1xuICAgICAgICAgICAgdGhpcy53YXRlcm1hcmsgPSAgb3B0aW9ucy53YXRlcm1hcms7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0aW9ucy5zdHJlYW1VcmwpIHtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLnRva2VuICYmIG9wdGlvbnMuY29udmVyc2F0aW9uSWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0cmVhbVVybCA9IG9wdGlvbnMuc3RyZWFtVXJsO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ0RpcmVjdExpbmVKUzogc3RyZWFtVXJsIHdhcyBpZ25vcmVkOiB5b3UgbmVlZCB0byBwcm92aWRlIGEgdG9rZW4gYW5kIGEgY29udmVyc2F0aW9uaWQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zLnRpbWVvdXQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy50aW1lb3V0ID0gb3B0aW9ucy50aW1lb3V0O1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5yZXRyaWVzID0gKGxpZmV0aW1lUmVmcmVzaFRva2VuIC0gaW50ZXJ2YWxSZWZyZXNoVG9rZW4pIC8gdGhpcy50aW1lb3V0O1xuXG4gICAgICAgIHRoaXMuX2JvdEFnZW50ID0gdGhpcy5nZXRCb3RBZ2VudChvcHRpb25zLmJvdEFnZW50KTtcblxuICAgICAgICB0aGlzLnNlcnZpY2VzID0gbWFrZVNlcnZpY2VzKG9wdGlvbnMpO1xuXG4gICAgICAgIGNvbnN0IHBhcnNlZFBvbGxpbmdJbnRlcnZhbCA9IH5+b3B0aW9ucy5wb2xsaW5nSW50ZXJ2YWw7XG5cbiAgICAgICAgaWYgKHBhcnNlZFBvbGxpbmdJbnRlcnZhbCA8IFBPTExJTkdfSU5URVJWQUxfTE9XRVJfQk9VTkQpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5wb2xsaW5nSW50ZXJ2YWwgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGBEaXJlY3RMaW5lSlM6IHByb3ZpZGVkIHBvbGxpbmdJbnRlcnZhbCAoJHsgb3B0aW9ucy5wb2xsaW5nSW50ZXJ2YWwgfSkgaXMgdW5kZXIgbG93ZXIgYm91bmQgKDIwMG1zKSwgdXNpbmcgZGVmYXVsdCBvZiAxMDAwbXNgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucG9sbGluZ0ludGVydmFsID0gcGFyc2VkUG9sbGluZ0ludGVydmFsO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5leHBpcmVkVG9rZW5FeGhhdXN0aW9uID0gdGhpcy5zZXRDb25uZWN0aW9uU3RhdHVzRmFsbGJhY2soXG4gICAgICAgICAgICBDb25uZWN0aW9uU3RhdHVzLkV4cGlyZWRUb2tlbixcbiAgICAgICAgICAgIENvbm5lY3Rpb25TdGF0dXMuRmFpbGVkVG9Db25uZWN0LFxuICAgICAgICAgICAgNVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuYWN0aXZpdHkkID0gKHRoaXMud2ViU29ja2V0XG4gICAgICAgICAgICA/IHRoaXMud2ViU29ja2V0QWN0aXZpdHkkKClcbiAgICAgICAgICAgIDogdGhpcy5wb2xsaW5nR2V0QWN0aXZpdHkkKClcbiAgICAgICAgKS5zaGFyZSgpO1xuICAgIH1cblxuICAgIC8vIEV2ZXJ5IHRpbWUgd2UncmUgYWJvdXQgdG8gbWFrZSBhIERpcmVjdCBMaW5lIFJFU1QgY2FsbCwgd2UgY2FsbCB0aGlzIGZpcnN0IHRvIHNlZSBjaGVjayB0aGUgY3VycmVudCBjb25uZWN0aW9uIHN0YXR1cy5cbiAgICAvLyBFaXRoZXIgdGhyb3dzIGFuIGVycm9yIChpbmRpY2F0aW5nIGFuIGVycm9yIHN0YXRlKSBvciBlbWl0cyBhIG51bGwsIGluZGljYXRpbmcgYSAocHJlc3VtYWJseSkgaGVhbHRoeSBjb25uZWN0aW9uXG4gICAgcHJpdmF0ZSBjaGVja0Nvbm5lY3Rpb24ob25jZSA9IGZhbHNlKSB7XG4gICAgICAgIGxldCBvYnMgPSAgdGhpcy5jb25uZWN0aW9uU3RhdHVzJFxuICAgICAgICAuZmxhdE1hcChjb25uZWN0aW9uU3RhdHVzID0+IHtcbiAgICAgICAgICAgIGlmIChjb25uZWN0aW9uU3RhdHVzID09PSBDb25uZWN0aW9uU3RhdHVzLlVuaW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb25TdGF0dXMkLm5leHQoQ29ubmVjdGlvblN0YXR1cy5Db25uZWN0aW5nKTtcblxuICAgICAgICAgICAgICAgIC8vaWYgdG9rZW4gYW5kIHN0cmVhbVVybCBhcmUgZGVmaW5lZCBpdCBtZWFucyByZWNvbm5lY3QgaGFzIGFscmVhZHkgYmVlbiBkb25lLiBTa2lwcGluZyBpdC5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy50b2tlbiAmJiB0aGlzLnN0cmVhbVVybCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb25TdGF0dXMkLm5leHQoQ29ubmVjdGlvblN0YXR1cy5PbmxpbmUpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JzZXJ2YWJsZS5vZihjb25uZWN0aW9uU3RhdHVzLCB0aGlzLnNlcnZpY2VzLnNjaGVkdWxlcik7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3RhcnRDb252ZXJzYXRpb24oKS5kbyhjb252ZXJzYXRpb24gPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb252ZXJzYXRpb25JZCA9IGNvbnZlcnNhdGlvbi5jb252ZXJzYXRpb25JZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudG9rZW4gPSB0aGlzLnNlY3JldCB8fCBjb252ZXJzYXRpb24udG9rZW47XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0cmVhbVVybCA9IGNvbnZlcnNhdGlvbi5zdHJlYW1Vcmw7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZmVyZW5jZUdyYW1tYXJJZCA9IGNvbnZlcnNhdGlvbi5yZWZlcmVuY2VHcmFtbWFySWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc2VjcmV0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVmcmVzaFRva2VuTG9vcCgpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb25TdGF0dXMkLm5leHQoQ29ubmVjdGlvblN0YXR1cy5PbmxpbmUpO1xuICAgICAgICAgICAgICAgICAgICB9LCBlcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb25TdGF0dXMkLm5leHQoQ29ubmVjdGlvblN0YXR1cy5GYWlsZWRUb0Nvbm5lY3QpO1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAubWFwKF8gPT4gY29ubmVjdGlvblN0YXR1cyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIE9ic2VydmFibGUub2YoY29ubmVjdGlvblN0YXR1cywgdGhpcy5zZXJ2aWNlcy5zY2hlZHVsZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAuZmlsdGVyKGNvbm5lY3Rpb25TdGF0dXMgPT4gY29ubmVjdGlvblN0YXR1cyAhPSBDb25uZWN0aW9uU3RhdHVzLlVuaW5pdGlhbGl6ZWQgJiYgY29ubmVjdGlvblN0YXR1cyAhPSBDb25uZWN0aW9uU3RhdHVzLkNvbm5lY3RpbmcpXG4gICAgICAgIC5mbGF0TWFwKGNvbm5lY3Rpb25TdGF0dXMgPT4ge1xuICAgICAgICAgICAgc3dpdGNoIChjb25uZWN0aW9uU3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBDb25uZWN0aW9uU3RhdHVzLkVuZGVkOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JzZXJ2YWJsZS50aHJvdyhlcnJvckNvbnZlcnNhdGlvbkVuZGVkLCB0aGlzLnNlcnZpY2VzLnNjaGVkdWxlcik7XG5cbiAgICAgICAgICAgICAgICBjYXNlIENvbm5lY3Rpb25TdGF0dXMuRmFpbGVkVG9Db25uZWN0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JzZXJ2YWJsZS50aHJvdyhlcnJvckZhaWxlZFRvQ29ubmVjdCwgdGhpcy5zZXJ2aWNlcy5zY2hlZHVsZXIpO1xuXG4gICAgICAgICAgICAgICAgY2FzZSBDb25uZWN0aW9uU3RhdHVzLkV4cGlyZWRUb2tlbjpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9ic2VydmFibGUub2YoY29ubmVjdGlvblN0YXR1cywgdGhpcy5zZXJ2aWNlcy5zY2hlZHVsZXIpO1xuXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9ic2VydmFibGUub2YoY29ubmVjdGlvblN0YXR1cywgdGhpcy5zZXJ2aWNlcy5zY2hlZHVsZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuXG4gICAgICAgIHJldHVybiBvbmNlID8gb2JzLnRha2UoMSkgOiBvYnM7XG4gICAgfVxuXG4gICAgc2V0Q29ubmVjdGlvblN0YXR1c0ZhbGxiYWNrKFxuICAgICAgICBjb25uZWN0aW9uU3RhdHVzRnJvbTogQ29ubmVjdGlvblN0YXR1cyxcbiAgICAgICAgY29ubmVjdGlvblN0YXR1c1RvOiBDb25uZWN0aW9uU3RhdHVzLFxuICAgICAgICBtYXhBdHRlbXB0cyA9IDVcbiAgICApIHtcbiAgICAgICAgbWF4QXR0ZW1wdHMtLTtcbiAgICAgICAgbGV0IGF0dGVtcHRzID0gMDtcbiAgICAgICAgbGV0IGN1cnJTdGF0dXMgPSBudWxsO1xuICAgICAgICByZXR1cm4gKHN0YXR1czogQ29ubmVjdGlvblN0YXR1cyk6IENvbm5lY3Rpb25TdGF0dXMgPT4ge1xuICAgICAgICAgICAgaWYgKHN0YXR1cyA9PT0gY29ubmVjdGlvblN0YXR1c0Zyb20gJiYgY3VyclN0YXR1cyA9PT0gc3RhdHVzICYmIGF0dGVtcHRzID49IG1heEF0dGVtcHRzKSB7XG4gICAgICAgICAgICAgICAgYXR0ZW1wdHMgPSAwXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbm5lY3Rpb25TdGF0dXNUbztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGF0dGVtcHRzKys7XG4gICAgICAgICAgICBjdXJyU3RhdHVzID0gc3RhdHVzO1xuICAgICAgICAgICAgcmV0dXJuIHN0YXR1cztcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGV4cGlyZWRUb2tlbigpIHtcbiAgICAgICAgY29uc3QgY29ubmVjdGlvblN0YXR1cyA9IHRoaXMuY29ubmVjdGlvblN0YXR1cyQuZ2V0VmFsdWUoKTtcbiAgICAgICAgaWYgKGNvbm5lY3Rpb25TdGF0dXMgIT0gQ29ubmVjdGlvblN0YXR1cy5FbmRlZCAmJiBjb25uZWN0aW9uU3RhdHVzICE9IENvbm5lY3Rpb25TdGF0dXMuRmFpbGVkVG9Db25uZWN0KVxuICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9uU3RhdHVzJC5uZXh0KENvbm5lY3Rpb25TdGF0dXMuRXhwaXJlZFRva2VuKTtcblxuICAgICAgICBjb25zdCBwcm90ZWN0ZWRDb25uZWN0aW9uU3RhdHVzID0gdGhpcy5leHBpcmVkVG9rZW5FeGhhdXN0aW9uKHRoaXMuY29ubmVjdGlvblN0YXR1cyQuZ2V0VmFsdWUoKSk7XG4gICAgICAgIHRoaXMuY29ubmVjdGlvblN0YXR1cyQubmV4dChwcm90ZWN0ZWRDb25uZWN0aW9uU3RhdHVzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXJ0Q29udmVyc2F0aW9uKCkge1xuICAgICAgICAvL2lmIGNvbnZlcnNhdGlvbmlkIGlzIHNldCBoZXJlLCBpdCBtZWFucyB3ZSBuZWVkIHRvIGNhbGwgdGhlIHJlY29ubmVjdCBhcGksIGVsc2UgaXQgaXMgYSBuZXcgY29udmVyc2F0aW9uXG4gICAgICAgIGNvbnN0IHVybCA9IHRoaXMuY29udmVyc2F0aW9uSWRcbiAgICAgICAgICAgID8gYCR7dGhpcy5kb21haW59L2NvbnZlcnNhdGlvbnMvJHt0aGlzLmNvbnZlcnNhdGlvbklkfT93YXRlcm1hcms9JHt0aGlzLndhdGVybWFya31gXG4gICAgICAgICAgICA6IGAke3RoaXMuZG9tYWlufS9jb252ZXJzYXRpb25zYDtcbiAgICAgICAgY29uc3QgbWV0aG9kID0gdGhpcy5jb252ZXJzYXRpb25JZCA/IFwiR0VUXCIgOiBcIlBPU1RcIjtcbiAgICAgICAgY29uc3QgYm9keSA9IHRoaXMuY29udmVyc2F0aW9uSWRcbiAgICAgICAgICAgID8gdW5kZWZpbmVkXG4gICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICB1c2VyOiB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiB0aGlzLnVzZXJJZE9uU3RhcnRDb252ZXJzYXRpb25cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGxvY2FsZTogdGhpcy5sb2NhbGVPblN0YXJ0Q29udmVyc2F0aW9uXG4gICAgICAgICAgICAgIH07XG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VzLmFqYXgoe1xuICAgICAgICAgICAgbWV0aG9kLFxuICAgICAgICAgICAgdXJsLFxuICAgICAgICAgICAgYm9keSxcbiAgICAgICAgICAgIHRpbWVvdXQ6IHRoaXMudGltZW91dCxcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICBcIkFjY2VwdFwiOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICAgICAgICAgICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICAgICAgICAgICAgICAuLi50aGlzLmNvbW1vbkhlYWRlcnMoKVxuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuLy8gICAgICAuZG8oYWpheFJlc3BvbnNlID0+IGtvbnNvbGUubG9nKFwiY29udmVyc2F0aW9uIGFqYXhSZXNwb25zZVwiLCBhamF4UmVzcG9uc2UucmVzcG9uc2UpKVxuICAgICAgICAubWFwKGFqYXhSZXNwb25zZSA9PiBhamF4UmVzcG9uc2UucmVzcG9uc2UgYXMgQ29udmVyc2F0aW9uKVxuICAgICAgICAucmV0cnlXaGVuKGVycm9yJCA9PlxuICAgICAgICAgICAgLy8gZm9yIG5vdyB3ZSBkZWVtIDR4eCBhbmQgNXh4IGVycm9ycyBhcyB1bnJlY292ZXJhYmxlXG4gICAgICAgICAgICAvLyBmb3IgZXZlcnl0aGluZyBlbHNlICh0aW1lb3V0cyksIHJldHJ5IGZvciBhIHdoaWxlXG4gICAgICAgICAgICBlcnJvciQubWVyZ2VNYXAoKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yLnN0YXR1cyA+PSA0MDAgJiYgZXJyb3Iuc3RhdHVzIDwgNjAwXG4gICAgICAgICAgICAgICAgPyBPYnNlcnZhYmxlLnRocm93KGVycm9yLCB0aGlzLnNlcnZpY2VzLnNjaGVkdWxlcilcbiAgICAgICAgICAgICAgICA6IE9ic2VydmFibGUub2YoZXJyb3IsIHRoaXMuc2VydmljZXMuc2NoZWR1bGVyKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5kZWxheSh0aGlzLnRpbWVvdXQsIHRoaXMuc2VydmljZXMuc2NoZWR1bGVyKVxuICAgICAgICAgICAgLnRha2UodGhpcy5yZXRyaWVzKVxuICAgICAgICApXG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZWZyZXNoVG9rZW5Mb29wKCkge1xuICAgICAgICB0aGlzLnRva2VuUmVmcmVzaFN1YnNjcmlwdGlvbiA9IE9ic2VydmFibGUuaW50ZXJ2YWwoaW50ZXJ2YWxSZWZyZXNoVG9rZW4sIHRoaXMuc2VydmljZXMuc2NoZWR1bGVyKVxuICAgICAgICAuZmxhdE1hcChfID0+IHRoaXMucmVmcmVzaFRva2VuKCkpXG4gICAgICAgIC5zdWJzY3JpYmUodG9rZW4gPT4ge1xuICAgICAgICAgICAga29uc29sZS5sb2coXCJyZWZyZXNoaW5nIHRva2VuXCIsIHRva2VuLCBcImF0XCIsIG5ldyBEYXRlKCkpO1xuICAgICAgICAgICAgdGhpcy50b2tlbiA9IHRva2VuO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlZnJlc2hUb2tlbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tDb25uZWN0aW9uKHRydWUpXG4gICAgICAgIC5mbGF0TWFwKF8gPT5cbiAgICAgICAgICAgIHRoaXMuc2VydmljZXMuYWpheCh7XG4gICAgICAgICAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgICAgICAgICB1cmw6IGAke3RoaXMuZG9tYWlufS90b2tlbnMvcmVmcmVzaGAsXG4gICAgICAgICAgICAgICAgdGltZW91dDogdGhpcy50aW1lb3V0LFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5jb21tb25IZWFkZXJzKClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLm1hcChhamF4UmVzcG9uc2UgPT4gYWpheFJlc3BvbnNlLnJlc3BvbnNlLnRva2VuIGFzIHN0cmluZylcbiAgICAgICAgICAgIC5yZXRyeVdoZW4oZXJyb3IkID0+IGVycm9yJFxuICAgICAgICAgICAgICAgIC5tZXJnZU1hcChlcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlcnJvci5zdGF0dXMgPT09IDQwMykge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhlIHRva2VuIGlzIGV4cGlyZWQgdGhlcmUncyBubyByZWFzb24gdG8ga2VlcCB0cnlpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZXhwaXJlZFRva2VuKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JzZXJ2YWJsZS50aHJvdyhlcnJvciwgdGhpcy5zZXJ2aWNlcy5zY2hlZHVsZXIpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGVycm9yLnN0YXR1cyA9PT0gNDA0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgYm90IGlzIGdvbmUsIHdlIHNob3VsZCBzdG9wIHJldHJ5aW5nXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JzZXJ2YWJsZS50aHJvdyhlcnJvciwgdGhpcy5zZXJ2aWNlcy5zY2hlZHVsZXIpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9ic2VydmFibGUub2YoZXJyb3IsIHRoaXMuc2VydmljZXMuc2NoZWR1bGVyKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5kZWxheSh0aGlzLnRpbWVvdXQsIHRoaXMuc2VydmljZXMuc2NoZWR1bGVyKVxuICAgICAgICAgICAgICAgIC50YWtlKHRoaXMucmV0cmllcylcbiAgICAgICAgICAgIClcbiAgICAgICAgKVxuICAgIH1cblxuICAgIHB1YmxpYyByZWNvbm5lY3QoY29udmVyc2F0aW9uOiBDb252ZXJzYXRpb24pIHtcbiAgICAgICAgdGhpcy50b2tlbiA9IGNvbnZlcnNhdGlvbi50b2tlbjtcbiAgICAgICAgdGhpcy5zdHJlYW1VcmwgPSBjb252ZXJzYXRpb24uc3RyZWFtVXJsO1xuICAgICAgICBpZiAodGhpcy5jb25uZWN0aW9uU3RhdHVzJC5nZXRWYWx1ZSgpID09PSBDb25uZWN0aW9uU3RhdHVzLkV4cGlyZWRUb2tlbilcbiAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvblN0YXR1cyQubmV4dChDb25uZWN0aW9uU3RhdHVzLk9ubGluZSk7XG4gICAgfVxuXG4gICAgZW5kKCkge1xuICAgICAgICBpZiAodGhpcy50b2tlblJlZnJlc2hTdWJzY3JpcHRpb24pXG4gICAgICAgICAgICB0aGlzLnRva2VuUmVmcmVzaFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9uU3RhdHVzJC5uZXh0KENvbm5lY3Rpb25TdGF0dXMuRW5kZWQpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBpZiAoZSA9PT0gZXJyb3JDb252ZXJzYXRpb25FbmRlZClcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB0aHJvdyhlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldFNlc3Npb25JZCgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgICAgICAvLyBJZiB3ZSdyZSBub3QgY29ubmVjdGVkIHRvIHRoZSBib3QsIGdldCBjb25uZWN0ZWRcbiAgICAgICAgLy8gV2lsbCB0aHJvdyBhbiBlcnJvciBpZiB3ZSBhcmUgbm90IGNvbm5lY3RlZFxuICAgICAgICBrb25zb2xlLmxvZyhcImdldFNlc3Npb25JZFwiKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tDb25uZWN0aW9uKHRydWUpXG4gICAgICAgICAgICAuZmxhdE1hcChfID0+XG4gICAgICAgICAgICAgICAgdGhpcy5zZXJ2aWNlcy5hamF4KHtcbiAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiBcIkdFVFwiLFxuICAgICAgICAgICAgICAgICAgICB1cmw6IGAke3RoaXMuZG9tYWlufS9zZXNzaW9uL2dldHNlc3Npb25pZGAsXG4gICAgICAgICAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgdGltZW91dDogdGhpcy50aW1lb3V0LFxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuY29tbW9uSGVhZGVycygpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5tYXAoYWpheFJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFqYXhSZXNwb25zZSAmJiBhamF4UmVzcG9uc2UucmVzcG9uc2UgJiYgYWpheFJlc3BvbnNlLnJlc3BvbnNlLnNlc3Npb25JZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAga29uc29sZS5sb2coXCJnZXRTZXNzaW9uSWQgcmVzcG9uc2U6IFwiICsgYWpheFJlc3BvbnNlLnJlc3BvbnNlLnNlc3Npb25JZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWpheFJlc3BvbnNlLnJlc3BvbnNlLnNlc3Npb25JZCBhcyBzdHJpbmc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgICAgICAgICAgICAga29uc29sZS5sb2coXCJnZXRTZXNzaW9uSWQgZXJyb3I6IFwiICsgZXJyb3Iuc3RhdHVzKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9ic2VydmFibGUub2YoJycsIHRoaXMuc2VydmljZXMuc2NoZWR1bGVyKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLmNhdGNoKGVycm9yID0+IHRoaXMuY2F0Y2hFeHBpcmVkVG9rZW4oZXJyb3IpKTtcbiAgICB9XG5cbiAgICBwb3N0QWN0aXZpdHkoYWN0aXZpdHk6IEFjdGl2aXR5KSB7XG4gICAgICAgIC8vIElmIHVzZXIgaWQgaXMgc2V0LCBjaGVjayBpZiBpdCBtYXRjaCBhY3Rpdml0eS5mcm9tLmlkIGFuZCBhbHdheXMgb3ZlcnJpZGUgaXQgaW4gYWN0aXZpdHlcbiAgICAgICAgaWYgKHRoaXMudXNlcklkT25TdGFydENvbnZlcnNhdGlvbiAmJiBhY3Rpdml0eS5mcm9tICYmIGFjdGl2aXR5LmZyb20uaWQgIT09IHRoaXMudXNlcklkT25TdGFydENvbnZlcnNhdGlvbikge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdEaXJlY3RMaW5lSlM6IEFjdGl2aXR5LmZyb20uaWQgZG9lcyBub3QgbWF0Y2ggd2l0aCB1c2VyIGlkLCBpZ25vcmluZyBhY3Rpdml0eS5mcm9tLmlkJyk7XG4gICAgICAgICAgICBhY3Rpdml0eS5mcm9tLmlkID0gdGhpcy51c2VySWRPblN0YXJ0Q29udmVyc2F0aW9uO1xuICAgICAgICB9XG4gICAgICAgIC8vIFVzZSBwb3N0TWVzc2FnZVdpdGhBdHRhY2htZW50cyBmb3IgbWVzc2FnZXMgd2l0aCBhdHRhY2htZW50cyB0aGF0IGFyZSBsb2NhbCBmaWxlcyAoZS5nLiBhbiBpbWFnZSB0byB1cGxvYWQpXG4gICAgICAgIC8vIFRlY2huaWNhbGx5IHdlIGNvdWxkIHVzZSBpdCBmb3IgKmFsbCogYWN0aXZpdGllcywgYnV0IHBvc3RBY3Rpdml0eSBpcyBtdWNoIGxpZ2h0ZXIgd2VpZ2h0XG4gICAgICAgIC8vIFNvLCBzaW5jZSBXZWJDaGF0IGlzIHBhcnRpYWxseSBhIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBvZiBEaXJlY3QgTGluZSwgd2UgaW1wbGVtZW50IGJvdGguXG4gICAgICAgIGlmIChhY3Rpdml0eS50eXBlID09PSBcIm1lc3NhZ2VcIiAmJiBhY3Rpdml0eS5hdHRhY2htZW50cyAmJiBhY3Rpdml0eS5hdHRhY2htZW50cy5sZW5ndGggPiAwKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMucG9zdE1lc3NhZ2VXaXRoQXR0YWNobWVudHMoYWN0aXZpdHkpO1xuXG4gICAgICAgIC8vIElmIHdlJ3JlIG5vdCBjb25uZWN0ZWQgdG8gdGhlIGJvdCwgZ2V0IGNvbm5lY3RlZFxuICAgICAgICAvLyBXaWxsIHRocm93IGFuIGVycm9yIGlmIHdlIGFyZSBub3QgY29ubmVjdGVkXG4gICAgICAgIGtvbnNvbGUubG9nKFwicG9zdEFjdGl2aXR5XCIsIGFjdGl2aXR5KTtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tDb25uZWN0aW9uKHRydWUpXG4gICAgICAgIC5mbGF0TWFwKF8gPT5cbiAgICAgICAgICAgIHRoaXMuc2VydmljZXMuYWpheCh7XG4gICAgICAgICAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgICAgICAgICB1cmw6IGAke3RoaXMuZG9tYWlufS9jb252ZXJzYXRpb25zLyR7dGhpcy5jb252ZXJzYXRpb25JZH0vYWN0aXZpdGllc2AsXG4gICAgICAgICAgICAgICAgYm9keTogYWN0aXZpdHksXG4gICAgICAgICAgICAgICAgdGltZW91dDogdGhpcy50aW1lb3V0LFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuY29tbW9uSGVhZGVycygpXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAubWFwKGFqYXhSZXNwb25zZSA9PiBhamF4UmVzcG9uc2UucmVzcG9uc2UuaWQgYXMgc3RyaW5nKVxuICAgICAgICAgICAgLmNhdGNoKGVycm9yID0+IHRoaXMuY2F0Y2hQb3N0RXJyb3IoZXJyb3IpKVxuICAgICAgICApXG4gICAgICAgIC5jYXRjaChlcnJvciA9PiB0aGlzLmNhdGNoRXhwaXJlZFRva2VuKGVycm9yKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwb3N0TWVzc2FnZVdpdGhBdHRhY2htZW50cyhtZXNzYWdlOiBNZXNzYWdlKSB7XG4gICAgICAgIGNvbnN0IHsgYXR0YWNobWVudHMgfSA9IG1lc3NhZ2U7XG4gICAgICAgIC8vIFdlIGNsZWFuIHRoZSBhdHRhY2htZW50cyBidXQgbWFraW5nIHN1cmUgZXZlcnkgYXR0YWNobWVudCBoYXMgdW5pcXVlIG5hbWUuXG4gICAgICAgIC8vIElmIHRoZSBmaWxlIGRvIG5vdCBoYXZlIGEgbmFtZSwgQ2hyb21lIHdpbGwgYXNzaWduIFwiYmxvYlwiIHdoZW4gaXQgaXMgYXBwZW5kZWQgdG8gRm9ybURhdGEuXG4gICAgICAgIGNvbnN0IGF0dGFjaG1lbnROYW1lczogc3RyaW5nW10gPSBkZWR1cGVGaWxlbmFtZXMoYXR0YWNobWVudHMubWFwKChtZWRpYTogTWVkaWEpID0+IG1lZGlhLm5hbWUgfHwgJ2Jsb2InKSk7XG4gICAgICAgIGNvbnN0IGNsZWFuc2VkQXR0YWNobWVudHMgPSBhdHRhY2htZW50cy5tYXAoKGF0dGFjaG1lbnQ6IE1lZGlhLCBpbmRleDogbnVtYmVyKSA9PiAoe1xuICAgICAgICAgICAgLi4uYXR0YWNobWVudCxcbiAgICAgICAgICAgIG5hbWU6IGF0dGFjaG1lbnROYW1lc1tpbmRleF1cbiAgICAgICAgfSkpO1xuICAgICAgICBsZXQgZm9ybURhdGE6IEZvcm1EYXRhO1xuXG4gICAgICAgIC8vIElmIHdlJ3JlIG5vdCBjb25uZWN0ZWQgdG8gdGhlIGJvdCwgZ2V0IGNvbm5lY3RlZFxuICAgICAgICAvLyBXaWxsIHRocm93IGFuIGVycm9yIGlmIHdlIGFyZSBub3QgY29ubmVjdGVkXG4gICAgICAgIHJldHVybiB0aGlzLmNoZWNrQ29ubmVjdGlvbih0cnVlKVxuICAgICAgICAuZmxhdE1hcChfID0+IHtcbiAgICAgICAgICAgIC8vIFRvIHNlbmQgdGhpcyBtZXNzYWdlIHRvIERpcmVjdExpbmUgd2UgbmVlZCB0byBkZWNvbnN0cnVjdCBpdCBpbnRvIGEgXCJ0ZW1wbGF0ZVwiIGFjdGl2aXR5XG4gICAgICAgICAgICAvLyBhbmQgb25lIGJsb2IgZm9yIGVhY2ggYXR0YWNobWVudC5cbiAgICAgICAgICAgIGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ2FjdGl2aXR5JywgbmV3IEJsb2IoW0pTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAuLi5tZXNzYWdlLFxuICAgICAgICAgICAgICAgIC8vIFJlbW92aW5nIGNvbnRlbnRVcmwgZnJvbSBhdHRhY2htZW50LCB3ZSB3aWxsIHNlbmQgaXQgdmlhIG11bHRpcGFydFxuICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRzOiBjbGVhbnNlZEF0dGFjaG1lbnRzLm1hcCgoeyBjb250ZW50VXJsOiBzdHJpbmcsIC4uLm90aGVycyB9KSA9PiAoeyAuLi5vdGhlcnMgfSkpXG4gICAgICAgICAgICB9KV0sIHsgdHlwZTogJ2FwcGxpY2F0aW9uL3ZuZC5taWNyb3NvZnQuYWN0aXZpdHknIH0pKTtcblxuICAgICAgICAgICAgcmV0dXJuIE9ic2VydmFibGUuZnJvbShjbGVhbnNlZEF0dGFjaG1lbnRzLCB0aGlzLnNlcnZpY2VzLnNjaGVkdWxlcilcbiAgICAgICAgICAgIC5mbGF0TWFwKChtZWRpYTogTWVkaWEpID0+XG4gICAgICAgICAgICAgICAgdGhpcy5zZXJ2aWNlcy5hamF4KHtcbiAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiBcIkdFVFwiLFxuICAgICAgICAgICAgICAgICAgICB1cmw6IG1lZGlhLmNvbnRlbnRVcmwsXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJ1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmRvKGFqYXhSZXNwb25zZSA9PlxuICAgICAgICAgICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ2ZpbGUnLCBuZXcgQmxvYihbYWpheFJlc3BvbnNlLnJlc3BvbnNlXSwgeyB0eXBlOiBtZWRpYS5jb250ZW50VHlwZSB9KSwgbWVkaWEubmFtZSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuY291bnQoKVxuICAgICAgICB9KVxuICAgICAgICAuZmxhdE1hcChfID0+XG4gICAgICAgICAgICB0aGlzLnNlcnZpY2VzLmFqYXgoe1xuICAgICAgICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgICAgICAgICAgdXJsOiBgJHt0aGlzLmRvbWFpbn0vY29udmVyc2F0aW9ucy8ke3RoaXMuY29udmVyc2F0aW9uSWR9L3VwbG9hZD91c2VySWQ9JHttZXNzYWdlLmZyb20uaWR9YCxcbiAgICAgICAgICAgICAgICBib2R5OiBmb3JtRGF0YSxcbiAgICAgICAgICAgICAgICB0aW1lb3V0OiB0aGlzLnRpbWVvdXQsXG4gICAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmNvbW1vbkhlYWRlcnMoKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAubWFwKGFqYXhSZXNwb25zZSA9PiBhamF4UmVzcG9uc2UucmVzcG9uc2UuaWQgYXMgc3RyaW5nKVxuICAgICAgICAgICAgLmNhdGNoKGVycm9yID0+IHRoaXMuY2F0Y2hQb3N0RXJyb3IoZXJyb3IpKVxuICAgICAgICApXG4gICAgICAgIC5jYXRjaChlcnJvciA9PiB0aGlzLmNhdGNoUG9zdEVycm9yKGVycm9yKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjYXRjaFBvc3RFcnJvcihlcnJvcjogYW55KSB7XG4gICAgICAgIGlmIChlcnJvci5zdGF0dXMgPT09IDQwMylcbiAgICAgICAgICAgIC8vIHRva2VuIGhhcyBleHBpcmVkICh3aWxsIGZhbGwgdGhyb3VnaCB0byByZXR1cm4gXCJyZXRyeVwiKVxuICAgICAgICAgICAgdGhpcy5leHBpcmVkVG9rZW4oKTtcbiAgICAgICAgZWxzZSBpZiAoZXJyb3Iuc3RhdHVzID49IDQwMCAmJiBlcnJvci5zdGF0dXMgPCA1MDApXG4gICAgICAgICAgICAvLyBtb3JlIHVucmVjb3ZlcmFibGUgZXJyb3JzXG4gICAgICAgICAgICByZXR1cm4gT2JzZXJ2YWJsZS50aHJvdyhlcnJvciwgdGhpcy5zZXJ2aWNlcy5zY2hlZHVsZXIpO1xuICAgICAgICByZXR1cm4gT2JzZXJ2YWJsZS5vZihcInJldHJ5XCIsIHRoaXMuc2VydmljZXMuc2NoZWR1bGVyKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNhdGNoRXhwaXJlZFRva2VuKGVycm9yOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIGVycm9yID09PSBlcnJvckV4cGlyZWRUb2tlblxuICAgICAgICA/IE9ic2VydmFibGUub2YoXCJyZXRyeVwiLCB0aGlzLnNlcnZpY2VzLnNjaGVkdWxlcilcbiAgICAgICAgOiBPYnNlcnZhYmxlLnRocm93KGVycm9yLCB0aGlzLnNlcnZpY2VzLnNjaGVkdWxlcik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwb2xsaW5nR2V0QWN0aXZpdHkkKCkge1xuICAgICAgICBjb25zdCBwb2xsZXIkOiBPYnNlcnZhYmxlPEFqYXhSZXNwb25zZT4gPSBPYnNlcnZhYmxlLmNyZWF0ZSgoc3Vic2NyaWJlcjogU3Vic2NyaWJlcjxhbnk+KSA9PiB7XG4gICAgICAgICAgICAvLyBBIEJlaGF2aW9yU3ViamVjdCB0byB0cmlnZ2VyIHBvbGxpbmcuIFNpbmNlIGl0IGlzIGEgQmVoYXZpb3JTdWJqZWN0XG4gICAgICAgICAgICAvLyB0aGUgZmlyc3QgZXZlbnQgaXMgcHJvZHVjZWQgaW1tZWRpYXRlbHkuXG4gICAgICAgICAgICBjb25zdCB0cmlnZ2VyJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55Pih7fSk7XG5cbiAgICAgICAgICAgIC8vIFRPRE86IHJlbW92ZSBEYXRlLm5vdywgdXNlIHJlYWN0aXZlIGludGVydmFsIHRvIHNwYWNlIG91dCBldmVyeSByZXF1ZXN0XG5cbiAgICAgICAgICAgIHRyaWdnZXIkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY29ubmVjdGlvblN0YXR1cyQuZ2V0VmFsdWUoKSA9PT0gQ29ubmVjdGlvblN0YXR1cy5PbmxpbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RhcnRUaW1lc3RhbXAgPSBEYXRlLm5vdygpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VydmljZXMuYWpheCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQWNjZXB0OiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5jb21tb25IZWFkZXJzKClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBgJHsgdGhpcy5kb21haW4gfS9jb252ZXJzYXRpb25zLyR7IHRoaXMuY29udmVyc2F0aW9uSWQgfS9hY3Rpdml0aWVzP3dhdGVybWFyaz0keyB0aGlzLndhdGVybWFyayB9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ6IHRoaXMudGltZW91dFxuICAgICAgICAgICAgICAgICAgICB9KS5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0OiBBamF4UmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpYmVyLm5leHQocmVzdWx0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRyaWdnZXIkLm5leHQobnVsbCksIE1hdGgubWF4KDAsIHRoaXMucG9sbGluZ0ludGVydmFsIC0gRGF0ZS5ub3coKSArIHN0YXJ0VGltZXN0YW1wKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgKGVycm9yOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGVycm9yLnN0YXR1cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQwMzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvblN0YXR1cyQubmV4dChDb25uZWN0aW9uU3RhdHVzLkV4cGlyZWRUb2tlbik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRyaWdnZXIkLm5leHQobnVsbCksIHRoaXMucG9sbGluZ0ludGVydmFsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNDA0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9uU3RhdHVzJC5uZXh0KENvbm5lY3Rpb25TdGF0dXMuRW5kZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHByb3BhZ2F0ZSB0aGUgZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmliZXIuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gdGhpcy5jaGVja0Nvbm5lY3Rpb24oKVxuICAgICAgICAuZmxhdE1hcChfID0+IHBvbGxlciRcbiAgICAgICAgICAgIC5jYXRjaCgoKSA9PiBPYnNlcnZhYmxlLmVtcHR5PEFqYXhSZXNwb25zZT4oKSlcbiAgICAgICAgICAgIC5tYXAoYWpheFJlc3BvbnNlID0+IGFqYXhSZXNwb25zZS5yZXNwb25zZSBhcyBBY3Rpdml0eUdyb3VwKVxuICAgICAgICAgICAgLmZsYXRNYXAoYWN0aXZpdHlHcm91cCA9PiB0aGlzLm9ic2VydmFibGVGcm9tQWN0aXZpdHlHcm91cChhY3Rpdml0eUdyb3VwKSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgb2JzZXJ2YWJsZUZyb21BY3Rpdml0eUdyb3VwKGFjdGl2aXR5R3JvdXA6IEFjdGl2aXR5R3JvdXApIHtcbiAgICAgICAgaWYgKGFjdGl2aXR5R3JvdXAud2F0ZXJtYXJrKVxuICAgICAgICAgICAgdGhpcy53YXRlcm1hcmsgPSBhY3Rpdml0eUdyb3VwLndhdGVybWFyaztcbiAgICAgICAgcmV0dXJuIE9ic2VydmFibGUuZnJvbShhY3Rpdml0eUdyb3VwLmFjdGl2aXRpZXMsIHRoaXMuc2VydmljZXMuc2NoZWR1bGVyKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHdlYlNvY2tldEFjdGl2aXR5JCgpOiBPYnNlcnZhYmxlPEFjdGl2aXR5PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNoZWNrQ29ubmVjdGlvbigpXG4gICAgICAgIC5mbGF0TWFwKF8gPT5cbiAgICAgICAgICAgIHRoaXMub2JzZXJ2YWJsZVdlYlNvY2tldDxBY3Rpdml0eUdyb3VwPigpXG4gICAgICAgICAgICAvLyBXZWJTb2NrZXRzIGNhbiBiZSBjbG9zZWQgYnkgdGhlIHNlcnZlciBvciB0aGUgYnJvd3Nlci4gSW4gdGhlIGZvcm1lciBjYXNlIHdlIG5lZWQgdG9cbiAgICAgICAgICAgIC8vIHJldHJpZXZlIGEgbmV3IHN0cmVhbVVybC4gSW4gdGhlIGxhdHRlciBjYXNlIHdlIGNvdWxkIGZpcnN0IHJldHJ5IHdpdGggdGhlIGN1cnJlbnQgc3RyZWFtVXJsLFxuICAgICAgICAgICAgLy8gYnV0IGl0J3Mgc2ltcGxlciBqdXN0IHRvIGFsd2F5cyBmZXRjaCBhIG5ldyBvbmUuXG4gICAgICAgICAgICAucmV0cnlXaGVuKGVycm9yJCA9PiBlcnJvciQuZGVsYXkodGhpcy5nZXRSZXRyeURlbGF5KCksIHRoaXMuc2VydmljZXMuc2NoZWR1bGVyKS5tZXJnZU1hcChlcnJvciA9PiB0aGlzLnJlY29ubmVjdFRvQ29udmVyc2F0aW9uKCkpKVxuICAgICAgICApXG4gICAgICAgIC5mbGF0TWFwKGFjdGl2aXR5R3JvdXAgPT4gdGhpcy5vYnNlcnZhYmxlRnJvbUFjdGl2aXR5R3JvdXAoYWN0aXZpdHlHcm91cCkpXG4gICAgfVxuXG4gICAgLy8gUmV0dXJucyB0aGUgZGVsYXkgZHVyYXRpb24gaW4gbWlsbGlzZWNvbmRzXG4gICAgcHJpdmF0ZSBnZXRSZXRyeURlbGF5KCkge1xuICAgICAgICByZXR1cm4gTWF0aC5mbG9vcigzMDAwICsgdGhpcy5zZXJ2aWNlcy5yYW5kb20oKSAqIDEyMDAwKTtcbiAgICB9XG5cbiAgICAvLyBPcmlnaW5hbGx5IHdlIHVzZWQgT2JzZXJ2YWJsZS53ZWJTb2NrZXQsIGJ1dCBpdCdzIGZhaXJseSBvcGluaW9uYXRlZCBhbmQgSSBlbmRlZCB1cCB3cml0aW5nXG4gICAgLy8gYSBsb3Qgb2YgY29kZSB0byB3b3JrIGFyb3VuZCB0aGVpciBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLiBTaW5jZSBXZWJDaGF0IGlzIG1lYW50IHRvIGJlIGEgcmVmZXJlbmNlXG4gICAgLy8gaW1wbGVtZW50YXRpb24sIEkgZGVjaWRlZCByb2xsIHRoZSBiZWxvdywgd2hlcmUgdGhlIGxvZ2ljIGlzIG1vcmUgcHVycG9zZWZ1bC4gLSBAYmlsbGJhXG4gICAgcHJpdmF0ZSBvYnNlcnZhYmxlV2ViU29ja2V0PFQ+KCkge1xuICAgICAgICByZXR1cm4gT2JzZXJ2YWJsZS5jcmVhdGUoKHN1YnNjcmliZXI6IFN1YnNjcmliZXI8VD4pID0+IHtcbiAgICAgICAgICAgIGtvbnNvbGUubG9nKFwiY3JlYXRpbmcgV2ViU29ja2V0XCIsIHRoaXMuc3RyZWFtVXJsKTtcbiAgICAgICAgICAgIGNvbnN0IHdzID0gbmV3IHRoaXMuc2VydmljZXMuV2ViU29ja2V0KHRoaXMuc3RyZWFtVXJsKTtcbiAgICAgICAgICAgIGxldCBzdWI6IFN1YnNjcmlwdGlvbjtcbiAgICAgICAgICAgIGxldCBjbG9zZWQ6IGJvb2xlYW47XG5cbiAgICAgICAgICAgIHdzLm9ub3BlbiA9IG9wZW4gPT4ge1xuICAgICAgICAgICAgICAgIGtvbnNvbGUubG9nKFwiV2ViU29ja2V0IG9wZW5cIiwgb3Blbik7XG4gICAgICAgICAgICAgICAgLy8gQ2hyb21lIGlzIHByZXR0eSBiYWQgYXQgbm90aWNpbmcgd2hlbiBhIFdlYlNvY2tldCBjb25uZWN0aW9uIGlzIGJyb2tlbi5cbiAgICAgICAgICAgICAgICAvLyBJZiB3ZSBwZXJpb2RpY2FsbHkgcGluZyB0aGUgc2VydmVyIHdpdGggZW1wdHkgbWVzc2FnZXMsIGl0IGhlbHBzIENocm9tZVxuICAgICAgICAgICAgICAgIC8vIHJlYWxpemUgd2hlbiBjb25uZWN0aW9uIGJyZWFrcywgYW5kIGNsb3NlIHRoZSBzb2NrZXQuIFdlIHRoZW4gdGhyb3cgYW5cbiAgICAgICAgICAgICAgICAvLyBlcnJvciwgYW5kIHRoYXQgZ2l2ZSB1cyB0aGUgb3Bwb3J0dW5pdHkgdG8gYXR0ZW1wdCB0byByZWNvbm5lY3QuXG4gICAgICAgICAgICAgICAgc3ViID0gT2JzZXJ2YWJsZS5pbnRlcnZhbCh0aGlzLnRpbWVvdXQsIHRoaXMuc2VydmljZXMuc2NoZWR1bGVyKS5zdWJzY3JpYmUoXyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3cy5zZW5kKFwiXCIpXG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2goZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAga29uc29sZS5sb2coXCJQaW5nIGVycm9yXCIsIGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHdzLm9uY2xvc2UgPSBjbG9zZSA9PiB7XG4gICAgICAgICAgICAgICAga29uc29sZS5sb2coXCJXZWJTb2NrZXQgY2xvc2VcIiwgY2xvc2UpO1xuICAgICAgICAgICAgICAgIGlmIChzdWIpIHN1Yi51bnN1YnNjcmliZSgpO1xuXG4gICAgICAgICAgICAgICAgLy8gUnhKUy5yZXRyeVdoZW4gaGFzIGEgYnVnIHRoYXQgd291bGQgY2F1c2UgXCJlcnJvclwiIHNpZ25hbCB0byBiZSBzZW50IGFmdGVyIHRoZSBvYnNlcnZhYmxlIGlzIGNvbXBsZXRlZC9lcnJvcmVkLlxuICAgICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gZ3VhcmQgYWdhaW5zdCBleHRyYW5lb3VzIFwiZXJyb3JcIiBzaWduYWwgdG8gd29ya2Fyb3VuZCB0aGUgYnVnLlxuICAgICAgICAgICAgICAgIGNsb3NlZCB8fCBzdWJzY3JpYmVyLmVycm9yKGNsb3NlKTtcbiAgICAgICAgICAgICAgICBjbG9zZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB3cy5vbmVycm9yID0gZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgIGtvbnNvbGUubG9nKFwiV2ViU29ja2V0IGVycm9yXCIsIGVycm9yKTtcbiAgICAgICAgICAgICAgICBpZiAoc3ViKSBzdWIudW5zdWJzY3JpYmUoKTtcblxuICAgICAgICAgICAgICAgIC8vIFJ4SlMucmV0cnlXaGVuIGhhcyBhIGJ1ZyB0aGF0IHdvdWxkIGNhdXNlIFwiZXJyb3JcIiBzaWduYWwgdG8gYmUgc2VudCBhZnRlciB0aGUgb2JzZXJ2YWJsZSBpcyBjb21wbGV0ZWQvZXJyb3JlZC5cbiAgICAgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIGd1YXJkIGFnYWluc3QgZXh0cmFuZW91cyBcImVycm9yXCIgc2lnbmFsIHRvIHdvcmthcm91bmQgdGhlIGJ1Zy5cbiAgICAgICAgICAgICAgICBjbG9zZWQgfHwgc3Vic2NyaWJlci5lcnJvcihlcnJvcik7XG4gICAgICAgICAgICAgICAgY2xvc2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgd3Mub25tZXNzYWdlID0gbWVzc2FnZSA9PiBtZXNzYWdlLmRhdGEgJiYgc3Vic2NyaWJlci5uZXh0KEpTT04ucGFyc2UobWVzc2FnZS5kYXRhKSk7XG5cbiAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlICd1bnN1YnNjcmliZScgbWV0aG9kLCB3aGljaCBpcyBjYWxsZWQgd2hlbiB0aGlzIG9ic2VydmFibGUgaXMgZGlzcG9zZWQuXG4gICAgICAgICAgICAvLyBXaGVuIHRoZSBXZWJTb2NrZXQgY2xvc2VzIGl0c2VsZiwgd2UgdGhyb3cgYW4gZXJyb3IsIGFuZCB0aGlzIGZ1bmN0aW9uIGlzIGV2ZW50dWFsbHkgY2FsbGVkLlxuICAgICAgICAgICAgLy8gV2hlbiB0aGUgb2JzZXJ2YWJsZSBpcyBjbG9zZWQgZmlyc3QgKGUuZy4gd2hlbiB0ZWFyaW5nIGRvd24gYSBXZWJDaGF0IGluc3RhbmNlKSB0aGVuXG4gICAgICAgICAgICAvLyB3ZSBuZWVkIHRvIG1hbnVhbGx5IGNsb3NlIHRoZSBXZWJTb2NrZXQuXG4gICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh3cy5yZWFkeVN0YXRlID09PSAwIHx8IHdzLnJlYWR5U3RhdGUgPT09IDEpIHdzLmNsb3NlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pIGFzIE9ic2VydmFibGU8VD5cbiAgICB9XG5cbiAgICBwcml2YXRlIHJlY29ubmVjdFRvQ29udmVyc2F0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jaGVja0Nvbm5lY3Rpb24odHJ1ZSlcbiAgICAgICAgLmZsYXRNYXAoXyA9PlxuICAgICAgICAgICAgdGhpcy5zZXJ2aWNlcy5hamF4KHtcbiAgICAgICAgICAgICAgICBtZXRob2Q6IFwiR0VUXCIsXG4gICAgICAgICAgICAgICAgdXJsOiBgJHt0aGlzLmRvbWFpbn0vY29udmVyc2F0aW9ucy8ke3RoaXMuY29udmVyc2F0aW9uSWR9P3dhdGVybWFyaz0ke3RoaXMud2F0ZXJtYXJrfWAsXG4gICAgICAgICAgICAgICAgdGltZW91dDogdGhpcy50aW1lb3V0LFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgXCJBY2NlcHRcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuY29tbW9uSGVhZGVycygpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5kbyhyZXN1bHQgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5zZWNyZXQpXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9rZW4gPSByZXN1bHQucmVzcG9uc2UudG9rZW47XG4gICAgICAgICAgICAgICAgdGhpcy5zdHJlYW1VcmwgPSByZXN1bHQucmVzcG9uc2Uuc3RyZWFtVXJsO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5tYXAoXyA9PiBudWxsKVxuICAgICAgICAgICAgLnJldHJ5V2hlbihlcnJvciQgPT4gZXJyb3IkXG4gICAgICAgICAgICAgICAgLm1lcmdlTWFwKGVycm9yID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PT0gNDAzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB0b2tlbiBoYXMgZXhwaXJlZC4gV2UgY2FuJ3QgcmVjb3ZlciBmcm9tIHRoaXMgaGVyZSwgYnV0IHRoZSBlbWJlZGRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdlYnNpdGUgbWlnaHQgZXZlbnR1YWxseSBjYWxsIHJlY29ubmVjdCgpIHdpdGggYSBuZXcgdG9rZW4gYW5kIHN0cmVhbVVybC5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZXhwaXJlZFRva2VuKCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZXJyb3Iuc3RhdHVzID09PSA0MDQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPYnNlcnZhYmxlLnRocm93KGVycm9yQ29udmVyc2F0aW9uRW5kZWQsIHRoaXMuc2VydmljZXMuc2NoZWR1bGVyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBPYnNlcnZhYmxlLm9mKGVycm9yLCB0aGlzLnNlcnZpY2VzLnNjaGVkdWxlcik7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuZGVsYXkodGhpcy50aW1lb3V0LCB0aGlzLnNlcnZpY2VzLnNjaGVkdWxlcilcbiAgICAgICAgICAgICAgICAudGFrZSh0aGlzLnJldHJpZXMpXG4gICAgICAgICAgICApXG4gICAgICAgIClcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbW1vbkhlYWRlcnMoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBcIkF1dGhvcml6YXRpb25cIjogYEJlYXJlciAke3RoaXMudG9rZW59YCxcbiAgICAgICAgICAgIFwieC1tcy1ib3QtYWdlbnRcIjogdGhpcy5fYm90QWdlbnRcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEJvdEFnZW50KGN1c3RvbUFnZW50OiBzdHJpbmcgPSAnJyk6IHN0cmluZyB7XG4gICAgICAgIGxldCBjbGllbnRBZ2VudCA9ICdkaXJlY3RsaW5lanMnXG5cbiAgICAgICAgaWYgKGN1c3RvbUFnZW50KSB7XG4gICAgICAgICAgICBjbGllbnRBZ2VudCArPSBgOyAke2N1c3RvbUFnZW50fWBcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBgJHtESVJFQ1RfTElORV9WRVJTSU9OfSAoJHtjbGllbnRBZ2VudH0gJHtwcm9jZXNzLmVudi5ucG1fcGFja2FnZV92ZXJzaW9ufSlgO1xuICAgIH1cblxuICAgIHNldFVzZXJJZCh1c2VySWQ6IHN0cmluZykge1xuICAgICAgICBpZiAodGhpcy5jb25uZWN0aW9uU3RhdHVzJC5nZXRWYWx1ZSgpID09PSBDb25uZWN0aW9uU3RhdHVzLk9ubGluZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdEaXJlY3RMaW5lSlM6IEl0IGlzIGNvbm5lY3RlZCwgd2UgY2Fubm90IHNldCB1c2VyIGlkLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdXNlcklkRnJvbVRva2VuID0gdGhpcy5wYXJzZVRva2VuKHRoaXMudG9rZW4pO1xuICAgICAgICBpZiAodXNlcklkRnJvbVRva2VuKSB7XG4gICAgICAgICAgICByZXR1cm4gY29uc29sZS53YXJuKCdEaXJlY3RMaW5lSlM6IHVzZXIgaWQgaXMgYWxyZWFkeSBzZXQgaW4gdG9rZW4sIHdpbGwgaWdub3JlIHRoaXMgdXNlciBpZC4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICgvXmRsXy91LnRlc3QodXNlcklkKSkge1xuICAgICAgICAgICAgcmV0dXJuIGNvbnNvbGUud2FybignRGlyZWN0TGluZUpTOiB1c2VyIGlkIHByZWZpeGVkIHdpdGggXCJkbF9cIiBpcyByZXNlcnZlZCBhbmQgbXVzdCBiZSBlbWJlZGRlZCBpbnRvIHRoZSBEaXJlY3QgTGluZSB0b2tlbiB0byBwcmV2ZW50IGZvcmdlcnkuJyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVzZXJJZE9uU3RhcnRDb252ZXJzYXRpb24gPSB1c2VySWQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwYXJzZVRva2VuKHRva2VuOiBzdHJpbmcpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHsgdXNlciB9ID0gand0RGVjb2RlPEp3dFBheWxvYWQ+KHRva2VuKSBhcyB7IFtrZXk6IHN0cmluZ106IGFueTsgfTtcbiAgICAgICAgICAgIHJldHVybiB1c2VyO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIEludmFsaWRUb2tlbkVycm9yKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxufVxuIl19","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = dedupeFilenames;\n\nvar _parseFilename2 = _interopRequireDefault(require(\"./parseFilename\"));\n\nfunction dedupeFilenames(array) {\n  var nextArray = [];\n  array.forEach(function (value) {\n    var _parseFilename = (0, _parseFilename2[\"default\"])(value),\n        extname = _parseFilename.extname,\n        name = _parseFilename.name;\n\n    var count = 0;\n    var nextValue = value;\n\n    while (nextArray.includes(nextValue)) {\n      nextValue = [name, \"(\".concat(++count, \")\")].filter(function (segment) {\n        return segment;\n      }).join(' ') + extname;\n    }\n\n    nextArray.push(nextValue);\n  });\n  return nextArray;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9kZWR1cGVGaWxlbmFtZXMudHMiXSwibmFtZXMiOlsiZGVkdXBlRmlsZW5hbWVzIiwiYXJyYXkiLCJuZXh0QXJyYXkiLCJmb3JFYWNoIiwidmFsdWUiLCJleHRuYW1lIiwibmFtZSIsImNvdW50IiwibmV4dFZhbHVlIiwiaW5jbHVkZXMiLCJmaWx0ZXIiLCJzZWdtZW50Iiwiam9pbiIsInB1c2giXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUVlLFNBQVNBLGVBQVQsQ0FBeUJDLEtBQXpCLEVBQTBDO0FBQ3JELE1BQU1DLFNBQW1CLEdBQUcsRUFBNUI7QUFFQUQsRUFBQUEsS0FBSyxDQUFDRSxPQUFOLENBQWMsVUFBQUMsS0FBSyxFQUFJO0FBQ25CLHlCQUEwQixnQ0FBY0EsS0FBZCxDQUExQjtBQUFBLFFBQVFDLE9BQVIsa0JBQVFBLE9BQVI7QUFBQSxRQUFpQkMsSUFBakIsa0JBQWlCQSxJQUFqQjs7QUFDQSxRQUFJQyxLQUFLLEdBQUcsQ0FBWjtBQUNBLFFBQUlDLFNBQVMsR0FBR0osS0FBaEI7O0FBRUEsV0FBT0YsU0FBUyxDQUFDTyxRQUFWLENBQW1CRCxTQUFuQixDQUFQLEVBQXNDO0FBQ2xDQSxNQUFBQSxTQUFTLEdBQUcsQ0FBQ0YsSUFBRCxhQUFhLEVBQUVDLEtBQWYsUUFBMkJHLE1BQTNCLENBQWtDLFVBQUFDLE9BQU87QUFBQSxlQUFJQSxPQUFKO0FBQUEsT0FBekMsRUFBc0RDLElBQXRELENBQTJELEdBQTNELElBQWtFUCxPQUE5RTtBQUNIOztBQUVESCxJQUFBQSxTQUFTLENBQUNXLElBQVYsQ0FBZUwsU0FBZjtBQUNILEdBVkQ7QUFZQSxTQUFPTixTQUFQO0FBQ0giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGFyc2VGaWxlbmFtZSBmcm9tICcuL3BhcnNlRmlsZW5hbWUnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBkZWR1cGVGaWxlbmFtZXMoYXJyYXk6IHN0cmluZ1tdKSB7XG4gICAgY29uc3QgbmV4dEFycmF5OiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgYXJyYXkuZm9yRWFjaCh2YWx1ZSA9PiB7XG4gICAgICAgIGNvbnN0IHsgZXh0bmFtZSwgbmFtZSB9ID0gcGFyc2VGaWxlbmFtZSh2YWx1ZSk7XG4gICAgICAgIGxldCBjb3VudCA9IDA7XG4gICAgICAgIGxldCBuZXh0VmFsdWUgPSB2YWx1ZTtcblxuICAgICAgICB3aGlsZSAobmV4dEFycmF5LmluY2x1ZGVzKG5leHRWYWx1ZSkpIHtcbiAgICAgICAgICAgIG5leHRWYWx1ZSA9IFtuYW1lLCBgKCR7ICgrK2NvdW50KSB9KWBdLmZpbHRlcihzZWdtZW50ID0+IHNlZ21lbnQpLmpvaW4oJyAnKSArIGV4dG5hbWU7XG4gICAgICAgIH1cblxuICAgICAgICBuZXh0QXJyYXkucHVzaChuZXh0VmFsdWUpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIG5leHRBcnJheTtcbn1cbiJdfQ=="],"names":["_interopRequireDefault","_typeof","Object","defineProperty","exports","value","DirectLineStreaming","_objectWithoutProperties2","_regenerator","_classPrivateFieldGet2","_classPrivateFieldSet2","_toConsumableArray2","_asyncToGenerator2","_classCallCheck2","_createClass2","_defineProperty2","_BehaviorSubject","_buffer","_Observable","BFSE","obj","nodeInterop","__esModule","cache","_getRequireWildcardCache","has","get","newObj","hasPropertyDescriptor","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_interopRequireWildcard","_createDeferred","_crossFetch","_directLine","_WebSocketClientWithNetworkInformation","_excluded","WeakMap","cacheBabelInterop","cacheNodeInterop","StreamHandler","s","c$","sq","this","subscriber","connectionStatus$","shouldQueue","_processRequest","mark","_callee","request","logger","streams","stream0","activitySetJson","activitySet","activity","attachments","stream","attachment","dataUri","wrap","_context","prev","next","shift","readAsString","sent","JSON","parse","activities","length","error","Error","abrupt","StreamingResponse","create","push","contentType","contentUrl","activityQueue","stop","_x","_x2","apply","arguments","_this","subscribe","forEach","a","complete","_networkInformation","options","_this2","BehaviorSubject","ConnectionStatus","Uninitialized","writable","networkInformation","addEventListener","removeEventListener","type","console","warn","token","refreshToken","ExpiredToken","domain","conversationId","_botAgent","getBotAgent","botAgent","queueActivities","activity$","Observable","_ref","_callee2","_context2","activitySubscriber","theStreamHandler","connectDeferred","resolve","_x3","share","connectWithRetryAsync","_connectWithRetryAsync","_connectAsync","_waitUntilOnline","_refreshToken","_ref2","getValue","Ended","streamConnection","disconnect","Authorization","concat","customAgent","undefined","clientAgent","_callee3","numberOfAttempts","res","_yield$res$json","_context3","waitUntilOnline","Promise","r","setTimeout","refreshTokenLifetime","method","headers","commonHeaders","ok","json","status","statusText","t0","_this3","FailedToConnect","postMessageWithAttachments","resp$","_ref3","_callee4","resp","numberOfStreams","idString","_JSON$parse","id","_context4","StreamingRequest","setBody","stringify","send","statusCode","Id","_x4","message","_this4","messageWithoutAttachments","httpContentList","_callee6","url","activityStream","_yield$resp$streams$","_context6","all","map","_ref5","_callee5","media","_context5","arrayBuffer","t1","_x5","_ref6","buffer","Buffer","from","SubscribableStream","write","httpContent","HttpContent","contentLength","addStream","e","readAsJson","_callee7","_this5","_context7","reject","cs","Online","_callee9","re","params","abortController","urlSearchParams","wsUrl","_this6","_context9","RegExp","test","AbortController","URLSearchParams","toString","replace","_ref7","_callee8","response","responseString","conversation","_context8","disconnectionHandler","requestHandler","processRequest","streamingRequest","signal","aborted","connect","flush","_x6","_x7","abort","_callee10","numRetries","start","_this7","_context10","promise","Connecting","Date","now","connectAsync","getRetryDelay","Math","floor","random","_assertThisInitialized2","_get2","_inherits2","_possibleConstructorReturn2","_getPrototypeOf2","_classPrivateFieldGet4","_botframeworkStreaming","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","valueOf","_isNativeReflectConstruct","result","Super","NewTarget","constructor","_connectCalled","_handleNetworkInformationChange","_initialNetworkInformationType","WebSocketClientWithNetworkInformation","_WebSocketClient","_super","initialType","_classPrivateFieldGet3","WebSocketClient","module","n","t","o","i","f","u","code","p","require","__awaiter","thisArg","_arguments","P","generator","adopt","fulfilled","step","rejected","done","then","__generator","body","y","g","_","label","trys","ops","verb","Symbol","iterator","v","op","TypeError","pop","PayloadAssembler","subscribableStream_1","payloads_1","contentStream_1","streamManager","_byteOrderMark","_utf","header","payloadType","payloadLength","end","_onCompleted","onCompleted","getPayloadStream","createPayloadStream","onReceive","_contentLength","PayloadTypes","process","catch","close","closeStream","payloadFromJson","charCodeAt","slice","stripBOM","input","streamData","streamDataAsString","_a","read","processResponse","responsePayload","receiveResponse","processStreams","requestPayload","receiveRequest","path","_b","responseStream","contentAssembler","getPayloadAssembler","ContentStream","assembler","enumerable","configurable","getStream","cancel","readAll","bufferArray","join","stringToParse","allData","count","chunk","readToEnd","callback","size","CancelDisassembler","sender","disassemble","sendPayload","extendStatics","__extends","d","b","setPrototypeOf","__proto__","Array","String","__","HttpContentStreamDisassembler","payloadDisassembler_1","contentStream","content","streamLength","PayloadDisassembler","serialize","item","RequestDisassembler","payloadTypes_1","_c","_d","payload","_e","description","ResponseDisassembler","HttpContentStream","protocol_base_1","_f","generateGuid","BrowserWebSocket","RequestHandler","httpContentStream_1","requestHandler_1","streamingRequest_1","streamingResponse_1","index_browser_1","__createBinding","m","k","k2","__exportStar","PayloadReceiver","headerSerializer_1","payloadConstants_1","transportDisconnectedEvent_1","_receiver","receiver","receivePackets","receiveAction","_getStream","_receiveAction","event","TransportDisconnectedEvent","Empty","isConnected","disconnected","err","readSoFar","isStream","bytesActuallyRead","err_1","PayloadConstants","MaxHeaderLength","receive","_receiveHeaderBuffer","HeaderSerializer","deserialize","MaxPayloadLength","min","_receivePayloadBuffer","byteLength","PayloadSender","_sender","sentCallback","packet","writePacket","leftOver","sendHeaderBuffer","alloc","reason","TypeOffset","Encoding","Delimiter","TypeDelimiterOffset","headerLengthPadder","LengthLength","LengthOffset","LengthDelimeterOffset","IdOffset","IdDelimeterOffset","End","NotEnd","EndOffset","Terminator","TerminatorOffset","jsonBuffer","headerArray","split","headerEnd","Number","MinLength","match","IdLength","lengthValue","totalLength","padChar","lengthString","PayloadAssemblerManager","payloadAssembler_1","onReceiveResponse","onReceiveRequest","activeAssemblers","createPayloadAssembler","RequestManager","PendingRequest","_pendingRequests","pendingRequestCount","keys","signalResponse","requestId","pendingRequest","getResponse","rejectAllResponses","entries","SendOperations","cancelDisassembler_1","httpContentStreamDisassembler_1","requestDisassembler_1","responseDisassembler_1","payloadSender","sendRequest","sendResponse","sendCancelStream","cancelStream","StreamManager","onCancelStream","splice","indexOf","targetStream","ProtocolAdapter","payloadAssemblerManager_1","sendOperations_1","streamManager_1","requestManager","payloadReceiver","sendOperations","assemblerManager","getResponsePromise","contentStreamAssembler","bufferList","_write","_encoding","_onData","_read","total","onData","Duplex","uuid_1","v4","socket","webSocket","serverAddress","resolver","rejector","WebSocket","onerror","onopen","readyState","setOnMessageHandler","handler","bufferKey","packets","onmessage","evt","fileReader","FileReader","queueEntry","onload","target","readAsArrayBuffer","data","setOnErrorHandler","setOnCloseHandler","onclose","browserWebSocket_1","payloadTransport_1","protocolAdapter_1","webSocketTransport_1","_url","_requestHandler","_disconnectionHandler","_requestManager","onConnectionDisconnected","bind","_protocolAdapter","ws","transport","WebSocketTransport","args","browserWebSocketClient_1","_queue","_activeOffset","_activeReceiveCount","onError","onClose","_activeReceiveResolve","_activeReceiveReject","trySignalData","_active","available","copy","toByteArray","fromByteArray","lookup","revLookup","Arr","Uint8Array","len","getLens","b64","validLen","lens","placeHoldersLen","_byteLength","tmp","arr","curByte","tripletToBase64","num","encodeChunk","uint8","output","extraBytes","parts","maxChunkLength","len2","base64","ieee754","SlowBuffer","INSPECT_MAX_BYTES","K_MAX_LENGTH","typedArraySupport","foo","createBuffer","RangeError","buf","arg","encodingOrOffset","allocUnsafe","fromString","ArrayBuffer","isView","fromArrayLike","isInstance","fromArrayBuffer","fromObject","toPrimitive","assertSize","fill","encoding","checked","string","isEncoding","actual","array","byteOffset","isBuffer","numberIsNaN","isArray","mustMatch","loweredCase","utf8ToBytes","base64ToBytes","toLowerCase","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","val","dir","arrayIndexOf","lastIndexOf","indexSize","arrLength","valLength","readUInt16BE","foundIndex","found","j","hexWrite","offset","remaining","strLen","parsed","parseInt","substr","utf8Write","blitBuffer","asciiWrite","asciiToBytes","latin1Write","base64Write","ucs2Write","utf16leToBytes","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","decodeCodePointsArray","kMaxLength","TYPED_ARRAY_SUPPORT","species","poolSize","allocUnsafeSlow","_isBuffer","compare","x","list","pos","swap16","swap32","swap64","toLocaleString","equals","inspect","str","max","trim","thisStart","thisEnd","thisCopy","targetCopy","includes","isFinite","toJSON","_arr","MAX_ARGUMENTS_LENGTH","codePoints","fromCharCode","ret","out","toHex","bytes","checkOffset","ext","checkInt","checkIEEE754","writeFloat","littleEndian","noAssert","writeDouble","newBuf","subarray","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","pow","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","copyWithin","INVALID_BASE64_RE","base64clean","units","Infinity","leadSurrogate","byteArray","c","hi","lo","src","dst","name","ReflectOwnKeys","R","ReflectApply","Function","ProcessEmitWarning","warning","ownKeys","getOwnPropertySymbols","getOwnPropertyNames","NumberIsNaN","isNaN","EventEmitter","init","once","_events","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","listener","_getMaxListeners","that","_addListener","prepend","events","existing","newListener","emit","unshift","warned","w","emitter","onceWrapper","fired","removeListener","wrapFn","_onceWrap","state","wrapped","_listeners","unwrap","evlistener","unwrapListeners","arrayClone","listenerCount","spliceOne","index","eventListener","errorListener","getPrototypeOf","setMaxListeners","getMaxListeners","doError","er","context","listeners","addListener","on","prependListener","prependOnceListener","position","originalListener","off","removeAllListeners","rawListeners","eventNames","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","NaN","rt","abs","log","LN2","ctor","superCtor","super_","TempCtor","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","runClearTimeout","marker","clearTimeout","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","timeout","run","Item","noop","nextTick","title","browser","env","argv","version","versions","binding","cwd","chdir","umask","copyProps","SafeBuffer","Stream","EE","inherits","Readable","Writable","Transform","PassThrough","finished","pipeline","pipe","dest","source","ondata","pause","ondrain","readable","resume","_isStdio","onend","didOnEnd","destroy","cleanup","_inheritsLoose","subClass","superClass","codes","createErrorType","Base","getMessage","arg1","arg2","arg3","NodeError","_Base","oneOf","expected","thing","startsWith","search","endsWith","this_len","substring","determiner","msg","objectKeys","allowHalfOpen","_writableState","ended","onEndNT","self","highWaterMark","getBuffer","_readableState","destroyed","_transform","cb","global","ReadableState","EElistenerCount","OurUint8Array","_uint8ArrayToBuffer","_isUint8Array","debug","debugUtil","debuglog","StringDecoder","createReadableStreamAsyncIterator","BufferList","destroyImpl","getHighWaterMark","_require$codes","ERR_INVALID_ARG_TYPE","ERR_STREAM_PUSH_AFTER_EOF","ERR_METHOD_NOT_IMPLEMENTED","ERR_STREAM_UNSHIFT_AFTER_END_EVENT","errorOrDestroy","kProxyEvents","fn","isDuplex","objectMode","readableObjectMode","pipes","pipesCount","flowing","endEmitted","reading","sync","needReadable","emittedReadable","readableListening","resumeScheduled","paused","emitClose","autoDestroy","defaultEncoding","awaitDrain","readingMore","decoder","_destroy","readableAddChunk","addToFront","skipChunkCheck","onEofChunk","chunkInvalid","addChunk","maybeReadMore","emitReadable","_undestroy","undestroy","isPaused","setEncoding","enc","head","clear","MAX_HWM","computeNewHighWaterMark","howMuchToRead","emitReadable_","flow","maybeReadMore_","pipeOnDrain","updateReadableListening","nReadingNextTick","resume_","fromList","first","consume","endReadable","endReadableNT","wState","xs","l","nOrig","doRead","pipeOpts","endFn","stdout","stderr","unpipe","onunpipe","unpipeInfo","hasUnpiped","cleanedUp","onfinish","needDrain","dests","ev","asyncIterator","_fromList","iterable","opts","window","ERR_MULTIPLE_CALLBACK","ERR_TRANSFORM_ALREADY_TRANSFORMING","ERR_TRANSFORM_WITH_LENGTH_0","afterTransform","ts","_transformState","transforming","writecb","writechunk","rs","needTransform","writeencoding","transform","_flush","prefinish","err2","CorkedRequest","entry","finish","onCorkedFinish","WritableState","internalUtil","deprecate","realHasInstance","ERR_STREAM_CANNOT_PIPE","ERR_STREAM_DESTROYED","ERR_STREAM_NULL_VALUES","ERR_STREAM_WRITE_AFTER_END","ERR_UNKNOWN_ENCODING","nop","writableObjectMode","finalCalled","ending","noDecode","decodeStrings","writing","corked","bufferProcessing","onwrite","writelen","bufferedRequest","lastBufferedRequest","pendingcb","prefinished","errorEmitted","bufferedRequestCount","corkedRequestsFree","writev","_writev","final","_final","writeAfterEnd","validChunk","decodeChunk","writeOrBuffer","isBuf","newChunk","last","doWrite","onwriteError","finishMaybe","onwriteStateUpdate","needFinish","clearBuffer","afterWrite","onwriteDrain","holder","allBuffers","callFinal","need","rState","endWritable","corkReq","current","hasInstance","object","cork","uncork","setDefaultEncoding","_Object$setPrototypeO","_defineProperty","kLastResolve","kLastReject","kError","kEnded","kLastPromise","kHandlePromise","kStream","createIterResult","readAndResolve","iter","onReadable","wrapForNext","lastPromise","AsyncIteratorPrototype","ReadableStreamAsyncIteratorPrototype","_Object$create","enumerableOnly","symbols","filter","sym","_objectSpread","getOwnPropertyDescriptors","defineProperties","_classCallCheck","instance","Constructor","_defineProperties","props","descriptor","_createClass","protoProps","staticProps","custom","copyBuffer","tail","hasStrings","_getString","_getBuffer","nb","depth","customInspect","readableDestroyed","writableDestroyed","emitErrorNT","emitCloseNT","emitErrorAndCloseNT","ERR_STREAM_PREMATURE_CLOSE","called","_len","_key","isRequest","setHeader","eos","onlegacyfinish","writableEnded","readableEnded","onrequest","req","ERR_MISSING_ARGS","destroyer","closed","to","popCallback","destroys","reduce","ERR_INVALID_OPT_VALUE","highWaterMarkFrom","duplexKey","hwm","_normalizeEncoding","retried","normalizeEncoding","nenc","text","utf16Text","utf16End","fillLast","utf8FillLast","base64Text","base64End","simpleWrite","simpleEnd","lastNeed","lastTotal","lastChar","utf8CheckByte","byte","utf8CheckIncomplete","utf8CheckExtraBytes","utf8Text","utf8End","config","deprecated","trace","localStorage","_v","default","_v2","_v3","_v4","_nil","_version","_validate","_stringify","_parse","md5","unescape","encodeURIComponent","md5ToHexEncodedArray","wordsToMd5","bytesToWords","length32","hexTab","hex","charAt","getOutputLength","inputLength8","olda","oldb","oldc","oldd","md5ff","md5gg","md5hh","md5ii","safeAdd","length8","Uint32Array","lsw","bitRotateLeft","cnt","md5cmn","q","_default","uuid","getRandomValues","rng","rnds8","crypto","msCrypto","z","ROTL","sha1","K","H","N","ceil","M","W","T","byteToHex","_rng","_nodeId","_clockseq","_lastMSecs","_lastNSecs","v1","node","clockseq","seedBytes","msecs","nsecs","dt","tl","tmh","_md","URL","DNS","stringToBytes","hashfunc","generateUUID","namespace","rnds","_sha","_regex","validate","filename","_filename$split$rever","reverse","_filename$split$rever2","_toArray2","extname","deferred","_directLineStreaming","DirectLine","_async","_jwtDecode","_dedupeFilenames","wrapAjaxWithRetry","scheduler","notImplemented","assign","urlOrRequest","retryAfterValue","xhr","getResponseHeader","retryAfter","timer","flatMap","post","put","patch","getJSON","intervalRefreshToken","lifetimeRefreshToken","errorExpiredToken","errorConversationEnded","errorFailedToConnect","konsole","_console","optionalParams","services","secret","conversationStartProperties","locale","localeOnStartConversation","watermark","streamUrl","retries","async","ajax","parsedPollingInterval","pollingInterval","expiredTokenExhaustion","setConnectionStatusFallback","webSocketActivity$","pollingGetActivity$","obs","connectionStatus","of","startConversation","referenceGrammarId","refreshTokenLoop","take","connectionStatusFrom","connectionStatusTo","maxAttempts","attempts","currStatus","protectedConnectionStatus","user","userIdOnStartConversation","ajaxResponse","retryWhen","error$","mergeMap","delay","tokenRefreshSubscription","interval","checkConnection","expiredToken","unsubscribe","withCredentials","sessionId","catchExpiredToken","catchPostError","formData","attachmentNames","cleansedAttachments","FormData","append","Blob","responseType","_this8","poller$","trigger$","startTimestamp","Accept","empty","activityGroup","observableFromActivityGroup","_this9","observableWebSocket","reconnectToConversation","_this10","open","_this11","userId","parseToken","InvalidTokenError","nextArray","_parseFilename","_parseFilename2","nextValue","segment"],"sourceRoot":""}