{"version":3,"sources":["webpack:///src/assets/js/jquery-3.4.1.min.js","webpack:///src/assets/js/popper.min.js","webpack:///src/assets/js/bootstrap.min.js","webpack:///src/assets/PPL/socket.io.js","webpack:///src/assets/PPL/adapter.js","webpack:///src/assets/PPL/sc.websocket.js","webpack:///src/assets/PPL/ics.js","webpack:///node_modules/owl.carousel/dist/owl.carousel.min.js"],"names":[],"mappings":"AAAA;AACA,eAAe,aAAa,uGAAuG,2EAA2E,YAAY,MAAM,sDAAsD,aAAa,4FAA4F,mEAAmE,eAAe,wDAAwD,eAAe,6BAA6B,IAAI,qCAAqC,kBAAkB,2CAA2C,0FAA0F,gDAAgD,cAAc,6FAA6F,8BAA8B,0BAA0B,wCAAwC,cAAc,yCAAyC,4EAA4E,kBAAkB,mDAAmD,oBAAoB,iBAAiB,4DAA4D,uBAAuB,oCAAoC,2BAA2B,kBAAkB,sBAAsB,iBAAiB,+CAA+C,qBAAqB,GAAG,kBAAkB,+CAA+C,kBAAkB,kBAAkB,iBAAiB,mBAAmB,gBAAgB,iCAAiC,8CAA8C,gBAAgB,2CAA2C,oCAAoC,iCAAiC,kCAAkC,6BAA6B,gDAAgD,qCAAqC,sBAAsB,IAAI,sLAAsL,kDAAkD,SAAS,WAAW,kFAAkF,mBAAmB,kBAAkB,2BAA2B,QAAQ,qIAAqI,2BAA2B,MAAM,oBAAoB,SAAS,0BAA0B,KAAK,iBAAiB,EAAE,oBAAoB,UAAU,SAAS,eAAe,IAAI,sCAAsC,kDAAkD,SAAS,kBAAkB,uCAAuC,yBAAyB,YAAY,iFAAiF,yBAAyB,gCAAgC,qBAAqB,mCAAmC,IAAI,gBAAgB,oBAAoB,sBAAsB,iCAAiC,IAAI,iCAAiC,SAAS,qBAAqB,iBAAiB,uBAAuB,IAAI,qCAAqC,iDAAiD,qBAAqB,kBAAkB,+KAA+K,oCAAoC,EAAE,kBAAkB,iIAAiI,uBAAuB,KAAK,yEAAyE,uBAAuB,IAAI,yBAAyB,SAAS,ooBAAooB,ucAAuc,sEAAsE,IAAI,4FAA4F,IAAI,4CAA4C,mBAAmB,gGAAgG,2EAA2E,+FAA+F,eAAe,IAAI,mBAAmB,6DAA6D,EAAE,+BAA+B,EAAE,IAAI,6EAA6E,SAAS,GAAG,6BAA6B,qBAAqB,eAAe,mBAAmB,qBAAqB,eAAe,qBAAqB,wDAAwD,iEAAiE,sDAAsD,oCAAoC,UAAU,qCAAqC,+BAA+B,wEAAwE,KAAK,sDAAsD,gHAAgH,qFAAqF,6BAA6B,uFAAuF,kCAAkC,gDAAgD,IAAI,0CAA0C,SAAS,QAAQ,QAAQ,iCAAiC,kCAAkC,cAAc,SAAS,uBAAuB,oEAAoE,eAAe,iBAAiB,eAAe,kCAAkC,IAAI,aAAa,SAAS,SAAS,QAAQ,kDAAkD,iBAAiB,8BAA8B,+BAA+B,iBAAiB,4EAA4E,cAAc,6CAA6C,cAAc,eAAe,mBAAmB,sDAAsD,eAAe,mBAAmB,+BAA+B,+CAA+C,eAAe,mBAAmB,sNAAsN,eAAe,sBAAsB,6BAA6B,oCAAoC,yCAAyC,EAAE,EAAE,eAAe,wDAAwD,wBAAwB,wBAAwB,4DAA4D,wCAAwC,8BAA8B,iCAAiC,uPAAuP,oDAAoD,wCAAwC,8EAA8E,qFAAqF,kFAAkF,qCAAqC,uBAAuB,mBAAmB,iCAAiC,yBAAyB,4CAA4C,0BAA0B,iBAAiB,2BAA2B,uBAAuB,mBAAmB,uEAAuE,uBAAuB,yBAAyB,4CAA4C,gCAAgC,MAAM,uDAAuD,6BAA6B,sEAAsE,UAAU,kDAAkD,8GAA8G,eAAe,2CAA2C,YAAY,yCAAyC,SAAS,SAAS,sDAAsD,sFAAsF,+DAA+D,8cAA8c,iBAAiB,gGAAgG,+BAA+B,4WAA4W,mJAAmJ,uEAAuE,oJAAoJ,2DAA2D,4HAA4H,eAAe,4CAA4C,SAAS,mBAAmB,uBAAuB,4DAA4D,sPAAsP,eAAe,uBAAuB,oDAAoD,6DAA6D,wBAAwB,IAAI,kCAAkC,IAAI,kCAAkC,sBAAsB,gDAAgD,IAAI,0BAA0B,yBAAyB,kCAAkC,0GAA0G,kBAAkB,yEAAyE,SAAS,QAAQ,iCAAiC,2BAA2B,4CAA4C,uBAAuB,+BAA+B,+FAA+F,2GAA2G,uBAAuB,4BAA4B,sBAAsB,6DAA6D,2BAA2B,mBAAmB,kEAAkE,uCAAuC,2BAA2B,gBAAgB,0BAA0B,4BAA4B,MAAM,yBAAyB,uDAAuD,mBAAmB,EAAE,wBAAwB,wCAAwC,4BAA4B,SAAS,kBAAkB,oDAAoD,QAAQ,WAAW,KAAK,0BAA0B,MAAM,iBAAiB,MAAM,+BAA+B,MAAM,uBAAuB,YAAY,iBAAiB,yHAAyH,mBAAmB,iMAAiM,oBAAoB,oBAAoB,oLAAoL,SAAS,gBAAgB,qCAAqC,yBAAyB,SAAS,aAAa,iDAAiD,mBAAmB,eAAe,qEAAqE,0HAA0H,EAAE,sBAAsB,mBAAmB,mBAAmB,iQAAiQ,2BAA2B,kEAAkE,gCAAgC,qBAAqB,iBAAiB,mHAAmH,MAAM,MAAM,SAAS,IAAI,uEAAuE,kCAAkC,SAAS,wCAAwC,gCAAgC,iCAAiC,oDAAoD,sEAAsE,aAAa,OAAO,2CAA2C,iCAAiC,yJAAyJ,iCAAiC,0BAA0B,mCAAmC,sBAAsB,wFAAwF,wGAAwG,0BAA0B,sCAAsC,cAAc,gBAAgB,KAAK,UAAU,mBAAmB,qCAAqC,iCAAiC,kCAAkC,qCAAqC,kBAAkB,gDAAgD,qBAAqB,mBAAmB,yBAAyB,0BAA0B,sCAAsC,2CAA2C,sBAAsB,oGAAoG,MAAM,GAAG,qHAAqH,wCAAwC,UAAU,qBAAqB,kCAAkC,4BAA4B,kBAAkB,aAAa,mBAAmB,yFAAyF,oDAAoD,+BAA+B,2DAA2D,sBAAsB,gEAAgE,mBAAmB,mBAAmB,EAAE,yCAAyC,SAAS,oBAAoB,0BAA0B,oBAAoB,0BAA0B,mBAAmB,0BAA0B,oBAAoB,+BAA+B,mDAAmD,kBAAkB,MAAM,wHAAwH,qBAAqB,UAAU,wBAAwB,YAAY,wBAAwB,kBAAkB,wBAAwB,YAAY,IAAI,eAAe,SAAS,uBAAuB,YAAY,IAAI,eAAe,SAAS,wBAAwB,0BAA0B,OAAO,WAAW,SAAS,wBAAwB,oBAAoB,MAAM,WAAW,SAAS,GAAG,4BAA4B,kDAAkD,oBAAoB,SAAS,mBAAmB,oBAAoB,eAAe,eAAe,4BAA4B,IAAI,kBAAkB,SAAS,mBAAmB,wDAAwD,+BAA+B,kDAAkD,SAAS,iBAAiB,kBAAkB,MAAM,uDAAuD,6DAA6D,iCAAiC,4CAA4C,KAAK,iDAAiD,iCAAiC,UAAU,eAAe,kCAAkC,eAAe,mCAAmC,SAAS,MAAM,uBAAuB,wCAAwC,IAAI,uDAAuD,SAAS,yBAAyB,sEAAsE,oDAAoD,uBAAuB,IAAI,iBAAiB,SAAS,kFAAkF,oBAAoB,iCAAiC,2CAA2C,MAAM,SAAS,MAAM,gBAAgB,mCAAmC,iBAAiB,WAAW,4DAA4D,qEAAqE,EAAE,eAAe,+FAA+F,aAAa,wBAAwB,gBAAgB,0BAA0B,yDAAyD,gBAAgB,EAAE,IAAI,+CAA+C,KAAK,wDAAwD,UAAU,IAAI,mCAAmC,oDAAoD,+BAA+B,6EAA6E,UAAU,aAAa,wFAAwF,6BAA6B,2BAA2B,uBAAuB,SAAS,mHAAmH,iCAAiC,4FAA4F,yBAAyB,uBAAuB,YAAY,gDAAgD,4BAA4B,qCAAqC,OAAO,uBAAuB,8CAA8C,gEAAgE,2GAA2G,uBAAuB,sBAAsB,KAAK,SAAS,wCAAwC,+BAA+B,UAAU,MAAM,SAAS,iCAAiC,kBAAkB,IAAI,0BAA0B,MAAM,8CAA8C,QAAQ,+DAA+D,sBAAsB,yBAAyB,SAAS,+BAA+B,iEAAiE,yBAAyB,oGAAoG,mEAAmE,sDAAsD,oCAAoC,WAAW,qCAAqC,8FAA8F,4DAA4D,QAAQ,kEAAkE,wGAAwG,gEAAgE,iBAAiB,8EAA8E,+CAA+C,4DAA4D,+BAA+B,4GAA4G,8BAA8B,gEAAgE,iBAAiB,wCAAwC,wBAAwB,MAAM,0FAA0F,KAAK,IAAI,8KAA8K,sBAAsB,sBAAsB,kDAAkD,uBAAuB,UAAU,SAAS,iBAAiB,aAAa,EAAE,iDAAiD,SAAS,6BAA6B,gBAAgB,8DAA8D,wEAAwE,kBAAkB,mCAAmC,0BAA0B,kCAAkC,iBAAiB,0CAA0C,yBAAyB,kBAAkB,yBAAyB,WAAW,kIAAkI,sBAAsB,GAAG,cAAc,iBAAiB,6BAA6B,mEAAmE,QAAQ,IAAI,sCAAsC,GAAG,6BAA6B,IAAI,qBAAqB,6BAA6B,oBAAoB,wCAAwC,iBAAiB,wCAAwC,gBAAgB,oEAAoE,EAAE,8CAA8C,2BAA2B,QAAQ,kBAAkB,8BAA8B,qJAAqJ,SAAS,wLAAwL,YAAY,iEAAiE,2GAA2G,wBAAwB,0CAA0C,yCAAyC,gBAAgB,gCAAgC,SAAS,aAAa,gBAAgB,2BAA2B,8BAA8B,YAAY,IAAI,sCAAsC,EAAE,uBAAuB,wDAAwD,mBAAmB,IAAI,kBAAkB,SAAS,gGAAgG,UAAU,MAAM,oDAAoD,mBAAmB,2IAA2I,mBAAmB,gEAAgE,qBAAqB,oEAAoE,UAAU,mBAAmB,mBAAmB,iCAAiC,qBAAqB,yBAAyB,8BAA8B,2BAA2B,kBAAkB,0BAA0B,kBAAkB,8BAA8B,qBAAqB,0BAA0B,qBAAqB,8BAA8B,2BAA2B,4BAA4B,2BAA2B,gCAAgC,sBAAsB,0BAA0B,gBAAgB,sBAAsB,uBAAuB,sBAAsB,4HAA4H,eAAe,sBAAsB,sBAAsB,6JAA6J,EAAE,0BAA0B,cAAc,SAAS,cAAc,QAAQ,oBAAoB,MAAM,IAAI,sGAAsG,SAAS,qBAAqB,wBAAwB,QAAQ,8BAA8B,qCAAqC,QAAQ,gBAAgB,IAAI,wCAAwC,uBAAuB,SAAS,MAAM,YAAY,gFAAgF,qCAAqC,IAAI,eAAe,yDAAyD,uBAAuB,sEAAsE,EAAE,6BAA6B,mBAAmB,sCAAsC,MAAM,sDAAsD,OAAO,iBAAiB,sCAAsC,kBAAkB,sBAAsB,oBAAoB,0BAA0B,qBAAqB,SAAS,iBAAiB,kCAAkC,mBAAmB,UAAU,wBAAwB,oEAAoE,iBAAiB,uCAAuC,kBAAkB,YAAY,SAAS,WAAW,qBAAqB,sQAAsQ,iBAAiB,SAAS,mBAAmB,8CAA8C,qBAAqB,sBAAsB,iBAAiB,gBAAgB,8BAA8B,uBAAuB,0BAA0B,mBAAmB,iCAAiC,mHAAmH,EAAE,SAAS,YAAY,sBAAsB,QAAQ,oBAAoB,kBAAkB,oCAAoC,QAAQ,WAAW,kFAAkF,8MAA8M,kBAAkB,IAAI,IAAI,SAAS,yHAAyH,2FAA2F,8BAA8B,oGAAoG,YAAY,qBAAqB,gCAAgC,MAAM,8BAA8B,kBAAkB,kCAAkC,IAAI,oGAAoG,2DAA2D,2BAA2B,gCAAgC,kBAAkB,uFAAuF,mBAAmB,gFAAgF,2GAA2G,gCAAgC,oBAAoB,EAAE,+DAA+D,uCAAuC,gHAAgH,8BAA8B,wBAAwB,QAAQ,GAAG,mBAAmB,aAAa,sFAAsF,uBAAuB,sCAAsC,oBAAoB,OAAO,WAAW,yCAAyC,6FAA6F,qMAAqM,8BAA8B,6BAA6B,wDAAwD,yFAAyF,sBAAsB,WAAW,IAAI,2CAA2C,qCAAqC,yBAAyB,gBAAgB,uBAAuB,cAAc,uCAAuC,kBAAkB,qDAAqD,aAAa,+BAA+B,qBAAqB,kBAAkB,sBAAsB,eAAe,2EAA2E,wBAAwB,MAAM,qBAAqB,sBAAsB,gCAAgC,6BAA6B,SAAS,mBAAmB,uEAAuE,wBAAwB,oGAAoG,sBAAsB,wBAAwB,eAAe,eAAe,uEAAuE,yBAAyB,8FAA8F,qBAAqB,sBAAsB,yCAAyC,6BAA6B,SAAS,2BAA2B,mBAAmB,QAAQ,mHAAmH,IAAI,wFAAwF,UAAU,aAAa,cAAc,SAAS,UAAU,oBAAoB,kCAAkC,sBAAsB,uBAAuB,0BAA0B,cAAc,uBAAuB,uBAAuB,2BAA2B,eAAe,eAAe,mBAAmB,sCAAsC,eAAe,uEAAuE,WAAW,mFAAmF,2BAA2B,SAAS,8CAA8C,cAAc,qBAAqB,MAAM,gFAAgF,qBAAqB,gBAAgB,EAAE,oCAAoC,wBAAwB,4BAA4B,iBAAiB,GAAG,YAAY,sBAAsB,MAAM,sHAAsH,uBAAuB,UAAU,+DAA+D,4GAA4G,eAAe,2BAA2B,2BAA2B,qBAAqB,iCAAiC,gDAAgD,0BAA0B,EAAE,GAAG,eAAe,oBAAoB,QAAQ,sHAAsH,wBAAwB,uEAAuE,EAAE,qBAAqB,4BAA4B,kBAAkB,EAAE,wBAAwB,8BAA8B,uBAAuB,2DAA2D,2BAA2B,6CAA6C,wEAAwE,yBAAyB,EAAE,gLAAgL,qCAAqC,KAAK,aAAa,gCAAgC,0EAA0E,EAAE,qBAAqB,gGAAgG,sBAAsB,aAAa,2CAA2C,8CAA8C,UAAU,qBAAqB,4BAA4B,eAAe,YAAY,qBAAqB,6GAA6G,gBAAgB,uBAAuB,kEAAkE,8BAA8B,uFAAuF,UAAU,iBAAiB,0CAA0C,IAAI,+XAA+X,QAAQ,IAAI,0CAA0C,SAAS,aAAa,gBAAgB,mBAAmB,iBAAiB,gBAAgB,oBAAoB,yEAAyE,uCAAuC,GAAG,EAAE,+GAA+G,0PAA0P,iBAAiB,MAAM,+LAA+L,iBAAiB,uBAAuB,IAAI,0DAA0D,oFAAoF,uBAAuB,EAAE,uBAAuB,qEAAqE,IAAI,sEAAsE,oBAAoB,yJAAyJ,wBAAwB,wDAAwD,iCAAiC,qBAAqB,oDAAoD,4DAA4D,IAAI,8CAA8C,SAAS,gXAAgX,2FAA2F,cAAc,SAAS,cAAc,SAAS,iBAAiB,sBAAsB,IAAI,uBAAuB,WAAW,kBAAkB,yBAAyB,QAAQ,uBAAuB,mEAAmE,SAAS,iHAAiH,oBAAoB,kCAAkC,0CAA0C,oDAAoD,0BAA0B,EAAE,mBAAmB,kCAAkC,iCAAiC,wBAAwB,2BAA2B,mCAAmC,oCAAoC,gHAAgH,sEAAsE,8BAA8B,wEAAwE,iCAAiC,4CAA4C,SAAS,SAAS,yBAAyB,qCAAqC,MAAM,gIAAgI,wCAAwC,mGAAmG,sCAAsC,kGAAkG,4DAA4D,aAAa,kIAAkI,iQAAiQ,4BAA4B,mDAAmD,oBAAoB,oCAAoC,4EAA4E,wBAAwB,0HAA0H,yMAAyM,wGAAwG,gDAAgD,iDAAiD,sBAAsB,0FAA0F,4CAA4C,eAAe,mBAAmB,sBAAsB,0EAA0E,sCAAsC,6CAA6C,2BAA2B,yMAAyM,oGAAoG,6DAA6D,wBAAwB,gDAAgD,wDAAwD,SAAS,6EAA6E,aAAa,KAAK,IAAI,oIAAoI,kBAAkB,kBAAkB,EAAE,kCAAkC,2BAA2B,IAAI,uBAAuB,2CAA2C,kDAAkD,mDAAmD,YAAY,mDAAmD,iBAAiB,8BAA8B,kDAAkD,GAAG,EAAE,iBAAiB,qCAAqC,UAAU,MAAM,YAAY,QAAQ,kBAAkB,cAAc,mEAAmE,qBAAqB,cAAc,gEAAgE,sBAAsB,eAAe,2EAA2E,eAAe,yBAAyB,8EAA8E,+BAA+B,kDAAkD,uBAAuB,sDAAsD,gYAAgY,oBAAoB,4IAA4I,yBAAyB,oEAAoE,4BAA4B,yBAAyB,uEAAuE,qCAAqC,yBAAyB,iHAAiH,SAAS,uWAAuW,eAAe,+IAA+I,0BAA0B,gCAAgC,eAAe,oBAAoB,iBAAiB,wBAAwB,oBAAoB,qBAAqB,iBAAiB,UAAU,kGAAkG,eAAe,oBAAoB,6CAA6C,sCAAsC,6GAA6G,eAAe,qBAAqB,wBAAwB,uBAAuB,0BAA0B,qBAAqB,QAAQ,8JAA8J,uBAAuB,8BAA8B,YAAY,uFAAuF,2BAA2B,GAAG,EAAE,qNAAqN,iBAAiB,0FAA0F,eAAe,2DAA2D,eAAe,2FAA2F,iBAAiB,oBAAoB,mBAAmB,6FAA6F,yBAAyB,IAAI,6BAA6B,0CAA0C,iBAAiB,qBAAqB,gBAAgB,mDAAmD,mFAAmF,cAAc,8CAA8C,EAAE,8FAA8F,0CAA0C,IAAI,kFAAkF,uDAAuD,IAAI,qKAAqK,uCAAuC,uCAAuC,SAAS,mBAAmB,kCAAkC,eAAe,mHAAmH,SAAS,UAAU,0BAA0B,iCAAiC,uBAAuB,4CAA4C,0GAA0G,IAAI,kKAAkK,mDAAmD,IAAI,kBAAkB,aAAa,+DAA+D,uBAAuB,oCAAoC,kBAAkB,aAAa,mBAAmB,mFAAmF,oBAAoB,sCAAsC,eAAe,mBAAmB,qBAAqB,oBAAoB,kBAAkB,kBAAkB,0BAA0B,4DAA4D,+EAA+E,EAAE,0BAA0B,mBAAmB,qCAAqC,oFAAoF,EAAE,oBAAoB,qCAAqC,6DAA6D,iBAAiB,gCAAgC,EAAE,mBAAmB,qCAAqC,sDAAsD,EAAE,kBAAkB,qCAAqC,kEAAkE,EAAE,kBAAkB,cAAc,kBAAkB,6DAA6D,YAAY,qBAAqB,sDAAsD,yBAAyB,EAAE,kBAAkB,0BAA0B,iBAAiB,mBAAmB,iDAAiD,iFAAiF,qBAAqB,IAAI,KAAK,IAAI,sBAAsB,kDAAkD,IAAI,WAAW,0BAA0B,0BAA0B,wBAAwB,SAAS,qCAAqC,sBAAsB,uEAAuE,KAAK,UAAU,yGAAyG,eAAe,oBAAoB,uCAAuC,KAAK,iEAAiE,0BAA0B,EAAE,gEAAgE,kCAAkC,gDAAgD,iCAAiC,mBAAmB,sBAAsB,uQAAuQ,iBAAiB,OAAO,eAAe,iDAAiD,kBAAkB,YAAY,aAAa,MAAM,mCAAmC,cAAc,WAAW,eAAe,UAAU,6CAA6C,cAAc,sBAAsB,gBAAgB,YAAY,WAAW,YAAY,UAAU,yCAAyC,4BAA4B,8KAA8K,cAAc,iCAAiC,gEAAgE,4JAA4J,6BAA6B,aAAa,2BAA2B,aAAa,0BAA0B,aAAa,+BAA+B,aAAa,0BAA0B,cAAc,GAAG,GAAG,mEAAmE,eAAe,2BAA2B,uCAAuC,gDAAgD,uCAAuC,QAAQ,gDAAgD,wDAAwD,KAAK,oCAAoC,mBAAmB,iBAAiB,gDAAgD,yBAAyB,8BAA8B,uCAAuC,KAAK,IAAI,6RAA6R,oGAAoG,mBAAmB,6IAA6I,eAAe,eAAe,SAAS,kQAAkQ,uBAAuB,wCAAwC,UAAU,UAAU,SAAS,kBAAkB,MAAM,sBAAsB,sBAAsB,YAAY,iRAAiR,YAAY,yBAAyB,+CAA+C,wCAAwC,iHAAiH,kSAAkS,uBAAuB,iBAAiB,iNAAiN,0CAA0C,eAAe,oBAAoB,iIAAiI,iBAAiB,EAAE,qBAAqB,mIAAmI,iMAAiM,8DAA8D,iFAAiF,aAAa,YAAY,sCAAsC,QAAQ,UAAU,oCAAoC,eAAe,iBAAiB,mBAAmB,gBAAgB,uCAAuC,IAAI,oCAAoC,UAAU,wCAAwC,eAAe,kBAAkB,8BAA8B,YAAY,KAAK,qBAAqB,uBAAuB,IAAI,+BAA+B,SAAS,4CAA4C,0BAA0B,2BAA2B,0CAA0C,wJAAwJ,gBAAgB,8BAA8B,4DAA4D,iBAAiB,gCAAgC,0SAA0S,6CAA6C,UAAU,gBAAgB,MAAM,wIAAwI,iBAAiB,2KAA2K,qCAAqC,gBAAgB,4DAA4D,WAAW,mBAAmB,SAAS,mBAAmB,+BAA+B,kBAAkB,qCAAqC,6DAA6D,cAAc,oHAAoH,cAAc,+BAA+B,UAAU,gBAAgB,iBAAiB,aAAa,UAAU,YAAY,IAAI,8CAA8C,kCAAkC,mBAAmB,yEAAyE,IAAI,mCAAmC,mBAAmB,oEAAoE,cAAc,eAAe,cAAc,sGAAsG,IAAI,uBAAuB,6FAA6F,cAAc,wBAAwB,sBAAsB,gBAAgB,0BAA0B,sHAAsH,mEAAmE,0BAA0B,kBAAkB,8BAA8B,iBAAiB,SAAS,IAAI,uBAAuB,sFAAsF,YAAY,mBAAmB,cAAc,oMAAoM,YAAY,yBAAyB,IAAI,0HAA0H,0LAA0L,iCAAiC,KAAK,yBAAyB,UAAU,mBAAmB,4BAA4B,mCAAmC,EAAE,uBAAuB,gCAAgC,yBAAyB,IAAI,uEAAuE,6BAA6B,2DAA2D,mDAAmD,kHAAkH,gBAAgB,mCAAmC,oBAAoB,oDAAoD,EAAE,2BAA2B,wDAAwD,0CAA0C,KAAK,2BAA2B,mXAAmX,YAAY,4HAA4H,6EAA6E,kEAAkE,UAAU,mDAAmD,6DAA6D,0EAA0E,0BAA0B,kDAAkD,0BAA0B,uCAAuC,KAAK,gEAAgE,4OAA4O,4DAA4D,GAAG,cAAc,yBAAyB,8DAA8D,UAAU,QAAQ,2BAA2B,uDAAuD,yBAAyB,OAAO,uCAAuC,qEAAqE,sBAAsB,kBAAkB,aAAa,oBAAoB,oGAAoG,4DAA4D,8BAA8B,qDAAqD,eAAe,IAAI,mFAAmF,yBAAyB,EAAE,oBAAoB,+CAA+C,iFAAiF,8EAA8E,IAAI,sEAAsE,QAAQ,IAAI,8CAA8C,gBAAgB,GAAG,gDAAgD,cAAc,wBAAwB,0FAA0F,UAAU,yEAAyE,eAAe,UAAU,eAAe,aAAa,kBAAkB,eAAe,wBAAwB,8BAA8B,mCAAmC,qBAAqB,kBAAkB,WAAW,0CAA0C,gCAAgC,wBAAwB,8BAA8B,wCAAwC,iBAAiB,sBAAsB,QAAQ,cAAc,+BAA+B,0BAA0B,sEAAsE,wBAAwB,kBAAkB,mBAAmB,EAAE,0PAA0P,4BAA4B,aAAa,mBAAmB,6CAA6C,wBAAwB,4BAA4B,qBAAqB,GAAG,YAAY,qBAAqB,qBAAqB,wWAAwW,YAAY,MAAM,kBAAkB,6CAA6C,cAAc,oDAAoD,0BAA0B,0BAA0B,0DAA0D,MAAM,oBAAoB,sDAAsD,6DAA6D,yBAAyB,sBAAsB,0BAA0B,+DAA+D,EAAE,gEAAgE,eAAe,iCAAiC,eAAe,mDAAmD,eAAe,6DAA6D,aAAa,mBAAmB,6CAA6C,wBAAwB,4BAA4B,6BAA6B,GAAG,YAAY,qBAAqB,qBAAqB,gMAAgM,YAAY,UAAU,gBAAgB,gCAAgC,gFAAgF,UAAU,qCAAqC,wCAAwC,gBAAgB,mBAAmB,wDAAwD,iBAAiB,mBAAmB,+DAA+D,iJAAiJ,mCAAmC,eAAe,qBAAqB,sBAAsB,qCAAqC,0CAA0C,EAAE,kFAAkF,IAAI,kDAAkD,yCAAyC,YAAY,yBAAyB,sBAAsB,qCAAqC,6CAA6C,EAAE,kDAAkD,kFAAkF,IAAI,wEAAwE,yCAAyC,YAAY,2BAA2B,gDAAgD,+FAA+F,iDAAiD,uBAAuB,YAAY,MAAM,sBAAsB,4DAA4D,yKAAyK,EAAE,sBAAsB,YAAY,YAAY,gFAAgF,UAAU,EAAE,aAAa,aAAa,gBAAgB,oBAAoB,sDAAsD,MAAM,sIAAsI,uBAAuB,kIAAkI,gLAAgL,YAAY,UAAU,QAAQ,gBAAgB,6BAA6B,gCAAgC,SAAS,gBAAgB,6FAA6F,kBAAkB,IAAI,uGAAuG,2BAA2B,UAAU,SAAS,mBAAmB,gDAAgD,+EAA+E,oCAAoC,yCAAyC,kBAAkB,kBAAkB,iEAAiE,8CAA8C,mDAAmD,EAAE,4BAA4B,wDAAwD,qBAAqB,kBAAkB,0BAA0B,2GAA2G,0bAA0b,4CAA4C,2BAA2B,uDAAuD,EAAE,6BAA6B,mEAAmE,IAAI,oGAAoG,kIAAkI,8TAA8T,0BAA0B,8BAA8B,sBAAsB,EAAE,2BAA2B,eAAe,sBAAsB,4BAA4B,0BAA0B,EAAE,8BAA8B,cAAc,uCAAuC,qBAAqB,gCAAgC,eAAe,kBAAkB,6CAA6C,oBAAoB,iBAAiB,+CAA+C,qDAAqD,qBAAqB,iDAAiD,kEAAkE,EAAE,wCAAwC,uBAAuB,MAAM,sCAAsC,IAAI,kDAAkD,SAAS,SAAS,uFAAuF,8GAA8G,qBAAqB,MAAM,2CAA2C,4EAA4E,EAAE,kCAAkC,yCAAyC,sBAAsB,2BAA2B,iBAAiB,wEAAwE,oBAAoB,uEAAuE,wBAAwB,EAAE,+BAA+B,mBAAmB,cAAc,qBAAqB,sCAAsC,2BAA2B,2BAA2B,8BAA8B,6BAA6B,oBAAoB,gBAAgB,6GAA6G,oBAAoB,oBAAoB,yDAAyD,OAAO,wCAAwC,GAAG,wCAAwC,SAAS,EAAE,+GAA+G,MAAM,6CAA6C,eAAe,qBAAqB,gCAAgC,yCAAyC,0GAA0G,qBAAqB,QAAQ,UAAU,cAAc,MAAM,6CAA6C,eAAe,mFAAmF,IAAI,0CAA0C,iBAAiB,yCAAyC,2CAA2C,YAAY,6BAA6B,0BAA0B,wBAAwB,QAAQ,eAAe,8LAA8L,yBAAyB,mHAAmH,WAAW,4CAA4C,iBAAiB,0DAA0D,aAAa,4EAA4E,cAAc,mBAAmB,yBAAyB,yDAAyD,8DAA8D,2CAA2C,wCAAwC,kIAAkI,KAAK,KAAK,iBAAiB,2CAA2C,MAAM,MAAM,OAAO,KAAK,0FAA0F,yBAAyB,iCAAiC,kCAAkC,gBAAgB,gCAAgC,yEAAyE,8BAA8B,oCAAoC,wBAAwB,MAAM,gCAAgC,iCAAiC,YAAY,mBAAmB,WAAW,mCAAmC,sMAAsM,uBAAuB,IAAI,0FAA0F,SAAS,kBAAkB,kHAAkH,q3BAAq3B,0EAA0E,qEAAqE,iFAAiF,4DAA4D,iDAAiD,mBAAmB,aAAa,IAAI,iBAAiB,SAAS,aAAa,SAAS,0BAA0B,oBAAoB,kBAAkB,mHAAmH,uCAAuC,2FAA2F,uCAAuC,aAAa,MAAM,mBAAmB,KAAK,YAAY,oCAAoC,IAAI,MAAM,SAAS,OAAO,wCAAwC,6BAA6B,kBAAkB,uBAAuB,iEAAiE,YAAY,8IAA8I,wBAAwB,sGAAsG,kDAAkD,MAAM,mCAAmC,SAAS,OAAO,SAAS,OAAO,iEAAiE,OAAO,wBAAwB,0hBAA0hB,SAAS,yBAAyB,2BAA2B,yBAAyB,mCAAmC,sCAAsC,uBAAuB,oDAAoD,yCAAyC,0BAA0B,2BAA2B,eAAe,2EAA2E,2BAA2B,wBAAwB,mBAAmB,EAAE,cAAc,oBAAoB,MAAM,qJAAqJ,WAAW,gDAAgD,SAAS,qBAAqB,uBAAuB,kCAAkC,kCAAkC,uBAAuB,6BAA6B,kCAAkC,EAAE,kBAAkB,WAAW,6BAA6B,oCAAoC,EAAE,oBAAoB,kDAAkD,qCAAqC,QAAQ,oCAAoC,iCAAiC,oCAAoC,mEAAmE,+BAA+B,IAAI,4BAA4B,YAAY,QAAQ,eAAe,yBAAyB,+EAA+E,QAAQ,qCAAqC,mBAAmB,gBAAgB,2GAA2G,oLAAoL,cAAc,kBAAkB,uRAAuR,kBAAkB,EAAE,oBAAoB,8BAA8B,gHAAgH,0CAA0C,OAAO,EAAE,cAAc,IAAI,mCAAmC,SAAS,cAAc,kBAAkB,SAAS,8BAA8B,sCAAsC,eAAe,SAAS,mGAAmG,WAAW,iCAAiC,aAAa,0BAA0B,2BAA2B,uCAAuC,6DAA6D,uCAAuC,QAAQ,uCAAuC,mBAAmB,sCAAsC,QAAQ,kCAAkC,gCAAgC,wDAAwD,2BAA2B,kBAAkB,SAAS,EAAE,oCAAoC,aAAa,0CAA0C,mCAAmC,qBAAqB,+CAA+C,wKAAwK,iPAAiP,4CAA4C,8CAA8C,YAAY,qBAAqB,oHAAoH,WAAW,uKAAuK,kUAAkU,UAAU,2BAA2B,kCAAkC,wHAAwH,2CAA2C,mBAAmB,kEAAkE,0BAA0B,kBAAkB,sCAAsC,EAAE,OAAO,mGAAmG,oBAAoB,qBAAqB,sCAAsC,mCAAmC,kBAAkB,SAAS,WAAW,0BAA0B,kDAAkD,6PAA6P,wHAAwH,cAAc,mBAAmB,iEAAiE,6BAA6B,EAAE,kBAAkB,+FAA+F,kDAAkD,GAAG,aAAa,QAAQ,qBAAqB,YAAY,uBAAuB,cAAc,6DAA6D,KAAK,sEAAsE,4FAA4F,sHAAsH,OAAO,sFAAsF,yBAAyB,2BAA2B,wBAAwB,yDAAyD,aAAa,GAAG,UAAU,iDAAiD,eAAe,wBAAwB,oBAAoB,8BAA8B,MAAM,4EAA4E,yDAAyD,wBAAwB,sCAAsC,+CAA+C,2DAA2D,EAAE,UAAU,8BAA8B,eAAe,QAAQ,yCAAyC,eAAe,sBAAsB,yFAAyF,8BAA8B,MAAM,+PAA+P,kBAAkB,EAAE,0NAA0N,sBAAsB,+DAA+D,eAAe,oBAAoB,4CAA4C,eAAe,qBAAqB,2BAA2B,sBAAsB,0BAA0B,4BAA4B,wBAAwB,4BAA4B,oEAAoE,wBAAwB,UAAU,wFAAwF,oDAAoD,iCAAiC,yBAAyB,4BAA4B,uJAAuJ,gBAAgB,4DAA4D,sEAAsE,SAAS,EAAE,uBAAuB,gCAAgC,0DAA0D,uBAAuB;;CCDz/rF;AACA;AACA;AACA,kBAAkB,qIAAqI,kBAAkB,aAAa,cAAc,kCAAkC,kBAAkB,gBAAgB,2BAA2B,+BAA+B,gBAAgB,cAAc,iDAAiD,cAAc,2BAA2B,mBAAmB,kDAAkD,+BAA+B,oDAAoD,6CAA6C,cAAc,wCAAwC,uKAAuK,cAAc,iBAAiB,2DAA2D,cAAc,6CAA6C,gBAAgB,oEAAoE,6GAA6G,8BAA8B,gCAAgC,kDAAkD,WAAW,yCAAyC,cAAc,qHAAqH,2BAA2B,4EAA4E,YAAY,YAAY,gBAAgB,kGAAkG,2DAA2D,gBAAgB,wDAAwD,iFAAiF,oBAAoB,yLAAyL,aAAa,2EAA2E,OAAO,iDAAiD,cAAc,YAAY,IAAI,2CAA2C,EAAE,cAAc,SAAS,YAAY,4BAA4B,+BAA+B,0CAA0C,UAAU,iCAAiC,OAAO,iEAAiE,6BAA6B,0HAA0H,SAAS,WAAW,+CAA+C,YAAY,gBAAgB,uIAAuI,qEAAqE,EAAE,uCAAuC,+DAA+D,+EAA+E,iEAAiE,cAAc,yJAAyJ,qEAAqE,YAAY,cAAc,iBAAiB,mEAAmE,oBAAoB,OAAO,aAAa,UAAU,yBAAyB,KAAK,MAAM,2IAA2I,aAAa,+BAA+B,+BAA+B,uFAAuF,SAAS,mDAAmD,cAAc,yBAAyB,WAAW,sBAAsB,+DAA+D,mCAAmC,oBAAoB,KAAK,iCAAiC,QAAQ,sCAAsC,SAAS,uCAAuC,OAAO,qCAAqC,kCAAkC,WAAW,MAAM,OAAO,aAAa,EAAE,qBAAqB,qBAAqB,yBAAyB,yBAAyB,2CAA2C,mDAAmD,sBAAsB,kBAAkB,aAAa,cAAc,cAAc,uIAAuI,+CAA+C,SAAS,cAAc,OAAO,qDAAqD,sDAAsD,YAAY,EAAE,kBAAkB,kBAAkB,cAAc,8BAA8B,gHAAgH,8DAA8D,gBAAgB,qDAAqD,kBAAkB,4DAA4D,gBAAgB,EAAE,sBAAsB,gBAAgB,EAAE,oBAAoB,kBAAkB,4CAA4C,6BAA6B,qFAAqF,0BAA0B,4GAA4G,IAAI,aAAa,4BAA4B,OAAO,uBAAuB,eAAe,cAAc,wBAAwB,ieAAie,gBAAgB,0BAA0B,yBAAyB,gBAAgB,EAAE,cAAc,kFAAkF,aAAa,KAAK,wBAAwB,uDAAuD,YAAY,aAAa,oVAAoV,cAAc,sBAAsB,8BAA8B,oBAAoB,4DAA4D,wBAAwB,WAAW,wCAAwC,oBAAoB,8DAA8D,WAAW,EAAE,WAAW,0FAA0F,aAAa,qGAAqG,gBAAgB,4FAA4F,8CAA8C,kFAAkF,aAAa,8GAA8G,cAAc,iDAAiD,gBAAgB,mCAAmC,SAAS,sGAAsG,EAAE,gBAAgB,mCAAmC,WAAW,mDAAmD,EAAE,kBAAkB,sBAAsB,aAAa,aAAa,4BAA4B,8CAA8C,EAAE,OAAO,gBAAgB,wHAAwH,SAAS,cAAc,4CAA4C,cAAc,oHAAoH,uBAAuB,oBAAoB,0DAA0D,eAAe,uBAAuB,MAAM,UAAU,aAAa,MAAM,8BAA8B,WAAW,kBAAkB,uBAAuB,MAAM,sJAAsJ,SAAS,oBAAoB,oFAAoF,gBAAgB,8BAA8B,4BAA4B,GAAG,2HAA2H,mHAAmH,6BAA6B,yCAAyC,8BAA8B,qHAAqH,qBAAqB,kBAAkB,EAAE,0BAA0B,wBAAwB,oCAAoC,EAAE,IAAI,gBAAgB,sFAAsF,yMAAyM,8IAA8I,YAAY,mDAAmD,IAAI,MAAM,6CAA6C,SAAS,kBAAkB,kDAAkD,SAAS,IAAI,aAAa,SAAS,kBAAkB,+BAA+B,SAAS,MAAM,eAAe,qEAAqE,kBAAkB,8EAA8E,eAAe,gBAAgB,cAAc,WAAW,yHAAyH,uBAAuB,wCAAwC,sBAAsB,yCAAyC,kDAAkD,WAAW,+BAA+B,cAAc,mBAAmB,yFAAyF,SAAS,0LAA0L,sEAAsE,eAAe,gBAAgB,uEAAuE,0CAA0C,uCAAuC,0DAA0D,2BAA2B,6CAA6C,2FAA2F,kBAAkB,wDAAwD,4BAA4B,4BAA4B,8BAA8B,EAAE,qEAAqE,WAAW,OAAO,yBAAyB,qBAAqB,uBAAuB,qCAAqC,2EAA2E,gBAAgB,iCAAiC,0DAA0D,cAAc,8BAA8B,qBAAqB,EAAE,+BAA+B,qBAAqB,EAAE,4CAA4C,qBAAqB,EAAE,6CAA6C,qBAAqB,KAAK,GAAG,qGAAqG,4EAA4E,sBAAsB,YAAY,OAAO,oCAAoC,sDAAsD,MAAM,qHAAqH,WAAW,kBAAkB,oBAAoB,sBAAsB,SAAS,UAAU,SAAS,mCAAmC,kBAAkB,sCAAsC,gDAAgD,mCAAmC,4DAA4D,eAAe,uCAAuC,oBAAoB,WAAW,gEAAgE,MAAM,uBAAuB,sCAAsC,+FAA+F,QAAQ,6BAA6B,2DAA2D,OAAO,YAAY,uBAAuB,qFAAqF,eAAe,oCAAoC,uKAAuK,uGAAuG,QAAQ,sCAAsC,MAAM,4DAA4D,gBAAgB,uBAAuB,qDAAqD,8HAA8H,gNAAgN,uIAAuI,+IAA+I,gEAAgE,uCAAuC,qBAAqB,OAAO,sCAAsC,4CAA4C,yDAAyD,sJAAsJ,mBAAmB,qBAAqB,MAAM,yBAAyB,MAAM,mCAAmC,MAAM,sBAAsB,+BAA+B,kCAAkC,mCAAmC,2dAA2d,yGAAyG,4GAA4G,IAAI,wDAAwD,QAAQ,oCAAoC,6IAA6I,oGAAoG,OAAO,oCAAoC,8DAA8D,+DAA+D,iCAAiC,aAAa,mEAAmE,wBAAwB,iDAAiD,KAAK,wBAAwB,iDAAiD,UAAU,eAAe,sCAAsC,wEAAwE,4BAA4B,kBAAkB,0JAA0J,0EAA0E,oBAAoB,IAAI,gEAAgE,6EAA6E,mKAAmK,KAAK,yCAAyC,wCAAwC,OAAO,2BAA2B,yBAAyB,+BAA+B,gCAAgC,kCAAkC,yCAAyC,aAAa,oCAAoC,4JAA4J,4BAA4B,kGAAkG,4CAA4C,oBAAoB,IAAI,0BAA0B,IAAI;AACrklB,sC;CCJA;AACA;AACA;AACA;AACA;AACA,eAAe,kNAAkN,oBAAoB,sBAAsB,aAAa,gBAAgB,YAAY,WAAW,KAAK,WAAW,+GAA+G,kBAAkB,uCAAuC,cAAc,YAAY,mBAAmB,KAAK,wCAAwC,kBAAkB,gHAAgH,uDAAuD,0BAA0B,UAAU,+CAA+C,kDAAkD,SAAS,EAAE,SAAS,0FAA0F,sBAAsB,cAAc,gBAAgB,+CAA+C,KAAK,wBAAwB,6BAA6B,SAAS,OAAO,oDAAoD,KAAK,oDAAoD,EAAE,SAAS,oCAAoC,oCAAoC,gBAAgB,6BAA6B,yBAAyB,IAAI,wCAAwC,SAAS,aAAa,8CAA8C,eAAe,qGAAqG,sFAAsF,oBAAoB,sBAAsB,kCAAkC,gBAAgB,kCAAkC,kBAAkB,uBAAuB,yBAAyB,iCAAiC,6DAA6D,uDAAuD,yDAAyD,+HAA+H,MAAM,4BAA4B,sDAAsD,sHAAsH,sBAAsB,wCAAwC,+DAA+D,6CAA6C,2EAA2E,gDAAgD,uEAAuE,0CAA0C,cAAc,gBAAgB,kBAAkB,2BAA2B,oBAAoB,uGAAuG,sBAAsB,iDAAiD,+BAA+B,uCAAuC,wEAAwE,kCAAkC,uBAAuB,yBAAyB,8BAA8B,WAAW,yCAAyC,4CAA4C,sCAAsC,8BAA8B,0BAA0B,6BAA6B,+BAA+B,yCAAyC,gCAAgC,4BAA4B,0BAA0B,uDAAuD,EAAE,8BAA8B,mBAAmB,qCAAqC,YAAY,6BAA6B,eAAe,KAAK,GAAG,iKAAiK,qCAAqC,yMAAyM,uEAAuE,cAAc,cAAc,gBAAgB,kBAAkB,2BAA2B,+CAA+C,MAAM,qCAAqC,MAAM,2EAA2E,KAAK,yBAAyB,uBAAuB,MAAM,qIAAqI,sEAAsE,gBAAgB,sHAAsH,sBAAsB,iDAAiD,gCAAgC,4BAA4B,sBAAsB,0DAA0D,EAAE,YAAY,6BAA6B,eAAe,KAAK,GAAG,8CAA8C,mBAAmB,eAAe,6EAA6E,yCAAyC,gCAAgC,gDAAgD,iFAAiF,qCAAqC,oEAAoE,iEAAiE,IAAI,gIAAgI,yCAAyC,+SAA+S,gXAAgX,wBAAwB,eAAe,gBAAgB,ocAAoc,kBAAkB,yBAAyB,gCAAgC,8BAA8B,8GAA8G,mBAAmB,gCAAgC,qBAAqB,iKAAiK,qBAAqB,4PAA4P,kBAAkB,WAAW,oDAAoD,8CAA8C,4FAA4F,eAAe,EAAE,KAAK,+CAA+C,cAAc,+BAA+B,sBAAsB,+NAA+N,0BAA0B,aAAa,iCAAiC,2BAA2B,iCAAiC,aAAa,yBAAyB,mCAAmC,iCAAiC,WAAW,iEAAiE,qBAAqB,6EAA6E,kBAAkB,8BAA8B,kBAAkB,qDAAqD,sCAAsC,WAAW,yBAAyB,kBAAkB,yKAAyK,eAAe,gQAAgQ,kBAAkB,2BAA2B,kEAAkE,0BAA0B,oEAAoE,YAAY,8CAA8C,YAAY,gFAAgF,YAAY,8CAA8C,MAAM,6IAA6I,6CAA6C,YAAY,IAAI,wBAAwB,6DAA6D,uCAAuC,MAAM,wCAAwC,6BAA6B,8GAA8G,qCAAqC,mEAAmE,qDAAqD,0CAA0C,8DAA8D,oCAAoC,qGAAqG,wCAAwC,EAAE,qCAAqC,0CAA0C,4BAA4B,iEAAiE,oBAAoB,8DAA8D,qBAAqB,wBAAwB,mKAAmK,0EAA0E,kEAAkE,sEAAsE,sBAAsB,wCAAwC,EAAE,iCAAiC,+DAA+D,mDAAmD,iKAAiK,4CAA4C,qCAAqC,4GAA4G,gCAAgC,IAAI,0BAA0B,yFAAyF,iBAAiB,gCAAgC,4BAA4B,4BAA4B,mBAAmB,2BAA2B,OAAO,mCAAmC,qEAAqE,4BAA4B,2EAA2E,OAAO,+CAA+C,EAAE,oCAAoC,qCAAqC,MAAM,cAAc,wBAAwB,UAAU,kEAAkE,8FAA8F,YAAY,6BAA6B,eAAe,EAAE,6BAA6B,UAAU,KAAK,GAAG,oGAAoG,sEAAsE,IAAI,KAAK,cAAc,sCAAsC,mFAAmF,sCAAsC,6DAA6D,oBAAoB,KAAK,2CAA2C,KAAK,wGAAwG,mJAAmJ,gBAAgB,qOAAqO,sEAAsE,IAAI,KAAK,0GAA0G,aAAa,EAAE,oEAAoE,iLAAiL,kBAAkB,2BAA2B,sDAAsD,mBAAmB,eAAe,qJAAqJ,kHAAkH,sFAAsF,uBAAuB,wDAAwD,oFAAoF,2BAA2B,2LAA2L,mGAAmG,iDAAiD,sIAAsI,yEAAyE,mBAAmB,WAAW,0DAA0D,uBAAuB,wDAAwD,2BAA2B,2JAA2J,gCAAgC,mBAAmB,IAAI,KAAK,0DAA0D,oHAAoH,0BAA0B,0BAA0B,wDAAwD,iDAAiD,qFAAqF,4BAA4B,gCAAgC,wBAAwB,sBAAsB,yIAAyI,0BAA0B,aAAa,8DAA8D,4BAA4B,2CAA2C,yBAAyB,aAAa,kLAAkL,+GAA+G,+BAA+B,4DAA4D,IAAI,2CAA2C,wBAAwB,0DAA0D,qCAAqC,kCAAkC,wCAAwC,gCAAgC,4BAA4B,iCAAiC,uCAAuC,EAAE,0GAA0G,2EAA2E,QAAQ,EAAE,YAAY,6BAA6B,eAAe,EAAE,6BAA6B,WAAW,KAAK,GAAG,gDAAgD,kDAAkD,6FAA6F,qBAAqB,6CAA6C,8BAA8B,EAAE,sFAAsF,wCAAwC,sGAAsG,8KAA8K,2WAA2W,8EAA8E,KAAK,2HAA2H,eAAe,gBAAgB,kKAAkK,kBAAkB,2BAA2B,4DAA4D,0EAA0E,uBAAuB,OAAO,4BAA4B,sBAAsB,4CAA4C,oBAAoB,iHAAiH,oBAAoB,0SAA0S,wRAAwR,mBAAmB,yFAAyF,OAAO,4BAA4B,+DAA+D,2HAA2H,mBAAmB,wFAAwF,OAAO,4BAA4B,+DAA+D,4HAA4H,sBAAsB,wJAAwJ,qBAAqB,uFAAuF,iCAAiC,WAAW,yCAAyC,kDAAkD,EAAE,0BAA0B,aAAa,4GAA4G,8BAA8B,gBAAgB,6CAA6C,oCAAoC,kBAAkB,4BAA4B,uCAAuC,6IAA6I,4BAA4B,oDAAoD,yBAAyB,gBAAgB,8DAA8D,qBAAqB,qDAAqD,IAAI,gCAAgC,+BAA+B,OAAO,0CAA0C,+BAA+B,0BAA0B,kBAAkB,2CAA2C,gEAAgE,WAAW,IAAI,gCAAgC,4BAA4B,uBAAuB,uFAAuF,2EAA2E,QAAQ,EAAE,2BAA2B,0HAA0H,IAAI,KAAK,0DAA0D,oBAAoB,4CAA4C,cAAc,iJAAiJ,yBAAyB,oQAAoQ,qCAAqC,oCAAoC,wDAAwD,sCAAsC,4OAA4O,wDAAwD,wCAAwC,4CAA4C,iBAAiB,0BAA0B,gFAAgF,KAAK,iBAAiB,0BAA0B,sBAAsB,2BAA2B,YAAY,6BAA6B,eAAe,EAAE,6BAA6B,WAAW,EAAE,iCAAiC,WAAW,KAAK,GAAG,qNAAqN,kFAAkF,sCAAsC,oBAAoB,sFAAsF,wCAAwC,uDAAuD,yCAAyC,KAAK,8EAA8E,KAAK,oSAAoS,oSAAoS,gBAAgB,8NAA8N,kBAAkB,4BAA4B,8CAA8C,oBAAoB,WAAW,2CAA2C,0DAA0D,uBAAuB,gBAAgB,EAAE,wPAAwP,iBAAiB,qDAAqD,iDAAiD,wDAAwD,EAAE,gCAAgC,yBAAyB,IAAI,oBAAoB,WAAW,gEAAgE,uBAAuB,uEAAuE,iBAAiB,oCAAoC,gOAAgO,wDAAwD,kDAAkD,uBAAuB,0BAA0B,yBAAyB,sBAAsB,wDAAwD,oBAAoB,4QAA4Q,2BAA2B,qBAAqB,0BAA0B,aAAa,oCAAoC,4BAA4B,2CAA2C,2bAA2b,wBAAwB,gBAAgB,eAAe,oFAAoF,MAAM,uDAAuD,gEAAgE,SAAS,4BAA4B,WAAW,sDAAsD,uGAAuG,EAAE,8BAA8B,WAAW,wFAAwF,4CAA4C,0DAA0D,8BAA8B,WAAW,iDAAiD,yBAAyB,2BAA2B,yBAAyB,WAAW,mLAAmL,4GAA4G,EAAE,8BAA8B,iEAAiE,6BAA6B,iDAAiD,yCAAyC,0MAA0M,yIAAyI,uEAAuE,sBAAsB,yDAAyD,kEAAkE,wCAAwC,kCAAkC,iBAAiB,4BAA4B,kCAAkC,yDAAyD,kEAAkE,SAAS,YAAY,4BAA4B,uEAAuE,mLAAmL,gCAAgC,uEAAuE,8BAA8B,4CAA4C,wGAAwG,4BAA4B,WAAW,4BAA4B,kGAAkG,wBAAwB,uDAAuD,uFAAuF,0BAA0B,qDAAqD,qFAAqF,EAAE,+EAA+E,sGAAsG,8BAA8B,8BAA8B,mDAAmD,wBAAwB,iCAAiC,4DAA4D,EAAE,sDAAsD,wBAAwB,gCAAgC,6EAA6E,EAAE,6CAA6C,oFAAoF,iCAAiC,oCAAoC,4CAA4C,oDAAoD,sCAAsC,kCAAkC,4BAA4B,6BAA6B,6CAA6C,EAAE,+DAA+D,2EAA2E,QAAQ,uBAAuB,EAAE,YAAY,6BAA6B,eAAe,EAAE,6BAA6B,WAAW,KAAK,GAAG,gDAAgD,8CAA8C,iCAAiC,iCAAiC,6BAA6B,8DAA8D,mCAAmC,mDAAmD,+BAA+B,EAAE,EAAE,sCAAsC,sFAAsF,wCAAwC,0FAA0F,oTAAoT,mLAAmL,wBAAwB,mBAAmB,yBAAyB,uCAAuC,+IAA+I,sCAAsC,0FAA0F,mEAAmE,sBAAsB,eAAe,+BAA+B,qGAAqG,+BAA+B,2BAA2B,iBAAiB,IAAI,8BAA8B,SAAS,sCAAsC,EAAE,gBAAgB,IAAI,SAAS,wBAAwB,2JAA2J,mYAAmY,KAAK,gEAAgE,KAAK,wTAAwT,wBAAwB,4MAA4M,gHAAgH,gBAAgB,gHAAgH,6EAA6E,oGAAoG,kBAAkB,2BAA2B,mBAAmB,sBAAsB,mBAAmB,4BAA4B,iCAAiC,sBAAsB,yBAAyB,6DAA6D,8MAA8M,KAAK,2EAA2E,wBAAwB,sBAAsB,0ZAA0Z,mBAAmB,WAAW,kGAAkG,2CAA2C,0CAA0C,2BAA2B,sHAAsH,qCAAqC,6DAA6D,kIAAkI,8IAA8I,2BAA2B,2BAA2B,wNAAwN,uBAAuB,+BAA+B,uCAAuC,QAAQ,WAAW,kBAAkB,wCAAwC,sBAAsB,qEAAqE,sBAAsB,0CAA0C,uHAAuH,iBAAiB,uCAAuC,oBAAoB,6FAA6F,6BAA6B,mDAAmD,4DAA4D,UAAU,oBAAoB,sFAAsF,8NAA8N,uDAAuD,uOAAuO,4CAA4C,qDAAqD,SAAS,qBAAqB,qBAAqB,mDAAmD,4BAA4B,gCAAgC,kCAAkC,2CAA2C,4BAA4B,8DAA8D,yBAAyB,2BAA2B,8FAA8F,mCAAmC,6OAA6O,uBAAuB,uDAAuD,4GAA4G,yBAAyB,gBAAgB,6DAA6D,qBAAqB,mDAAmD,IAAI,+BAA+B,4BAA4B,mJAAmJ,8BAA8B,2BAA2B,4BAA4B,WAAW,mDAAmD,uFAAuF,mBAAmB,EAAE,gBAAgB,6IAA6I,gDAAgD,mBAAmB,qCAAqC,mBAAmB,GAAG,kEAAkE,oBAAoB,uCAAuC,cAAc,6BAA6B,mBAAmB,wBAAwB,8DAA8D,oLAAoL,wBAAwB,gCAAgC,8WAA8W,6BAA6B,gCAAgC,wBAAwB,gCAAgC,kUAAkU,6BAA6B,gCAAgC,mCAAmC,oEAAoE,SAAS,0BAA0B,6BAA6B,0CAA0C,gCAAgC,yBAAyB,sDAAsD,oBAAoB,0BAA0B,8OAA8O,iCAAiC,SAAS,4GAA4G,SAAS,6BAA6B,0DAA0D,8CAA8C,4CAA4C,iBAAiB,kGAAkG,6BAA6B,mDAAmD,sIAAsI,gCAAgC,4BAA4B,+CAA+C,+FAA+F,2EAA2E,QAAQ,EAAE,YAAY,6BAA6B,eAAe,EAAE,6BAA6B,WAAW,EAAE,0BAA0B,WAAW,EAAE,8BAA8B,WAAW,EAAE,2BAA2B,WAAW,EAAE,+BAA+B,WAAW,EAAE,iCAAiC,WAAW,KAAK,GAAG,oFAAoF,wCAAwC,qHAAqH,aAAa,4LAA4L,SAAS,iBAAiB,oCAAoC,kEAAkE,4MAA4M,gBAAgB,QAAQ,aAAa,qCAAqC,uFAAuF,kBAAkB,kCAAkC,2CAA2C,kCAAkC,2CAA2C,4BAA4B,8DAA8D,yBAAyB,8BAA8B,mDAAmD,yBAAyB,6GAA6G,0BAA0B,sEAAsE,6BAA6B,0DAA0D,gDAAgD,gCAAgC,4BAA4B,mDAAmD,+FAA+F,2EAA2E,QAAQ,EAAE,YAAY,6BAA6B,eAAe,EAAE,6BAA6B,WAAW,EAAE,0BAA0B,WAAW,EAAE,8BAA8B,WAAW,EAAE,2BAA2B,WAAW,EAAE,+BAA+B,WAAW,EAAE,iCAAiC,WAAW,KAAK,KAAK,oFAAoF,wCAAwC,+DAA+D,kCAAkC,KAAK,0DAA0D,KAAK,8EAA8E,qOAAqO,gBAAgB,WAAW,uUAAuU,qBAAqB,iCAAiC,kBAAkB,4BAA4B,yJAAyJ,sJAAsJ,oCAAoC,uCAAuC,gCAAgC,+CAA+C,YAAY,qBAAqB,SAAS,qBAAqB,iBAAiB,sBAAsB,4CAA4C,EAAE,sBAAsB,sOAAsO,0BAA0B,0BAA0B,8BAA8B,WAAW,6BAA6B,4DAA4D,oCAAoC,4BAA4B,kGAAkG,+BAA+B,oHAAoH,+BAA+B,0GAA0G,uBAAuB,yHAAyH,gDAAgD,4CAA4C,0CAA0C,KAAK,gHAAgH,+BAA+B,IAAI,EAAE,+JAA+J,yBAAyB,mCAAmC,gDAAgD,qDAAqD,6DAA6D,8NAA8N,gBAAgB,EAAE,qBAAqB,4EAA4E,gCAAgC,sBAAsB,8BAA8B,EAAE,gCAAgC,4BAA4B,uBAAuB,mFAAmF,2EAA2E,QAAQ,EAAE,YAAY,6BAA6B,eAAe,EAAE,6BAA6B,WAAW,KAAK,GAAG,yCAAyC,kEAAkE,IAAI,EAAE,cAAc,sCAAsC,sFAAsF,wCAAwC,0CAA0C,wGAAwG,gRAAgR,cAAc,gBAAgB,kBAAkB,yBAAyB,WAAW,qJAAqJ,oFAAoF,MAAM,iDAAiD,4CAA4C,uBAAuB,4BAA4B,qBAAqB,gBAAgB,EAAE,oGAAoG,iEAAiE,iBAAiB,yBAAyB,yBAAyB,sBAAsB,gBAAgB,EAAE,0CAA0C,yCAAyC,sBAAsB,kDAAkD,6BAA6B,kIAAkI,qCAAqC,SAAS,4CAA4C,qEAAqE,SAAS,uCAAuC,MAAM,qBAAqB,kCAAkC,2FAA2F,8LAA8L,0BAA0B,MAAM,4CAA4C,kBAAkB,mCAAmC,OAAO,gCAAgC,4BAA4B,2BAA2B,uDAAuD,2EAA2E,QAAQ,EAAE,YAAY,6BAA6B,eAAe,KAAK,GAAG,gDAAgD,4DAA4D,sFAAsF,wCAAwC,uDAAuD,mGAAmG,gDAAgD,sDAAsD,KAAK,mCAAmC,2CAA2C,gBAAgB,wFAAwF,kBAAkB,yBAAyB,WAAW,0FAA0F,iBAAiB,2HAA2H,8FAA8F,wDAAwD,iEAAiE,SAAS,oBAAoB,WAAW,6HAA6H,WAAW,sBAAsB,sBAAsB,mOAAmO,0BAA0B,aAAa,sDAAsD,yDAAyD,4BAA4B,WAAW,mDAAmD,kBAAkB,EAAE,qBAAqB,wBAAwB,+DAA+D,8DAA8D,wDAAwD,iEAAiE,SAAS,gCAAgC,4BAA4B,2BAA2B,6EAA6E,2EAA2E,YAAY,EAAE,YAAY,6BAA6B,eAAe,EAAE,iCAAiC,WAAW,EAAE,6BAA6B,WAAW,KAAK,GAAG,oFAAoF,uCAAuC,YAAY,+IAA+I,2CAA2C,sJAAsJ,yLAAyL,SAAS,EAAE;AAC77wD,yC;CCNA;AACA;AACA;AACA;AACA;AACA,eAAe,yKAAyK,iBAAiB,mBAAmB,cAAc,4BAA4B,YAAY,UAAU,iBAAiB,gEAAgE,SAAS,+BAA+B,kBAAkB,aAAa,gBAAgB,4EAA4E,4HAA4H,2KAA2K,8EAA8E,gBAAgB,aAAa,oGAAoG,kDAAkD,cAAc,oBAAoB,iEAAiE,iBAAiB,aAAa,gBAAgB,QAAQ,waAAwa,yDAAyD,yGAAyG,0CAA0C,YAAY,eAAe,sGAAsG,IAAI,GAAG,IAAI,SAAS,IAAI,uPAAuP,sBAAsB,0CAA0C,kEAAkE,4BAA4B,4BAA4B,MAAM,IAAI,kBAAkB,sFAAsF,0EAA0E,yBAAyB,iBAAiB,aAAa,aAAa,gtBAAgtB,cAAc,qBAAqB,iGAAiG,2BAA2B,iCAAiC,YAAY,uCAAuC,gCAAgC,mBAAmB,aAAa,0GAA0G,cAAc,IAAI,wDAAwD,WAAW,aAAa,MAAM,IAAI,kBAAkB,UAAU,8DAA8D,aAAa,IAAI,2BAA2B,WAAW,w8BAAw8B,IAAI,yBAAyB,SAAS,gDAAgD,eAAe,eAAe,eAAe,aAAa,mDAAmD,aAAa,qDAAqD,cAAc,yCAAyC,+DAA+D,IAAI,cAAc,SAAS,IAAI,wBAAwB,SAAS,0BAA0B,cAAc,2CAA2C,mEAAmE,IAAI,YAAY,SAAS,IAAI,sBAAsB,SAAS,wBAAwB,aAAa,uDAAuD,aAAa,OAAO,WAAW,KAAK,mBAAmB,EAAE,EAAE,aAAa,MAAM,eAAe,gBAAgB,kBAAkB,gBAAgB,wBAAwB,cAAc,uBAAuB,YAAY,IAAI,6CAA6C,SAAS,IAAI,IAAI,iDAAiD,SAAS,KAAK,GAAG,qBAAqB,uBAAuB,oCAAoC,kCAAkC,mBAAmB,wBAAwB,yCAAyC,4BAA4B,gCAAgC,wCAAwC,qCAAqC,gKAAgK,SAAS,uBAAuB,oDAAoD,kBAAkB,UAAU,qBAAqB,kDAAkD,oBAAoB,UAAU,iBAAiB,cAAc,UAAU,2CAA2C,6CAA6C,cAAc,aAAa,cAAc,+BAA+B,+BAA+B,0CAA0C,WAAW,sBAAsB,2DAA2D,QAAQ,gDAAgD,qBAAqB,IAAI,sBAAsB,yBAAyB,WAAW,gCAAgC,SAAS,yBAAyB,8CAA8C,cAAc,MAAM,0JAA0J,aAAa,gCAAgC,4CAA4C,cAAc,gCAAgC,6DAA6D,QAAQ,IAAI,qIAAqI,QAAQ,qBAAqB,KAAK,qBAAqB,kCAAkC,aAAa,aAAa,cAAc,gCAAgC,QAAQ,yBAAyB,IAAI,mCAAmC,yBAAyB,IAAI,mCAAmC,SAAS,cAAc,+CAA+C,sJAAsJ,eAAe,cAAc,gCAAgC,sIAAsI,MAAM,oDAAoD,UAAU,6DAA6D,wCAAwC,6DAA6D,mEAAmE,mEAAmE,8EAA8E,kBAAkB,cAAc,kHAAkH,cAAc,8EAA8E,kBAAkB,wEAAwE,0CAA0C,wBAAwB,QAAQ,eAAe,wCAAwC,0DAA0D,4FAA4F,iBAAiB,cAAc,cAAc,gBAAgB,iJAAiJ,gBAAgB,mBAAmB,KAAK,mCAAmC,cAAc,IAAI,yBAAyB,SAAS,UAAU,gBAAgB,cAAc,uDAAuD,kBAAkB,mBAAmB,aAAa,wBAAwB,cAAc,WAAW,0BAA0B,iEAAiE,mDAAmD,aAAa,kDAAkD,EAAE,0EAA0E,wBAAwB,oCAAoC,IAAI,EAAE,kBAAkB,iBAAiB,+BAA+B,eAAe,oBAAoB,yBAAyB,YAAY,IAAI,EAAE,kBAAkB,0BAA0B,IAAI,MAAM,wCAAwC,kBAAkB,kBAAkB,wDAAwD,kCAAkC,SAAS,mCAAmC,cAAc,IAAI,qBAAqB,SAAS,UAAU,cAAc,iCAAiC,cAAc,OAAO,sCAAsC,6DAA6D,+MAA+M,+BAA+B,iCAAiC,mFAAmF,KAAK,WAAW,QAAQ,4CAA4C,MAAM,sMAAsM,KAAK,wDAAwD,2FAA2F,4FAA4F,gCAAgC,gEAAgE,wCAAwC,0EAA0E,uDAAuD,uCAAuC,YAAY,+CAA+C,qCAAqC,iBAAiB,cAAc,iBAAiB,cAAc,6CAA6C,SAAS,sEAAsE,0CAA0C,kEAAkE,gCAAgC,aAAa,sCAAsC,gCAAgC,yHAAyH,sCAAsC,8CAA8C,MAAM,6BAA6B,kBAAkB,iEAAiE,cAAc,WAAW,+BAA+B,cAAc,MAAM,YAAY,8BAA8B,oCAAoC,0DAA0D,MAAM,aAAa,uBAAuB,IAAI,uBAAuB,YAAY,mCAAmC,0CAA0C,4BAA4B,sCAAsC,kCAAkC,iBAAiB,gBAAgB,eAAe,SAAS,OAAO,8BAA8B,mBAAmB,SAAS,kCAAkC,WAAW,mBAAmB,SAAS,6CAA6C,SAAS,8BAA8B,SAAS,SAAS,gBAAgB,eAAe,qCAAqC,oBAAoB,WAAW,mBAAmB,yDAAyD,SAAS,8OAA8O,gCAAgC,sBAAsB,6CAA6C,oBAAoB,mCAAmC,iDAAiD,6BAA6B,kBAAkB,eAAe,+CAA+C,IAAI,qBAAqB,oBAAoB,2CAA2C,wBAAwB,yBAAyB,WAAW,gBAAgB,6DAA6D,YAAY,cAAc,eAAe,QAAQ,UAAU,qCAAqC,mCAAmC,eAAe,cAAc,kEAAkE,YAAY,mHAAmH,mGAAmG,iBAAiB,aAAa,gBAAgB,0CAA0C,8EAA8E,yCAAyC,wSAAwS,+FAA+F,8JAA8J,kBAAkB,wHAAwH,8EAA8E,gBAAgB,aAAa,oGAAoG,oIAAoI,2CAA2C,gCAAgC,4FAA4F,wCAAwC,iFAAiF,oCAAoC,wCAAwC,qDAAqD,yEAAyE,8CAA8C,uFAAuF,2CAA2C,sHAAsH,6CAA6C,6HAA6H,8CAA8C,4HAA4H,iCAAiC,6DAA6D,6CAA6C,oFAAoF,oDAAoD,mFAAmF,2DAA2D,yBAAyB,gDAAgD,4BAA4B,kBAAkB,4BAA4B,wFAAwF,oCAAoC,cAAc,8BAA8B,EAAE,uBAAuB,oBAAoB,6CAA6C,4BAA4B,yHAAyH,IAAI,gBAAgB,mBAAmB,iBAAiB,EAAE,gDAAgD,+BAA+B,kEAAkE,kBAAkB,mSAAmS,+BAA+B,4CAA4C,+BAA+B,4CAA4C,gCAAgC,oBAAoB,mCAAmC,sBAAsB,iCAAiC,qCAAqC,kCAAkC,aAAa,yCAAyC,mBAAmB,OAAO,iCAAiC,WAAW,+CAA+C,qBAAqB,wBAAwB,SAAS,iCAAiC,2BAA2B,qEAAqE,gCAAgC,yBAAyB,WAAW,6HAA6H,YAAY,WAAW,mCAAmC,qCAAqC,GAAG,2CAA2C,+CAA+C,gCAAgC,gBAAgB,gCAAgC,aAAa,+BAA+B,IAAI,KAAK,wBAAwB,YAAY,gFAAgF,qDAAqD,sLAAsL,iCAAiC,yJAAyJ,kCAAkC,qDAAqD,WAAW,sJAAsJ,KAAK,8BAA8B,oEAAoE,4BAA4B,+KAA+K,8IAA8I,GAAG,IAAI,gBAAgB,mBAAmB,iBAAiB,GAAG,oCAAoC,4BAA4B,8FAA8F,iBAAiB,uCAAuC,iBAAiB,gBAAgB,iCAAiC,0jBAA0jB,icAAic,qRAAqR,yDAAyD,40BAA40B,cAAc,SAAS,gDAAgD,SAAS,oFAAoF,mLAAmL,+BAA+B,oBAAoB,+BAA+B,mCAAmC,yBAAyB,gBAAgB,g+BAAg+B,EAAE,SAAS,6BAA6B,MAAM,0GAA0G,KAAK,+BAA+B,WAAW,kCAAkC,0CAA0C,IAAI,qBAAqB,0BAA0B,IAAI,0BAA0B,SAAS,gDAAgD,8BAA8B,sCAAsC,iCAAiC,WAAW,uJAAuJ,YAAY,0BAA0B,cAAc,yBAAyB,aAAa,wBAAwB,6BAA6B,EAAE,+BAA+B,aAAa,yBAAyB,uDAAuD,OAAO,gDAAgD,yBAAyB,+BAA+B,4CAA4C,mFAAmF,+HAA+H,+GAA+G,eAAe,wDAAwD,EAAE,KAAK,mCAAmC,+BAA+B,6CAA6C,GAAG,aAAa,+BAA+B,cAAc,mCAAmC,0GAA0G,aAAa,sBAAsB,aAAa,mBAAmB,cAAc,wEAAwE,aAAa,+IAA+I,8BAA8B,8BAA8B,QAAQ,cAAc,uIAAuI,+BAA+B,kMAAkM,6BAA6B,mCAAmC,IAAI,kCAAkC,kCAAkC,0MAA0M,gDAAgD,MAAM,4CAA4C,MAAM,4CAA4C,8BAA8B,MAAM,mEAAmE,sEAAsE,qCAAqC,uUAAuU,qCAAqC,oCAAoC,WAAW,yCAAyC,mDAAmD,kCAAkC,gCAAgC,WAAW,4EAA4E,0GAA0G,iBAAiB,6BAA6B,WAAW,kCAAkC,eAAe,EAAE,gCAAgC,+HAA+H,8BAA8B,gQAAgQ,oDAAoD,6CAA6C,0CAA0C,oIAAoI,OAAO,4BAA4B,OAAO,yBAAyB,2FAA2F,8BAA8B,aAAa,+FAA+F,aAAa,qEAAqE,aAAa,6CAA6C,0DAA0D,0BAA0B,WAAW,qDAAqD,uBAAuB,yBAAyB,YAAY,iCAAiC,yGAAyG,mCAAmC,uFAAuF,sCAAsC,WAAW,gRAAgR,wCAAwC,4BAA4B,IAAI,2CAA2C,UAAU,iBAAiB,cAAc;AAChw+B,iCAAiC,mDAAmD,4EAA4E,gFAAgF,wCAAwC,gBAAgB,oCAAoC,0BAA0B,iBAAiB,YAAY,sBAAsB,2CAA2C,IAAI,yEAAyE,UAAU,IAAI,uEAAuE,UAAU,UAAU,6EAA6E,YAAY,eAAe,IAAI,qFAAqF,SAAS,cAAc,iBAAiB,cAAc,cAAc,sHAAsH,mDAAmD,uHAAuH,cAAc,seAAse,aAAa,4EAA4E,0EAA0E,wGAAwG,cAAc,iXAAiX,mCAAmC,qDAAqD,gCAAgC,SAAS,2CAA2C,8BAA8B,iBAAiB,+BAA+B,cAAc,4BAA4B,wBAAwB,YAAY,2BAA2B,8BAA8B,iBAAiB,8CAA8C,OAAO,6EAA6E,6JAA6J,+BAA+B,IAAI,kFAAkF,IAAI,sBAAsB,qDAAqD,gHAAgH,UAAU,4BAA4B,0HAA0H,gBAAgB,UAAU,IAAI,mCAAmC,UAAU,sIAAsI,WAAW,sBAAsB,0BAA0B,kCAAkC,wBAAwB,0CAA0C,iFAAiF,UAAU,oFAAoF,oBAAoB,KAAK,8CAA8C,SAAS,kCAAkC,aAAa,IAAI,yFAAyF,kCAAkC,oCAAoC,gCAAgC,qCAAqC,iCAAiC,sCAAsC,iCAAiC,kDAAkD,wFAAwF,iBAAiB,UAAU,2EAA2E,+BAA+B,MAAM,IAAI,MAAM,IAAI,6CAA6C,UAAU,gGAAgG,SAAS,gBAAgB,wBAAwB,+BAA+B,oEAAoE,8BAA8B,eAAe,gCAAgC,0FAA0F,6CAA6C,8CAA8C,0BAA0B,iBAAiB,cAAc,uBAAuB,+CAA+C,+EAA+E,YAAY,iBAAiB,qBAAqB,WAAW,EAAE,4BAA4B,GAAG,gEAAgE,YAAY,+BAA+B,aAAa,sCAAsC,WAAW,2DAA2D,QAAQ,wGAAwG,yCAAyC,qGAAqG,yCAAyC,GAAG,SAAS,6BAA6B,6DAA6D,gCAAgC,WAAW,2BAA2B,sBAAsB,iGAAiG,mNAAmN,gCAAgC,aAAa,oCAAoC,aAAa,GAAG,WAAW,6HAA6H,+BAA+B,WAAW,iBAAiB,iBAAiB,+BAA+B,kDAAkD,eAAe,EAAE,4BAA4B,oBAAoB,mCAAmC,2OAA2O,sCAAsC,sEAAsE,iBAAiB,cAAc,4iBAA4iB,mBAAmB,6DAA6D,mBAAmB,yEAAyE,6BAA6B,uGAAuG,8BAA8B,kGAAkG,8BAA8B,kEAAkE,cAAc,+BAA+B,0DAA0D,gCAAgC,+CAA+C,iBAAiB,kCAAkC,sBAAsB,gCAAgC,6CAA6C,iBAAiB,gBAAgB,wCAAwC,YAAY,kBAAkB,uCAAuC,kEAAkE,eAAe,YAAY,WAAW,gBAAgB,mBAAmB,kBAAkB,uCAAuC,qBAAqB,2BAA2B,gBAAgB,0BAA0B,SAAS,6BAA6B,kBAAkB,uCAAuC,qBAAqB,wBAAwB,eAAe,+BAA+B,YAAY,cAAc,IAAI,cAAc,UAAU,EAAE,SAAS,SAAS,SAAS,kBAAkB,gEAAgE,kBAAkB,cAAc,EAAE,KAAK,WAAW,gBAAgB,8CAA8C,2CAA2C,yJAAyJ,aAAa,iBAAiB,wDAAwD,WAAW,iCAAiC,SAAS,iCAAiC,oEAAoE,mDAAmD,6EAA6E,yDAAyD,6BAA6B,gBAAgB,uDAAuD,UAAU,0BAA0B,oCAAoC,4BAA4B,+CAA+C,qBAAqB,2BAA2B,6BAA6B,OAAO,yBAAyB,MAAM,IAAI,yDAAyD,SAAS,2DAA2D,WAAW,cAAc,oCAAoC,uBAAuB,gCAAgC,uBAAuB,uBAAuB,gEAAgE,+BAA+B,kBAAkB,sCAAsC,8BAA8B,EAAE,UAAU,GAAG,wCAAwC,sCAAsC,kBAAkB,oCAAoC,qBAAqB,aAAa,aAAa,6BAA6B,4BAA4B,qCAAqC,eAAe,iCAAiC,cAAc,sBAAsB,gBAAgB,uCAAuC,aAAa,EAAE,mCAAmC,WAAW,iHAAiH,qBAAqB,UAAU,iCAAiC,4DAA4D,mCAAmC,MAAM,0BAA0B,gCAAgC,IAAI,KAAK,kBAAkB,YAAY,4CAA4C,iDAAiD,aAAa,6EAA6E,iBAAiB,iBAAiB,UAAU,UAAU,6BAA6B,4CAA4C,gBAAgB,mCAAmC,iBAAiB,EAAE,yCAAyC,6BAA6B,MAAM,4EAA4E,4BAA4B,6BAA6B,6BAA6B,MAAM,uCAAuC,WAAW,yBAAyB,WAAW,oBAAoB,sCAAsC,WAAW,0BAA0B,WAAW,gCAAgC,WAAW,gBAAgB,cAAc,wBAAwB,qCAAqC,gBAAgB,mCAAmC,wBAAwB,8BAA8B,uCAAuC,WAAW,yBAAyB,kBAAkB,uGAAuG,WAAW,wBAAwB,sBAAsB,mCAAmC,WAAW,EAAE,oBAAoB,mBAAmB,EAAE,yCAAyC,mCAAmC,iBAAiB,eAAe,EAAE,gDAAgD,WAAW,KAAK,gCAAgC,QAAQ,gCAAgC,eAAe,SAAS,oDAAoD,SAAS,wBAAwB,KAAK,YAAY,WAAW,iCAAiC,mBAAmB,eAAe,wBAAwB,8BAA8B,GAAG,eAAe,mCAAmC,2CAA2C,sCAAsC,UAAU,iBAAiB,cAAc,mCAAmC,SAAS,uBAAuB,IAAI,wBAAwB,SAAS,iLAAiL,uFAAuF,8EAA8E,SAAS,sOAAsO,YAAY,eAAe,0BAA0B,mBAAmB,6CAA6C,kFAAkF,0DAA0D,IAAI,kBAAkB,iBAAiB,eAAe,kBAAkB,gBAAgB,6DAA6D,sDAAsD,SAAS,oCAAoC,cAAc,YAAY,eAAe,cAAc,gCAAgC,IAAI,oJAAoJ,SAAS,cAAc,+BAA+B,MAAM,2EAA2E,SAAS,gBAAgB,uBAAuB,4FAA4F,SAAS,SAAS,gBAAgB,sBAAsB,gBAAgB,iCAAiC,SAAS,sLAAsL,gBAAgB,QAAQ,sDAAsD,MAAM,kBAAkB,SAAS,aAAa,0CAA0C,eAAe,gCAAgC,yCAAyC,cAAc,cAAc,yCAAyC,iBAAiB,sCAAsC,iBAAiB,uCAAuC,yCAAyC,iBAAiB,iEAAiE,yCAAyC,4FAA4F,sCAAsC,gBAAgB,QAAQ,oBAAoB,sBAAsB,eAAe,cAAc,WAAW,YAAY;AACxrhB,gCAAgC,WAAW,mCAAmC,eAAe,YAAY,aAAa,uGAAuG,WAAW,yBAAyB,qBAAqB,0CAA0C,QAAQ,IAAI,8FAA8F,6FAA6F,sBAAsB,4CAA4C,oDAAoD,6CAA6C,QAAQ,IAAI,2JAA2J,UAAU,GAAG,eAAe,cAAc,yBAAyB,oCAAoC,eAAe,gCAAgC,mCAAmC,8DAA8D,SAAS,SAAS,EAAE,gBAAgB,QAAQ,YAAY,gCAAgC,YAAY,uCAAuC,gBAAgB,0BAA0B,EAAE,sMAAsM,IAAI,uBAAuB,kBAAkB,SAAS,UAAU,mBAAmB,IAAI,wCAAwC,kBAAkB,SAAS,UAAU,gDAAgD,uGAAuG,6BAA6B,GAAG,eAAe,qBAAqB,SAAS,+GAA+G,SAAS,sBAAsB,YAAY,+BAA+B,IAAI,KAAK,sBAAsB,qDAAqD,UAAU,eAAe,wBAAwB,mBAAmB,qEAAqE,eAAe,aAAa,cAAc,SAAS,gCAAgC,WAAW,SAAS,cAAc,QAAQ,QAAQ,WAAW,yBAAyB,SAAS,aAAa,mBAAmB,oCAAoC,kGAAkG,SAAS,IAAI,cAAc,kCAAkC,iBAAiB,aAAa,cAAc,aAAa,iGAAiG,cAAc,2CAA2C,KAAK,UAAU,wBAAwB,oBAAoB,WAAW,mBAAmB,YAAY,0GAA0G,+BAA+B,KAAK,oBAAoB,YAAY,uBAAuB,oEAAoE,wMAAwM,+BAA+B,8CAA8C,kIAAkI,iCAAiC,iDAAiD,6FAA6F,wEAAwE,yBAAyB,uCAAuC,0DAA0D,MAAM,mCAAmC,aAAa,QAAQ,aAAa,gBAAgB,6BAA6B,SAAS,kDAAkD,IAAI,0DAA0D,4BAA4B,SAAS,0EAA0E,iDAAiD,WAAW,eAAe,qHAAqH,qPAAqP,yFAAyF,IAAI,mBAAmB,UAAU,kEAAkE,sCAAsC,uBAAuB,oBAAoB,YAAY,IAAI,iBAAiB,cAAc,uBAAuB,8LAA8L,qFAAqF,gCAAgC,QAAQ,UAAU,yCAAyC,WAAW,4GAA4G,iBAAiB,qCAAqC,2DAA2D,oQAAoQ,IAAI,2FAA2F,SAAS,4BAA4B,oNAAoN,0CAA0C,WAAW,0BAA0B,WAAW,4BAA4B,YAAY,+BAA+B,iBAAiB,6BAA6B,gCAAgC,+BAA+B,aAAa,sCAAsC,8BAA8B,IAAI,WAAW,iBAAiB,2BAA2B,IAAI,iBAAiB,8CAA8C,6BAA6B,SAAS,mEAAmE,uDAAuD,kDAAkD,IAAI,oDAAoD,SAAS,2CAA2C,SAAS,EAAE,OAAO,gCAAgC,+BAA+B,gCAAgC,6CAA6C,4BAA4B,oBAAoB,+BAA+B,2NAA2N,sCAAsC,qEAAqE,8BAA8B,+DAA+D,gBAAgB,eAAe,iBAAiB,wBAAwB,yBAAyB,YAAY,WAAW,yBAAyB,UAAU,iBAAiB,aAAa,kBAAkB,2DAA2D,8FAA8F,mEAAmE,8EAA8E,gBAAgB,aAAa,oGAAoG,yFAAyF,cAAc,OAAO,gLAAgL,oBAAoB,gDAAgD,eAAe,cAAc,0GAA0G,iDAAiD,qIAAqI,6BAA6B,mBAAmB,yDAAyD,8BAA8B,2DAA2D,sBAAsB,wFAAwF,mBAAmB,0PAA0P,MAAM,gCAAgC,iCAAiC,+BAA+B,qEAAqE,+DAA+D,yDAAyD,uBAAuB,EAAE,kBAAkB,eAAe,EAAE,iCAAiC,kGAAkG,kCAAkC,uDAAuD,uBAAuB,gCAAgC,MAAM,6BAA6B,MAAM,oCAAoC,MAAM,yBAAyB,MAAM,gCAAgC,MAAM,sCAAsC,MAAM,wCAAwC,iCAAiC,iBAAiB,6JAA6J,6BAA6B,gBAAgB,kBAAkB,OAAO,KAAK,mBAAmB,gCAAgC,yCAAyC,IAAI,+BAA+B,sBAAsB,gIAAgI,kCAAkC,gFAAgF,qCAAqC,MAAM,QAAQ,4BAA4B,wCAAwC,8BAA8B,yBAAyB,oCAAoC,mBAAmB,qCAAqC,yFAAyF,gCAAgC,cAAc,YAAY,mBAAmB,2BAA2B,eAAe,sBAAsB,qDAAqD,8EAA8E,kBAAkB,4EAA4E,kCAAkC,kCAAkC,gCAAgC,iCAAiC,eAAe,gBAAgB,SAAS,OAAO,eAAe,WAAW,gBAAgB,SAAS,YAAY,eAAe,aAAa,kBAAkB,kBAAkB,mBAAmB,wBAAwB,YAAY,eAAe,eAAe,wBAAwB,mGAAmG,0BAA0B,kBAAkB,gDAAgD,eAAe,cAAc,OAAO,+HAA+H,4CAA4C,oDAAoD,gBAAgB,kDAAkD,kCAAkC,8BAA8B,8BAA8B,gBAAgB,gCAAgC,UAAU,gCAAgC,WAAW,mCAAmC,eAAe,GAAG;AACp0Z;;CCRA,eAAe,oEAAoE,uBAAuB,uDAAuD,gBAAgB,OAAO,OAAO,qCAAqC,aAAa,0CAA0C,aAAa,wCAAwC,WAAW,OAAO,WAAW,kBAAkB,EAAE;AACjY,8BAA8B,sBAAsB,sBAAsB,mBAAmB,aAAa,aAAa,iDAAiD,8BAA8B,wBAAwB,qDAAqD,uCAAuC,iBAAiB,YAAY,GAAG,uCAAuC,oBAAoB,mBAAmB,6BAA6B,sBAAsB,6DAA6D,cAAc,aAAa,WAAW,WAAW;AACzkB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA,0DAA0D,iBAAiB;AAC3E,+BAA+B;;AAE/B,KAAK,GAAG,4BAA4B;AACpC;;AAEA;AACA;AACA,OAAO;AACP;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,6CAA6C,6BAA6B,YAAY,EAAE,OAAO,iBAAiB,mBAAmB,uBAAuB,4EAA4E,EAAE,EAAE,sBAAsB,eAAe,EAAE;;AAEjR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yFAAyF;AACzF;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA,KAAK,GAAG,gJAAgJ;;AAExJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;;AAEA,0GAA0G,mBAAmB,EAAE,mBAAmB,8HAA8H;;AAEhR;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA,6CAA6C,6BAA6B,YAAY,EAAE,OAAO,iBAAiB,mBAAmB,uBAAuB,4EAA4E,EAAE,EAAE,sBAAsB,eAAe,EAAE;;AAEjR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,mBAAmB;AACnB,gCAAgC;AAChC;;AAEA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,mBAAmB;AACnB,gCAAgC;AAChC;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,uDAAuD,SAAS,uBAAuB,EAAE;AACzF;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,eAAe;AACf;AACA,aAAa;;AAEb;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb,WAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA,KAAK,GAAG,iEAAiE;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA,KAAK,IAAI;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;;AAEP,0GAA0G,mBAAmB,EAAE,mBAAmB,8HAA8H;;AAEhR;;AAEA;;AAEA;;AAEA,6CAA6C,6BAA6B,YAAY,EAAE,OAAO,iBAAiB,mBAAmB,uBAAuB,4EAA4E,EAAE,EAAE,sBAAsB,eAAe,EAAE;;AAEjR;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+GAA+G,cAAc;AAC7H;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA,qBAAqB;AACrB,mBAAmB;AACnB;AACA,sDAAsD;AACtD;AACA;AACA,+DAA+D,sBAAsB,IAAI;AACzF;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,WAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb,WAAW;AACX;AACA;;AAEA,KAAK,GAAG,oBAAoB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;;AAEP,0GAA0G,mBAAmB,EAAE,mBAAmB,8HAA8H;;AAEhR;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,6CAA6C,6BAA6B,YAAY,EAAE,OAAO,iBAAiB,mBAAmB,uBAAuB,4EAA4E,EAAE,EAAE,sBAAsB,eAAe,EAAE;;AAEjR,4CAA4C,uCAAuC,gBAAgB;;AAEnG;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA,KAAK,GAAG,2BAA2B;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,4CAA4C,uCAAuC,gBAAgB;;AAEnG,6CAA6C,6BAA6B,YAAY,EAAE,OAAO,iBAAiB,mBAAmB,uBAAuB,4EAA4E,EAAE,EAAE,sBAAsB,eAAe,EAAE;;AAEjR;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,KAAK,GAAG,sHAAsH;AAC9H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;;AAEA;;AAEA;;AAEA,6CAA6C,6BAA6B,YAAY,EAAE,OAAO,iBAAiB,mBAAmB,uBAAuB,4EAA4E,EAAE,EAAE,sBAAsB,eAAe,EAAE;;AAEjR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA,KAAK,GAAG,iBAAiB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,KAAK,IAAI;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,2CAA2C;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA,KAAK,IAAI;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;;AAEA,0GAA0G,mBAAmB,EAAE,mBAAmB,8HAA8H;;AAEhR;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA,6CAA6C,6BAA6B,YAAY,EAAE,OAAO,iBAAiB,mBAAmB,uBAAuB,4EAA4E,EAAE,EAAE,sBAAsB,eAAe,EAAE;;AAEjR;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,WAAW;AACX;AACA;;AAEA;AACA;;AAEA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA,iBAAiB;AACjB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA,mBAAmB;AACnB,iBAAiB;AACjB;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,KAAK,GAAG,gEAAgE;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC,WAAW;AACX;AACA;AACA;AACA;AACA;;AAEA,KAAK,IAAI;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;;AAEP,0GAA0G,mBAAmB,EAAE,mBAAmB,8HAA8H;;AAEhR;;AAEA;;AAEA;;AAEA,6CAA6C,6BAA6B,YAAY,EAAE,OAAO,iBAAiB,mBAAmB,uBAAuB,4EAA4E,EAAE,EAAE,sBAAsB,eAAe,EAAE;;AAEjR;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,KAAK,GAAG,iBAAiB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;;AAEP,0GAA0G,mBAAmB,EAAE,mBAAmB,8HAA8H;;AAEhR;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA,6CAA6C,6BAA6B,YAAY,EAAE,OAAO,iBAAiB,mBAAmB,uBAAuB,4EAA4E,EAAE,EAAE,sBAAsB,eAAe,EAAE;;AAEjR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,eAAe;AACf;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,eAAe;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,gCAAgC;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,eAAe;AACf;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,eAAe;AACf;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA,KAAK,GAAG,iBAAiB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;;AAEP,0GAA0G,mBAAmB,EAAE,mBAAmB,8HAA8H;;AAEhR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB,iBAAiB,QAAQ;AACzB,iBAAiB,QAAQ;AACzB,kBAAkB,QAAQ;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB,OAAO;AACzB;AACA;AACA;AACA;;AAEA;;AAEA,sBAAsB;;AAEtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;;AAEA,KAAK,IAAI;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,yBAAyB,mBAAmB;AAC5C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,yBAAyB,sCAAsC;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,+BAA+B,gCAAgC;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,eAAe;AAC5B;;AAEA;AACA;AACA;AACA,aAAa,eAAe;AAC5B;;AAEA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;;AAEb;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,yDAAyD;;AAEzD;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,qDAAqD,OAAO;AAC5D;AACA;AACA;AACA,eAAe;AACf;AACA,WAAW;AACX;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,qCAAqC;;AAErC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW;;AAEX;AACA;AACA;;AAEA;AACA,yBAAyB,8BAA8B;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,aAAa;AACb;;;AAGA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb,WAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,kCAAkC;AACjD;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA,aAAa;AACb,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,aAAa;AACb,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA,eAAe;;AAEf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,mBAAmB;AACnB;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;;AAEA;AACA;AACA,eAAe;;AAEf;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,mBAAmB;AACnB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,WAAW;;AAEX,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D;AAC9D;AACA,aAAa;AACb,WAAW;;AAEX;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA,WAAW;AACX;AACA,WAAW;AACX;AACA,WAAW;AACX;AACA,WAAW;AACX;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA,WAAW;AACX;AACA,WAAW;AACX;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf,aAAa;;AAEb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;;AAEf;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D;AAC3D;AACA,iBAAiB;AACjB;AACA;AACA;AACA,eAAe;AACf;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,6BAA6B,4BAA4B;AACzD;AACA;AACA;AACA,qEAAqE;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,+BAA+B,4BAA4B;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,eAAe;AACf,aAAa;AACb;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA,iBAAiB;AACjB;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,SAAS;;AAET;AACA;;AAEA,KAAK,GAAG,YAAY;AACpB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,kDAAkD;AAClD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0BAA0B;AAC1B,gCAAgC;AAChC;AACA;AACA;AACA,+DAA+D;AAC/D,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,WAAW;AACX,uDAAuD;AACvD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB,OAAO;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,kDAAkD;AAClD;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA;AACA,kBAAkB;AAClB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,KAAK,IAAI;AACT,GAAG,IAAI;AACP,CAAC;;CCp/JD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;CCzIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,wEAAwE,cAAc;AACtF;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,2BAA2B,cAAc;AACzC;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,2BAA2B;AAC/D;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,oCAAoC,kDAAkD;AACtF;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS,IAAI;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,IAAI;AACb;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,gDAAgD;AAChD;AACA,iBAAiB;AACjB;AACA,0EAA0E;AAC1E;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS,IAAI;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS,IAAI;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS,IAAI;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;;AAEA;AACA,+BAA+B,cAAc;AAC7C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD;AAChD,gIAAgI;AAChI;AACA,yBAAyB,6IAA6I,gVAAgV,oFAAoF;AAC1kB;AACA,yBAAyB;AACzB;AACA,iBAAiB;AACjB,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,4BAA4B;AACrF,oDAAoD,cAAc;AAClE;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,4BAA4B;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,yDAAyD,4BAA4B;AACrF,wCAAwC;AACxC;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,yDAAyD,4BAA4B;AACrF;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD,iBAAiB;AACjB;AACA;;AAEA;AACA,0BAA0B;AAC1B;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA,+BAA+B,QAAQ,cAAc;AACrD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kFAAkF;AAClF;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA;;AAEA;AACA,4DAA4D,OAAO;AACnE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kGAAkG,OAAO;AACzG;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B,iBAAiB;;AAEjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB,aAAa;AAC9B;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA;AACA,SAAS,IAAI;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;;AAEA;AACA,+BAA+B,cAAc;AAC7C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E,4BAA4B;AACvG;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E,4BAA4B;AACvG;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA,kGAAkG,4BAA4B;AAC9H;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA,yBAAyB;AACzB;AACA,kLAAkL;AAClL;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,kGAAkG,4BAA4B;AAC9H;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA;AACA;AACA,iCAAiC;AACjC,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B,yBAAyB;AACzB;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC,yBAAyB;AACzB;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA,6BAA6B;AAC7B,yBAAyB;AACzB;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA,qCAAqC;AACrC,iCAAiC;AACjC;AACA,iCAAiC;AACjC,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B,yBAAyB;AACzB;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA,yBAAyB;AACzB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA,yBAAyB;AACzB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA,yBAAyB;AACzB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA,yBAAyB;AACzB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,2CAA2C,qDAAqD;AAChG;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA,yBAAyB;AACzB;AACA,yBAAyB;AACzB;AACA,yBAAyB;AACzB;AACA,yBAAyB;AACzB;AACA,yBAAyB;AACzB;AACA,yBAAyB;AACzB;AACA,yBAAyB;AACzB;AACA,yBAAyB;AACzB;AACA,yBAAyB;AACzB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4FAA4F,4BAA4B;AACxH;AACA;AACA;AACA,iCAAiC;AACjC;AACA,iCAAiC;AACjC;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA,yBAAyB;AACzB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA,6BAA6B;AAC7B;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA,yBAAyB;AACzB;AACA,iBAAiB;AACjB,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,yBAAyB;AACzB,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA,yBAAyB;AACzB,qBAAqB;AACrB;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA,yBAAyB;AACzB,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,qBAAqB;AACrB;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA,yBAAyB;AACzB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yFAAyF,4BAA4B;AACrH;AACA;AACA;AACA,yCAAyC;AACzC;AACA,yCAAyC;AACzC;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mGAAmG,4BAA4B;AAC/H;AACA;AACA;AACA,yCAAyC;AACzC;AACA,yCAAyC;AACzC;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA,iCAAiC;AACjC,6BAA6B;AAC7B;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qGAAqG;AACrG,qBAAqB;AACrB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb;AACA,SAAS,IAAI;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS,IAAI;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,aAAa;;AAEb;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;;AAEA;AACA,+BAA+B,cAAc;AAC7C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC,iCAAiC;AACjC,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA;AACA;AACA,qCAAqC;AACrC,iCAAiC;AACjC,6BAA6B;AAC7B,yBAAyB;AACzB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B,yBAAyB;AACzB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B,yBAAyB;AACzB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC,6BAA6B;AAC7B;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uFAAuF,4BAA4B;AACnH;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA,yBAAyB;AACzB;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uFAAuF,4BAA4B;AACnH;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA,yBAAyB;AACzB;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qGAAqG;AACrG,qBAAqB;AACrB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb;AACA,SAAS,IAAI;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B,yBAAyB;AACzB,qBAAqB;AACrB;AACA;AACA,yBAAyB;AACzB,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA,iCAAiC;AACjC;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,6DAA6D,uEAAuE;AACpI,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;;AAEA;AACA,+BAA+B,cAAc;AAC7C;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qGAAqG;AACrG,qBAAqB;AACrB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qGAAqG,4BAA4B;AACjI;AACA;AACA;AACA,qCAAqC;AACrC;AACA,qCAAqC;AACrC;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA,qCAAqC;AACrC,iCAAiC;AACjC,6BAA6B;AAC7B;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA,qCAAqC;AACrC,iCAAiC;AACjC;AACA;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA,qCAAqC;AACrC,iCAAiC;AACjC;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,cAAc;AACzE;AACA;AACA;AACA;AACA;AACA,iEAAiE;AACjE;AACA;AACA;AACA;AACA;AACA,iEAAiE;AACjE;AACA,iEAAiE;AACjE,6DAA6D;AAC7D;AACA,6DAA6D;AAC7D;AACA,yDAAyD;AACzD;AACA,yCAAyC;AACzC,qCAAqC,2BAA2B,4BAA4B;AAC5F,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,cAAc;AACzE,yCAAyC;AACzC,qCAAqC,2BAA2B,4BAA4B;AAC5F,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE,4BAA4B;AACjG;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,2FAA2F;AAC3F;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,qBAAqB;AACrB;AACA;AACA;AACA,2FAA2F;AAC3F;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6EAA6E,4BAA4B;AACzG;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA,6BAA6B;AAC7B;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA,6BAA6B;AAC7B;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,+CAA+C,iCAAiC;AAChF;AACA;AACA;AACA;AACA;AACA;AACA,yGAAyG,4BAA4B;AACrI;AACA;AACA;AACA,yCAAyC;AACzC;AACA,yCAAyC;AACzC;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,0CAA0C;AACzF;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,2CAA2C,sCAAsC;AACjF;AACA,6BAA6B;AAC7B;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,mDAAmD,kCAAkC;AACrF;AACA,iCAAiC;AACjC;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC,6BAA6B;AAC7B;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA,6BAA6B;AAC7B;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC,6BAA6B;AAC7B;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC,6BAA6B;AAC7B;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0FAA0F,4BAA4B;AACtH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gHAAgH,4BAA4B;AAC5I;AACA;AACA,yCAAyC;AACzC;AACA,yCAAyC;AACzC;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,iFAAiF,4BAA4B;AAC7G;AACA;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sFAAsF,4BAA4B;AAClH;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yFAAyF,4BAA4B;AACrH;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2FAA2F,4BAA4B;AACvH;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0FAA0F,4BAA4B;AACtH;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA,iCAAiC;AACjC;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;A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","file":"scripts.js","sourcesContent":["/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */\n!function(e,t){\"use strict\";\"object\"==typeof module&&\"object\"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error(\"jQuery requires a window with a document\");return t(e)}:t(e)}(\"undefined\"!=typeof window?window:this,function(C,e){\"use strict\";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return\"function\"==typeof e&&\"number\"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement(\"script\");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+\"\":\"object\"==typeof e||\"function\"==typeof e?n[o.call(e)]||\"object\":typeof e}var f=\"3.4.1\",k=function(e,t){return new k.fn.init(e,t)},p=/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g;function d(e){var t=!!e&&\"length\"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&(\"array\"===n||0===t||\"number\"==typeof t&&0+~]|\"+M+\")\"+M+\"*\"),U=new RegExp(M+\"|>\"),X=new RegExp($),V=new RegExp(\"^\"+I+\"$\"),G={ID:new RegExp(\"^#(\"+I+\")\"),CLASS:new RegExp(\"^\\\\.(\"+I+\")\"),TAG:new RegExp(\"^(\"+I+\"|[*])\"),ATTR:new RegExp(\"^\"+W),PSEUDO:new RegExp(\"^\"+$),CHILD:new RegExp(\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\"+M+\"*(even|odd|(([+-]|)(\\\\d*)n|)\"+M+\"*(?:([+-]|)\"+M+\"*(\\\\d+)|))\"+M+\"*\\\\)|)\",\"i\"),bool:new RegExp(\"^(?:\"+R+\")$\",\"i\"),needsContext:new RegExp(\"^\"+M+\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\"+M+\"*((?:-\\\\d)?\\\\d*)\"+M+\"*\\\\)|)(?=[^-]|$)\",\"i\")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\\d$/i,K=/^[^{]+\\{\\s*\\[native \\w/,Z=/^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,ee=/[+~]/,te=new RegExp(\"\\\\\\\\([\\\\da-f]{1,6}\"+M+\"?|(\"+M+\")|.)\",\"ig\"),ne=function(e,t,n){var r=\"0x\"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,ie=function(e,t){return t?\"\\0\"===e?\"\\ufffd\":e.slice(0,-1)+\"\\\\\"+e.charCodeAt(e.length-1).toString(16)+\" \":\"\\\\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&\"fieldset\"===e.nodeName.toLowerCase()},{dir:\"parentNode\",next:\"legend\"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],\"string\"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+\" \"]&&(!v||!v.test(t))&&(1!==p||\"object\"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute(\"id\"))?s=s.replace(re,ie):e.setAttribute(\"id\",s=k),o=(l=h(t)).length;while(o--)l[o]=\"#\"+s+\" \"+xe(l[o]);c=l.join(\",\"),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute(\"id\")}}}return g(t.replace(B,\"$1\"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+\" \")>b.cacheLength&&delete e[r.shift()],e[t+\" \"]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement(\"fieldset\");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split(\"|\"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return\"input\"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return(\"input\"===t||\"button\"===t)&&e.type===n}}function ge(t){return function(e){return\"form\"in e?e.parentNode&&!1===e.disabled?\"label\"in e?\"label\"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:\"label\"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&\"undefined\"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||\"HTML\")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener(\"unload\",oe,!1):n.attachEvent&&n.attachEvent(\"onunload\",oe)),d.attributes=ce(function(e){return e.className=\"i\",!e.getAttribute(\"className\")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment(\"\")),!e.getElementsByTagName(\"*\").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute(\"id\")===t}},b.find.ID=function(e,t){if(\"undefined\"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t=\"undefined\"!=typeof e.getAttributeNode&&e.getAttributeNode(\"id\");return t&&t.value===n}},b.find.ID=function(e,t){if(\"undefined\"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode(\"id\"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode(\"id\"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return\"undefined\"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if(\"*\"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if(\"undefined\"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML=\"\",e.querySelectorAll(\"[msallowcapture^='']\").length&&v.push(\"[*^$]=\"+M+\"*(?:''|\\\"\\\")\"),e.querySelectorAll(\"[selected]\").length||v.push(\"\\\\[\"+M+\"*(?:value|\"+R+\")\"),e.querySelectorAll(\"[id~=\"+k+\"-]\").length||v.push(\"~=\"),e.querySelectorAll(\":checked\").length||v.push(\":checked\"),e.querySelectorAll(\"a#\"+k+\"+*\").length||v.push(\".#.+[+~]\")}),ce(function(e){e.innerHTML=\"\";var t=C.createElement(\"input\");t.setAttribute(\"type\",\"hidden\"),e.appendChild(t).setAttribute(\"name\",\"D\"),e.querySelectorAll(\"[name=d]\").length&&v.push(\"name\"+M+\"*[*^$|!~]?=\"),2!==e.querySelectorAll(\":enabled\").length&&v.push(\":enabled\",\":disabled\"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(\":disabled\").length&&v.push(\":enabled\",\":disabled\"),e.querySelectorAll(\"*,:x\"),v.push(\",.*:\")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,\"*\"),c.call(e,\"[s!='']:x\"),s.push(\"!=\",$)}),v=v.length&&new RegExp(v.join(\"|\")),s=s.length&&new RegExp(s.join(\"|\")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+\" \"]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0\":{dir:\"parentNode\",first:!0},\" \":{dir:\"parentNode\"},\"+\":{dir:\"previousSibling\",first:!0},\"~\":{dir:\"previousSibling\"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||\"\").replace(te,ne),\"~=\"===e[2]&&(e[3]=\" \"+e[3]+\" \"),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),\"nth\"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*(\"even\"===e[3]||\"odd\"===e[3])),e[5]=+(e[7]+e[8]||\"odd\"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||\"\":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(\")\",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return\"*\"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+\" \"];return t||(t=new RegExp(\"(^|\"+M+\")\"+e+\"(\"+M+\"|$)\"))&&p(e,function(e){return t.test(\"string\"==typeof e.className&&e.className||\"undefined\"!=typeof e.getAttribute&&e.getAttribute(\"class\")||\"\")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?\"!=\"===r:!r||(t+=\"\",\"=\"===r?t===i:\"!=\"===r?t!==i:\"^=\"===r?i&&0===t.indexOf(i):\"*=\"===r?i&&-1\",\"#\"===e.firstChild.getAttribute(\"href\")})||fe(\"type|href|height|width\",function(e,t,n){if(!n)return e.getAttribute(t,\"type\"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML=\"\",e.firstChild.setAttribute(\"value\",\"\"),\"\"===e.firstChild.getAttribute(\"value\")})||fe(\"value\",function(e,t,n){if(!n&&\"input\"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute(\"disabled\")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);k.find=h,k.expr=h.selectors,k.expr[\":\"]=k.expr.pseudos,k.uniqueSort=k.unique=h.uniqueSort,k.text=h.getText,k.isXMLDoc=h.isXML,k.contains=h.contains,k.escapeSelector=h.escape;var T=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&k(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},N=k.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var D=/^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):\"string\"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,\"string\"==typeof e){if(!(r=\"<\"===e[0]&&\">\"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\\x20\\t\\r\\n\\f]*)/i,he=/^$|^module$|\\/(?:java|ecma)script/i,ge={option:[1,\"\"],thead:[1,\"\",\"
\"],col:[2,\"\",\"
\"],tr:[2,\"\",\"
\"],td:[3,\"\",\"
\"],_default:[0,\"\",\"\"]};function ve(e,t){var n;return n=\"undefined\"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||\"*\"):\"undefined\"!=typeof e.querySelectorAll?e.querySelectorAll(t||\"*\"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx\",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==(\"focus\"===t)}function Ae(e,t,n,r,i,o){var a,s;if(\"object\"==typeof t){for(s in\"string\"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&(\"string\"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return\"undefined\"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||\"\").match(R)||[\"\"]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||\"\").split(\".\").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(\".\")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||\"\").match(R)||[\"\"]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||\"\").split(\".\").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp(\"(^|\\\\.)\"+h.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&(\"**\"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,\"handle events\")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,\"events\")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\\x20\\t\\r\\n\\f]*)[^>]*)\\/>/gi,qe=/\\s*$/g;function Oe(e,t){return A(e,\"table\")&&A(11!==t.nodeType?t:t.firstChild,\"tr\")&&k(e).children(\"tbody\")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute(\"type\"))+\"/\"+e.type,e}function Re(e){return\"true/\"===(e.type||\"\").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute(\"type\"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n\")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r\").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on(\"load error\",i=function(e){r.remove(),i=null,e&&t(\"error\"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\\?(?=&|$)|\\?\\?/;k.ajaxSetup({jsonp:\"callback\",jsonpCallback:function(){var e=Gt.pop()||k.expando+\"_\"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter(\"json jsonp\",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?\"url\":\"string\"==typeof e.data&&0===(e.contentType||\"\").indexOf(\"application/x-www-form-urlencoded\")&&Yt.test(e.data)&&\"data\");if(a||\"jsonp\"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,\"$1\"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?\"&\":\"?\")+e.jsonp+\"=\"+r),e.converters[\"script json\"]=function(){return o||k.error(r+\" was not called\"),o[0]},e.dataTypes[0]=\"json\",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),\"script\"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument(\"\").body).innerHTML=\"
\",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return\"string\"!=typeof e?[]:(\"boolean\"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument(\"\")).createElement(\"base\")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(\" \");return-1\").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each([\"ajaxStart\",\"ajaxStop\",\"ajaxComplete\",\"ajaxError\",\"ajaxSuccess\",\"ajaxSend\"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,\"position\"),c=k(e),f={};\"static\"===l&&(e.style.position=\"relative\"),s=c.offset(),o=k.css(e,\"top\"),u=k.css(e,\"left\"),(\"absolute\"===l||\"fixed\"===l)&&-1<(o+u).indexOf(\"auto\")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),\"using\"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if(\"fixed\"===k.css(r,\"position\"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&\"static\"===k.css(e,\"position\"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,\"borderTopWidth\",!0),i.left+=k.css(e,\"borderLeftWidth\",!0))}return{top:t.top-i.top-k.css(r,\"marginTop\",!0),left:t.left-i.left-k.css(r,\"marginLeft\",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&\"static\"===k.css(e,\"position\"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:\"pageXOffset\",scrollTop:\"pageYOffset\"},function(t,i){var o=\"pageYOffset\"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each([\"top\",\"left\"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+\"px\":t})}),k.each({Height:\"height\",Width:\"width\"},function(a,s){k.each({padding:\"inner\"+a,content:s,\"\":\"outer\"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||\"boolean\"!=typeof e),i=r||(!0===e||!0===t?\"margin\":\"border\");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf(\"outer\")?e[\"inner\"+a]:e.document.documentElement[\"client\"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body[\"scroll\"+a],r[\"scroll\"+a],e.body[\"offset\"+a],r[\"offset\"+a],r[\"client\"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each(\"blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu\".split(\" \"),function(e,n){k.fn[n]=function(e,t){return 0=o.clientWidth&&i>=o.clientHeight}),l=0i[e]&&!t.escapeWithReference&&(n=_(p[o],i[e]-('right'===e?p.width:p.height))),pe({},o,n)}};return n.forEach(function(e){var t=-1===['left','top'].indexOf(e)?'secondary':'primary';p=se({},p,s[t](e))}),e.offsets.popper=p,e},priority:['left','right','top','bottom'],padding:5,boundariesElement:'scrollParent'},keepTogether:{order:400,enabled:!0,fn:function(e){var t=e.offsets,o=t.popper,i=t.reference,n=e.placement.split('-')[0],r=X,p=-1!==['top','bottom'].indexOf(n),s=p?'right':'bottom',d=p?'left':'top',a=p?'width':'height';return o[s]r(i[s])&&(e.offsets.popper[d]=r(i[s])),e}},arrow:{order:500,enabled:!0,fn:function(e,o){var i;if(!F(e.instance.modifiers,'arrow','keepTogether'))return e;var n=o.element;if('string'==typeof n){if(n=e.instance.popper.querySelector(n),!n)return e;}else if(!e.instance.popper.contains(n))return console.warn('WARNING: `arrow.element` must be child of its popper element!'),e;var r=e.placement.split('-')[0],p=e.offsets,s=p.popper,d=p.reference,a=-1!==['left','right'].indexOf(r),l=a?'height':'width',f=a?'Top':'Left',m=f.toLowerCase(),h=a?'left':'top',g=a?'bottom':'right',u=L(n)[l];d[g]-us[g]&&(e.offsets.popper[m]+=d[m]+u-s[g]),e.offsets.popper=c(e.offsets.popper);var b=d[m]+d[l]/2-u/2,w=t(e.instance.popper),y=parseFloat(w['margin'+f],10),E=parseFloat(w['border'+f+'Width'],10),v=b-e.offsets.popper[m]-y-E;return v=J(_(s[l]-u,v),0),e.arrowElement=n,e.offsets.arrow=(i={},pe(i,m,Math.round(v)),pe(i,h,''),i),e},element:'[x-arrow]'},flip:{order:600,enabled:!0,fn:function(e,t){if(k(e.instance.modifiers,'inner'))return e;if(e.flipped&&e.placement===e.originalPlacement)return e;var o=y(e.instance.popper,e.instance.reference,t.padding,t.boundariesElement),i=e.placement.split('-')[0],n=x(i),r=e.placement.split('-')[1]||'',p=[];switch(t.behavior){case le.FLIP:p=[i,n];break;case le.CLOCKWISE:p=q(i);break;case le.COUNTERCLOCKWISE:p=q(i,!0);break;default:p=t.behavior;}return p.forEach(function(s,d){if(i!==s||p.length===d+1)return e;i=e.placement.split('-')[0],n=x(i);var a=e.offsets.popper,l=e.offsets.reference,f=X,m='left'===i&&f(a.right)>f(l.left)||'right'===i&&f(a.left)f(l.top)||'bottom'===i&&f(a.top)f(o.right),g=f(a.top)f(o.bottom),b='left'===i&&h||'right'===i&&c||'top'===i&&g||'bottom'===i&&u,w=-1!==['top','bottom'].indexOf(i),y=!!t.flipVariations&&(w&&'start'===r&&h||w&&'end'===r&&c||!w&&'start'===r&&g||!w&&'end'===r&&u);(m||b||y)&&(e.flipped=!0,(m||b)&&(i=p[d+1]),y&&(r=K(r)),e.placement=i+(r?'-'+r:''),e.offsets.popper=se({},e.offsets.popper,S(e.instance.popper,e.offsets.reference,e.placement)),e=C(e.instance.modifiers,e,'flip'))}),e},behavior:'flip',padding:5,boundariesElement:'viewport'},inner:{order:700,enabled:!1,fn:function(e){var t=e.placement,o=t.split('-')[0],i=e.offsets,n=i.popper,r=i.reference,p=-1!==['left','right'].indexOf(o),s=-1===['top','left'].indexOf(o);return n[p?'left':'top']=r[o]-(s?n[p?'width':'height']:0),e.placement=x(t),e.offsets.popper=c(n),e}},hide:{order:800,enabled:!0,fn:function(e){if(!F(e.instance.modifiers,'hide','preventOverflow'))return e;var t=e.offsets.reference,o=T(e.instance.modifiers,function(e){return'preventOverflow'===e.name}).boundaries;if(t.bottomo.right||t.top>o.bottom||t.rightthis._items.length-1||t<0))if(this._isSliding)g(this._element).one(Q.SLID,function(){return e.to(t)});else{if(n===t)return this.pause(),void this.cycle();var i=ndocument.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._element.style.paddingLeft=this._scrollbarWidth+\"px\"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+\"px\")},t._resetAdjustments=function(){this._element.style.paddingLeft=\"\",this._element.style.paddingRight=\"\"},t._checkScrollbar=function(){var t=document.body.getBoundingClientRect();this._isBodyOverflowing=t.left+t.right
',trigger:\"hover focus\",title:\"\",delay:0,html:!1,selector:!1,placement:\"top\",offset:0,container:!1,fallbackPlacement:\"flip\",boundary:\"scrollParent\",sanitize:!0,sanitizeFn:null,whiteList:Ee},je=\"show\",He=\"out\",Re={HIDE:\"hide\"+De,HIDDEN:\"hidden\"+De,SHOW:\"show\"+De,SHOWN:\"shown\"+De,INSERTED:\"inserted\"+De,CLICK:\"click\"+De,FOCUSIN:\"focusin\"+De,FOCUSOUT:\"focusout\"+De,MOUSEENTER:\"mouseenter\"+De,MOUSELEAVE:\"mouseleave\"+De},xe=\"fade\",Fe=\"show\",Ue=\".tooltip-inner\",We=\".arrow\",qe=\"hover\",Me=\"focus\",Ke=\"click\",Qe=\"manual\",Be=function(){function i(t,e){if(\"undefined\"==typeof u)throw new TypeError(\"Bootstrap's tooltips require Popper.js (https://popper.js.org/)\");this._isEnabled=!0,this._timeout=0,this._hoverState=\"\",this._activeTrigger={},this._popper=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}var t=i.prototype;return t.enable=function(){this._isEnabled=!0},t.disable=function(){this._isEnabled=!1},t.toggleEnabled=function(){this._isEnabled=!this._isEnabled},t.toggle=function(t){if(this._isEnabled)if(t){var e=this.constructor.DATA_KEY,n=g(t.currentTarget).data(e);n||(n=new this.constructor(t.currentTarget,this._getDelegateConfig()),g(t.currentTarget).data(e,n)),n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(g(this.getTipElement()).hasClass(Fe))return void this._leave(null,this);this._enter(null,this)}},t.dispose=function(){clearTimeout(this._timeout),g.removeData(this.element,this.constructor.DATA_KEY),g(this.element).off(this.constructor.EVENT_KEY),g(this.element).closest(\".modal\").off(\"hide.bs.modal\"),this.tip&&g(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,(this._activeTrigger=null)!==this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},t.show=function(){var e=this;if(\"none\"===g(this.element).css(\"display\"))throw new Error(\"Please use show on visible elements\");var t=g.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){g(this.element).trigger(t);var n=_.findShadowRoot(this.element),i=g.contains(null!==n?n:this.element.ownerDocument.documentElement,this.element);if(t.isDefaultPrevented()||!i)return;var o=this.getTipElement(),r=_.getUID(this.constructor.NAME);o.setAttribute(\"id\",r),this.element.setAttribute(\"aria-describedby\",r),this.setContent(),this.config.animation&&g(o).addClass(xe);var s=\"function\"==typeof this.config.placement?this.config.placement.call(this,o,this.element):this.config.placement,a=this._getAttachment(s);this.addAttachmentClass(a);var l=this._getContainer();g(o).data(this.constructor.DATA_KEY,this),g.contains(this.element.ownerDocument.documentElement,this.tip)||g(o).appendTo(l),g(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new u(this.element,o,{placement:a,modifiers:{offset:this._getOffset(),flip:{behavior:this.config.fallbackPlacement},arrow:{element:We},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){return e._handlePopperPlacementChange(t)}}),g(o).addClass(Fe),\"ontouchstart\"in document.documentElement&&g(document.body).children().on(\"mouseover\",null,g.noop);var c=function(){e.config.animation&&e._fixTransition();var t=e._hoverState;e._hoverState=null,g(e.element).trigger(e.constructor.Event.SHOWN),t===He&&e._leave(null,e)};if(g(this.tip).hasClass(xe)){var h=_.getTransitionDurationFromElement(this.tip);g(this.tip).one(_.TRANSITION_END,c).emulateTransitionEnd(h)}else c()}},t.hide=function(t){var e=this,n=this.getTipElement(),i=g.Event(this.constructor.Event.HIDE),o=function(){e._hoverState!==je&&n.parentNode&&n.parentNode.removeChild(n),e._cleanTipClass(),e.element.removeAttribute(\"aria-describedby\"),g(e.element).trigger(e.constructor.Event.HIDDEN),null!==e._popper&&e._popper.destroy(),t&&t()};if(g(this.element).trigger(i),!i.isDefaultPrevented()){if(g(n).removeClass(Fe),\"ontouchstart\"in document.documentElement&&g(document.body).children().off(\"mouseover\",null,g.noop),this._activeTrigger[Ke]=!1,this._activeTrigger[Me]=!1,this._activeTrigger[qe]=!1,g(this.tip).hasClass(xe)){var r=_.getTransitionDurationFromElement(n);g(n).one(_.TRANSITION_END,o).emulateTransitionEnd(r)}else o();this._hoverState=\"\"}},t.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},t.isWithContent=function(){return Boolean(this.getTitle())},t.addAttachmentClass=function(t){g(this.getTipElement()).addClass(Ae+\"-\"+t)},t.getTipElement=function(){return this.tip=this.tip||g(this.config.template)[0],this.tip},t.setContent=function(){var t=this.getTipElement();this.setElementContent(g(t.querySelectorAll(Ue)),this.getTitle()),g(t).removeClass(xe+\" \"+Fe)},t.setElementContent=function(t,e){\"object\"!=typeof e||!e.nodeType&&!e.jquery?this.config.html?(this.config.sanitize&&(e=Se(e,this.config.whiteList,this.config.sanitizeFn)),t.html(e)):t.text(e):this.config.html?g(e).parent().is(t)||t.empty().append(e):t.text(g(e).text())},t.getTitle=function(){var t=this.element.getAttribute(\"data-original-title\");return t||(t=\"function\"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},t._getOffset=function(){var e=this,t={};return\"function\"==typeof this.config.offset?t.fn=function(t){return t.offsets=l({},t.offsets,e.config.offset(t.offsets,e.element)||{}),t}:t.offset=this.config.offset,t},t._getContainer=function(){return!1===this.config.container?document.body:_.isElement(this.config.container)?g(this.config.container):g(document).find(this.config.container)},t._getAttachment=function(t){return Pe[t.toUpperCase()]},t._setListeners=function(){var i=this;this.config.trigger.split(\" \").forEach(function(t){if(\"click\"===t)g(i.element).on(i.constructor.Event.CLICK,i.config.selector,function(t){return i.toggle(t)});else if(t!==Qe){var e=t===qe?i.constructor.Event.MOUSEENTER:i.constructor.Event.FOCUSIN,n=t===qe?i.constructor.Event.MOUSELEAVE:i.constructor.Event.FOCUSOUT;g(i.element).on(e,i.config.selector,function(t){return i._enter(t)}).on(n,i.config.selector,function(t){return i._leave(t)})}}),g(this.element).closest(\".modal\").on(\"hide.bs.modal\",function(){i.element&&i.hide()}),this.config.selector?this.config=l({},this.config,{trigger:\"manual\",selector:\"\"}):this._fixTitle()},t._fixTitle=function(){var t=typeof this.element.getAttribute(\"data-original-title\");(this.element.getAttribute(\"title\")||\"string\"!==t)&&(this.element.setAttribute(\"data-original-title\",this.element.getAttribute(\"title\")||\"\"),this.element.setAttribute(\"title\",\"\"))},t._enter=function(t,e){var n=this.constructor.DATA_KEY;(e=e||g(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),g(t.currentTarget).data(n,e)),t&&(e._activeTrigger[\"focusin\"===t.type?Me:qe]=!0),g(e.getTipElement()).hasClass(Fe)||e._hoverState===je?e._hoverState=je:(clearTimeout(e._timeout),e._hoverState=je,e.config.delay&&e.config.delay.show?e._timeout=setTimeout(function(){e._hoverState===je&&e.show()},e.config.delay.show):e.show())},t._leave=function(t,e){var n=this.constructor.DATA_KEY;(e=e||g(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),g(t.currentTarget).data(n,e)),t&&(e._activeTrigger[\"focusout\"===t.type?Me:qe]=!1),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState=He,e.config.delay&&e.config.delay.hide?e._timeout=setTimeout(function(){e._hoverState===He&&e.hide()},e.config.delay.hide):e.hide())},t._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},t._getConfig=function(t){var e=g(this.element).data();return Object.keys(e).forEach(function(t){-1!==Oe.indexOf(t)&&delete e[t]}),\"number\"==typeof(t=l({},this.constructor.Default,e,\"object\"==typeof t&&t?t:{})).delay&&(t.delay={show:t.delay,hide:t.delay}),\"number\"==typeof t.title&&(t.title=t.title.toString()),\"number\"==typeof t.content&&(t.content=t.content.toString()),_.typeCheckConfig(be,t,this.constructor.DefaultType),t.sanitize&&(t.template=Se(t.template,t.whiteList,t.sanitizeFn)),t},t._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},t._cleanTipClass=function(){var t=g(this.getTipElement()),e=t.attr(\"class\").match(Ne);null!==e&&e.length&&t.removeClass(e.join(\"\"))},t._handlePopperPlacementChange=function(t){var e=t.instance;this.tip=e.popper,this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement))},t._fixTransition=function(){var t=this.getTipElement(),e=this.config.animation;null===t.getAttribute(\"x-placement\")&&(g(t).removeClass(xe),this.config.animation=!1,this.hide(),this.show(),this.config.animation=e)},i._jQueryInterface=function(n){return this.each(function(){var t=g(this).data(Ie),e=\"object\"==typeof n&&n;if((t||!/dispose|hide/.test(n))&&(t||(t=new i(this,e),g(this).data(Ie,t)),\"string\"==typeof n)){if(\"undefined\"==typeof t[n])throw new TypeError('No method named \"'+n+'\"');t[n]()}})},s(i,null,[{key:\"VERSION\",get:function(){return\"4.3.1\"}},{key:\"Default\",get:function(){return Le}},{key:\"NAME\",get:function(){return be}},{key:\"DATA_KEY\",get:function(){return Ie}},{key:\"Event\",get:function(){return Re}},{key:\"EVENT_KEY\",get:function(){return De}},{key:\"DefaultType\",get:function(){return ke}}]),i}();g.fn[be]=Be._jQueryInterface,g.fn[be].Constructor=Be,g.fn[be].noConflict=function(){return g.fn[be]=we,Be._jQueryInterface};var Ve=\"popover\",Ye=\"bs.popover\",ze=\".\"+Ye,Xe=g.fn[Ve],$e=\"bs-popover\",Ge=new RegExp(\"(^|\\\\s)\"+$e+\"\\\\S+\",\"g\"),Je=l({},Be.Default,{placement:\"right\",trigger:\"click\",content:\"\",template:'

'}),Ze=l({},Be.DefaultType,{content:\"(string|element|function)\"}),tn=\"fade\",en=\"show\",nn=\".popover-header\",on=\".popover-body\",rn={HIDE:\"hide\"+ze,HIDDEN:\"hidden\"+ze,SHOW:\"show\"+ze,SHOWN:\"shown\"+ze,INSERTED:\"inserted\"+ze,CLICK:\"click\"+ze,FOCUSIN:\"focusin\"+ze,FOCUSOUT:\"focusout\"+ze,MOUSEENTER:\"mouseenter\"+ze,MOUSELEAVE:\"mouseleave\"+ze},sn=function(t){var e,n;function i(){return t.apply(this,arguments)||this}n=t,(e=i).prototype=Object.create(n.prototype),(e.prototype.constructor=e).__proto__=n;var o=i.prototype;return o.isWithContent=function(){return this.getTitle()||this._getContent()},o.addAttachmentClass=function(t){g(this.getTipElement()).addClass($e+\"-\"+t)},o.getTipElement=function(){return this.tip=this.tip||g(this.config.template)[0],this.tip},o.setContent=function(){var t=g(this.getTipElement());this.setElementContent(t.find(nn),this.getTitle());var e=this._getContent();\"function\"==typeof e&&(e=e.call(this.element)),this.setElementContent(t.find(on),e),t.removeClass(tn+\" \"+en)},o._getContent=function(){return this.element.getAttribute(\"data-content\")||this.config.content},o._cleanTipClass=function(){var t=g(this.getTipElement()),e=t.attr(\"class\").match(Ge);null!==e&&0=this._offsets[o]&&(\"undefined\"==typeof this._offsets[o+1]||t li > .active\",Wn='[data-toggle=\"tab\"], [data-toggle=\"pill\"], [data-toggle=\"list\"]',qn=\".dropdown-toggle\",Mn=\"> .dropdown-menu .active\",Kn=function(){function i(t){this._element=t}var t=i.prototype;return t.show=function(){var n=this;if(!(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&g(this._element).hasClass(Pn)||g(this._element).hasClass(Ln))){var t,i,e=g(this._element).closest(xn)[0],o=_.getSelectorFromElement(this._element);if(e){var r=\"UL\"===e.nodeName||\"OL\"===e.nodeName?Un:Fn;i=(i=g.makeArray(g(e).find(r)))[i.length-1]}var s=g.Event(On.HIDE,{relatedTarget:this._element}),a=g.Event(On.SHOW,{relatedTarget:i});if(i&&g(i).trigger(s),g(this._element).trigger(a),!a.isDefaultPrevented()&&!s.isDefaultPrevented()){o&&(t=document.querySelector(o)),this._activate(this._element,e);var l=function(){var t=g.Event(On.HIDDEN,{relatedTarget:n._element}),e=g.Event(On.SHOWN,{relatedTarget:i});g(i).trigger(t),g(n._element).trigger(e)};t?this._activate(t,t.parentNode,l):l()}}},t.dispose=function(){g.removeData(this._element,wn),this._element=null},t._activate=function(t,e,n){var i=this,o=(!e||\"UL\"!==e.nodeName&&\"OL\"!==e.nodeName?g(e).children(Fn):g(e).find(Un))[0],r=n&&o&&g(o).hasClass(jn),s=function(){return i._transitionComplete(t,o,n)};if(o&&r){var a=_.getTransitionDurationFromElement(o);g(o).removeClass(Hn).one(_.TRANSITION_END,s).emulateTransitionEnd(a)}else s()},t._transitionComplete=function(t,e,n){if(e){g(e).removeClass(Pn);var i=g(e.parentNode).find(Mn)[0];i&&g(i).removeClass(Pn),\"tab\"===e.getAttribute(\"role\")&&e.setAttribute(\"aria-selected\",!1)}if(g(t).addClass(Pn),\"tab\"===t.getAttribute(\"role\")&&t.setAttribute(\"aria-selected\",!0),_.reflow(t),t.classList.contains(jn)&&t.classList.add(Hn),t.parentNode&&g(t.parentNode).hasClass(kn)){var o=g(t).closest(Rn)[0];if(o){var r=[].slice.call(o.querySelectorAll(qn));g(r).addClass(Pn)}t.setAttribute(\"aria-expanded\",!0)}n&&n()},i._jQueryInterface=function(n){return this.each(function(){var t=g(this),e=t.data(wn);if(e||(e=new i(this),t.data(wn,e)),\"string\"==typeof n){if(\"undefined\"==typeof e[n])throw new TypeError('No method named \"'+n+'\"');e[n]()}})},s(i,null,[{key:\"VERSION\",get:function(){return\"4.3.1\"}}]),i}();g(document).on(On.CLICK_DATA_API,Wn,function(t){t.preventDefault(),Kn._jQueryInterface.call(g(this),\"show\")}),g.fn.tab=Kn._jQueryInterface,g.fn.tab.Constructor=Kn,g.fn.tab.noConflict=function(){return g.fn.tab=Nn,Kn._jQueryInterface};var Qn=\"toast\",Bn=\"bs.toast\",Vn=\".\"+Bn,Yn=g.fn[Qn],zn={CLICK_DISMISS:\"click.dismiss\"+Vn,HIDE:\"hide\"+Vn,HIDDEN:\"hidden\"+Vn,SHOW:\"show\"+Vn,SHOWN:\"shown\"+Vn},Xn=\"fade\",$n=\"hide\",Gn=\"show\",Jn=\"showing\",Zn={animation:\"boolean\",autohide:\"boolean\",delay:\"number\"},ti={animation:!0,autohide:!0,delay:500},ei='[data-dismiss=\"toast\"]',ni=function(){function i(t,e){this._element=t,this._config=this._getConfig(e),this._timeout=null,this._setListeners()}var t=i.prototype;return t.show=function(){var t=this;g(this._element).trigger(zn.SHOW),this._config.animation&&this._element.classList.add(Xn);var e=function(){t._element.classList.remove(Jn),t._element.classList.add(Gn),g(t._element).trigger(zn.SHOWN),t._config.autohide&&t.hide()};if(this._element.classList.remove($n),this._element.classList.add(Jn),this._config.animation){var n=_.getTransitionDurationFromElement(this._element);g(this._element).one(_.TRANSITION_END,e).emulateTransitionEnd(n)}else e()},t.hide=function(t){var e=this;this._element.classList.contains(Gn)&&(g(this._element).trigger(zn.HIDE),t?this._close():this._timeout=setTimeout(function(){e._close()},this._config.delay))},t.dispose=function(){clearTimeout(this._timeout),this._timeout=null,this._element.classList.contains(Gn)&&this._element.classList.remove(Gn),g(this._element).off(zn.CLICK_DISMISS),g.removeData(this._element,Bn),this._element=null,this._config=null},t._getConfig=function(t){return t=l({},ti,g(this._element).data(),\"object\"==typeof t&&t?t:{}),_.typeCheckConfig(Qn,t,this.constructor.DefaultType),t},t._setListeners=function(){var t=this;g(this._element).on(zn.CLICK_DISMISS,ei,function(){return t.hide(!0)})},t._close=function(){var t=this,e=function(){t._element.classList.add($n),g(t._element).trigger(zn.HIDDEN)};if(this._element.classList.remove(Gn),this._config.animation){var n=_.getTransitionDurationFromElement(this._element);g(this._element).one(_.TRANSITION_END,e).emulateTransitionEnd(n)}else e()},i._jQueryInterface=function(n){return this.each(function(){var t=g(this),e=t.data(Bn);if(e||(e=new i(this,\"object\"==typeof n&&n),t.data(Bn,e)),\"string\"==typeof n){if(\"undefined\"==typeof e[n])throw new TypeError('No method named \"'+n+'\"');e[n](this)}})},s(i,null,[{key:\"VERSION\",get:function(){return\"4.3.1\"}},{key:\"DefaultType\",get:function(){return Zn}},{key:\"Default\",get:function(){return ti}}]),i}();g.fn[Qn]=ni._jQueryInterface,g.fn[Qn].Constructor=ni,g.fn[Qn].noConflict=function(){return g.fn[Qn]=Yn,ni._jQueryInterface},function(){if(\"undefined\"==typeof g)throw new TypeError(\"Bootstrap's JavaScript requires jQuery. jQuery must be included before Bootstrap's JavaScript.\");var t=g.fn.jquery.split(\" \")[0].split(\".\");if(t[0]<2&&t[1]<9||1===t[0]&&9===t[1]&&t[2]<1||4<=t[0])throw new Error(\"Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0\")}(),t.Util=_,t.Alert=p,t.Button=P,t.Carousel=lt,t.Collapse=bt,t.Dropdown=Jt,t.Modal=ve,t.Popover=sn,t.Scrollspy=Dn,t.Tab=Kn,t.Toast=ni,t.Tooltip=Be,Object.defineProperty(t,\"__esModule\",{value:!0})});\n//# sourceMappingURL=bootstrap.min.js.map","/*!\r\n * Socket.IO v2.2.0\r\n * (c) 2014-2018 Guillermo Rauch\r\n * Released under the MIT License.\r\n */\r\n!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define([],e):\"object\"==typeof exports?exports.io=e():t.io=e()}(this,function(){return function(t){function e(r){if(n[r])return n[r].exports;var o=n[r]={exports:{},id:r,loaded:!1};return t[r].call(o.exports,o,o.exports,e),o.loaded=!0,o.exports}var n={};return e.m=t,e.c=n,e.p=\"\",e(0)}([function(t,e,n){\"use strict\";function r(t,e){\"object\"===(\"undefined\"==typeof t?\"undefined\":o(t))&&(e=t,t=void 0),e=e||{};var n,r=i(t),s=r.source,u=r.id,h=r.path,f=p[u]&&h in p[u].nsps,l=e.forceNew||e[\"force new connection\"]||!1===e.multiplex||f;return l?(c(\"ignoring socket cache for %s\",s),n=a(s,e)):(p[u]||(c(\"new io instance for %s\",s),p[u]=a(s,e)),n=p[u]),r.query&&!e.query&&(e.query=r.query),n.socket(r.path,e)}var o=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t},i=n(1),s=n(7),a=n(12),c=n(3)(\"socket.io-client\");t.exports=e=r;var p=e.managers={};e.protocol=s.protocol,e.connect=r,e.Manager=n(12),e.Socket=n(36)},function(t,e,n){\"use strict\";function r(t,e){var n=t;e=e||\"undefined\"!=typeof location&&location,null==t&&(t=e.protocol+\"//\"+e.host),\"string\"==typeof t&&(\"/\"===t.charAt(0)&&(t=\"/\"===t.charAt(1)?e.protocol+t:e.host+t),/^(https?|wss?):\\/\\//.test(t)||(i(\"protocol-less url %s\",t),t=\"undefined\"!=typeof e?e.protocol+\"//\"+t:\"https://\"+t),i(\"parse %s\",t),n=o(t)),n.port||(/^(http|ws)$/.test(n.protocol)?n.port=\"80\":/^(http|ws)s$/.test(n.protocol)&&(n.port=\"443\")),n.path=n.path||\"/\";var r=n.host.indexOf(\":\")!==-1,s=r?\"[\"+n.host+\"]\":n.host;return n.id=n.protocol+\"://\"+s+\":\"+n.port,n.href=n.protocol+\"://\"+s+(e&&e.port===n.port?\"\":\":\"+n.port),n}var o=n(2),i=n(3)(\"socket.io-client:url\");t.exports=r},function(t,e){var n=/^(?:(?![^:@]+:[^:@\\/]*@)(http|https|ws|wss):\\/\\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/,r=[\"source\",\"protocol\",\"authority\",\"userInfo\",\"user\",\"password\",\"host\",\"port\",\"relative\",\"path\",\"directory\",\"file\",\"query\",\"anchor\"];t.exports=function(t){var e=t,o=t.indexOf(\"[\"),i=t.indexOf(\"]\");o!=-1&&i!=-1&&(t=t.substring(0,o)+t.substring(o,i).replace(/:/g,\";\")+t.substring(i,t.length));for(var s=n.exec(t||\"\"),a={},c=14;c--;)a[r[c]]=s[c]||\"\";return o!=-1&&i!=-1&&(a.source=e,a.host=a.host.substring(1,a.host.length-1).replace(/;/g,\":\"),a.authority=a.authority.replace(\"[\",\"\").replace(\"]\",\"\").replace(/;/g,\":\"),a.ipv6uri=!0),a}},function(t,e,n){(function(r){function o(){return!(\"undefined\"==typeof window||!window.process||\"renderer\"!==window.process.type)||(\"undefined\"==typeof navigator||!navigator.userAgent||!navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/))&&(\"undefined\"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||\"undefined\"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||\"undefined\"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)&&parseInt(RegExp.$1,10)>=31||\"undefined\"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/))}function i(t){var n=this.useColors;if(t[0]=(n?\"%c\":\"\")+this.namespace+(n?\" %c\":\" \")+t[0]+(n?\"%c \":\" \")+\"+\"+e.humanize(this.diff),n){var r=\"color: \"+this.color;t.splice(1,0,r,\"color: inherit\");var o=0,i=0;t[0].replace(/%[a-zA-Z%]/g,function(t){\"%%\"!==t&&(o++,\"%c\"===t&&(i=o))}),t.splice(i,0,r)}}function s(){return\"object\"==typeof console&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}function a(t){try{null==t?e.storage.removeItem(\"debug\"):e.storage.debug=t}catch(n){}}function c(){var t;try{t=e.storage.debug}catch(n){}return!t&&\"undefined\"!=typeof r&&\"env\"in r&&(t=r.env.DEBUG),t}function p(){try{return window.localStorage}catch(t){}}e=t.exports=n(5),e.log=s,e.formatArgs=i,e.save=a,e.load=c,e.useColors=o,e.storage=\"undefined\"!=typeof chrome&&\"undefined\"!=typeof chrome.storage?chrome.storage.local:p(),e.colors=[\"#0000CC\",\"#0000FF\",\"#0033CC\",\"#0033FF\",\"#0066CC\",\"#0066FF\",\"#0099CC\",\"#0099FF\",\"#00CC00\",\"#00CC33\",\"#00CC66\",\"#00CC99\",\"#00CCCC\",\"#00CCFF\",\"#3300CC\",\"#3300FF\",\"#3333CC\",\"#3333FF\",\"#3366CC\",\"#3366FF\",\"#3399CC\",\"#3399FF\",\"#33CC00\",\"#33CC33\",\"#33CC66\",\"#33CC99\",\"#33CCCC\",\"#33CCFF\",\"#6600CC\",\"#6600FF\",\"#6633CC\",\"#6633FF\",\"#66CC00\",\"#66CC33\",\"#9900CC\",\"#9900FF\",\"#9933CC\",\"#9933FF\",\"#99CC00\",\"#99CC33\",\"#CC0000\",\"#CC0033\",\"#CC0066\",\"#CC0099\",\"#CC00CC\",\"#CC00FF\",\"#CC3300\",\"#CC3333\",\"#CC3366\",\"#CC3399\",\"#CC33CC\",\"#CC33FF\",\"#CC6600\",\"#CC6633\",\"#CC9900\",\"#CC9933\",\"#CCCC00\",\"#CCCC33\",\"#FF0000\",\"#FF0033\",\"#FF0066\",\"#FF0099\",\"#FF00CC\",\"#FF00FF\",\"#FF3300\",\"#FF3333\",\"#FF3366\",\"#FF3399\",\"#FF33CC\",\"#FF33FF\",\"#FF6600\",\"#FF6633\",\"#FF9900\",\"#FF9933\",\"#FFCC00\",\"#FFCC33\"],e.formatters.j=function(t){try{return JSON.stringify(t)}catch(e){return\"[UnexpectedJSONParseError]: \"+e.message}},e.enable(c())}).call(e,n(4))},function(t,e){function n(){throw new Error(\"setTimeout has not been defined\")}function r(){throw new Error(\"clearTimeout has not been defined\")}function o(t){if(u===setTimeout)return setTimeout(t,0);if((u===n||!u)&&setTimeout)return u=setTimeout,setTimeout(t,0);try{return u(t,0)}catch(e){try{return u.call(null,t,0)}catch(e){return u.call(this,t,0)}}}function i(t){if(h===clearTimeout)return clearTimeout(t);if((h===r||!h)&&clearTimeout)return h=clearTimeout,clearTimeout(t);try{return h(t)}catch(e){try{return h.call(null,t)}catch(e){return h.call(this,t)}}}function s(){y&&l&&(y=!1,l.length?d=l.concat(d):m=-1,d.length&&a())}function a(){if(!y){var t=o(s);y=!0;for(var e=d.length;e;){for(l=d,d=[];++m1)for(var n=1;n100)){var e=/^((?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(t);if(e){var n=parseFloat(e[1]),r=(e[2]||\"ms\").toLowerCase();switch(r){case\"years\":case\"year\":case\"yrs\":case\"yr\":case\"y\":return n*u;case\"days\":case\"day\":case\"d\":return n*p;case\"hours\":case\"hour\":case\"hrs\":case\"hr\":case\"h\":return n*c;case\"minutes\":case\"minute\":case\"mins\":case\"min\":case\"m\":return n*a;case\"seconds\":case\"second\":case\"secs\":case\"sec\":case\"s\":return n*s;case\"milliseconds\":case\"millisecond\":case\"msecs\":case\"msec\":case\"ms\":return n;default:return}}}}function r(t){return t>=p?Math.round(t/p)+\"d\":t>=c?Math.round(t/c)+\"h\":t>=a?Math.round(t/a)+\"m\":t>=s?Math.round(t/s)+\"s\":t+\"ms\"}function o(t){return i(t,p,\"day\")||i(t,c,\"hour\")||i(t,a,\"minute\")||i(t,s,\"second\")||t+\" ms\"}function i(t,e,n){if(!(t0)return n(t);if(\"number\"===i&&isNaN(t)===!1)return e[\"long\"]?o(t):r(t);throw new Error(\"val is not a non-empty string or a valid number. val=\"+JSON.stringify(t))}},function(t,e,n){function r(){}function o(t){var n=\"\"+t.type;if(e.BINARY_EVENT!==t.type&&e.BINARY_ACK!==t.type||(n+=t.attachments+\"-\"),t.nsp&&\"/\"!==t.nsp&&(n+=t.nsp+\",\"),null!=t.id&&(n+=t.id),null!=t.data){var r=i(t.data);if(r===!1)return g;n+=r}return f(\"encoded %j as %s\",t,n),n}function i(t){try{return JSON.stringify(t)}catch(e){return!1}}function s(t,e){function n(t){var n=d.deconstructPacket(t),r=o(n.packet),i=n.buffers;i.unshift(r),e(i)}d.removeBlobs(t,n)}function a(){this.reconstructor=null}function c(t){var n=0,r={type:Number(t.charAt(0))};if(null==e.types[r.type])return h(\"unknown packet type \"+r.type);if(e.BINARY_EVENT===r.type||e.BINARY_ACK===r.type){for(var o=\"\";\"-\"!==t.charAt(++n)&&(o+=t.charAt(n),n!=t.length););if(o!=Number(o)||\"-\"!==t.charAt(n))throw new Error(\"Illegal attachments\");r.attachments=Number(o)}if(\"/\"===t.charAt(n+1))for(r.nsp=\"\";++n;){var i=t.charAt(n);if(\",\"===i)break;if(r.nsp+=i,n===t.length)break}else r.nsp=\"/\";var s=t.charAt(n+1);if(\"\"!==s&&Number(s)==s){for(r.id=\"\";++n;){var i=t.charAt(n);if(null==i||Number(i)!=i){--n;break}if(r.id+=t.charAt(n),n===t.length)break}r.id=Number(r.id)}if(t.charAt(++n)){var a=p(t.substr(n)),c=a!==!1&&(r.type===e.ERROR||y(a));if(!c)return h(\"invalid payload\");r.data=a}return f(\"decoded %s as %j\",t,r),r}function p(t){try{return JSON.parse(t)}catch(e){return!1}}function u(t){this.reconPack=t,this.buffers=[]}function h(t){return{type:e.ERROR,data:\"parser error: \"+t}}var f=n(3)(\"socket.io-parser\"),l=n(8),d=n(9),y=n(10),m=n(11);e.protocol=4,e.types=[\"CONNECT\",\"DISCONNECT\",\"EVENT\",\"ACK\",\"ERROR\",\"BINARY_EVENT\",\"BINARY_ACK\"],e.CONNECT=0,e.DISCONNECT=1,e.EVENT=2,e.ACK=3,e.ERROR=4,e.BINARY_EVENT=5,e.BINARY_ACK=6,e.Encoder=r,e.Decoder=a;var g=e.ERROR+'\"encode error\"';r.prototype.encode=function(t,n){if(f(\"encoding packet %j\",t),e.BINARY_EVENT===t.type||e.BINARY_ACK===t.type)s(t,n);else{var r=o(t);n([r])}},l(a.prototype),a.prototype.add=function(t){var n;if(\"string\"==typeof t)n=c(t),e.BINARY_EVENT===n.type||e.BINARY_ACK===n.type?(this.reconstructor=new u(n),0===this.reconstructor.reconPack.attachments&&this.emit(\"decoded\",n)):this.emit(\"decoded\",n);else{if(!m(t)&&!t.base64)throw new Error(\"Unknown type: \"+t);if(!this.reconstructor)throw new Error(\"got binary data when not reconstructing a packet\");n=this.reconstructor.takeBinaryData(t),n&&(this.reconstructor=null,this.emit(\"decoded\",n))}},a.prototype.destroy=function(){this.reconstructor&&this.reconstructor.finishedReconstruction()},u.prototype.takeBinaryData=function(t){if(this.buffers.push(t),this.buffers.length===this.reconPack.attachments){var e=d.reconstructPacket(this.reconPack,this.buffers);return this.finishedReconstruction(),e}return null},u.prototype.finishedReconstruction=function(){this.reconPack=null,this.buffers=[]}},function(t,e,n){function r(t){if(t)return o(t)}function o(t){for(var e in r.prototype)t[e]=r.prototype[e];return t}t.exports=r,r.prototype.on=r.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks[\"$\"+t]=this._callbacks[\"$\"+t]||[]).push(e),this},r.prototype.once=function(t,e){function n(){this.off(t,n),e.apply(this,arguments)}return n.fn=e,this.on(t,n),this},r.prototype.off=r.prototype.removeListener=r.prototype.removeAllListeners=r.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var n=this._callbacks[\"$\"+t];if(!n)return this;if(1==arguments.length)return delete this._callbacks[\"$\"+t],this;for(var r,o=0;o0&&!this.encoding){var t=this.packetBuffer.shift();this.packet(t)}},r.prototype.cleanup=function(){h(\"cleanup\");for(var t=this.subs.length,e=0;e=this._reconnectionAttempts)h(\"reconnect failed\"),this.backoff.reset(),this.emitAll(\"reconnect_failed\"),this.reconnecting=!1;else{var e=this.backoff.duration();h(\"will wait %dms before reconnect attempt\",e),this.reconnecting=!0;var n=setTimeout(function(){t.skipReconnect||(h(\"attempting reconnect\"),t.emitAll(\"reconnect_attempt\",t.backoff.attempts),t.emitAll(\"reconnecting\",t.backoff.attempts),t.skipReconnect||t.open(function(e){e?(h(\"reconnect attempt error\"),t.reconnecting=!1,t.reconnect(),t.emitAll(\"reconnect_error\",e.data)):(h(\"reconnect success\"),t.onreconnect())}))},e);this.subs.push({destroy:function(){clearTimeout(n)}})}},r.prototype.onreconnect=function(){var t=this.backoff.attempts;this.reconnecting=!1,this.backoff.reset(),this.updateSocketIds(),this.emitAll(\"reconnect\",t)}},function(t,e,n){t.exports=n(14),t.exports.parser=n(21)},function(t,e,n){function r(t,e){return this instanceof r?(e=e||{},t&&\"object\"==typeof t&&(e=t,t=null),t?(t=u(t),e.hostname=t.host,e.secure=\"https\"===t.protocol||\"wss\"===t.protocol,e.port=t.port,t.query&&(e.query=t.query)):e.host&&(e.hostname=u(e.host).host),this.secure=null!=e.secure?e.secure:\"undefined\"!=typeof location&&\"https:\"===location.protocol,e.hostname&&!e.port&&(e.port=this.secure?\"443\":\"80\"),this.agent=e.agent||!1,this.hostname=e.hostname||(\"undefined\"!=typeof location?location.hostname:\"localhost\"),this.port=e.port||(\"undefined\"!=typeof location&&location.port?location.port:this.secure?443:80),this.query=e.query||{},\"string\"==typeof this.query&&(this.query=h.decode(this.query)),this.upgrade=!1!==e.upgrade,this.path=(e.path||\"/engine.io\").replace(/\\/$/,\"\")+\"/\",this.forceJSONP=!!e.forceJSONP,this.jsonp=!1!==e.jsonp,this.forceBase64=!!e.forceBase64,this.enablesXDR=!!e.enablesXDR,this.timestampParam=e.timestampParam||\"t\",this.timestampRequests=e.timestampRequests,this.transports=e.transports||[\"polling\",\"websocket\"],this.transportOptions=e.transportOptions||{},this.readyState=\"\",this.writeBuffer=[],this.prevBufferLen=0,this.policyPort=e.policyPort||843,this.rememberUpgrade=e.rememberUpgrade||!1,this.binaryType=null,this.onlyBinaryUpgrades=e.onlyBinaryUpgrades,this.perMessageDeflate=!1!==e.perMessageDeflate&&(e.perMessageDeflate||{}),!0===this.perMessageDeflate&&(this.perMessageDeflate={}),this.perMessageDeflate&&null==this.perMessageDeflate.threshold&&(this.perMessageDeflate.threshold=1024),this.pfx=e.pfx||null,this.key=e.key||null,this.passphrase=e.passphrase||null,this.cert=e.cert||null,this.ca=e.ca||null,this.ciphers=e.ciphers||null,this.rejectUnauthorized=void 0===e.rejectUnauthorized||e.rejectUnauthorized,this.forceNode=!!e.forceNode,this.isReactNative=\"undefined\"!=typeof navigator&&\"string\"==typeof navigator.product&&\"reactnative\"===navigator.product.toLowerCase(),(\"undefined\"==typeof self||this.isReactNative)&&(e.extraHeaders&&Object.keys(e.extraHeaders).length>0&&(this.extraHeaders=e.extraHeaders),e.localAddress&&(this.localAddress=e.localAddress)),this.id=null,this.upgrades=null,this.pingInterval=null,this.pingTimeout=null,this.pingIntervalTimer=null,this.pingTimeoutTimer=null,void this.open()):new r(t,e)}function o(t){var e={};for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e}var i=n(15),s=n(8),a=n(3)(\"engine.io-client:socket\"),c=n(35),p=n(21),u=n(2),h=n(29);t.exports=r,r.priorWebsocketSuccess=!1,s(r.prototype),r.protocol=p.protocol,r.Socket=r,r.Transport=n(20),r.transports=n(15),r.parser=n(21),r.prototype.createTransport=function(t){a('creating transport \"%s\"',t);var e=o(this.query);e.EIO=p.protocol,e.transport=t;var n=this.transportOptions[t]||{};this.id&&(e.sid=this.id);var r=new i[t]({query:e,socket:this,agent:n.agent||this.agent,hostname:n.hostname||this.hostname,port:n.port||this.port,secure:n.secure||this.secure,path:n.path||this.path,forceJSONP:n.forceJSONP||this.forceJSONP,jsonp:n.jsonp||this.jsonp,forceBase64:n.forceBase64||this.forceBase64,enablesXDR:n.enablesXDR||this.enablesXDR,timestampRequests:n.timestampRequests||this.timestampRequests,timestampParam:n.timestampParam||this.timestampParam,policyPort:n.policyPort||this.policyPort,pfx:n.pfx||this.pfx,key:n.key||this.key,passphrase:n.passphrase||this.passphrase,cert:n.cert||this.cert,ca:n.ca||this.ca,ciphers:n.ciphers||this.ciphers,rejectUnauthorized:n.rejectUnauthorized||this.rejectUnauthorized,perMessageDeflate:n.perMessageDeflate||this.perMessageDeflate,extraHeaders:n.extraHeaders||this.extraHeaders,forceNode:n.forceNode||this.forceNode,localAddress:n.localAddress||this.localAddress,requestTimeout:n.requestTimeout||this.requestTimeout,protocols:n.protocols||void 0,isReactNative:this.isReactNative});return r},r.prototype.open=function(){var t;if(this.rememberUpgrade&&r.priorWebsocketSuccess&&this.transports.indexOf(\"websocket\")!==-1)t=\"websocket\";else{if(0===this.transports.length){var e=this;return void setTimeout(function(){e.emit(\"error\",\"No transports available\")},0)}t=this.transports[0]}this.readyState=\"opening\";try{t=this.createTransport(t)}catch(n){return this.transports.shift(),void this.open()}t.open(),this.setTransport(t)},r.prototype.setTransport=function(t){a(\"setting transport %s\",t.name);var e=this;this.transport&&(a(\"clearing existing transport %s\",this.transport.name),this.transport.removeAllListeners()),this.transport=t,t.on(\"drain\",function(){e.onDrain()}).on(\"packet\",function(t){e.onPacket(t)}).on(\"error\",function(t){e.onError(t)}).on(\"close\",function(){e.onClose(\"transport close\")})},r.prototype.probe=function(t){function e(){if(f.onlyBinaryUpgrades){var e=!this.supportsBinary&&f.transport.supportsBinary;h=h||e}h||(a('probe transport \"%s\" opened',t),u.send([{type:\"ping\",data:\"probe\"}]),u.once(\"packet\",function(e){if(!h)if(\"pong\"===e.type&&\"probe\"===e.data){if(a('probe transport \"%s\" pong',t),f.upgrading=!0,f.emit(\"upgrading\",u),!u)return;r.priorWebsocketSuccess=\"websocket\"===u.name,a('pausing current transport \"%s\"',f.transport.name),f.transport.pause(function(){h||\"closed\"!==f.readyState&&(a(\"changing transport and sending upgrade packet\"),p(),f.setTransport(u),u.send([{type:\"upgrade\"}]),f.emit(\"upgrade\",u),u=null,f.upgrading=!1,f.flush())})}else{a('probe transport \"%s\" failed',t);var n=new Error(\"probe error\");n.transport=u.name,f.emit(\"upgradeError\",n)}}))}function n(){h||(h=!0,p(),u.close(),u=null)}function o(e){var r=new Error(\"probe error: \"+e);r.transport=u.name,n(),a('probe transport \"%s\" failed because of error: %s',t,e),f.emit(\"upgradeError\",r)}function i(){o(\"transport closed\")}function s(){o(\"socket closed\")}function c(t){u&&t.name!==u.name&&(a('\"%s\" works - aborting \"%s\"',t.name,u.name),n())}function p(){u.removeListener(\"open\",e),u.removeListener(\"error\",o),u.removeListener(\"close\",i),f.removeListener(\"close\",s),f.removeListener(\"upgrading\",c)}a('probing transport \"%s\"',t);var u=this.createTransport(t,{probe:1}),h=!1,f=this;r.priorWebsocketSuccess=!1,u.once(\"open\",e),u.once(\"error\",o),u.once(\"close\",i),this.once(\"close\",s),this.once(\"upgrading\",c),u.open()},r.prototype.onOpen=function(){if(a(\"socket open\"),this.readyState=\"open\",r.priorWebsocketSuccess=\"websocket\"===this.transport.name,this.emit(\"open\"),this.flush(),\"open\"===this.readyState&&this.upgrade&&this.transport.pause){a(\"starting upgrade probes\");for(var t=0,e=this.upgrades.length;t1?{type:b[o],data:t.substring(1)}:{type:b[o]}:w}var i=new Uint8Array(t),o=i[0],s=f(t,1);return k&&\"blob\"===n&&(s=new k([s])),{type:b[o],data:s}},e.decodeBase64Packet=function(t,e){var n=b[t.charAt(0)];if(!p)return{type:n,data:{base64:!0,data:t.substr(1)}};var r=p.decode(t.substr(1));return\"blob\"===e&&k&&(r=new k([r])),{type:n,data:r}},e.encodePayload=function(t,n,r){function o(t){return t.length+\":\"+t}function i(t,r){e.encodePacket(t,!!s&&n,!1,function(t){r(null,o(t))})}\"function\"==typeof n&&(r=n,n=null);var s=h(t);return n&&s?k&&!g?e.encodePayloadAsBlob(t,r):e.encodePayloadAsArrayBuffer(t,r):t.length?void c(t,i,function(t,e){return r(e.join(\"\"))}):r(\"0:\")},e.decodePayload=function(t,n,r){if(\"string\"!=typeof t)return e.decodePayloadAsBinary(t,n,r);\"function\"==typeof n&&(r=n,n=null);var o;if(\"\"===t)return r(w,0,1);for(var i,s,a=\"\",c=0,p=t.length;c0;){for(var s=new Uint8Array(o),a=0===s[0],c=\"\",p=1;255!==s[p];p++){if(c.length>310)return r(w,0,1);c+=s[p]}o=f(o,2+c.length),c=parseInt(c);var u=f(o,0,c);if(a)try{u=String.fromCharCode.apply(null,new Uint8Array(u))}catch(h){var l=new Uint8Array(u);u=\"\";for(var p=0;pr&&(n=r),e>=r||e>=n||0===r)return new ArrayBuffer(0);for(var o=new Uint8Array(t),i=new Uint8Array(n-e),s=e,a=0;s=55296&&e<=56319&&o65535&&(e-=65536,o+=d(e>>>10&1023|55296),e=56320|1023&e),o+=d(e);return o}function o(t,e){if(t>=55296&&t<=57343){if(e)throw Error(\"Lone surrogate U+\"+t.toString(16).toUpperCase()+\" is not a scalar value\");return!1}return!0}function i(t,e){return d(t>>e&63|128)}function s(t,e){if(0==(4294967168&t))return d(t);var n=\"\";return 0==(4294965248&t)?n=d(t>>6&31|192):0==(4294901760&t)?(o(t,e)||(t=65533),n=d(t>>12&15|224),n+=i(t,6)):0==(4292870144&t)&&(n=d(t>>18&7|240),n+=i(t,12),n+=i(t,6)),n+=d(63&t|128)}function a(t,e){e=e||{};for(var r,o=!1!==e.strict,i=n(t),a=i.length,c=-1,p=\"\";++c=f)throw Error(\"Invalid byte index\");var t=255&h[l];if(l++,128==(192&t))return 63&t;throw Error(\"Invalid continuation byte\")}function p(t){var e,n,r,i,s;if(l>f)throw Error(\"Invalid byte index\");if(l==f)return!1;if(e=255&h[l],l++,0==(128&e))return e;if(192==(224&e)){if(n=c(),s=(31&e)<<6|n,s>=128)return s;throw Error(\"Invalid continuation byte\")}if(224==(240&e)){if(n=c(),r=c(),s=(15&e)<<12|n<<6|r,s>=2048)return o(s,t)?s:65533;throw Error(\"Invalid continuation byte\")}if(240==(248&e)&&(n=c(),r=c(),i=c(),s=(7&e)<<18|n<<12|r<<6|i,s>=65536&&s<=1114111))return s;throw Error(\"Invalid UTF-8 detected\")}function u(t,e){e=e||{};var o=!1!==e.strict;h=n(t),f=h.length,l=0;for(var i,s=[];(i=p(o))!==!1;)s.push(i);return r(s)}/*! https://mths.be/utf8js v2.1.2 by @mathias */\r\nvar h,f,l,d=String.fromCharCode;t.exports={version:\"2.1.2\",encode:a,decode:u}},function(t,e){!function(){\"use strict\";for(var t=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",n=new Uint8Array(256),r=0;r>2],i+=t[(3&r[n])<<4|r[n+1]>>4],i+=t[(15&r[n+1])<<2|r[n+2]>>6],i+=t[63&r[n+2]];return o%3===2?i=i.substring(0,i.length-1)+\"=\":o%3===1&&(i=i.substring(0,i.length-2)+\"==\"),i},e.decode=function(t){var e,r,o,i,s,a=.75*t.length,c=t.length,p=0;\"=\"===t[t.length-1]&&(a--,\"=\"===t[t.length-2]&&a--);var u=new ArrayBuffer(a),h=new Uint8Array(u);for(e=0;e>4,h[p++]=(15&o)<<4|i>>2,h[p++]=(3&i)<<6|63&s;return u}}()},function(t,e){function n(t){return t.map(function(t){if(t.buffer instanceof ArrayBuffer){var e=t.buffer;if(t.byteLength!==e.byteLength){var n=new Uint8Array(t.byteLength);n.set(new Uint8Array(e,t.byteOffset,t.byteLength)),e=n.buffer}return e}return t})}function r(t,e){e=e||{};var r=new i;return n(t).forEach(function(t){r.append(t)}),e.type?r.getBlob(e.type):r.getBlob()}function o(t,e){return new Blob(n(t),e||{})}var i=\"undefined\"!=typeof i?i:\"undefined\"!=typeof WebKitBlobBuilder?WebKitBlobBuilder:\"undefined\"!=typeof MSBlobBuilder?MSBlobBuilder:\"undefined\"!=typeof MozBlobBuilder&&MozBlobBuilder,s=function(){try{var t=new Blob([\"hi\"]);return 2===t.size}catch(e){return!1}}(),a=s&&function(){try{var t=new Blob([new Uint8Array([1,2])]);return 2===t.size}catch(e){return!1}}(),c=i&&i.prototype.append&&i.prototype.getBlob;\"undefined\"!=typeof Blob&&(r.prototype=Blob.prototype,o.prototype=Blob.prototype),t.exports=function(){return s?a?Blob:o:c?r:void 0}()},function(t,e){e.encode=function(t){var e=\"\";for(var n in t)t.hasOwnProperty(n)&&(e.length&&(e+=\"&\"),e+=encodeURIComponent(n)+\"=\"+encodeURIComponent(t[n]));return e},e.decode=function(t){for(var e={},n=t.split(\"&\"),r=0,o=n.length;r0);return e}function r(t){var e=0;for(u=0;u';i=document.createElement(e)}catch(t){i=document.createElement(\"iframe\"),i.name=o.iframeId,i.src=\"javascript:0\"}i.id=o.iframeId,o.form.appendChild(i),o.iframe=i}var o=this;if(!this.form){var i,s=document.createElement(\"form\"),a=document.createElement(\"textarea\"),c=this.iframeId=\"eio_iframe_\"+this.index;s.className=\"socketio\",s.style.position=\"absolute\",s.style.top=\"-1000px\",s.style.left=\"-1000px\",s.target=c,s.method=\"POST\",s.setAttribute(\"accept-charset\",\"utf-8\"),a.name=\"d\",s.appendChild(a),document.body.appendChild(s),this.form=s,this.area=a}this.form.action=this.uri(),r(),t=t.replace(u,\"\\\\\\n\"),this.area.value=t.replace(p,\"\\\\n\");try{this.form.submit()}catch(h){}this.iframe.attachEvent?this.iframe.onreadystatechange=function(){\"complete\"===o.iframe.readyState&&n()}:this.iframe.onload=n}}).call(e,function(){return this}())},function(t,e,n){function r(t){var e=t&&t.forceBase64;e&&(this.supportsBinary=!1),this.perMessageDeflate=t.perMessageDeflate,this.usingBrowserWebSocket=o&&!t.forceNode,this.protocols=t.protocols,this.usingBrowserWebSocket||(l=i),s.call(this,t)}var o,i,s=n(20),a=n(21),c=n(29),p=n(30),u=n(31),h=n(3)(\"engine.io-client:websocket\");if(\"undefined\"==typeof self)try{i=n(34)}catch(f){}else o=self.WebSocket||self.MozWebSocket;var l=o||i;t.exports=r,p(r,s),r.prototype.name=\"websocket\",r.prototype.supportsBinary=!0,r.prototype.doOpen=function(){if(this.check()){var t=this.uri(),e=this.protocols,n={agent:this.agent,perMessageDeflate:this.perMessageDeflate};n.pfx=this.pfx,n.key=this.key,n.passphrase=this.passphrase,n.cert=this.cert,n.ca=this.ca,n.ciphers=this.ciphers,n.rejectUnauthorized=this.rejectUnauthorized,this.extraHeaders&&(n.headers=this.extraHeaders),this.localAddress&&(n.localAddress=this.localAddress);try{this.ws=this.usingBrowserWebSocket&&!this.isReactNative?e?new l(t,e):new l(t):new l(t,e,n)}catch(r){return this.emit(\"error\",r)}void 0===this.ws.binaryType&&(this.supportsBinary=!1),this.ws.supports&&this.ws.supports.binary?(this.supportsBinary=!0,this.ws.binaryType=\"nodebuffer\"):this.ws.binaryType=\"arraybuffer\",this.addEventListeners()}},r.prototype.addEventListeners=function(){var t=this;this.ws.onopen=function(){t.onOpen()},this.ws.onclose=function(){t.onClose()},this.ws.onmessage=function(e){t.onData(e.data)},this.ws.onerror=function(e){t.onError(\"websocket error\",e)}},r.prototype.write=function(t){function e(){n.emit(\"flush\"),setTimeout(function(){n.writable=!0,n.emit(\"drain\")},0)}var n=this;this.writable=!1;for(var r=t.length,o=0,i=r;o0&&t.jitter<=1?t.jitter:0,this.attempts=0}t.exports=n,n.prototype.duration=function(){var t=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var e=Math.random(),n=Math.floor(e*this.jitter*t);t=0==(1&Math.floor(10*e))?t-n:t+n}return 0|Math.min(t,this.max)},n.prototype.reset=function(){this.attempts=0},n.prototype.setMin=function(t){this.ms=t},n.prototype.setMax=function(t){this.max=t},n.prototype.setJitter=function(t){this.jitter=t}}])});\r\n//# sourceMappingURL=socket.io.js.map\r\n","(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.adapter = f() } })(function () {\r\n 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 })()({\r\n 1: [function (require, module, exports) {\r\n /*\r\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\r\n *\r\n * Use of this source code is governed by a BSD-style license\r\n * that can be found in the LICENSE file in the root of the source\r\n * tree.\r\n */\r\n /* eslint-env node */\r\n\r\n 'use strict';\r\n\r\n var _adapter_factory = require('./adapter_factory.js');\r\n\r\n var adapter = (0, _adapter_factory.adapterFactory)({ window: window });\r\n module.exports = adapter; // this is the difference from adapter_core.\r\n\r\n }, { \"./adapter_factory.js\": 2 }], 2: [function (require, module, exports) {\r\n 'use strict';\r\n\r\n Object.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n });\r\n exports.adapterFactory = adapterFactory;\r\n\r\n var _utils = require('./utils');\r\n\r\n var utils = _interopRequireWildcard(_utils);\r\n\r\n var _chrome_shim = require('./chrome/chrome_shim');\r\n\r\n var chromeShim = _interopRequireWildcard(_chrome_shim);\r\n\r\n var _edge_shim = require('./edge/edge_shim');\r\n\r\n var edgeShim = _interopRequireWildcard(_edge_shim);\r\n\r\n var _firefox_shim = require('./firefox/firefox_shim');\r\n\r\n var firefoxShim = _interopRequireWildcard(_firefox_shim);\r\n\r\n var _safari_shim = require('./safari/safari_shim');\r\n\r\n var safariShim = _interopRequireWildcard(_safari_shim);\r\n\r\n var _common_shim = require('./common_shim');\r\n\r\n var commonShim = _interopRequireWildcard(_common_shim);\r\n\r\n function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\r\n\r\n // Shimming starts here.\r\n /*\r\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\r\n *\r\n * Use of this source code is governed by a BSD-style license\r\n * that can be found in the LICENSE file in the root of the source\r\n * tree.\r\n */\r\n function adapterFactory() {\r\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\r\n window = _ref.window;\r\n\r\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\r\n shimChrome: true,\r\n shimFirefox: true,\r\n shimEdge: true,\r\n shimSafari: true\r\n };\r\n\r\n // Utils.\r\n var logging = utils.log;\r\n var browserDetails = utils.detectBrowser(window);\r\n\r\n var adapter = {\r\n browserDetails: browserDetails,\r\n commonShim: commonShim,\r\n extractVersion: utils.extractVersion,\r\n disableLog: utils.disableLog,\r\n disableWarnings: utils.disableWarnings\r\n };\r\n\r\n // Shim browser if found.\r\n switch (browserDetails.browser) {\r\n case 'chrome':\r\n if (!chromeShim || !chromeShim.shimPeerConnection || !options.shimChrome) {\r\n logging('Chrome shim is not included in this adapter release.');\r\n return adapter;\r\n }\r\n logging('adapter.js shimming chrome.');\r\n // Export to the adapter global object visible in the browser.\r\n adapter.browserShim = chromeShim;\r\n\r\n chromeShim.shimGetUserMedia(window);\r\n chromeShim.shimMediaStream(window);\r\n chromeShim.shimPeerConnection(window);\r\n chromeShim.shimOnTrack(window);\r\n chromeShim.shimAddTrackRemoveTrack(window);\r\n chromeShim.shimGetSendersWithDtmf(window);\r\n chromeShim.shimSenderReceiverGetStats(window);\r\n chromeShim.fixNegotiationNeeded(window);\r\n\r\n commonShim.shimRTCIceCandidate(window);\r\n commonShim.shimMaxMessageSize(window);\r\n commonShim.shimSendThrowTypeError(window);\r\n break;\r\n case 'firefox':\r\n if (!firefoxShim || !firefoxShim.shimPeerConnection || !options.shimFirefox) {\r\n logging('Firefox shim is not included in this adapter release.');\r\n return adapter;\r\n }\r\n logging('adapter.js shimming firefox.');\r\n // Export to the adapter global object visible in the browser.\r\n adapter.browserShim = firefoxShim;\r\n\r\n firefoxShim.shimGetUserMedia(window);\r\n firefoxShim.shimPeerConnection(window);\r\n firefoxShim.shimOnTrack(window);\r\n firefoxShim.shimRemoveStream(window);\r\n firefoxShim.shimSenderGetStats(window);\r\n firefoxShim.shimReceiverGetStats(window);\r\n firefoxShim.shimRTCDataChannel(window);\r\n\r\n commonShim.shimRTCIceCandidate(window);\r\n commonShim.shimMaxMessageSize(window);\r\n commonShim.shimSendThrowTypeError(window);\r\n break;\r\n case 'edge':\r\n if (!edgeShim || !edgeShim.shimPeerConnection || !options.shimEdge) {\r\n logging('MS edge shim is not included in this adapter release.');\r\n return adapter;\r\n }\r\n logging('adapter.js shimming edge.');\r\n // Export to the adapter global object visible in the browser.\r\n adapter.browserShim = edgeShim;\r\n\r\n edgeShim.shimGetUserMedia(window);\r\n edgeShim.shimGetDisplayMedia(window);\r\n edgeShim.shimPeerConnection(window);\r\n edgeShim.shimReplaceTrack(window);\r\n\r\n // the edge shim implements the full RTCIceCandidate object.\r\n\r\n commonShim.shimMaxMessageSize(window);\r\n commonShim.shimSendThrowTypeError(window);\r\n break;\r\n case 'safari':\r\n if (!safariShim || !options.shimSafari) {\r\n logging('Safari shim is not included in this adapter release.');\r\n return adapter;\r\n }\r\n logging('adapter.js shimming safari.');\r\n // Export to the adapter global object visible in the browser.\r\n adapter.browserShim = safariShim;\r\n\r\n safariShim.shimRTCIceServerUrls(window);\r\n safariShim.shimCreateOfferLegacy(window);\r\n safariShim.shimCallbacksAPI(window);\r\n safariShim.shimLocalStreamsAPI(window);\r\n safariShim.shimRemoteStreamsAPI(window);\r\n safariShim.shimTrackEventTransceiver(window);\r\n safariShim.shimGetUserMedia(window);\r\n\r\n commonShim.shimRTCIceCandidate(window);\r\n commonShim.shimMaxMessageSize(window);\r\n commonShim.shimSendThrowTypeError(window);\r\n break;\r\n default:\r\n logging('Unsupported browser!');\r\n break;\r\n }\r\n\r\n return adapter;\r\n }\r\n\r\n // Browser shims.\r\n\r\n }, { \"./chrome/chrome_shim\": 3, \"./common_shim\": 6, \"./edge/edge_shim\": 7, \"./firefox/firefox_shim\": 11, \"./safari/safari_shim\": 14, \"./utils\": 15 }], 3: [function (require, module, exports) {\r\n\r\n /*\r\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\r\n *\r\n * Use of this source code is governed by a BSD-style license\r\n * that can be found in the LICENSE file in the root of the source\r\n * tree.\r\n */\r\n /* eslint-env node */\r\n 'use strict';\r\n\r\n Object.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n });\r\n exports.shimGetDisplayMedia = exports.shimGetUserMedia = undefined;\r\n\r\n var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\r\n\r\n var _getusermedia = require('./getusermedia');\r\n\r\n Object.defineProperty(exports, 'shimGetUserMedia', {\r\n enumerable: true,\r\n get: function get() {\r\n return _getusermedia.shimGetUserMedia;\r\n }\r\n });\r\n\r\n var _getdisplaymedia = require('./getdisplaymedia');\r\n\r\n Object.defineProperty(exports, 'shimGetDisplayMedia', {\r\n enumerable: true,\r\n get: function get() {\r\n return _getdisplaymedia.shimGetDisplayMedia;\r\n }\r\n });\r\n exports.shimMediaStream = shimMediaStream;\r\n exports.shimOnTrack = shimOnTrack;\r\n exports.shimGetSendersWithDtmf = shimGetSendersWithDtmf;\r\n exports.shimSenderReceiverGetStats = shimSenderReceiverGetStats;\r\n exports.shimAddTrackRemoveTrackWithNative = shimAddTrackRemoveTrackWithNative;\r\n exports.shimAddTrackRemoveTrack = shimAddTrackRemoveTrack;\r\n exports.shimPeerConnection = shimPeerConnection;\r\n exports.fixNegotiationNeeded = fixNegotiationNeeded;\r\n\r\n var _utils = require('../utils.js');\r\n\r\n var utils = _interopRequireWildcard(_utils);\r\n\r\n function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\r\n\r\n /* iterates the stats graph recursively. */\r\n function walkStats(stats, base, resultSet) {\r\n if (!base || resultSet.has(base.id)) {\r\n return;\r\n }\r\n resultSet.set(base.id, base);\r\n Object.keys(base).forEach(function (name) {\r\n if (name.endsWith('Id')) {\r\n walkStats(stats, stats.get(base[name]), resultSet);\r\n } else if (name.endsWith('Ids')) {\r\n base[name].forEach(function (id) {\r\n walkStats(stats, stats.get(id), resultSet);\r\n });\r\n }\r\n });\r\n }\r\n\r\n /* filter getStats for a sender/receiver track. */\r\n function filterStats(result, track, outbound) {\r\n var streamStatsType = outbound ? 'outbound-rtp' : 'inbound-rtp';\r\n var filteredResult = new Map();\r\n if (track === null) {\r\n return filteredResult;\r\n }\r\n var trackStats = [];\r\n result.forEach(function (value) {\r\n if (value.type === 'track' && value.trackIdentifier === track.id) {\r\n trackStats.push(value);\r\n }\r\n });\r\n trackStats.forEach(function (trackStat) {\r\n result.forEach(function (stats) {\r\n if (stats.type === streamStatsType && stats.trackId === trackStat.id) {\r\n walkStats(result, stats, filteredResult);\r\n }\r\n });\r\n });\r\n return filteredResult;\r\n }\r\n\r\n function shimMediaStream(window) {\r\n window.MediaStream = window.MediaStream || window.webkitMediaStream;\r\n }\r\n\r\n function shimOnTrack(window) {\r\n if ((typeof window === 'undefined' ? 'undefined' : _typeof(window)) === 'object' && window.RTCPeerConnection && !('ontrack' in window.RTCPeerConnection.prototype)) {\r\n Object.defineProperty(window.RTCPeerConnection.prototype, 'ontrack', {\r\n get: function get() {\r\n return this._ontrack;\r\n },\r\n set: function set(f) {\r\n if (this._ontrack) {\r\n this.removeEventListener('track', this._ontrack);\r\n }\r\n this.addEventListener('track', this._ontrack = f);\r\n },\r\n\r\n enumerable: true,\r\n configurable: true\r\n });\r\n var origSetRemoteDescription = window.RTCPeerConnection.prototype.setRemoteDescription;\r\n window.RTCPeerConnection.prototype.setRemoteDescription = function () {\r\n var _this = this;\r\n\r\n if (!this._ontrackpoly) {\r\n this._ontrackpoly = function (e) {\r\n // onaddstream does not fire when a track is added to an existing\r\n // stream. But stream.onaddtrack is implemented so we use that.\r\n e.stream.addEventListener('addtrack', function (te) {\r\n var receiver = void 0;\r\n if (window.RTCPeerConnection.prototype.getReceivers) {\r\n receiver = _this.getReceivers().find(function (r) {\r\n return r.track && r.track.id === te.track.id;\r\n });\r\n } else {\r\n receiver = { track: te.track };\r\n }\r\n\r\n var event = new Event('track');\r\n event.track = te.track;\r\n event.receiver = receiver;\r\n event.transceiver = { receiver: receiver };\r\n event.streams = [e.stream];\r\n _this.dispatchEvent(event);\r\n });\r\n e.stream.getTracks().forEach(function (track) {\r\n var receiver = void 0;\r\n if (window.RTCPeerConnection.prototype.getReceivers) {\r\n receiver = _this.getReceivers().find(function (r) {\r\n return r.track && r.track.id === track.id;\r\n });\r\n } else {\r\n receiver = { track: track };\r\n }\r\n var event = new Event('track');\r\n event.track = track;\r\n event.receiver = receiver;\r\n event.transceiver = { receiver: receiver };\r\n event.streams = [e.stream];\r\n _this.dispatchEvent(event);\r\n });\r\n };\r\n this.addEventListener('addstream', this._ontrackpoly);\r\n }\r\n return origSetRemoteDescription.apply(this, arguments);\r\n };\r\n } else {\r\n // even if RTCRtpTransceiver is in window, it is only used and\r\n // emitted in unified-plan. Unfortunately this means we need\r\n // to unconditionally wrap the event.\r\n utils.wrapPeerConnectionEvent(window, 'track', function (e) {\r\n if (!e.transceiver) {\r\n Object.defineProperty(e, 'transceiver', { value: { receiver: e.receiver } });\r\n }\r\n return e;\r\n });\r\n }\r\n }\r\n\r\n function shimGetSendersWithDtmf(window) {\r\n // Overrides addTrack/removeTrack, depends on shimAddTrackRemoveTrack.\r\n if ((typeof window === 'undefined' ? 'undefined' : _typeof(window)) === 'object' && window.RTCPeerConnection && !('getSenders' in window.RTCPeerConnection.prototype) && 'createDTMFSender' in window.RTCPeerConnection.prototype) {\r\n var shimSenderWithDtmf = function shimSenderWithDtmf(pc, track) {\r\n return {\r\n track: track,\r\n get dtmf() {\r\n if (this._dtmf === undefined) {\r\n if (track.kind === 'audio') {\r\n this._dtmf = pc.createDTMFSender(track);\r\n } else {\r\n this._dtmf = null;\r\n }\r\n }\r\n return this._dtmf;\r\n },\r\n _pc: pc\r\n };\r\n };\r\n\r\n // augment addTrack when getSenders is not available.\r\n if (!window.RTCPeerConnection.prototype.getSenders) {\r\n window.RTCPeerConnection.prototype.getSenders = function () {\r\n this._senders = this._senders || [];\r\n return this._senders.slice(); // return a copy of the internal state.\r\n };\r\n var origAddTrack = window.RTCPeerConnection.prototype.addTrack;\r\n window.RTCPeerConnection.prototype.addTrack = function (track, stream) {\r\n var sender = origAddTrack.apply(this, arguments);\r\n if (!sender) {\r\n sender = shimSenderWithDtmf(this, track);\r\n this._senders.push(sender);\r\n }\r\n return sender;\r\n };\r\n\r\n var origRemoveTrack = window.RTCPeerConnection.prototype.removeTrack;\r\n window.RTCPeerConnection.prototype.removeTrack = function (sender) {\r\n origRemoveTrack.apply(this, arguments);\r\n var idx = this._senders.indexOf(sender);\r\n if (idx !== -1) {\r\n this._senders.splice(idx, 1);\r\n }\r\n };\r\n }\r\n var origAddStream = window.RTCPeerConnection.prototype.addStream;\r\n window.RTCPeerConnection.prototype.addStream = function (stream) {\r\n var _this2 = this;\r\n\r\n this._senders = this._senders || [];\r\n origAddStream.apply(this, [stream]);\r\n stream.getTracks().forEach(function (track) {\r\n _this2._senders.push(shimSenderWithDtmf(_this2, track));\r\n });\r\n };\r\n\r\n var origRemoveStream = window.RTCPeerConnection.prototype.removeStream;\r\n window.RTCPeerConnection.prototype.removeStream = function (stream) {\r\n var _this3 = this;\r\n\r\n this._senders = this._senders || [];\r\n origRemoveStream.apply(this, [stream]);\r\n\r\n stream.getTracks().forEach(function (track) {\r\n var sender = _this3._senders.find(function (s) {\r\n return s.track === track;\r\n });\r\n if (sender) {\r\n // remove sender\r\n _this3._senders.splice(_this3._senders.indexOf(sender), 1);\r\n }\r\n });\r\n };\r\n } else if ((typeof window === 'undefined' ? 'undefined' : _typeof(window)) === 'object' && window.RTCPeerConnection && 'getSenders' in window.RTCPeerConnection.prototype && 'createDTMFSender' in window.RTCPeerConnection.prototype && window.RTCRtpSender && !('dtmf' in window.RTCRtpSender.prototype)) {\r\n var origGetSenders = window.RTCPeerConnection.prototype.getSenders;\r\n window.RTCPeerConnection.prototype.getSenders = function () {\r\n var _this4 = this;\r\n\r\n var senders = origGetSenders.apply(this, []);\r\n senders.forEach(function (sender) {\r\n return sender._pc = _this4;\r\n });\r\n return senders;\r\n };\r\n\r\n Object.defineProperty(window.RTCRtpSender.prototype, 'dtmf', {\r\n get: function get() {\r\n if (this._dtmf === undefined) {\r\n if (this.track.kind === 'audio') {\r\n this._dtmf = this._pc.createDTMFSender(this.track);\r\n } else {\r\n this._dtmf = null;\r\n }\r\n }\r\n return this._dtmf;\r\n }\r\n });\r\n }\r\n }\r\n\r\n function shimSenderReceiverGetStats(window) {\r\n if (!((typeof window === 'undefined' ? 'undefined' : _typeof(window)) === 'object' && window.RTCPeerConnection && window.RTCRtpSender && window.RTCRtpReceiver)) {\r\n return;\r\n }\r\n\r\n // shim sender stats.\r\n if (!('getStats' in window.RTCRtpSender.prototype)) {\r\n var origGetSenders = window.RTCPeerConnection.prototype.getSenders;\r\n if (origGetSenders) {\r\n window.RTCPeerConnection.prototype.getSenders = function () {\r\n var _this5 = this;\r\n\r\n var senders = origGetSenders.apply(this, []);\r\n senders.forEach(function (sender) {\r\n return sender._pc = _this5;\r\n });\r\n return senders;\r\n };\r\n }\r\n\r\n var origAddTrack = window.RTCPeerConnection.prototype.addTrack;\r\n if (origAddTrack) {\r\n window.RTCPeerConnection.prototype.addTrack = function () {\r\n var sender = origAddTrack.apply(this, arguments);\r\n sender._pc = this;\r\n return sender;\r\n };\r\n }\r\n window.RTCRtpSender.prototype.getStats = function () {\r\n var sender = this;\r\n return this._pc.getStats().then(function (result) {\r\n return (\r\n /* Note: this will include stats of all senders that\r\n * send a track with the same id as sender.track as\r\n * it is not possible to identify the RTCRtpSender.\r\n */\r\n filterStats(result, sender.track, true)\r\n );\r\n });\r\n };\r\n }\r\n\r\n // shim receiver stats.\r\n if (!('getStats' in window.RTCRtpReceiver.prototype)) {\r\n var origGetReceivers = window.RTCPeerConnection.prototype.getReceivers;\r\n if (origGetReceivers) {\r\n window.RTCPeerConnection.prototype.getReceivers = function () {\r\n var _this6 = this;\r\n\r\n var receivers = origGetReceivers.apply(this, []);\r\n receivers.forEach(function (receiver) {\r\n return receiver._pc = _this6;\r\n });\r\n return receivers;\r\n };\r\n }\r\n utils.wrapPeerConnectionEvent(window, 'track', function (e) {\r\n e.receiver._pc = e.srcElement;\r\n return e;\r\n });\r\n window.RTCRtpReceiver.prototype.getStats = function () {\r\n var receiver = this;\r\n return this._pc.getStats().then(function (result) {\r\n return filterStats(result, receiver.track, false);\r\n });\r\n };\r\n }\r\n\r\n if (!('getStats' in window.RTCRtpSender.prototype && 'getStats' in window.RTCRtpReceiver.prototype)) {\r\n return;\r\n }\r\n\r\n // shim RTCPeerConnection.getStats(track).\r\n var origGetStats = window.RTCPeerConnection.prototype.getStats;\r\n window.RTCPeerConnection.prototype.getStats = function () {\r\n if (arguments.length > 0 && arguments[0] instanceof window.MediaStreamTrack) {\r\n var track = arguments[0];\r\n var sender = void 0;\r\n var receiver = void 0;\r\n var err = void 0;\r\n this.getSenders().forEach(function (s) {\r\n if (s.track === track) {\r\n if (sender) {\r\n err = true;\r\n } else {\r\n sender = s;\r\n }\r\n }\r\n });\r\n this.getReceivers().forEach(function (r) {\r\n if (r.track === track) {\r\n if (receiver) {\r\n err = true;\r\n } else {\r\n receiver = r;\r\n }\r\n }\r\n return r.track === track;\r\n });\r\n if (err || sender && receiver) {\r\n return Promise.reject(new DOMException('There are more than one sender or receiver for the track.', 'InvalidAccessError'));\r\n } else if (sender) {\r\n return sender.getStats();\r\n } else if (receiver) {\r\n return receiver.getStats();\r\n }\r\n return Promise.reject(new DOMException('There is no sender or receiver for the track.', 'InvalidAccessError'));\r\n }\r\n return origGetStats.apply(this, arguments);\r\n };\r\n }\r\n\r\n function shimAddTrackRemoveTrackWithNative(window) {\r\n // shim addTrack/removeTrack with native variants in order to make\r\n // the interactions with legacy getLocalStreams behave as in other browsers.\r\n // Keeps a mapping stream.id => [stream, rtpsenders...]\r\n window.RTCPeerConnection.prototype.getLocalStreams = function () {\r\n var _this7 = this;\r\n\r\n this._shimmedLocalStreams = this._shimmedLocalStreams || {};\r\n return Object.keys(this._shimmedLocalStreams).map(function (streamId) {\r\n return _this7._shimmedLocalStreams[streamId][0];\r\n });\r\n };\r\n\r\n var origAddTrack = window.RTCPeerConnection.prototype.addTrack;\r\n window.RTCPeerConnection.prototype.addTrack = function (track, stream) {\r\n if (!stream) {\r\n return origAddTrack.apply(this, arguments);\r\n }\r\n this._shimmedLocalStreams = this._shimmedLocalStreams || {};\r\n\r\n var sender = origAddTrack.apply(this, arguments);\r\n if (!this._shimmedLocalStreams[stream.id]) {\r\n this._shimmedLocalStreams[stream.id] = [stream, sender];\r\n } else if (this._shimmedLocalStreams[stream.id].indexOf(sender) === -1) {\r\n this._shimmedLocalStreams[stream.id].push(sender);\r\n }\r\n return sender;\r\n };\r\n\r\n var origAddStream = window.RTCPeerConnection.prototype.addStream;\r\n window.RTCPeerConnection.prototype.addStream = function (stream) {\r\n var _this8 = this;\r\n\r\n this._shimmedLocalStreams = this._shimmedLocalStreams || {};\r\n\r\n stream.getTracks().forEach(function (track) {\r\n var alreadyExists = _this8.getSenders().find(function (s) {\r\n return s.track === track;\r\n });\r\n if (alreadyExists) {\r\n throw new DOMException('Track already exists.', 'InvalidAccessError');\r\n }\r\n });\r\n var existingSenders = this.getSenders();\r\n origAddStream.apply(this, arguments);\r\n var newSenders = this.getSenders().filter(function (newSender) {\r\n return existingSenders.indexOf(newSender) === -1;\r\n });\r\n this._shimmedLocalStreams[stream.id] = [stream].concat(newSenders);\r\n };\r\n\r\n var origRemoveStream = window.RTCPeerConnection.prototype.removeStream;\r\n window.RTCPeerConnection.prototype.removeStream = function (stream) {\r\n this._shimmedLocalStreams = this._shimmedLocalStreams || {};\r\n delete this._shimmedLocalStreams[stream.id];\r\n return origRemoveStream.apply(this, arguments);\r\n };\r\n\r\n var origRemoveTrack = window.RTCPeerConnection.prototype.removeTrack;\r\n window.RTCPeerConnection.prototype.removeTrack = function (sender) {\r\n var _this9 = this;\r\n\r\n this._shimmedLocalStreams = this._shimmedLocalStreams || {};\r\n if (sender) {\r\n Object.keys(this._shimmedLocalStreams).forEach(function (streamId) {\r\n var idx = _this9._shimmedLocalStreams[streamId].indexOf(sender);\r\n if (idx !== -1) {\r\n _this9._shimmedLocalStreams[streamId].splice(idx, 1);\r\n }\r\n if (_this9._shimmedLocalStreams[streamId].length === 1) {\r\n delete _this9._shimmedLocalStreams[streamId];\r\n }\r\n });\r\n }\r\n return origRemoveTrack.apply(this, arguments);\r\n };\r\n }\r\n\r\n function shimAddTrackRemoveTrack(window) {\r\n if (!window.RTCPeerConnection) {\r\n return;\r\n }\r\n var browserDetails = utils.detectBrowser(window);\r\n // shim addTrack and removeTrack.\r\n if (window.RTCPeerConnection.prototype.addTrack && browserDetails.version >= 65) {\r\n return this.shimAddTrackRemoveTrackWithNative(window);\r\n }\r\n\r\n // also shim pc.getLocalStreams when addTrack is shimmed\r\n // to return the original streams.\r\n var origGetLocalStreams = window.RTCPeerConnection.prototype.getLocalStreams;\r\n window.RTCPeerConnection.prototype.getLocalStreams = function () {\r\n var _this10 = this;\r\n\r\n var nativeStreams = origGetLocalStreams.apply(this);\r\n this._reverseStreams = this._reverseStreams || {};\r\n return nativeStreams.map(function (stream) {\r\n return _this10._reverseStreams[stream.id];\r\n });\r\n };\r\n\r\n var origAddStream = window.RTCPeerConnection.prototype.addStream;\r\n window.RTCPeerConnection.prototype.addStream = function (stream) {\r\n var _this11 = this;\r\n\r\n this._streams = this._streams || {};\r\n this._reverseStreams = this._reverseStreams || {};\r\n\r\n stream.getTracks().forEach(function (track) {\r\n var alreadyExists = _this11.getSenders().find(function (s) {\r\n return s.track === track;\r\n });\r\n if (alreadyExists) {\r\n throw new DOMException('Track already exists.', 'InvalidAccessError');\r\n }\r\n });\r\n // Add identity mapping for consistency with addTrack.\r\n // Unless this is being used with a stream from addTrack.\r\n if (!this._reverseStreams[stream.id]) {\r\n var newStream = new window.MediaStream(stream.getTracks());\r\n this._streams[stream.id] = newStream;\r\n this._reverseStreams[newStream.id] = stream;\r\n stream = newStream;\r\n }\r\n origAddStream.apply(this, [stream]);\r\n };\r\n\r\n var origRemoveStream = window.RTCPeerConnection.prototype.removeStream;\r\n window.RTCPeerConnection.prototype.removeStream = function (stream) {\r\n this._streams = this._streams || {};\r\n this._reverseStreams = this._reverseStreams || {};\r\n\r\n origRemoveStream.apply(this, [this._streams[stream.id] || stream]);\r\n delete this._reverseStreams[this._streams[stream.id] ? this._streams[stream.id].id : stream.id];\r\n delete this._streams[stream.id];\r\n };\r\n\r\n window.RTCPeerConnection.prototype.addTrack = function (track, stream) {\r\n var _this12 = this;\r\n\r\n if (this.signalingState === 'closed') {\r\n throw new DOMException('The RTCPeerConnection\\'s signalingState is \\'closed\\'.', 'InvalidStateError');\r\n }\r\n var streams = [].slice.call(arguments, 1);\r\n if (streams.length !== 1 || !streams[0].getTracks().find(function (t) {\r\n return t === track;\r\n })) {\r\n // this is not fully correct but all we can manage without\r\n // [[associated MediaStreams]] internal slot.\r\n throw new DOMException('The adapter.js addTrack polyfill only supports a single ' + ' stream which is associated with the specified track.', 'NotSupportedError');\r\n }\r\n\r\n var alreadyExists = this.getSenders().find(function (s) {\r\n return s.track === track;\r\n });\r\n if (alreadyExists) {\r\n throw new DOMException('Track already exists.', 'InvalidAccessError');\r\n }\r\n\r\n this._streams = this._streams || {};\r\n this._reverseStreams = this._reverseStreams || {};\r\n var oldStream = this._streams[stream.id];\r\n if (oldStream) {\r\n // this is using odd Chrome behaviour, use with caution:\r\n // https://bugs.chromium.org/p/webrtc/issues/detail?id=7815\r\n // Note: we rely on the high-level addTrack/dtmf shim to\r\n // create the sender with a dtmf sender.\r\n oldStream.addTrack(track);\r\n\r\n // Trigger ONN async.\r\n Promise.resolve().then(function () {\r\n _this12.dispatchEvent(new Event('negotiationneeded'));\r\n });\r\n } else {\r\n var newStream = new window.MediaStream([track]);\r\n this._streams[stream.id] = newStream;\r\n this._reverseStreams[newStream.id] = stream;\r\n this.addStream(newStream);\r\n }\r\n return this.getSenders().find(function (s) {\r\n return s.track === track;\r\n });\r\n };\r\n\r\n // replace the internal stream id with the external one and\r\n // vice versa.\r\n function replaceInternalStreamId(pc, description) {\r\n var sdp = description.sdp;\r\n Object.keys(pc._reverseStreams || []).forEach(function (internalId) {\r\n var externalStream = pc._reverseStreams[internalId];\r\n var internalStream = pc._streams[externalStream.id];\r\n sdp = sdp.replace(new RegExp(internalStream.id, 'g'), externalStream.id);\r\n });\r\n return new RTCSessionDescription({\r\n type: description.type,\r\n sdp: sdp\r\n });\r\n }\r\n function replaceExternalStreamId(pc, description) {\r\n var sdp = description.sdp;\r\n Object.keys(pc._reverseStreams || []).forEach(function (internalId) {\r\n var externalStream = pc._reverseStreams[internalId];\r\n var internalStream = pc._streams[externalStream.id];\r\n sdp = sdp.replace(new RegExp(externalStream.id, 'g'), internalStream.id);\r\n });\r\n return new RTCSessionDescription({\r\n type: description.type,\r\n sdp: sdp\r\n });\r\n }\r\n ['createOffer', 'createAnswer'].forEach(function (method) {\r\n var nativeMethod = window.RTCPeerConnection.prototype[method];\r\n window.RTCPeerConnection.prototype[method] = function () {\r\n var _this13 = this;\r\n\r\n var args = arguments;\r\n var isLegacyCall = arguments.length && typeof arguments[0] === 'function';\r\n if (isLegacyCall) {\r\n return nativeMethod.apply(this, [function (description) {\r\n var desc = replaceInternalStreamId(_this13, description);\r\n args[0].apply(null, [desc]);\r\n }, function (err) {\r\n if (args[1]) {\r\n args[1].apply(null, err);\r\n }\r\n }, arguments[2]]);\r\n }\r\n return nativeMethod.apply(this, arguments).then(function (description) {\r\n return replaceInternalStreamId(_this13, description);\r\n });\r\n };\r\n });\r\n\r\n var origSetLocalDescription = window.RTCPeerConnection.prototype.setLocalDescription;\r\n window.RTCPeerConnection.prototype.setLocalDescription = function () {\r\n if (!arguments.length || !arguments[0].type) {\r\n return origSetLocalDescription.apply(this, arguments);\r\n }\r\n arguments[0] = replaceExternalStreamId(this, arguments[0]);\r\n return origSetLocalDescription.apply(this, arguments);\r\n };\r\n\r\n // TODO: mangle getStats: https://w3c.github.io/webrtc-stats/#dom-rtcmediastreamstats-streamidentifier\r\n\r\n var origLocalDescription = Object.getOwnPropertyDescriptor(window.RTCPeerConnection.prototype, 'localDescription');\r\n Object.defineProperty(window.RTCPeerConnection.prototype, 'localDescription', {\r\n get: function get() {\r\n var description = origLocalDescription.get.apply(this);\r\n if (description.type === '') {\r\n return description;\r\n }\r\n return replaceInternalStreamId(this, description);\r\n }\r\n });\r\n\r\n window.RTCPeerConnection.prototype.removeTrack = function (sender) {\r\n var _this14 = this;\r\n\r\n if (this.signalingState === 'closed') {\r\n throw new DOMException('The RTCPeerConnection\\'s signalingState is \\'closed\\'.', 'InvalidStateError');\r\n }\r\n // We can not yet check for sender instanceof RTCRtpSender\r\n // since we shim RTPSender. So we check if sender._pc is set.\r\n if (!sender._pc) {\r\n throw new DOMException('Argument 1 of RTCPeerConnection.removeTrack ' + 'does not implement interface RTCRtpSender.', 'TypeError');\r\n }\r\n var isLocal = sender._pc === this;\r\n if (!isLocal) {\r\n throw new DOMException('Sender was not created by this connection.', 'InvalidAccessError');\r\n }\r\n\r\n // Search for the native stream the senders track belongs to.\r\n this._streams = this._streams || {};\r\n var stream = void 0;\r\n Object.keys(this._streams).forEach(function (streamid) {\r\n var hasTrack = _this14._streams[streamid].getTracks().find(function (track) {\r\n return sender.track === track;\r\n });\r\n if (hasTrack) {\r\n stream = _this14._streams[streamid];\r\n }\r\n });\r\n\r\n if (stream) {\r\n if (stream.getTracks().length === 1) {\r\n // if this is the last track of the stream, remove the stream. This\r\n // takes care of any shimmed _senders.\r\n this.removeStream(this._reverseStreams[stream.id]);\r\n } else {\r\n // relying on the same odd chrome behaviour as above.\r\n stream.removeTrack(sender.track);\r\n }\r\n this.dispatchEvent(new Event('negotiationneeded'));\r\n }\r\n };\r\n }\r\n\r\n function shimPeerConnection(window) {\r\n if (!window.RTCPeerConnection && window.webkitRTCPeerConnection) {\r\n // very basic support for old versions.\r\n window.RTCPeerConnection = window.webkitRTCPeerConnection;\r\n }\r\n if (!window.RTCPeerConnection) {\r\n return;\r\n }\r\n\r\n var origGetStats = window.RTCPeerConnection.prototype.getStats;\r\n window.RTCPeerConnection.prototype.getStats = function (selector, successCallback, errorCallback) {\r\n var _this15 = this;\r\n\r\n var args = arguments;\r\n\r\n // If selector is a function then we are in the old style stats so just\r\n // pass back the original getStats format to avoid breaking old users.\r\n if (arguments.length > 0 && typeof selector === 'function') {\r\n return origGetStats.apply(this, arguments);\r\n }\r\n\r\n // When spec-style getStats is supported, return those when called with\r\n // either no arguments or the selector argument is null.\r\n if (origGetStats.length === 0 && (arguments.length === 0 || typeof arguments[0] !== 'function')) {\r\n return origGetStats.apply(this, []);\r\n }\r\n\r\n var fixChromeStats_ = function fixChromeStats_(response) {\r\n var standardReport = {};\r\n var reports = response.result();\r\n reports.forEach(function (report) {\r\n var standardStats = {\r\n id: report.id,\r\n timestamp: report.timestamp,\r\n type: {\r\n localcandidate: 'local-candidate',\r\n remotecandidate: 'remote-candidate'\r\n }[report.type] || report.type\r\n };\r\n report.names().forEach(function (name) {\r\n standardStats[name] = report.stat(name);\r\n });\r\n standardReport[standardStats.id] = standardStats;\r\n });\r\n\r\n return standardReport;\r\n };\r\n\r\n // shim getStats with maplike support\r\n var makeMapStats = function makeMapStats(stats) {\r\n return new Map(Object.keys(stats).map(function (key) {\r\n return [key, stats[key]];\r\n }));\r\n };\r\n\r\n if (arguments.length >= 2) {\r\n var successCallbackWrapper_ = function successCallbackWrapper_(response) {\r\n args[1](makeMapStats(fixChromeStats_(response)));\r\n };\r\n\r\n return origGetStats.apply(this, [successCallbackWrapper_, arguments[0]]);\r\n }\r\n\r\n // promise-support\r\n return new Promise(function (resolve, reject) {\r\n origGetStats.apply(_this15, [function (response) {\r\n resolve(makeMapStats(fixChromeStats_(response)));\r\n }, reject]);\r\n }).then(successCallback, errorCallback);\r\n };\r\n\r\n // shim implicit creation of RTCSessionDescription/RTCIceCandidate\r\n ['setLocalDescription', 'setRemoteDescription', 'addIceCandidate'].forEach(function (method) {\r\n var nativeMethod = window.RTCPeerConnection.prototype[method];\r\n window.RTCPeerConnection.prototype[method] = function () {\r\n arguments[0] = new (method === 'addIceCandidate' ? window.RTCIceCandidate : window.RTCSessionDescription)(arguments[0]);\r\n return nativeMethod.apply(this, arguments);\r\n };\r\n });\r\n\r\n // support for addIceCandidate(null or undefined)\r\n var nativeAddIceCandidate = window.RTCPeerConnection.prototype.addIceCandidate;\r\n window.RTCPeerConnection.prototype.addIceCandidate = function () {\r\n if (!arguments[0]) {\r\n if (arguments[1]) {\r\n arguments[1].apply(null);\r\n }\r\n return Promise.resolve();\r\n }\r\n return nativeAddIceCandidate.apply(this, arguments);\r\n };\r\n }\r\n\r\n function fixNegotiationNeeded(window) {\r\n utils.wrapPeerConnectionEvent(window, 'negotiationneeded', function (e) {\r\n var pc = e.target;\r\n if (pc.signalingState !== 'stable') {\r\n return;\r\n }\r\n return e;\r\n });\r\n }\r\n\r\n }, { \"../utils.js\": 15, \"./getdisplaymedia\": 4, \"./getusermedia\": 5 }], 4: [function (require, module, exports) {\r\n /*\r\n * Copyright (c) 2018 The adapter.js project authors. All Rights Reserved.\r\n *\r\n * Use of this source code is governed by a BSD-style license\r\n * that can be found in the LICENSE file in the root of the source\r\n * tree.\r\n */\r\n /* eslint-env node */\r\n 'use strict';\r\n\r\n Object.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n });\r\n exports.shimGetDisplayMedia = shimGetDisplayMedia;\r\n function shimGetDisplayMedia(window, getSourceId) {\r\n if (window.navigator.mediaDevices && 'getDisplayMedia' in window.navigator.mediaDevices) {\r\n return;\r\n }\r\n if (!window.navigator.mediaDevices) {\r\n return;\r\n }\r\n // getSourceId is a function that returns a promise resolving with\r\n // the sourceId of the screen/window/tab to be shared.\r\n if (typeof getSourceId !== 'function') {\r\n console.error('shimGetDisplayMedia: getSourceId argument is not ' + 'a function');\r\n return;\r\n }\r\n window.navigator.mediaDevices.getDisplayMedia = function (constraints) {\r\n return getSourceId(constraints).then(function (sourceId) {\r\n var widthSpecified = constraints.video && constraints.video.width;\r\n var heightSpecified = constraints.video && constraints.video.height;\r\n var frameRateSpecified = constraints.video && constraints.video.frameRate;\r\n constraints.video = {\r\n mandatory: {\r\n chromeMediaSource: 'desktop',\r\n chromeMediaSourceId: sourceId,\r\n maxFrameRate: frameRateSpecified || 3\r\n }\r\n };\r\n if (widthSpecified) {\r\n constraints.video.mandatory.maxWidth = widthSpecified;\r\n }\r\n if (heightSpecified) {\r\n constraints.video.mandatory.maxHeight = heightSpecified;\r\n }\r\n return window.navigator.mediaDevices.getUserMedia(constraints);\r\n });\r\n };\r\n }\r\n\r\n }, {}], 5: [function (require, module, exports) {\r\n /*\r\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\r\n *\r\n * Use of this source code is governed by a BSD-style license\r\n * that can be found in the LICENSE file in the root of the source\r\n * tree.\r\n */\r\n /* eslint-env node */\r\n 'use strict';\r\n\r\n Object.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n });\r\n\r\n var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\r\n\r\n exports.shimGetUserMedia = shimGetUserMedia;\r\n\r\n var _utils = require('../utils.js');\r\n\r\n var utils = _interopRequireWildcard(_utils);\r\n\r\n function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\r\n\r\n var logging = utils.log;\r\n\r\n function shimGetUserMedia(window) {\r\n var navigator = window && window.navigator;\r\n\r\n if (!navigator.mediaDevices) {\r\n return;\r\n }\r\n\r\n var browserDetails = utils.detectBrowser(window);\r\n\r\n var constraintsToChrome_ = function constraintsToChrome_(c) {\r\n if ((typeof c === 'undefined' ? 'undefined' : _typeof(c)) !== 'object' || c.mandatory || c.optional) {\r\n return c;\r\n }\r\n var cc = {};\r\n Object.keys(c).forEach(function (key) {\r\n if (key === 'require' || key === 'advanced' || key === 'mediaSource') {\r\n return;\r\n }\r\n var r = _typeof(c[key]) === 'object' ? c[key] : { ideal: c[key] };\r\n if (r.exact !== undefined && typeof r.exact === 'number') {\r\n r.min = r.max = r.exact;\r\n }\r\n var oldname_ = function oldname_(prefix, name) {\r\n if (prefix) {\r\n return prefix + name.charAt(0).toUpperCase() + name.slice(1);\r\n }\r\n return name === 'deviceId' ? 'sourceId' : name;\r\n };\r\n if (r.ideal !== undefined) {\r\n cc.optional = cc.optional || [];\r\n var oc = {};\r\n if (typeof r.ideal === 'number') {\r\n oc[oldname_('min', key)] = r.ideal;\r\n cc.optional.push(oc);\r\n oc = {};\r\n oc[oldname_('max', key)] = r.ideal;\r\n cc.optional.push(oc);\r\n } else {\r\n oc[oldname_('', key)] = r.ideal;\r\n cc.optional.push(oc);\r\n }\r\n }\r\n if (r.exact !== undefined && typeof r.exact !== 'number') {\r\n cc.mandatory = cc.mandatory || {};\r\n cc.mandatory[oldname_('', key)] = r.exact;\r\n } else {\r\n ['min', 'max'].forEach(function (mix) {\r\n if (r[mix] !== undefined) {\r\n cc.mandatory = cc.mandatory || {};\r\n cc.mandatory[oldname_(mix, key)] = r[mix];\r\n }\r\n });\r\n }\r\n });\r\n if (c.advanced) {\r\n cc.optional = (cc.optional || []).concat(c.advanced);\r\n }\r\n return cc;\r\n };\r\n\r\n var shimConstraints_ = function shimConstraints_(constraints, func) {\r\n if (browserDetails.version >= 61) {\r\n return func(constraints);\r\n }\r\n constraints = JSON.parse(JSON.stringify(constraints));\r\n if (constraints && _typeof(constraints.audio) === 'object') {\r\n var remap = function remap(obj, a, b) {\r\n if (a in obj && !(b in obj)) {\r\n obj[b] = obj[a];\r\n delete obj[a];\r\n }\r\n };\r\n constraints = JSON.parse(JSON.stringify(constraints));\r\n remap(constraints.audio, 'autoGainControl', 'googAutoGainControl');\r\n remap(constraints.audio, 'noiseSuppression', 'googNoiseSuppression');\r\n constraints.audio = constraintsToChrome_(constraints.audio);\r\n }\r\n if (constraints && _typeof(constraints.video) === 'object') {\r\n // Shim facingMode for mobile & surface pro.\r\n var face = constraints.video.facingMode;\r\n face = face && ((typeof face === 'undefined' ? 'undefined' : _typeof(face)) === 'object' ? face : { ideal: face });\r\n var getSupportedFacingModeLies = browserDetails.version < 66;\r\n\r\n if (face && (face.exact === 'user' || face.exact === 'environment' || face.ideal === 'user' || face.ideal === 'environment') && !(navigator.mediaDevices.getSupportedConstraints && navigator.mediaDevices.getSupportedConstraints().facingMode && !getSupportedFacingModeLies)) {\r\n delete constraints.video.facingMode;\r\n var matches = void 0;\r\n if (face.exact === 'environment' || face.ideal === 'environment') {\r\n matches = ['back', 'rear'];\r\n } else if (face.exact === 'user' || face.ideal === 'user') {\r\n matches = ['front'];\r\n }\r\n if (matches) {\r\n // Look for matches in label, or use last cam for back (typical).\r\n return navigator.mediaDevices.enumerateDevices().then(function (devices) {\r\n devices = devices.filter(function (d) {\r\n return d.kind === 'videoinput';\r\n });\r\n var dev = devices.find(function (d) {\r\n return matches.some(function (match) {\r\n return d.label.toLowerCase().includes(match);\r\n });\r\n });\r\n if (!dev && devices.length && matches.includes('back')) {\r\n dev = devices[devices.length - 1]; // more likely the back cam\r\n }\r\n if (dev) {\r\n constraints.video.deviceId = face.exact ? { exact: dev.deviceId } : { ideal: dev.deviceId };\r\n }\r\n constraints.video = constraintsToChrome_(constraints.video);\r\n logging('chrome: ' + JSON.stringify(constraints));\r\n return func(constraints);\r\n });\r\n }\r\n }\r\n constraints.video = constraintsToChrome_(constraints.video);\r\n }\r\n logging('chrome: ' + JSON.stringify(constraints));\r\n return func(constraints);\r\n };\r\n\r\n var shimError_ = function shimError_(e) {\r\n if (browserDetails.version >= 64) {\r\n return e;\r\n }\r\n return {\r\n name: {\r\n PermissionDeniedError: 'NotAllowedError',\r\n PermissionDismissedError: 'NotAllowedError',\r\n InvalidStateError: 'NotAllowedError',\r\n DevicesNotFoundError: 'NotFoundError',\r\n ConstraintNotSatisfiedError: 'OverconstrainedError',\r\n TrackStartError: 'NotReadableError',\r\n MediaDeviceFailedDueToShutdown: 'NotAllowedError',\r\n MediaDeviceKillSwitchOn: 'NotAllowedError',\r\n TabCaptureError: 'AbortError',\r\n ScreenCaptureError: 'AbortError',\r\n DeviceCaptureError: 'AbortError'\r\n }[e.name] || e.name,\r\n message: e.message,\r\n constraint: e.constraint || e.constraintName,\r\n toString: function toString() {\r\n return this.name + (this.message && ': ') + this.message;\r\n }\r\n };\r\n };\r\n\r\n var getUserMedia_ = function getUserMedia_(constraints, onSuccess, onError) {\r\n shimConstraints_(constraints, function (c) {\r\n navigator.webkitGetUserMedia(c, onSuccess, function (e) {\r\n if (onError) {\r\n onError(shimError_(e));\r\n }\r\n });\r\n });\r\n };\r\n navigator.getUserMedia = getUserMedia_.bind(navigator);\r\n\r\n // Even though Chrome 45 has navigator.mediaDevices and a getUserMedia\r\n // function which returns a Promise, it does not accept spec-style\r\n // constraints.\r\n var origGetUserMedia = navigator.mediaDevices.getUserMedia.bind(navigator.mediaDevices);\r\n navigator.mediaDevices.getUserMedia = function (cs) {\r\n return shimConstraints_(cs, function (c) {\r\n return origGetUserMedia(c).then(function (stream) {\r\n if (c.audio && !stream.getAudioTracks().length || c.video && !stream.getVideoTracks().length) {\r\n stream.getTracks().forEach(function (track) {\r\n track.stop();\r\n });\r\n throw new DOMException('', 'NotFoundError');\r\n }\r\n return stream;\r\n }, function (e) {\r\n return Promise.reject(shimError_(e));\r\n });\r\n });\r\n };\r\n }\r\n\r\n }, { \"../utils.js\": 15 }], 6: [function (require, module, exports) {\r\n /*\r\n * Copyright (c) 2017 The WebRTC project authors. All Rights Reserved.\r\n *\r\n * Use of this source code is governed by a BSD-style license\r\n * that can be found in the LICENSE file in the root of the source\r\n * tree.\r\n */\r\n /* eslint-env node */\r\n 'use strict';\r\n\r\n Object.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n });\r\n\r\n var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\r\n\r\n exports.shimRTCIceCandidate = shimRTCIceCandidate;\r\n exports.shimMaxMessageSize = shimMaxMessageSize;\r\n exports.shimSendThrowTypeError = shimSendThrowTypeError;\r\n\r\n var _sdp = require('sdp');\r\n\r\n var _sdp2 = _interopRequireDefault(_sdp);\r\n\r\n var _utils = require('./utils');\r\n\r\n var utils = _interopRequireWildcard(_utils);\r\n\r\n function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\r\n\r\n function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\r\n\r\n function shimRTCIceCandidate(window) {\r\n // foundation is arbitrarily chosen as an indicator for full support for\r\n // https://w3c.github.io/webrtc-pc/#rtcicecandidate-interface\r\n if (!window.RTCIceCandidate || window.RTCIceCandidate && 'foundation' in window.RTCIceCandidate.prototype) {\r\n return;\r\n }\r\n\r\n var NativeRTCIceCandidate = window.RTCIceCandidate;\r\n window.RTCIceCandidate = function (args) {\r\n // Remove the a= which shouldn't be part of the candidate string.\r\n if ((typeof args === 'undefined' ? 'undefined' : _typeof(args)) === 'object' && args.candidate && args.candidate.indexOf('a=') === 0) {\r\n args = JSON.parse(JSON.stringify(args));\r\n args.candidate = args.candidate.substr(2);\r\n }\r\n\r\n if (args.candidate && args.candidate.length) {\r\n // Augment the native candidate with the parsed fields.\r\n var nativeCandidate = new NativeRTCIceCandidate(args);\r\n var parsedCandidate = _sdp2.default.parseCandidate(args.candidate);\r\n var augmentedCandidate = Object.assign(nativeCandidate, parsedCandidate);\r\n\r\n // Add a serializer that does not serialize the extra attributes.\r\n augmentedCandidate.toJSON = function () {\r\n return {\r\n candidate: augmentedCandidate.candidate,\r\n sdpMid: augmentedCandidate.sdpMid,\r\n sdpMLineIndex: augmentedCandidate.sdpMLineIndex,\r\n usernameFragment: augmentedCandidate.usernameFragment\r\n };\r\n };\r\n return augmentedCandidate;\r\n }\r\n return new NativeRTCIceCandidate(args);\r\n };\r\n window.RTCIceCandidate.prototype = NativeRTCIceCandidate.prototype;\r\n\r\n // Hook up the augmented candidate in onicecandidate and\r\n // addEventListener('icecandidate', ...)\r\n utils.wrapPeerConnectionEvent(window, 'icecandidate', function (e) {\r\n if (e.candidate) {\r\n Object.defineProperty(e, 'candidate', {\r\n value: new window.RTCIceCandidate(e.candidate),\r\n writable: 'false'\r\n });\r\n }\r\n return e;\r\n });\r\n }\r\n\r\n function shimMaxMessageSize(window) {\r\n if (window.RTCSctpTransport || !window.RTCPeerConnection) {\r\n return;\r\n }\r\n var browserDetails = utils.detectBrowser(window);\r\n\r\n if (!('sctp' in window.RTCPeerConnection.prototype)) {\r\n Object.defineProperty(window.RTCPeerConnection.prototype, 'sctp', {\r\n get: function get() {\r\n return typeof this._sctp === 'undefined' ? null : this._sctp;\r\n }\r\n });\r\n }\r\n\r\n var sctpInDescription = function sctpInDescription(description) {\r\n var sections = _sdp2.default.splitSections(description.sdp);\r\n sections.shift();\r\n return sections.some(function (mediaSection) {\r\n var mLine = _sdp2.default.parseMLine(mediaSection);\r\n return mLine && mLine.kind === 'application' && mLine.protocol.indexOf('SCTP') !== -1;\r\n });\r\n };\r\n\r\n var getRemoteFirefoxVersion = function getRemoteFirefoxVersion(description) {\r\n // TODO: Is there a better solution for detecting Firefox?\r\n var match = description.sdp.match(/mozilla...THIS_IS_SDPARTA-(\\d+)/);\r\n if (match === null || match.length < 2) {\r\n return -1;\r\n }\r\n var version = parseInt(match[1], 10);\r\n // Test for NaN (yes, this is ugly)\r\n return version !== version ? -1 : version;\r\n };\r\n\r\n var getCanSendMaxMessageSize = function getCanSendMaxMessageSize(remoteIsFirefox) {\r\n // Every implementation we know can send at least 64 KiB.\r\n // Note: Although Chrome is technically able to send up to 256 KiB, the\r\n // data does not reach the other peer reliably.\r\n // See: https://bugs.chromium.org/p/webrtc/issues/detail?id=8419\r\n var canSendMaxMessageSize = 65536;\r\n if (browserDetails.browser === 'firefox') {\r\n if (browserDetails.version < 57) {\r\n if (remoteIsFirefox === -1) {\r\n // FF < 57 will send in 16 KiB chunks using the deprecated PPID\r\n // fragmentation.\r\n canSendMaxMessageSize = 16384;\r\n } else {\r\n // However, other FF (and RAWRTC) can reassemble PPID-fragmented\r\n // messages. Thus, supporting ~2 GiB when sending.\r\n canSendMaxMessageSize = 2147483637;\r\n }\r\n } else if (browserDetails.version < 60) {\r\n // Currently, all FF >= 57 will reset the remote maximum message size\r\n // to the default value when a data channel is created at a later\r\n // stage. :(\r\n // See: https://bugzilla.mozilla.org/show_bug.cgi?id=1426831\r\n canSendMaxMessageSize = browserDetails.version === 57 ? 65535 : 65536;\r\n } else {\r\n // FF >= 60 supports sending ~2 GiB\r\n canSendMaxMessageSize = 2147483637;\r\n }\r\n }\r\n return canSendMaxMessageSize;\r\n };\r\n\r\n var getMaxMessageSize = function getMaxMessageSize(description, remoteIsFirefox) {\r\n // Note: 65536 bytes is the default value from the SDP spec. Also,\r\n // every implementation we know supports receiving 65536 bytes.\r\n var maxMessageSize = 65536;\r\n\r\n // FF 57 has a slightly incorrect default remote max message size, so\r\n // we need to adjust it here to avoid a failure when sending.\r\n // See: https://bugzilla.mozilla.org/show_bug.cgi?id=1425697\r\n if (browserDetails.browser === 'firefox' && browserDetails.version === 57) {\r\n maxMessageSize = 65535;\r\n }\r\n\r\n var match = _sdp2.default.matchPrefix(description.sdp, 'a=max-message-size:');\r\n if (match.length > 0) {\r\n maxMessageSize = parseInt(match[0].substr(19), 10);\r\n } else if (browserDetails.browser === 'firefox' && remoteIsFirefox !== -1) {\r\n // If the maximum message size is not present in the remote SDP and\r\n // both local and remote are Firefox, the remote peer can receive\r\n // ~2 GiB.\r\n maxMessageSize = 2147483637;\r\n }\r\n return maxMessageSize;\r\n };\r\n\r\n var origSetRemoteDescription = window.RTCPeerConnection.prototype.setRemoteDescription;\r\n window.RTCPeerConnection.prototype.setRemoteDescription = function () {\r\n this._sctp = null;\r\n\r\n if (sctpInDescription(arguments[0])) {\r\n // Check if the remote is FF.\r\n var isFirefox = getRemoteFirefoxVersion(arguments[0]);\r\n\r\n // Get the maximum message size the local peer is capable of sending\r\n var canSendMMS = getCanSendMaxMessageSize(isFirefox);\r\n\r\n // Get the maximum message size of the remote peer.\r\n var remoteMMS = getMaxMessageSize(arguments[0], isFirefox);\r\n\r\n // Determine final maximum message size\r\n var maxMessageSize = void 0;\r\n if (canSendMMS === 0 && remoteMMS === 0) {\r\n maxMessageSize = Number.POSITIVE_INFINITY;\r\n } else if (canSendMMS === 0 || remoteMMS === 0) {\r\n maxMessageSize = Math.max(canSendMMS, remoteMMS);\r\n } else {\r\n maxMessageSize = Math.min(canSendMMS, remoteMMS);\r\n }\r\n\r\n // Create a dummy RTCSctpTransport object and the 'maxMessageSize'\r\n // attribute.\r\n var sctp = {};\r\n Object.defineProperty(sctp, 'maxMessageSize', {\r\n get: function get() {\r\n return maxMessageSize;\r\n }\r\n });\r\n this._sctp = sctp;\r\n }\r\n\r\n return origSetRemoteDescription.apply(this, arguments);\r\n };\r\n }\r\n\r\n function shimSendThrowTypeError(window) {\r\n if (!(window.RTCPeerConnection && 'createDataChannel' in window.RTCPeerConnection.prototype)) {\r\n return;\r\n }\r\n\r\n // Note: Although Firefox >= 57 has a native implementation, the maximum\r\n // message size can be reset for all data channels at a later stage.\r\n // See: https://bugzilla.mozilla.org/show_bug.cgi?id=1426831\r\n\r\n function wrapDcSend(dc, pc) {\r\n var origDataChannelSend = dc.send;\r\n dc.send = function () {\r\n var data = arguments[0];\r\n var length = data.length || data.size || data.byteLength;\r\n if (dc.readyState === 'open' && pc.sctp && length > pc.sctp.maxMessageSize) {\r\n throw new TypeError('Message too large (can send a maximum of ' + pc.sctp.maxMessageSize + ' bytes)');\r\n }\r\n return origDataChannelSend.apply(dc, arguments);\r\n };\r\n }\r\n var origCreateDataChannel = window.RTCPeerConnection.prototype.createDataChannel;\r\n window.RTCPeerConnection.prototype.createDataChannel = function () {\r\n var dataChannel = origCreateDataChannel.apply(this, arguments);\r\n wrapDcSend(dataChannel, this);\r\n return dataChannel;\r\n };\r\n utils.wrapPeerConnectionEvent(window, 'datachannel', function (e) {\r\n wrapDcSend(e.channel, e.target);\r\n return e;\r\n });\r\n }\r\n\r\n }, { \"./utils\": 15, \"sdp\": 17 }], 7: [function (require, module, exports) {\r\n /*\r\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\r\n *\r\n * Use of this source code is governed by a BSD-style license\r\n * that can be found in the LICENSE file in the root of the source\r\n * tree.\r\n */\r\n /* eslint-env node */\r\n 'use strict';\r\n\r\n Object.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n });\r\n exports.shimGetDisplayMedia = exports.shimGetUserMedia = undefined;\r\n\r\n var _getusermedia = require('./getusermedia');\r\n\r\n Object.defineProperty(exports, 'shimGetUserMedia', {\r\n enumerable: true,\r\n get: function get() {\r\n return _getusermedia.shimGetUserMedia;\r\n }\r\n });\r\n\r\n var _getdisplaymedia = require('./getdisplaymedia');\r\n\r\n Object.defineProperty(exports, 'shimGetDisplayMedia', {\r\n enumerable: true,\r\n get: function get() {\r\n return _getdisplaymedia.shimGetDisplayMedia;\r\n }\r\n });\r\n exports.shimPeerConnection = shimPeerConnection;\r\n exports.shimReplaceTrack = shimReplaceTrack;\r\n\r\n var _utils = require('../utils');\r\n\r\n var utils = _interopRequireWildcard(_utils);\r\n\r\n var _filtericeservers = require('./filtericeservers');\r\n\r\n var _rtcpeerconnectionShim = require('rtcpeerconnection-shim');\r\n\r\n var _rtcpeerconnectionShim2 = _interopRequireDefault(_rtcpeerconnectionShim);\r\n\r\n function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\r\n\r\n function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\r\n\r\n function shimPeerConnection(window) {\r\n var browserDetails = utils.detectBrowser(window);\r\n\r\n if (window.RTCIceGatherer) {\r\n if (!window.RTCIceCandidate) {\r\n window.RTCIceCandidate = function (args) {\r\n return args;\r\n };\r\n }\r\n if (!window.RTCSessionDescription) {\r\n window.RTCSessionDescription = function (args) {\r\n return args;\r\n };\r\n }\r\n // this adds an additional event listener to MediaStrackTrack that signals\r\n // when a tracks enabled property was changed. Workaround for a bug in\r\n // addStream, see below. No longer required in 15025+\r\n if (browserDetails.version < 15025) {\r\n var origMSTEnabled = Object.getOwnPropertyDescriptor(window.MediaStreamTrack.prototype, 'enabled');\r\n Object.defineProperty(window.MediaStreamTrack.prototype, 'enabled', {\r\n set: function set(value) {\r\n origMSTEnabled.set.call(this, value);\r\n var ev = new Event('enabled');\r\n ev.enabled = value;\r\n this.dispatchEvent(ev);\r\n }\r\n });\r\n }\r\n }\r\n\r\n // ORTC defines the DTMF sender a bit different.\r\n // https://github.com/w3c/ortc/issues/714\r\n if (window.RTCRtpSender && !('dtmf' in window.RTCRtpSender.prototype)) {\r\n Object.defineProperty(window.RTCRtpSender.prototype, 'dtmf', {\r\n get: function get() {\r\n if (this._dtmf === undefined) {\r\n if (this.track.kind === 'audio') {\r\n this._dtmf = new window.RTCDtmfSender(this);\r\n } else if (this.track.kind === 'video') {\r\n this._dtmf = null;\r\n }\r\n }\r\n return this._dtmf;\r\n }\r\n });\r\n }\r\n // Edge currently only implements the RTCDtmfSender, not the\r\n // RTCDTMFSender alias. See http://draft.ortc.org/#rtcdtmfsender2*\r\n if (window.RTCDtmfSender && !window.RTCDTMFSender) {\r\n window.RTCDTMFSender = window.RTCDtmfSender;\r\n }\r\n\r\n var RTCPeerConnectionShim = (0, _rtcpeerconnectionShim2.default)(window, browserDetails.version);\r\n window.RTCPeerConnection = function (config) {\r\n if (config && config.iceServers) {\r\n // TODO: pass browserDetails.version again. See #903 for\r\n // why this is not done.\r\n config.iceServers = (0, _filtericeservers.filterIceServers)(config.iceServers);\r\n }\r\n return new RTCPeerConnectionShim(config);\r\n };\r\n window.RTCPeerConnection.prototype = RTCPeerConnectionShim.prototype;\r\n }\r\n\r\n function shimReplaceTrack(window) {\r\n // ORTC has replaceTrack -- https://github.com/w3c/ortc/issues/614\r\n if (window.RTCRtpSender && !('replaceTrack' in window.RTCRtpSender.prototype)) {\r\n window.RTCRtpSender.prototype.replaceTrack = window.RTCRtpSender.prototype.setTrack;\r\n }\r\n }\r\n\r\n }, { \"../utils\": 15, \"./filtericeservers\": 8, \"./getdisplaymedia\": 9, \"./getusermedia\": 10, \"rtcpeerconnection-shim\": 16 }], 8: [function (require, module, exports) {\r\n /*\r\n * Copyright (c) 2018 The WebRTC project authors. All Rights Reserved.\r\n *\r\n * Use of this source code is governed by a BSD-style license\r\n * that can be found in the LICENSE file in the root of the source\r\n * tree.\r\n */\r\n /* eslint-env node */\r\n 'use strict';\r\n\r\n Object.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n });\r\n exports.filterIceServers = filterIceServers;\r\n\r\n var _utils = require('../utils');\r\n\r\n var utils = _interopRequireWildcard(_utils);\r\n\r\n function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\r\n\r\n // Edge does not like\r\n // 1) stun: filtered after 14393 unless ?transport=udp is present\r\n // 2) turn: that does not have all of turn:host:port?transport=udp\r\n // 3) turn: with ipv6 addresses\r\n // 4) turn: occurring muliple times\r\n function filterIceServers(iceServers, edgeVersion) {\r\n var hasTurn = false;\r\n iceServers = JSON.parse(JSON.stringify(iceServers));\r\n return iceServers.filter(function (server) {\r\n if (server && (server.urls || server.url)) {\r\n var urls = server.urls || server.url;\r\n if (server.url && !server.urls) {\r\n utils.deprecated('RTCIceServer.url', 'RTCIceServer.urls');\r\n }\r\n var isString = typeof urls === 'string';\r\n if (isString) {\r\n urls = [urls];\r\n }\r\n urls = urls.filter(function (url) {\r\n var validTurn = url.startsWith('turn') && !url.startsWith('turn:[') && url.includes('transport=udp') && !hasTurn;\r\n\r\n if (validTurn) {\r\n hasTurn = true;\r\n return true;\r\n }\r\n return url.indexOf('stun:') === 0 && edgeVersion >= 14393 && url.indexOf('?transport=udp') === -1;\r\n });\r\n\r\n delete server.url;\r\n server.urls = isString ? urls[0] : urls;\r\n return !!urls.length;\r\n }\r\n });\r\n }\r\n\r\n }, { \"../utils\": 15 }], 9: [function (require, module, exports) {\r\n /*\r\n * Copyright (c) 2018 The adapter.js project authors. All Rights Reserved.\r\n *\r\n * Use of this source code is governed by a BSD-style license\r\n * that can be found in the LICENSE file in the root of the source\r\n * tree.\r\n */\r\n /* eslint-env node */\r\n 'use strict';\r\n\r\n Object.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n });\r\n exports.shimGetDisplayMedia = shimGetDisplayMedia;\r\n function shimGetDisplayMedia(window) {\r\n if (!('getDisplayMedia' in window.navigator)) {\r\n return;\r\n }\r\n if (!window.navigator.mediaDevices) {\r\n return;\r\n }\r\n if (window.navigator.mediaDevices && 'getDisplayMedia' in window.navigator.mediaDevices) {\r\n return;\r\n }\r\n window.navigator.mediaDevices.getDisplayMedia = window.navigator.getDisplayMedia.bind(window.navigator.mediaDevices);\r\n }\r\n\r\n }, {}], 10: [function (require, module, exports) {\r\n /*\r\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\r\n *\r\n * Use of this source code is governed by a BSD-style license\r\n * that can be found in the LICENSE file in the root of the source\r\n * tree.\r\n */\r\n /* eslint-env node */\r\n 'use strict';\r\n\r\n Object.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n });\r\n exports.shimGetUserMedia = shimGetUserMedia;\r\n function shimGetUserMedia(window) {\r\n var navigator = window && window.navigator;\r\n\r\n var shimError_ = function shimError_(e) {\r\n return {\r\n name: { PermissionDeniedError: 'NotAllowedError' }[e.name] || e.name,\r\n message: e.message,\r\n constraint: e.constraint,\r\n toString: function toString() {\r\n return this.name;\r\n }\r\n };\r\n };\r\n\r\n // getUserMedia error shim.\r\n var origGetUserMedia = navigator.mediaDevices.getUserMedia.bind(navigator.mediaDevices);\r\n navigator.mediaDevices.getUserMedia = function (c) {\r\n return origGetUserMedia(c).catch(function (e) {\r\n return Promise.reject(shimError_(e));\r\n });\r\n };\r\n }\r\n\r\n }, {}], 11: [function (require, module, exports) {\r\n /*\r\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\r\n *\r\n * Use of this source code is governed by a BSD-style license\r\n * that can be found in the LICENSE file in the root of the source\r\n * tree.\r\n */\r\n /* eslint-env node */\r\n 'use strict';\r\n\r\n Object.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n });\r\n exports.shimGetDisplayMedia = exports.shimGetUserMedia = undefined;\r\n\r\n var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\r\n\r\n var _getusermedia = require('./getusermedia');\r\n\r\n Object.defineProperty(exports, 'shimGetUserMedia', {\r\n enumerable: true,\r\n get: function get() {\r\n return _getusermedia.shimGetUserMedia;\r\n }\r\n });\r\n\r\n var _getdisplaymedia = require('./getdisplaymedia');\r\n\r\n Object.defineProperty(exports, 'shimGetDisplayMedia', {\r\n enumerable: true,\r\n get: function get() {\r\n return _getdisplaymedia.shimGetDisplayMedia;\r\n }\r\n });\r\n exports.shimOnTrack = shimOnTrack;\r\n exports.shimPeerConnection = shimPeerConnection;\r\n exports.shimSenderGetStats = shimSenderGetStats;\r\n exports.shimReceiverGetStats = shimReceiverGetStats;\r\n exports.shimRemoveStream = shimRemoveStream;\r\n exports.shimRTCDataChannel = shimRTCDataChannel;\r\n\r\n var _utils = require('../utils');\r\n\r\n var utils = _interopRequireWildcard(_utils);\r\n\r\n function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\r\n\r\n function shimOnTrack(window) {\r\n if ((typeof window === 'undefined' ? 'undefined' : _typeof(window)) === 'object' && window.RTCTrackEvent && 'receiver' in window.RTCTrackEvent.prototype && !('transceiver' in window.RTCTrackEvent.prototype)) {\r\n Object.defineProperty(window.RTCTrackEvent.prototype, 'transceiver', {\r\n get: function get() {\r\n return { receiver: this.receiver };\r\n }\r\n });\r\n }\r\n }\r\n\r\n function shimPeerConnection(window) {\r\n var browserDetails = utils.detectBrowser(window);\r\n\r\n if ((typeof window === 'undefined' ? 'undefined' : _typeof(window)) !== 'object' || !(window.RTCPeerConnection || window.mozRTCPeerConnection)) {\r\n return; // probably media.peerconnection.enabled=false in about:config\r\n }\r\n if (!window.RTCPeerConnection && window.mozRTCPeerConnection) {\r\n // very basic support for old versions.\r\n window.RTCPeerConnection = window.mozRTCPeerConnection;\r\n }\r\n\r\n // shim away need for obsolete RTCIceCandidate/RTCSessionDescription.\r\n ['setLocalDescription', 'setRemoteDescription', 'addIceCandidate'].forEach(function (method) {\r\n var nativeMethod = window.RTCPeerConnection.prototype[method];\r\n window.RTCPeerConnection.prototype[method] = function () {\r\n arguments[0] = new (method === 'addIceCandidate' ? window.RTCIceCandidate : window.RTCSessionDescription)(arguments[0]);\r\n return nativeMethod.apply(this, arguments);\r\n };\r\n });\r\n\r\n // support for addIceCandidate(null or undefined)\r\n var nativeAddIceCandidate = window.RTCPeerConnection.prototype.addIceCandidate;\r\n window.RTCPeerConnection.prototype.addIceCandidate = function () {\r\n if (!arguments[0]) {\r\n if (arguments[1]) {\r\n arguments[1].apply(null);\r\n }\r\n return Promise.resolve();\r\n }\r\n return nativeAddIceCandidate.apply(this, arguments);\r\n };\r\n\r\n var modernStatsTypes = {\r\n inboundrtp: 'inbound-rtp',\r\n outboundrtp: 'outbound-rtp',\r\n candidatepair: 'candidate-pair',\r\n localcandidate: 'local-candidate',\r\n remotecandidate: 'remote-candidate'\r\n };\r\n\r\n var nativeGetStats = window.RTCPeerConnection.prototype.getStats;\r\n window.RTCPeerConnection.prototype.getStats = function (selector, onSucc, onErr) {\r\n return nativeGetStats.apply(this, [selector || null]).then(function (stats) {\r\n if (browserDetails.version < 53 && !onSucc) {\r\n // Shim only promise getStats with spec-hyphens in type names\r\n // Leave callback version alone; misc old uses of forEach before Map\r\n try {\r\n stats.forEach(function (stat) {\r\n stat.type = modernStatsTypes[stat.type] || stat.type;\r\n });\r\n } catch (e) {\r\n if (e.name !== 'TypeError') {\r\n throw e;\r\n }\r\n // Avoid TypeError: \"type\" is read-only, in old versions. 34-43ish\r\n stats.forEach(function (stat, i) {\r\n stats.set(i, Object.assign({}, stat, {\r\n type: modernStatsTypes[stat.type] || stat.type\r\n }));\r\n });\r\n }\r\n }\r\n return stats;\r\n }).then(onSucc, onErr);\r\n };\r\n }\r\n\r\n function shimSenderGetStats(window) {\r\n if (!((typeof window === 'undefined' ? 'undefined' : _typeof(window)) === 'object' && window.RTCPeerConnection && window.RTCRtpSender)) {\r\n return;\r\n }\r\n if (window.RTCRtpSender && 'getStats' in window.RTCRtpSender.prototype) {\r\n return;\r\n }\r\n var origGetSenders = window.RTCPeerConnection.prototype.getSenders;\r\n if (origGetSenders) {\r\n window.RTCPeerConnection.prototype.getSenders = function () {\r\n var _this = this;\r\n\r\n var senders = origGetSenders.apply(this, []);\r\n senders.forEach(function (sender) {\r\n return sender._pc = _this;\r\n });\r\n return senders;\r\n };\r\n }\r\n\r\n var origAddTrack = window.RTCPeerConnection.prototype.addTrack;\r\n if (origAddTrack) {\r\n window.RTCPeerConnection.prototype.addTrack = function () {\r\n var sender = origAddTrack.apply(this, arguments);\r\n sender._pc = this;\r\n return sender;\r\n };\r\n }\r\n window.RTCRtpSender.prototype.getStats = function () {\r\n return this.track ? this._pc.getStats(this.track) : Promise.resolve(new Map());\r\n };\r\n }\r\n\r\n function shimReceiverGetStats(window) {\r\n if (!((typeof window === 'undefined' ? 'undefined' : _typeof(window)) === 'object' && window.RTCPeerConnection && window.RTCRtpSender)) {\r\n return;\r\n }\r\n if (window.RTCRtpSender && 'getStats' in window.RTCRtpReceiver.prototype) {\r\n return;\r\n }\r\n var origGetReceivers = window.RTCPeerConnection.prototype.getReceivers;\r\n if (origGetReceivers) {\r\n window.RTCPeerConnection.prototype.getReceivers = function () {\r\n var _this2 = this;\r\n\r\n var receivers = origGetReceivers.apply(this, []);\r\n receivers.forEach(function (receiver) {\r\n return receiver._pc = _this2;\r\n });\r\n return receivers;\r\n };\r\n }\r\n utils.wrapPeerConnectionEvent(window, 'track', function (e) {\r\n e.receiver._pc = e.srcElement;\r\n return e;\r\n });\r\n window.RTCRtpReceiver.prototype.getStats = function () {\r\n return this._pc.getStats(this.track);\r\n };\r\n }\r\n\r\n function shimRemoveStream(window) {\r\n if (!window.RTCPeerConnection || 'removeStream' in window.RTCPeerConnection.prototype) {\r\n return;\r\n }\r\n window.RTCPeerConnection.prototype.removeStream = function (stream) {\r\n var _this3 = this;\r\n\r\n utils.deprecated('removeStream', 'removeTrack');\r\n this.getSenders().forEach(function (sender) {\r\n if (sender.track && stream.getTracks().includes(sender.track)) {\r\n _this3.removeTrack(sender);\r\n }\r\n });\r\n };\r\n }\r\n\r\n function shimRTCDataChannel(window) {\r\n // rename DataChannel to RTCDataChannel (native fix in FF60):\r\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1173851\r\n if (window.DataChannel && !window.RTCDataChannel) {\r\n window.RTCDataChannel = window.DataChannel;\r\n }\r\n }\r\n\r\n }, { \"../utils\": 15, \"./getdisplaymedia\": 12, \"./getusermedia\": 13 }], 12: [function (require, module, exports) {\r\n /*\r\n * Copyright (c) 2018 The adapter.js project authors. All Rights Reserved.\r\n *\r\n * Use of this source code is governed by a BSD-style license\r\n * that can be found in the LICENSE file in the root of the source\r\n * tree.\r\n */\r\n /* eslint-env node */\r\n 'use strict';\r\n\r\n Object.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n });\r\n exports.shimGetDisplayMedia = shimGetDisplayMedia;\r\n function shimGetDisplayMedia(window, preferredMediaSource) {\r\n if (window.navigator.mediaDevices && 'getDisplayMedia' in window.navigator.mediaDevices) {\r\n return;\r\n }\r\n if (!window.navigator.mediaDevices) {\r\n return;\r\n }\r\n window.navigator.mediaDevices.getDisplayMedia = function (constraints) {\r\n if (!(constraints && constraints.video)) {\r\n var err = new DOMException('getDisplayMedia without video ' + 'constraints is undefined');\r\n err.name = 'NotFoundError';\r\n // from https://heycam.github.io/webidl/#idl-DOMException-error-names\r\n err.code = 8;\r\n return Promise.reject(err);\r\n }\r\n if (constraints.video === true) {\r\n constraints.video = { mediaSource: preferredMediaSource };\r\n } else {\r\n constraints.video.mediaSource = preferredMediaSource;\r\n }\r\n return window.navigator.mediaDevices.getUserMedia(constraints);\r\n };\r\n }\r\n\r\n }, {}], 13: [function (require, module, exports) {\r\n /*\r\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\r\n *\r\n * Use of this source code is governed by a BSD-style license\r\n * that can be found in the LICENSE file in the root of the source\r\n * tree.\r\n */\r\n /* eslint-env node */\r\n 'use strict';\r\n\r\n Object.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n });\r\n\r\n var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\r\n\r\n exports.shimGetUserMedia = shimGetUserMedia;\r\n\r\n var _utils = require('../utils');\r\n\r\n var utils = _interopRequireWildcard(_utils);\r\n\r\n function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\r\n\r\n function shimGetUserMedia(window) {\r\n var browserDetails = utils.detectBrowser(window);\r\n var navigator = window && window.navigator;\r\n var MediaStreamTrack = window && window.MediaStreamTrack;\r\n\r\n navigator.getUserMedia = function (constraints, onSuccess, onError) {\r\n // Replace Firefox 44+'s deprecation warning with unprefixed version.\r\n utils.deprecated('navigator.getUserMedia', 'navigator.mediaDevices.getUserMedia');\r\n navigator.mediaDevices.getUserMedia(constraints).then(onSuccess, onError);\r\n };\r\n\r\n if (!(browserDetails.version > 55 && 'autoGainControl' in navigator.mediaDevices.getSupportedConstraints())) {\r\n var remap = function remap(obj, a, b) {\r\n if (a in obj && !(b in obj)) {\r\n obj[b] = obj[a];\r\n delete obj[a];\r\n }\r\n };\r\n\r\n var nativeGetUserMedia = navigator.mediaDevices.getUserMedia.bind(navigator.mediaDevices);\r\n navigator.mediaDevices.getUserMedia = function (c) {\r\n if ((typeof c === 'undefined' ? 'undefined' : _typeof(c)) === 'object' && _typeof(c.audio) === 'object') {\r\n c = JSON.parse(JSON.stringify(c));\r\n remap(c.audio, 'autoGainControl', 'mozAutoGainControl');\r\n remap(c.audio, 'noiseSuppression', 'mozNoiseSuppression');\r\n }\r\n return nativeGetUserMedia(c);\r\n };\r\n\r\n if (MediaStreamTrack && MediaStreamTrack.prototype.getSettings) {\r\n var nativeGetSettings = MediaStreamTrack.prototype.getSettings;\r\n MediaStreamTrack.prototype.getSettings = function () {\r\n var obj = nativeGetSettings.apply(this, arguments);\r\n remap(obj, 'mozAutoGainControl', 'autoGainControl');\r\n remap(obj, 'mozNoiseSuppression', 'noiseSuppression');\r\n return obj;\r\n };\r\n }\r\n\r\n if (MediaStreamTrack && MediaStreamTrack.prototype.applyConstraints) {\r\n var nativeApplyConstraints = MediaStreamTrack.prototype.applyConstraints;\r\n MediaStreamTrack.prototype.applyConstraints = function (c) {\r\n if (this.kind === 'audio' && (typeof c === 'undefined' ? 'undefined' : _typeof(c)) === 'object') {\r\n c = JSON.parse(JSON.stringify(c));\r\n remap(c, 'autoGainControl', 'mozAutoGainControl');\r\n remap(c, 'noiseSuppression', 'mozNoiseSuppression');\r\n }\r\n return nativeApplyConstraints.apply(this, [c]);\r\n };\r\n }\r\n }\r\n }\r\n\r\n }, { \"../utils\": 15 }], 14: [function (require, module, exports) {\r\n /*\r\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\r\n *\r\n * Use of this source code is governed by a BSD-style license\r\n * that can be found in the LICENSE file in the root of the source\r\n * tree.\r\n */\r\n 'use strict';\r\n\r\n Object.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n });\r\n\r\n var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\r\n\r\n exports.shimLocalStreamsAPI = shimLocalStreamsAPI;\r\n exports.shimRemoteStreamsAPI = shimRemoteStreamsAPI;\r\n exports.shimCallbacksAPI = shimCallbacksAPI;\r\n exports.shimGetUserMedia = shimGetUserMedia;\r\n exports.shimRTCIceServerUrls = shimRTCIceServerUrls;\r\n exports.shimTrackEventTransceiver = shimTrackEventTransceiver;\r\n exports.shimCreateOfferLegacy = shimCreateOfferLegacy;\r\n\r\n var _utils = require('../utils');\r\n\r\n var utils = _interopRequireWildcard(_utils);\r\n\r\n function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\r\n\r\n function shimLocalStreamsAPI(window) {\r\n if ((typeof window === 'undefined' ? 'undefined' : _typeof(window)) !== 'object' || !window.RTCPeerConnection) {\r\n return;\r\n }\r\n if (!('getLocalStreams' in window.RTCPeerConnection.prototype)) {\r\n window.RTCPeerConnection.prototype.getLocalStreams = function () {\r\n if (!this._localStreams) {\r\n this._localStreams = [];\r\n }\r\n return this._localStreams;\r\n };\r\n }\r\n if (!('addStream' in window.RTCPeerConnection.prototype)) {\r\n var _addTrack = window.RTCPeerConnection.prototype.addTrack;\r\n window.RTCPeerConnection.prototype.addStream = function (stream) {\r\n var _this = this;\r\n\r\n if (!this._localStreams) {\r\n this._localStreams = [];\r\n }\r\n if (!this._localStreams.includes(stream)) {\r\n this._localStreams.push(stream);\r\n }\r\n stream.getTracks().forEach(function (track) {\r\n return _addTrack.call(_this, track, stream);\r\n });\r\n };\r\n\r\n window.RTCPeerConnection.prototype.addTrack = function (track, stream) {\r\n if (stream) {\r\n if (!this._localStreams) {\r\n this._localStreams = [stream];\r\n } else if (!this._localStreams.includes(stream)) {\r\n this._localStreams.push(stream);\r\n }\r\n }\r\n return _addTrack.call(this, track, stream);\r\n };\r\n }\r\n if (!('removeStream' in window.RTCPeerConnection.prototype)) {\r\n window.RTCPeerConnection.prototype.removeStream = function (stream) {\r\n var _this2 = this;\r\n\r\n if (!this._localStreams) {\r\n this._localStreams = [];\r\n }\r\n var index = this._localStreams.indexOf(stream);\r\n if (index === -1) {\r\n return;\r\n }\r\n this._localStreams.splice(index, 1);\r\n var tracks = stream.getTracks();\r\n this.getSenders().forEach(function (sender) {\r\n if (tracks.includes(sender.track)) {\r\n _this2.removeTrack(sender);\r\n }\r\n });\r\n };\r\n }\r\n }\r\n\r\n function shimRemoteStreamsAPI(window) {\r\n if ((typeof window === 'undefined' ? 'undefined' : _typeof(window)) !== 'object' || !window.RTCPeerConnection) {\r\n return;\r\n }\r\n if (!('getRemoteStreams' in window.RTCPeerConnection.prototype)) {\r\n window.RTCPeerConnection.prototype.getRemoteStreams = function () {\r\n return this._remoteStreams ? this._remoteStreams : [];\r\n };\r\n }\r\n if (!('onaddstream' in window.RTCPeerConnection.prototype)) {\r\n Object.defineProperty(window.RTCPeerConnection.prototype, 'onaddstream', {\r\n get: function get() {\r\n return this._onaddstream;\r\n },\r\n set: function set(f) {\r\n var _this3 = this;\r\n\r\n if (this._onaddstream) {\r\n this.removeEventListener('addstream', this._onaddstream);\r\n this.removeEventListener('track', this._onaddstreampoly);\r\n }\r\n this.addEventListener('addstream', this._onaddstream = f);\r\n this.addEventListener('track', this._onaddstreampoly = function (e) {\r\n e.streams.forEach(function (stream) {\r\n if (!_this3._remoteStreams) {\r\n _this3._remoteStreams = [];\r\n }\r\n if (_this3._remoteStreams.includes(stream)) {\r\n return;\r\n }\r\n _this3._remoteStreams.push(stream);\r\n var event = new Event('addstream');\r\n event.stream = stream;\r\n _this3.dispatchEvent(event);\r\n });\r\n });\r\n }\r\n });\r\n var origSetRemoteDescription = window.RTCPeerConnection.prototype.setRemoteDescription;\r\n window.RTCPeerConnection.prototype.setRemoteDescription = function () {\r\n var pc = this;\r\n if (!this._onaddstreampoly) {\r\n this.addEventListener('track', this._onaddstreampoly = function (e) {\r\n e.streams.forEach(function (stream) {\r\n if (!pc._remoteStreams) {\r\n pc._remoteStreams = [];\r\n }\r\n if (pc._remoteStreams.indexOf(stream) >= 0) {\r\n return;\r\n }\r\n pc._remoteStreams.push(stream);\r\n var event = new Event('addstream');\r\n event.stream = stream;\r\n pc.dispatchEvent(event);\r\n });\r\n });\r\n }\r\n return origSetRemoteDescription.apply(pc, arguments);\r\n };\r\n }\r\n }\r\n\r\n function shimCallbacksAPI(window) {\r\n if ((typeof window === 'undefined' ? 'undefined' : _typeof(window)) !== 'object' || !window.RTCPeerConnection) {\r\n return;\r\n }\r\n var prototype = window.RTCPeerConnection.prototype;\r\n var createOffer = prototype.createOffer;\r\n var createAnswer = prototype.createAnswer;\r\n var setLocalDescription = prototype.setLocalDescription;\r\n var setRemoteDescription = prototype.setRemoteDescription;\r\n var addIceCandidate = prototype.addIceCandidate;\r\n\r\n prototype.createOffer = function (successCallback, failureCallback) {\r\n var options = arguments.length >= 2 ? arguments[2] : arguments[0];\r\n var promise = createOffer.apply(this, [options]);\r\n if (!failureCallback) {\r\n return promise;\r\n }\r\n promise.then(successCallback, failureCallback);\r\n return Promise.resolve();\r\n };\r\n\r\n prototype.createAnswer = function (successCallback, failureCallback) {\r\n var options = arguments.length >= 2 ? arguments[2] : arguments[0];\r\n var promise = createAnswer.apply(this, [options]);\r\n if (!failureCallback) {\r\n return promise;\r\n }\r\n promise.then(successCallback, failureCallback);\r\n return Promise.resolve();\r\n };\r\n\r\n var withCallback = function withCallback(description, successCallback, failureCallback) {\r\n var promise = setLocalDescription.apply(this, [description]);\r\n if (!failureCallback) {\r\n return promise;\r\n }\r\n promise.then(successCallback, failureCallback);\r\n return Promise.resolve();\r\n };\r\n prototype.setLocalDescription = withCallback;\r\n\r\n withCallback = function withCallback(description, successCallback, failureCallback) {\r\n var promise = setRemoteDescription.apply(this, [description]);\r\n if (!failureCallback) {\r\n return promise;\r\n }\r\n promise.then(successCallback, failureCallback);\r\n return Promise.resolve();\r\n };\r\n prototype.setRemoteDescription = withCallback;\r\n\r\n withCallback = function withCallback(candidate, successCallback, failureCallback) {\r\n var promise = addIceCandidate.apply(this, [candidate]);\r\n if (!failureCallback) {\r\n return promise;\r\n }\r\n promise.then(successCallback, failureCallback);\r\n return Promise.resolve();\r\n };\r\n prototype.addIceCandidate = withCallback;\r\n }\r\n\r\n function shimGetUserMedia(window) {\r\n var navigator = window && window.navigator;\r\n\r\n if (!navigator.getUserMedia && navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {\r\n navigator.getUserMedia = function (constraints, cb, errcb) {\r\n navigator.mediaDevices.getUserMedia(constraints).then(cb, errcb);\r\n }.bind(navigator);\r\n }\r\n }\r\n\r\n function shimRTCIceServerUrls(window) {\r\n // migrate from non-spec RTCIceServer.url to RTCIceServer.urls\r\n var OrigPeerConnection = window.RTCPeerConnection;\r\n window.RTCPeerConnection = function (pcConfig, pcConstraints) {\r\n if (pcConfig && pcConfig.iceServers) {\r\n var newIceServers = [];\r\n for (var i = 0; i < pcConfig.iceServers.length; i++) {\r\n var server = pcConfig.iceServers[i];\r\n if (!server.hasOwnProperty('urls') && server.hasOwnProperty('url')) {\r\n utils.deprecated('RTCIceServer.url', 'RTCIceServer.urls');\r\n server = JSON.parse(JSON.stringify(server));\r\n server.urls = server.url;\r\n delete server.url;\r\n newIceServers.push(server);\r\n } else {\r\n newIceServers.push(pcConfig.iceServers[i]);\r\n }\r\n }\r\n pcConfig.iceServers = newIceServers;\r\n }\r\n return new OrigPeerConnection(pcConfig, pcConstraints);\r\n };\r\n window.RTCPeerConnection.prototype = OrigPeerConnection.prototype;\r\n // wrap static methods. Currently just generateCertificate.\r\n if ('generateCertificate' in window.RTCPeerConnection) {\r\n Object.defineProperty(window.RTCPeerConnection, 'generateCertificate', {\r\n get: function get() {\r\n return OrigPeerConnection.generateCertificate;\r\n }\r\n });\r\n }\r\n }\r\n\r\n function shimTrackEventTransceiver(window) {\r\n // Add event.transceiver member over deprecated event.receiver\r\n if ((typeof window === 'undefined' ? 'undefined' : _typeof(window)) === 'object' && window.RTCPeerConnection && 'receiver' in window.RTCTrackEvent.prototype &&\r\n // can't check 'transceiver' in window.RTCTrackEvent.prototype, as it is\r\n // defined for some reason even when window.RTCTransceiver is not.\r\n !window.RTCTransceiver) {\r\n Object.defineProperty(window.RTCTrackEvent.prototype, 'transceiver', {\r\n get: function get() {\r\n return { receiver: this.receiver };\r\n }\r\n });\r\n }\r\n }\r\n\r\n function shimCreateOfferLegacy(window) {\r\n var origCreateOffer = window.RTCPeerConnection.prototype.createOffer;\r\n window.RTCPeerConnection.prototype.createOffer = function (offerOptions) {\r\n if (offerOptions) {\r\n if (typeof offerOptions.offerToReceiveAudio !== 'undefined') {\r\n // support bit values\r\n offerOptions.offerToReceiveAudio = !!offerOptions.offerToReceiveAudio;\r\n }\r\n var audioTransceiver = this.getTransceivers().find(function (transceiver) {\r\n return transceiver.sender.track && transceiver.sender.track.kind === 'audio';\r\n });\r\n if (offerOptions.offerToReceiveAudio === false && audioTransceiver) {\r\n if (audioTransceiver.direction === 'sendrecv') {\r\n if (audioTransceiver.setDirection) {\r\n audioTransceiver.setDirection('sendonly');\r\n } else {\r\n audioTransceiver.direction = 'sendonly';\r\n }\r\n } else if (audioTransceiver.direction === 'recvonly') {\r\n if (audioTransceiver.setDirection) {\r\n audioTransceiver.setDirection('inactive');\r\n } else {\r\n audioTransceiver.direction = 'inactive';\r\n }\r\n }\r\n } else if (offerOptions.offerToReceiveAudio === true && !audioTransceiver) {\r\n this.addTransceiver('audio');\r\n }\r\n\r\n if (typeof offerOptions.offerToReceiveVideo !== 'undefined') {\r\n // support bit values\r\n offerOptions.offerToReceiveVideo = !!offerOptions.offerToReceiveVideo;\r\n }\r\n var videoTransceiver = this.getTransceivers().find(function (transceiver) {\r\n return transceiver.sender.track && transceiver.sender.track.kind === 'video';\r\n });\r\n if (offerOptions.offerToReceiveVideo === false && videoTransceiver) {\r\n if (videoTransceiver.direction === 'sendrecv') {\r\n if (videoTransceiver.setDirection) {\r\n videoTransceiver.setDirection('sendonly');\r\n } else {\r\n videoTransceiver.direction = 'sendonly';\r\n }\r\n } else if (videoTransceiver.direction === 'recvonly') {\r\n if (videoTransceiver.setDirection) {\r\n videoTransceiver.setDirection('inactive');\r\n } else {\r\n videoTransceiver.direction = 'inactive';\r\n }\r\n }\r\n } else if (offerOptions.offerToReceiveVideo === true && !videoTransceiver) {\r\n this.addTransceiver('video');\r\n }\r\n }\r\n return origCreateOffer.apply(this, arguments);\r\n };\r\n }\r\n\r\n }, { \"../utils\": 15 }], 15: [function (require, module, exports) {\r\n /*\r\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\r\n *\r\n * Use of this source code is governed by a BSD-style license\r\n * that can be found in the LICENSE file in the root of the source\r\n * tree.\r\n */\r\n /* eslint-env node */\r\n 'use strict';\r\n\r\n Object.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n });\r\n\r\n var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\r\n\r\n exports.extractVersion = extractVersion;\r\n exports.wrapPeerConnectionEvent = wrapPeerConnectionEvent;\r\n exports.disableLog = disableLog;\r\n exports.disableWarnings = disableWarnings;\r\n exports.log = log;\r\n exports.deprecated = deprecated;\r\n exports.detectBrowser = detectBrowser;\r\n var logDisabled_ = true;\r\n var deprecationWarnings_ = true;\r\n\r\n /**\r\n * Extract browser version out of the provided user agent string.\r\n *\r\n * @param {!string} uastring userAgent string.\r\n * @param {!string} expr Regular expression used as match criteria.\r\n * @param {!number} pos position in the version string to be returned.\r\n * @return {!number} browser version.\r\n */\r\n function extractVersion(uastring, expr, pos) {\r\n var match = uastring.match(expr);\r\n return match && match.length >= pos && parseInt(match[pos], 10);\r\n }\r\n\r\n // Wraps the peerconnection event eventNameToWrap in a function\r\n // which returns the modified event object (or false to prevent\r\n // the event).\r\n function wrapPeerConnectionEvent(window, eventNameToWrap, wrapper) {\r\n if (!window.RTCPeerConnection) {\r\n return;\r\n }\r\n var proto = window.RTCPeerConnection.prototype;\r\n var nativeAddEventListener = proto.addEventListener;\r\n proto.addEventListener = function (nativeEventName, cb) {\r\n if (nativeEventName !== eventNameToWrap) {\r\n return nativeAddEventListener.apply(this, arguments);\r\n }\r\n var wrappedCallback = function wrappedCallback(e) {\r\n var modifiedEvent = wrapper(e);\r\n if (modifiedEvent) {\r\n cb(modifiedEvent);\r\n }\r\n };\r\n this._eventMap = this._eventMap || {};\r\n this._eventMap[cb] = wrappedCallback;\r\n return nativeAddEventListener.apply(this, [nativeEventName, wrappedCallback]);\r\n };\r\n\r\n var nativeRemoveEventListener = proto.removeEventListener;\r\n proto.removeEventListener = function (nativeEventName, cb) {\r\n if (nativeEventName !== eventNameToWrap || !this._eventMap || !this._eventMap[cb]) {\r\n return nativeRemoveEventListener.apply(this, arguments);\r\n }\r\n var unwrappedCb = this._eventMap[cb];\r\n delete this._eventMap[cb];\r\n return nativeRemoveEventListener.apply(this, [nativeEventName, unwrappedCb]);\r\n };\r\n\r\n Object.defineProperty(proto, 'on' + eventNameToWrap, {\r\n get: function get() {\r\n return this['_on' + eventNameToWrap];\r\n },\r\n set: function set(cb) {\r\n if (this['_on' + eventNameToWrap]) {\r\n this.removeEventListener(eventNameToWrap, this['_on' + eventNameToWrap]);\r\n delete this['_on' + eventNameToWrap];\r\n }\r\n if (cb) {\r\n this.addEventListener(eventNameToWrap, this['_on' + eventNameToWrap] = cb);\r\n }\r\n },\r\n\r\n enumerable: true,\r\n configurable: true\r\n });\r\n }\r\n\r\n function disableLog(bool) {\r\n if (typeof bool !== 'boolean') {\r\n return new Error('Argument type: ' + (typeof bool === 'undefined' ? 'undefined' : _typeof(bool)) + '. Please use a boolean.');\r\n }\r\n logDisabled_ = bool;\r\n return bool ? 'adapter.js logging disabled' : 'adapter.js logging enabled';\r\n }\r\n\r\n /**\r\n * Disable or enable deprecation warnings\r\n * @param {!boolean} bool set to true to disable warnings.\r\n */\r\n function disableWarnings(bool) {\r\n if (typeof bool !== 'boolean') {\r\n return new Error('Argument type: ' + (typeof bool === 'undefined' ? 'undefined' : _typeof(bool)) + '. Please use a boolean.');\r\n }\r\n deprecationWarnings_ = !bool;\r\n return 'adapter.js deprecation warnings ' + (bool ? 'disabled' : 'enabled');\r\n }\r\n\r\n function log() {\r\n if ((typeof window === 'undefined' ? 'undefined' : _typeof(window)) === 'object') {\r\n if (logDisabled_) {\r\n return;\r\n }\r\n if (typeof console !== 'undefined' && typeof console.log === 'function') {\r\n console.log.apply(console, arguments);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Shows a deprecation warning suggesting the modern and spec-compatible API.\r\n */\r\n function deprecated(oldMethod, newMethod) {\r\n if (!deprecationWarnings_) {\r\n return;\r\n }\r\n console.warn(oldMethod + ' is deprecated, please use ' + newMethod + ' instead.');\r\n }\r\n\r\n /**\r\n * Browser detector.\r\n *\r\n * @return {object} result containing browser and version\r\n * properties.\r\n */\r\n function detectBrowser(window) {\r\n var navigator = window.navigator;\r\n\r\n // Returned result object.\r\n\r\n var result = { browser: null, version: null };\r\n\r\n // Fail early if it's not a browser\r\n if (typeof window === 'undefined' || !window.navigator) {\r\n result.browser = 'Not a browser.';\r\n return result;\r\n }\r\n\r\n if (navigator.mozGetUserMedia) {\r\n // Firefox.\r\n result.browser = 'firefox';\r\n result.version = extractVersion(navigator.userAgent, /Firefox\\/(\\d+)\\./, 1);\r\n } else if (navigator.webkitGetUserMedia) {\r\n // Chrome, Chromium, Webview, Opera.\r\n // Version matches Chrome/WebRTC version.\r\n result.browser = 'chrome';\r\n result.version = extractVersion(navigator.userAgent, /Chrom(e|ium)\\/(\\d+)\\./, 2);\r\n } else if (navigator.mediaDevices && navigator.userAgent.match(/Edge\\/(\\d+).(\\d+)$/)) {\r\n // Edge.\r\n result.browser = 'edge';\r\n result.version = extractVersion(navigator.userAgent, /Edge\\/(\\d+).(\\d+)$/, 2);\r\n } else if (window.RTCPeerConnection && navigator.userAgent.match(/AppleWebKit\\/(\\d+)\\./)) {\r\n // Safari.\r\n result.browser = 'safari';\r\n result.version = extractVersion(navigator.userAgent, /AppleWebKit\\/(\\d+)\\./, 1);\r\n } else {\r\n // Default fallthrough: not supported.\r\n result.browser = 'Not a supported browser.';\r\n return result;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n }, {}], 16: [function (require, module, exports) {\r\n /*\r\n * Copyright (c) 2017 The WebRTC project authors. All Rights Reserved.\r\n *\r\n * Use of this source code is governed by a BSD-style license\r\n * that can be found in the LICENSE file in the root of the source\r\n * tree.\r\n */\r\n /* eslint-env node */\r\n 'use strict';\r\n\r\n var SDPUtils = require('sdp');\r\n\r\n function fixStatsType(stat) {\r\n return {\r\n inboundrtp: 'inbound-rtp',\r\n outboundrtp: 'outbound-rtp',\r\n candidatepair: 'candidate-pair',\r\n localcandidate: 'local-candidate',\r\n remotecandidate: 'remote-candidate'\r\n }[stat.type] || stat.type;\r\n }\r\n\r\n function writeMediaSection(transceiver, caps, type, stream, dtlsRole) {\r\n var sdp = SDPUtils.writeRtpDescription(transceiver.kind, caps);\r\n\r\n // Map ICE parameters (ufrag, pwd) to SDP.\r\n sdp += SDPUtils.writeIceParameters(\r\n transceiver.iceGatherer.getLocalParameters());\r\n\r\n // Map DTLS parameters to SDP.\r\n sdp += SDPUtils.writeDtlsParameters(\r\n transceiver.dtlsTransport.getLocalParameters(),\r\n type === 'offer' ? 'actpass' : dtlsRole || 'active');\r\n\r\n sdp += 'a=mid:' + transceiver.mid + '\\r\\n';\r\n\r\n if (transceiver.rtpSender && transceiver.rtpReceiver) {\r\n sdp += 'a=sendrecv\\r\\n';\r\n } else if (transceiver.rtpSender) {\r\n sdp += 'a=sendonly\\r\\n';\r\n } else if (transceiver.rtpReceiver) {\r\n sdp += 'a=recvonly\\r\\n';\r\n } else {\r\n sdp += 'a=inactive\\r\\n';\r\n }\r\n\r\n if (transceiver.rtpSender) {\r\n var trackId = transceiver.rtpSender._initialTrackId ||\r\n transceiver.rtpSender.track.id;\r\n transceiver.rtpSender._initialTrackId = trackId;\r\n // spec.\r\n var msid = 'msid:' + (stream ? stream.id : '-') + ' ' +\r\n trackId + '\\r\\n';\r\n sdp += 'a=' + msid;\r\n // for Chrome. Legacy should no longer be required.\r\n sdp += 'a=ssrc:' + transceiver.sendEncodingParameters[0].ssrc +\r\n ' ' + msid;\r\n\r\n // RTX\r\n if (transceiver.sendEncodingParameters[0].rtx) {\r\n sdp += 'a=ssrc:' + transceiver.sendEncodingParameters[0].rtx.ssrc +\r\n ' ' + msid;\r\n sdp += 'a=ssrc-group:FID ' +\r\n transceiver.sendEncodingParameters[0].ssrc + ' ' +\r\n transceiver.sendEncodingParameters[0].rtx.ssrc +\r\n '\\r\\n';\r\n }\r\n }\r\n // FIXME: this should be written by writeRtpDescription.\r\n sdp += 'a=ssrc:' + transceiver.sendEncodingParameters[0].ssrc +\r\n ' cname:' + SDPUtils.localCName + '\\r\\n';\r\n if (transceiver.rtpSender && transceiver.sendEncodingParameters[0].rtx) {\r\n sdp += 'a=ssrc:' + transceiver.sendEncodingParameters[0].rtx.ssrc +\r\n ' cname:' + SDPUtils.localCName + '\\r\\n';\r\n }\r\n return sdp;\r\n }\r\n\r\n // Edge does not like\r\n // 1) stun: filtered after 14393 unless ?transport=udp is present\r\n // 2) turn: that does not have all of turn:host:port?transport=udp\r\n // 3) turn: with ipv6 addresses\r\n // 4) turn: occurring muliple times\r\n function filterIceServers(iceServers, edgeVersion) {\r\n var hasTurn = false;\r\n iceServers = JSON.parse(JSON.stringify(iceServers));\r\n return iceServers.filter(function (server) {\r\n if (server && (server.urls || server.url)) {\r\n var urls = server.urls || server.url;\r\n if (server.url && !server.urls) {\r\n console.warn('RTCIceServer.url is deprecated! Use urls instead.');\r\n }\r\n var isString = typeof urls === 'string';\r\n if (isString) {\r\n urls = [urls];\r\n }\r\n urls = urls.filter(function (url) {\r\n var validTurn = url.indexOf('turn:') === 0 &&\r\n url.indexOf('transport=udp') !== -1 &&\r\n url.indexOf('turn:[') === -1 &&\r\n !hasTurn;\r\n\r\n if (validTurn) {\r\n hasTurn = true;\r\n return true;\r\n }\r\n return url.indexOf('stun:') === 0 && edgeVersion >= 14393 &&\r\n url.indexOf('?transport=udp') === -1;\r\n });\r\n\r\n delete server.url;\r\n server.urls = isString ? urls[0] : urls;\r\n return !!urls.length;\r\n }\r\n });\r\n }\r\n\r\n // Determines the intersection of local and remote capabilities.\r\n function getCommonCapabilities(localCapabilities, remoteCapabilities) {\r\n var commonCapabilities = {\r\n codecs: [],\r\n headerExtensions: [],\r\n fecMechanisms: []\r\n };\r\n\r\n var findCodecByPayloadType = function (pt, codecs) {\r\n pt = parseInt(pt, 10);\r\n for (var i = 0; i < codecs.length; i++) {\r\n if (codecs[i].payloadType === pt ||\r\n codecs[i].preferredPayloadType === pt) {\r\n return codecs[i];\r\n }\r\n }\r\n };\r\n\r\n var rtxCapabilityMatches = function (lRtx, rRtx, lCodecs, rCodecs) {\r\n var lCodec = findCodecByPayloadType(lRtx.parameters.apt, lCodecs);\r\n var rCodec = findCodecByPayloadType(rRtx.parameters.apt, rCodecs);\r\n return lCodec && rCodec &&\r\n lCodec.name.toLowerCase() === rCodec.name.toLowerCase();\r\n };\r\n\r\n localCapabilities.codecs.forEach(function (lCodec) {\r\n for (var i = 0; i < remoteCapabilities.codecs.length; i++) {\r\n var rCodec = remoteCapabilities.codecs[i];\r\n if (lCodec.name.toLowerCase() === rCodec.name.toLowerCase() &&\r\n lCodec.clockRate === rCodec.clockRate) {\r\n if (lCodec.name.toLowerCase() === 'rtx' &&\r\n lCodec.parameters && rCodec.parameters.apt) {\r\n // for RTX we need to find the local rtx that has a apt\r\n // which points to the same local codec as the remote one.\r\n if (!rtxCapabilityMatches(lCodec, rCodec,\r\n localCapabilities.codecs, remoteCapabilities.codecs)) {\r\n continue;\r\n }\r\n }\r\n rCodec = JSON.parse(JSON.stringify(rCodec)); // deepcopy\r\n // number of channels is the highest common number of channels\r\n rCodec.numChannels = Math.min(lCodec.numChannels,\r\n rCodec.numChannels);\r\n // push rCodec so we reply with offerer payload type\r\n commonCapabilities.codecs.push(rCodec);\r\n\r\n // determine common feedback mechanisms\r\n rCodec.rtcpFeedback = rCodec.rtcpFeedback.filter(function (fb) {\r\n for (var j = 0; j < lCodec.rtcpFeedback.length; j++) {\r\n if (lCodec.rtcpFeedback[j].type === fb.type &&\r\n lCodec.rtcpFeedback[j].parameter === fb.parameter) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n });\r\n // FIXME: also need to determine .parameters\r\n // see https://github.com/openpeer/ortc/issues/569\r\n break;\r\n }\r\n }\r\n });\r\n\r\n localCapabilities.headerExtensions.forEach(function (lHeaderExtension) {\r\n for (var i = 0; i < remoteCapabilities.headerExtensions.length;\r\n i++) {\r\n var rHeaderExtension = remoteCapabilities.headerExtensions[i];\r\n if (lHeaderExtension.uri === rHeaderExtension.uri) {\r\n commonCapabilities.headerExtensions.push(rHeaderExtension);\r\n break;\r\n }\r\n }\r\n });\r\n\r\n // FIXME: fecMechanisms\r\n return commonCapabilities;\r\n }\r\n\r\n // is action=setLocalDescription with type allowed in signalingState\r\n function isActionAllowedInSignalingState(action, type, signalingState) {\r\n return {\r\n offer: {\r\n setLocalDescription: ['stable', 'have-local-offer'],\r\n setRemoteDescription: ['stable', 'have-remote-offer']\r\n },\r\n answer: {\r\n setLocalDescription: ['have-remote-offer', 'have-local-pranswer'],\r\n setRemoteDescription: ['have-local-offer', 'have-remote-pranswer']\r\n }\r\n }[type][action].indexOf(signalingState) !== -1;\r\n }\r\n\r\n function maybeAddCandidate(iceTransport, candidate) {\r\n // Edge's internal representation adds some fields therefore\r\n // not all fieldѕ are taken into account.\r\n var alreadyAdded = iceTransport.getRemoteCandidates()\r\n .find(function (remoteCandidate) {\r\n return candidate.foundation === remoteCandidate.foundation &&\r\n candidate.ip === remoteCandidate.ip &&\r\n candidate.port === remoteCandidate.port &&\r\n candidate.priority === remoteCandidate.priority &&\r\n candidate.protocol === remoteCandidate.protocol &&\r\n candidate.type === remoteCandidate.type;\r\n });\r\n if (!alreadyAdded) {\r\n iceTransport.addRemoteCandidate(candidate);\r\n }\r\n return !alreadyAdded;\r\n }\r\n\r\n\r\n function makeError(name, description) {\r\n var e = new Error(description);\r\n e.name = name;\r\n // legacy error codes from https://heycam.github.io/webidl/#idl-DOMException-error-names\r\n e.code = {\r\n NotSupportedError: 9,\r\n InvalidStateError: 11,\r\n InvalidAccessError: 15,\r\n TypeError: undefined,\r\n OperationError: undefined\r\n }[name];\r\n return e;\r\n }\r\n\r\n module.exports = function (window, edgeVersion) {\r\n // https://w3c.github.io/mediacapture-main/#mediastream\r\n // Helper function to add the track to the stream and\r\n // dispatch the event ourselves.\r\n function addTrackToStreamAndFireEvent(track, stream) {\r\n stream.addTrack(track);\r\n stream.dispatchEvent(new window.MediaStreamTrackEvent('addtrack',\r\n { track: track }));\r\n }\r\n\r\n function removeTrackFromStreamAndFireEvent(track, stream) {\r\n stream.removeTrack(track);\r\n stream.dispatchEvent(new window.MediaStreamTrackEvent('removetrack',\r\n { track: track }));\r\n }\r\n\r\n function fireAddTrack(pc, track, receiver, streams) {\r\n var trackEvent = new Event('track');\r\n trackEvent.track = track;\r\n trackEvent.receiver = receiver;\r\n trackEvent.transceiver = { receiver: receiver };\r\n trackEvent.streams = streams;\r\n window.setTimeout(function () {\r\n pc._dispatchEvent('track', trackEvent);\r\n });\r\n }\r\n\r\n var RTCPeerConnection = function (config) {\r\n var pc = this;\r\n\r\n var _eventTarget = document.createDocumentFragment();\r\n ['addEventListener', 'removeEventListener', 'dispatchEvent']\r\n .forEach(function (method) {\r\n pc[method] = _eventTarget[method].bind(_eventTarget);\r\n });\r\n\r\n this.canTrickleIceCandidates = null;\r\n\r\n this.needNegotiation = false;\r\n\r\n this.localStreams = [];\r\n this.remoteStreams = [];\r\n\r\n this._localDescription = null;\r\n this._remoteDescription = null;\r\n\r\n this.signalingState = 'stable';\r\n this.iceConnectionState = 'new';\r\n this.connectionState = 'new';\r\n this.iceGatheringState = 'new';\r\n\r\n config = JSON.parse(JSON.stringify(config || {}));\r\n\r\n this.usingBundle = config.bundlePolicy === 'max-bundle';\r\n if (config.rtcpMuxPolicy === 'negotiate') {\r\n throw (makeError('NotSupportedError',\r\n 'rtcpMuxPolicy \\'negotiate\\' is not supported'));\r\n } else if (!config.rtcpMuxPolicy) {\r\n config.rtcpMuxPolicy = 'require';\r\n }\r\n\r\n switch (config.iceTransportPolicy) {\r\n case 'all':\r\n case 'relay':\r\n break;\r\n default:\r\n config.iceTransportPolicy = 'all';\r\n break;\r\n }\r\n\r\n switch (config.bundlePolicy) {\r\n case 'balanced':\r\n case 'max-compat':\r\n case 'max-bundle':\r\n break;\r\n default:\r\n config.bundlePolicy = 'balanced';\r\n break;\r\n }\r\n\r\n config.iceServers = filterIceServers(config.iceServers || [], edgeVersion);\r\n\r\n this._iceGatherers = [];\r\n if (config.iceCandidatePoolSize) {\r\n for (var i = config.iceCandidatePoolSize; i > 0; i--) {\r\n this._iceGatherers.push(new window.RTCIceGatherer({\r\n iceServers: config.iceServers,\r\n gatherPolicy: config.iceTransportPolicy\r\n }));\r\n }\r\n } else {\r\n config.iceCandidatePoolSize = 0;\r\n }\r\n\r\n this._config = config;\r\n\r\n // per-track iceGathers, iceTransports, dtlsTransports, rtpSenders, ...\r\n // everything that is needed to describe a SDP m-line.\r\n this.transceivers = [];\r\n\r\n this._sdpSessionId = SDPUtils.generateSessionId();\r\n this._sdpSessionVersion = 0;\r\n\r\n this._dtlsRole = undefined; // role for a=setup to use in answers.\r\n\r\n this._isClosed = false;\r\n };\r\n\r\n Object.defineProperty(RTCPeerConnection.prototype, 'localDescription', {\r\n configurable: true,\r\n get: function () {\r\n return this._localDescription;\r\n }\r\n });\r\n Object.defineProperty(RTCPeerConnection.prototype, 'remoteDescription', {\r\n configurable: true,\r\n get: function () {\r\n return this._remoteDescription;\r\n }\r\n });\r\n\r\n // set up event handlers on prototype\r\n RTCPeerConnection.prototype.onicecandidate = null;\r\n RTCPeerConnection.prototype.onaddstream = null;\r\n RTCPeerConnection.prototype.ontrack = null;\r\n RTCPeerConnection.prototype.onremovestream = null;\r\n RTCPeerConnection.prototype.onsignalingstatechange = null;\r\n RTCPeerConnection.prototype.oniceconnectionstatechange = null;\r\n RTCPeerConnection.prototype.onconnectionstatechange = null;\r\n RTCPeerConnection.prototype.onicegatheringstatechange = null;\r\n RTCPeerConnection.prototype.onnegotiationneeded = null;\r\n RTCPeerConnection.prototype.ondatachannel = null;\r\n\r\n RTCPeerConnection.prototype._dispatchEvent = function (name, event) {\r\n if (this._isClosed) {\r\n return;\r\n }\r\n this.dispatchEvent(event);\r\n if (typeof this['on' + name] === 'function') {\r\n this['on' + name](event);\r\n }\r\n };\r\n\r\n RTCPeerConnection.prototype._emitGatheringStateChange = function () {\r\n var event = new Event('icegatheringstatechange');\r\n this._dispatchEvent('icegatheringstatechange', event);\r\n };\r\n\r\n RTCPeerConnection.prototype.getConfiguration = function () {\r\n return this._config;\r\n };\r\n\r\n RTCPeerConnection.prototype.getLocalStreams = function () {\r\n return this.localStreams;\r\n };\r\n\r\n RTCPeerConnection.prototype.getRemoteStreams = function () {\r\n return this.remoteStreams;\r\n };\r\n\r\n // internal helper to create a transceiver object.\r\n // (which is not yet the same as the WebRTC 1.0 transceiver)\r\n RTCPeerConnection.prototype._createTransceiver = function (kind, doNotAdd) {\r\n var hasBundleTransport = this.transceivers.length > 0;\r\n var transceiver = {\r\n track: null,\r\n iceGatherer: null,\r\n iceTransport: null,\r\n dtlsTransport: null,\r\n localCapabilities: null,\r\n remoteCapabilities: null,\r\n rtpSender: null,\r\n rtpReceiver: null,\r\n kind: kind,\r\n mid: null,\r\n sendEncodingParameters: null,\r\n recvEncodingParameters: null,\r\n stream: null,\r\n associatedRemoteMediaStreams: [],\r\n wantReceive: true\r\n };\r\n if (this.usingBundle && hasBundleTransport) {\r\n transceiver.iceTransport = this.transceivers[0].iceTransport;\r\n transceiver.dtlsTransport = this.transceivers[0].dtlsTransport;\r\n } else {\r\n var transports = this._createIceAndDtlsTransports();\r\n transceiver.iceTransport = transports.iceTransport;\r\n transceiver.dtlsTransport = transports.dtlsTransport;\r\n }\r\n if (!doNotAdd) {\r\n this.transceivers.push(transceiver);\r\n }\r\n return transceiver;\r\n };\r\n\r\n RTCPeerConnection.prototype.addTrack = function (track, stream) {\r\n if (this._isClosed) {\r\n throw makeError('InvalidStateError',\r\n 'Attempted to call addTrack on a closed peerconnection.');\r\n }\r\n\r\n var alreadyExists = this.transceivers.find(function (s) {\r\n return s.track === track;\r\n });\r\n\r\n if (alreadyExists) {\r\n throw makeError('InvalidAccessError', 'Track already exists.');\r\n }\r\n\r\n var transceiver;\r\n for (var i = 0; i < this.transceivers.length; i++) {\r\n if (!this.transceivers[i].track &&\r\n this.transceivers[i].kind === track.kind) {\r\n transceiver = this.transceivers[i];\r\n }\r\n }\r\n if (!transceiver) {\r\n transceiver = this._createTransceiver(track.kind);\r\n }\r\n\r\n this._maybeFireNegotiationNeeded();\r\n\r\n if (this.localStreams.indexOf(stream) === -1) {\r\n this.localStreams.push(stream);\r\n }\r\n\r\n transceiver.track = track;\r\n transceiver.stream = stream;\r\n transceiver.rtpSender = new window.RTCRtpSender(track,\r\n transceiver.dtlsTransport);\r\n return transceiver.rtpSender;\r\n };\r\n\r\n RTCPeerConnection.prototype.addStream = function (stream) {\r\n var pc = this;\r\n if (edgeVersion >= 15025) {\r\n stream.getTracks().forEach(function (track) {\r\n pc.addTrack(track, stream);\r\n });\r\n } else {\r\n // Clone is necessary for local demos mostly, attaching directly\r\n // to two different senders does not work (build 10547).\r\n // Fixed in 15025 (or earlier)\r\n var clonedStream = stream.clone();\r\n stream.getTracks().forEach(function (track, idx) {\r\n var clonedTrack = clonedStream.getTracks()[idx];\r\n track.addEventListener('enabled', function (event) {\r\n clonedTrack.enabled = event.enabled;\r\n });\r\n });\r\n clonedStream.getTracks().forEach(function (track) {\r\n pc.addTrack(track, clonedStream);\r\n });\r\n }\r\n };\r\n\r\n RTCPeerConnection.prototype.removeTrack = function (sender) {\r\n if (this._isClosed) {\r\n throw makeError('InvalidStateError',\r\n 'Attempted to call removeTrack on a closed peerconnection.');\r\n }\r\n\r\n if (!(sender instanceof window.RTCRtpSender)) {\r\n throw new TypeError('Argument 1 of RTCPeerConnection.removeTrack ' +\r\n 'does not implement interface RTCRtpSender.');\r\n }\r\n\r\n var transceiver = this.transceivers.find(function (t) {\r\n return t.rtpSender === sender;\r\n });\r\n\r\n if (!transceiver) {\r\n throw makeError('InvalidAccessError',\r\n 'Sender was not created by this connection.');\r\n }\r\n var stream = transceiver.stream;\r\n\r\n transceiver.rtpSender.stop();\r\n transceiver.rtpSender = null;\r\n transceiver.track = null;\r\n transceiver.stream = null;\r\n\r\n // remove the stream from the set of local streams\r\n var localStreams = this.transceivers.map(function (t) {\r\n return t.stream;\r\n });\r\n if (localStreams.indexOf(stream) === -1 &&\r\n this.localStreams.indexOf(stream) > -1) {\r\n this.localStreams.splice(this.localStreams.indexOf(stream), 1);\r\n }\r\n\r\n this._maybeFireNegotiationNeeded();\r\n };\r\n\r\n RTCPeerConnection.prototype.removeStream = function (stream) {\r\n var pc = this;\r\n stream.getTracks().forEach(function (track) {\r\n var sender = pc.getSenders().find(function (s) {\r\n return s.track === track;\r\n });\r\n if (sender) {\r\n pc.removeTrack(sender);\r\n }\r\n });\r\n };\r\n\r\n RTCPeerConnection.prototype.getSenders = function () {\r\n return this.transceivers.filter(function (transceiver) {\r\n return !!transceiver.rtpSender;\r\n })\r\n .map(function (transceiver) {\r\n return transceiver.rtpSender;\r\n });\r\n };\r\n\r\n RTCPeerConnection.prototype.getReceivers = function () {\r\n return this.transceivers.filter(function (transceiver) {\r\n return !!transceiver.rtpReceiver;\r\n })\r\n .map(function (transceiver) {\r\n return transceiver.rtpReceiver;\r\n });\r\n };\r\n\r\n\r\n RTCPeerConnection.prototype._createIceGatherer = function (sdpMLineIndex,\r\n usingBundle) {\r\n var pc = this;\r\n if (usingBundle && sdpMLineIndex > 0) {\r\n return this.transceivers[0].iceGatherer;\r\n } else if (this._iceGatherers.length) {\r\n return this._iceGatherers.shift();\r\n }\r\n var iceGatherer = new window.RTCIceGatherer({\r\n iceServers: this._config.iceServers,\r\n gatherPolicy: this._config.iceTransportPolicy\r\n });\r\n Object.defineProperty(iceGatherer, 'state',\r\n { value: 'new', writable: true }\r\n );\r\n\r\n this.transceivers[sdpMLineIndex].bufferedCandidateEvents = [];\r\n this.transceivers[sdpMLineIndex].bufferCandidates = function (event) {\r\n var end = !event.candidate || Object.keys(event.candidate).length === 0;\r\n // polyfill since RTCIceGatherer.state is not implemented in\r\n // Edge 10547 yet.\r\n iceGatherer.state = end ? 'completed' : 'gathering';\r\n if (pc.transceivers[sdpMLineIndex].bufferedCandidateEvents !== null) {\r\n pc.transceivers[sdpMLineIndex].bufferedCandidateEvents.push(event);\r\n }\r\n };\r\n iceGatherer.addEventListener('localcandidate',\r\n this.transceivers[sdpMLineIndex].bufferCandidates);\r\n return iceGatherer;\r\n };\r\n\r\n // start gathering from an RTCIceGatherer.\r\n RTCPeerConnection.prototype._gather = function (mid, sdpMLineIndex) {\r\n var pc = this;\r\n var iceGatherer = this.transceivers[sdpMLineIndex].iceGatherer;\r\n if (iceGatherer.onlocalcandidate) {\r\n return;\r\n }\r\n var bufferedCandidateEvents =\r\n this.transceivers[sdpMLineIndex].bufferedCandidateEvents;\r\n this.transceivers[sdpMLineIndex].bufferedCandidateEvents = null;\r\n iceGatherer.removeEventListener('localcandidate',\r\n this.transceivers[sdpMLineIndex].bufferCandidates);\r\n iceGatherer.onlocalcandidate = function (evt) {\r\n if (pc.usingBundle && sdpMLineIndex > 0) {\r\n // if we know that we use bundle we can drop candidates with\r\n // ѕdpMLineIndex > 0. If we don't do this then our state gets\r\n // confused since we dispose the extra ice gatherer.\r\n return;\r\n }\r\n var event = new Event('icecandidate');\r\n event.candidate = { sdpMid: mid, sdpMLineIndex: sdpMLineIndex };\r\n\r\n var cand = evt.candidate;\r\n // Edge emits an empty object for RTCIceCandidateComplete‥\r\n var end = !cand || Object.keys(cand).length === 0;\r\n if (end) {\r\n // polyfill since RTCIceGatherer.state is not implemented in\r\n // Edge 10547 yet.\r\n if (iceGatherer.state === 'new' || iceGatherer.state === 'gathering') {\r\n iceGatherer.state = 'completed';\r\n }\r\n } else {\r\n if (iceGatherer.state === 'new') {\r\n iceGatherer.state = 'gathering';\r\n }\r\n // RTCIceCandidate doesn't have a component, needs to be added\r\n cand.component = 1;\r\n // also the usernameFragment. TODO: update SDP to take both variants.\r\n cand.ufrag = iceGatherer.getLocalParameters().usernameFragment;\r\n\r\n var serializedCandidate = SDPUtils.writeCandidate(cand);\r\n event.candidate = Object.assign(event.candidate,\r\n SDPUtils.parseCandidate(serializedCandidate));\r\n\r\n event.candidate.candidate = serializedCandidate;\r\n event.candidate.toJSON = function () {\r\n return {\r\n candidate: event.candidate.candidate,\r\n sdpMid: event.candidate.sdpMid,\r\n sdpMLineIndex: event.candidate.sdpMLineIndex,\r\n usernameFragment: event.candidate.usernameFragment\r\n };\r\n };\r\n }\r\n\r\n // update local description.\r\n var sections = SDPUtils.getMediaSections(pc._localDescription.sdp);\r\n if (!end) {\r\n sections[event.candidate.sdpMLineIndex] +=\r\n 'a=' + event.candidate.candidate + '\\r\\n';\r\n } else {\r\n sections[event.candidate.sdpMLineIndex] +=\r\n 'a=end-of-candidates\\r\\n';\r\n }\r\n pc._localDescription.sdp =\r\n SDPUtils.getDescription(pc._localDescription.sdp) +\r\n sections.join('');\r\n var complete = pc.transceivers.every(function (transceiver) {\r\n return transceiver.iceGatherer &&\r\n transceiver.iceGatherer.state === 'completed';\r\n });\r\n\r\n if (pc.iceGatheringState !== 'gathering') {\r\n pc.iceGatheringState = 'gathering';\r\n pc._emitGatheringStateChange();\r\n }\r\n\r\n // Emit candidate. Also emit null candidate when all gatherers are\r\n // complete.\r\n if (!end) {\r\n pc._dispatchEvent('icecandidate', event);\r\n }\r\n if (complete) {\r\n pc._dispatchEvent('icecandidate', new Event('icecandidate'));\r\n pc.iceGatheringState = 'complete';\r\n pc._emitGatheringStateChange();\r\n }\r\n };\r\n\r\n // emit already gathered candidates.\r\n window.setTimeout(function () {\r\n bufferedCandidateEvents.forEach(function (e) {\r\n iceGatherer.onlocalcandidate(e);\r\n });\r\n }, 0);\r\n };\r\n\r\n // Create ICE transport and DTLS transport.\r\n RTCPeerConnection.prototype._createIceAndDtlsTransports = function () {\r\n var pc = this;\r\n var iceTransport = new window.RTCIceTransport(null);\r\n iceTransport.onicestatechange = function () {\r\n pc._updateIceConnectionState();\r\n pc._updateConnectionState();\r\n };\r\n\r\n var dtlsTransport = new window.RTCDtlsTransport(iceTransport);\r\n dtlsTransport.ondtlsstatechange = function () {\r\n pc._updateConnectionState();\r\n };\r\n dtlsTransport.onerror = function () {\r\n // onerror does not set state to failed by itself.\r\n Object.defineProperty(dtlsTransport, 'state',\r\n { value: 'failed', writable: true });\r\n pc._updateConnectionState();\r\n };\r\n\r\n return {\r\n iceTransport: iceTransport,\r\n dtlsTransport: dtlsTransport\r\n };\r\n };\r\n\r\n // Destroy ICE gatherer, ICE transport and DTLS transport.\r\n // Without triggering the callbacks.\r\n RTCPeerConnection.prototype._disposeIceAndDtlsTransports = function (\r\n sdpMLineIndex) {\r\n var iceGatherer = this.transceivers[sdpMLineIndex].iceGatherer;\r\n if (iceGatherer) {\r\n delete iceGatherer.onlocalcandidate;\r\n delete this.transceivers[sdpMLineIndex].iceGatherer;\r\n }\r\n var iceTransport = this.transceivers[sdpMLineIndex].iceTransport;\r\n if (iceTransport) {\r\n delete iceTransport.onicestatechange;\r\n delete this.transceivers[sdpMLineIndex].iceTransport;\r\n }\r\n var dtlsTransport = this.transceivers[sdpMLineIndex].dtlsTransport;\r\n if (dtlsTransport) {\r\n delete dtlsTransport.ondtlsstatechange;\r\n delete dtlsTransport.onerror;\r\n delete this.transceivers[sdpMLineIndex].dtlsTransport;\r\n }\r\n };\r\n\r\n // Start the RTP Sender and Receiver for a transceiver.\r\n RTCPeerConnection.prototype._transceive = function (transceiver,\r\n send, recv) {\r\n var params = getCommonCapabilities(transceiver.localCapabilities,\r\n transceiver.remoteCapabilities);\r\n if (send && transceiver.rtpSender) {\r\n params.encodings = transceiver.sendEncodingParameters;\r\n params.rtcp = {\r\n cname: SDPUtils.localCName,\r\n compound: transceiver.rtcpParameters.compound\r\n };\r\n if (transceiver.recvEncodingParameters.length) {\r\n params.rtcp.ssrc = transceiver.recvEncodingParameters[0].ssrc;\r\n }\r\n transceiver.rtpSender.send(params);\r\n }\r\n if (recv && transceiver.rtpReceiver && params.codecs.length > 0) {\r\n // remove RTX field in Edge 14942\r\n if (transceiver.kind === 'video'\r\n && transceiver.recvEncodingParameters\r\n && edgeVersion < 15019) {\r\n transceiver.recvEncodingParameters.forEach(function (p) {\r\n delete p.rtx;\r\n });\r\n }\r\n if (transceiver.recvEncodingParameters.length) {\r\n params.encodings = transceiver.recvEncodingParameters;\r\n } else {\r\n params.encodings = [{}];\r\n }\r\n params.rtcp = {\r\n compound: transceiver.rtcpParameters.compound\r\n };\r\n if (transceiver.rtcpParameters.cname) {\r\n params.rtcp.cname = transceiver.rtcpParameters.cname;\r\n }\r\n if (transceiver.sendEncodingParameters.length) {\r\n params.rtcp.ssrc = transceiver.sendEncodingParameters[0].ssrc;\r\n }\r\n transceiver.rtpReceiver.receive(params);\r\n }\r\n };\r\n\r\n RTCPeerConnection.prototype.setLocalDescription = function (description) {\r\n var pc = this;\r\n\r\n // Note: pranswer is not supported.\r\n if (['offer', 'answer'].indexOf(description.type) === -1) {\r\n return Promise.reject(makeError('TypeError',\r\n 'Unsupported type \"' + description.type + '\"'));\r\n }\r\n\r\n if (!isActionAllowedInSignalingState('setLocalDescription',\r\n description.type, pc.signalingState) || pc._isClosed) {\r\n return Promise.reject(makeError('InvalidStateError',\r\n 'Can not set local ' + description.type +\r\n ' in state ' + pc.signalingState));\r\n }\r\n\r\n var sections;\r\n var sessionpart;\r\n if (description.type === 'offer') {\r\n // VERY limited support for SDP munging. Limited to:\r\n // * changing the order of codecs\r\n sections = SDPUtils.splitSections(description.sdp);\r\n sessionpart = sections.shift();\r\n sections.forEach(function (mediaSection, sdpMLineIndex) {\r\n var caps = SDPUtils.parseRtpParameters(mediaSection);\r\n pc.transceivers[sdpMLineIndex].localCapabilities = caps;\r\n });\r\n\r\n pc.transceivers.forEach(function (transceiver, sdpMLineIndex) {\r\n pc._gather(transceiver.mid, sdpMLineIndex);\r\n });\r\n } else if (description.type === 'answer') {\r\n sections = SDPUtils.splitSections(pc._remoteDescription.sdp);\r\n sessionpart = sections.shift();\r\n var isIceLite = SDPUtils.matchPrefix(sessionpart,\r\n 'a=ice-lite').length > 0;\r\n sections.forEach(function (mediaSection, sdpMLineIndex) {\r\n var transceiver = pc.transceivers[sdpMLineIndex];\r\n var iceGatherer = transceiver.iceGatherer;\r\n var iceTransport = transceiver.iceTransport;\r\n var dtlsTransport = transceiver.dtlsTransport;\r\n var localCapabilities = transceiver.localCapabilities;\r\n var remoteCapabilities = transceiver.remoteCapabilities;\r\n\r\n // treat bundle-only as not-rejected.\r\n var rejected = SDPUtils.isRejected(mediaSection) &&\r\n SDPUtils.matchPrefix(mediaSection, 'a=bundle-only').length === 0;\r\n\r\n if (!rejected && !transceiver.rejected) {\r\n var remoteIceParameters = SDPUtils.getIceParameters(\r\n mediaSection, sessionpart);\r\n var remoteDtlsParameters = SDPUtils.getDtlsParameters(\r\n mediaSection, sessionpart);\r\n if (isIceLite) {\r\n remoteDtlsParameters.role = 'server';\r\n }\r\n\r\n if (!pc.usingBundle || sdpMLineIndex === 0) {\r\n pc._gather(transceiver.mid, sdpMLineIndex);\r\n if (iceTransport.state === 'new') {\r\n iceTransport.start(iceGatherer, remoteIceParameters,\r\n isIceLite ? 'controlling' : 'controlled');\r\n }\r\n if (dtlsTransport.state === 'new') {\r\n dtlsTransport.start(remoteDtlsParameters);\r\n }\r\n }\r\n\r\n // Calculate intersection of capabilities.\r\n var params = getCommonCapabilities(localCapabilities,\r\n remoteCapabilities);\r\n\r\n // Start the RTCRtpSender. The RTCRtpReceiver for this\r\n // transceiver has already been started in setRemoteDescription.\r\n pc._transceive(transceiver,\r\n params.codecs.length > 0,\r\n false);\r\n }\r\n });\r\n }\r\n\r\n pc._localDescription = {\r\n type: description.type,\r\n sdp: description.sdp\r\n };\r\n if (description.type === 'offer') {\r\n pc._updateSignalingState('have-local-offer');\r\n } else {\r\n pc._updateSignalingState('stable');\r\n }\r\n\r\n return Promise.resolve();\r\n };\r\n\r\n RTCPeerConnection.prototype.setRemoteDescription = function (description) {\r\n var pc = this;\r\n\r\n // Note: pranswer is not supported.\r\n if (['offer', 'answer'].indexOf(description.type) === -1) {\r\n return Promise.reject(makeError('TypeError',\r\n 'Unsupported type \"' + description.type + '\"'));\r\n }\r\n\r\n if (!isActionAllowedInSignalingState('setRemoteDescription',\r\n description.type, pc.signalingState) || pc._isClosed) {\r\n return Promise.reject(makeError('InvalidStateError',\r\n 'Can not set remote ' + description.type +\r\n ' in state ' + pc.signalingState));\r\n }\r\n\r\n var streams = {};\r\n pc.remoteStreams.forEach(function (stream) {\r\n streams[stream.id] = stream;\r\n });\r\n var receiverList = [];\r\n var sections = SDPUtils.splitSections(description.sdp);\r\n var sessionpart = sections.shift();\r\n var isIceLite = SDPUtils.matchPrefix(sessionpart,\r\n 'a=ice-lite').length > 0;\r\n var usingBundle = SDPUtils.matchPrefix(sessionpart,\r\n 'a=group:BUNDLE ').length > 0;\r\n pc.usingBundle = usingBundle;\r\n var iceOptions = SDPUtils.matchPrefix(sessionpart,\r\n 'a=ice-options:')[0];\r\n if (iceOptions) {\r\n pc.canTrickleIceCandidates = iceOptions.substr(14).split(' ')\r\n .indexOf('trickle') >= 0;\r\n } else {\r\n pc.canTrickleIceCandidates = false;\r\n }\r\n\r\n sections.forEach(function (mediaSection, sdpMLineIndex) {\r\n var lines = SDPUtils.splitLines(mediaSection);\r\n var kind = SDPUtils.getKind(mediaSection);\r\n // treat bundle-only as not-rejected.\r\n var rejected = SDPUtils.isRejected(mediaSection) &&\r\n SDPUtils.matchPrefix(mediaSection, 'a=bundle-only').length === 0;\r\n var protocol = lines[0].substr(2).split(' ')[2];\r\n\r\n var direction = SDPUtils.getDirection(mediaSection, sessionpart);\r\n var remoteMsid = SDPUtils.parseMsid(mediaSection);\r\n\r\n var mid = SDPUtils.getMid(mediaSection) || SDPUtils.generateIdentifier();\r\n\r\n // Reject datachannels which are not implemented yet.\r\n if (rejected || (kind === 'application' && (protocol === 'DTLS/SCTP' ||\r\n protocol === 'UDP/DTLS/SCTP'))) {\r\n // TODO: this is dangerous in the case where a non-rejected m-line\r\n // becomes rejected.\r\n pc.transceivers[sdpMLineIndex] = {\r\n mid: mid,\r\n kind: kind,\r\n protocol: protocol,\r\n rejected: true\r\n };\r\n return;\r\n }\r\n\r\n if (!rejected && pc.transceivers[sdpMLineIndex] &&\r\n pc.transceivers[sdpMLineIndex].rejected) {\r\n // recycle a rejected transceiver.\r\n pc.transceivers[sdpMLineIndex] = pc._createTransceiver(kind, true);\r\n }\r\n\r\n var transceiver;\r\n var iceGatherer;\r\n var iceTransport;\r\n var dtlsTransport;\r\n var rtpReceiver;\r\n var sendEncodingParameters;\r\n var recvEncodingParameters;\r\n var localCapabilities;\r\n\r\n var track;\r\n // FIXME: ensure the mediaSection has rtcp-mux set.\r\n var remoteCapabilities = SDPUtils.parseRtpParameters(mediaSection);\r\n var remoteIceParameters;\r\n var remoteDtlsParameters;\r\n if (!rejected) {\r\n remoteIceParameters = SDPUtils.getIceParameters(mediaSection,\r\n sessionpart);\r\n remoteDtlsParameters = SDPUtils.getDtlsParameters(mediaSection,\r\n sessionpart);\r\n remoteDtlsParameters.role = 'client';\r\n }\r\n recvEncodingParameters =\r\n SDPUtils.parseRtpEncodingParameters(mediaSection);\r\n\r\n var rtcpParameters = SDPUtils.parseRtcpParameters(mediaSection);\r\n\r\n var isComplete = SDPUtils.matchPrefix(mediaSection,\r\n 'a=end-of-candidates', sessionpart).length > 0;\r\n var cands = SDPUtils.matchPrefix(mediaSection, 'a=candidate:')\r\n .map(function (cand) {\r\n return SDPUtils.parseCandidate(cand);\r\n })\r\n .filter(function (cand) {\r\n return cand.component === 1;\r\n });\r\n\r\n // Check if we can use BUNDLE and dispose transports.\r\n if ((description.type === 'offer' || description.type === 'answer') &&\r\n !rejected && usingBundle && sdpMLineIndex > 0 &&\r\n pc.transceivers[sdpMLineIndex]) {\r\n pc._disposeIceAndDtlsTransports(sdpMLineIndex);\r\n pc.transceivers[sdpMLineIndex].iceGatherer =\r\n pc.transceivers[0].iceGatherer;\r\n pc.transceivers[sdpMLineIndex].iceTransport =\r\n pc.transceivers[0].iceTransport;\r\n pc.transceivers[sdpMLineIndex].dtlsTransport =\r\n pc.transceivers[0].dtlsTransport;\r\n if (pc.transceivers[sdpMLineIndex].rtpSender) {\r\n pc.transceivers[sdpMLineIndex].rtpSender.setTransport(\r\n pc.transceivers[0].dtlsTransport);\r\n }\r\n if (pc.transceivers[sdpMLineIndex].rtpReceiver) {\r\n pc.transceivers[sdpMLineIndex].rtpReceiver.setTransport(\r\n pc.transceivers[0].dtlsTransport);\r\n }\r\n }\r\n if (description.type === 'offer' && !rejected) {\r\n transceiver = pc.transceivers[sdpMLineIndex] ||\r\n pc._createTransceiver(kind);\r\n transceiver.mid = mid;\r\n\r\n if (!transceiver.iceGatherer) {\r\n transceiver.iceGatherer = pc._createIceGatherer(sdpMLineIndex,\r\n usingBundle);\r\n }\r\n\r\n if (cands.length && transceiver.iceTransport.state === 'new') {\r\n if (isComplete && (!usingBundle || sdpMLineIndex === 0)) {\r\n transceiver.iceTransport.setRemoteCandidates(cands);\r\n } else {\r\n cands.forEach(function (candidate) {\r\n maybeAddCandidate(transceiver.iceTransport, candidate);\r\n });\r\n }\r\n }\r\n\r\n localCapabilities = window.RTCRtpReceiver.getCapabilities(kind);\r\n\r\n // filter RTX until additional stuff needed for RTX is implemented\r\n // in adapter.js\r\n if (edgeVersion < 15019) {\r\n localCapabilities.codecs = localCapabilities.codecs.filter(\r\n function (codec) {\r\n return codec.name !== 'rtx';\r\n });\r\n }\r\n\r\n sendEncodingParameters = transceiver.sendEncodingParameters || [{\r\n ssrc: (2 * sdpMLineIndex + 2) * 1001\r\n }];\r\n\r\n // TODO: rewrite to use http://w3c.github.io/webrtc-pc/#set-associated-remote-streams\r\n var isNewTrack = false;\r\n if (direction === 'sendrecv' || direction === 'sendonly') {\r\n isNewTrack = !transceiver.rtpReceiver;\r\n rtpReceiver = transceiver.rtpReceiver ||\r\n new window.RTCRtpReceiver(transceiver.dtlsTransport, kind);\r\n\r\n if (isNewTrack) {\r\n var stream;\r\n track = rtpReceiver.track;\r\n // FIXME: does not work with Plan B.\r\n if (remoteMsid && remoteMsid.stream === '-') {\r\n // no-op. a stream id of '-' means: no associated stream.\r\n } else if (remoteMsid) {\r\n if (!streams[remoteMsid.stream]) {\r\n streams[remoteMsid.stream] = new window.MediaStream();\r\n Object.defineProperty(streams[remoteMsid.stream], 'id', {\r\n get: function () {\r\n return remoteMsid.stream;\r\n }\r\n });\r\n }\r\n Object.defineProperty(track, 'id', {\r\n get: function () {\r\n return remoteMsid.track;\r\n }\r\n });\r\n stream = streams[remoteMsid.stream];\r\n } else {\r\n if (!streams.default) {\r\n streams.default = new window.MediaStream();\r\n }\r\n stream = streams.default;\r\n }\r\n if (stream) {\r\n addTrackToStreamAndFireEvent(track, stream);\r\n transceiver.associatedRemoteMediaStreams.push(stream);\r\n }\r\n receiverList.push([track, rtpReceiver, stream]);\r\n }\r\n } else if (transceiver.rtpReceiver && transceiver.rtpReceiver.track) {\r\n transceiver.associatedRemoteMediaStreams.forEach(function (s) {\r\n var nativeTrack = s.getTracks().find(function (t) {\r\n return t.id === transceiver.rtpReceiver.track.id;\r\n });\r\n if (nativeTrack) {\r\n removeTrackFromStreamAndFireEvent(nativeTrack, s);\r\n }\r\n });\r\n transceiver.associatedRemoteMediaStreams = [];\r\n }\r\n\r\n transceiver.localCapabilities = localCapabilities;\r\n transceiver.remoteCapabilities = remoteCapabilities;\r\n transceiver.rtpReceiver = rtpReceiver;\r\n transceiver.rtcpParameters = rtcpParameters;\r\n transceiver.sendEncodingParameters = sendEncodingParameters;\r\n transceiver.recvEncodingParameters = recvEncodingParameters;\r\n\r\n // Start the RTCRtpReceiver now. The RTPSender is started in\r\n // setLocalDescription.\r\n pc._transceive(pc.transceivers[sdpMLineIndex],\r\n false,\r\n isNewTrack);\r\n } else if (description.type === 'answer' && !rejected) {\r\n transceiver = pc.transceivers[sdpMLineIndex];\r\n iceGatherer = transceiver.iceGatherer;\r\n iceTransport = transceiver.iceTransport;\r\n dtlsTransport = transceiver.dtlsTransport;\r\n rtpReceiver = transceiver.rtpReceiver;\r\n sendEncodingParameters = transceiver.sendEncodingParameters;\r\n localCapabilities = transceiver.localCapabilities;\r\n\r\n pc.transceivers[sdpMLineIndex].recvEncodingParameters =\r\n recvEncodingParameters;\r\n pc.transceivers[sdpMLineIndex].remoteCapabilities =\r\n remoteCapabilities;\r\n pc.transceivers[sdpMLineIndex].rtcpParameters = rtcpParameters;\r\n\r\n if (cands.length && iceTransport.state === 'new') {\r\n if ((isIceLite || isComplete) &&\r\n (!usingBundle || sdpMLineIndex === 0)) {\r\n iceTransport.setRemoteCandidates(cands);\r\n } else {\r\n cands.forEach(function (candidate) {\r\n maybeAddCandidate(transceiver.iceTransport, candidate);\r\n });\r\n }\r\n }\r\n\r\n if (!usingBundle || sdpMLineIndex === 0) {\r\n if (iceTransport.state === 'new') {\r\n iceTransport.start(iceGatherer, remoteIceParameters,\r\n 'controlling');\r\n }\r\n if (dtlsTransport.state === 'new') {\r\n dtlsTransport.start(remoteDtlsParameters);\r\n }\r\n }\r\n\r\n // If the offer contained RTX but the answer did not,\r\n // remove RTX from sendEncodingParameters.\r\n var commonCapabilities = getCommonCapabilities(\r\n transceiver.localCapabilities,\r\n transceiver.remoteCapabilities);\r\n\r\n var hasRtx = commonCapabilities.codecs.filter(function (c) {\r\n return c.name.toLowerCase() === 'rtx';\r\n }).length;\r\n if (!hasRtx && transceiver.sendEncodingParameters[0].rtx) {\r\n delete transceiver.sendEncodingParameters[0].rtx;\r\n }\r\n\r\n pc._transceive(transceiver,\r\n direction === 'sendrecv' || direction === 'recvonly',\r\n direction === 'sendrecv' || direction === 'sendonly');\r\n\r\n // TODO: rewrite to use http://w3c.github.io/webrtc-pc/#set-associated-remote-streams\r\n if (rtpReceiver &&\r\n (direction === 'sendrecv' || direction === 'sendonly')) {\r\n track = rtpReceiver.track;\r\n if (remoteMsid) {\r\n if (!streams[remoteMsid.stream]) {\r\n streams[remoteMsid.stream] = new window.MediaStream();\r\n }\r\n addTrackToStreamAndFireEvent(track, streams[remoteMsid.stream]);\r\n receiverList.push([track, rtpReceiver, streams[remoteMsid.stream]]);\r\n } else {\r\n if (!streams.default) {\r\n streams.default = new window.MediaStream();\r\n }\r\n addTrackToStreamAndFireEvent(track, streams.default);\r\n receiverList.push([track, rtpReceiver, streams.default]);\r\n }\r\n } else {\r\n // FIXME: actually the receiver should be created later.\r\n delete transceiver.rtpReceiver;\r\n }\r\n }\r\n });\r\n\r\n if (pc._dtlsRole === undefined) {\r\n pc._dtlsRole = description.type === 'offer' ? 'active' : 'passive';\r\n }\r\n\r\n pc._remoteDescription = {\r\n type: description.type,\r\n sdp: description.sdp\r\n };\r\n if (description.type === 'offer') {\r\n pc._updateSignalingState('have-remote-offer');\r\n } else {\r\n pc._updateSignalingState('stable');\r\n }\r\n Object.keys(streams).forEach(function (sid) {\r\n var stream = streams[sid];\r\n if (stream.getTracks().length) {\r\n if (pc.remoteStreams.indexOf(stream) === -1) {\r\n pc.remoteStreams.push(stream);\r\n var event = new Event('addstream');\r\n event.stream = stream;\r\n window.setTimeout(function () {\r\n pc._dispatchEvent('addstream', event);\r\n });\r\n }\r\n\r\n receiverList.forEach(function (item) {\r\n var track = item[0];\r\n var receiver = item[1];\r\n if (stream.id !== item[2].id) {\r\n return;\r\n }\r\n fireAddTrack(pc, track, receiver, [stream]);\r\n });\r\n }\r\n });\r\n receiverList.forEach(function (item) {\r\n if (item[2]) {\r\n return;\r\n }\r\n fireAddTrack(pc, item[0], item[1], []);\r\n });\r\n\r\n // check whether addIceCandidate({}) was called within four seconds after\r\n // setRemoteDescription.\r\n window.setTimeout(function () {\r\n if (!(pc && pc.transceivers)) {\r\n return;\r\n }\r\n pc.transceivers.forEach(function (transceiver) {\r\n if (transceiver.iceTransport &&\r\n transceiver.iceTransport.state === 'new' &&\r\n transceiver.iceTransport.getRemoteCandidates().length > 0) {\r\n console.warn('Timeout for addRemoteCandidate. Consider sending ' +\r\n 'an end-of-candidates notification');\r\n transceiver.iceTransport.addRemoteCandidate({});\r\n }\r\n });\r\n }, 4000);\r\n\r\n return Promise.resolve();\r\n };\r\n\r\n RTCPeerConnection.prototype.close = function () {\r\n this.transceivers.forEach(function (transceiver) {\r\n /* not yet\r\n if (transceiver.iceGatherer) {\r\n transceiver.iceGatherer.close();\r\n }\r\n */\r\n if (transceiver.iceTransport) {\r\n transceiver.iceTransport.stop();\r\n }\r\n if (transceiver.dtlsTransport) {\r\n transceiver.dtlsTransport.stop();\r\n }\r\n if (transceiver.rtpSender) {\r\n transceiver.rtpSender.stop();\r\n }\r\n if (transceiver.rtpReceiver) {\r\n transceiver.rtpReceiver.stop();\r\n }\r\n });\r\n // FIXME: clean up tracks, local streams, remote streams, etc\r\n this._isClosed = true;\r\n this._updateSignalingState('closed');\r\n };\r\n\r\n // Update the signaling state.\r\n RTCPeerConnection.prototype._updateSignalingState = function (newState) {\r\n this.signalingState = newState;\r\n var event = new Event('signalingstatechange');\r\n this._dispatchEvent('signalingstatechange', event);\r\n };\r\n\r\n // Determine whether to fire the negotiationneeded event.\r\n RTCPeerConnection.prototype._maybeFireNegotiationNeeded = function () {\r\n var pc = this;\r\n if (this.signalingState !== 'stable' || this.needNegotiation === true) {\r\n return;\r\n }\r\n this.needNegotiation = true;\r\n window.setTimeout(function () {\r\n if (pc.needNegotiation) {\r\n pc.needNegotiation = false;\r\n var event = new Event('negotiationneeded');\r\n pc._dispatchEvent('negotiationneeded', event);\r\n }\r\n }, 0);\r\n };\r\n\r\n // Update the ice connection state.\r\n RTCPeerConnection.prototype._updateIceConnectionState = function () {\r\n var newState;\r\n var states = {\r\n 'new': 0,\r\n closed: 0,\r\n checking: 0,\r\n connected: 0,\r\n completed: 0,\r\n disconnected: 0,\r\n failed: 0\r\n };\r\n this.transceivers.forEach(function (transceiver) {\r\n states[transceiver.iceTransport.state]++;\r\n });\r\n\r\n newState = 'new';\r\n if (states.failed > 0) {\r\n newState = 'failed';\r\n } else if (states.checking > 0) {\r\n newState = 'checking';\r\n } else if (states.disconnected > 0) {\r\n newState = 'disconnected';\r\n } else if (states.new > 0) {\r\n newState = 'new';\r\n } else if (states.connected > 0) {\r\n newState = 'connected';\r\n } else if (states.completed > 0) {\r\n newState = 'completed';\r\n }\r\n\r\n if (newState !== this.iceConnectionState) {\r\n this.iceConnectionState = newState;\r\n var event = new Event('iceconnectionstatechange');\r\n this._dispatchEvent('iceconnectionstatechange', event);\r\n }\r\n };\r\n\r\n // Update the connection state.\r\n RTCPeerConnection.prototype._updateConnectionState = function () {\r\n var newState;\r\n var states = {\r\n 'new': 0,\r\n closed: 0,\r\n connecting: 0,\r\n connected: 0,\r\n completed: 0,\r\n disconnected: 0,\r\n failed: 0\r\n };\r\n this.transceivers.forEach(function (transceiver) {\r\n states[transceiver.iceTransport.state]++;\r\n states[transceiver.dtlsTransport.state]++;\r\n });\r\n // ICETransport.completed and connected are the same for this purpose.\r\n states.connected += states.completed;\r\n\r\n newState = 'new';\r\n if (states.failed > 0) {\r\n newState = 'failed';\r\n } else if (states.connecting > 0) {\r\n newState = 'connecting';\r\n } else if (states.disconnected > 0) {\r\n newState = 'disconnected';\r\n } else if (states.new > 0) {\r\n newState = 'new';\r\n } else if (states.connected > 0) {\r\n newState = 'connected';\r\n }\r\n\r\n if (newState !== this.connectionState) {\r\n this.connectionState = newState;\r\n var event = new Event('connectionstatechange');\r\n this._dispatchEvent('connectionstatechange', event);\r\n }\r\n };\r\n\r\n RTCPeerConnection.prototype.createOffer = function () {\r\n var pc = this;\r\n\r\n if (pc._isClosed) {\r\n return Promise.reject(makeError('InvalidStateError',\r\n 'Can not call createOffer after close'));\r\n }\r\n\r\n var numAudioTracks = pc.transceivers.filter(function (t) {\r\n return t.kind === 'audio';\r\n }).length;\r\n var numVideoTracks = pc.transceivers.filter(function (t) {\r\n return t.kind === 'video';\r\n }).length;\r\n\r\n // Determine number of audio and video tracks we need to send/recv.\r\n var offerOptions = arguments[0];\r\n if (offerOptions) {\r\n // Reject Chrome legacy constraints.\r\n if (offerOptions.mandatory || offerOptions.optional) {\r\n throw new TypeError(\r\n 'Legacy mandatory/optional constraints not supported.');\r\n }\r\n if (offerOptions.offerToReceiveAudio !== undefined) {\r\n if (offerOptions.offerToReceiveAudio === true) {\r\n numAudioTracks = 1;\r\n } else if (offerOptions.offerToReceiveAudio === false) {\r\n numAudioTracks = 0;\r\n } else {\r\n numAudioTracks = offerOptions.offerToReceiveAudio;\r\n }\r\n }\r\n if (offerOptions.offerToReceiveVideo !== undefined) {\r\n if (offerOptions.offerToReceiveVideo === true) {\r\n numVideoTracks = 1;\r\n } else if (offerOptions.offerToReceiveVideo === false) {\r\n numVideoTracks = 0;\r\n } else {\r\n numVideoTracks = offerOptions.offerToReceiveVideo;\r\n }\r\n }\r\n }\r\n\r\n pc.transceivers.forEach(function (transceiver) {\r\n if (transceiver.kind === 'audio') {\r\n numAudioTracks--;\r\n if (numAudioTracks < 0) {\r\n transceiver.wantReceive = false;\r\n }\r\n } else if (transceiver.kind === 'video') {\r\n numVideoTracks--;\r\n if (numVideoTracks < 0) {\r\n transceiver.wantReceive = false;\r\n }\r\n }\r\n });\r\n\r\n // Create M-lines for recvonly streams.\r\n while (numAudioTracks > 0 || numVideoTracks > 0) {\r\n if (numAudioTracks > 0) {\r\n pc._createTransceiver('audio');\r\n numAudioTracks--;\r\n }\r\n if (numVideoTracks > 0) {\r\n pc._createTransceiver('video');\r\n numVideoTracks--;\r\n }\r\n }\r\n\r\n var sdp = SDPUtils.writeSessionBoilerplate(pc._sdpSessionId,\r\n pc._sdpSessionVersion++);\r\n pc.transceivers.forEach(function (transceiver, sdpMLineIndex) {\r\n // For each track, create an ice gatherer, ice transport,\r\n // dtls transport, potentially rtpsender and rtpreceiver.\r\n var track = transceiver.track;\r\n var kind = transceiver.kind;\r\n var mid = transceiver.mid || SDPUtils.generateIdentifier();\r\n transceiver.mid = mid;\r\n\r\n if (!transceiver.iceGatherer) {\r\n transceiver.iceGatherer = pc._createIceGatherer(sdpMLineIndex,\r\n pc.usingBundle);\r\n }\r\n\r\n var localCapabilities = window.RTCRtpSender.getCapabilities(kind);\r\n // filter RTX until additional stuff needed for RTX is implemented\r\n // in adapter.js\r\n if (edgeVersion < 15019) {\r\n localCapabilities.codecs = localCapabilities.codecs.filter(\r\n function (codec) {\r\n return codec.name !== 'rtx';\r\n });\r\n }\r\n localCapabilities.codecs.forEach(function (codec) {\r\n // work around https://bugs.chromium.org/p/webrtc/issues/detail?id=6552\r\n // by adding level-asymmetry-allowed=1\r\n if (codec.name === 'H264' &&\r\n codec.parameters['level-asymmetry-allowed'] === undefined) {\r\n codec.parameters['level-asymmetry-allowed'] = '1';\r\n }\r\n\r\n // for subsequent offers, we might have to re-use the payload\r\n // type of the last offer.\r\n if (transceiver.remoteCapabilities &&\r\n transceiver.remoteCapabilities.codecs) {\r\n transceiver.remoteCapabilities.codecs.forEach(function (remoteCodec) {\r\n if (codec.name.toLowerCase() === remoteCodec.name.toLowerCase() &&\r\n codec.clockRate === remoteCodec.clockRate) {\r\n codec.preferredPayloadType = remoteCodec.payloadType;\r\n }\r\n });\r\n }\r\n });\r\n localCapabilities.headerExtensions.forEach(function (hdrExt) {\r\n var remoteExtensions = transceiver.remoteCapabilities &&\r\n transceiver.remoteCapabilities.headerExtensions || [];\r\n remoteExtensions.forEach(function (rHdrExt) {\r\n if (hdrExt.uri === rHdrExt.uri) {\r\n hdrExt.id = rHdrExt.id;\r\n }\r\n });\r\n });\r\n\r\n // generate an ssrc now, to be used later in rtpSender.send\r\n var sendEncodingParameters = transceiver.sendEncodingParameters || [{\r\n ssrc: (2 * sdpMLineIndex + 1) * 1001\r\n }];\r\n if (track) {\r\n // add RTX\r\n if (edgeVersion >= 15019 && kind === 'video' &&\r\n !sendEncodingParameters[0].rtx) {\r\n sendEncodingParameters[0].rtx = {\r\n ssrc: sendEncodingParameters[0].ssrc + 1\r\n };\r\n }\r\n }\r\n\r\n if (transceiver.wantReceive) {\r\n transceiver.rtpReceiver = new window.RTCRtpReceiver(\r\n transceiver.dtlsTransport, kind);\r\n }\r\n\r\n transceiver.localCapabilities = localCapabilities;\r\n transceiver.sendEncodingParameters = sendEncodingParameters;\r\n });\r\n\r\n // always offer BUNDLE and dispose on return if not supported.\r\n if (pc._config.bundlePolicy !== 'max-compat') {\r\n sdp += 'a=group:BUNDLE ' + pc.transceivers.map(function (t) {\r\n return t.mid;\r\n }).join(' ') + '\\r\\n';\r\n }\r\n sdp += 'a=ice-options:trickle\\r\\n';\r\n\r\n pc.transceivers.forEach(function (transceiver, sdpMLineIndex) {\r\n sdp += writeMediaSection(transceiver, transceiver.localCapabilities,\r\n 'offer', transceiver.stream, pc._dtlsRole);\r\n sdp += 'a=rtcp-rsize\\r\\n';\r\n\r\n if (transceiver.iceGatherer && pc.iceGatheringState !== 'new' &&\r\n (sdpMLineIndex === 0 || !pc.usingBundle)) {\r\n transceiver.iceGatherer.getLocalCandidates().forEach(function (cand) {\r\n cand.component = 1;\r\n sdp += 'a=' + SDPUtils.writeCandidate(cand) + '\\r\\n';\r\n });\r\n\r\n if (transceiver.iceGatherer.state === 'completed') {\r\n sdp += 'a=end-of-candidates\\r\\n';\r\n }\r\n }\r\n });\r\n\r\n var desc = new window.RTCSessionDescription({\r\n type: 'offer',\r\n sdp: sdp\r\n });\r\n return Promise.resolve(desc);\r\n };\r\n\r\n RTCPeerConnection.prototype.createAnswer = function () {\r\n var pc = this;\r\n\r\n if (pc._isClosed) {\r\n return Promise.reject(makeError('InvalidStateError',\r\n 'Can not call createAnswer after close'));\r\n }\r\n\r\n if (!(pc.signalingState === 'have-remote-offer' ||\r\n pc.signalingState === 'have-local-pranswer')) {\r\n return Promise.reject(makeError('InvalidStateError',\r\n 'Can not call createAnswer in signalingState ' + pc.signalingState));\r\n }\r\n\r\n var sdp = SDPUtils.writeSessionBoilerplate(pc._sdpSessionId,\r\n pc._sdpSessionVersion++);\r\n if (pc.usingBundle) {\r\n sdp += 'a=group:BUNDLE ' + pc.transceivers.map(function (t) {\r\n return t.mid;\r\n }).join(' ') + '\\r\\n';\r\n }\r\n sdp += 'a=ice-options:trickle\\r\\n';\r\n\r\n var mediaSectionsInOffer = SDPUtils.getMediaSections(\r\n pc._remoteDescription.sdp).length;\r\n pc.transceivers.forEach(function (transceiver, sdpMLineIndex) {\r\n if (sdpMLineIndex + 1 > mediaSectionsInOffer) {\r\n return;\r\n }\r\n if (transceiver.rejected) {\r\n if (transceiver.kind === 'application') {\r\n if (transceiver.protocol === 'DTLS/SCTP') { // legacy fmt\r\n sdp += 'm=application 0 DTLS/SCTP 5000\\r\\n';\r\n } else {\r\n sdp += 'm=application 0 ' + transceiver.protocol +\r\n ' webrtc-datachannel\\r\\n';\r\n }\r\n } else if (transceiver.kind === 'audio') {\r\n sdp += 'm=audio 0 UDP/TLS/RTP/SAVPF 0\\r\\n' +\r\n 'a=rtpmap:0 PCMU/8000\\r\\n';\r\n } else if (transceiver.kind === 'video') {\r\n sdp += 'm=video 0 UDP/TLS/RTP/SAVPF 120\\r\\n' +\r\n 'a=rtpmap:120 VP8/90000\\r\\n';\r\n }\r\n sdp += 'c=IN IP4 0.0.0.0\\r\\n' +\r\n 'a=inactive\\r\\n' +\r\n 'a=mid:' + transceiver.mid + '\\r\\n';\r\n return;\r\n }\r\n\r\n // FIXME: look at direction.\r\n if (transceiver.stream) {\r\n var localTrack;\r\n if (transceiver.kind === 'audio') {\r\n localTrack = transceiver.stream.getAudioTracks()[0];\r\n } else if (transceiver.kind === 'video') {\r\n localTrack = transceiver.stream.getVideoTracks()[0];\r\n }\r\n if (localTrack) {\r\n // add RTX\r\n if (edgeVersion >= 15019 && transceiver.kind === 'video' &&\r\n !transceiver.sendEncodingParameters[0].rtx) {\r\n transceiver.sendEncodingParameters[0].rtx = {\r\n ssrc: transceiver.sendEncodingParameters[0].ssrc + 1\r\n };\r\n }\r\n }\r\n }\r\n\r\n // Calculate intersection of capabilities.\r\n var commonCapabilities = getCommonCapabilities(\r\n transceiver.localCapabilities,\r\n transceiver.remoteCapabilities);\r\n\r\n var hasRtx = commonCapabilities.codecs.filter(function (c) {\r\n return c.name.toLowerCase() === 'rtx';\r\n }).length;\r\n if (!hasRtx && transceiver.sendEncodingParameters[0].rtx) {\r\n delete transceiver.sendEncodingParameters[0].rtx;\r\n }\r\n\r\n sdp += writeMediaSection(transceiver, commonCapabilities,\r\n 'answer', transceiver.stream, pc._dtlsRole);\r\n if (transceiver.rtcpParameters &&\r\n transceiver.rtcpParameters.reducedSize) {\r\n sdp += 'a=rtcp-rsize\\r\\n';\r\n }\r\n });\r\n\r\n var desc = new window.RTCSessionDescription({\r\n type: 'answer',\r\n sdp: sdp\r\n });\r\n return Promise.resolve(desc);\r\n };\r\n\r\n RTCPeerConnection.prototype.addIceCandidate = function (candidate) {\r\n var pc = this;\r\n var sections;\r\n if (candidate && !(candidate.sdpMLineIndex !== undefined ||\r\n candidate.sdpMid)) {\r\n return Promise.reject(new TypeError('sdpMLineIndex or sdpMid required'));\r\n }\r\n\r\n // TODO: needs to go into ops queue.\r\n return new Promise(function (resolve, reject) {\r\n if (!pc._remoteDescription) {\r\n return reject(makeError('InvalidStateError',\r\n 'Can not add ICE candidate without a remote description'));\r\n } else if (!candidate || candidate.candidate === '') {\r\n for (var j = 0; j < pc.transceivers.length; j++) {\r\n if (pc.transceivers[j].rejected) {\r\n continue;\r\n }\r\n pc.transceivers[j].iceTransport.addRemoteCandidate({});\r\n sections = SDPUtils.getMediaSections(pc._remoteDescription.sdp);\r\n sections[j] += 'a=end-of-candidates\\r\\n';\r\n pc._remoteDescription.sdp =\r\n SDPUtils.getDescription(pc._remoteDescription.sdp) +\r\n sections.join('');\r\n if (pc.usingBundle) {\r\n break;\r\n }\r\n }\r\n } else {\r\n var sdpMLineIndex = candidate.sdpMLineIndex;\r\n if (candidate.sdpMid) {\r\n for (var i = 0; i < pc.transceivers.length; i++) {\r\n if (pc.transceivers[i].mid === candidate.sdpMid) {\r\n sdpMLineIndex = i;\r\n break;\r\n }\r\n }\r\n }\r\n var transceiver = pc.transceivers[sdpMLineIndex];\r\n if (transceiver) {\r\n if (transceiver.rejected) {\r\n return resolve();\r\n }\r\n var cand = Object.keys(candidate.candidate).length > 0 ?\r\n SDPUtils.parseCandidate(candidate.candidate) : {};\r\n // Ignore Chrome's invalid candidates since Edge does not like them.\r\n if (cand.protocol === 'tcp' && (cand.port === 0 || cand.port === 9)) {\r\n return resolve();\r\n }\r\n // Ignore RTCP candidates, we assume RTCP-MUX.\r\n if (cand.component && cand.component !== 1) {\r\n return resolve();\r\n }\r\n // when using bundle, avoid adding candidates to the wrong\r\n // ice transport. And avoid adding candidates added in the SDP.\r\n if (sdpMLineIndex === 0 || (sdpMLineIndex > 0 &&\r\n transceiver.iceTransport !== pc.transceivers[0].iceTransport)) {\r\n if (!maybeAddCandidate(transceiver.iceTransport, cand)) {\r\n return reject(makeError('OperationError',\r\n 'Can not add ICE candidate'));\r\n }\r\n }\r\n\r\n // update the remoteDescription.\r\n var candidateString = candidate.candidate.trim();\r\n if (candidateString.indexOf('a=') === 0) {\r\n candidateString = candidateString.substr(2);\r\n }\r\n sections = SDPUtils.getMediaSections(pc._remoteDescription.sdp);\r\n sections[sdpMLineIndex] += 'a=' +\r\n (cand.type ? candidateString : 'end-of-candidates')\r\n + '\\r\\n';\r\n pc._remoteDescription.sdp =\r\n SDPUtils.getDescription(pc._remoteDescription.sdp) +\r\n sections.join('');\r\n } else {\r\n return reject(makeError('OperationError',\r\n 'Can not add ICE candidate'));\r\n }\r\n }\r\n resolve();\r\n });\r\n };\r\n\r\n RTCPeerConnection.prototype.getStats = function (selector) {\r\n if (selector && selector instanceof window.MediaStreamTrack) {\r\n var senderOrReceiver = null;\r\n this.transceivers.forEach(function (transceiver) {\r\n if (transceiver.rtpSender &&\r\n transceiver.rtpSender.track === selector) {\r\n senderOrReceiver = transceiver.rtpSender;\r\n } else if (transceiver.rtpReceiver &&\r\n transceiver.rtpReceiver.track === selector) {\r\n senderOrReceiver = transceiver.rtpReceiver;\r\n }\r\n });\r\n if (!senderOrReceiver) {\r\n throw makeError('InvalidAccessError', 'Invalid selector.');\r\n }\r\n return senderOrReceiver.getStats();\r\n }\r\n\r\n var promises = [];\r\n this.transceivers.forEach(function (transceiver) {\r\n ['rtpSender', 'rtpReceiver', 'iceGatherer', 'iceTransport',\r\n 'dtlsTransport'].forEach(function (method) {\r\n if (transceiver[method]) {\r\n promises.push(transceiver[method].getStats());\r\n }\r\n });\r\n });\r\n return Promise.all(promises).then(function (allStats) {\r\n var results = new Map();\r\n allStats.forEach(function (stats) {\r\n stats.forEach(function (stat) {\r\n results.set(stat.id, stat);\r\n });\r\n });\r\n return results;\r\n });\r\n };\r\n\r\n // fix low-level stat names and return Map instead of object.\r\n var ortcObjects = ['RTCRtpSender', 'RTCRtpReceiver', 'RTCIceGatherer',\r\n 'RTCIceTransport', 'RTCDtlsTransport'];\r\n ortcObjects.forEach(function (ortcObjectName) {\r\n var obj = window[ortcObjectName];\r\n if (obj && obj.prototype && obj.prototype.getStats) {\r\n var nativeGetstats = obj.prototype.getStats;\r\n obj.prototype.getStats = function () {\r\n return nativeGetstats.apply(this)\r\n .then(function (nativeStats) {\r\n var mapStats = new Map();\r\n Object.keys(nativeStats).forEach(function (id) {\r\n nativeStats[id].type = fixStatsType(nativeStats[id]);\r\n mapStats.set(id, nativeStats[id]);\r\n });\r\n return mapStats;\r\n });\r\n };\r\n }\r\n });\r\n\r\n // legacy callback shims. Should be moved to adapter.js some days.\r\n var methods = ['createOffer', 'createAnswer'];\r\n methods.forEach(function (method) {\r\n var nativeMethod = RTCPeerConnection.prototype[method];\r\n RTCPeerConnection.prototype[method] = function () {\r\n var args = arguments;\r\n if (typeof args[0] === 'function' ||\r\n typeof args[1] === 'function') { // legacy\r\n return nativeMethod.apply(this, [arguments[2]])\r\n .then(function (description) {\r\n if (typeof args[0] === 'function') {\r\n args[0].apply(null, [description]);\r\n }\r\n }, function (error) {\r\n if (typeof args[1] === 'function') {\r\n args[1].apply(null, [error]);\r\n }\r\n });\r\n }\r\n return nativeMethod.apply(this, arguments);\r\n };\r\n });\r\n\r\n methods = ['setLocalDescription', 'setRemoteDescription', 'addIceCandidate'];\r\n methods.forEach(function (method) {\r\n var nativeMethod = RTCPeerConnection.prototype[method];\r\n RTCPeerConnection.prototype[method] = function () {\r\n var args = arguments;\r\n if (typeof args[1] === 'function' ||\r\n typeof args[2] === 'function') { // legacy\r\n return nativeMethod.apply(this, arguments)\r\n .then(function () {\r\n if (typeof args[1] === 'function') {\r\n args[1].apply(null);\r\n }\r\n }, function (error) {\r\n if (typeof args[2] === 'function') {\r\n args[2].apply(null, [error]);\r\n }\r\n });\r\n }\r\n return nativeMethod.apply(this, arguments);\r\n };\r\n });\r\n\r\n // getStats is special. It doesn't have a spec legacy method yet we support\r\n // getStats(something, cb) without error callbacks.\r\n ['getStats'].forEach(function (method) {\r\n var nativeMethod = RTCPeerConnection.prototype[method];\r\n RTCPeerConnection.prototype[method] = function () {\r\n var args = arguments;\r\n if (typeof args[1] === 'function') {\r\n return nativeMethod.apply(this, arguments)\r\n .then(function () {\r\n if (typeof args[1] === 'function') {\r\n args[1].apply(null);\r\n }\r\n });\r\n }\r\n return nativeMethod.apply(this, arguments);\r\n };\r\n });\r\n\r\n return RTCPeerConnection;\r\n };\r\n\r\n }, { \"sdp\": 17 }], 17: [function (require, module, exports) {\r\n /* eslint-env node */\r\n 'use strict';\r\n\r\n // SDP helpers.\r\n var SDPUtils = {};\r\n\r\n // Generate an alphanumeric identifier for cname or mids.\r\n // TODO: use UUIDs instead? https://gist.github.com/jed/982883\r\n SDPUtils.generateIdentifier = function () {\r\n return Math.random().toString(36).substr(2, 10);\r\n };\r\n\r\n // The RTCP CNAME used by all peerconnections from the same JS.\r\n SDPUtils.localCName = SDPUtils.generateIdentifier();\r\n\r\n // Splits SDP into lines, dealing with both CRLF and LF.\r\n SDPUtils.splitLines = function (blob) {\r\n return blob.trim().split('\\n').map(function (line) {\r\n return line.trim();\r\n });\r\n };\r\n // Splits SDP into sessionpart and mediasections. Ensures CRLF.\r\n SDPUtils.splitSections = function (blob) {\r\n var parts = blob.split('\\nm=');\r\n return parts.map(function (part, index) {\r\n return (index > 0 ? 'm=' + part : part).trim() + '\\r\\n';\r\n });\r\n };\r\n\r\n // returns the session description.\r\n SDPUtils.getDescription = function (blob) {\r\n var sections = SDPUtils.splitSections(blob);\r\n return sections && sections[0];\r\n };\r\n\r\n // returns the individual media sections.\r\n SDPUtils.getMediaSections = function (blob) {\r\n var sections = SDPUtils.splitSections(blob);\r\n sections.shift();\r\n return sections;\r\n };\r\n\r\n // Returns lines that start with a certain prefix.\r\n SDPUtils.matchPrefix = function (blob, prefix) {\r\n return SDPUtils.splitLines(blob).filter(function (line) {\r\n return line.indexOf(prefix) === 0;\r\n });\r\n };\r\n\r\n // Parses an ICE candidate line. Sample input:\r\n // candidate:702786350 2 udp 41819902 8.8.8.8 60769 typ relay raddr 8.8.8.8\r\n // rport 55996\"\r\n SDPUtils.parseCandidate = function (line) {\r\n var parts;\r\n // Parse both variants.\r\n if (line.indexOf('a=candidate:') === 0) {\r\n parts = line.substring(12).split(' ');\r\n } else {\r\n parts = line.substring(10).split(' ');\r\n }\r\n\r\n var candidate = {\r\n foundation: parts[0],\r\n component: parseInt(parts[1], 10),\r\n protocol: parts[2].toLowerCase(),\r\n priority: parseInt(parts[3], 10),\r\n ip: parts[4],\r\n address: parts[4], // address is an alias for ip.\r\n port: parseInt(parts[5], 10),\r\n // skip parts[6] == 'typ'\r\n type: parts[7]\r\n };\r\n\r\n for (var i = 8; i < parts.length; i += 2) {\r\n switch (parts[i]) {\r\n case 'raddr':\r\n candidate.relatedAddress = parts[i + 1];\r\n break;\r\n case 'rport':\r\n candidate.relatedPort = parseInt(parts[i + 1], 10);\r\n break;\r\n case 'tcptype':\r\n candidate.tcpType = parts[i + 1];\r\n break;\r\n case 'ufrag':\r\n candidate.ufrag = parts[i + 1]; // for backward compability.\r\n candidate.usernameFragment = parts[i + 1];\r\n break;\r\n default: // extension handling, in particular ufrag\r\n candidate[parts[i]] = parts[i + 1];\r\n break;\r\n }\r\n }\r\n return candidate;\r\n };\r\n\r\n // Translates a candidate object into SDP candidate attribute.\r\n SDPUtils.writeCandidate = function (candidate) {\r\n var sdp = [];\r\n sdp.push(candidate.foundation);\r\n sdp.push(candidate.component);\r\n sdp.push(candidate.protocol.toUpperCase());\r\n sdp.push(candidate.priority);\r\n sdp.push(candidate.address || candidate.ip);\r\n sdp.push(candidate.port);\r\n\r\n var type = candidate.type;\r\n sdp.push('typ');\r\n sdp.push(type);\r\n if (type !== 'host' && candidate.relatedAddress &&\r\n candidate.relatedPort) {\r\n sdp.push('raddr');\r\n sdp.push(candidate.relatedAddress);\r\n sdp.push('rport');\r\n sdp.push(candidate.relatedPort);\r\n }\r\n if (candidate.tcpType && candidate.protocol.toLowerCase() === 'tcp') {\r\n sdp.push('tcptype');\r\n sdp.push(candidate.tcpType);\r\n }\r\n if (candidate.usernameFragment || candidate.ufrag) {\r\n sdp.push('ufrag');\r\n sdp.push(candidate.usernameFragment || candidate.ufrag);\r\n }\r\n return 'candidate:' + sdp.join(' ');\r\n };\r\n\r\n // Parses an ice-options line, returns an array of option tags.\r\n // a=ice-options:foo bar\r\n SDPUtils.parseIceOptions = function (line) {\r\n return line.substr(14).split(' ');\r\n };\r\n\r\n // Parses an rtpmap line, returns RTCRtpCoddecParameters. Sample input:\r\n // a=rtpmap:111 opus/48000/2\r\n SDPUtils.parseRtpMap = function (line) {\r\n var parts = line.substr(9).split(' ');\r\n var parsed = {\r\n payloadType: parseInt(parts.shift(), 10) // was: id\r\n };\r\n\r\n parts = parts[0].split('/');\r\n\r\n parsed.name = parts[0];\r\n parsed.clockRate = parseInt(parts[1], 10); // was: clockrate\r\n parsed.channels = parts.length === 3 ? parseInt(parts[2], 10) : 1;\r\n // legacy alias, got renamed back to channels in ORTC.\r\n parsed.numChannels = parsed.channels;\r\n return parsed;\r\n };\r\n\r\n // Generate an a=rtpmap line from RTCRtpCodecCapability or\r\n // RTCRtpCodecParameters.\r\n SDPUtils.writeRtpMap = function (codec) {\r\n var pt = codec.payloadType;\r\n if (codec.preferredPayloadType !== undefined) {\r\n pt = codec.preferredPayloadType;\r\n }\r\n var channels = codec.channels || codec.numChannels || 1;\r\n return 'a=rtpmap:' + pt + ' ' + codec.name + '/' + codec.clockRate +\r\n (channels !== 1 ? '/' + channels : '') + '\\r\\n';\r\n };\r\n\r\n // Parses an a=extmap line (headerextension from RFC 5285). Sample input:\r\n // a=extmap:2 urn:ietf:params:rtp-hdrext:toffset\r\n // a=extmap:2/sendonly urn:ietf:params:rtp-hdrext:toffset\r\n SDPUtils.parseExtmap = function (line) {\r\n var parts = line.substr(9).split(' ');\r\n return {\r\n id: parseInt(parts[0], 10),\r\n direction: parts[0].indexOf('/') > 0 ? parts[0].split('/')[1] : 'sendrecv',\r\n uri: parts[1]\r\n };\r\n };\r\n\r\n // Generates a=extmap line from RTCRtpHeaderExtensionParameters or\r\n // RTCRtpHeaderExtension.\r\n SDPUtils.writeExtmap = function (headerExtension) {\r\n return 'a=extmap:' + (headerExtension.id || headerExtension.preferredId) +\r\n (headerExtension.direction && headerExtension.direction !== 'sendrecv'\r\n ? '/' + headerExtension.direction\r\n : '') +\r\n ' ' + headerExtension.uri + '\\r\\n';\r\n };\r\n\r\n // Parses an ftmp line, returns dictionary. Sample input:\r\n // a=fmtp:96 vbr=on;cng=on\r\n // Also deals with vbr=on; cng=on\r\n SDPUtils.parseFmtp = function (line) {\r\n var parsed = {};\r\n var kv;\r\n var parts = line.substr(line.indexOf(' ') + 1).split(';');\r\n for (var j = 0; j < parts.length; j++) {\r\n kv = parts[j].trim().split('=');\r\n parsed[kv[0].trim()] = kv[1];\r\n }\r\n return parsed;\r\n };\r\n\r\n // Generates an a=ftmp line from RTCRtpCodecCapability or RTCRtpCodecParameters.\r\n SDPUtils.writeFmtp = function (codec) {\r\n var line = '';\r\n var pt = codec.payloadType;\r\n if (codec.preferredPayloadType !== undefined) {\r\n pt = codec.preferredPayloadType;\r\n }\r\n if (codec.parameters && Object.keys(codec.parameters).length) {\r\n var params = [];\r\n Object.keys(codec.parameters).forEach(function (param) {\r\n if (codec.parameters[param]) {\r\n params.push(param + '=' + codec.parameters[param]);\r\n } else {\r\n params.push(param);\r\n }\r\n });\r\n line += 'a=fmtp:' + pt + ' ' + params.join(';') + '\\r\\n';\r\n }\r\n return line;\r\n };\r\n\r\n // Parses an rtcp-fb line, returns RTCPRtcpFeedback object. Sample input:\r\n // a=rtcp-fb:98 nack rpsi\r\n SDPUtils.parseRtcpFb = function (line) {\r\n var parts = line.substr(line.indexOf(' ') + 1).split(' ');\r\n return {\r\n type: parts.shift(),\r\n parameter: parts.join(' ')\r\n };\r\n };\r\n // Generate a=rtcp-fb lines from RTCRtpCodecCapability or RTCRtpCodecParameters.\r\n SDPUtils.writeRtcpFb = function (codec) {\r\n var lines = '';\r\n var pt = codec.payloadType;\r\n if (codec.preferredPayloadType !== undefined) {\r\n pt = codec.preferredPayloadType;\r\n }\r\n if (codec.rtcpFeedback && codec.rtcpFeedback.length) {\r\n // FIXME: special handling for trr-int?\r\n codec.rtcpFeedback.forEach(function (fb) {\r\n lines += 'a=rtcp-fb:' + pt + ' ' + fb.type +\r\n (fb.parameter && fb.parameter.length ? ' ' + fb.parameter : '') +\r\n '\\r\\n';\r\n });\r\n }\r\n return lines;\r\n };\r\n\r\n // Parses an RFC 5576 ssrc media attribute. Sample input:\r\n // a=ssrc:3735928559 cname:something\r\n SDPUtils.parseSsrcMedia = function (line) {\r\n var sp = line.indexOf(' ');\r\n var parts = {\r\n ssrc: parseInt(line.substr(7, sp - 7), 10)\r\n };\r\n var colon = line.indexOf(':', sp);\r\n if (colon > -1) {\r\n parts.attribute = line.substr(sp + 1, colon - sp - 1);\r\n parts.value = line.substr(colon + 1);\r\n } else {\r\n parts.attribute = line.substr(sp + 1);\r\n }\r\n return parts;\r\n };\r\n\r\n SDPUtils.parseSsrcGroup = function (line) {\r\n var parts = line.substr(13).split(' ');\r\n return {\r\n semantics: parts.shift(),\r\n ssrcs: parts.map(function (ssrc) {\r\n return parseInt(ssrc, 10);\r\n })\r\n };\r\n };\r\n\r\n // Extracts the MID (RFC 5888) from a media section.\r\n // returns the MID or undefined if no mid line was found.\r\n SDPUtils.getMid = function (mediaSection) {\r\n var mid = SDPUtils.matchPrefix(mediaSection, 'a=mid:')[0];\r\n if (mid) {\r\n return mid.substr(6);\r\n }\r\n };\r\n\r\n SDPUtils.parseFingerprint = function (line) {\r\n var parts = line.substr(14).split(' ');\r\n return {\r\n algorithm: parts[0].toLowerCase(), // algorithm is case-sensitive in Edge.\r\n value: parts[1]\r\n };\r\n };\r\n\r\n // Extracts DTLS parameters from SDP media section or sessionpart.\r\n // FIXME: for consistency with other functions this should only\r\n // get the fingerprint line as input. See also getIceParameters.\r\n SDPUtils.getDtlsParameters = function (mediaSection, sessionpart) {\r\n var lines = SDPUtils.matchPrefix(mediaSection + sessionpart,\r\n 'a=fingerprint:');\r\n // Note: a=setup line is ignored since we use the 'auto' role.\r\n // Note2: 'algorithm' is not case sensitive except in Edge.\r\n return {\r\n role: 'auto',\r\n fingerprints: lines.map(SDPUtils.parseFingerprint)\r\n };\r\n };\r\n\r\n // Serializes DTLS parameters to SDP.\r\n SDPUtils.writeDtlsParameters = function (params, setupType) {\r\n var sdp = 'a=setup:' + setupType + '\\r\\n';\r\n params.fingerprints.forEach(function (fp) {\r\n sdp += 'a=fingerprint:' + fp.algorithm + ' ' + fp.value + '\\r\\n';\r\n });\r\n return sdp;\r\n };\r\n // Parses ICE information from SDP media section or sessionpart.\r\n // FIXME: for consistency with other functions this should only\r\n // get the ice-ufrag and ice-pwd lines as input.\r\n SDPUtils.getIceParameters = function (mediaSection, sessionpart) {\r\n var lines = SDPUtils.splitLines(mediaSection);\r\n // Search in session part, too.\r\n lines = lines.concat(SDPUtils.splitLines(sessionpart));\r\n var iceParameters = {\r\n usernameFragment: lines.filter(function (line) {\r\n return line.indexOf('a=ice-ufrag:') === 0;\r\n })[0].substr(12),\r\n password: lines.filter(function (line) {\r\n return line.indexOf('a=ice-pwd:') === 0;\r\n })[0].substr(10)\r\n };\r\n return iceParameters;\r\n };\r\n\r\n // Serializes ICE parameters to SDP.\r\n SDPUtils.writeIceParameters = function (params) {\r\n return 'a=ice-ufrag:' + params.usernameFragment + '\\r\\n' +\r\n 'a=ice-pwd:' + params.password + '\\r\\n';\r\n };\r\n\r\n // Parses the SDP media section and returns RTCRtpParameters.\r\n SDPUtils.parseRtpParameters = function (mediaSection) {\r\n var description = {\r\n codecs: [],\r\n headerExtensions: [],\r\n fecMechanisms: [],\r\n rtcp: []\r\n };\r\n var lines = SDPUtils.splitLines(mediaSection);\r\n var mline = lines[0].split(' ');\r\n for (var i = 3; i < mline.length; i++) { // find all codecs from mline[3..]\r\n var pt = mline[i];\r\n var rtpmapline = SDPUtils.matchPrefix(\r\n mediaSection, 'a=rtpmap:' + pt + ' ')[0];\r\n if (rtpmapline) {\r\n var codec = SDPUtils.parseRtpMap(rtpmapline);\r\n var fmtps = SDPUtils.matchPrefix(\r\n mediaSection, 'a=fmtp:' + pt + ' ');\r\n // Only the first a=fmtp: is considered.\r\n codec.parameters = fmtps.length ? SDPUtils.parseFmtp(fmtps[0]) : {};\r\n codec.rtcpFeedback = SDPUtils.matchPrefix(\r\n mediaSection, 'a=rtcp-fb:' + pt + ' ')\r\n .map(SDPUtils.parseRtcpFb);\r\n description.codecs.push(codec);\r\n // parse FEC mechanisms from rtpmap lines.\r\n switch (codec.name.toUpperCase()) {\r\n case 'RED':\r\n case 'ULPFEC':\r\n description.fecMechanisms.push(codec.name.toUpperCase());\r\n break;\r\n default: // only RED and ULPFEC are recognized as FEC mechanisms.\r\n break;\r\n }\r\n }\r\n }\r\n SDPUtils.matchPrefix(mediaSection, 'a=extmap:').forEach(function (line) {\r\n description.headerExtensions.push(SDPUtils.parseExtmap(line));\r\n });\r\n // FIXME: parse rtcp.\r\n return description;\r\n };\r\n\r\n // Generates parts of the SDP media section describing the capabilities /\r\n // parameters.\r\n SDPUtils.writeRtpDescription = function (kind, caps) {\r\n var sdp = '';\r\n\r\n // Build the mline.\r\n sdp += 'm=' + kind + ' ';\r\n sdp += caps.codecs.length > 0 ? '9' : '0'; // reject if no codecs.\r\n sdp += ' UDP/TLS/RTP/SAVPF ';\r\n sdp += caps.codecs.map(function (codec) {\r\n if (codec.preferredPayloadType !== undefined) {\r\n return codec.preferredPayloadType;\r\n }\r\n return codec.payloadType;\r\n }).join(' ') + '\\r\\n';\r\n\r\n sdp += 'c=IN IP4 0.0.0.0\\r\\n';\r\n sdp += 'a=rtcp:9 IN IP4 0.0.0.0\\r\\n';\r\n\r\n // Add a=rtpmap lines for each codec. Also fmtp and rtcp-fb.\r\n caps.codecs.forEach(function (codec) {\r\n sdp += SDPUtils.writeRtpMap(codec);\r\n sdp += SDPUtils.writeFmtp(codec);\r\n sdp += SDPUtils.writeRtcpFb(codec);\r\n });\r\n var maxptime = 0;\r\n caps.codecs.forEach(function (codec) {\r\n if (codec.maxptime > maxptime) {\r\n maxptime = codec.maxptime;\r\n }\r\n });\r\n if (maxptime > 0) {\r\n sdp += 'a=maxptime:' + maxptime + '\\r\\n';\r\n }\r\n sdp += 'a=rtcp-mux\\r\\n';\r\n\r\n if (caps.headerExtensions) {\r\n caps.headerExtensions.forEach(function (extension) {\r\n sdp += SDPUtils.writeExtmap(extension);\r\n });\r\n }\r\n // FIXME: write fecMechanisms.\r\n return sdp;\r\n };\r\n\r\n // Parses the SDP media section and returns an array of\r\n // RTCRtpEncodingParameters.\r\n SDPUtils.parseRtpEncodingParameters = function (mediaSection) {\r\n var encodingParameters = [];\r\n var description = SDPUtils.parseRtpParameters(mediaSection);\r\n var hasRed = description.fecMechanisms.indexOf('RED') !== -1;\r\n var hasUlpfec = description.fecMechanisms.indexOf('ULPFEC') !== -1;\r\n\r\n // filter a=ssrc:... cname:, ignore PlanB-msid\r\n var ssrcs = SDPUtils.matchPrefix(mediaSection, 'a=ssrc:')\r\n .map(function (line) {\r\n return SDPUtils.parseSsrcMedia(line);\r\n })\r\n .filter(function (parts) {\r\n return parts.attribute === 'cname';\r\n });\r\n var primarySsrc = ssrcs.length > 0 && ssrcs[0].ssrc;\r\n var secondarySsrc;\r\n\r\n var flows = SDPUtils.matchPrefix(mediaSection, 'a=ssrc-group:FID')\r\n .map(function (line) {\r\n var parts = line.substr(17).split(' ');\r\n return parts.map(function (part) {\r\n return parseInt(part, 10);\r\n });\r\n });\r\n if (flows.length > 0 && flows[0].length > 1 && flows[0][0] === primarySsrc) {\r\n secondarySsrc = flows[0][1];\r\n }\r\n\r\n description.codecs.forEach(function (codec) {\r\n if (codec.name.toUpperCase() === 'RTX' && codec.parameters.apt) {\r\n var encParam = {\r\n ssrc: primarySsrc,\r\n codecPayloadType: parseInt(codec.parameters.apt, 10)\r\n };\r\n if (primarySsrc && secondarySsrc) {\r\n encParam.rtx = { ssrc: secondarySsrc };\r\n }\r\n encodingParameters.push(encParam);\r\n if (hasRed) {\r\n encParam = JSON.parse(JSON.stringify(encParam));\r\n encParam.fec = {\r\n ssrc: primarySsrc,\r\n mechanism: hasUlpfec ? 'red+ulpfec' : 'red'\r\n };\r\n encodingParameters.push(encParam);\r\n }\r\n }\r\n });\r\n if (encodingParameters.length === 0 && primarySsrc) {\r\n encodingParameters.push({\r\n ssrc: primarySsrc\r\n });\r\n }\r\n\r\n // we support both b=AS and b=TIAS but interpret AS as TIAS.\r\n var bandwidth = SDPUtils.matchPrefix(mediaSection, 'b=');\r\n if (bandwidth.length) {\r\n if (bandwidth[0].indexOf('b=TIAS:') === 0) {\r\n bandwidth = parseInt(bandwidth[0].substr(7), 10);\r\n } else if (bandwidth[0].indexOf('b=AS:') === 0) {\r\n // use formula from JSEP to convert b=AS to TIAS value.\r\n bandwidth = parseInt(bandwidth[0].substr(5), 10) * 1000 * 0.95\r\n - (50 * 40 * 8);\r\n } else {\r\n bandwidth = undefined;\r\n }\r\n encodingParameters.forEach(function (params) {\r\n params.maxBitrate = bandwidth;\r\n });\r\n }\r\n return encodingParameters;\r\n };\r\n\r\n // parses http://draft.ortc.org/#rtcrtcpparameters*\r\n SDPUtils.parseRtcpParameters = function (mediaSection) {\r\n var rtcpParameters = {};\r\n\r\n // Gets the first SSRC. Note tha with RTX there might be multiple\r\n // SSRCs.\r\n var remoteSsrc = SDPUtils.matchPrefix(mediaSection, 'a=ssrc:')\r\n .map(function (line) {\r\n return SDPUtils.parseSsrcMedia(line);\r\n })\r\n .filter(function (obj) {\r\n return obj.attribute === 'cname';\r\n })[0];\r\n if (remoteSsrc) {\r\n rtcpParameters.cname = remoteSsrc.value;\r\n rtcpParameters.ssrc = remoteSsrc.ssrc;\r\n }\r\n\r\n // Edge uses the compound attribute instead of reducedSize\r\n // compound is !reducedSize\r\n var rsize = SDPUtils.matchPrefix(mediaSection, 'a=rtcp-rsize');\r\n rtcpParameters.reducedSize = rsize.length > 0;\r\n rtcpParameters.compound = rsize.length === 0;\r\n\r\n // parses the rtcp-mux attrіbute.\r\n // Note that Edge does not support unmuxed RTCP.\r\n var mux = SDPUtils.matchPrefix(mediaSection, 'a=rtcp-mux');\r\n rtcpParameters.mux = mux.length > 0;\r\n\r\n return rtcpParameters;\r\n };\r\n\r\n // parses either a=msid: or a=ssrc:... msid lines and returns\r\n // the id of the MediaStream and MediaStreamTrack.\r\n SDPUtils.parseMsid = function (mediaSection) {\r\n var parts;\r\n var spec = SDPUtils.matchPrefix(mediaSection, 'a=msid:');\r\n if (spec.length === 1) {\r\n parts = spec[0].substr(7).split(' ');\r\n return { stream: parts[0], track: parts[1] };\r\n }\r\n var planB = SDPUtils.matchPrefix(mediaSection, 'a=ssrc:')\r\n .map(function (line) {\r\n return SDPUtils.parseSsrcMedia(line);\r\n })\r\n .filter(function (msidParts) {\r\n return msidParts.attribute === 'msid';\r\n });\r\n if (planB.length > 0) {\r\n parts = planB[0].value.split(' ');\r\n return { stream: parts[0], track: parts[1] };\r\n }\r\n };\r\n\r\n // Generate a session ID for SDP.\r\n // https://tools.ietf.org/html/draft-ietf-rtcweb-jsep-20#section-5.2.1\r\n // recommends using a cryptographically random +ve 64-bit value\r\n // but right now this should be acceptable and within the right range\r\n SDPUtils.generateSessionId = function () {\r\n return Math.random().toString().substr(2, 21);\r\n };\r\n\r\n // Write boilder plate for start of SDP\r\n // sessId argument is optional - if not supplied it will\r\n // be generated randomly\r\n // sessVersion is optional and defaults to 2\r\n // sessUser is optional and defaults to 'thisisadapterortc'\r\n SDPUtils.writeSessionBoilerplate = function (sessId, sessVer, sessUser) {\r\n var sessionId;\r\n var version = sessVer !== undefined ? sessVer : 2;\r\n if (sessId) {\r\n sessionId = sessId;\r\n } else {\r\n sessionId = SDPUtils.generateSessionId();\r\n }\r\n var user = sessUser || 'thisisadapterortc';\r\n // FIXME: sess-id should be an NTP timestamp.\r\n return 'v=0\\r\\n' +\r\n 'o=' + user + ' ' + sessionId + ' ' + version +\r\n ' IN IP4 127.0.0.1\\r\\n' +\r\n 's=-\\r\\n' +\r\n 't=0 0\\r\\n';\r\n };\r\n\r\n SDPUtils.writeMediaSection = function (transceiver, caps, type, stream) {\r\n var sdp = SDPUtils.writeRtpDescription(transceiver.kind, caps);\r\n\r\n // Map ICE parameters (ufrag, pwd) to SDP.\r\n sdp += SDPUtils.writeIceParameters(\r\n transceiver.iceGatherer.getLocalParameters());\r\n\r\n // Map DTLS parameters to SDP.\r\n sdp += SDPUtils.writeDtlsParameters(\r\n transceiver.dtlsTransport.getLocalParameters(),\r\n type === 'offer' ? 'actpass' : 'active');\r\n\r\n sdp += 'a=mid:' + transceiver.mid + '\\r\\n';\r\n\r\n if (transceiver.direction) {\r\n sdp += 'a=' + transceiver.direction + '\\r\\n';\r\n } else if (transceiver.rtpSender && transceiver.rtpReceiver) {\r\n sdp += 'a=sendrecv\\r\\n';\r\n } else if (transceiver.rtpSender) {\r\n sdp += 'a=sendonly\\r\\n';\r\n } else if (transceiver.rtpReceiver) {\r\n sdp += 'a=recvonly\\r\\n';\r\n } else {\r\n sdp += 'a=inactive\\r\\n';\r\n }\r\n\r\n if (transceiver.rtpSender) {\r\n // spec.\r\n var msid = 'msid:' + stream.id + ' ' +\r\n transceiver.rtpSender.track.id + '\\r\\n';\r\n sdp += 'a=' + msid;\r\n\r\n // for Chrome.\r\n sdp += 'a=ssrc:' + transceiver.sendEncodingParameters[0].ssrc +\r\n ' ' + msid;\r\n if (transceiver.sendEncodingParameters[0].rtx) {\r\n sdp += 'a=ssrc:' + transceiver.sendEncodingParameters[0].rtx.ssrc +\r\n ' ' + msid;\r\n sdp += 'a=ssrc-group:FID ' +\r\n transceiver.sendEncodingParameters[0].ssrc + ' ' +\r\n transceiver.sendEncodingParameters[0].rtx.ssrc +\r\n '\\r\\n';\r\n }\r\n }\r\n // FIXME: this should be written by writeRtpDescription.\r\n sdp += 'a=ssrc:' + transceiver.sendEncodingParameters[0].ssrc +\r\n ' cname:' + SDPUtils.localCName + '\\r\\n';\r\n if (transceiver.rtpSender && transceiver.sendEncodingParameters[0].rtx) {\r\n sdp += 'a=ssrc:' + transceiver.sendEncodingParameters[0].rtx.ssrc +\r\n ' cname:' + SDPUtils.localCName + '\\r\\n';\r\n }\r\n return sdp;\r\n };\r\n\r\n // Gets the direction from the mediaSection or the sessionpart.\r\n SDPUtils.getDirection = function (mediaSection, sessionpart) {\r\n // Look for sendrecv, sendonly, recvonly, inactive, default to sendrecv.\r\n var lines = SDPUtils.splitLines(mediaSection);\r\n for (var i = 0; i < lines.length; i++) {\r\n switch (lines[i]) {\r\n case 'a=sendrecv':\r\n case 'a=sendonly':\r\n case 'a=recvonly':\r\n case 'a=inactive':\r\n return lines[i].substr(2);\r\n default:\r\n // FIXME: What should happen here?\r\n }\r\n }\r\n if (sessionpart) {\r\n return SDPUtils.getDirection(sessionpart);\r\n }\r\n return 'sendrecv';\r\n };\r\n\r\n SDPUtils.getKind = function (mediaSection) {\r\n var lines = SDPUtils.splitLines(mediaSection);\r\n var mline = lines[0].split(' ');\r\n return mline[0].substr(2);\r\n };\r\n\r\n SDPUtils.isRejected = function (mediaSection) {\r\n return mediaSection.split(' ', 2)[1] === '0';\r\n };\r\n\r\n SDPUtils.parseMLine = function (mediaSection) {\r\n var lines = SDPUtils.splitLines(mediaSection);\r\n var parts = lines[0].substr(2).split(' ');\r\n return {\r\n kind: parts[0],\r\n port: parseInt(parts[1], 10),\r\n protocol: parts[2],\r\n fmt: parts.slice(3).join(' ')\r\n };\r\n };\r\n\r\n SDPUtils.parseOLine = function (mediaSection) {\r\n var line = SDPUtils.matchPrefix(mediaSection, 'o=')[0];\r\n var parts = line.substr(2).split(' ');\r\n return {\r\n username: parts[0],\r\n sessionId: parts[1],\r\n sessionVersion: parseInt(parts[2], 10),\r\n netType: parts[3],\r\n addressType: parts[4],\r\n address: parts[5]\r\n };\r\n };\r\n\r\n // a very naive interpretation of a valid SDP.\r\n SDPUtils.isValidSDP = function (blob) {\r\n if (typeof blob !== 'string' || blob.length === 0) {\r\n return false;\r\n }\r\n var lines = SDPUtils.splitLines(blob);\r\n for (var i = 0; i < lines.length; i++) {\r\n if (lines[i].length < 2 || lines[i].charAt(1) !== '=') {\r\n return false;\r\n }\r\n // TODO: check the modifier a bit more.\r\n }\r\n return true;\r\n };\r\n\r\n // Expose public methods.\r\n if (typeof module === 'object') {\r\n module.exports = SDPUtils;\r\n }\r\n\r\n }, {}]\r\n }, {}, [1])(1)\r\n});\r\n","// Copyright (C) <2018> Intel Corporation\r\n//\r\n// SPDX-License-Identifier: Apache-2.0\r\n\r\n'use strict';\r\n/**\r\n * @class SignalingChannel\r\n * @classDesc Signaling module for Open WebRTC Toolkit P2P chat\r\n */\r\nfunction SignalingChannel() {\r\n\r\n this.onMessage = null;\r\n this.onServerDisconnected = null;\r\n\r\n var clientType = 'Web';\r\n var clientVersion = '4.2';\r\n\r\n var wsServer = null;\r\n\r\n var self = this;\r\n\r\n let connectPromise = null;\r\n\r\n var MAX_TRIALS = 10;\r\n var reconnectTimes = 0;\r\n\r\n /* TODO: Do remember to trigger onMessage when new message is received.\r\n if(this.onMessage)\r\n this.onMessage(from, message);\r\n */\r\n\r\n // message should a string.\r\n this.send = function (targetId, message) {\r\n var data = {\r\n data: message,\r\n to: targetId\r\n };\r\n return new Promise((resolve, reject) => {\r\n wsServer.emit('owt-message', data, function (err) {\r\n if (err)\r\n reject(err);\r\n else\r\n resolve();\r\n });\r\n });\r\n };\r\n\r\n this.connect = function (loginInfo) {\r\n var serverAddress = loginInfo.host;\r\n var token = loginInfo.token;\r\n var paramters = [];\r\n var queryString = null;\r\n paramters.push('clientType=' + clientType);\r\n paramters.push('clientVersion=' + clientVersion);\r\n if (token)\r\n paramters.push('token=' + encodeURIComponent(token));\r\n if (paramters)\r\n queryString = paramters.join('&');\r\n console.log('Query string: ' + queryString);\r\n var opts = {\r\n query: queryString,\r\n 'reconnection': true,\r\n 'reconnectionAttempts': MAX_TRIALS,\r\n 'force new connection': true\r\n };\r\n wsServer = io(serverAddress, opts);\r\n\r\n wsServer.on('connect', function () {\r\n reconnectTimes = 0;\r\n console.info('Connected to websocket server.');\r\n });\r\n\r\n wsServer.on('server-authenticated', function (data) {\r\n console.log('Authentication passed. User ID: ' + data.uid);\r\n if (connectPromise) {\r\n connectPromise.resolve(data.uid);\r\n }\r\n connectPromise = null;\r\n });\r\n\r\n wsServer.on('reconnecting', function () {\r\n reconnectTimes++;\r\n });\r\n\r\n wsServer.on('reconnect_failed', function () {\r\n if (self.onServerDisconnected)\r\n self.onServerDisconnected();\r\n })\r\n\r\n wsServer.on('server-disconnect', function () {\r\n reconnectTimes = MAX_TRIALS;\r\n })\r\n\r\n wsServer.on('disconnect', function () {\r\n console.info('Disconnected from websocket server.');\r\n if (reconnectTimes >= MAX_TRIALS && self.onServerDisconnected)\r\n self.onServerDisconnected();\r\n });\r\n\r\n wsServer.on('connect_failed', function (errorCode) {\r\n console.error('Connect to websocket server failed, error:' +\r\n errorCode + '.');\r\n if (connectPromise) {\r\n connectPromise.reject(parseInt(errorCode))\r\n }\r\n connectPromise = null;\r\n });\r\n\r\n wsServer.on('error', function (err) {\r\n console.error('Socket.IO error:' + err);\r\n if (err == '2103' && connectPromise) {\r\n connectPromise.reject(err)\r\n connectPromise = null;\r\n }\r\n });\r\n\r\n wsServer.on('owt-message', function (data) {\r\n console.info('Received woogeen message.');\r\n if (self.onMessage)\r\n self.onMessage(data.from, data.data);\r\n });\r\n\r\n return new Promise((resolve, reject) => {\r\n connectPromise = {\r\n resolve: resolve,\r\n reject: reject\r\n };\r\n });\r\n };\r\n\r\n this.disconnect = function () {\r\n reconnectTimes = MAX_TRIALS;\r\n if (wsServer)\r\n wsServer.close();\r\n return Promise.resolve();\r\n };\r\n\r\n}\r\n","/*\n * WebRTC SDK version 4.2.2\n */\n! function(e) {\n if (\"object\" == typeof exports && \"undefined\" != typeof module) module.exports = e();\n else if (\"function\" == typeof define && define.amd) define([], e);\n else {\n (\"undefined\" != typeof window ? window : \"undefined\" != typeof global ? global : \"undefined\" != typeof self ? self : this).Owt = e()\n }\n}(function() {\n return function() {\n return function e(t, n, r) {\n function i(a, s) {\n if (!n[a]) {\n if (!t[a]) {\n var c = \"function\" == typeof require && require;\n if (!s && c) return c(a, !0);\n if (o) return o(a, !0);\n var u = new Error(\"Cannot find module '\" + a + \"'\");\n throw u.code = \"MODULE_NOT_FOUND\", u\n }\n var d = n[a] = {\n exports: {}\n };\n t[a][0].call(d.exports, function(e) {\n return i(t[a][1][e] || e)\n }, d, d.exports, e, t, n, r)\n }\n return n[a].exports\n }\n for (var o = \"function\" == typeof require && require, a = 0; a < r.length; a++) i(r[a]);\n return i\n }\n }()({\n 1: [function(e, t, n) {\n \"use strict\";\n Object.defineProperty(n, \"__esModule\", {\n value: !0\n }), n.Base64 = void 0;\n var r = function() {\n var e, t, n, r = [\"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\", \"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"+\", \"/\"],\n i = [];\n for (n = 0; n < r.length; n += 1) i[r[n]] = n;\n var o = function(n) {\n e = n, t = 0\n },\n a = function() {\n if (!e) return -1;\n if (t >= e.length) return -1;\n var n = 255 & e.charCodeAt(t);\n return t += 1, n\n },\n s = function() {\n if (!e) return -1;\n for (;;) {\n if (t >= e.length) return -1;\n var n = e.charAt(t);\n if (t += 1, i[n]) return i[n];\n if (\"A\" === n) return 0\n }\n },\n c = function(e) {\n return 1 === (e = e.toString(16)).length && (e = \"0\" + e), e = \"%\" + e, unescape(e)\n };\n return {\n encodeBase64: function(e) {\n var t, n;\n o(e), t = \"\";\n var i = new Array(3);\n for (n = !1; !n && -1 !== (i[0] = a());) i[1] = a(), i[2] = a(), t += r[i[0] >> 2], -1 !== i[1] ? (t += r[i[0] << 4 & 48 | i[1] >> 4], -1 !== i[2] ? (t += r[i[1] << 2 & 60 | i[2] >> 6], t += r[63 & i[2]]) : (t += r[i[1] << 2 & 60], t += \"=\", n = !0)) : (t += r[i[0] << 4 & 48], t += \"=\", t += \"=\", n = !0);\n return t\n },\n decodeBase64: function(e) {\n var t, n;\n o(e), t = \"\";\n var r = new Array(4);\n for (n = !1; !n && -1 !== (r[0] = s()) && -1 !== (r[1] = s());) r[2] = s(), r[3] = s(), t += c(r[0] << 2 & 255 | r[1] >> 4), -1 !== r[2] ? (t += c(r[1] << 4 & 255 | r[2] >> 2), -1 !== r[3] ? t += c(r[2] << 6 & 255 | r[3]) : n = !0) : n = !0;\n return t\n }\n }\n }();\n n.Base64 = r\n }, {}],\n 2: [function(e, t, n) {\n \"use strict\";\n\n function r(e, t) {\n if (!(e instanceof t)) throw new TypeError(\"Cannot call a class as a function\")\n }\n Object.defineProperty(n, \"__esModule\", {\n value: !0\n }), n.VideoEncodingParameters = n.VideoCodecParameters = n.VideoCodec = n.AudioEncodingParameters = n.AudioCodecParameters = n.AudioCodec = void 0;\n n.AudioCodec = {\n PCMU: \"pcmu\",\n PCMA: \"pcma\",\n OPUS: \"opus\",\n G722: \"g722\",\n ISAC: \"iSAC\",\n ILBC: \"iLBC\",\n AAC: \"aac\",\n AC3: \"ac3\",\n NELLYMOSER: \"nellymoser\"\n };\n n.AudioCodecParameters = function e(t, n, i) {\n r(this, e), this.name = t, this.channelCount = n, this.clockRate = i\n };\n n.AudioEncodingParameters = function e(t, n) {\n r(this, e), this.codec = t, this.maxBitrate = n\n };\n n.VideoCodec = {\n VP8: \"vp8\",\n VP9: \"vp9\",\n H264: \"h264\",\n H265: \"h265\"\n };\n n.VideoCodecParameters = function e(t, n) {\n r(this, e), this.name = t, this.profile = n\n };\n n.VideoEncodingParameters = function e(t, n) {\n r(this, e), this.codec = t, this.maxBitrate = n\n }\n }, {}],\n 3: [function(e, t, n) {\n \"use strict\";\n\n function r(e) {\n return (r = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(e) {\n return typeof e\n } : function(e) {\n return e && \"function\" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? \"symbol\" : typeof e\n })(e)\n }\n\n function i(e, t) {\n return !t || \"object\" !== r(t) && \"function\" != typeof t ? function(e) {\n if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return e\n }(e) : t\n }\n\n function o(e) {\n return (o = Object.setPrototypeOf ? Object.getPrototypeOf : function(e) {\n return e.__proto__ || Object.getPrototypeOf(e)\n })(e)\n }\n\n function a(e, t) {\n if (\"function\" != typeof t && null !== t) throw new TypeError(\"Super expression must either be null or a function\");\n e.prototype = Object.create(t && t.prototype, {\n constructor: {\n value: e,\n writable: !0,\n configurable: !0\n }\n }), t && s(e, t)\n }\n\n function s(e, t) {\n return (s = Object.setPrototypeOf || function(e, t) {\n return e.__proto__ = t, e\n })(e, t)\n }\n\n function c(e, t) {\n if (!(e instanceof t)) throw new TypeError(\"Cannot call a class as a function\")\n }\n Object.defineProperty(n, \"__esModule\", {\n value: !0\n }), n.MuteEvent = n.ErrorEvent = n.MessageEvent = n.OwtEvent = n.EventDispatcher = void 0;\n n.EventDispatcher = function() {\n var e = {\n dispatcher: {}\n };\n e.dispatcher.eventListeners = {}, this.addEventListener = function(t, n) {\n void 0 === e.dispatcher.eventListeners[t] && (e.dispatcher.eventListeners[t] = []), e.dispatcher.eventListeners[t].push(n)\n }, this.removeEventListener = function(t, n) {\n if (e.dispatcher.eventListeners[t]) {\n var r = e.dispatcher.eventListeners[t].indexOf(n); - 1 !== r && e.dispatcher.eventListeners[t].splice(r, 1)\n }\n }, this.clearEventListener = function(t) {\n e.dispatcher.eventListeners[t] = []\n }, this.dispatchEvent = function(t) {\n e.dispatcher.eventListeners[t.type] && e.dispatcher.eventListeners[t.type].map(function(e) {\n e(t)\n })\n }\n };\n var u = function e(t) {\n c(this, e), this.type = t\n };\n n.OwtEvent = u;\n var d = function(e) {\n function t(e, n) {\n var r;\n return c(this, t), (r = i(this, o(t).call(this, e))).origin = n.origin, r.message = n.message, r.to = n.to, r\n }\n return a(t, u), t\n }();\n n.MessageEvent = d;\n var l = function(e) {\n function t(e, n) {\n var r;\n return c(this, t), (r = i(this, o(t).call(this, e))).error = n.error, r\n }\n return a(t, u), t\n }();\n n.ErrorEvent = l;\n var f = function(e) {\n function t(e, n) {\n var r;\n return c(this, t), (r = i(this, o(t).call(this, e))).kind = n.kind, r\n }\n return a(t, u), t\n }();\n n.MuteEvent = f\n }, {}],\n 4: [function(e, t, n) {\n \"use strict\";\n Object.defineProperty(n, \"__esModule\", {\n value: !0\n });\n var r = e(\"./mediastream-factory.js\");\n Object.keys(r).forEach(function(e) {\n \"default\" !== e && \"__esModule\" !== e && Object.defineProperty(n, e, {\n enumerable: !0,\n get: function() {\n return r[e]\n }\n })\n });\n var i = e(\"./stream.js\");\n Object.keys(i).forEach(function(e) {\n \"default\" !== e && \"__esModule\" !== e && Object.defineProperty(n, e, {\n enumerable: !0,\n get: function() {\n return i[e]\n }\n })\n });\n var o = e(\"./mediaformat.js\");\n Object.keys(o).forEach(function(e) {\n \"default\" !== e && \"__esModule\" !== e && Object.defineProperty(n, e, {\n enumerable: !0,\n get: function() {\n return o[e]\n }\n })\n })\n }, {\n \"./mediaformat.js\": 6,\n \"./mediastream-factory.js\": 7,\n \"./stream.js\": 10\n }],\n 5: [function(e, t, n) {\n \"use strict\";\n Object.defineProperty(n, \"__esModule\", {\n value: !0\n }), n.default = void 0;\n var r = function() {\n var e = function() {},\n t = {\n DEBUG: 0,\n TRACE: 1,\n INFO: 2,\n WARNING: 3,\n ERROR: 4,\n NONE: 5\n };\n t.log = window.console.log.bind(window.console);\n var n = function(e) {\n return \"function\" == typeof window.console[e] ? window.console[e].bind(window.console) : window.console.log.bind(window.console)\n },\n r = function(r) {\n t.debug = r <= 0 ? n(\"log\") : e, t.trace = r <= 1 ? n(\"trace\") : e, t.info = r <= 2 ? n(\"info\") : e, t.warning = r <= 3 ? n(\"warn\") : e, t.error = r <= 4 ? n(\"error\") : e\n };\n return r(0), t.setLogLevel = r, t\n }();\n n.default = r\n }, {}],\n 6: [function(e, t, n) {\n \"use strict\";\n Object.defineProperty(n, \"__esModule\", {\n value: !0\n }), n.Resolution = n.TrackKind = n.VideoSourceInfo = n.AudioSourceInfo = void 0;\n n.AudioSourceInfo = {\n MIC: \"mic\",\n SCREENCAST: \"screen-cast\",\n FILE: \"file\",\n MIXED: \"mixed\"\n };\n n.VideoSourceInfo = {\n CAMERA: \"camera\",\n SCREENCAST: \"screen-cast\",\n FILE: \"file\",\n MIXED: \"mixed\"\n };\n n.TrackKind = {\n AUDIO: \"audio\",\n VIDEO: \"video\",\n AUDIO_AND_VIDEO: \"av\"\n };\n n.Resolution = function e(t, n) {\n ! function(e, t) {\n if (!(e instanceof t)) throw new TypeError(\"Cannot call a class as a function\")\n }(this, e), this.width = t, this.height = n\n }\n }, {}],\n 7: [function(e, t, n) {\n \"use strict\";\n Object.defineProperty(n, \"__esModule\", {\n value: !0\n }), n.MediaStreamFactory = n.StreamConstraints = n.VideoTrackConstraints = n.AudioTrackConstraints = void 0;\n var r, i = a(e(\"./utils.js\")),\n o = ((r = e(\"./logger.js\")) && r.__esModule, a(e(\"./mediaformat.js\")));\n\n function a(e) {\n if (e && e.__esModule) return e;\n var t = {};\n if (null != e)\n for (var n in e)\n if (Object.prototype.hasOwnProperty.call(e, n)) {\n var r = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(e, n) : {};\n r.get || r.set ? Object.defineProperty(t, n, r) : t[n] = e[n]\n } return t.default = e, t\n }\n\n function s(e, t) {\n for (var n = 0; n < t.length; n++) {\n var r = t[n];\n r.enumerable = r.enumerable || !1, r.configurable = !0, \"value\" in r && (r.writable = !0), Object.defineProperty(e, r.key, r)\n }\n }\n\n function c(e) {\n return (c = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(e) {\n return typeof e\n } : function(e) {\n return e && \"function\" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? \"symbol\" : typeof e\n })(e)\n }\n\n function u(e, t) {\n if (!(e instanceof t)) throw new TypeError(\"Cannot call a class as a function\")\n }\n n.AudioTrackConstraints = function e(t) {\n if (u(this, e), !Object.values(o.AudioSourceInfo).some(function(e) {\n return e === t\n })) throw new TypeError(\"Invalid source.\");\n this.source = t, this.deviceId = void 0\n };\n n.VideoTrackConstraints = function e(t) {\n if (u(this, e), !Object.values(o.VideoSourceInfo).some(function(e) {\n return e === t\n })) throw new TypeError(\"Invalid source.\");\n this.source = t, this.deviceId = void 0, this.resolution = void 0, this.frameRate = void 0\n };\n\n function d(e) {\n return \"object\" === c(e.video) && e.video.source === o.VideoSourceInfo.SCREENCAST\n }\n n.StreamConstraints = function e() {\n var t = arguments.length > 0 && void 0 !== arguments[0] && arguments[0],\n n = arguments.length > 1 && void 0 !== arguments[1] && arguments[1];\n u(this, e), this.audio = t, this.video = n\n };\n var l = function() {\n function e() {\n u(this, e)\n }\n var t, n, r;\n return t = e, r = [{\n key: \"createMediaStream\",\n value: function(e) {\n if (\"object\" !== c(e) || !e.audio && !e.video) return Promise.reject(new TypeError(\"Invalid constrains\"));\n if (!d(e) && \"object\" === c(e.audio) && e.audio.source === o.AudioSourceInfo.SCREENCAST) return Promise.reject(new TypeError(\"Cannot share screen without video.\"));\n if (d(e) && !i.isChrome() && !i.isFirefox()) return Promise.reject(new TypeError(\"Screen sharing only supports Chrome and Firefox.\"));\n if (d(e) && \"object\" === c(e.audio) && e.audio.source !== o.AudioSourceInfo.SCREENCAST) return Promise.reject(new TypeError(\"Cannot capture video from screen cast while capture audio from other source.\"));\n if (!e.audio && !e.video) return Promise.reject(new TypeError(\"At least one of audio and video must be requested.\"));\n var t = Object.create({});\n return \"object\" === c(e.audio) && e.audio.source === o.AudioSourceInfo.MIC ? (t.audio = Object.create({}), i.isEdge() ? t.audio.deviceId = e.audio.deviceId : t.audio.deviceId = {\n exact: e.audio.deviceId\n }) : e.audio.source === o.AudioSourceInfo.SCREENCAST ? t.audio = !0 : t.audio = e.audio, \"object\" === c(e.video) ? (t.video = Object.create({}), \"number\" == typeof e.video.frameRate && (t.video.frameRate = e.video.frameRate), e.video.resolution && e.video.resolution.width && e.video.resolution.height && (e.video.source === o.VideoSourceInfo.SCREENCAST ? (t.video.width = e.video.resolution.width, t.video.height = e.video.resolution.height) : (t.video.width = Object.create({}), t.video.width.exact = e.video.resolution.width, t.video.height = Object.create({}), t.video.height.exact = e.video.resolution.height)), \"string\" == typeof e.video.deviceId && (t.video.deviceId = {\n exact: e.video.deviceId\n }), i.isFirefox() && e.video.source === o.VideoSourceInfo.SCREENCAST && (t.video.mediaSource = \"screen\")) : t.video = e.video, d(e) ? navigator.mediaDevices.getDisplayMedia(t) : navigator.mediaDevices.getUserMedia(t)\n }\n }], (n = null) && s(t.prototype, n), r && s(t, r), e\n }();\n n.MediaStreamFactory = l\n }, {\n \"./logger.js\": 5,\n \"./mediaformat.js\": 6,\n \"./utils.js\": 11\n }],\n 8: [function(e, t, n) {\n \"use strict\";\n Object.defineProperty(n, \"__esModule\", {\n value: !0\n }), n.PublishOptions = n.Publication = n.PublicationSettings = n.VideoPublicationSettings = n.AudioPublicationSettings = void 0;\n var r = o(e(\"./utils.js\")),\n i = (o(e(\"./mediaformat.js\")), e(\"../base/event.js\"));\n\n function o(e) {\n if (e && e.__esModule) return e;\n var t = {};\n if (null != e)\n for (var n in e)\n if (Object.prototype.hasOwnProperty.call(e, n)) {\n var r = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(e, n) : {};\n r.get || r.set ? Object.defineProperty(t, n, r) : t[n] = e[n]\n } return t.default = e, t\n }\n\n function a(e) {\n return (a = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(e) {\n return typeof e\n } : function(e) {\n return e && \"function\" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? \"symbol\" : typeof e\n })(e)\n }\n\n function s(e) {\n return (s = Object.setPrototypeOf ? Object.getPrototypeOf : function(e) {\n return e.__proto__ || Object.getPrototypeOf(e)\n })(e)\n }\n\n function c(e, t) {\n return (c = Object.setPrototypeOf || function(e, t) {\n return e.__proto__ = t, e\n })(e, t)\n }\n\n function u(e) {\n if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return e\n }\n\n function d(e, t) {\n if (!(e instanceof t)) throw new TypeError(\"Cannot call a class as a function\")\n }\n n.AudioPublicationSettings = function e(t) {\n d(this, e), this.codec = t\n };\n n.VideoPublicationSettings = function e(t, n, r, i, o) {\n d(this, e), this.codec = t, this.resolution = n, this.frameRate = r, this.bitrate = i, this.keyFrameInterval = o\n };\n n.PublicationSettings = function e(t, n) {\n d(this, e), this.audio = t, this.video = n\n };\n var l = function(e) {\n function t(e, n, i, o, c) {\n var l, f, p;\n return d(this, t), f = this, l = !(p = s(t).call(this)) || \"object\" !== a(p) && \"function\" != typeof p ? u(f) : p, Object.defineProperty(u(u(l)), \"id\", {\n configurable: !1,\n writable: !1,\n value: e || r.createUuid()\n }), l.stop = n, l.getStats = i, l.mute = o, l.unmute = c, l\n }\n return function(e, t) {\n if (\"function\" != typeof t && null !== t) throw new TypeError(\"Super expression must either be null or a function\");\n e.prototype = Object.create(t && t.prototype, {\n constructor: {\n value: e,\n writable: !0,\n configurable: !0\n }\n }), t && c(e, t)\n }(t, i.EventDispatcher), t\n }();\n n.Publication = l;\n n.PublishOptions = function e(t, n) {\n d(this, e), this.audio = t, this.video = n\n }\n }, {\n \"../base/event.js\": 3,\n \"./mediaformat.js\": 6,\n \"./utils.js\": 11\n }],\n 9: [function(e, t, n) {\n \"use strict\";\n Object.defineProperty(n, \"__esModule\", {\n value: !0\n }), n.reorderCodecs = function(e, t, n) {\n if (!n || 0 === n.length) return e;\n n = \"audio\" === t ? n.concat(l) : n.concat(f);\n var r = e.split(\"\\r\\n\"),\n i = c(r, \"m=\", t);\n if (null === i) return e;\n var a = r[i].split(\" \");\n a.splice(0, 3);\n var s = [],\n h = !0,\n v = !1,\n m = void 0;\n try {\n for (var b, _ = n[Symbol.iterator](); !(h = (b = _.next()).done); h = !0)\n for (var y = b.value, g = 0; g < r.length; g++) {\n var S = u(r, g, -1, \"a=rtpmap\", y);\n if (null !== S) {\n var P = d(r[S]);\n P && (s.push(P), g = S)\n }\n }\n } catch (e) {\n v = !0, m = e\n } finally {\n try {\n h || null == _.return || _.return()\n } finally {\n if (v) throw m\n }\n }\n s = function(e, t) {\n var n = !0,\n r = !1,\n i = void 0;\n try {\n for (var a, s = t[Symbol.iterator](); !(n = (a = s.next()).done); n = !0) {\n var u = a.value,\n d = c(e, \"a=fmtp\", \"apt=\" + u);\n if (null !== d) {\n var l = o(e[d]);\n t.push(l.pt)\n }\n }\n } catch (e) {\n r = !0, i = e\n } finally {\n try {\n n || null == s.return || s.return()\n } finally {\n if (r) throw i\n }\n }\n return t\n }(r, s), r[i] = function(e, t) {\n var n = e.split(\" \").slice(0, 3);\n return (n = n.concat(t)).join(\" \")\n }(r[i], s);\n var w = !0,\n O = !1,\n E = void 0;\n try {\n for (var j, C = a[Symbol.iterator](); !(w = (j = C.next()).done); w = !0) {\n var T = j.value; - 1 === s.indexOf(T) && (r = p(r, T))\n }\n } catch (e) {\n O = !0, E = e\n } finally {\n try {\n w || null == C.return || C.return()\n } finally {\n if (O) throw E\n }\n }\n return e = r.join(\"\\r\\n\")\n }, n.setMaxBitrate = function(e, t) {\n var n = !0,\n r = !1,\n o = void 0;\n try {\n for (var a, s = t[Symbol.iterator](); !(n = (a = s.next()).done); n = !0) {\n var c = a.value;\n c.maxBitrate && (e = i(e, c.codec.name, \"x-google-max-bitrate\", c.maxBitrate.toString()))\n }\n } catch (e) {\n r = !0, o = e\n } finally {\n try {\n n || null == s.return || s.return()\n } finally {\n if (r) throw o\n }\n }\n return e\n };\n var r;\n (r = e(\"./logger.js\")) && r.__esModule;\n\n function i(e, t, n, r) {\n var i = e.split(\"\\r\\n\");\n i.length <= 1 && (i = e.split(\"\\n\"));\n var u = s(i, t),\n l = {};\n if (null === u) {\n var f = c(i, \"a=rtpmap\", t);\n if (null === f) return e;\n var p = d(i[f]);\n l.pt = p.toString(), l.params = {}, l.params[n] = r, i.splice(f + 1, 0, a(l))\n } else(l = o(i[u])).params[n] = r, i[u] = a(l);\n return e = i.join(\"\\r\\n\")\n }\n\n function o(e) {\n var t = {},\n n = e.indexOf(\" \"),\n r = e.substring(n + 1).split(\";\"),\n i = new RegExp(\"a=fmtp:(\\\\d+)\"),\n o = e.match(i);\n if (!o || 2 !== o.length) return null;\n t.pt = o[1];\n for (var a = {}, s = 0; s < r.length; ++s) {\n var c = r[s].split(\"=\");\n 2 === c.length && (a[c[0]] = c[1])\n }\n return t.params = a, t\n }\n\n function a(e) {\n if (!e.hasOwnProperty(\"pt\") || !e.hasOwnProperty(\"params\")) return null;\n var t = e.pt,\n n = e.params,\n r = [],\n i = 0;\n for (var o in n) r[i] = o + \"=\" + n[o], ++i;\n return 0 === i ? null : \"a=fmtp:\" + t.toString() + \" \" + r.join(\";\")\n }\n\n function s(e, t) {\n var n = function(e, t) {\n var n = c(e, \"a=rtpmap\", t);\n return n ? d(e[n]) : null\n }(e, t);\n return n ? c(e, \"a=fmtp:\" + n.toString()) : null\n }\n\n function c(e, t, n) {\n return u(e, 0, -1, t, n)\n }\n\n function u(e, t, n, r, i) {\n for (var o = -1 !== n ? n : e.length, a = t; a < o; ++a)\n if (0 === e[a].indexOf(r) && (!i || -1 !== e[a].toLowerCase().indexOf(i.toLowerCase()))) return a;\n return null\n }\n\n function d(e) {\n var t = new RegExp(\"a=rtpmap:(\\\\d+) [a-zA-Z0-9-]+\\\\/\\\\d+\"),\n n = e.match(t);\n return n && 2 === n.length ? n[1] : null\n }\n var l = [\"CN\", \"telephone-event\"],\n f = [\"red\", \"ulpfec\"];\n\n function p(e, t) {\n for (var n = new RegExp(\"a=(rtpmap|rtcp-fb|fmtp):\" + t + \"\\\\s\"), r = e.length - 1; r > 0; r--) e[r].match(n) && e.splice(r, 1);\n return e\n }\n }, {\n \"./logger.js\": 5\n }],\n 10: [function(e, t, n) {\n \"use strict\";\n Object.defineProperty(n, \"__esModule\", {\n value: !0\n }), n.StreamEvent = n.RemoteStream = n.LocalStream = n.Stream = n.StreamSourceInfo = void 0;\n (r = e(\"./logger.js\")) && r.__esModule;\n var r, i = e(\"./event.js\"),\n o = function(e) {\n if (e && e.__esModule) return e;\n var t = {};\n if (null != e)\n for (var n in e)\n if (Object.prototype.hasOwnProperty.call(e, n)) {\n var r = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(e, n) : {};\n r.get || r.set ? Object.defineProperty(t, n, r) : t[n] = e[n]\n } return t.default = e, t\n }(e(\"./utils.js\"));\n\n function a(e) {\n return (a = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(e) {\n return typeof e\n } : function(e) {\n return e && \"function\" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? \"symbol\" : typeof e\n })(e)\n }\n\n function s(e, t) {\n return !t || \"object\" !== a(t) && \"function\" != typeof t ? l(e) : t\n }\n\n function c(e) {\n return (c = Object.setPrototypeOf ? Object.getPrototypeOf : function(e) {\n return e.__proto__ || Object.getPrototypeOf(e)\n })(e)\n }\n\n function u(e, t) {\n if (\"function\" != typeof t && null !== t) throw new TypeError(\"Super expression must either be null or a function\");\n e.prototype = Object.create(t && t.prototype, {\n constructor: {\n value: e,\n writable: !0,\n configurable: !0\n }\n }), t && d(e, t)\n }\n\n function d(e, t) {\n return (d = Object.setPrototypeOf || function(e, t) {\n return e.__proto__ = t, e\n })(e, t)\n }\n\n function l(e) {\n if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return e\n }\n\n function f(e, t) {\n if (!(e instanceof t)) throw new TypeError(\"Cannot call a class as a function\")\n }\n\n function p(e, t) {\n return t.some(function(t) {\n return t === e\n })\n }\n n.StreamSourceInfo = function e(t, n) {\n if (f(this, e), !p(t, [void 0, \"mic\", \"screen-cast\", \"file\", \"mixed\"])) throw new TypeError(\"Incorrect value for audioSourceInfo\");\n if (!p(n, [void 0, \"camera\", \"screen-cast\", \"file\", \"encoded-file\", \"raw-file\", \"mixed\"])) throw new TypeError(\"Incorrect value for videoSourceInfo\");\n this.audio = t, this.video = n\n };\n var h = function(e) {\n function t(e, n, r) {\n var i;\n if (f(this, t), i = s(this, c(t).call(this)), e && !(e instanceof MediaStream) || \"object\" !== a(n)) throw new TypeError(\"Invalid stream or sourceInfo.\");\n if (e && (e.getAudioTracks().length > 0 && !n.audio || e.getVideoTracks().length > 0 && !n.video)) throw new TypeError(\"Missing audio source info or video source info.\");\n return Object.defineProperty(l(l(i)), \"mediaStream\", {\n configurable: !1,\n writable: !0,\n value: e\n }), Object.defineProperty(l(l(i)), \"source\", {\n configurable: !1,\n writable: !1,\n value: n\n }), Object.defineProperty(l(l(i)), \"attributes\", {\n configurable: !0,\n writable: !1,\n value: r\n }), i\n }\n return u(t, i.EventDispatcher), t\n }();\n n.Stream = h;\n var v = function(e) {\n function t(e, n, r) {\n var i;\n if (f(this, t), !(e instanceof MediaStream)) throw new TypeError(\"Invalid stream.\");\n return i = s(this, c(t).call(this, e, n, r)), Object.defineProperty(l(l(i)), \"id\", {\n configurable: !1,\n writable: !1,\n value: o.createUuid()\n }), i\n }\n return u(t, h), t\n }();\n n.LocalStream = v;\n var m = function(e) {\n function t(e, n, r, i, a) {\n var u;\n return f(this, t), u = s(this, c(t).call(this, r, i, a)), Object.defineProperty(l(l(u)), \"id\", {\n configurable: !1,\n writable: !1,\n value: e || o.createUuid()\n }), Object.defineProperty(l(l(u)), \"origin\", {\n configurable: !1,\n writable: !1,\n value: n\n }), u.settings = void 0, u.capabilities = void 0, u\n }\n return u(t, h), t\n }();\n n.RemoteStream = m;\n var b = function(e) {\n function t(e, n) {\n var r;\n return f(this, t), (r = s(this, c(t).call(this, e))).stream = n.stream, r\n }\n return u(t, i.OwtEvent), t\n }();\n n.StreamEvent = b\n }, {\n \"./event.js\": 3,\n \"./logger.js\": 5,\n \"./utils.js\": 11\n }],\n 11: [function(e, t, n) {\n \"use strict\";\n Object.defineProperty(n, \"__esModule\", {\n value: !0\n }), n.isFirefox = function() {\n return null !== window.navigator.userAgent.match(\"Firefox\")\n }, n.isChrome = function() {\n return null !== window.navigator.userAgent.match(\"Chrome\")\n }, n.isSafari = i, n.isEdge = function() {\n return null !== window.navigator.userAgent.match(/Edge\\/(\\d+).(\\d+)$/)\n }, n.createUuid = function() {\n return \"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\".replace(/[xy]/g, function(e) {\n var t = 16 * Math.random() | 0,\n n = \"x\" === e ? t : 3 & t | 8;\n return n.toString(16)\n })\n }, n.sysInfo = function() {\n var e = Object.create({});\n e.sdk = {\n version: r,\n type: \"JavaScript\"\n };\n var t = navigator.userAgent,\n n = /Chrome\\/([0-9\\.]+)/.exec(t);\n n ? e.runtime = {\n name: \"Chrome\",\n version: n[1]\n } : (n = /Firefox\\/([0-9\\.]+)/.exec(t)) ? e.runtime = {\n name: \"Firefox\",\n version: n[1]\n } : (n = /Edge\\/([0-9\\.]+)/.exec(t)) ? e.runtime = {\n name: \"Edge\",\n version: n[1]\n } : i() ? (n = /Version\\/([0-9\\.]+) Safari/.exec(t), e.runtime = {\n name: \"Safari\"\n }, e.runtime.version = n ? n[1] : \"Unknown\") : e.runtime = {\n name: \"Unknown\",\n version: \"Unknown\"\n };\n (n = /Windows NT ([0-9\\.]+)/.exec(t)) ? e.os = {\n name: \"Windows NT\",\n version: n[1]\n }: (n = /Intel Mac OS X ([0-9_\\.]+)/.exec(t)) ? e.os = {\n name: \"Mac OS X\",\n version: n[1].replace(/_/g, \".\")\n } : (n = /iPhone OS ([0-9_\\.]+)/.exec(t)) ? e.os = {\n name: \"iPhone OS\",\n version: n[1].replace(/_/g, \".\")\n } : (n = /X11; Linux/.exec(t)) ? e.os = {\n name: \"Linux\",\n version: \"Unknown\"\n } : (n = /Android( ([0-9\\.]+))?/.exec(t)) ? e.os = {\n name: \"Android\",\n version: n[1] || \"Unknown\"\n } : (n = /CrOS/.exec(t)) ? e.os = {\n name: \"Chrome OS\",\n version: \"Unknown\"\n } : e.os = {\n name: \"Unknown\",\n version: \"Unknown\"\n };\n return e.capabilities = {\n continualIceGathering: !1,\n unifiedPlan: !0,\n streamRemovable: \"Firefox\" !== e.runtime.name\n }, e\n };\n var r = \"4.2.1\";\n\n function i() {\n return /^((?!chrome|android).)*safari/i.test(window.navigator.userAgent)\n }\n }, {}],\n 12: [function(e, t, n) {\n \"use strict\";\n Object.defineProperty(n, \"__esModule\", {\n value: !0\n }), n.ConferencePeerConnectionChannel = void 0;\n var r, i = (r = e(\"../base/logger.js\")) && r.__esModule ? r : {\n default: r\n },\n o = e(\"../base/event.js\"),\n a = e(\"../base/mediaformat.js\"),\n s = e(\"../base/publication.js\"),\n c = e(\"./subscription.js\"),\n u = e(\"./error.js\"),\n d = f(e(\"../base/utils.js\")),\n l = f(e(\"../base/sdputils.js\"));\n\n function f(e) {\n if (e && e.__esModule) return e;\n var t = {};\n if (null != e)\n for (var n in e)\n if (Object.prototype.hasOwnProperty.call(e, n)) {\n var r = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(e, n) : {};\n r.get || r.set ? Object.defineProperty(t, n, r) : t[n] = e[n]\n } return t.default = e, t\n }\n\n function p(e) {\n return (p = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(e) {\n return typeof e\n } : function(e) {\n return e && \"function\" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? \"symbol\" : typeof e\n })(e)\n }\n\n function h(e, t) {\n for (var n = 0; n < t.length; n++) {\n var r = t[n];\n r.enumerable = r.enumerable || !1, r.configurable = !0, \"value\" in r && (r.writable = !0), Object.defineProperty(e, r.key, r)\n }\n }\n\n function v(e, t) {\n return !t || \"object\" !== p(t) && \"function\" != typeof t ? function(e) {\n if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return e\n }(e) : t\n }\n\n function m(e) {\n return (m = Object.setPrototypeOf ? Object.getPrototypeOf : function(e) {\n return e.__proto__ || Object.getPrototypeOf(e)\n })(e)\n }\n\n function b(e, t) {\n return (b = Object.setPrototypeOf || function(e, t) {\n return e.__proto__ = t, e\n })(e, t)\n }\n var _ = function(e) {\n function t(e, n) {\n var r;\n return function(e, t) {\n if (!(e instanceof t)) throw new TypeError(\"Cannot call a class as a function\")\n }(this, t), (r = v(this, m(t).call(this)))._config = e, r._options = null, r._signaling = n, r._pc = null, r._internalId = null, r._pendingCandidates = [], r._subscribePromise = null, r._publishPromise = null, r._subscribedStream = null, r._publishedStream = null, r._publication = null, r._subscription = null, r._disconnectTimer = null, r._ended = !1, r\n }\n var n, r, f;\n return function(e, t) {\n if (\"function\" != typeof t && null !== t) throw new TypeError(\"Super expression must either be null or a function\");\n e.prototype = Object.create(t && t.prototype, {\n constructor: {\n value: e,\n writable: !0,\n configurable: !0\n }\n }), t && b(e, t)\n }(t, o.EventDispatcher), n = t, (r = [{\n key: \"onMessage\",\n value: function(e, t) {\n switch (e) {\n case \"progress\":\n \"soac\" === t.status ? this._sdpHandler(t.data) : \"ready\" === t.status ? this._readyHandler() : \"error\" === t.status && this._errorHandler(t.data);\n break;\n case \"stream\":\n this._onStreamEvent(t);\n break;\n default:\n i.default.warning(\"Unknown notification from MCU.\")\n }\n }\n }, {\n key: \"publish\",\n value: function(e, t) {\n var n = this;\n if (void 0 === t && (t = {\n audio: !!e.mediaStream.getAudioTracks(),\n video: !!e.mediaStream.getVideoTracks()\n }), \"object\" !== p(t)) return Promise.reject(new TypeError(\"Options should be an object.\"));\n if (void 0 === t.audio && (t.audio = !!e.mediaStream.getAudioTracks()), void 0 === t.video && (t.video = !!e.mediaStream.getVideoTracks()), !!t.video == !e.mediaStream.getVideoTracks().length) return Promise.reject(new u.ConferenceError(\"options.audio/video is inconsistent with tracks presented in the MediaStream.\"));\n if (!(!1 !== t.audio && null !== t.audio || !1 !== t.video && null !== t.video)) return Promise.reject(new u.ConferenceError(\"Cannot publish a stream without audio and video.\"));\n if (\"object\" === p(t.audio)) {\n if (!Array.isArray(t.audio)) return Promise.reject(new TypeError(\"options.audio should be a boolean or an array.\"));\n var r = !0,\n a = !1,\n s = void 0;\n try {\n for (var c, d = t.audio[Symbol.iterator](); !(r = (c = d.next()).done); r = !0) {\n var l = c.value;\n if (!l.codec || \"string\" != typeof l.codec.name || void 0 !== l.maxBitrate && \"number\" != typeof l.maxBitrate) return Promise.reject(new TypeError(\"options.audio has incorrect parameters.\"))\n }\n } catch (e) {\n a = !0, s = e\n } finally {\n try {\n r || null == d.return || d.return()\n } finally {\n if (a) throw s\n }\n }\n }\n if (\"object\" === p(t.video)) {\n if (!Array.isArray(t.video)) return Promise.reject(new TypeError(\"options.video should be a boolean or an array.\"));\n var f = !0,\n h = !1,\n v = void 0;\n try {\n for (var m, b = t.video[Symbol.iterator](); !(f = (m = b.next()).done); f = !0) {\n var _ = m.value;\n if (!_.codec || \"string\" != typeof _.codec.name || void 0 !== _.maxBitrate && \"number\" != typeof _.maxBitrate || void 0 !== _.codec.profile && \"string\" != typeof _.codec.profile) return Promise.reject(new TypeError(\"options.video has incorrect parameters.\"))\n }\n } catch (e) {\n h = !0, v = e\n } finally {\n try {\n f || null == b.return || b.return()\n } finally {\n if (h) throw v\n }\n }\n }\n this._options = t;\n var y = {};\n if (this._createPeerConnection(), e.mediaStream.getAudioTracks().length > 0 && !1 !== t.audio && null !== t.audio) {\n if (e.mediaStream.getAudioTracks().length > 1 && i.default.warning(\"Publishing a stream with multiple audio tracks is not fully supported.\"), \"boolean\" != typeof t.audio && \"object\" !== p(t.audio)) return Promise.reject(new u.ConferenceError(\"Type of audio options should be boolean or an object.\"));\n y.audio = {}, y.audio.source = e.source.audio;\n var g = !0,\n S = !1,\n P = void 0;\n try {\n for (var w, O = e.mediaStream.getAudioTracks()[Symbol.iterator](); !(g = (w = O.next()).done); g = !0) {\n var E = w.value;\n this._pc.addTrack(E, e.mediaStream)\n }\n } catch (e) {\n S = !0, P = e\n } finally {\n try {\n g || null == O.return || O.return()\n } finally {\n if (S) throw P\n }\n }\n } else y.audio = !1;\n if (e.mediaStream.getVideoTracks().length > 0 && !1 !== t.video && null !== t.video) {\n e.mediaStream.getVideoTracks().length > 1 && i.default.warning(\"Publishing a stream with multiple video tracks is not fully supported.\"), y.video = {}, y.video.source = e.source.video;\n var j = e.mediaStream.getVideoTracks()[0].getSettings();\n y.video.parameters = {\n resolution: {\n width: j.width,\n height: j.height\n },\n framerate: j.frameRate\n };\n var C = !0,\n T = !1,\n I = void 0;\n try {\n for (var k, M = e.mediaStream.getVideoTracks()[Symbol.iterator](); !(C = (k = M.next()).done); C = !0) {\n var R = k.value;\n this._pc.addTrack(R, e.mediaStream)\n }\n } catch (e) {\n T = !0, I = e\n } finally {\n try {\n C || null == M.return || M.return()\n } finally {\n if (T) throw I\n }\n }\n } else y.video = !1;\n return this._publishedStream = e, this._signaling.sendSignalingMessage(\"publish\", {\n media: y,\n attributes: e.attributes\n }).then(function(r) {\n var a = new o.MessageEvent(\"id\", {\n message: r.id,\n origin: n._remoteId\n });\n n.dispatchEvent(a), n._internalId = r.id;\n var s;\n \"function\" == typeof n._pc.addTransceiver && (y.audio && e.mediaStream.getAudioTracks() > 0 && n._pc.addTransceiver(\"audio\", {\n direction: \"sendonly\"\n }), y.video && e.mediaStream.getVideoTracks() > 0 && n._pc.addTransceiver(\"video\", {\n direction: \"sendonly\"\n })), n._pc.createOffer({\n offerToReceiveAudio: !1,\n offerToReceiveVideo: !1\n }).then(function(e) {\n return t && (e.sdp = n._setRtpReceiverOptions(e.sdp, t)), e\n }).then(function(e) {\n return s = e, n._pc.setLocalDescription(e)\n }).then(function() {\n n._signaling.sendSignalingMessage(\"soac\", {\n id: n._internalId,\n signaling: s\n })\n }).catch(function(e) {\n i.default.error(\"Failed to create offer or set SDP. Message: \" + e.message), n._unpublish(), n._rejectPromise(e), n._fireEndedEventOnPublicationOrSubscription()\n })\n }).catch(function(e) {\n n._unpublish(), n._rejectPromise(e), n._fireEndedEventOnPublicationOrSubscription()\n }), new Promise(function(e, t) {\n n._publishPromise = {\n resolve: e,\n reject: t\n }\n })\n }\n }, {\n key: \"subscribe\",\n value: function(e, t) {\n var n = this;\n if (void 0 === t && (t = {\n audio: !!e.capabilities.audio,\n video: !!e.capabilities.video\n }), \"object\" !== p(t)) return Promise.reject(new TypeError(\"Options should be an object.\"));\n if (void 0 === t.audio && (t.audio = !!e.capabilities.audio), void 0 === t.video && (t.video = !!e.capabilities.video), void 0 !== t.audio && \"object\" !== p(t.audio) && \"boolean\" != typeof t.audio && null !== t.audio || void 0 !== t.video && \"object\" !== p(t.video) && \"boolean\" != typeof t.video && null !== t.video) return Promise.reject(new TypeError(\"Invalid options type.\"));\n if (t.audio && !e.capabilities.audio || t.video && !e.capabilities.video) return Promise.reject(new u.ConferenceError(\"options.audio/video cannot be true or an object if there is no audio/video track in remote stream.\"));\n if (!1 === t.audio && !1 === t.video) return Promise.reject(new u.ConferenceError(\"Cannot subscribe a stream without audio and video.\"));\n this._options = t;\n var r = {};\n if (t.audio) {\n if (\"object\" === p(t.audio) && Array.isArray(t.audio.codecs) && 0 === t.audio.codecs.length) return Promise.reject(new TypeError(\"Audio codec cannot be an empty array.\"));\n r.audio = {}, r.audio.from = e.id\n } else r.audio = !1;\n if (t.video) {\n if (\"object\" === p(t.video) && Array.isArray(t.video.codecs) && 0 === t.video.codecs.length) return Promise.reject(new TypeError(\"Video codec cannot be an empty array.\"));\n r.video = {}, r.video.from = e.id, (t.video.resolution || t.video.frameRate || t.video.bitrateMultiplier && 1 !== t.video.bitrateMultiplier || t.video.keyFrameInterval) && (r.video.parameters = {\n resolution: t.video.resolution,\n framerate: t.video.frameRate,\n bitrate: t.video.bitrateMultiplier ? \"x\" + t.video.bitrateMultiplier.toString() : void 0,\n keyFrameInterval: t.video.keyFrameInterval\n })\n } else r.video = !1;\n return this._subscribedStream = e, this._signaling.sendSignalingMessage(\"subscribe\", {\n media: r\n }).then(function(e) {\n var a = new o.MessageEvent(\"id\", {\n message: e.id,\n origin: n._remoteId\n });\n n.dispatchEvent(a), n._internalId = e.id, n._createPeerConnection();\n var s = {\n offerToReceiveAudio: !!t.audio,\n offerToReceiveVideo: !!t.video\n };\n \"function\" == typeof n._pc.addTransceiver && (r.audio && n._pc.addTransceiver(\"audio\", {\n direction: \"recvonly\"\n }), r.video && n._pc.addTransceiver(\"video\", {\n direction: \"recvonly\"\n })), n._pc.createOffer(s).then(function(e) {\n t && (e.sdp = n._setRtpReceiverOptions(e.sdp, t)), n._pc.setLocalDescription(e).then(function() {\n n._signaling.sendSignalingMessage(\"soac\", {\n id: n._internalId,\n signaling: e\n })\n }, function(e) {\n i.default.error(\"Set local description failed. Message: \" + JSON.stringify(e))\n })\n }, function(e) {\n i.default.error(\"Create offer failed. Error info: \" + JSON.stringify(e))\n }).catch(function(e) {\n i.default.error(\"Failed to create offer or set SDP. Message: \" + e.message), n._unsubscribe(), n._rejectPromise(e), n._fireEndedEventOnPublicationOrSubscription()\n })\n }).catch(function(e) {\n n._unsubscribe(), n._rejectPromise(e), n._fireEndedEventOnPublicationOrSubscription()\n }), new Promise(function(e, t) {\n n._subscribePromise = {\n resolve: e,\n reject: t\n }\n })\n }\n }, {\n key: \"_unpublish\",\n value: function() {\n this._signaling.sendSignalingMessage(\"unpublish\", {\n id: this._internalId\n }).catch(function(e) {\n i.default.warning(\"MCU returns negative ack for unpublishing, \" + e)\n }), this._pc && \"closed\" !== this._pc.signalingState && this._pc.close()\n }\n }, {\n key: \"_unsubscribe\",\n value: function() {\n this._signaling.sendSignalingMessage(\"unsubscribe\", {\n id: this._internalId\n }).catch(function(e) {\n i.default.warning(\"MCU returns negative ack for unsubscribing, \" + e)\n }), this._pc && \"closed\" !== this._pc.signalingState && this._pc.close()\n }\n }, {\n key: \"_muteOrUnmute\",\n value: function(e, t, n) {\n var r = this,\n i = t ? \"stream-control\" : \"subscription-control\",\n a = e ? \"pause\" : \"play\";\n return this._signaling.sendSignalingMessage(i, {\n id: this._internalId,\n operation: a,\n data: n\n }).then(function() {\n if (!t) {\n var i = e ? \"mute\" : \"unmute\";\n r._subscription.dispatchEvent(new o.MuteEvent(i, {\n kind: n\n }))\n }\n })\n }\n }, {\n key: \"_applyOptions\",\n value: function(e) {\n if (\"object\" !== p(e) || \"object\" !== p(e.video)) return Promise.reject(new u.ConferenceError(\"Options should be an object.\"));\n var t = {};\n return t.resolution = e.video.resolution, t.framerate = e.video.frameRate, t.bitrate = e.video.bitrateMultiplier ? \"x\" + e.video.bitrateMultiplier.toString() : void 0, t.keyFrameInterval = e.video.keyFrameInterval, this._signaling.sendSignalingMessage(\"subscription-control\", {\n id: this._internalId,\n operation: \"update\",\n data: {\n video: {\n from: e.video.from,\n parameters: t\n }\n }\n }).then()\n }\n }, {\n key: \"_onRemoteStreamAdded\",\n value: function(e) {\n i.default.debug(\"Remote stream added.\"), this._subscribedStream ? this._subscribedStream.mediaStream = e.streams[0] : i.default.warning(\"Received remote stream without subscription.\")\n }\n }, {\n key: \"_onLocalIceCandidate\",\n value: function(e) {\n e.candidate ? \"stable\" !== this._pc.signalingState ? this._pendingCandidates.push(e.candidate) : this._sendCandidate(e.candidate) : i.default.debug(\"Empty candidate.\")\n }\n }, {\n key: \"_fireEndedEventOnPublicationOrSubscription\",\n value: function() {\n if (!this._ended) {\n this._ended = !0;\n var e = new o.OwtEvent(\"ended\");\n this._publication ? (this._publication.dispatchEvent(e), this._publication.stop()) : this._subscription && (this._subscription.dispatchEvent(e), this._subscription.stop())\n }\n }\n }, {\n key: \"_rejectPromise\",\n value: function(e) {\n if (!e) new u.ConferenceError(\"Connection failed or closed.\");\n this._publishPromise ? (this._publishPromise.reject(e), this._publishPromise = void 0) : this._subscribePromise && (this._subscribePromise.reject(e), this._subscribePromise = void 0)\n }\n }, {\n key: \"_onIceConnectionStateChange\",\n value: function(e) {\n e && e.currentTarget && (i.default.debug(\"ICE connection state changed to \" + e.currentTarget.iceConnectionState), \"closed\" !== e.currentTarget.iceConnectionState && \"failed\" !== e.currentTarget.iceConnectionState || (this._rejectPromise(new u.ConferenceError(\"ICE connection failed or closed.\")), this._fireEndedEventOnPublicationOrSubscription()))\n }\n }, {\n key: \"_sendCandidate\",\n value: function(e) {\n this._signaling.sendSignalingMessage(\"soac\", {\n id: this._internalId,\n signaling: {\n type: \"candidate\",\n candidate: {\n candidate: \"a=\" + e.candidate,\n sdpMid: e.sdpMid,\n sdpMLineIndex: e.sdpMLineIndex\n }\n }\n })\n }\n }, {\n key: \"_createPeerConnection\",\n value: function() {\n var e = this,\n t = this._config.rtcConfiguration || {};\n d.isChrome() && (t.sdpSemantics = \"unified-plan\"), this._pc = new RTCPeerConnection(t), this._pc.onicecandidate = function(t) {\n e._onLocalIceCandidate.apply(e, [t])\n }, this._pc.ontrack = function(t) {\n e._onRemoteStreamAdded.apply(e, [t])\n }, this._pc.oniceconnectionstatechange = function(t) {\n e._onIceConnectionStateChange.apply(e, [t])\n }\n }\n }, {\n key: \"_getStats\",\n value: function() {\n return this._pc ? {stats: this._pc.getStats(), peerConnection: this._pc} : Promise.reject(new u.ConferenceError(\"PeerConnection is not available.\"))\n }\n }, {\n key: \"_readyHandler\",\n value: function() {\n var e = this;\n this._subscribePromise ? (this._subscription = new c.Subscription(this._internalId, function() {\n e._unsubscribe()\n }, function() {\n return e._getStats()\n }, function(t) {\n return e._muteOrUnmute(!0, !1, t)\n }, function(t) {\n return e._muteOrUnmute(!1, !1, t)\n }, function(t) {\n return e._applyOptions(t)\n }), this._subscribedStream.addEventListener(\"ended\", function() {\n e._subscription.dispatchEvent(\"ended\", new o.OwtEvent(\"ended\"))\n }), this._subscribePromise.resolve(this._subscription)) : this._publishPromise && (this._publication = new s.Publication(this._internalId, function() {\n return e._unpublish(), Promise.resolve()\n }, function() {\n return e._getStats()\n }, function(t) {\n return e._muteOrUnmute(!0, !0, t)\n }, function(t) {\n return e._muteOrUnmute(!1, !0, t)\n }), this._publishPromise.resolve(this._publication)), this._publishPromise = null, this._subscribePromise = null\n }\n }, {\n key: \"_sdpHandler\",\n value: function(e) {\n var t = this;\n \"answer\" === e.type && ((this._publication || this._publishPromise) && this._options && (e.sdp = this._setRtpSenderOptions(e.sdp, this._options)), this._pc.setRemoteDescription(e).then(function() {\n if (t._pendingCandidates.length > 0) {\n var e = !0,\n n = !1,\n r = void 0;\n try {\n for (var i, o = t._pendingCandidates[Symbol.iterator](); !(e = (i = o.next()).done); e = !0) {\n var a = i.value;\n t._sendCandidate(a)\n }\n } catch (e) {\n n = !0, r = e\n } finally {\n try {\n e || null == o.return || o.return()\n } finally {\n if (n) throw r\n }\n }\n }\n }, function(e) {\n i.default.error(\"Set remote description failed: \" + e), t._rejectPromise(e), t._fireEndedEventOnPublicationOrSubscription()\n }))\n }\n }, {\n key: \"_errorHandler\",\n value: function(e) {\n var t = this._publishPromise || this._subscribePromise;\n if (t) t.reject(new u.ConferenceError(e));\n else {\n var n = this._publication || this._subscription;\n if (n) {\n var r = new u.ConferenceError(e),\n a = new o.ErrorEvent(\"error\", {\n error: r\n });\n n.dispatchEvent(a)\n } else i.default.warning(\"Neither publication nor subscription is available.\")\n }\n }\n }, {\n key: \"_setCodecOrder\",\n value: function(e, t) {\n if (this._publication || this._publishPromise) {\n if (t.audio) {\n var n = Array.from(t.audio, function(e) {\n return e.codec.name\n });\n e = l.reorderCodecs(e, \"audio\", n)\n }\n if (t.video) {\n var r = Array.from(t.video, function(e) {\n return e.codec.name\n });\n e = l.reorderCodecs(e, \"video\", r)\n }\n } else {\n if (t.audio && t.audio.codecs) {\n var i = Array.from(t.audio.codecs, function(e) {\n return e.name\n });\n e = l.reorderCodecs(e, \"audio\", i)\n }\n if (t.video && t.video.codecs) {\n var o = Array.from(t.video.codecs, function(e) {\n return e.name\n });\n e = l.reorderCodecs(e, \"video\", o)\n }\n }\n return e\n }\n }, {\n key: \"_setMaxBitrate\",\n value: function(e, t) {\n return \"object\" === p(t.audio) && (e = l.setMaxBitrate(e, t.audio)), \"object\" === p(t.video) && (e = l.setMaxBitrate(e, t.video)), e\n }\n }, {\n key: \"_setRtpSenderOptions\",\n value: function(e, t) {\n return e = this._setMaxBitrate(e, t)\n }\n }, {\n key: \"_setRtpReceiverOptions\",\n value: function(e, t) {\n return e = this._setCodecOrder(e, t)\n }\n }, {\n key: \"_onStreamEvent\",\n value: function(e) {\n var t, n;\n (this._publication && e.id === this._publication.id ? t = this._publication : this._subscribedStream && e.id === this._subscribedStream.id && (t = this._subscription), t) && (\"audio.status\" === e.data.field ? n = a.TrackKind.AUDIO : \"video.status\" === e.data.field ? n = a.TrackKind.VIDEO : i.default.warning(\"Invalid data field for stream update info.\"), \"active\" === e.data.value ? t.dispatchEvent(new o.MuteEvent(\"unmute\", {\n kind: n\n })) : \"inactive\" === e.data.value ? t.dispatchEvent(new o.MuteEvent(\"mute\", {\n kind: n\n })) : i.default.warning(\"Invalid data value for stream update info.\"))\n }\n }]) && h(n.prototype, r), f && h(n, f), t\n }();\n n.ConferencePeerConnectionChannel = _\n }, {\n \"../base/event.js\": 3,\n \"../base/logger.js\": 5,\n \"../base/mediaformat.js\": 6,\n \"../base/publication.js\": 8,\n \"../base/sdputils.js\": 9,\n \"../base/utils.js\": 11,\n \"./error.js\": 14,\n \"./subscription.js\": 21\n }],\n 13: [function(e, t, n) {\n \"use strict\";\n Object.defineProperty(n, \"__esModule\", {\n value: !0\n }), n.ConferenceClient = void 0;\n var r, i = m(e(\"../base/event.js\")),\n o = e(\"./signaling.js\"),\n a = (r = e(\"../base/logger.js\")) && r.__esModule ? r : {\n default: r\n },\n s = e(\"../base/base64.js\"),\n c = e(\"./error.js\"),\n u = m(e(\"../base/utils.js\")),\n d = m(e(\"../base/stream.js\")),\n l = e(\"./participant.js\"),\n f = e(\"./info.js\"),\n p = e(\"./channel.js\"),\n h = e(\"./mixedstream.js\"),\n v = m(e(\"./streamutils.js\"));\n\n function m(e) {\n if (e && e.__esModule) return e;\n var t = {};\n if (null != e)\n for (var n in e)\n if (Object.prototype.hasOwnProperty.call(e, n)) {\n var r = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(e, n) : {};\n r.get || r.set ? Object.defineProperty(t, n, r) : t[n] = e[n]\n } return t.default = e, t\n }\n var b = 1,\n _ = 2,\n y = 3,\n g = function(e, t) {\n var n = new i.OwtEvent(e, t);\n return n.participant = t.participant, n\n };\n n.ConferenceClient = function(e, t) {\n Object.setPrototypeOf(this, new i.EventDispatcher), e = e || {};\n var n, r, m = this,\n S = b,\n P = t || new o.SioSignaling,\n w = new Map,\n O = new Map,\n E = new Map,\n j = new Map;\n\n function C(e, t) {\n if (\"soac\" === e || \"progress\" === e) {\n if (!j.has(t.id)) return void a.default.warning(\"Cannot find a channel for incoming data.\");\n j.get(t.id).onMessage(e, t)\n } else \"stream\" === e ? \"add\" === t.status ? function(e) {\n var t = T(e);\n w.set(t.id, t);\n var n = new d.StreamEvent(\"streamadded\", {\n stream: t\n });\n m.dispatchEvent(n)\n }(t.data) : \"remove\" === t.status ? function(e) {\n if (w.has(e.id)) {\n var t = w.get(e.id),\n n = new i.OwtEvent(\"ended\");\n w.delete(t.id), t.dispatchEvent(n)\n } else a.default.warning(\"Cannot find specific remote stream.\")\n }(t) : \"update\" === t.status && (\"audio.status\" === t.data.field || \"video.status\" === t.data.field ? j.forEach(function(n) {\n n.onMessage(e, t)\n }) : \"activeInput\" === t.data.field ? function(e) {\n if (w.has(e.id)) {\n var t = w.get(e.id),\n n = new h.ActiveAudioInputChangeEvent(\"activeaudioinputchange\", {\n activeAudioInputStreamId: e.data.value\n });\n t.dispatchEvent(n)\n } else a.default.warning(\"Cannot find specific remote stream.\")\n }(t) : \"video.layout\" === t.data.field ? function(e) {\n if (w.has(e.id)) {\n var t = w.get(e.id),\n n = new h.LayoutChangeEvent(\"layoutchange\", {\n layout: e.data.value\n });\n t.dispatchEvent(n)\n } else a.default.warning(\"Cannot find specific remote stream.\")\n }(t) : \".\" === t.data.field ? function(e) {\n if (w.has(e.id)) {\n var t = w.get(e.id);\n t.settings = v.convertToPublicationSettings(e.media), t.capabilities = v.convertToSubscriptionCapabilities(e.media);\n var n = new i.OwtEvent(\"updated\");\n t.dispatchEvent(n)\n } else a.default.warning(\"Cannot find specific remote stream.\")\n }(t.data.value) : a.default.warning(\"Unknown stream event from MCU.\")) : \"text\" === e ? function(e) {\n var t = new i.MessageEvent(\"messagereceived\", {\n message: e.message,\n origin: e.from,\n to: e.to\n });\n m.dispatchEvent(t)\n }(t) : \"participant\" === e && function(e) {\n if (\"join\" === e.action) {\n e = e.data;\n var t = new l.Participant(e.id, e.role, e.user);\n O.set(e.id, t);\n var n = new g(\"participantjoined\", {\n participant: t\n });\n m.dispatchEvent(n)\n } else if (\"leave\" === e.action) {\n var r = e.data;\n if (!O.has(r)) return void a.default.warning(\"Received leave message from MCU for an unknown participant.\");\n var o = O.get(r);\n O.delete(r), o.dispatchEvent(new i.OwtEvent(\"left\"))\n }\n }(t)\n }\n\n function T(e) {\n if (\"mixed\" === e.type) return new h.RemoteMixedStream(e);\n var t, n;\n e.media.audio && (t = e.media.audio.source), e.media.video && (n = e.media.video.source);\n var r = new d.RemoteStream(e.id, e.info.owner, void 0, new d.StreamSourceInfo(t, n), e.info.attributes);\n return r.settings = v.convertToPublicationSettings(e.media), r.capabilities = v.convertToSubscriptionCapabilities(e.media), r\n }\n\n function I(e, t) {\n return P.send(e, t)\n }\n\n function k() {\n var t = Object.create(i.EventDispatcher);\n t.sendSignalingMessage = I;\n var n = new p.ConferencePeerConnectionChannel(e, t);\n return n.addEventListener(\"id\", function(e) {\n j.set(e.message, n)\n }), n\n }\n\n function M() {\n O.clear(), w.clear()\n }\n P.addEventListener(\"data\", function(e) {\n C(e.message.notification, e.message.data)\n }), P.addEventListener(\"disconnect\", function() {\n M(), S = b, m.dispatchEvent(new i.OwtEvent(\"serverdisconnected\"))\n }), Object.defineProperty(this, \"info\", {\n configurable: !1,\n get: function() {\n return r ? new f.ConferenceInfo(r.id, Array.from(O, function(e) {\n return e[1]\n }), Array.from(w, function(e) {\n return e[1]\n }), n) : null\n }\n }), this.join = function(e) {\n return new Promise(function(t, i) {\n var o = JSON.parse(s.Base64.decodeBase64(e)),\n a = !0 === o.secure,\n d = o.host;\n d = d.replace(\"8080\", \"443\");\n if (\"string\" == typeof d)\n if (-1 === d.indexOf(\"http\") && (d = a ? \"https://\" + d : \"http://\" + d), S === b) {\n S = _;\n var p = {\n token: e,\n userAgent: u.sysInfo(),\n protocol: \"1.0\"\n };\n P.connect(d, a, p).then(function(e) {\n if (S = y, void 0 !== (r = e.room).streams) {\n var i = !0,\n o = !1,\n a = void 0;\n try {\n for (var s, c = r.streams[Symbol.iterator](); !(i = (s = c.next()).done); i = !0) {\n var u = s.value;\n \"mixed\" === u.type && (u.viewport = u.info.label), w.set(u.id, T(u))\n }\n } catch (e) {\n o = !0, a = e\n } finally {\n try {\n i || null == c.return || c.return()\n } finally {\n if (o) throw a\n }\n }\n }\n if (e.room && void 0 !== e.room.participants) {\n var d = !0,\n p = !1,\n h = void 0;\n try {\n for (var v, m = e.room.participants[Symbol.iterator](); !(d = (v = m.next()).done); d = !0) {\n var b = v.value;\n O.set(b.id, new l.Participant(b.id, b.role, b.user)), b.id === e.id && (n = O.get(b.id))\n }\n } catch (e) {\n p = !0, h = e\n } finally {\n try {\n d || null == m.return || m.return()\n } finally {\n if (p) throw h\n }\n }\n }\n t(new f.ConferenceInfo(e.room.id, Array.from(O.values()), Array.from(w.values()), n))\n }, function(e) {\n S = b, i(new c.ConferenceError(e))\n })\n } else i(new c.ConferenceError(\"connection state invalid\"));\n else i(new c.ConferenceError(\"Invalid host.\"))\n })\n }, this.publish = function(e, t) {\n return e instanceof d.LocalStream ? E.has(e.mediaStream.id) ? Promise.reject(new c.ConferenceError(\"Cannot publish a published stream.\")) : k().publish(e, t) : Promise.reject(new c.ConferenceError(\"Invalid stream.\"))\n }, this.subscribe = function(e, t) {\n return e instanceof d.RemoteStream ? k().subscribe(e, t) : Promise.reject(new c.ConferenceError(\"Invalid stream.\"))\n }, this.send = function(e, t) {\n return void 0 === t && (t = \"all\"), I(\"text\", {\n to: t,\n message: e\n })\n }, this.leave = function() {\n return P.disconnect().then(function() {\n M(), S = b\n })\n }\n }\n }, {\n \"../base/base64.js\": 1,\n \"../base/event.js\": 3,\n \"../base/logger.js\": 5,\n \"../base/stream.js\": 10,\n \"../base/utils.js\": 11,\n \"./channel.js\": 12,\n \"./error.js\": 14,\n \"./info.js\": 16,\n \"./mixedstream.js\": 17,\n \"./participant.js\": 18,\n \"./signaling.js\": 19,\n \"./streamutils.js\": 20\n }],\n 14: [function(e, t, n) {\n \"use strict\";\n\n function r(e) {\n return (r = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(e) {\n return typeof e\n } : function(e) {\n return e && \"function\" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? \"symbol\" : typeof e\n })(e)\n }\n\n function i(e, t) {\n return !t || \"object\" !== r(t) && \"function\" != typeof t ? function(e) {\n if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return e\n }(e) : t\n }\n\n function o(e) {\n var t = \"function\" == typeof Map ? new Map : void 0;\n return (o = function(e) {\n if (null === e || (n = e, -1 === Function.toString.call(n).indexOf(\"[native code]\"))) return e;\n var n;\n if (\"function\" != typeof e) throw new TypeError(\"Super expression must either be null or a function\");\n if (void 0 !== t) {\n if (t.has(e)) return t.get(e);\n t.set(e, r)\n }\n\n function r() {\n return a(e, arguments, c(this).constructor)\n }\n return r.prototype = Object.create(e.prototype, {\n constructor: {\n value: r,\n enumerable: !1,\n writable: !0,\n configurable: !0\n }\n }), s(r, e)\n })(e)\n }\n\n function a(e, t, n) {\n return (a = function() {\n if (\"undefined\" == typeof Reflect || !Reflect.construct) return !1;\n if (Reflect.construct.sham) return !1;\n if (\"function\" == typeof Proxy) return !0;\n try {\n return Date.prototype.toString.call(Reflect.construct(Date, [], function() {})), !0\n } catch (e) {\n return !1\n }\n }() ? Reflect.construct : function(e, t, n) {\n var r = [null];\n r.push.apply(r, t);\n var i = new(Function.bind.apply(e, r));\n return n && s(i, n.prototype), i\n }).apply(null, arguments)\n }\n\n function s(e, t) {\n return (s = Object.setPrototypeOf || function(e, t) {\n return e.__proto__ = t, e\n })(e, t)\n }\n\n function c(e) {\n return (c = Object.setPrototypeOf ? Object.getPrototypeOf : function(e) {\n return e.__proto__ || Object.getPrototypeOf(e)\n })(e)\n }\n Object.defineProperty(n, \"__esModule\", {\n value: !0\n }), n.ConferenceError = void 0;\n var u = function(e) {\n function t(e) {\n return function(e, t) {\n if (!(e instanceof t)) throw new TypeError(\"Cannot call a class as a function\")\n }(this, t), i(this, c(t).call(this, e))\n }\n return function(e, t) {\n if (\"function\" != typeof t && null !== t) throw new TypeError(\"Super expression must either be null or a function\");\n e.prototype = Object.create(t && t.prototype, {\n constructor: {\n value: e,\n writable: !0,\n configurable: !0\n }\n }), t && s(e, t)\n }(t, o(Error)), t\n }();\n n.ConferenceError = u\n }, {}],\n 15: [function(e, t, n) {\n \"use strict\";\n Object.defineProperty(n, \"__esModule\", {\n value: !0\n }), Object.defineProperty(n, \"ConferenceClient\", {\n enumerable: !0,\n get: function() {\n return r.ConferenceClient\n }\n }), Object.defineProperty(n, \"SioSignaling\", {\n enumerable: !0,\n get: function() {\n return i.SioSignaling\n }\n });\n var r = e(\"./client.js\"),\n i = e(\"./signaling.js\")\n }, {\n \"./client.js\": 13,\n \"./signaling.js\": 19\n }],\n 16: [function(e, t, n) {\n \"use strict\";\n Object.defineProperty(n, \"__esModule\", {\n value: !0\n }), n.ConferenceInfo = void 0;\n n.ConferenceInfo = function e(t, n, r, i) {\n ! function(e, t) {\n if (!(e instanceof t)) throw new TypeError(\"Cannot call a class as a function\")\n }(this, e), this.id = t, this.participants = n, this.remoteStreams = r, this.self = i\n }\n }, {}],\n 17: [function(e, t, n) {\n \"use strict\";\n Object.defineProperty(n, \"__esModule\", {\n value: !0\n }), n.LayoutChangeEvent = n.ActiveAudioInputChangeEvent = n.RemoteMixedStream = void 0;\n var r = a(e(\"../base/stream.js\")),\n i = a(e(\"./streamutils.js\")),\n o = e(\"../base/event.js\");\n\n function a(e) {\n if (e && e.__esModule) return e;\n var t = {};\n if (null != e)\n for (var n in e)\n if (Object.prototype.hasOwnProperty.call(e, n)) {\n var r = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(e, n) : {};\n r.get || r.set ? Object.defineProperty(t, n, r) : t[n] = e[n]\n } return t.default = e, t\n }\n\n function s(e) {\n return (s = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(e) {\n return typeof e\n } : function(e) {\n return e && \"function\" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? \"symbol\" : typeof e\n })(e)\n }\n\n function c(e, t) {\n if (!(e instanceof t)) throw new TypeError(\"Cannot call a class as a function\")\n }\n\n function u(e, t) {\n return !t || \"object\" !== s(t) && \"function\" != typeof t ? function(e) {\n if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return e\n }(e) : t\n }\n\n function d(e) {\n return (d = Object.setPrototypeOf ? Object.getPrototypeOf : function(e) {\n return e.__proto__ || Object.getPrototypeOf(e)\n })(e)\n }\n\n function l(e, t) {\n if (\"function\" != typeof t && null !== t) throw new TypeError(\"Super expression must either be null or a function\");\n e.prototype = Object.create(t && t.prototype, {\n constructor: {\n value: e,\n writable: !0,\n configurable: !0\n }\n }), t && f(e, t)\n }\n\n function f(e, t) {\n return (f = Object.setPrototypeOf || function(e, t) {\n return e.__proto__ = t, e\n })(e, t)\n }\n var p = function(e) {\n function t(e) {\n var n;\n if (c(this, t), \"mixed\" !== e.type) throw new TypeError(\"Not a mixed stream\");\n return (n = u(this, d(t).call(this, e.id, void 0, void 0, new r.StreamSourceInfo(\"mixed\", \"mixed\")))).settings = i.convertToPublicationSettings(e.media), n.capabilities = new i.convertToSubscriptionCapabilities(e.media), n\n }\n return l(t, r.RemoteStream), t\n }();\n n.RemoteMixedStream = p;\n var h = function(e) {\n function t(e, n) {\n var r;\n return c(this, t), (r = u(this, d(t).call(this, e))).activeAudioInputStreamId = n.activeAudioInputStreamId, r\n }\n return l(t, o.OwtEvent), t\n }();\n n.ActiveAudioInputChangeEvent = h;\n var v = function(e) {\n function t(e, n) {\n var r;\n return c(this, t), (r = u(this, d(t).call(this, e))).layout = n.layout, r\n }\n return l(t, o.OwtEvent), t\n }();\n n.LayoutChangeEvent = v\n }, {\n \"../base/event.js\": 3,\n \"../base/stream.js\": 10,\n \"./streamutils.js\": 20\n }],\n 18: [function(e, t, n) {\n \"use strict\";\n Object.defineProperty(n, \"__esModule\", {\n value: !0\n }), n.Participant = void 0;\n var r = function(e) {\n if (e && e.__esModule) return e;\n var t = {};\n if (null != e)\n for (var n in e)\n if (Object.prototype.hasOwnProperty.call(e, n)) {\n var r = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(e, n) : {};\n r.get || r.set ? Object.defineProperty(t, n, r) : t[n] = e[n]\n } return t.default = e, t\n }(e(\"../base/event.js\"));\n\n function i(e) {\n return (i = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(e) {\n return typeof e\n } : function(e) {\n return e && \"function\" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? \"symbol\" : typeof e\n })(e)\n }\n\n function o(e) {\n return (o = Object.setPrototypeOf ? Object.getPrototypeOf : function(e) {\n return e.__proto__ || Object.getPrototypeOf(e)\n })(e)\n }\n\n function a(e, t) {\n return (a = Object.setPrototypeOf || function(e, t) {\n return e.__proto__ = t, e\n })(e, t)\n }\n\n function s(e) {\n if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return e\n }\n var c = function(e) {\n function t(e, n, r) {\n var a, c, u;\n return function(e, t) {\n if (!(e instanceof t)) throw new TypeError(\"Cannot call a class as a function\")\n }(this, t), c = this, a = !(u = o(t).call(this)) || \"object\" !== i(u) && \"function\" != typeof u ? s(c) : u, Object.defineProperty(s(s(a)), \"id\", {\n configurable: !1,\n writable: !1,\n value: e\n }), Object.defineProperty(s(s(a)), \"role\", {\n configurable: !1,\n writable: !1,\n value: n\n }), Object.defineProperty(s(s(a)), \"userId\", {\n configurable: !1,\n writable: !1,\n value: r\n }), a\n }\n return function(e, t) {\n if (\"function\" != typeof t && null !== t) throw new TypeError(\"Super expression must either be null or a function\");\n e.prototype = Object.create(t && t.prototype, {\n constructor: {\n value: e,\n writable: !0,\n configurable: !0\n }\n }), t && a(e, t)\n }(t, r.EventDispatcher), t\n }();\n n.Participant = c\n }, {\n \"../base/event.js\": 3\n }],\n 19: [function(e, t, n) {\n \"use strict\";\n Object.defineProperty(n, \"__esModule\", {\n value: !0\n }), n.SioSignaling = void 0;\n var r, i = (r = e(\"../base/logger.js\")) && r.__esModule ? r : {\n default: r\n },\n o = function(e) {\n if (e && e.__esModule) return e;\n var t = {};\n if (null != e)\n for (var n in e)\n if (Object.prototype.hasOwnProperty.call(e, n)) {\n var r = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(e, n) : {};\n r.get || r.set ? Object.defineProperty(t, n, r) : t[n] = e[n]\n } return t.default = e, t\n }(e(\"../base/event.js\")),\n a = e(\"./error.js\"),\n s = e(\"../base/base64.js\");\n\n function c(e) {\n return (c = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(e) {\n return typeof e\n } : function(e) {\n return e && \"function\" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? \"symbol\" : typeof e\n })(e)\n }\n\n function u(e, t) {\n for (var n = 0; n < t.length; n++) {\n var r = t[n];\n r.enumerable = r.enumerable || !1, r.configurable = !0, \"value\" in r && (r.writable = !0), Object.defineProperty(e, r.key, r)\n }\n }\n\n function d(e, t) {\n return !t || \"object\" !== c(t) && \"function\" != typeof t ? function(e) {\n if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return e\n }(e) : t\n }\n\n function l(e) {\n return (l = Object.setPrototypeOf ? Object.getPrototypeOf : function(e) {\n return e.__proto__ || Object.getPrototypeOf(e)\n })(e)\n }\n\n function f(e, t) {\n return (f = Object.setPrototypeOf || function(e, t) {\n return e.__proto__ = t, e\n })(e, t)\n }\n\n function p(e, t, n, r) {\n \"ok\" === e || \"success\" === e ? n(t) : \"error\" === e ? r(t) : i.default.error(\"MCU returns unknown ack.\")\n }\n var h = function(e) {\n function t() {\n var e;\n return function(e, t) {\n if (!(e instanceof t)) throw new TypeError(\"Cannot call a class as a function\")\n }(this, t), (e = d(this, l(t).call(this)))._socket = null, e._loggedIn = !1, e._reconnectTimes = 0, e._reconnectionTicket = null, e._refreshReconnectionTicket = null, e\n }\n var n, r, c;\n return function(e, t) {\n if (\"function\" != typeof t && null !== t) throw new TypeError(\"Super expression must either be null or a function\");\n e.prototype = Object.create(t && t.prototype, {\n constructor: {\n value: e,\n writable: !0,\n configurable: !0\n }\n }), t && f(e, t)\n }(t, o.EventDispatcher), n = t, (r = [{\n key: \"connect\",\n value: function(e, t, n) {\n var r = this;\n return new Promise(function(t, i) {\n var a = {\n reconnection: !0,\n reconnectionAttempts: 10,\n \"force new connection\": !0\n };\n r._socket = io(e, a), [\"participant\", \"text\", \"stream\", \"progress\"].forEach(function(e) {\n r._socket.on(e, function(t) {\n r.dispatchEvent(new o.MessageEvent(\"data\", {\n message: {\n notification: e,\n data: t\n }\n }))\n })\n }), r._socket.on(\"reconnecting\", function() {\n r._reconnectTimes++\n }), r._socket.on(\"reconnect_failed\", function() {\n r._reconnectTimes >= 10 && r.dispatchEvent(new o.OwtEvent(\"disconnect\"))\n }), r._socket.on(\"connect_error\", function(t) {\n i(\"connect_error:\".concat(e))\n }), r._socket.on(\"drop\", function() {\n r._reconnectTimes = 10\n }), r._socket.on(\"disconnect\", function() {\n r._clearReconnectionTask(), r._reconnectTimes >= 10 && (r._loggedIn = !1, r.dispatchEvent(new o.OwtEvent(\"disconnect\")))\n }), r._socket.emit(\"login\", n, function(e, n) {\n \"ok\" === e && (r._loggedIn = !0, r._onReconnectionTicket(n.reconnectionTicket), r._socket.on(\"connect\", function() {\n r._socket.emit(\"relogin\", r._reconnectionTicket, function(e, t) {\n \"ok\" === e ? (r._reconnectTimes = 0, r._onReconnectionTicket(t)) : r.dispatchEvent(new o.OwtEvent(\"disconnect\"))\n })\n })), p(e, n, t, i)\n })\n })\n }\n }, {\n key: \"disconnect\",\n value: function() {\n var e = this;\n return !this._socket || this._socket.disconnected ? Promise.reject(new a.ConferenceError(\"Portal is not connected.\")) : new Promise(function(t, n) {\n e._socket.emit(\"logout\", function(r, i) {\n e._reconnectTimes = 10, e._socket.disconnect(), p(r, i, t, n)\n })\n })\n }\n }, {\n key: \"send\",\n value: function(e, t) {\n var n = this;\n return new Promise(function(r, i) {\n n._socket.emit(e, t, function(e, t) {\n p(e, t, r, i)\n })\n })\n }\n }, {\n key: \"_onReconnectionTicket\",\n value: function(e) {\n var t = this;\n this._reconnectionTicket = e;\n var n = JSON.parse(s.Base64.decodeBase64(e)),\n r = Date.now();\n if (n.notAfter <= r - 1e4) i.default.warning(\"Reconnection ticket expires too soon.\");\n else {\n var o = n.notAfter - r - 6e4;\n o < 0 && (o = n.notAfter - r - 1e4), this._clearReconnectionTask(), this._refreshReconnectionTicket = setTimeout(function() {\n t._socket.emit(\"refreshReconnectionTicket\", function(e, n) {\n \"ok\" === e ? t._onReconnectionTicket(n) : i.default.warning(\"Failed to refresh reconnection ticket.\")\n })\n }, o)\n }\n }\n }, {\n key: \"_clearReconnectionTask\",\n value: function() {\n clearTimeout(this._refreshReconnectionTicket), this._refreshReconnectionTicket = null\n }\n }]) && u(n.prototype, r), c && u(n, c), t\n }();\n n.SioSignaling = h\n }, {\n \"../base/base64.js\": 1,\n \"../base/event.js\": 3,\n \"../base/logger.js\": 5,\n \"./error.js\": 14\n }],\n 20: [function(e, t, n) {\n \"use strict\";\n Object.defineProperty(n, \"__esModule\", {\n value: !0\n }), n.convertToPublicationSettings = function(e) {\n var t, n, a, s, c, u, d, l;\n e.audio && (e.audio.format && (n = new o.AudioCodecParameters(e.audio.format.codec, e.audio.format.channelNum, e.audio.format.sampleRate)), t = new r.AudioPublicationSettings(n));\n e.video && (e.video.format && (s = new o.VideoCodecParameters(e.video.format.codec, e.video.format.profile)), e.video.parameters && (e.video.parameters.resolution && (c = new i.Resolution(e.video.parameters.resolution.width, e.video.parameters.resolution.height)), u = e.video.parameters.framerate, d = 1e3 * e.video.parameters.bitrate, l = e.video.parameters.keyFrameInterval), a = new r.VideoPublicationSettings(s, c, u, d, l));\n return new r.PublicationSettings(t, a)\n }, n.convertToSubscriptionCapabilities = function(e) {\n var t, n;\n if (e.audio) {\n var r = [];\n if (e.audio && e.audio.format && r.push(new o.AudioCodecParameters(e.audio.format.codec, e.audio.format.channelNum, e.audio.format.sampleRate)), e.audio && e.audio.optional && e.audio.optional.format) {\n var s = !0,\n d = !1,\n l = void 0;\n try {\n for (var f, p = e.audio.optional.format[Symbol.iterator](); !(s = (f = p.next()).done); s = !0) {\n var h = f.value,\n v = new o.AudioCodecParameters(h.codec, h.channelNum, h.sampleRate);\n r.push(v)\n }\n } catch (e) {\n d = !0, l = e\n } finally {\n try {\n s || null == p.return || p.return()\n } finally {\n if (d) throw l\n }\n }\n }\n r.sort(), t = new a.AudioSubscriptionCapabilities(r)\n }\n if (e.video) {\n var m = [];\n if (e.video && e.video.format && m.push(new o.VideoCodecParameters(e.video.format.codec, e.video.format.profile)), e.video && e.video.optional && e.video.optional.format) {\n var b = !0,\n _ = !1,\n y = void 0;\n try {\n for (var g, S = e.video.optional.format[Symbol.iterator](); !(b = (g = S.next()).done); b = !0) {\n var P = g.value,\n w = new o.VideoCodecParameters(P.codec, P.profile);\n m.push(w)\n }\n } catch (e) {\n _ = !0, y = e\n } finally {\n try {\n b || null == S.return || S.return()\n } finally {\n if (_) throw y\n }\n }\n }\n m.sort();\n var O = Array.from(e.video.optional.parameters.resolution, function(e) {\n return new i.Resolution(e.width, e.height)\n });\n e.video && e.video.parameters && e.video.parameters.resolution && O.push(new i.Resolution(e.video.parameters.resolution.width, e.video.parameters.resolution.height)), O.sort(u);\n var E = Array.from(e.video.optional.parameters.bitrate, function(e) {\n return function(e) {\n if (\"string\" != typeof e || !e.startsWith(\"x\")) return L.Logger.warning(\"Invalid bitrate multiplier input.\"), 0;\n return Number.parseFloat(e.replace(/^x/, \"\"))\n }(e)\n });\n E.push(1), E.sort(c);\n var j = JSON.parse(JSON.stringify(e.video.optional.parameters.framerate));\n e.video && e.video.parameters && e.video.parameters.framerate && j.push(e.video.parameters.framerate), j.sort(c);\n var C = JSON.parse(JSON.stringify(e.video.optional.parameters.keyFrameInterval));\n e.video && e.video.parameters && e.video.parameters.keyFrameInterval && C.push(e.video.parameters.keyFrameInterval), C.sort(c), n = new a.VideoSubscriptionCapabilities(m, O, j, E, C)\n }\n return new a.SubscriptionCapabilities(t, n)\n };\n var r = s(e(\"../base/publication.js\")),\n i = s(e(\"../base/mediaformat.js\")),\n o = s(e(\"../base/codec.js\")),\n a = s(e(\"./subscription.js\"));\n\n function s(e) {\n if (e && e.__esModule) return e;\n var t = {};\n if (null != e)\n for (var n in e)\n if (Object.prototype.hasOwnProperty.call(e, n)) {\n var r = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(e, n) : {};\n r.get || r.set ? Object.defineProperty(t, n, r) : t[n] = e[n]\n } return t.default = e, t\n }\n\n function c(e, t) {\n return e - t\n }\n\n function u(e, t) {\n return e.width !== t.width ? e.width - t.width : e.height - t.height\n }\n }, {\n \"../base/codec.js\": 2,\n \"../base/mediaformat.js\": 6,\n \"../base/publication.js\": 8,\n \"./subscription.js\": 21\n }],\n 21: [function(e, t, n) {\n \"use strict\";\n Object.defineProperty(n, \"__esModule\", {\n value: !0\n }), n.Subscription = n.SubscriptionUpdateOptions = n.VideoSubscriptionUpdateOptions = n.SubscribeOptions = n.VideoSubscriptionConstraints = n.AudioSubscriptionConstraints = n.SubscriptionCapabilities = n.VideoSubscriptionCapabilities = n.AudioSubscriptionCapabilities = void 0;\n i(e(\"../base/mediaformat.js\")), i(e(\"../base/codec.js\"));\n var r = e(\"../base/event.js\");\n\n function i(e) {\n if (e && e.__esModule) return e;\n var t = {};\n if (null != e)\n for (var n in e)\n if (Object.prototype.hasOwnProperty.call(e, n)) {\n var r = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(e, n) : {};\n r.get || r.set ? Object.defineProperty(t, n, r) : t[n] = e[n]\n } return t.default = e, t\n }\n\n function o(e) {\n return (o = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(e) {\n return typeof e\n } : function(e) {\n return e && \"function\" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? \"symbol\" : typeof e\n })(e)\n }\n\n function a(e) {\n return (a = Object.setPrototypeOf ? Object.getPrototypeOf : function(e) {\n return e.__proto__ || Object.getPrototypeOf(e)\n })(e)\n }\n\n function s(e, t) {\n return (s = Object.setPrototypeOf || function(e, t) {\n return e.__proto__ = t, e\n })(e, t)\n }\n\n function c(e) {\n if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return e\n }\n\n function u(e, t) {\n if (!(e instanceof t)) throw new TypeError(\"Cannot call a class as a function\")\n }\n n.AudioSubscriptionCapabilities = function e(t) {\n u(this, e), this.codecs = t\n };\n n.VideoSubscriptionCapabilities = function e(t, n, r, i, o) {\n u(this, e), this.codecs = t, this.resolutions = n, this.frameRates = r, this.bitrateMultipliers = i, this.keyFrameIntervals = o\n };\n n.SubscriptionCapabilities = function e(t, n) {\n u(this, e), this.audio = t, this.video = n\n };\n n.AudioSubscriptionConstraints = function e(t) {\n u(this, e), this.codecs = t\n };\n n.VideoSubscriptionConstraints = function e(t, n, r, i, o) {\n u(this, e), this.codecs = t, this.resolution = n, this.frameRate = r, this.bitrateMultiplier = i, this.keyFrameInterval = o\n };\n n.SubscribeOptions = function e(t, n) {\n u(this, e), this.audio = t, this.video = n\n };\n n.VideoSubscriptionUpdateOptions = function e() {\n u(this, e), this.resolution = void 0, this.frameRate = void 0, this.bitrateMultipliers = void 0, this.keyFrameInterval = void 0\n };\n n.SubscriptionUpdateOptions = function e() {\n u(this, e), this.video = void 0\n };\n var d = function(e) {\n function t(e, n, r, i, s, d) {\n var l, f, p;\n if (u(this, t), f = this, l = !(p = a(t).call(this)) || \"object\" !== o(p) && \"function\" != typeof p ? c(f) : p, !e) throw new TypeError(\"ID cannot be null or undefined.\");\n return Object.defineProperty(c(c(l)), \"id\", {\n configurable: !1,\n writable: !1,\n value: e\n }), l.stop = n, l.getStats = r, l.mute = i, l.unmute = s, l.applyOptions = d, l\n }\n return function(e, t) {\n if (\"function\" != typeof t && null !== t) throw new TypeError(\"Super expression must either be null or a function\");\n e.prototype = Object.create(t && t.prototype, {\n constructor: {\n value: e,\n writable: !0,\n configurable: !0\n }\n }), t && s(e, t)\n }(t, r.EventDispatcher), t\n }();\n n.Subscription = d\n }, {\n \"../base/codec.js\": 2,\n \"../base/event.js\": 3,\n \"../base/mediaformat.js\": 6\n }],\n 22: [function(e, t, n) {\n \"use strict\";\n Object.defineProperty(n, \"__esModule\", {\n value: !0\n }), n.Conference = n.P2P = n.Base = void 0;\n var r = a(e(\"./base/export.js\")),\n i = a(e(\"./p2p/export.js\")),\n o = a(e(\"./conference/export.js\"));\n\n function a(e) {\n if (e && e.__esModule) return e;\n var t = {};\n if (null != e)\n for (var n in e)\n if (Object.prototype.hasOwnProperty.call(e, n)) {\n var r = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(e, n) : {};\n r.get || r.set ? Object.defineProperty(t, n, r) : t[n] = e[n]\n } return t.default = e, t\n }\n var s = r;\n n.Base = s;\n var c = i;\n n.P2P = c;\n var u = o;\n n.Conference = u\n }, {\n \"./base/export.js\": 4,\n \"./conference/export.js\": 15,\n \"./p2p/export.js\": 24\n }],\n 23: [function(e, t, n) {\n \"use strict\";\n\n function r(e) {\n return (r = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(e) {\n return typeof e\n } : function(e) {\n return e && \"function\" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? \"symbol\" : typeof e\n })(e)\n }\n\n function i(e, t) {\n return !t || \"object\" !== r(t) && \"function\" != typeof t ? function(e) {\n if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return e\n }(e) : t\n }\n\n function o(e) {\n var t = \"function\" == typeof Map ? new Map : void 0;\n return (o = function(e) {\n if (null === e || (n = e, -1 === Function.toString.call(n).indexOf(\"[native code]\"))) return e;\n var n;\n if (\"function\" != typeof e) throw new TypeError(\"Super expression must either be null or a function\");\n if (void 0 !== t) {\n if (t.has(e)) return t.get(e);\n t.set(e, r)\n }\n\n function r() {\n return a(e, arguments, c(this).constructor)\n }\n return r.prototype = Object.create(e.prototype, {\n constructor: {\n value: r,\n enumerable: !1,\n writable: !0,\n configurable: !0\n }\n }), s(r, e)\n })(e)\n }\n\n function a(e, t, n) {\n return (a = function() {\n if (\"undefined\" == typeof Reflect || !Reflect.construct) return !1;\n if (Reflect.construct.sham) return !1;\n if (\"function\" == typeof Proxy) return !0;\n try {\n return Date.prototype.toString.call(Reflect.construct(Date, [], function() {})), !0\n } catch (e) {\n return !1\n }\n }() ? Reflect.construct : function(e, t, n) {\n var r = [null];\n r.push.apply(r, t);\n var i = new(Function.bind.apply(e, r));\n return n && s(i, n.prototype), i\n }).apply(null, arguments)\n }\n\n function s(e, t) {\n return (s = Object.setPrototypeOf || function(e, t) {\n return e.__proto__ = t, e\n })(e, t)\n }\n\n function c(e) {\n return (c = Object.setPrototypeOf ? Object.getPrototypeOf : function(e) {\n return e.__proto__ || Object.getPrototypeOf(e)\n })(e)\n }\n Object.defineProperty(n, \"__esModule\", {\n value: !0\n }), n.getErrorByCode = function(e) {\n return {\n 2100: u.P2P_CONN_SERVER_UNKNOWN,\n 2101: u.P2P_CONN_SERVER_UNAVAILABLE,\n 2102: u.P2P_CONN_SERVER_BUSY,\n 2103: u.P2P_CONN_SERVER_NOT_SUPPORTED,\n 2110: u.P2P_CONN_CLIENT_UNKNOWN,\n 2111: u.P2P_CONN_CLIENT_NOT_INITIALIZED,\n 2120: u.P2P_CONN_AUTH_UNKNOWN,\n 2121: u.P2P_CONN_AUTH_FAILED,\n 2201: u.P2P_MESSAGING_TARGET_UNREACHABLE,\n 2400: u.P2P_CLIENT_UNKNOWN,\n 2401: u.P2P_CLIENT_UNSUPPORTED_METHOD,\n 2402: u.P2P_CLIENT_ILLEGAL_ARGUMENT,\n 2403: u.P2P_CLIENT_INVALID_STATE,\n 2404: u.P2P_CLIENT_NOT_ALLOWED,\n 2500: u.P2P_WEBRTC_UNKNOWN,\n 2501: u.P2P_WEBRTC_SDP\n } [e]\n }, n.P2PError = n.errors = void 0;\n var u = {\n P2P_CONN_SERVER_UNKNOWN: {\n code: 2100,\n message: \"Server unknown error.\"\n },\n P2P_CONN_SERVER_UNAVAILABLE: {\n code: 2101,\n message: \"Server is unavaliable.\"\n },\n P2P_CONN_SERVER_BUSY: {\n code: 2102,\n message: \"Server is too busy.\"\n },\n P2P_CONN_SERVER_NOT_SUPPORTED: {\n code: 2103,\n message: \"Method has not been supported by server.\"\n },\n P2P_CONN_CLIENT_UNKNOWN: {\n code: 2110,\n message: \"Client unknown error.\"\n },\n P2P_CONN_CLIENT_NOT_INITIALIZED: {\n code: 2111,\n message: \"Connection is not initialized.\"\n },\n P2P_CONN_AUTH_UNKNOWN: {\n code: 2120,\n message: \"Authentication unknown error.\"\n },\n P2P_CONN_AUTH_FAILED: {\n code: 2121,\n message: \"Wrong username or token.\"\n },\n P2P_MESSAGING_TARGET_UNREACHABLE: {\n code: 2201,\n message: \"Remote user cannot be reached.\"\n },\n P2P_CLIENT_DENIED: {\n code: 2202,\n message: \"User is denied.\"\n },\n P2P_CLIENT_UNKNOWN: {\n code: 2400,\n message: \"Unknown errors.\"\n },\n P2P_CLIENT_UNSUPPORTED_METHOD: {\n code: 2401,\n message: \"This method is unsupported in current browser.\"\n },\n P2P_CLIENT_ILLEGAL_ARGUMENT: {\n code: 2402,\n message: \"Illegal argument.\"\n },\n P2P_CLIENT_INVALID_STATE: {\n code: 2403,\n message: \"Invalid peer state.\"\n },\n P2P_CLIENT_NOT_ALLOWED: {\n code: 2404,\n message: \"Remote user is not allowed.\"\n },\n P2P_WEBRTC_UNKNOWN: {\n code: 2500,\n message: \"WebRTC error.\"\n },\n P2P_WEBRTC_SDP: {\n code: 2502,\n message: \"SDP error.\"\n }\n };\n n.errors = u;\n var d = function(e) {\n function t(e, n) {\n var r;\n return function(e, t) {\n if (!(e instanceof t)) throw new TypeError(\"Cannot call a class as a function\")\n }(this, t), (r = i(this, c(t).call(this, n))).code = \"number\" == typeof e ? e : e.code, r\n }\n return function(e, t) {\n if (\"function\" != typeof t && null !== t) throw new TypeError(\"Super expression must either be null or a function\");\n e.prototype = Object.create(t && t.prototype, {\n constructor: {\n value: e,\n writable: !0,\n configurable: !0\n }\n }), t && s(e, t)\n }(t, o(Error)), t\n }();\n n.P2PError = d\n }, {}],\n 24: [function(e, t, n) {\n \"use strict\";\n Object.defineProperty(n, \"__esModule\", {\n value: !0\n }), Object.defineProperty(n, \"P2PClient\", {\n enumerable: !0,\n get: function() {\n return i.default\n }\n }), Object.defineProperty(n, \"P2PError\", {\n enumerable: !0,\n get: function() {\n return o.P2PError\n }\n });\n var r, i = (r = e(\"./p2pclient.js\")) && r.__esModule ? r : {\n default: r\n },\n o = e(\"./error.js\")\n }, {\n \"./error.js\": 23,\n \"./p2pclient.js\": 25\n }],\n 25: [function(e, t, n) {\n \"use strict\";\n Object.defineProperty(n, \"__esModule\", {\n value: !0\n }), n.default = void 0;\n var r = c(e(\"../base/logger.js\")),\n i = e(\"../base/event.js\"),\n o = (s(e(\"../base/utils.js\")), s(e(\"./error.js\"))),\n a = c(e(\"./peerconnection-channel.js\"));\n\n function s(e) {\n if (e && e.__esModule) return e;\n var t = {};\n if (null != e)\n for (var n in e)\n if (Object.prototype.hasOwnProperty.call(e, n)) {\n var r = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(e, n) : {};\n r.get || r.set ? Object.defineProperty(t, n, r) : t[n] = e[n]\n } return t.default = e, t\n }\n\n function c(e) {\n return e && e.__esModule ? e : {\n default: e\n }\n }\n var u = 1,\n d = 2,\n l = 3,\n f = function(e, t) {\n Object.setPrototypeOf(this, new i.EventDispatcher);\n var n, s = e,\n c = t,\n f = new Map,\n p = this,\n h = u;\n c.onMessage = function(e, t) {\n r.default.debug(\"Received signaling message from \" + e + \": \" + t);\n var n = JSON.parse(t);\n \"chat-closed\" !== n.type ? p.allowedRemoteIds.indexOf(e) >= 0 ? m(e).onMessage(n) : v(e, \"chat-closed\", o.errors.P2P_CLIENT_DENIED) : f.has(e) && (m(e).onMessage(n), f.delete(e))\n }, c.onServerDisconnected = function() {\n h = u, p.dispatchEvent(new i.OwtEvent(\"serverdisconnected\"))\n }, this.allowedRemoteIds = [], this.connect = function(e) {\n return h !== u ? (r.default.warning(\"Invalid connection state: \" + h), Promise.reject(new o.P2PError(o.errors.P2P_CLIENT_INVALID_STATE))) : (h = d, new Promise(function(t, r) {\n c.connect(e).then(function(e) {\n h = l, t(n = e)\n }, function(e) {\n r(new o.P2PError(o.getErrorByCode(e)))\n })\n }))\n }, this.disconnect = function() {\n h != u && (f.forEach(function(e) {\n e.stop()\n }), f.clear(), c.disconnect())\n }, this.publish = function(e, t) {\n return h !== l ? Promise.reject(new o.P2PError(o.errors.P2P_CLIENT_INVALID_STATE, \"P2P Client is not connected to signaling channel.\")) : this.allowedRemoteIds.indexOf(e) < 0 ? Promise.reject(new o.P2PError(o.errors.P2P_CLIENT_NOT_ALLOWED)) : Promise.resolve(m(e).publish(t))\n }, this.send = function(e, t) {\n return h !== l ? Promise.reject(new o.P2PError(o.errors.P2P_CLIENT_INVALID_STATE, \"P2P Client is not connected to signaling channel.\")) : this.allowedRemoteIds.indexOf(e) < 0 ? Promise.reject(new o.P2PError(o.errors.P2P_CLIENT_NOT_ALLOWED)) : Promise.resolve(m(e).send(t))\n }, this.stop = function(e) {\n f.has(e) ? (f.get(e).stop(), f.delete(e)) : r.default.warning(\"No PeerConnection between current endpoint and specific remote endpoint.\")\n }, this.getStats = function(e) {\n return f.has(e) ? f.get(e).getStats() : Promise.reject(new o.P2PError(o.errors.P2P_CLIENT_INVALID_STATE, \"No PeerConnection between current endpoint and specific remote endpoint.\"))\n };\n var v = function(e, t, n) {\n var r = {\n type: t\n };\n return n && (r.data = n), c.send(e, JSON.stringify(r)).catch(function(e) {\n if (\"number\" == typeof e) throw o.getErrorByCode(e)\n })\n },\n m = function(e) {\n if (!f.has(e)) {\n var t = Object.create(i.EventDispatcher);\n t.sendSignalingMessage = v;\n var r = new a.default(s, n, e, t);\n r.addEventListener(\"streamadded\", function(e) {\n p.dispatchEvent(e)\n }), r.addEventListener(\"messagereceived\", function(e) {\n p.dispatchEvent(e)\n }), r.addEventListener(\"ended\", function() {\n f.delete(e)\n }), f.set(e, r)\n }\n return f.get(e)\n }\n };\n n.default = f\n }, {\n \"../base/event.js\": 3,\n \"../base/logger.js\": 5,\n \"../base/utils.js\": 11,\n \"./error.js\": 23,\n \"./peerconnection-channel.js\": 26\n }],\n 26: [function(e, t, n) {\n \"use strict\";\n Object.defineProperty(n, \"__esModule\", {\n value: !0\n }), n.default = n.P2PPeerConnectionChannelEvent = void 0;\n var r, i = (r = e(\"../base/logger.js\")) && r.__esModule ? r : {\n default: r\n },\n o = e(\"../base/event.js\"),\n a = e(\"../base/publication.js\"),\n s = l(e(\"../base/utils.js\")),\n c = l(e(\"./error.js\")),\n u = l(e(\"../base/stream.js\")),\n d = l(e(\"../base/sdputils.js\"));\n\n function l(e) {\n if (e && e.__esModule) return e;\n var t = {};\n if (null != e)\n for (var n in e)\n if (Object.prototype.hasOwnProperty.call(e, n)) {\n var r = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(e, n) : {};\n r.get || r.set ? Object.defineProperty(t, n, r) : t[n] = e[n]\n } return t.default = e, t\n }\n\n function f(e, t) {\n return function(e) {\n if (Array.isArray(e)) return e\n }(e) || function(e, t) {\n var n = [],\n r = !0,\n i = !1,\n o = void 0;\n try {\n for (var a, s = e[Symbol.iterator](); !(r = (a = s.next()).done) && (n.push(a.value), !t || n.length !== t); r = !0);\n } catch (e) {\n i = !0, o = e\n } finally {\n try {\n r || null == s.return || s.return()\n } finally {\n if (i) throw o\n }\n }\n return n\n }(e, t) || function() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\")\n }()\n }\n\n function p(e) {\n return (p = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(e) {\n return typeof e\n } : function(e) {\n return e && \"function\" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? \"symbol\" : typeof e\n })(e)\n }\n\n function h(e, t) {\n for (var n = 0; n < t.length; n++) {\n var r = t[n];\n r.enumerable = r.enumerable || !1, r.configurable = !0, \"value\" in r && (r.writable = !0), Object.defineProperty(e, r.key, r)\n }\n }\n\n function v(e, t) {\n if (!(e instanceof t)) throw new TypeError(\"Cannot call a class as a function\")\n }\n\n function m(e, t) {\n return !t || \"object\" !== p(t) && \"function\" != typeof t ? function(e) {\n if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return e\n }(e) : t\n }\n\n function b(e, t) {\n if (\"function\" != typeof t && null !== t) throw new TypeError(\"Super expression must either be null or a function\");\n e.prototype = Object.create(t && t.prototype, {\n constructor: {\n value: e,\n writable: !0,\n configurable: !0\n }\n }), t && g(e, t)\n }\n\n function _(e) {\n var t = \"function\" == typeof Map ? new Map : void 0;\n return (_ = function(e) {\n if (null === e || (n = e, -1 === Function.toString.call(n).indexOf(\"[native code]\"))) return e;\n var n;\n if (\"function\" != typeof e) throw new TypeError(\"Super expression must either be null or a function\");\n if (void 0 !== t) {\n if (t.has(e)) return t.get(e);\n t.set(e, r)\n }\n\n function r() {\n return y(e, arguments, S(this).constructor)\n }\n return r.prototype = Object.create(e.prototype, {\n constructor: {\n value: r,\n enumerable: !1,\n writable: !0,\n configurable: !0\n }\n }), g(r, e)\n })(e)\n }\n\n function y(e, t, n) {\n return (y = function() {\n if (\"undefined\" == typeof Reflect || !Reflect.construct) return !1;\n if (Reflect.construct.sham) return !1;\n if (\"function\" == typeof Proxy) return !0;\n try {\n return Date.prototype.toString.call(Reflect.construct(Date, [], function() {})), !0\n } catch (e) {\n return !1\n }\n }() ? Reflect.construct : function(e, t, n) {\n var r = [null];\n r.push.apply(r, t);\n var i = new(Function.bind.apply(e, r));\n return n && g(i, n.prototype), i\n }).apply(null, arguments)\n }\n\n function g(e, t) {\n return (g = Object.setPrototypeOf || function(e, t) {\n return e.__proto__ = t, e\n })(e, t)\n }\n\n function S(e) {\n return (S = Object.setPrototypeOf ? Object.getPrototypeOf : function(e) {\n return e.__proto__ || Object.getPrototypeOf(e)\n })(e)\n }\n var P = function(e) {\n function t(e) {\n var n;\n return v(this, t), (n = m(this, S(t).call(this, e))).stream = e.stream, n\n }\n return b(t, _(Event)), t\n }();\n n.P2PPeerConnectionChannelEvent = P;\n var w = \"message\",\n O = \"chat-closed\",\n E = \"chat-track-sources\",\n j = \"chat-stream-info\",\n C = \"chat-signal\",\n T = \"chat-tracks-added\",\n I = \"chat-tracks-removed\",\n k = \"chat-data-received\",\n M = \"chat-ua\",\n R = s.sysInfo(),\n N = function(e) {\n function t(e, n, r, i) {\n var o;\n return v(this, t), (o = m(this, S(t).call(this)))._config = e, o._localId = n, o._remoteId = r, o._signaling = i, o._pc = null, o._publishedStreams = new Map, o._pendingStreams = [], o._publishingStreams = [], o._pendingUnpublishStreams = [], o._remoteStreamInfo = new Map, o._remoteStreams = [], o._remoteTrackSourceInfo = new Map, o._publishPromises = new Map, o._unpublishPromises = new Map, o._publishingStreamTracks = new Map, o._publishedStreamTracks = new Map, o._isNegotiationNeeded = !1, o._remoteSideSupportsRemoveStream = !0, o._remoteSideSupportsPlanB = !0, o._remoteSideSupportsUnifiedPlan = !0, o._remoteIceCandidates = [], o._dataChannels = new Map, o._pendingMessages = [], o._dataSeq = 1, o._sendDataPromises = new Map, o._addedTrackIds = [], o._isCaller = !0, o._infoSent = !1, o._disposed = !1, o._createPeerConnection(), o\n }\n var n, r, l;\n return b(t, o.EventDispatcher), n = t, (r = [{\n key: \"publish\",\n value: function(e) {\n var t = this;\n return e instanceof u.LocalStream ? this._publishedStreams.has(e) ? Promise.reject(new c.P2PError(c.errors.P2P_CLIENT_ILLEGAL_ARGUMENT, \"Duplicated stream.\")) : this._areAllTracksEnded(e.mediaStream) ? Promise.reject(new c.P2PError(c.errors.P2P_CLIENT_INVALID_STATE, \"All tracks are ended.\")) : Promise.all([this._sendClosedMsgIfNecessary(), this._sendSysInfoIfNecessary(), this._sendStreamInfo(e)]).then(function() {\n return new Promise(function(n, r) {\n var i = !0,\n o = !1,\n a = void 0;\n try {\n for (var s, c = e.mediaStream.getTracks()[Symbol.iterator](); !(i = (s = c.next()).done); i = !0) {\n var u = s.value;\n t._pc.addTrack(u, e.mediaStream)\n }\n } catch (e) {\n o = !0, a = e\n } finally {\n try {\n i || null == c.return || c.return()\n } finally {\n if (o) throw a\n }\n }\n t._onNegotiationneeded(), t._publishingStreams.push(e);\n var d = Array.from(e.mediaStream.getTracks(), function(e) {\n return e.id\n });\n t._publishingStreamTracks.set(e.mediaStream.id, d), t._publishPromises.set(e.mediaStream.id, {\n resolve: n,\n reject: r\n })\n })\n }) : Promise.reject(new TypeError(\"Invalid stream.\"))\n }\n }, {\n key: \"send\",\n value: function(e) {\n var t = this;\n if (\"string\" != typeof e) return Promise.reject(new TypeError(\"Invalid message.\"));\n var n = {\n id: this._dataSeq++,\n data: e\n },\n r = new Promise(function(e, r) {\n t._sendDataPromises.set(n.id, {\n resolve: e,\n reject: r\n })\n });\n return this._dataChannels.has(w) || this._createDataChannel(w), this._sendClosedMsgIfNecessary().catch(function(e) {\n i.default.debug(\"Failed to send closed message.\" + e.message)\n }), this._sendSysInfoIfNecessary().catch(function(e) {\n i.default.debug(\"Failed to send sysInfo.\" + e.message)\n }), \"open\" === this._dataChannels.get(w).readyState ? this._dataChannels.get(w).send(JSON.stringify(n)) : this._pendingMessages.push(n), r\n }\n }, {\n key: \"stop\",\n value: function() {\n this._stop(void 0, !0)\n }\n }, {\n key: \"getStats\",\n value: function(e) {\n var t = this;\n if (this._pc) {\n if (void 0 === e) return this._pc.getStats();\n var n = [];\n return Promise.all([e.getTracks().forEach(function(e) {\n t._getStats(e, n)\n })]).then(function() {\n return new Promise(function(e, t) {\n e(n)\n })\n })\n }\n return Promise.reject(new c.P2PError(c.errors.P2P_CLIENT_INVALID_STATE))\n }\n }, {\n key: \"_getStats\",\n value: function(e, t) {\n return this._pc.getStats(e).then(function(e) {\n t.push(e)\n })\n }\n }, {\n key: \"onMessage\",\n value: function(e) {\n this._SignalingMesssageHandler(e)\n }\n }, {\n key: \"_sendSdp\",\n value: function(e) {\n return this._signaling.sendSignalingMessage(this._remoteId, C, e)\n }\n }, {\n key: \"_sendSignalingMessage\",\n value: function(e, t) {\n return this._signaling.sendSignalingMessage(this._remoteId, e, t)\n }\n }, {\n key: \"_SignalingMesssageHandler\",\n value: function(e) {\n switch (i.default.debug(\"Channel received message: \" + e), e.type) {\n case M:\n this._handleRemoteCapability(e.data), this._sendSysInfoIfNecessary();\n break;\n case E:\n this._trackSourcesHandler(e.data);\n break;\n case j:\n this._streamInfoHandler(e.data);\n break;\n case C:\n this._sdpHandler(e.data);\n break;\n case T:\n this._tracksAddedHandler(e.data);\n break;\n case I:\n this._tracksRemovedHandler(e.data);\n break;\n case k:\n this._dataReceivedHandler(e.data);\n break;\n case O:\n this._chatClosedHandler(e.data);\n break;\n default:\n i.default.error(\"Invalid signaling message received. Type: \" + e.type)\n }\n }\n }, {\n key: \"_tracksAddedHandler\",\n value: function(e) {\n var t = this,\n n = !0,\n r = !1,\n s = void 0;\n try {\n for (var u, d = function() {\n var e = u.value;\n t._publishingStreamTracks.forEach(function(n, r) {\n for (var s = 0; s < n.length; s++) {\n if (n[s] === e && (t._publishedStreamTracks.has(r) || t._publishedStreamTracks.set(r, []), t._publishedStreamTracks.get(r).push(n[s]), n.splice(s, 1)), 0 == n.length)\n if (\"continue\" === function() {\n if (!t._publishPromises.has(r)) return i.default.warning(\"Cannot find the promise for publishing \" + r), \"continue\";\n var n = t._publishingStreams.findIndex(function(e) {\n return e.mediaStream.id == r\n }),\n s = t._publishingStreams[n];\n t._publishingStreams.splice(n, 1);\n var u = new a.Publication(e, function() {\n t._unpublish(s).then(function() {\n u.dispatchEvent(new o.OwtEvent(\"ended\"))\n }, function(e) {\n i.default.debug(\"Something wrong happened during stopping a publication. \" + e.message)\n })\n }, function() {\n return s && s.mediaStream ? t.getStats(s.mediaStream) : Promise.reject(new c.P2PError(c.errors.P2P_CLIENT_INVALID_STATE, \"Publication is not available.\"))\n });\n t._publishedStreams.set(s, u), t._publishPromises.get(r).resolve(u), t._publishPromises.delete(r)\n }()) continue\n }\n })\n }, l = e[Symbol.iterator](); !(n = (u = l.next()).done); n = !0) d()\n } catch (e) {\n r = !0, s = e\n } finally {\n try {\n n || null == l.return || l.return()\n } finally {\n if (r) throw s\n }\n }\n }\n }, {\n key: \"_tracksRemovedHandler\",\n value: function(e) {\n var t = this,\n n = !0,\n r = !1,\n i = void 0;\n try {\n for (var o, a = function() {\n var e = o.value;\n t._publishedStreamTracks.forEach(function(t, n) {\n for (var r = 0; r < t.length; r++) t[r] === e && t.splice(r, 1)\n })\n }, s = e[Symbol.iterator](); !(n = (o = s.next()).done); n = !0) a()\n } catch (e) {\n r = !0, i = e\n } finally {\n try {\n n || null == s.return || s.return()\n } finally {\n if (r) throw i\n }\n }\n }\n }, {\n key: \"_dataReceivedHandler\",\n value: function(e) {\n this._sendDataPromises.has(e) ? this._sendDataPromises.get(e).resolve() : i.default.warning(\"Received unknown data received message. ID: \" + e)\n }\n }, {\n key: \"_sdpHandler\",\n value: function(e) {\n \"offer\" === e.type ? this._onOffer(e) : \"answer\" === e.type ? this._onAnswer(e) : \"candidates\" === e.type && this._onRemoteIceCandidate(e)\n }\n }, {\n key: \"_trackSourcesHandler\",\n value: function(e) {\n var t = !0,\n n = !1,\n r = void 0;\n try {\n for (var i, o = e[Symbol.iterator](); !(t = (i = o.next()).done); t = !0) {\n var a = i.value;\n this._remoteTrackSourceInfo.set(a.id, a.source)\n }\n } catch (e) {\n n = !0, r = e\n } finally {\n try {\n t || null == o.return || o.return()\n } finally {\n if (n) throw r\n }\n }\n }\n }, {\n key: \"_streamInfoHandler\",\n value: function(e) {\n e ? this._remoteStreamInfo.set(e.id, {\n source: e.source,\n attributes: e.attributes,\n stream: null,\n mediaStream: null,\n trackIds: e.tracks\n }) : i.default.warning(\"Unexpected stream info.\")\n }\n }, {\n key: \"_chatClosedHandler\",\n value: function(e) {\n this._disposed = !0, this._stop(e, !1)\n }\n }, {\n key: \"_onOffer\",\n value: function(e) {\n var t = this;\n // e.sdp = e.sdp.replace(/a=setup:active/g, 'a=setup:passive'); // By RP fix for Mozilla \n i.default.debug(\"About to set remote description. Signaling state: \" + this._pc.signalingState), e.sdp = this._setRtpSenderOptions(e.sdp, this._config), s.isFirefox() && (e.sdp = this._setCodecOrder(e.sdp));\n var n = new RTCSessionDescription(e);\n this._pc.setRemoteDescription(n).then(function() {\n t._createAndSendAnswer()\n }, function(e) {\n i.default.debug(\"Set remote description failed. Message: \" + e.message), t._stop(e, !0)\n })\n }\n }, {\n key: \"_onAnswer\",\n value: function(e) {\n var t = this;\n // e.sdp = e.sdp.replace(/a=setup:active/g, 'a=setup:passive'); // By RP fix for Mozilla \n console.log('Current SDP', e.sdp);\n i.default.debug(\"About to set remote description. Signaling state: \" + this._pc.signalingState), e.sdp = this._setRtpSenderOptions(e.sdp, this._config);\n var n = new RTCSessionDescription(e);\n // console.log('SDP', e.sdp, n);\n this._pc.setRemoteDescription(new RTCSessionDescription(n)).then(function() {\n i.default.debug(\"Set remote descripiton successfully.\"), t._drainPendingMessages()\n }, function(e) {\n i.default.debug(\"Set remote description failed. Message: \" + e.message), t._stop(e, !0)\n })\n }\n }, {\n key: \"_onLocalIceCandidate\",\n value: function(e) {\n e.candidate ? this._sendSdp({\n type: \"candidates\",\n candidate: e.candidate.candidate,\n sdpMid: e.candidate.sdpMid,\n sdpMLineIndex: e.candidate.sdpMLineIndex\n }).catch(function(e) {\n i.default.warning(\"Failed to send candidate.\")\n }) : i.default.debug(\"Empty candidate.\")\n }\n }, {\n key: \"_onRemoteTrackAdded\",\n value: function(e) {\n i.default.debug(\"Remote track added.\");\n var t = !0,\n n = !1,\n r = void 0;\n try {\n for (var o, a = e.streams[Symbol.iterator](); !(t = (o = a.next()).done); t = !0) {\n var s = o.value;\n if (!this._remoteStreamInfo.has(s.id)) return void i.default.warning(\"Missing stream info.\");\n this._remoteStreamInfo.get(s.id).stream || this._setStreamToRemoteStreamInfo(s)\n }\n } catch (e) {\n n = !0, r = e\n } finally {\n try {\n t || null == a.return || a.return()\n } finally {\n if (n) throw r\n }\n }\n \"connected\" === this._pc.iceConnectionState || \"completed\" === this._pc.iceConnectionState ? this._checkIceConnectionStateAndFireEvent() : this._addedTrackIds.concat(e.track.id)\n }\n }, {\n key: \"_onRemoteStreamAdded\",\n value: function(e) {\n if (i.default.debug(\"Remote stream added.\"), this._remoteStreamInfo.has(e.stream.id)) {\n \"connected\" === this._pc.iceConnectionState || \"completed\" === this._pc.iceConnectionState ? this._sendSignalingMessage(T, this._remoteStreamInfo.get(e.stream.id).trackIds) : this._addedTrackIds = this._addedTrackIds.concat(this._remoteStreamInfo.get(e.stream.id).trackIds);\n var t = this._remoteStreamInfo.get(e.stream.id).source.audio,\n n = this._remoteStreamInfo.get(e.stream.id).source.video,\n r = new u.StreamSourceInfo(t, n);\n s.isSafari() && (r.audio || e.stream.getAudioTracks().forEach(function(t) {\n e.stream.removeTrack(t)\n }), r.video || e.stream.getVideoTracks().forEach(function(t) {\n e.stream.removeTrack(t)\n }));\n var o = this._remoteStreamInfo.get(e.stream.id).attributes,\n a = new u.RemoteStream(void 0, this._remoteId, e.stream, r, o);\n if (a) {\n this._remoteStreams.push(a);\n var c = new u.StreamEvent(\"streamadded\", {\n stream: a\n });\n this.dispatchEvent(c)\n }\n } else i.default.warning(\"Cannot find source info for stream \" + e.stream.id)\n }\n }, {\n key: \"_onRemoteStreamRemoved\",\n value: function(e) {\n i.default.debug(\"Remote stream removed.\");\n var t = this._remoteStreams.findIndex(function(t) {\n return t.mediaStream.id === e.stream.id\n });\n if (-1 !== t) {\n var n = this._remoteStreams[t];\n this._streamRemoved(n), this._remoteStreams.splice(t, 1)\n }\n }\n }, {\n key: \"_onNegotiationneeded\",\n value: function() {\n i.default.debug(\"On negotiation needed.\"), \"stable\" === this._pc.signalingState ? this._doNegotiate() : this._isNegotiationNeeded = !0\n }\n }, {\n key: \"_onRemoteIceCandidate\",\n value: function(e) {\n var t = new RTCIceCandidate({\n candidate: e.candidate,\n sdpMid: e.sdpMid,\n sdpMLineIndex: e.sdpMLineIndex\n });\n this._pc.remoteDescription && \"\" !== this._pc.remoteDescription.sdp ? (i.default.debug(\"Add remote ice candidates.\"), this._pc.addIceCandidate(t).catch(function(e) {\n i.default.warning(\"Error processing ICE candidate: \" + e)\n })) : (i.default.debug(\"Cache remote ice candidates.\"), this._remoteIceCandidates.push(t))\n }\n }, {\n key: \"_onSignalingStateChange\",\n value: function(e) {\n i.default.debug(\"Signaling state changed: \" + this._pc.signalingState), \"closed\" === this._pc.signalingState || (\"stable\" === this._pc.signalingState ? (this._negotiating = !1, this._isNegotiationNeeded ? this._onNegotiationneeded() : (this._drainPendingStreams(), this._drainPendingMessages())) : \"have-remote-offer\" === this._pc.signalingState && this._drainPendingRemoteIceCandidates())\n }\n }, {\n key: \"_onIceConnectionStateChange\",\n value: function(e) {\n if (\"closed\" === e.currentTarget.iceConnectionState || \"failed\" === e.currentTarget.iceConnectionState) {\n var t = new c.P2PError(c.errors.P2P_WEBRTC_UNKNOWN, \"ICE connection failed or closed.\");\n this._stop(t, !0)\n } else \"connected\" !== e.currentTarget.iceConnectionState && \"completed\" !== e.currentTarget.iceConnectionState || (this._sendSignalingMessage(T, this._addedTrackIds), this._addedTrackIds = [], this._checkIceConnectionStateAndFireEvent())\n }\n }, {\n key: \"_onDataChannelMessage\",\n value: function(e) {\n var t = JSON.parse(e.data);\n i.default.debug(\"Data channel message received: \" + t.data), this._sendSignalingMessage(k, t.id);\n var n = new o.MessageEvent(\"messagereceived\", {\n message: t.data,\n origin: this._remoteId\n });\n this.dispatchEvent(n)\n }\n }, {\n key: \"_onDataChannelOpen\",\n value: function(e) {\n i.default.debug(\"Data Channel is opened.\"), e.target.label === w && (i.default.debug(\"Data channel for messages is opened.\"), this._drainPendingMessages())\n }\n }, {\n key: \"_onDataChannelClose\",\n value: function(e) {\n i.default.debug(\"Data Channel is closed.\")\n }\n }, {\n key: \"_streamRemoved\",\n value: function(e) {\n this._remoteStreamInfo.has(e.mediaStream.id) || i.default.warning(\"Cannot find stream info.\"), this._sendSignalingMessage(I, this._remoteStreamInfo.get(e.mediaStream.id).trackIds);\n var t = new o.OwtEvent(\"ended\");\n e.dispatchEvent(t)\n }\n }, {\n key: \"_isUnifiedPlan\",\n value: function() {\n if (s.isFirefox()) return !0;\n var e = new RTCPeerConnection({\n sdpSemantics: \"unified-plan\"\n });\n return e.getConfiguration() && \"plan-b\" === e.getConfiguration().sdpSemantics\n }\n }, {\n key: \"_createPeerConnection\",\n value: function() {\n var e = this,\n t = this._config.rtcConfiguration || {};\n s.isChrome() && (t.sdpSemantics = \"unified-plan\"), this._pc = new RTCPeerConnection(t), \"function\" == typeof this._pc.addTransceiver && s.isSafari() && (this._pc.addTransceiver(\"audio\"), this._pc.addTransceiver(\"video\")), this._isUnifiedPlan() ? this._pc.ontrack = function(t) {\n e._onRemoteTrackAdded.apply(e, [t])\n } : (this._pc.onaddstream = function(t) {\n e._onRemoteStreamAdded.apply(e, [t])\n }, this._pc.onremovestream = function(t) {\n e._onRemoteStreamRemoved.apply(e, [t])\n }), this._pc.onicecandidate = function(t) {\n e._onLocalIceCandidate.apply(e, [t])\n }, this._pc.onsignalingstatechange = function(t) {\n e._onSignalingStateChange.apply(e, [t])\n }, this._pc.ondatachannel = function(t) {\n i.default.debug(\"On data channel.\"), e._dataChannels.has(t.channel.label) || (e._dataChannels.set(t.channel.label, t.channel), i.default.debug(\"Save remote created data channel.\")), e._bindEventsToDataChannel(t.channel)\n }, this._pc.oniceconnectionstatechange = function(t) {\n e._onIceConnectionStateChange.apply(e, [t])\n }\n }\n }, {\n key: \"_drainPendingStreams\",\n value: function() {\n var e = !1;\n if (i.default.debug(\"Draining pending streams.\"), this._pc && \"stable\" === this._pc.signalingState) {\n i.default.debug(\"Peer connection is ready for draining pending streams.\");\n for (var t = 0; t < this._pendingStreams.length; t++) {\n var n = this._pendingStreams[t];\n if (this._pendingStreams.shift(), n.mediaStream) {\n var r = !0,\n o = !1,\n a = void 0;\n try {\n for (var s, c = n.mediaStream.getTracks()[Symbol.iterator](); !(r = (s = c.next()).done); r = !0) {\n var u = s.value;\n this._pc.addTrack(u, n.mediaStream), e = !0\n }\n } catch (e) {\n o = !0, a = e\n } finally {\n try {\n r || null == c.return || c.return()\n } finally {\n if (o) throw a\n }\n }\n i.default.debug(\"Added stream to peer connection.\"), this._publishingStreams.push(n)\n }\n }\n this._pendingStreams.length = 0;\n for (var d = 0; d < this._pendingUnpublishStreams.length; d++) this._pendingUnpublishStreams[d].mediaStream && (this._pc.removeStream(this._pendingUnpublishStreams[d].mediaStream), e = !0, this._unpublishPromises.get(this._pendingUnpublishStreams[d].mediaStream.id).resolve(), this._publishedStreams.delete(this._pendingUnpublishStreams[d]), i.default.debug(\"Remove stream.\"));\n this._pendingUnpublishStreams.length = 0\n }\n e && this._onNegotiationneeded()\n }\n }, {\n key: \"_drainPendingRemoteIceCandidates\",\n value: function() {\n for (var e = 0; e < this._remoteIceCandidates.length; e++) i.default.debug(\"Add candidate\"), this._pc.addIceCandidate(this._remoteIceCandidates[e]).catch(function(e) {\n i.default.warning(\"Error processing ICE candidate: \" + e)\n });\n this._remoteIceCandidates.length = 0\n }\n }, {\n key: \"_drainPendingMessages\",\n value: function() {\n if (i.default.debug(\"Draining pending messages.\"), 0 != this._pendingMessages.length) {\n var e = this._dataChannels.get(w);\n if (e && \"open\" === e.readyState) {\n for (var t = 0; t < this._pendingMessages.length; t++) i.default.debug(\"Sending message via data channel: \" + this._pendingMessages[t]), e.send(JSON.stringify(this._pendingMessages[t]));\n this._pendingMessages.length = 0\n } else this._pc && !e && this._createDataChannel(w)\n }\n }\n }, {\n key: \"_sendStreamInfo\",\n value: function(e) {\n if (!e || !e.mediaStream) return new c.P2PError(c.errors.P2P_CLIENT_ILLEGAL_ARGUMENT);\n var t = [];\n return e.mediaStream.getTracks().map(function(n) {\n t.push({\n id: n.id,\n source: e.source[n.kind]\n })\n }), Promise.all([this._sendSignalingMessage(E, t), this._sendSignalingMessage(j, {\n id: e.mediaStream.id,\n attributes: e.attributes,\n tracks: Array.from(t, function(e) {\n return e.id\n }),\n source: e.source\n })])\n }\n }, {\n key: \"_sendSysInfoIfNecessary\",\n value: function() {\n return this._infoSent ? Promise.resolve() : (this._infoSent = !0, this._sendSignalingMessage(M, R))\n }\n }, {\n key: \"_sendClosedMsgIfNecessary\",\n value: function() {\n return null === this._pc.remoteDescription || \"\" === this._pc.remoteDescription.sdp ? this._sendSignalingMessage(O) : Promise.resolve()\n }\n }, {\n key: \"_handleRemoteCapability\",\n value: function(e) {\n e.sdk && e.sdk && \"JavaScript\" === e.sdk.type && e.runtime && \"Firefox\" === e.runtime.name ? (this._remoteSideSupportsRemoveStream = !1, this._remoteSideSupportsPlanB = !1, this._remoteSideSupportsUnifiedPlan = !0) : (this._remoteSideSupportsRemoveStream = !0, this._remoteSideSupportsPlanB = !0, this._remoteSideSupportsUnifiedPlan = !1)\n }\n }, {\n key: \"_doNegotiate\",\n value: function() {\n this._createAndSendOffer()\n }\n }, {\n key: \"_setCodecOrder\",\n value: function(e) {\n if (this._config.audioEncodings) {\n var t = Array.from(this._config.audioEncodings, function(e) {\n return e.codec.name\n });\n e = d.reorderCodecs(e, \"audio\", t)\n }\n if (this._config.videoEncodings) {\n var n = Array.from(this._config.videoEncodings, function(e) {\n return e.codec.name\n });\n e = d.reorderCodecs(e, \"video\", n)\n }\n return e\n }\n }, {\n key: \"_setMaxBitrate\",\n value: function(e, t) {\n return \"object\" === p(t.audioEncodings) && (e = d.setMaxBitrate(e, t.audioEncodings)), \"object\" === p(t.videoEncodings) && (e = d.setMaxBitrate(e, t.videoEncodings)), e\n }\n }, {\n key: \"_setRtpSenderOptions\",\n value: function(e, t) {\n return e = this._setMaxBitrate(e, t)\n }\n }, {\n key: \"_setRtpReceiverOptions\",\n value: function(e) {\n return e = this._setCodecOrder(e)\n }\n }, {\n key: \"_createAndSendOffer\",\n value: function() {\n var e, t = this;\n this._pc ? (this._isNegotiationNeeded = !1, this._isCaller = !0, this._pc.createOffer().then(function(n) {\n if (n.sdp = t._setRtpReceiverOptions(n.sdp), e = n, \"stable\" === t._pc.signalingState) return t._pc.setLocalDescription(n).then(function() {\n return t._sendSdp(e)\n })\n }).catch(function(e) {\n i.default.error(e.message + \" Please check your codec settings.\");\n var n = new c.P2PError(c.errors.P2P_WEBRTC_SDP, e.message);\n t._stop(n, !0)\n })) : i.default.error(\"Peer connection have not been created.\")\n }\n }, {\n key: \"_createAndSendAnswer\",\n value: function() {\n var e, t = this;\n this._drainPendingStreams(), this._isNegotiationNeeded = !1, this._isCaller = !1, this._pc.createAnswer().then(function(n) {\n //RP\n n.sdp = t._setRtpReceiverOptions(n.sdp), e = n, t._logCurrentAndPendingLocalDescription(), t._pc.setLocalDescription(n)\n // console.log('Caller', t._isCaller);\n // if(window.navigator.userAgent.match(\"Firefox\")){\n // n.sdp = n.sdp.replace(/a=setup:active/g, 'a=setup:passive');\n // }\n return n.sdp; //RP\n }).then(function() {\n return t._sendSdp(e)\n }).catch(function(e) {\n i.default.error(e.message + \" Please check your codec settings.\");\n var n = new c.P2PError(c.errors.P2P_WEBRTC_SDP, e.message);\n t._stop(n, !0)\n })\n }\n }, {\n key: \"_logCurrentAndPendingLocalDescription\",\n value: function() {\n i.default.info(\"Current description: \" + this._pc.currentLocalDescription), i.default.info(\"Pending description: \" + this._pc.pendingLocalDescription)\n }\n }, {\n key: \"_getAndDeleteTrackSourceInfo\",\n value: function(e) {\n if (e.length > 0) {\n var t = e[0].id;\n if (this._remoteTrackSourceInfo.has(t)) {\n var n = this._remoteTrackSourceInfo.get(t);\n return this._remoteTrackSourceInfo.delete(t), n\n }\n i.default.warning(\"Cannot find source info for \" + t)\n }\n }\n }, {\n key: \"_unpublish\",\n value: function(e) {\n var t = this;\n return navigator.mozGetUserMedia || !this._remoteSideSupportsRemoveStream ? (i.default.error(\"Stopping a publication is not supported on Firefox. Please use P2PClient.stop() to stop the connection with remote endpoint.\"), Promise.reject(new c.P2PError(c.errors.P2P_CLIENT_UNSUPPORTED_METHOD))) : this._publishedStreams.has(e) ? (this._pendingUnpublishStreams.push(e), new Promise(function(n, r) {\n t._unpublishPromises.set(e.mediaStream.id, {\n resolve: n,\n reject: r\n }), t._drainPendingStreams()\n })) : Promise.reject(new c.P2PError(c.errors.P2P_CLIENT_ILLEGAL_ARGUMENT))\n }\n }, {\n key: \"_createDataChannel\",\n value: function(e) {\n if (this._dataChannels.has(e)) i.default.warning(\"Data channel labeled \" + e + \" already exists.\");\n else if (this._pc) {\n i.default.debug(\"Create data channel.\");\n var t = this._pc.createDataChannel(e);\n this._bindEventsToDataChannel(t), this._dataChannels.set(w, t), this._onNegotiationneeded()\n } else i.default.debug(\"PeerConnection is not available before creating DataChannel.\")\n }\n }, {\n key: \"_bindEventsToDataChannel\",\n value: function(e) {\n var t = this;\n e.onmessage = function(e) {\n t._onDataChannelMessage.apply(t, [e])\n }, e.onopen = function(e) {\n t._onDataChannelOpen.apply(t, [e])\n }, e.onclose = function(e) {\n t._onDataChannelClose.apply(t, [e])\n }, e.onerror = function(e) {\n i.default.debug(\"Data Channel Error:\", error)\n }\n }\n }, {\n key: \"_getStreamByTrack\",\n value: function(e) {\n var t = [],\n n = !0,\n r = !1,\n i = void 0;\n try {\n for (var o, a = this._remoteStreamInfo[Symbol.iterator](); !(n = (o = a.next()).done); n = !0) {\n var s = f(o.value, 2),\n c = (s[0], s[1]);\n if (c.stream && c.stream.mediaStream) {\n var u = !0,\n d = !1,\n l = void 0;\n try {\n for (var p, h = c.stream.mediaStream.getTracks()[Symbol.iterator](); !(u = (p = h.next()).done); u = !0) {\n e === p.value && t.push(c.stream.mediaStream)\n }\n } catch (e) {\n d = !0, l = e\n } finally {\n try {\n u || null == h.return || h.return()\n } finally {\n if (d) throw l\n }\n }\n }\n }\n } catch (e) {\n r = !0, i = e\n } finally {\n try {\n n || null == a.return || a.return()\n } finally {\n if (r) throw i\n }\n }\n return t\n }\n }, {\n key: \"_areAllTracksEnded\",\n value: function(e) {\n var t = !0,\n n = !1,\n r = void 0;\n try {\n for (var i, o = e.getTracks()[Symbol.iterator](); !(t = (i = o.next()).done); t = !0) {\n if (\"live\" === i.value.readyState) return !1\n }\n } catch (e) {\n n = !0, r = e\n } finally {\n try {\n t || null == o.return || o.return()\n } finally {\n if (n) throw r\n }\n }\n return !0\n }\n }, {\n key: \"_stop\",\n value: function(e, t) {\n var n = e;\n n || (n = new c.P2PError(c.errors.P2P_CLIENT_UNKNOWN));\n var r = !0,\n a = !1,\n s = void 0;\n try {\n for (var u, d = this._dataChannels[Symbol.iterator](); !(r = (u = d.next()).done); r = !0) {\n var l = f(u.value, 2);\n l[0];\n l[1].close()\n }\n } catch (e) {\n a = !0, s = e\n } finally {\n try {\n r || null == d.return || d.return()\n } finally {\n if (a) throw s\n }\n }\n this._dataChannels.clear(), this._pc && \"closed\" !== this._pc.iceConnectionState && this._pc.close();\n var p = !0,\n h = !1,\n v = void 0;\n try {\n for (var m, b = this._publishPromises[Symbol.iterator](); !(p = (m = b.next()).done); p = !0) {\n var _ = f(m.value, 2);\n _[0];\n _[1].reject(n)\n }\n } catch (e) {\n h = !0, v = e\n } finally {\n try {\n p || null == b.return || b.return()\n } finally {\n if (h) throw v\n }\n }\n this._publishPromises.clear();\n var y = !0,\n g = !1,\n S = void 0;\n try {\n for (var P, w = this._unpublishPromises[Symbol.iterator](); !(y = (P = w.next()).done); y = !0) {\n var E = f(P.value, 2);\n E[0];\n E[1].reject(n)\n }\n } catch (e) {\n g = !0, S = e\n } finally {\n try {\n y || null == w.return || w.return()\n } finally {\n if (g) throw S\n }\n }\n this._unpublishPromises.clear();\n var j = !0,\n C = !1,\n T = void 0;\n try {\n for (var I, k = this._sendDataPromises[Symbol.iterator](); !(j = (I = k.next()).done); j = !0) {\n var M = f(I.value, 2);\n M[0];\n M[1].reject(n)\n }\n } catch (e) {\n C = !0, T = e\n } finally {\n try {\n j || null == k.return || k.return()\n } finally {\n if (C) throw T\n }\n }\n if (this._sendDataPromises.clear(), this._publishedStreams.forEach(function(e) {\n e.dispatchEvent(new o.OwtEvent(\"ended\"))\n }), this._publishedStreams.clear(), this._remoteStreams.forEach(function(e) {\n e.dispatchEvent(new o.OwtEvent(\"ended\"))\n }), this._remoteStreams = [], !this._disposed) {\n var R;\n if (t) e && ((R = JSON.parse(JSON.stringify(e))).message = \"Error happened at remote side.\"), this._sendSignalingMessage(O, R).catch(function(e) {\n i.default.debug(\"Failed to send close.\" + e.message)\n });\n this.dispatchEvent(new Event(\"ended\"))\n }\n }\n }, {\n key: \"_setStreamToRemoteStreamInfo\",\n value: function(e) {\n var t = this._remoteStreamInfo.get(e.id),\n n = t.attributes,\n r = new u.StreamSourceInfo(this._remoteStreamInfo.get(e.id).source.audio, this._remoteStreamInfo.get(e.id).source.video);\n t.stream = new u.RemoteStream(void 0, this._remoteId, e, r, n), t.mediaStream = e;\n var o = t.stream;\n o ? this._remoteStreams.push(o) : i.default.warning(\"Failed to create RemoteStream.\")\n }\n }, {\n key: \"_checkIceConnectionStateAndFireEvent\",\n value: function() {\n var e = this;\n if (\"connected\" === this._pc.iceConnectionState || \"completed\" === this._pc.iceConnectionState) {\n var t = !0,\n n = !1,\n r = void 0;\n try {\n for (var i, o = this._remoteStreamInfo[Symbol.iterator](); !(t = (i = o.next()).done); t = !0) {\n var a = f(i.value, 2),\n s = (a[0], a[1]);\n if (s.mediaStream) {\n var c = new u.StreamEvent(\"streamadded\", {\n stream: s.stream\n });\n if (this._isUnifiedPlan()) {\n var d = !0,\n l = !1,\n p = void 0;\n try {\n for (var h, v = s.mediaStream.getTracks()[Symbol.iterator](); !(d = (h = v.next()).done); d = !0) {\n h.value.addEventListener(\"ended\", function(t) {\n var n = e._getStreamByTrack(t.target),\n r = !0,\n i = !1,\n o = void 0;\n try {\n for (var a, s = n[Symbol.iterator](); !(r = (a = s.next()).done); r = !0) {\n var c = a.value;\n e._areAllTracksEnded(c) && e._onRemoteStreamRemoved(c)\n }\n } catch (e) {\n i = !0, o = e\n } finally {\n try {\n r || null == s.return || s.return()\n } finally {\n if (i) throw o\n }\n }\n })\n }\n } catch (e) {\n l = !0, p = e\n } finally {\n try {\n d || null == v.return || v.return()\n } finally {\n if (l) throw p\n }\n }\n }\n this._sendSignalingMessage(T, s.trackIds), this._remoteStreamInfo.get(s.mediaStream.id).mediaStream = null, this.dispatchEvent(c)\n }\n }\n } catch (e) {\n n = !0, r = e\n } finally {\n try {\n t || null == o.return || o.return()\n } finally {\n if (n) throw r\n }\n }\n }\n }\n }]) && h(n.prototype, r), l && h(n, l), t\n }();\n n.default = N\n }, {\n \"../base/event.js\": 3,\n \"../base/logger.js\": 5,\n \"../base/publication.js\": 8,\n \"../base/sdputils.js\": 9,\n \"../base/stream.js\": 10,\n \"../base/utils.js\": 11,\n \"./error.js\": 23\n }]\n }, {}, [22])(22)\n});","/**\n * Owl Carousel v2.3.4\n * Copyright 2013-2018 David Deutsch\n * Licensed under: SEE LICENSE IN https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE\n */\n!function(a,b,c,d){function e(b,c){this.settings=null,this.options=a.extend({},e.Defaults,c),this.$element=a(b),this._handlers={},this._plugins={},this._supress={},this._current=null,this._speed=null,this._coordinates=[],this._breakpoint=null,this._width=null,this._items=[],this._clones=[],this._mergers=[],this._widths=[],this._invalidated={},this._pipe=[],this._drag={time:null,target:null,pointer:null,stage:{start:null,current:null},direction:null},this._states={current:{},tags:{initializing:[\"busy\"],animating:[\"busy\"],dragging:[\"interacting\"]}},a.each([\"onResize\",\"onThrottledResize\"],a.proxy(function(b,c){this._handlers[c]=a.proxy(this[c],this)},this)),a.each(e.Plugins,a.proxy(function(a,b){this._plugins[a.charAt(0).toLowerCase()+a.slice(1)]=new b(this)},this)),a.each(e.Workers,a.proxy(function(b,c){this._pipe.push({filter:c.filter,run:a.proxy(c.run,this)})},this)),this.setup(),this.initialize()}e.Defaults={items:3,loop:!1,center:!1,rewind:!1,checkVisibility:!0,mouseDrag:!0,touchDrag:!0,pullDrag:!0,freeDrag:!1,margin:0,stagePadding:0,merge:!1,mergeFit:!0,autoWidth:!1,startPosition:0,rtl:!1,smartSpeed:250,fluidSpeed:!1,dragEndSpeed:!1,responsive:{},responsiveRefreshRate:200,responsiveBaseElement:b,fallbackEasing:\"swing\",slideTransition:\"\",info:!1,nestedItemSelector:!1,itemElement:\"div\",stageElement:\"div\",refreshClass:\"owl-refresh\",loadedClass:\"owl-loaded\",loadingClass:\"owl-loading\",rtlClass:\"owl-rtl\",responsiveClass:\"owl-responsive\",dragClass:\"owl-drag\",itemClass:\"owl-item\",stageClass:\"owl-stage\",stageOuterClass:\"owl-stage-outer\",grabClass:\"owl-grab\"},e.Width={Default:\"default\",Inner:\"inner\",Outer:\"outer\"},e.Type={Event:\"event\",State:\"state\"},e.Plugins={},e.Workers=[{filter:[\"width\",\"settings\"],run:function(){this._width=this.$element.width()}},{filter:[\"width\",\"items\",\"settings\"],run:function(a){a.current=this._items&&this._items[this.relative(this._current)]}},{filter:[\"items\",\"settings\"],run:function(){this.$stage.children(\".cloned\").remove()}},{filter:[\"width\",\"items\",\"settings\"],run:function(a){var b=this.settings.margin||\"\",c=!this.settings.autoWidth,d=this.settings.rtl,e={width:\"auto\",\"margin-left\":d?b:\"\",\"margin-right\":d?\"\":b};!c&&this.$stage.children().css(e),a.css=e}},{filter:[\"width\",\"items\",\"settings\"],run:function(a){var b=(this.width()/this.settings.items).toFixed(3)-this.settings.margin,c=null,d=this._items.length,e=!this.settings.autoWidth,f=[];for(a.items={merge:!1,width:b};d--;)c=this._mergers[d],c=this.settings.mergeFit&&Math.min(c,this.settings.items)||c,a.items.merge=c>1||a.items.merge,f[d]=e?b*c:this._items[d].width();this._widths=f}},{filter:[\"items\",\"settings\"],run:function(){var b=[],c=this._items,d=this.settings,e=Math.max(2*d.items,4),f=2*Math.ceil(c.length/2),g=d.loop&&c.length?d.rewind?e:Math.max(e,f):0,h=\"\",i=\"\";for(g/=2;g>0;)b.push(this.normalize(b.length/2,!0)),h+=c[b[b.length-1]][0].outerHTML,b.push(this.normalize(c.length-1-(b.length-1)/2,!0)),i=c[b[b.length-1]][0].outerHTML+i,g-=1;this._clones=b,a(h).addClass(\"cloned\").appendTo(this.$stage),a(i).addClass(\"cloned\").prependTo(this.$stage)}},{filter:[\"width\",\"items\",\"settings\"],run:function(){for(var a=this.settings.rtl?1:-1,b=this._clones.length+this._items.length,c=-1,d=0,e=0,f=[];++c\",h)||this.op(b,\"<\",g)&&this.op(b,\">\",h))&&i.push(c);this.$stage.children(\".active\").removeClass(\"active\"),this.$stage.children(\":eq(\"+i.join(\"), :eq(\")+\")\").addClass(\"active\"),this.$stage.children(\".center\").removeClass(\"center\"),this.settings.center&&this.$stage.children().eq(this.current()).addClass(\"center\")}}],e.prototype.initializeStage=function(){this.$stage=this.$element.find(\".\"+this.settings.stageClass),this.$stage.length||(this.$element.addClass(this.options.loadingClass),this.$stage=a(\"<\"+this.settings.stageElement+\">\",{class:this.settings.stageClass}).wrap(a(\"
\",{class:this.settings.stageOuterClass})),this.$element.append(this.$stage.parent()))},e.prototype.initializeItems=function(){var b=this.$element.find(\".owl-item\");if(b.length)return this._items=b.get().map(function(b){return a(b)}),this._mergers=this._items.map(function(){return 1}),void this.refresh();this.replace(this.$element.children().not(this.$stage.parent())),this.isVisible()?this.refresh():this.invalidate(\"width\"),this.$element.removeClass(this.options.loadingClass).addClass(this.options.loadedClass)},e.prototype.initialize=function(){if(this.enter(\"initializing\"),this.trigger(\"initialize\"),this.$element.toggleClass(this.settings.rtlClass,this.settings.rtl),this.settings.autoWidth&&!this.is(\"pre-loading\")){var a,b,c;a=this.$element.find(\"img\"),b=this.settings.nestedItemSelector?\".\"+this.settings.nestedItemSelector:d,c=this.$element.children(b).width(),a.length&&c<=0&&this.preloadAutoWidthImages(a)}this.initializeStage(),this.initializeItems(),this.registerEventHandlers(),this.leave(\"initializing\"),this.trigger(\"initialized\")},e.prototype.isVisible=function(){return!this.settings.checkVisibility||this.$element.is(\":visible\")},e.prototype.setup=function(){var b=this.viewport(),c=this.options.responsive,d=-1,e=null;c?(a.each(c,function(a){a<=b&&a>d&&(d=Number(a))}),e=a.extend({},this.options,c[d]),\"function\"==typeof e.stagePadding&&(e.stagePadding=e.stagePadding()),delete e.responsive,e.responsiveClass&&this.$element.attr(\"class\",this.$element.attr(\"class\").replace(new RegExp(\"(\"+this.options.responsiveClass+\"-)\\\\S+\\\\s\",\"g\"),\"$1\"+d))):e=a.extend({},this.options),this.trigger(\"change\",{property:{name:\"settings\",value:e}}),this._breakpoint=d,this.settings=e,this.invalidate(\"settings\"),this.trigger(\"changed\",{property:{name:\"settings\",value:this.settings}})},e.prototype.optionsLogic=function(){this.settings.autoWidth&&(this.settings.stagePadding=!1,this.settings.merge=!1)},e.prototype.prepare=function(b){var c=this.trigger(\"prepare\",{content:b});return c.data||(c.data=a(\"<\"+this.settings.itemElement+\"/>\").addClass(this.options.itemClass).append(b)),this.trigger(\"prepared\",{content:c.data}),c.data},e.prototype.update=function(){for(var b=0,c=this._pipe.length,d=a.proxy(function(a){return this[a]},this._invalidated),e={};b0)&&this._pipe[b].run(e),b++;this._invalidated={},!this.is(\"valid\")&&this.enter(\"valid\")},e.prototype.width=function(a){switch(a=a||e.Width.Default){case e.Width.Inner:case e.Width.Outer:return this._width;default:return this._width-2*this.settings.stagePadding+this.settings.margin}},e.prototype.refresh=function(){this.enter(\"refreshing\"),this.trigger(\"refresh\"),this.setup(),this.optionsLogic(),this.$element.addClass(this.options.refreshClass),this.update(),this.$element.removeClass(this.options.refreshClass),this.leave(\"refreshing\"),this.trigger(\"refreshed\")},e.prototype.onThrottledResize=function(){b.clearTimeout(this.resizeTimer),this.resizeTimer=b.setTimeout(this._handlers.onResize,this.settings.responsiveRefreshRate)},e.prototype.onResize=function(){return!!this._items.length&&(this._width!==this.$element.width()&&(!!this.isVisible()&&(this.enter(\"resizing\"),this.trigger(\"resize\").isDefaultPrevented()?(this.leave(\"resizing\"),!1):(this.invalidate(\"width\"),this.refresh(),this.leave(\"resizing\"),void this.trigger(\"resized\")))))},e.prototype.registerEventHandlers=function(){a.support.transition&&this.$stage.on(a.support.transition.end+\".owl.core\",a.proxy(this.onTransitionEnd,this)),!1!==this.settings.responsive&&this.on(b,\"resize\",this._handlers.onThrottledResize),this.settings.mouseDrag&&(this.$element.addClass(this.options.dragClass),this.$stage.on(\"mousedown.owl.core\",a.proxy(this.onDragStart,this)),this.$stage.on(\"dragstart.owl.core selectstart.owl.core\",function(){return!1})),this.settings.touchDrag&&(this.$stage.on(\"touchstart.owl.core\",a.proxy(this.onDragStart,this)),this.$stage.on(\"touchcancel.owl.core\",a.proxy(this.onDragEnd,this)))},e.prototype.onDragStart=function(b){var d=null;3!==b.which&&(a.support.transform?(d=this.$stage.css(\"transform\").replace(/.*\\(|\\)| /g,\"\").split(\",\"),d={x:d[16===d.length?12:4],y:d[16===d.length?13:5]}):(d=this.$stage.position(),d={x:this.settings.rtl?d.left+this.$stage.width()-this.width()+this.settings.margin:d.left,y:d.top}),this.is(\"animating\")&&(a.support.transform?this.animate(d.x):this.$stage.stop(),this.invalidate(\"position\")),this.$element.toggleClass(this.options.grabClass,\"mousedown\"===b.type),this.speed(0),this._drag.time=(new Date).getTime(),this._drag.target=a(b.target),this._drag.stage.start=d,this._drag.stage.current=d,this._drag.pointer=this.pointer(b),a(c).on(\"mouseup.owl.core touchend.owl.core\",a.proxy(this.onDragEnd,this)),a(c).one(\"mousemove.owl.core touchmove.owl.core\",a.proxy(function(b){var d=this.difference(this._drag.pointer,this.pointer(b));a(c).on(\"mousemove.owl.core touchmove.owl.core\",a.proxy(this.onDragMove,this)),Math.abs(d.x)0^this.settings.rtl?\"left\":\"right\";a(c).off(\".owl.core\"),this.$element.removeClass(this.options.grabClass),(0!==d.x&&this.is(\"dragging\")||!this.is(\"valid\"))&&(this.speed(this.settings.dragEndSpeed||this.settings.smartSpeed),this.current(this.closest(e.x,0!==d.x?f:this._drag.direction)),this.invalidate(\"position\"),this.update(),this._drag.direction=f,(Math.abs(d.x)>3||(new Date).getTime()-this._drag.time>300)&&this._drag.target.one(\"click.owl.core\",function(){return!1})),this.is(\"dragging\")&&(this.leave(\"dragging\"),this.trigger(\"dragged\"))},e.prototype.closest=function(b,c){var e=-1,f=30,g=this.width(),h=this.coordinates();return this.settings.freeDrag||a.each(h,a.proxy(function(a,i){return\"left\"===c&&b>i-f&&bi-g-f&&b\",h[a+1]!==d?h[a+1]:i-g)&&(e=\"left\"===c?a+1:a),-1===e},this)),this.settings.loop||(this.op(b,\">\",h[this.minimum()])?e=b=this.minimum():this.op(b,\"<\",h[this.maximum()])&&(e=b=this.maximum())),e},e.prototype.animate=function(b){var c=this.speed()>0;this.is(\"animating\")&&this.onTransitionEnd(),c&&(this.enter(\"animating\"),this.trigger(\"translate\")),a.support.transform3d&&a.support.transition?this.$stage.css({transform:\"translate3d(\"+b+\"px,0px,0px)\",transition:this.speed()/1e3+\"s\"+(this.settings.slideTransition?\" \"+this.settings.slideTransition:\"\")}):c?this.$stage.animate({left:b+\"px\"},this.speed(),this.settings.fallbackEasing,a.proxy(this.onTransitionEnd,this)):this.$stage.css({left:b+\"px\"})},e.prototype.is=function(a){return this._states.current[a]&&this._states.current[a]>0},e.prototype.current=function(a){if(a===d)return this._current;if(0===this._items.length)return d;if(a=this.normalize(a),this._current!==a){var b=this.trigger(\"change\",{property:{name:\"position\",value:a}});b.data!==d&&(a=this.normalize(b.data)),this._current=a,this.invalidate(\"position\"),this.trigger(\"changed\",{property:{name:\"position\",value:this._current}})}return this._current},e.prototype.invalidate=function(b){return\"string\"===a.type(b)&&(this._invalidated[b]=!0,this.is(\"valid\")&&this.leave(\"valid\")),a.map(this._invalidated,function(a,b){return b})},e.prototype.reset=function(a){(a=this.normalize(a))!==d&&(this._speed=0,this._current=a,this.suppress([\"translate\",\"translated\"]),this.animate(this.coordinates(a)),this.release([\"translate\",\"translated\"]))},e.prototype.normalize=function(a,b){var c=this._items.length,e=b?0:this._clones.length;return!this.isNumeric(a)||c<1?a=d:(a<0||a>=c+e)&&(a=((a-e/2)%c+c)%c+e/2),a},e.prototype.relative=function(a){return a-=this._clones.length/2,this.normalize(a,!0)},e.prototype.maximum=function(a){var b,c,d,e=this.settings,f=this._coordinates.length;if(e.loop)f=this._clones.length/2+this._items.length-1;else if(e.autoWidth||e.merge){if(b=this._items.length)for(c=this._items[--b].width(),d=this.$element.width();b--&&!((c+=this._items[b].width()+this.settings.margin)>d););f=b+1}else f=e.center?this._items.length-1:this._items.length-e.items;return a&&(f-=this._clones.length/2),Math.max(f,0)},e.prototype.minimum=function(a){return a?0:this._clones.length/2},e.prototype.items=function(a){return a===d?this._items.slice():(a=this.normalize(a,!0),this._items[a])},e.prototype.mergers=function(a){return a===d?this._mergers.slice():(a=this.normalize(a,!0),this._mergers[a])},e.prototype.clones=function(b){var c=this._clones.length/2,e=c+this._items.length,f=function(a){return a%2==0?e+a/2:c-(a+1)/2};return b===d?a.map(this._clones,function(a,b){return f(b)}):a.map(this._clones,function(a,c){return a===b?f(c):null})},e.prototype.speed=function(a){return a!==d&&(this._speed=a),this._speed},e.prototype.coordinates=function(b){var c,e=1,f=b-1;return b===d?a.map(this._coordinates,a.proxy(function(a,b){return this.coordinates(b)},this)):(this.settings.center?(this.settings.rtl&&(e=-1,f=b+1),c=this._coordinates[b],c+=(this.width()-c+(this._coordinates[f]||0))/2*e):c=this._coordinates[f]||0,c=Math.ceil(c))},e.prototype.duration=function(a,b,c){return 0===c?0:Math.min(Math.max(Math.abs(b-a),1),6)*Math.abs(c||this.settings.smartSpeed)},e.prototype.to=function(a,b){var c=this.current(),d=null,e=a-this.relative(c),f=(e>0)-(e<0),g=this._items.length,h=this.minimum(),i=this.maximum();this.settings.loop?(!this.settings.rewind&&Math.abs(e)>g/2&&(e+=-1*f*g),a=c+e,(d=((a-h)%g+g)%g+h)!==a&&d-e<=i&&d-e>0&&(c=d-e,a=d,this.reset(c))):this.settings.rewind?(i+=1,a=(a%i+i)%i):a=Math.max(h,Math.min(i,a)),this.speed(this.duration(c,a,b)),this.current(a),this.isVisible()&&this.update()},e.prototype.next=function(a){a=a||!1,this.to(this.relative(this.current())+1,a)},e.prototype.prev=function(a){a=a||!1,this.to(this.relative(this.current())-1,a)},e.prototype.onTransitionEnd=function(a){if(a!==d&&(a.stopPropagation(),(a.target||a.srcElement||a.originalTarget)!==this.$stage.get(0)))return!1;this.leave(\"animating\"),this.trigger(\"translated\")},e.prototype.viewport=function(){var d;return this.options.responsiveBaseElement!==b?d=a(this.options.responsiveBaseElement).width():b.innerWidth?d=b.innerWidth:c.documentElement&&c.documentElement.clientWidth?d=c.documentElement.clientWidth:console.warn(\"Can not detect viewport width.\"),d},e.prototype.replace=function(b){this.$stage.empty(),this._items=[],b&&(b=b instanceof jQuery?b:a(b)),this.settings.nestedItemSelector&&(b=b.find(\".\"+this.settings.nestedItemSelector)),b.filter(function(){return 1===this.nodeType}).each(a.proxy(function(a,b){b=this.prepare(b),this.$stage.append(b),this._items.push(b),this._mergers.push(1*b.find(\"[data-merge]\").addBack(\"[data-merge]\").attr(\"data-merge\")||1)},this)),this.reset(this.isNumeric(this.settings.startPosition)?this.settings.startPosition:0),this.invalidate(\"items\")},e.prototype.add=function(b,c){var e=this.relative(this._current);c=c===d?this._items.length:this.normalize(c,!0),b=b instanceof jQuery?b:a(b),this.trigger(\"add\",{content:b,position:c}),b=this.prepare(b),0===this._items.length||c===this._items.length?(0===this._items.length&&this.$stage.append(b),0!==this._items.length&&this._items[c-1].after(b),this._items.push(b),this._mergers.push(1*b.find(\"[data-merge]\").addBack(\"[data-merge]\").attr(\"data-merge\")||1)):(this._items[c].before(b),this._items.splice(c,0,b),this._mergers.splice(c,0,1*b.find(\"[data-merge]\").addBack(\"[data-merge]\").attr(\"data-merge\")||1)),this._items[e]&&this.reset(this._items[e].index()),this.invalidate(\"items\"),this.trigger(\"added\",{content:b,position:c})},e.prototype.remove=function(a){(a=this.normalize(a,!0))!==d&&(this.trigger(\"remove\",{content:this._items[a],position:a}),this._items[a].remove(),this._items.splice(a,1),this._mergers.splice(a,1),this.invalidate(\"items\"),this.trigger(\"removed\",{content:null,position:a}))},e.prototype.preloadAutoWidthImages=function(b){b.each(a.proxy(function(b,c){this.enter(\"pre-loading\"),c=a(c),a(new Image).one(\"load\",a.proxy(function(a){c.attr(\"src\",a.target.src),c.css(\"opacity\",1),this.leave(\"pre-loading\"),!this.is(\"pre-loading\")&&!this.is(\"initializing\")&&this.refresh()},this)).attr(\"src\",c.attr(\"src\")||c.attr(\"data-src\")||c.attr(\"data-src-retina\"))},this))},e.prototype.destroy=function(){this.$element.off(\".owl.core\"),this.$stage.off(\".owl.core\"),a(c).off(\".owl.core\"),!1!==this.settings.responsive&&(b.clearTimeout(this.resizeTimer),this.off(b,\"resize\",this._handlers.onThrottledResize));for(var d in this._plugins)this._plugins[d].destroy();this.$stage.children(\".cloned\").remove(),this.$stage.unwrap(),this.$stage.children().contents().unwrap(),this.$stage.children().unwrap(),this.$stage.remove(),this.$element.removeClass(this.options.refreshClass).removeClass(this.options.loadingClass).removeClass(this.options.loadedClass).removeClass(this.options.rtlClass).removeClass(this.options.dragClass).removeClass(this.options.grabClass).attr(\"class\",this.$element.attr(\"class\").replace(new RegExp(this.options.responsiveClass+\"-\\\\S+\\\\s\",\"g\"),\"\")).removeData(\"owl.carousel\")},e.prototype.op=function(a,b,c){var d=this.settings.rtl;switch(b){case\"<\":return d?a>c:a\":return d?ac;case\">=\":return d?a<=c:a>=c;case\"<=\":return d?a>=c:a<=c}},e.prototype.on=function(a,b,c,d){a.addEventListener?a.addEventListener(b,c,d):a.attachEvent&&a.attachEvent(\"on\"+b,c)},e.prototype.off=function(a,b,c,d){a.removeEventListener?a.removeEventListener(b,c,d):a.detachEvent&&a.detachEvent(\"on\"+b,c)},e.prototype.trigger=function(b,c,d,f,g){var h={item:{count:this._items.length,index:this.current()}},i=a.camelCase(a.grep([\"on\",b,d],function(a){return a}).join(\"-\").toLowerCase()),j=a.Event([b,\"owl\",d||\"carousel\"].join(\".\").toLowerCase(),a.extend({relatedTarget:this},h,c));return this._supress[b]||(a.each(this._plugins,function(a,b){b.onTrigger&&b.onTrigger(j)}),this.register({type:e.Type.Event,name:b}),this.$element.trigger(j),this.settings&&\"function\"==typeof this.settings[i]&&this.settings[i].call(this,j)),j},e.prototype.enter=function(b){a.each([b].concat(this._states.tags[b]||[]),a.proxy(function(a,b){this._states.current[b]===d&&(this._states.current[b]=0),this._states.current[b]++},this))},e.prototype.leave=function(b){a.each([b].concat(this._states.tags[b]||[]),a.proxy(function(a,b){this._states.current[b]--},this))},e.prototype.register=function(b){if(b.type===e.Type.Event){if(a.event.special[b.name]||(a.event.special[b.name]={}),!a.event.special[b.name].owl){var c=a.event.special[b.name]._default;a.event.special[b.name]._default=function(a){return!c||!c.apply||a.namespace&&-1!==a.namespace.indexOf(\"owl\")?a.namespace&&a.namespace.indexOf(\"owl\")>-1:c.apply(this,arguments)},a.event.special[b.name].owl=!0}}else b.type===e.Type.State&&(this._states.tags[b.name]?this._states.tags[b.name]=this._states.tags[b.name].concat(b.tags):this._states.tags[b.name]=b.tags,this._states.tags[b.name]=a.grep(this._states.tags[b.name],a.proxy(function(c,d){return a.inArray(c,this._states.tags[b.name])===d},this)))},e.prototype.suppress=function(b){a.each(b,a.proxy(function(a,b){this._supress[b]=!0},this))},e.prototype.release=function(b){a.each(b,a.proxy(function(a,b){delete this._supress[b]},this))},e.prototype.pointer=function(a){var c={x:null,y:null};return a=a.originalEvent||a||b.event,a=a.touches&&a.touches.length?a.touches[0]:a.changedTouches&&a.changedTouches.length?a.changedTouches[0]:a,a.pageX?(c.x=a.pageX,c.y=a.pageY):(c.x=a.clientX,c.y=a.clientY),c},e.prototype.isNumeric=function(a){return!isNaN(parseFloat(a))},e.prototype.difference=function(a,b){return{x:a.x-b.x,y:a.y-b.y}},a.fn.owlCarousel=function(b){var c=Array.prototype.slice.call(arguments,1);return this.each(function(){var d=a(this),f=d.data(\"owl.carousel\");f||(f=new e(this,\"object\"==typeof b&&b),d.data(\"owl.carousel\",f),a.each([\"next\",\"prev\",\"to\",\"destroy\",\"refresh\",\"replace\",\"add\",\"remove\"],function(b,c){f.register({type:e.Type.Event,name:c}),f.$element.on(c+\".owl.carousel.core\",a.proxy(function(a){a.namespace&&a.relatedTarget!==this&&(this.suppress([c]),f[c].apply(this,[].slice.call(arguments,1)),this.release([c]))},f))})),\"string\"==typeof b&&\"_\"!==b.charAt(0)&&f[b].apply(f,c)})},a.fn.owlCarousel.Constructor=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){var e=function(b){this._core=b,this._interval=null,this._visible=null,this._handlers={\"initialized.owl.carousel\":a.proxy(function(a){a.namespace&&this._core.settings.autoRefresh&&this.watch()},this)},this._core.options=a.extend({},e.Defaults,this._core.options),this._core.$element.on(this._handlers)};e.Defaults={autoRefresh:!0,autoRefreshInterval:500},e.prototype.watch=function(){this._interval||(this._visible=this._core.isVisible(),this._interval=b.setInterval(a.proxy(this.refresh,this),this._core.settings.autoRefreshInterval))},e.prototype.refresh=function(){this._core.isVisible()!==this._visible&&(this._visible=!this._visible,this._core.$element.toggleClass(\"owl-hidden\",!this._visible),this._visible&&this._core.invalidate(\"width\")&&this._core.refresh())},e.prototype.destroy=function(){var a,c;b.clearInterval(this._interval);for(a in this._handlers)this._core.$element.off(a,this._handlers[a]);for(c in Object.getOwnPropertyNames(this))\"function\"!=typeof this[c]&&(this[c]=null)},a.fn.owlCarousel.Constructor.Plugins.AutoRefresh=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){var e=function(b){this._core=b,this._loaded=[],this._handlers={\"initialized.owl.carousel change.owl.carousel resized.owl.carousel\":a.proxy(function(b){if(b.namespace&&this._core.settings&&this._core.settings.lazyLoad&&(b.property&&\"position\"==b.property.name||\"initialized\"==b.type)){var c=this._core.settings,e=c.center&&Math.ceil(c.items/2)||c.items,f=c.center&&-1*e||0,g=(b.property&&b.property.value!==d?b.property.value:this._core.current())+f,h=this._core.clones().length,i=a.proxy(function(a,b){this.load(b)},this);for(c.lazyLoadEager>0&&(e+=c.lazyLoadEager,c.loop&&(g-=c.lazyLoadEager,e++));f++-1||(e.each(a.proxy(function(c,d){var e,f=a(d),g=b.devicePixelRatio>1&&f.attr(\"data-src-retina\")||f.attr(\"data-src\")||f.attr(\"data-srcset\");this._core.trigger(\"load\",{element:f,url:g},\"lazy\"),f.is(\"img\")?f.one(\"load.owl.lazy\",a.proxy(function(){f.css(\"opacity\",1),this._core.trigger(\"loaded\",{element:f,url:g},\"lazy\")},this)).attr(\"src\",g):f.is(\"source\")?f.one(\"load.owl.lazy\",a.proxy(function(){this._core.trigger(\"loaded\",{element:f,url:g},\"lazy\")},this)).attr(\"srcset\",g):(e=new Image,e.onload=a.proxy(function(){f.css({\"background-image\":'url(\"'+g+'\")',opacity:\"1\"}),this._core.trigger(\"loaded\",{element:f,url:g},\"lazy\")},this),e.src=g)},this)),this._loaded.push(d.get(0)))},e.prototype.destroy=function(){var a,b;for(a in this.handlers)this._core.$element.off(a,this.handlers[a]);for(b in Object.getOwnPropertyNames(this))\"function\"!=typeof this[b]&&(this[b]=null)},a.fn.owlCarousel.Constructor.Plugins.Lazy=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){var e=function(c){this._core=c,this._previousHeight=null,this._handlers={\"initialized.owl.carousel refreshed.owl.carousel\":a.proxy(function(a){a.namespace&&this._core.settings.autoHeight&&this.update()},this),\"changed.owl.carousel\":a.proxy(function(a){a.namespace&&this._core.settings.autoHeight&&\"position\"===a.property.name&&this.update()},this),\"loaded.owl.lazy\":a.proxy(function(a){a.namespace&&this._core.settings.autoHeight&&a.element.closest(\".\"+this._core.settings.itemClass).index()===this._core.current()&&this.update()},this)},this._core.options=a.extend({},e.Defaults,this._core.options),this._core.$element.on(this._handlers),this._intervalId=null;var d=this;a(b).on(\"load\",function(){d._core.settings.autoHeight&&d.update()}),a(b).resize(function(){d._core.settings.autoHeight&&(null!=d._intervalId&&clearTimeout(d._intervalId),d._intervalId=setTimeout(function(){d.update()},250))})};e.Defaults={autoHeight:!1,autoHeightClass:\"owl-height\"},e.prototype.update=function(){var b=this._core._current,c=b+this._core.settings.items,d=this._core.settings.lazyLoad,e=this._core.$stage.children().toArray().slice(b,c),f=[],g=0;a.each(e,function(b,c){f.push(a(c).height())}),g=Math.max.apply(null,f),g<=1&&d&&this._previousHeight&&(g=this._previousHeight),this._previousHeight=g,this._core.$stage.parent().height(g).addClass(this._core.settings.autoHeightClass)},e.prototype.destroy=function(){var a,b;for(a in this._handlers)this._core.$element.off(a,this._handlers[a]);for(b in Object.getOwnPropertyNames(this))\"function\"!=typeof this[b]&&(this[b]=null)},a.fn.owlCarousel.Constructor.Plugins.AutoHeight=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){var e=function(b){this._core=b,this._videos={},this._playing=null,this._handlers={\"initialized.owl.carousel\":a.proxy(function(a){a.namespace&&this._core.register({type:\"state\",name:\"playing\",tags:[\"interacting\"]})},this),\"resize.owl.carousel\":a.proxy(function(a){a.namespace&&this._core.settings.video&&this.isInFullScreen()&&a.preventDefault()},this),\"refreshed.owl.carousel\":a.proxy(function(a){a.namespace&&this._core.is(\"resizing\")&&this._core.$stage.find(\".cloned .owl-video-frame\").remove()},this),\"changed.owl.carousel\":a.proxy(function(a){a.namespace&&\"position\"===a.property.name&&this._playing&&this.stop()},this),\"prepared.owl.carousel\":a.proxy(function(b){if(b.namespace){var c=a(b.content).find(\".owl-video\");c.length&&(c.css(\"display\",\"none\"),this.fetch(c,a(b.content)))}},this)},this._core.options=a.extend({},e.Defaults,this._core.options),this._core.$element.on(this._handlers),this._core.$element.on(\"click.owl.video\",\".owl-video-play-icon\",a.proxy(function(a){this.play(a)},this))};e.Defaults={video:!1,videoHeight:!1,videoWidth:!1},e.prototype.fetch=function(a,b){var c=function(){return a.attr(\"data-vimeo-id\")?\"vimeo\":a.attr(\"data-vzaar-id\")?\"vzaar\":\"youtube\"}(),d=a.attr(\"data-vimeo-id\")||a.attr(\"data-youtube-id\")||a.attr(\"data-vzaar-id\"),e=a.attr(\"data-width\")||this._core.settings.videoWidth,f=a.attr(\"data-height\")||this._core.settings.videoHeight,g=a.attr(\"href\");if(!g)throw new Error(\"Missing video URL.\");if(d=g.match(/(http:|https:|)\\/\\/(player.|www.|app.)?(vimeo\\.com|youtu(be\\.com|\\.be|be\\.googleapis\\.com|be\\-nocookie\\.com)|vzaar\\.com)\\/(video\\/|videos\\/|embed\\/|channels\\/.+\\/|groups\\/.+\\/|watch\\?v=|v\\/)?([A-Za-z0-9._%-]*)(\\&\\S+)?/),d[3].indexOf(\"youtu\")>-1)c=\"youtube\";else if(d[3].indexOf(\"vimeo\")>-1)c=\"vimeo\";else{if(!(d[3].indexOf(\"vzaar\")>-1))throw new Error(\"Video URL not supported.\");c=\"vzaar\"}d=d[6],this._videos[g]={type:c,id:d,width:e,height:f},b.attr(\"data-video\",g),this.thumbnail(a,this._videos[g])},e.prototype.thumbnail=function(b,c){var d,e,f,g=c.width&&c.height?\"width:\"+c.width+\"px;height:\"+c.height+\"px;\":\"\",h=b.find(\"img\"),i=\"src\",j=\"\",k=this._core.settings,l=function(c){e='
',d=k.lazyLoad?a(\"
\",{class:\"owl-video-tn \"+j,srcType:c}):a(\"
\",{class:\"owl-video-tn\",style:\"opacity:1;background-image:url(\"+c+\")\"}),b.after(d),b.after(e)};if(b.wrap(a(\"
\",{class:\"owl-video-wrapper\",style:g})),this._core.settings.lazyLoad&&(i=\"data-src\",j=\"owl-lazy\"),h.length)return l(h.attr(i)),h.remove(),!1;\"youtube\"===c.type?(f=\"//img.youtube.com/vi/\"+c.id+\"/hqdefault.jpg\",l(f)):\"vimeo\"===c.type?a.ajax({type:\"GET\",url:\"//vimeo.com/api/v2/video/\"+c.id+\".json\",jsonp:\"callback\",dataType:\"jsonp\",success:function(a){f=a[0].thumbnail_large,l(f)}}):\"vzaar\"===c.type&&a.ajax({type:\"GET\",url:\"//vzaar.com/api/videos/\"+c.id+\".json\",jsonp:\"callback\",dataType:\"jsonp\",success:function(a){f=a.framegrab_url,l(f)}})},e.prototype.stop=function(){this._core.trigger(\"stop\",null,\"video\"),this._playing.find(\".owl-video-frame\").remove(),this._playing.removeClass(\"owl-video-playing\"),this._playing=null,this._core.leave(\"playing\"),this._core.trigger(\"stopped\",null,\"video\")},e.prototype.play=function(b){var c,d=a(b.target),e=d.closest(\".\"+this._core.settings.itemClass),f=this._videos[e.attr(\"data-video\")],g=f.width||\"100%\",h=f.height||this._core.$stage.height();this._playing||(this._core.enter(\"playing\"),this._core.trigger(\"play\",null,\"video\"),e=this._core.items(this._core.relative(e.index())),this._core.reset(e.index()),c=a(''),c.attr(\"height\",h),c.attr(\"width\",g),\"youtube\"===f.type?c.attr(\"src\",\"//www.youtube.com/embed/\"+f.id+\"?autoplay=1&rel=0&v=\"+f.id):\"vimeo\"===f.type?c.attr(\"src\",\"//player.vimeo.com/video/\"+f.id+\"?autoplay=1\"):\"vzaar\"===f.type&&c.attr(\"src\",\"//view.vzaar.com/\"+f.id+\"/player?autoplay=true\"),a(c).wrap('
').insertAfter(e.find(\".owl-video\")),this._playing=e.addClass(\"owl-video-playing\"))},e.prototype.isInFullScreen=function(){var b=c.fullscreenElement||c.mozFullScreenElement||c.webkitFullscreenElement;return b&&a(b).parent().hasClass(\"owl-video-frame\")},e.prototype.destroy=function(){var a,b;this._core.$element.off(\"click.owl.video\");for(a in this._handlers)this._core.$element.off(a,this._handlers[a]);for(b in Object.getOwnPropertyNames(this))\"function\"!=typeof this[b]&&(this[b]=null)},a.fn.owlCarousel.Constructor.Plugins.Video=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){var e=function(b){this.core=b,this.core.options=a.extend({},e.Defaults,this.core.options),this.swapping=!0,this.previous=d,this.next=d,this.handlers={\"change.owl.carousel\":a.proxy(function(a){a.namespace&&\"position\"==a.property.name&&(this.previous=this.core.current(),this.next=a.property.value)},this),\"drag.owl.carousel dragged.owl.carousel translated.owl.carousel\":a.proxy(function(a){a.namespace&&(this.swapping=\"translated\"==a.type)},this),\"translate.owl.carousel\":a.proxy(function(a){a.namespace&&this.swapping&&(this.core.options.animateOut||this.core.options.animateIn)&&this.swap()},this)},this.core.$element.on(this.handlers)};e.Defaults={animateOut:!1,\nanimateIn:!1},e.prototype.swap=function(){if(1===this.core.settings.items&&a.support.animation&&a.support.transition){this.core.speed(0);var b,c=a.proxy(this.clear,this),d=this.core.$stage.children().eq(this.previous),e=this.core.$stage.children().eq(this.next),f=this.core.settings.animateIn,g=this.core.settings.animateOut;this.core.current()!==this.previous&&(g&&(b=this.core.coordinates(this.previous)-this.core.coordinates(this.next),d.one(a.support.animation.end,c).css({left:b+\"px\"}).addClass(\"animated owl-animated-out\").addClass(g)),f&&e.one(a.support.animation.end,c).addClass(\"animated owl-animated-in\").addClass(f))}},e.prototype.clear=function(b){a(b.target).css({left:\"\"}).removeClass(\"animated owl-animated-out owl-animated-in\").removeClass(this.core.settings.animateIn).removeClass(this.core.settings.animateOut),this.core.onTransitionEnd()},e.prototype.destroy=function(){var a,b;for(a in this.handlers)this.core.$element.off(a,this.handlers[a]);for(b in Object.getOwnPropertyNames(this))\"function\"!=typeof this[b]&&(this[b]=null)},a.fn.owlCarousel.Constructor.Plugins.Animate=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){var e=function(b){this._core=b,this._call=null,this._time=0,this._timeout=0,this._paused=!0,this._handlers={\"changed.owl.carousel\":a.proxy(function(a){a.namespace&&\"settings\"===a.property.name?this._core.settings.autoplay?this.play():this.stop():a.namespace&&\"position\"===a.property.name&&this._paused&&(this._time=0)},this),\"initialized.owl.carousel\":a.proxy(function(a){a.namespace&&this._core.settings.autoplay&&this.play()},this),\"play.owl.autoplay\":a.proxy(function(a,b,c){a.namespace&&this.play(b,c)},this),\"stop.owl.autoplay\":a.proxy(function(a){a.namespace&&this.stop()},this),\"mouseover.owl.autoplay\":a.proxy(function(){this._core.settings.autoplayHoverPause&&this._core.is(\"rotating\")&&this.pause()},this),\"mouseleave.owl.autoplay\":a.proxy(function(){this._core.settings.autoplayHoverPause&&this._core.is(\"rotating\")&&this.play()},this),\"touchstart.owl.core\":a.proxy(function(){this._core.settings.autoplayHoverPause&&this._core.is(\"rotating\")&&this.pause()},this),\"touchend.owl.core\":a.proxy(function(){this._core.settings.autoplayHoverPause&&this.play()},this)},this._core.$element.on(this._handlers),this._core.options=a.extend({},e.Defaults,this._core.options)};e.Defaults={autoplay:!1,autoplayTimeout:5e3,autoplayHoverPause:!1,autoplaySpeed:!1},e.prototype._next=function(d){this._call=b.setTimeout(a.proxy(this._next,this,d),this._timeout*(Math.round(this.read()/this._timeout)+1)-this.read()),this._core.is(\"interacting\")||c.hidden||this._core.next(d||this._core.settings.autoplaySpeed)},e.prototype.read=function(){return(new Date).getTime()-this._time},e.prototype.play=function(c,d){var e;this._core.is(\"rotating\")||this._core.enter(\"rotating\"),c=c||this._core.settings.autoplayTimeout,e=Math.min(this._time%(this._timeout||c),c),this._paused?(this._time=this.read(),this._paused=!1):b.clearTimeout(this._call),this._time+=this.read()%c-e,this._timeout=c,this._call=b.setTimeout(a.proxy(this._next,this,d),c-e)},e.prototype.stop=function(){this._core.is(\"rotating\")&&(this._time=0,this._paused=!0,b.clearTimeout(this._call),this._core.leave(\"rotating\"))},e.prototype.pause=function(){this._core.is(\"rotating\")&&!this._paused&&(this._time=this.read(),this._paused=!0,b.clearTimeout(this._call))},e.prototype.destroy=function(){var a,b;this.stop();for(a in this._handlers)this._core.$element.off(a,this._handlers[a]);for(b in Object.getOwnPropertyNames(this))\"function\"!=typeof this[b]&&(this[b]=null)},a.fn.owlCarousel.Constructor.Plugins.autoplay=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){\"use strict\";var e=function(b){this._core=b,this._initialized=!1,this._pages=[],this._controls={},this._templates=[],this.$element=this._core.$element,this._overrides={next:this._core.next,prev:this._core.prev,to:this._core.to},this._handlers={\"prepared.owl.carousel\":a.proxy(function(b){b.namespace&&this._core.settings.dotsData&&this._templates.push('
'+a(b.content).find(\"[data-dot]\").addBack(\"[data-dot]\").attr(\"data-dot\")+\"
\")},this),\"added.owl.carousel\":a.proxy(function(a){a.namespace&&this._core.settings.dotsData&&this._templates.splice(a.position,0,this._templates.pop())},this),\"remove.owl.carousel\":a.proxy(function(a){a.namespace&&this._core.settings.dotsData&&this._templates.splice(a.position,1)},this),\"changed.owl.carousel\":a.proxy(function(a){a.namespace&&\"position\"==a.property.name&&this.draw()},this),\"initialized.owl.carousel\":a.proxy(function(a){a.namespace&&!this._initialized&&(this._core.trigger(\"initialize\",null,\"navigation\"),this.initialize(),this.update(),this.draw(),this._initialized=!0,this._core.trigger(\"initialized\",null,\"navigation\"))},this),\"refreshed.owl.carousel\":a.proxy(function(a){a.namespace&&this._initialized&&(this._core.trigger(\"refresh\",null,\"navigation\"),this.update(),this.draw(),this._core.trigger(\"refreshed\",null,\"navigation\"))},this)},this._core.options=a.extend({},e.Defaults,this._core.options),this.$element.on(this._handlers)};e.Defaults={nav:!1,navText:['',''],navSpeed:!1,navElement:'button type=\"button\" role=\"presentation\"',navContainer:!1,navContainerClass:\"owl-nav\",navClass:[\"owl-prev\",\"owl-next\"],slideBy:1,dotClass:\"owl-dot\",dotsClass:\"owl-dots\",dots:!0,dotsEach:!1,dotsData:!1,dotsSpeed:!1,dotsContainer:!1},e.prototype.initialize=function(){var b,c=this._core.settings;this._controls.$relative=(c.navContainer?a(c.navContainer):a(\"
\").addClass(c.navContainerClass).appendTo(this.$element)).addClass(\"disabled\"),this._controls.$previous=a(\"<\"+c.navElement+\">\").addClass(c.navClass[0]).html(c.navText[0]).prependTo(this._controls.$relative).on(\"click\",a.proxy(function(a){this.prev(c.navSpeed)},this)),this._controls.$next=a(\"<\"+c.navElement+\">\").addClass(c.navClass[1]).html(c.navText[1]).appendTo(this._controls.$relative).on(\"click\",a.proxy(function(a){this.next(c.navSpeed)},this)),c.dotsData||(this._templates=[a('